Концепция аутентификации Touch ID

В настоящее время я разрабатываю приложение для iOS, в котором я шифрую некоторые пользовательские данные с помощью выбранного пользователем ключа. Данные могут храниться локально или в iCloud или в обоих. Я также хочу разрешить более быстрый доступ, такой как 4-значный пин-код или нарисованный шаблон.

В обоих случаях я могу сохранить зашифрованный ключ в цепочке ключей iOS и расшифровать его с помощью 4-значного кода или строки шаблона. По сути, я не храню главный ключ в виде открытого текста в цепочке для ключей.

Проблема в Touch ID. В настоящее время я храню основной ключ в виде открытого текста в цепочке для ключей, потому что я не могу понять, как этого не делать. Если бы кто-нибудь мог дать мне идею, концепцию, псевдокод или что-то еще, я был бы очень признателен.

1 ответ

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

Если я не ошибаюсь, iOS уже использует PIN или шаблон для защиты цепочки ключей; эта статья, кажется, согласна с этим. Поскольку Apple , похоже, использует PIN-код или шаблон для шифрования, неудивительно, что защиту брелка iOS легко сломать. Но построение вашей собственной схемы на тех же принципах не поможет, так что вы можете придерживаться цепочки ключей.

Единственный другой способ справиться с этим правильно - попросить у пользователя надежный пароль, использовать для него PBKDF2 или bcrypt и зашифровать полученный ключ.

Другие вопросы по тегам