Хранение PIN-кода и шифрование информации

Хранение PIN-кода

Для онлайн приложения (работа приложения в оффлайн-режиме исключена) - использовать для проверки PIN-кода SRP-протокол (https://ru.wikipedia.org/wiki/SRP). Этот подход не потребует хранения пин-кода в любом виде на устройстве

Для оффлайн приложения - шифровать с использованием ключа из iOS Keychain / Android KeyStore. Хеш не подходит по той причине, что PIN-код - легко перебираемое значение, следовательно, при утечке хеша исходное значение будет восстановлено.

Про SRP: http://srp.stanford.edu/design.html

Шифрование информации

Для хранения локального кеша, шифровать информацию следует с использованием ключей, сгенерированных в iOS Keychain / Android KeyStore.

В Android, PIN-код можно использовать как пароль для доступа к ключу шифрования: https://developer.android.com/reference/java/security/KeyStore#getKey(java.lang.String,%20char%5B%5D)

Для старых версий Android-устройств:

На старых версиях устройств KeyStore сервис не реализован. В этом случае допустимо использовать для генерации ключей pbkdf2 от PIN-кода и android_id как соли.

Last updated