J'ai lu sur 2FA et comment il est utilisé, et ce qui m'a le plus frappé, c'est que tout le monde semble stocker le secret TOTP sous forme de texte en clair dans leur base de données.
Je comprends que vous avez besoin du secret sous forme de texte en clair afin de vérifier l'OTP, donc vous ne pouvez pas le hacher, mais ne pourriez-vous pas au moins le crypter d'une certaine manière, au cas où votre base de données serait divulguée? J'ai l'impression qu'il existe des moyens de rendre cela un peu plus sûr, mais je me demande s'il y a des chutes dans les idées que j'ai.
Y a-t-il des défauts dans ce cas, et si oui, quels sont-ils? Je pense que tout serait mieux que de simplement stocker le TOTP en texte brut.
Où avez-vous lu sur 2FA et pourquoi supposez-vous que tout le monde stocke les clés secrètes en texte brut?
Comme vous parlez de TOTP, vous devriez probablement lire les RFC4226 et RFC6238.
Oui, par ex. le module Google PAM stocke les secrets en texte brut dans le répertoire personnel des utilisateurs. Mais veuillez noter : L'algorithme HOTP a été publié en 2005, l'iPhone 1 a été publié en 2007. Nous pouvons simplement déduire que l'algorithme HOTP n'était pas ment pour smartphones - ni l'algorithme TOTP, qui a été publié encore plus tard.
Le problème avec le chiffrement ou le texte brut devient immanent, si vous utilisez HOTP/TOTP pour vous authentifier sur une machine locale. Mais les algorithmes OTP sont conçus pour être utilisés avec un système backend de confiance. Une machine locale ne peut bien sûr pas faire confiance, car un attaquant pourrait s'asseoir devant cette même machine.
Jetez un oeil à la section 7.5 Gestion des secrets partagés, RFC4226 :
Ici, il est recommandé de crypter les secrets partagés, comme vous l'avez suggéré dans # 1. Et bien sûr, si quelqu'un obtient la clé de cryptage, l'authentification est inutile. Mais il s'agit d'un système backend que vous devez protéger. Par exemple. notre (avertissement!) logiciel open source privacyIDEA chiffre réellement les secrets partagés et si vous le souhaitez, même avec un module de sécurité matériel. (Encore une fois - c'est un système backend)
Vous voudrez peut-être également en savoir un peu plus sur les défauts de la conception de Google Authenticator: https://netknights.it/en/the-problem-with-the-google-authenticator/