1. Introduction and Overview (Introduction et vue d'ensemble)
1. Introduction and Overview (Introduction et vue d'ensemble)
La cryptographie logicielle gagne en utilisation, bien qu'il reste un long chemin à parcourir avant qu'elle ne devienne omniprésente. Des systèmes tels que SSH, IPSEC, TLS, S/MIME, PGP, DNSSEC et Kerberos arrivent à maturité et deviennent une partie du paysage réseau [SSH] [IPSEC] [TLS] [S/MIME] [MAIL_PGP*] [DNSSEC*]. À titre de comparaison, lorsque la version précédente de ce document [RFC1750] a été publiée en 1994, la seule spécification de sécurité cryptographique Internet dans l'IETF était le protocole Privacy Enhanced Mail [MAIL_PEM*].
Ces systèmes fournissent une protection substantielle contre l'espionnage et l'usurpation d'identité. Cependant, il existe une faille potentielle. Au cœur de tous les systèmes cryptographiques se trouve la génération de nombres secrets, non devinables (c'est-à-dire aléatoires).
L'absence de facilités généralement disponibles pour générer de tels nombres aléatoires (c'est-à-dire l'absence de disponibilité générale de sources véritablement imprévisibles) forme une plaie ouverte dans la conception de logiciels cryptographiques. Pour le développeur de logiciels qui souhaite construire une procédure de génération de clés ou de mots de passe fonctionnant sur une large gamme de matériels, c'est un problème très réel.
Notez que l'exigence concerne des données qu'un adversaire a une très faible probabilité de deviner ou de déterminer. Cela peut facilement échouer si des données pseudo-aléatoires sont utilisées qui ne satisfont que les tests statistiques traditionnels d'aléa, ou qui sont basées sur des sources à plage limitée telles que les horloges. Parfois, de telles quantités pseudo-aléatoires peuvent être devinées par un adversaire parcourant un espace embarrassamment petit de possibilités.
Ce document de pratique actuelle recommandée décrit des techniques pour produire des quantités aléatoires qui résisteront aux attaques. Il recommande que les futurs systèmes incluent la génération de nombres aléatoires matériels ou fournissent un accès au matériel existant qui peut être utilisé à cette fin. Il suggère des méthodes à utiliser si un tel matériel n'est pas disponible, et il donne quelques estimations du nombre de bits aléatoires requis pour des exemples d'applications.