要建立基于椭圆曲线的密码体制,需要有类似因子分解两个素数之积或者求离散对数这样的困难问题。
如果对于方程,其中
,对给定的
和
计算
是容易的,但是对给定的
和
计算
是困难的,我们认为这就是椭圆曲线的离散对数问题。
用椭圆曲线密码实现Diffie-Hellman**交换
椭圆曲线的方程为或者
,选择大整数
和参数
,其中
为素数
,或者形为
的整数。椭圆群
,在
中挑选基点
,
的阶为一个非常大的数
,点
的阶
使得
成立的最小正整数。
Alice和Bob之间完成**交换的过程如图所示
要**这种体制,攻击者必须由和
算出
,但这个是困难的。
这里的**是一对数字。
椭圆曲线加密和解密
首先将明文编码为形如
的点
,并对点
加密和解密。
Alice选择一个私钥,产生公钥
Alice将加密后发送给Bob,A随机选择一个正整数
,产生密文
:
Bob对密文解密,需要用第二个点减去第一个点与Bob的私钥之积:
Alice通过将和
相加来伪装消息
,只有ALice知道
所以除了Alice其他人不能伪装
,但是在伪装后的消息中包含了线索,所以在已知私钥
的时候可以除去伪装。
要**这种体制,攻击者必须由和
算出
,但这个是困难的。