Algoritmo Blum-Goldwasser
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, the modulus usato in Blum-Goldwasser encryption should be a Blum integer. Questo valore è generato allo stesso modo as an RSA modulus, except that the prime factors must be congruent to 3 mod 4. (Vedi RSA, generazione di chiavi per i dettagli.)
- Alice genera due large prime numbers e such that , randomly e independently of each other, dove mod .
- Alice calcola .
La chiave pubblica è . La chiave segreta è the factorization .
Message encryption
Supponiamo che Bob desideri inviare un messaggio m ad Alice:
- Bob first encodes as a string of bits .
- Bob sceglie un elemento casuale , dove , e calcola .
- Bob usa il generatore di numeri pseudo-casuali BBS per generare bits casuali (the keystream), come segue:
- For to :
- Set equal to the least-significant bit of .
- Increment .
- Calcola .
- Calcola the ciphertext by XORing the plaintext bits with the keystream: .
Bob invia the ciphertext .
Per migliorare la performance, il generatore BBS can securely output up to of the least-significant bits of during each round. Vedi Blum Blum Shub per dettagli.
Decriptaggio del messaggio
Alice riceve . She can recover usando la procedura seguente:
- Usando the prime factorization , Alice calcola e .
- Calcola the initial seed
- Da , ricalcola the bit-vector usando il generatore BBS, come nell'algoritmo di encryption.
- 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
- 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.
- Alfred J. Menezes, Scott A. Vanstone, A. J. Menezes, Paul C. van Oorschot. Handbook of Applied Cryptography, CRC Press, 1996.