Benaloh cryptosystem

from Wikipedia, the free encyclopedia

The Benaloh cryptosystem was introduced by Josh Benaloh in 1994 . It is an asymmetrical cryptosystem . The method is homomorphic ; That is, two encrypted messages can be added without first decrypting the messages.

The method is an extension of the Goldwasser-Micali cryptosystem : while the latter only enables individual bits to be encrypted, the Benaloh cryptosystem allows larger blocks to be encrypted. A small mistake in the description was later made by Laurent Fousse et al. corrected.

Procedure

In the following we describe the key generation and the algorithms for encrypting and decrypting messages.

Generation of the public and private key

The key pair is generated as follows:

  • First you choose a block size .
  • Then we generate two random prime numbers such that , as well as , and define . In practice, n should have at least 1024, but better 1536 or 2048 binary digits .
  • One randomly chooses in such that for all prime divisors of : applies.

The public key consists of , the private key consists of .

Encrypt messages

To encrypt a message , proceed as follows:

  • First you choose a random one .
  • The encrypted message is then given through .

Decrypting messages (decoding)

To decrypt a ciphertext then the procedure is as follows:

  • You set and and then search so that applies. If small, this can be done by trying out all possible values; if , on the other hand, is large, but only has small prime divisors , the index calculus algorithm can be used.

That the decryption actually delivers the secret message again can be seen as follows. It applies

safety

Under the higher residual assumption, it can be shown that the method is semantically secure against attacks with selected plain texts . This assumption means that it is not possible to efficiently check for a composite module whether an element in a -th root has modulo or not, if and as described above .

Homomorphism properties

The Benaloh cryptosystem is additive homomorphic. This means that by multiplying two key texts the plain texts contained therein are added, or by exponentiating a key text with the contained value is multiplied. In addition, the message contained can with by multiplying the ciphertext to be enlarged. However, there is no known way to multiply the messages contained by operations on two key texts.

Complete example

The steps outlined above are illustrated here using a small example.

Key generation

First we choose the block size , then choose and . This applies

such as

.

We also choose which one fulfills.

With this we get:

r = 9
n = p·q = 899777
y = 85.147

The public key is given by:

The secret key is .

Encryption

Suppose you want to encrypt the message . To do this, we choose a random one  :

u = 175.884

The encryption results in:

c = ymur mod n = 851476 1758849 mod 899777 = 541197

Decryption

For decryption we first calculate:

a = c(p-1)(q-1)/r mod n = 541197882·1018/9 mod 899777 = 4077
b = y(p-1)(q-1)/r mod n =  85147882·1018/9 mod 899777 = 887550

A systematic search now gives us:

y0 mod n = 8875500 mod 899777 = 1 <> 4077
y1 mod n = 887550 <> 4077
y2 mod n = 136547 <> 4077
y3 mod n = 425943 <> 4077
y4 mod n = 803992 <> 4077
y5 mod n = 553318 <> 4077
y6 mod n = 4077

The encrypted message therefore read .

Individual evidence

  1. Josh Benaloh: Dense Probabilistic Encryption. (PS) Retrieved June 13, 2012 .
  2. Laurent Fousse, Pascal Lafourcade, and Mohamed Alnuaimi: Benaloh's Dense Probabilistic Encryption Revisited . August 18, 2010, arxiv : 1008.2991 (English).