2015-07-02 7 views
0

Я работаю над проектом Android, который использует Couchbase-Lite (1.1.0), и требования заключаются в том, что все данные (сами документы и любые вложения Couchbase) зашифровываются до хранения.Как мне шифровать данные для Couchbase-Lite для Android?

Я изначально предполагал шифрование всего файла базы данных с помощью чего-то вроде SQLCipher, но я не смог найти для него прямую реализацию (я знаю, что реализация Couchbase-Lite для iOS использует этот подход, но Android build немного отстает), поэтому вместо этого я планирую зашифровать документы (представление JSON) и вложения (поток), прежде чем сохранять их в базе данных Couchbase-Lite.

Мои вопросы: Каковы рекомендации для такого рода шифрования? Какая методология/библиотеки? Я предполагаю, что AES-256, но должен ли я создать его самостоятельно или использовать стороннюю библиотеку (любые предложения)?

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

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

Спасибо!

+0

[Скрытие ключей в Android может быть немного сложным] (http://stackoverflow.com/questions/28609526/store-client-secret-securely), я боюсь ... – jmm

ответ

0

Используйте существующую библиотеку AES. Либо используйте режим CBC с HMAC для проверки подлинности, либо режим самопроверки, такой как GCM. Не все библиотеки имеют GCM, так как они более свежие.

Напишите кодовую фразу на листе бумаги и храните его в закрытом ящике. Это невозможно. Введите его, если необходимо. Очистите память сразу после ее использования. В качестве альтернативы, держите его на карте памяти и заблокируйте в ящике. Вам все равно нужно очистить память. Регулярно меняйте кодовую фразу. Да, это означает дешифрование всей базы данных со старым ключом и повторное шифрование с помощью нового ключа. Укажите время в своем ежедневном/еженедельном/ежемесячном/любом расписании. Как раз перед резервным копированием. Храните старую кодовую фразу безопасно в автономном режиме, возможно, в безопасном режиме, если вам нужно восстановить ключ для восстановления старой резервной копии.

Посмотрите на хорошую функцию деривации ключа, такую ​​как HKDF (из RFC 5869), чтобы получить фактический ключ от вашей кодовой фразы.

Это крипто, и это is комплекс. Все это было сделано раньше, поэтому вам нужно придерживаться проверенных и проверенных методов.

+0

спасибо за советы - Я возьму более глубокое погружение и посмотрю, что я могу придумать. – user3059309