Algoritmo Blum-Goldwasser

algoritmo di crittografia asimmetrica

Template:Da tradurre L'algoritmo Blum-Goldwasser è un algoritmo di crittografia asimmetrica proposto da Manuel Blum e Shafi Goldwasser nel 1984. Si tratta di un algoritmo probabilistico semanticamente sicuro, e la dimensione del testo criptato aumenta di un fattore costante rispetto al testo in chiaro. Per criptare un messaggio, l'algoritmo utilizza come chiave uno stream di bit pseudo-casuali generati con l'algoritmo Blum Blum Shub (BBS). Per decrittare un messaggio si utilizza la chiave privata per trovare il seme iniziale con cui sono stati generati i bit della chiave.

Blum-Glodwasser è semanticamente sicuro, assumendo che la fattorizzazione di numeri interi sia un problema intrattabile; in particolare si considera il caso in cui dove sono numeri primi molto grandi. Quest'algoritmo ha diversi vantaggi su altri algoritmi di crittografia probabilistici. Primo, la sua sicurezza è basata solamente sul problema della fattorizzazione, senza bisogno di altre assunzioni (come l'intrattibilità del problema del residuo quadratico o dell'assunzione RSA). In secondo luogo, è molto più efficiente in termini di occupazione di spazio, perché introduce un aumento costante della dimensione rispetto ai dati in chiaro. È anche piuttosto efficiente in termini computazionali, perché non sfigura a confronto con altri algoritmi quali RSA. Tuttavia, è fortemente vulnerabile ad un attacco di tipo chosen cipher-text.

Poiché per criptare si utilizza un algoritmo probabilistico, uno stesso testo in chiaro può produrre risultati molto diversi ogni volta che viene criptato. Questo porta dei vantaggi significativi, poiché impedisce ad un avversario di riconoscere messaggi intercettati confrontandoli con altri intercettati precedentemente.

Definizione dell'algoritmo

Blum-Goldwasser consiste di tre fasi: la generazione di una coppia di chiavi pubblica e privata, il criptaggio dei dati e il decriptaggio dei dati.

Generazione delle chiavi

Per permettere il decriptaggio bisogna che il modulo utilizzato sia un intero di Blum. Questo valore è generato allo stesso modo che in RSA, tranne per il fatto che i fattori primi   devono essere congruenti a 3 in modulo 4 (cioè  ).

  1. Alice genera casualmente due numeri primi grandi   e   tali che  ,  .
  2. Alice calcola   (intero di Blum).

La chiave pubblica è  . La chiave privata è la fattorizzazione di   data da  .

Crittazione del messaggio

Supponiamo che Bob desideri inviare un messaggio m ad Alice:

  1. Innanziutto Bob codifica   come una stringa di   bit  .
  2. Bob sceglie un elemento casuale  , dove  , e calcola  .
  3. Bob usa il generatore di numeri pseudo-casuali BBS con seme   per generare   bit casuali   (la chiave), come segue:
    1.  
    2. For   to  :
    3.   è il bit meno significativo di  
    4. Calcola  .
  4. Calcola il messaggio criptato c mediante XOR dei bit di m con i bit della chiave b:  .

Bob invia il testo criptato  .

Per migliorare la performance, il generatore BBS può mandare in output ad ogni ciclo fino a   dei bit meno significativi mantenendo le sue caratteristiche di sicurezza. Vedi Blum Blum Shub per dettagli.

Decrittazione del messaggio

Alice riceve  . She can recover   usando la procedura seguente:

  1. Usando the prime factorization  , Alice calcola   e  .
  2. Calcola the initial seed  
  3. Da  , ricalcola the bit-vector   usando il generatore BBS, come nell'algoritmo di encryption.
  4. Calcola the plaintext by XORing the keystream with the ciphertext:  .

Alice recovers the plaintext  .

Sicurezza e efficienza

Lo schema Blum-Goldwasser è semanticamente sicuro basato on the hardness of predicting the keystream bits given only the final BBS state   e the public key  . Tuttavia, ciphertexts of the form   are vulnerable to an adaptive chosen ciphertext attack in cui the adversary requests the decryption   of a chosen ciphertext  . Il decriptaggio   del original ciphertext può essere calcolato as  .

A seconda della dimensione del plaintext, BG può essere più o meno computationally costoso di RSA. Poiché most RSA deployments usano a fixed encryption exponent ottimizzato per minimize encryption time, RSA encryption will typically outperform BG for all but the shortest messages. Tuttavia, as the RSA decryption exponent is randomly distributed, modular exponentiation può richiedere a comparable number of squarings/multiplications to BG decryption for a ciphertext della stessa lunghezza. BG ha il vantaggio of scaling more efficiently to longer ciphertexts, dove RSA richiede multiple separate encryptions. In questi casi, BG può essere significativamente più efficiente.

Riferimenti

  1. M. Blum, S. Goldwasser, "An Efficient Probabilistic Public Key Encryption Scheme which Hides All Partial Information", Proceedings of Advances in Cryptology - CRYPTO '84, pp. 289-299, Springer Verlag, 1985.
  2. Alfred J. Menezes, Scott A. Vanstone, A. J. Menezes, Paul C. van Oorschot. Handbook of Applied Cryptography, CRC Press, 1996.