Passa al contenuto principale

1. Introduction and Overview (Introduzione e Panoramica)

1. Introduction and Overview (Introduzione e Panoramica)

La crittografia software sta entrando in un uso più ampio, anche se c'è ancora molta strada da fare prima che diventi pervasiva. Sistemi come SSH, IPSEC, TLS, S/MIME, PGP, DNSSEC e Kerberos stanno maturando e stanno diventando parte del panorama di rete [SSH] [IPSEC] [TLS] [S/MIME] [MAIL_PGP*] [DNSSEC*]. A titolo di confronto, quando la versione precedente di questo documento [RFC1750] fu pubblicata nel 1994, l'unica specifica di sicurezza crittografica Internet nell'IETF era il protocollo Privacy Enhanced Mail [MAIL_PEM*].

Questi sistemi forniscono una protezione sostanziale contro lo snooping e lo spoofing. Tuttavia, c'è un potenziale difetto. Al cuore di tutti i sistemi crittografici c'è la generazione di numeri segreti e non indovinabili (cioè, casuali).

La mancanza di strutture generalmente disponibili per generare tali numeri casuali (cioè, la mancanza di disponibilità generale di fonti veramente imprevedibili) costituisce una ferita aperta nella progettazione del software crittografico. Per lo sviluppatore software che vuole costruire una procedura di generazione di chiavi o password che funzioni su un'ampia gamma di hardware, questo è un problema molto reale.

Si noti che il requisito è per dati che un avversario ha una probabilità molto bassa di indovinare o determinare. Questo può facilmente fallire se vengono utilizzati dati pseudo-casuali che soddisfano solo i test statistici tradizionali per la casualità, o che si basano su fonti a gamma limitata come i clock. A volte tali quantità pseudo-casuali possono essere indovinate da un avversario che cerca in uno spazio imbarazzantemente piccolo di possibilità.

Questo documento Best Current Practice descrive tecniche per produrre quantità casuali che saranno resistenti agli attacchi. Raccomanda che i sistemi futuri includano la generazione di numeri casuali hardware o forniscano accesso all'hardware esistente che può essere utilizzato per questo scopo. Suggerisce metodi da utilizzare se tale hardware non è disponibile e fornisce alcune stime del numero di bit casuali richiesti per applicazioni di esempio.