Я не уверен на 100%, следует ли задавать этот вопрос здесь или на форуме «Криптография», но я все равно попробую.
Я хотел бы иметь некоторое представление о том, как приложения для проверки подлинности программного обеспечения, такие как Google Authenticator, Duo, Okta и т. д., хранят секрет (т. е. seed) для аутентификации TOTP и HOTP. Поскольку все они могут работать в автономном режиме, это означает, что seed хранятся где-то на клиентском устройстве. Они вообще зашифрованы? Или их не нужно защищать, поскольку единственным требованием для такой аутентификации OTP является владение самим устройством?
решение1
Они полагаются на безопасность, обеспечиваемую устройством.
Android и iOS имеют гораздо более строгую модель безопасности, чем настольные компьютеры. Каждое приложение имеет свое личное хранилище, которое недоступно для других. В обычных обстоятельствах достаточно сохранить seed в этом хранилище и не добавлять никаких средств для его извлечения в приложение. Это хранилище также должно быть отмечено как нерезервируемое, поскольку это позволит извлекать seed или будет хранить их в хранилище, которое не считается достаточно безопасным (стороннее облако).
Доступ к этому частному хранилищу возможен, если устройство имеет root-доступ или подверглось джейлбрейку, поэтому использование такого устройства в качестве токена TOTP небезопасно.