Какие поля должны содержать зашифрованное сообщение, зашифрованное с использованием AES и PBDKF2? - PullRequest
0 голосов
/ 13 декабря 2018

Я разрабатываю приложение, которое может загружать контент с внутреннего сервера.Содержимое хранится на устройстве и, следовательно, должно быть зашифровано.В настоящее время я использую AES128 и получаю ключ, используя PBDKF2.Часть парольной фразы для PBDKF2 получена с внешнего устройства, к которому приложение может подключиться, и отправлено на сервер, когда приложение хочет загрузить контент.

Процесс выглядит следующим образом:

  1. Приложение подключается к внешнему устройству и получает некоторую информацию x
  2. Приложение отправляет запрос бэкэнду с запросом определенного файла и включает x в запрос
  3. backend использует x для создания ключевой фразы и PBDKF2WithHmacSHA1 для генерации ключа для AES
  4. Backend шифрует запрошенный файл, используя сгенерированный ключ, и AES/CBC/PKCS5Padding
  5. Backend создаетсообщение в следующем формате: <iteration>.<salt>.<encrypted-data>, где <iterations> - количество итераций, переданных PBDKF2, <salt> - случайно сгенерированная соль для PBDKF2 и <encrypted-data> - данные зашифрованного файла.
  6. Бэкэнд отправляет сообщение обратно клиенту
  7. Клиент выполняет деконструкцию сообщения и дешифрует зашифрованные данные, используя предоставленные параметры.

Мой вопрос: безопасно ли создавать сообщение в соответствии с этой схемой (объединение входных параметров и зашифрованных данных)?Клиент знает, как создать ключевую фразу, используя x - обфускация кода должна усложнить процесс его определения:

(я знаю, что простой файл будет в куче / памятиустройство после расшифровки, но только на очень короткий промежуток времени)

...