RSA单向陷门函数及其应用
ElGamal单向陷门函数
1)密钥生成
① 选择一大素数p,选取Zp * 的生成元g ;
② 任选小于p的随机数x,计算y≡g x mod p;
③(y, g, p)为公开密钥, (x, g, p)为秘密密钥.
2)加密:设待加密明文为M.
① 随机选一整数k,0<k<=p-1;
② 计算密文对: C = {C1 ,C2 }, 发送给接收者.
C1≡g k mod p, C2≡y kM mod p
有限域上离散对数问题:
已知(Zp ,+, *)是一个有限域,g为Zp * 的生成元,y∈ Zp ,求x使得y=g x mod p.
如果求有限域离散对数问题是容易的,则获得公钥攻击者能够解出x,ElGamal加密算法完全破译.
加密过程:随机数k不能泄露;随机数k不能重用。
椭圆曲线单向陷门函数简介
有限域上的椭圆曲线指曲线方程定义式中,所有系数都是有限域GF(p)中的元素(其中p为大素数).
最为常用的曲线是
1)椭圆曲线上ElGamal算法
密钥生成
Ø 选取一条椭圆曲线Ep (a,b),取Ep (a,b)的一个生成元G, Ep (a,b)和G作为公开参数.
用户A选xA 作为秘密钥,并以PA=xAG作为公开钥
加密运算
用户Bob若想向Alice发送消息Pm ,可选取一随机正整数k,产生以下点对作为密文:
Cm ={kG, Pm+kPA }={c1 ,c2 }
解密运算
Alice解密时,以密文对中的第二个点减去用自己的秘钥与第一个点的倍乘,即c2 - xA c1 = Pm +kPA -xA kG=Pm +k(xAG)-xA kG = Pm