5.1. General (Général)
5.1. General (Général)
La sécurité et la robustesse de cet algorithme dépendent des propriétés du bloc de construction sous-jacent HOTP, qui est une construction basée sur HMAC [RFC2104] utilisant SHA-1 comme fonction de hachage.
La conclusion de l'analyse de sécurité détaillée dans [RFC4226] est que, à toutes fins pratiques, les sorties de la troncature dynamique sur des entrées distinctes sont des chaînes uniformément et indépendamment distribuées.
L'analyse démontre que la meilleure attaque possible contre la fonction HOTP est l'attaque par force brute.
Comme indiqué dans la section des exigences de l'algorithme, les clés DEVRAIENT être choisies au hasard ou en utilisant un générateur pseudoaléatoire cryptographiquement fort correctement amorcé avec une valeur aléatoire.
Les clés DEVRAIENT avoir la longueur de la sortie HMAC pour faciliter l'interopérabilité.
Nous RECOMMANDONS de suivre les recommandations de [RFC4086] pour toutes les générations de nombres pseudoaléatoires et aléatoires. Les nombres pseudoaléatoires utilisés pour générer les clés DEVRAIENT réussir avec succès le test d'aléatoire spécifié dans [CN], ou un test similaire bien reconnu.
Toutes les communications DEVRAIENT avoir lieu sur un canal sécurisé, par exemple, Secure Socket Layer/Transport Layer Security (SSL/TLS) [RFC5246] ou connexions IPsec [RFC4301].
Nous RECOMMANDONS également de stocker les clés en toute sécurité dans le système de validation, et, plus spécifiquement, de les chiffrer en utilisant un chiffrement matériel résistant aux altérations et de les exposer uniquement lorsque cela est nécessaire: par exemple, la clé est déchiffrée lorsqu'elle est nécessaire pour vérifier une valeur OTP, et rechiffrée immédiatement pour limiter l'exposition dans la RAM à une courte période de temps.
Le stockage des clés DOIT être dans une zone sécurisée, pour éviter, autant que possible, une attaque directe sur le système de validation et la base de données des secrets. En particulier, l'accès au matériel de clé doit être limité aux programmes et processus requis par le système de validation uniquement.