Где хранить ключи алгоритма шифрования? - PullRequest
4 голосов
/ 17 января 2012

Мне нужно разработать приложение для Android, где шифрование / дешифрование выполняется на стороне клиента. Данные, которые транспортируются и хранятся на сервере, ДОЛЖНЫ быть зашифрованы. Проблема в том, что я нигде не могу хранить ключ шифрования / дешифрования.

Ключи нельзя сохранить на клиентском компьютере. Потому что администраторы (или кто-то, кто может получить доступ к серверу) не должны иметь доступа к незашифрованным данным.

Как генерировать ключи тогда? Можете ли вы предложить какой-то метод?

1 Ответ

3 голосов
/ 17 января 2012

Я предполагаю, что когда вы говорите, что ключи шифрования не должны храниться на устройстве, вы действительно подразумеваете это :-) Потому что, если бы этого ограничения не было, вы могли бы использовать KeyStore . Однако это будет означать, что ключи хранятся на устройстве, что, кажется, не то, что вам нужно.

Итак, предполагая, что ключи шифрования являются внешними по отношению к устройству, это довольно просто, так как места для выбора не так много: ваше клиентское приложение просит пользователя ввести ключ шифрования каким-либо образом (до вас), который он использует для шифрования данных, а затем немедленно забывает ключ шифрования.

Затем он отправляет зашифрованные данные на сервер, где они хранятся. Сервер не знает ключей шифрования, поэтому для сервера это просто непрозрачный блок данных.

Когда пользователь хочет получить данные, он должен предоставить ключ дешифрования на месте, поскольку он не хранится на устройстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...