Okamoto–Uchiyama cryptosystem

From testwiki
Revision as of 15:56, 29 October 2023 by imported>Citation bot (Add: isbn, authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | Use this bot. Report bugs. | Suggested by Whoop whoop pull up | #UCB_webform 133/895)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The Okamoto–Uchiyama cryptosystem is a public key cryptosystem proposed in 1998 by Tatsuaki Okamoto and Shigenori Uchiyama. The system works in the multiplicative group of integers modulo n, (/n)*, where n is of the form p2q and p and q are large primes.

Background

Let p be an odd prime. Define Γ={x(/p2)*|x1modp}. Γ is a subgroup of (/p2)* with |Γ|=p (the elements of Γ are 1,1+p,1+2p1+(p1)p).

Define L:Γ/p by L(x)=x1p

L is a homomorphism between Γ and the additive group /p: that is, L(ab)=L(a)+L(b)modp. Since L is bijective, it is an isomorphism.

One can now show the following as a corollary:

Let xΓ such that L(x)0modp and y=xmmodp2 for 0m<p. Then

m=L(y)L(x)=y1x1modp

The corollary is a direct consequence of L(xm)=mL(x).

Operation

Like many public key cryptosystems, this scheme works in the group (/n)*. This scheme is homomorphic and hence malleable.

Key generation

A public/private key pair is generated as follows:

  1. Generate two large primes p and q.
  2. Compute n=p2q.
  3. Choose a random integer g{2n1} such that gp1≢1modp2.
  4. Compute h=gnmodn.

The public key is then (n,g,h) and the private key is (p,q).

Encryption

A message m<p can be encrypted with the public key (n,g,h) as follows.

  1. Choose a random integer r{1n1}.
  2. Compute c=gmhrmodn.

The value c is the encryption of m.

Decryption

An encrypted message c can be decrypted with the private key (p,q) as follows.

  1. Compute a=L(cp1modp2).
  2. Compute b=L(gp1modp2). a and b will be integers.
  3. Using the Extended Euclidean Algorithm, compute the inverse of b modulo p:
    b=b1modp.
  4. Compute m=abmodp.

The value m is the decryption of c.

Example

Let p=3 and q=5. Then n=325=45. Select g=22. Then h=2245mod45=37.

Now to encrypt a message m=2, we pick a random r=13 and compute c=gmhrmodn=2223713mod45=43.

To decrypt the message 43, we compute

a=(432mod32)13=1.
b=(222mod32)13=2.
b=21mod3=2.

And finally m=ab=2.

Proof of correctness

We wish to prove that the value computed in the last decryption step, abmodp, is equal to the original message m. We have

(gmhr)p1(gmgnr)p1(gp1)mgp(p1)rpq(gp1)mmodp2

So to recover m we need to take the discrete logarithm with base gp1. This can be done by applying L, as follows.

By Fermat's little theorem, gp11modp. Since gp1≢1modp2 one can write gp1=1+pr with 0<r<p. Then L(gp1)≢0modp and the corollary from earlier applies: m=L((gp1)m)L(gp1)modp.

Security

Inverting the encryption function can be shown to be as hard as factoring n, meaning that if an adversary could recover the entire message from the encryption of the message they would be able to factor n. The semantic security (meaning adversaries cannot recover any information about the message from the encryption) rests on the p-subgroup assumption, which assumes that it is difficult to determine whether an element x in (/n)* is in the subgroup of order p. This is very similar to the quadratic residuosity problem and the higher residuosity problem.

References

Template:Cryptography navbox