Naccache–Stern knapsack cryptosystem

The Naccache–Stern Knapsack Cryptosystem is an atypical public-key cryptosystem developed by David Naccache and Jacques Stern in 1997. This cryptosystem is deterministic, and hence is not semantically secure. While unbroken to date, this system also lacks provable security.

System Overview

This system is based on a type of knapsack problem. Specifically, the underlying problem is this: given integers c,n,p and v0,...,vn, find a vector such that

The idea here is that when the vi are relatively prime and much smaller than the modulus p this problem can be solved easily. It is this observation which allows decryption.

Key Generation

To generate a public/private key pair

  • Pick a large prime modulus p.
  • Pick a positive integer n and for i from 0 to n, set pi to be the ith prime, starting with p0 = 2 and such that .
  • Pick a secret integer s < p-1, such that gcd(p-1,s) = 1.
  • Set .

The public key is then p,n and v0,...,vn. The private key is s.

Encryption

To encrypt an n-bit long message m, calculate

where mi is the ith bit of the message m.

Decryption

To decrypt a message c, calculate

This works because the fraction

is 0 or 1 depending on whether pi divides cs mod p.

gollark: Anyway, what I *can* tell you now:- the challenge has a difficulty- I have written tests for it- you will be allowed to use more than zero languages- input and output will be in a format- the challenge is considered computable- there is no mandatory use of HTTP
gollark: 18:00 UTC.
gollark: What accursedological language is that? It looks like assembly, but not really.
gollark: Apioforms of esolangs, would you be interested in a "live chat" thing on osmarks internet radio™?
gollark: 🐝 the complexity of apparently most mailservers?

See also

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.