Cohen's cryptosystem

Cohen's cryptosystem[1] is a public-key cryptosystem proposed in 1998 by Bram Cohen.

Key generation

In Cohen's cryptosystem, a private key is a positive integer p {\displaystyle p} .

The algorithm uses k {\displaystyle k} public-keys w 0 , , w k 1 {\displaystyle w_{0},\ldots ,w_{k-1}} defined as follows:

Generate k {\displaystyle k} random integers u 0 , , u k 1 {\displaystyle u_{0},\ldots ,u_{k-1}} chosen randomly and uniformly between B {\displaystyle -B} and B {\displaystyle B} . Where B {\displaystyle B} is some bound.

Let A = p 2 k {\displaystyle A=\lfloor {\frac {p}{2k}}\rfloor } and generate k {\displaystyle k} random integers v 0 , , v k 1 {\displaystyle v_{0},\ldots ,v_{k-1}} chosen randomly and uniformly between 0 {\displaystyle 0} and A {\displaystyle A} .

Define w i = ( u i p + v i ) {\displaystyle w_{i}=(u_{i}p+v_{i})} .

Encrypting a bit

To encrypt a bit m {\displaystyle m} Alice randomly adds k 2 {\displaystyle {\frac {k}{2}}} public keys and multiplies the result by either 1 (if she wishes to send a 0) or by −1 (if she wishes to send a 1) to obtain the ciphertext c = ( 1 ) m w i {\displaystyle c=(-1)^{m}\sum w_{i}} .

De-cryption

To de-crypt, Bob computes h = c mod p = ( 1 ) m v i {\displaystyle h=c\mod p=(-1)^{m}\sum v_{i}}

It is easy to see that if m = 0 {\displaystyle m=0} then 0 < h < p / 2 {\displaystyle 0<h<p/2} . However, if m = 1 {\displaystyle m=1} then p > h > p / 2 {\displaystyle p>h>p/2} . Hence Bob can read the bit sent by Alice on the most significant bit of h.

References

  1. ^ Bram Cohen. "Simple Public Key Encryption". Archived from the original on October 7, 2011.