Crittosistema di Rabin
Il crittosistema di Rabin è un sistema di cifratura a chiave pubblica sviluppato nel 1979 da Michael Oser Rabin che, come per il sistema RSA, basa la propria sicurezza sul fatto che il problema della fattorizzazione di interi è computazionalmente difficile.
Cifratura
[modifica | modifica wikitesto]Generazione delle chiavi
[modifica | modifica wikitesto]Ogni utente deve
- Generare due numeri primi p e q tali che e
- Calcolare
A questo punto
- è la chiave privata
- è la chiave pubblica
Funzione di cifratura
[modifica | modifica wikitesto]La funzione di cifratura è:
Decifrazione
[modifica | modifica wikitesto]La procedura per decifrare un dato messaggio cifrato richiede la conoscenza della chiave privata e l'esecuzione dei seguenti passaggi:
- Si calcolano
Allora e sono le radici quadrate di in e rispettivamente.
- Con l'algoritmo di Euclide si calcolano due interi tali che
- Con il Teorema cinese del resto si computano
- Uno tra , , , è
Il calcolo delle radici quadrate
[modifica | modifica wikitesto]Dimostriamo la validità delle formule usate al passo 1 della decifrazione. Per la prima formula, vogliamo mostrare che . Poiché l'esponente è intero. Assumendo che non divida (altrimenti la formula è ovvia), notiamo che implica , quindi è un residuo quadratico modulo . Ma allora , dove l'ultimo passaggio viene dal Criterio di Eulero.
Dettagli e casi particolari
[modifica | modifica wikitesto]Per distinguere la m che codifica il messaggio delle altre radici (le altre m), sarà necessario includere informazioni aggiuntive. Ciò viene risolto concordando alcune regole di ridondanza, note fra mittente e destinatario, da includere nel messaggio per essere in grado di distinguere quale delle quattro radici corrisponde a quella del messaggio originale.
È interessante il fatto che nel caso in cui il numero primo P è congruente a 1 modulo 4, nessun algoritmo polinomiale deterministico è noto per trovare le radici quadrate dei residui quadratici di P. Pertanto, il fatto che P = 3 mod 4, e q = 3 mod 4 è fondamentale per il corretto funzionamento dell'algoritmo descritto.
Sicurezza del sistema di Rabin
[modifica | modifica wikitesto]È stato dimostrato che qualunque algoritmo in grado di trovare uno dei possibili testi in chiaro per ogni crittogramma cifrato con Rabin può essere utilizzato per fattorizzare il modulo . Pertanto, la decifrazione di un testo in chiaro casuale è difficile tanto quanto il problema della fattorizzazione degli interi. Si ritiene generalmente che non esista un algoritmo in tempo polinomiale per la fattorizzazione, il che implica che non esista un algoritmo efficiente per decifrare un valore cifrato con Rabin casuale senza la chiave privata .
Il crittosistema di Rabin può subire un attacco con testo in chiaro scelto, poiché il processo di cifratura è deterministico. Un avversario, dato un crittogramma e un messaggio candidato, può facilmente determinare se il crittogramma codifica o meno quel messaggio, semplicemente verificando se la cifratura del messaggio candidato produce il crittogramma dato. Inoltre, non è sicuro contro un attacco con testo cifrato scelto (anche quando i messaggi di sfida vengono scelti in modo uniforme e casuale dallo spazio dei messaggi).
