RSA non seleziona da un elenco di numeri primi noti: genera un nuovo numero molto grande, quindi applica un algoritmo per trovare un numero vicino che è quasi certamente primo. Vedi this useful description of large prime generation):
Il metodo standard per generare grandi numeri primi è prendere un numero casuale preselezionato della lunghezza desiderata, ad una prova di Fermat (meglio con la base 2 in quanto può essere ottimizzato per la velocità) e poi applicare un certo numero di test Miller-Rabin (a seconda della lunghezza e del tasso di errore consentito come 2-100) per ottenere un numero che è molto probabilmente un numero primo. .
(Si potrebbe chiedere perché, in quel caso, non stiamo utilizzando questo approccio, quando cerchiamo di trovare i numeri primi più grandi La risposta è che il più grande primo has over 17 million digits noto - ben al di là anche i numeri molto grandi tipicamente utilizzato in crittografia).
Per quanto riguarda le possibili collisioni, le dimensioni delle chiavi moderne (a seconda della sicurezza desiderata) vanno da 1024 a 4096, il che significa che i numeri primi vanno da 512 a 2048 bit. Ciò significa che i tuoi numeri primi sono dell'ordine di 2^512: più di 150 cifre.
Possiamo stimare molto approssimativamente la densità dei numeri primi usando 1/ln(n)
(vedere here). Ciò significa che, tra questi numeri 10^150
, ci sono approssimativamente 10^150/ln(10^150)
numeri primi, che funziona a 2.8x10^147
numeri primi tra cui scegliere, sicuramente più di quello che potresti inserire in qualsiasi elenco !!
Quindi sì, il numero di numeri primi in quell'intervallo è incredibilmente enorme e le collisioni sono effettivamente impossibili. (Anche se hai generato un trilione di possibili numeri primi, formando una combinazione di settilioni, la probabilità che due di loro siano lo stesso numero primo sarebbe 10^-123
).
fonte
2013-04-18 19:40:38
Questa domanda sembra essere fuori tema perché non riguarda la programmazione. – jww
Domanda correlata su crypto.se: [Quante chiavi RSA prima di una collisione?] (Http://crypto.stackexchange.com/questions/2558/how-many-rsa-keys-before-a-collision) – CodesInChaos
E anche : [Come vengono generati i primi per RSA?] (Https://crypto.stackexchange.com/q/1970/48701) – veljkoz