Naccache–Stern cryptosystem

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

The Naccache–Stern cryptosystem is a homomorphic public-key cryptosystem whose security rests on the higher residuosity problem. The Naccache–Stern cryptosystem was discovered by David Naccache and Jacques Stern in 1998.

Scheme Definition

[edit | edit source]

Like many public key cryptosystems, this scheme works in the group (/n)* where n is a product of two large primes. This scheme is homomorphic and hence malleable.

Key Generation

[edit | edit source]
  • Pick a family of k small distinct primes p1,...,pk.
  • Divide the set in half and set u=i=1k/2pi and v=k/2+1kpi.
  • Set σ=uv=i=1kpi
  • Choose large primes a and b such that both p = 2au+1 and q=2bv+1 are prime.
  • Set n=pq.
  • Choose a random g mod n such that g has order φ(n)/4.

The public key is the numbers σ,n,g and the private key is the pair p,q.

When k=1 this is essentially the Benaloh cryptosystem.

Message Encryption

[edit | edit source]

This system allows encryption of a message m in the group /σ.

  • Pick a random x/n.
  • Calculate E(m)=xσgmmodn

Then E(m) is an encryption of the message m.

Message Decryption

[edit | edit source]

To decrypt, we first find m mod pi for each i, and then we apply the Chinese remainder theorem to calculate m mod σ.

Given a ciphertext c, to decrypt, we calculate

  • cicϕ(n)/pimodn. Thus
cϕ(n)/pixσϕ(n)/pigmϕ(n)/pimodng(mi+yipi)ϕ(n)/pimodngmiϕ(n)/pimodn

where mimmodpi.

  • Since pi is chosen to be small, mi can be recovered by exhaustive search, i.e. by comparing ci to gjϕ(n)/pi for j from 1 to pi-1.
  • Once mi is known for each i, m can be recovered by a direct application of the Chinese remainder theorem.

Security

[edit | edit source]

The semantic security of the Naccache–Stern cryptosystem rests on an extension of the quadratic residuosity problem known as the higher residuosity problem.

References

[edit | edit source]

Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).