Хранение данных в СУБД мобильного приложения рекомендуется осуществлять с применением шифрования. Шифрование данных обеспечивается стандартными средствами SQLite с помощью методов библиотеки OpenSSL версии 1.1.0g.
Для шифрования данных воспользуйтесь методом openBase ядра библиотеки мобильной платформы. При этом необходимо передать ключ шифрования. После этого загрузка данных, полученных с сервера, сопровождается одновременным шифрованием и записью в СУБД.
Примечание. Ключи для шифрования и дешифрования находятся только в оперативной памяти приложения, что не позволяет получить доступ к данным, подключившись напрямую к файловой системе.
Ключ рекомендуется формировать из пары логин и пароль мобильного пользователя. При этом механизм шифрования данных в базе данных мобильного устройства будет следующим:
Мобильное приложение принимает логин и пароль, введенный пользователем, и формирует из них однострочный параметр.
К полученному параметру применяется хеш-функция SHA-256. Результат данной функции используется в качестве ключа шифрования СУБД SQLite.
При записи в СУБД полученный ключ передается в методе openBase. Для шифрования используется блочный алгоритм AES-256-CBS.
Для дешифрования данных пользователю необходимо ввести логин и пароль, из которых будет сформирован ключ, способом описанным в первых двух пунктах, используемый для дешифрования.
Для усиления криптостойкости алгоритма рекомендуется использовать добавление дополнительного ключа - «соли». При этом механизм шифрования данных в базе данных мобильного устройства будет следующим:
Мобильное приложение принимает логин и пароль, введенный пользователем, и формирует из них однострочный параметр.
К полученному параметру применяется хеш-функция SHA-256.
Формируется дополнительный ключ - строка из 20 символов. Допускается определение ключа на уровне приложения.
Сформированный дополнительный ключ добавляется к строке с вычисленным результатом хеш-функции.
К полученной строке повторно применяется хеш-функция SHA-256. Результат данной функции используется в качестве ключа шифрования СУБД SQLite.
См. также: