Зашифрованное хранилище на Android / iPad - PullRequest
2 голосов
/ 25 марта 2011

Я хочу создать приложение для планшетов Android и / или iPad, которое будет содержать много конфиденциальных данных, которые необходимо зашифровать.

Я думаю о двух возможных способах решения этой проблемы:

  1. Реализация (или использование реализации) некоторого хорошо известного алгоритма шифрования, но это оставляет проблему передачи закрытого ключа, поскольку, вероятно, будет лучше, если пользователь должен вводить 1024-байтовый ключ с экранной клавиатуры при каждом запуске применение
  2. Использование устройства аппаратного шифрования (смарт-карта, etoken и т. Д.) - это, вероятно, один из самых безопасных способов сделать это, но здесь проблема в том, как вставить аппаратное устройство в планшет. Я предполагаю, что вы, вероятно, сможете найти несколько устройств Android с USB-портом, но кто-нибудь знает, как эти устройства поддерживаются на Android? Я думаю, что нет смысла думать о подобном решении на iPad, поскольку на нем нет USB. Еще один недостаток всего этого подхода заключается в том, что он немного усложняет жизнь, поскольку вам необходимо постоянно носить с собой криптографическое устройство.

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

Безопасность является главной заботой для клиента, и я хотел бы знать, сталкивался ли кто-нибудь с подобными ситуациями и какие решения вы использовали?

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

Вы будете использовать алгоритм симметричного шифрования, если собираетесь хранить МНОГО конфиденциальных данных.Не будет никакого личного ключа или открытого ключа.(Возможно, вы использовали слово «закрытый ключ», чтобы подчеркнуть, что он является закрытым для пользователя)

Кроме того, ключ будет максимум 256 бит, обычно (по крайней мере для AES).пользователь не обязательно должен вводить 256-битный ключ.Смотри @ PBKDF2 .Он извлекает криптографически безопасный ключ из простой строки (сила все еще зависит от простой строки).

Другой альтернативой может быть предоставление пользователю возможности произвольно рисовать на планшете и извлекать из него безопасный ключ.Похож на TrueCrypt.Однако настоящий крипт использует движение мыши для увеличения силы процедуры, но не обязательно для генерации ключа самостоятельно.

http://mobileoffice.about.com/od/mobilesecurity/ss/how-to-encrypt-files-with-TrueCrypt_7.htm

Ключ необходимо хранить ГДЕ-ТО, чтобы расшифровать (очевидно), поэтому рисование определенно Вне вопроса.Однако идеальным выбором должен быть пароль + PBKDF2.

2 голосов
/ 25 марта 2011

У Android есть открытый проект под названием open-intets Open Safe

http://www.openintents.org/en/safe

Это очень хорошее место для начала разработки под Android.Вы можете разработать свой код на основе существующего приложения и работать над тем, чего не хватает этому приложению.

0 голосов
/ 25 марта 2011

RaYell javax.crypto полностью поддерживает AES, 256-битные ключи, векторы инициализации и хеширование паролей.Вы можете написать свою собственную простую проверку надежности пароля, а затем заполнить пароль и повторно хешировать заполненный пароль, чтобы получить ключ.Вам может потребоваться, а может и не потребоваться, чтобы получить лицензию на экспорт, прежде чем публиковать приложение.Я думаю, что да.

JAL

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