Não tenho 100% de certeza se esta pergunta deveria estar aqui ou no fórum de criptografia, mas tentarei mesmo assim.
Gostaria de ter uma ideia de como os aplicativos autenticadores de software, como Google Authenticator, Duo, Okta, etc. armazenam o segredo (ou seja, semente) para autenticação TOTP e HOTP. Como todos eles podem funcionar offline, isso significa que as sementes são armazenadas em algum lugar do dispositivo cliente. Eles são criptografados? Ou não há necessidade de protegê-los, uma vez que a propriedade do próprio dispositivo é o único requisito para tal autenticação OTP?
Responder1
Eles contam com a segurança fornecida pelo dispositivo.
Android e iOS têm um modelo de segurança muito mais rígido do que computadores desktop. Cada aplicativo possui seu armazenamento privado inacessível para outras pessoas. Em circunstâncias normais, basta armazenar a semente neste armazenamento e não adicionar nenhum meio de extraí-la para o aplicativo. Este armazenamento também deve ser marcado como não passível de backup porque isso permitiria a extração de sementes ou as armazenaria em um armazenamento que não é considerado suficientemente seguro (nuvem de terceiros).
Este armazenamento privado pode ser acessado se o dispositivo estiver enraizado ou desbloqueado, portanto, usar esse dispositivo como token TOTP não é seguro.