In che modo la crittografia può comportare casualità?


8

Se un algoritmo di crittografia ha lo scopo di convertire una stringa in un'altra stringa che può quindi essere decodificata nuovamente nell'originale, come può questo processo comportare una casualità?

Sicuramente deve essere deterministico, altrimenti come potrebbe la funzione di decodifica sapere quali fattori sono stati coinvolti nella creazione della stringa crittografata?


3
Si prega di non porre domande identiche su più siti Stack Exchange, come questo su Crypto.SE .
Paŭlo Ebermann,

Risposte:


5

Può esserci più di un testo cifrato che si ricollega allo stesso testo in chiaro. In termini matematici, l'algoritmo di crittografia deve essere iniettivo in modo da poter recuperare il testo in chiaro per il testo cifrato, ma ciò non impedisce al testo cifrato di codificare più informazioni del testo in chiaro.

A titolo di esempio concreto, considerare le modalità di operazione di cifratura a blocchi come CBC , CTR o OFB . Tutte queste modalità comportano un IV (vettore di inizializzazione) oltre al testo in chiaro, l'algoritmo di cifratura a blocchi e la sua chiave. (Per CTR, IV è chiamato nonce, ma svolge un ruolo simile.) La funzione di crittografia è deterministica per un determinato IV. Il IV, d'altra parte, può essere scelto a caso (per CTR, deve essere scelto a caso). Pertanto, a meno che il protocollo non specifichi un metodo deterministico per la scelta del IV (come una costante concordata), il IV viene inviato insieme al testo cifrato. In effetti, l'output del software di crittografia è spesso costituito dall'IV seguito dal testo cifrato stricto sensu. Il IV stesso viene inviato in chiaro; non contiene (non deve) informazioni riservate.

Come altro esempio, si consideri la modalità PKCS1.5 ( “schema di padding”) di RSA (definito in PKCS # 1 versione 1.5 - vedi p.22-25 di PKCS # 1 v2.1 ). Semplificando un po ', questa modalità consiste nel concatenare una stringa casuale con il messaggio, quindi applicare l'operazione di esponenziazione. Il testo cifrato è dove è concatenazione, è il messaggio e è una stringa di riempimento la maggior parte dei cui bit sono casuali. Per recuperare il messaggio dal testo cifrato , applicare l'operazione di decrittazione non elaborata e suddividere in riempimento (che viene scartato) e messaggio.(PM)emodnMPCCdmodnC


4

Non solo gli schemi di crittografia possono avere casualità, ma in alcuni casi (ad es. Crittografia a chiave pubblica ), devono essere randomizzati. Questo non è un problema poiché richiediamo che uno schema di crittografia sia corretto , vale a dire per ogni messaggio ogni chiave contiene che sopra la casualità .mK

Pr[ dicembre( ENC(K,m,R) )=m]=1
R

La ragione per cui i regimi chiave pubblica deve essere casuale deriva dal modo in cui definiamo la sicurezza: non vogliamo il testo cifrato a trapelare alcuna informazioni sul messaggio criptato. L'esempio classico è il seguente. Supponiamo che sia la chiave pubblica e segreta, rispettivamente, e che l'avversario intercetta un messaggio crittografato inviato a qualche unità sul campo. L'avversario sa che il messaggio è "ATTACCO" o "RITIRATA", ma non sa quale. Una cosa che l'avversario può fare è crittografare entrambi i messaggi usando la pubblica . lascia che e . If(pK,SK)cpKcUN=ENCpK("ATTACCO ")cR=ENCpK("RITIRO")ENCè deterministico, l'avversario può scoprire il messaggio con certezza confrontando con e .ccUNcR

Il modo in cui questa nozione è formalmente definita è nota come sicurezza semantica :

Uno schema di crittografia è semanticamente sicuro se nessun avversario non può vincere il seguente gioco con probabilità notevolmente superiori a :UN1/2

  1. Uno sfidante genera le chiavi e invia la chiave pubblica all'avversario.C(pK,SK)pK
  2. UN sceglie due messaggi di uguale lunghezza e e li consegna entrambi a .m0m1C
  3. C prende uniformemente un po ' e restituisce .B{0,1}ENC(mB)
  4. UN deve dire quale messaggio è stato crittografato: o , cioè deve emettere il bit .m0m1B

(Sto omettendo il parametro di sicurezza , che è fondamentale per definire "trascurabile" o "evidente"; dobbiamo supporre che la generazione delle chiavi dipende da e che il vantaggio abbia sopra è trascurabile in , ovvero inferiore a ) κκUN1/2κκ-ω(1)


possiamo aggiungere una stringa casuale alla fine dell'input prima di preformare la crittografia per evitare il problema e avere sempre , ovvero la condizione può essere più forte di quella che hai indicato in alto . DEC(ENC(k,m,R))=m
Kaveh,

3

Non hai indicato il tipo di crittografia di cui stiamo discutendo, ma lasciami sottolineare ciò che è veramente necessario per la sicurezza dei protocolli cartografici (oltre a quanto indicato in altre risposte).

Ciò di cui abbiamo davvero bisogno è questo: le chiavi dovrebbero essere generate casualmente (questo può essere fatto in collaborazione come nella crittografia a chiave pubblica come RSA o da un'entità come nella crittografia a chiave privata). La casualità della chiave fa in modo che un avversario non possa predire le chiavi (e usarle per violare il protocollo). Finché le chiavi sembrano casuali all'avversario, il protocollo sarà sicuro. Spesso, le chiavi sono generate da un algoritmo randomizzato e quindi fornite alle parti, mentre gli algoritmi di crittografia e decrittazione non sono randomizzati ma deterministici.

Ricorda inoltre che essere randomizzati non significa che il processo non sia invertibile. Un semplice esempio è il seguente: dato , genera casualmente , output . Per invertire, possiamo emettere la prima parte della coppia.XrX,r


il tuo esempio è importante: senza imbottitura casuale, RSA alla vaniglia non è sicuro. con imbottitura casuale, RSA può dimostrare di avere belle proprietà di sicurezza nel modello a oracolo casuale
Sasho Nikolov,

1

Sia gli algoritmi di crittografia che quelli di decrittazione possono essere randomizzati purché sia ​​possibile dimostrare alcuni teoremi che la crittografia seguita dalla decrittografia fornirà il messaggio originale la maggior parte delle volte .

Perché qualcuno dovrebbe desiderare un tale schema di crittografia? Perché: 1) esistono situazioni in cui non vogliamo essere di destra per tutto il tempo , ma solo 99999999 volte su ogni 100000000 e 2) che consentono a tali piccoli errori spesso migliora qualcosa di diverso (come efficienza) di una quantità sproporzionata.


3
Mentre esiste la crittografia probabilistica, sono piuttosto dalla parte esotica. Molti algoritmi di crittografia di tutti i giorni implicano casualità senza essere probabilistici.
Gilles 'SO- smetti di essere malvagio'

@Gilles: un'importante distinzione da fare.
Raffaello

0

Solo per citare un esempio, nella crittografia RSA , è necessario generare due numeri primi e un numero intero che verranno utilizzati per creare le chiavi pubbliche e private.pqe

Se si genera uno di questi valori in modo deterministico, è possibile riprodurre la loro generazione, compromettendo potenzialmente la crittografia. Se questi numeri vengono generati in modo casuale, questo non è un problema.

Aggiornare

Come un altro esempio specifico di Ran G. risposta s', si potrebbe avere uno sguardo a crittografia delle curve ellittiche , in cui l'algoritmo richiede un parametro casuale (di solito chiamato , o ) per crittografare e messaggi Decrypt. Se lo stesso parametro "casuale" viene utilizzato più di una volta, la chiave può essere calcolata da due messaggi crittografati. Questo era il problema / premessa dell'hack di PlayStation 3 dell'anno scorso .dkr


1
Questa è casualità nella generazione delle chiavi, che dubito sia la domanda: qualsiasi generazione di chiavi deve comportare la casualità, altrimenti la chiave è prevedibile (o derivata e non generata).
Gilles 'SO- smetti di essere malvagio'

Non penso che questo sia il posto per la randomizzazione che l'OP ha in mente. Le chiavi sono fornite e statiche per la crittografia (en | de). Il modo in cui scegli la tua chiave è indipendente da quello.
Raffaello

@Gilles: non lo considero così chiaro. I valorip, q e edi solito sono memorizzati in forma crittografata, con una password scelta dall'utente. A rigor di termini, sono la chiave, ma dal punto di vista dell'utente , sono solo valori casuali generati digitando incomprensibili sulla tastiera e non hanno nulla a che fare con la password scelta con cura.
Pedro,

@Pedro Non capisco come il tuo ultimo commento si collega alla domanda. Anche dal punto di vista dei file chiave (che non vedo nella domanda), la chiave evidentemente non viene generata casualmente, ma deriva dal file chiave e dalla password.
Gilles 'SO- smetti di essere malvagio'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.