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,
(Z/nZ)*
Let
p
\Gamma=\{x\in(Z/p2Z)*|x\equiv1\bmodp\}
\Gamma
(Z/p2Z)*
|\Gamma|=p
\Gamma
1,1+p,1+2p...1+(p-1)p
Define
L:\Gamma\toZ/pZ
L(x)=
x-1 | |
p |
L
\Gamma
Z/pZ
L(ab)=L(a)+L(b)\bmodp
L
One can now show the following as a corollary:
Let
x\in\Gamma
L(x) ≠ 0\bmodp
y=xm\bmodp2
0\leqm<p
m=
L(y) | |
L(x) |
=
y-1 | |
x-1 |
\bmodp
The corollary is a direct consequence of
L(xm)=m ⋅ L(x)
Like many public key cryptosystems, this scheme works in the group
(Z/nZ)*
A public/private key pair is generated as follows:
p
q
n=p2q
g\in\{2...n-1\}
gp-1\not\equiv1\modp2
h=gn\bmodn
The public key is then
(n,g,h)
(p,q)
A message
m<p
(n,g,h)
r\in\{1...n-1\}
c=gmhr\bmodn
c
m
An encrypted message
c
(p,q)
a=L(cp-1\bmod{p2})
b=L(gp-1\bmod{p2})
a
b
b
p
b'=b-1\bmodp
m=ab'\bmodp
m
c
Let
p=3
q=5
n=32 ⋅ 5=45
g=22
h=2245\bmod45=37
Now to encrypt a message
m=2
r=13
c=gmhr\bmodn=2223713\bmod45=43
To decrypt the message 43, we compute
a=
(432\bmod32)-1 | |
3 |
=1
b=
(222\bmod32)-1 | |
3 |
=2
b'=2-1\bmod3=2
m=ab'=2
We wish to prove that the value computed in the last decryption step,
ab'\bmodp
m
(gmhr)p-1\equiv(gmgnr)p-1\equiv(gp-1)mgp(p-1)rpq\equiv(gp-1)m\modp2
So to recover
m
gp-1
L
gp-1\equiv1\bmodp
gp-1\not\equiv1\bmodp2
gp-1=1+pr
0<r<p
L(gp-1)\not\equiv0\bmodp
m=
L((gp-1)m) | |
L(gp-1) |
\bmodp
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
(Z/nZ)*