In che modo gli algoritmi assicurano l'univocità delle chiavi pubbliche / private? - RSA

2

Sono nuovo per sicurezza e crpyto, So che le chiavi pubbliche / private sono generate in modo diverso a seconda dell'algoritmo utilizzato,
Ma prendiamo RSA come esempio (usando i numeri primi),
L'algoritmo genera chiavi casualmente o in modo strutturato?

Voglio dire se ho chiesto una chiave pubblica / privata, sarebbe l'algoritmo:
 - Genera numeri primi casuali e poi genera da loro la chiave pubblica / privata? O
 - Ha ad esempio un database che contiene tutte le chiavi che ha generato in precedenza e quindi confronta le nuove chiavi con esse per evitare collisioni?

OPPURE come può garantire che quella chiave pubblica / privata generata non sia mai stata generata prima?

    
posta Yousef Gamal 10.11.2018 - 07:01
fonte

1 risposta

2

Il modo in cui la generazione primaria casuale funziona è generando un numero dispari enorme e casuale di una dimensione specifica (ad esempio 2048 bit). Viene quindi controllato per la primalità. Se non è primo, viene incrementato di due e ricontrollato. Questo si ripete finché non si trova in primo piano. Lo descrivo di più in un'altra risposta .

Non c'è nulla di specifico che impedisca a due chiavi private di essere uguali, ma la probabilità è così astronomicamente bassa da essere irrilevante. Non c'è motivo di cercare esplicitamente di evitare le collisioni. Si noti che questo presuppone che il sistema abbia una buona fonte di numeri casuali. Generatori di numeri casuali con bug o sistemi incorporati con una scarsa fonte di casualità possono generare moduli RSA che condividono un fattore primario, portando a triviale crittanalisi verificando la presenza di massimo comune denominatore tra due moduli e quindi dividendoli in base al risultato per ottenere entrambi i fattori primi.

Vedi anche Quali sono le probabilità di una collisione con chiave privata RSA?

    
risposta data 10.11.2018 - 07:03
fonte

Leggi altre domande sui tag