密钥协商的输入包括椭圆曲线参数(具体参数情况请参见§6.2.2),以及己方私钥s和对方公钥W,注意这里的公私钥都必须是在同一条椭圆曲线上选取。以下假设椭圆曲线参数、己方私钥s和对方公钥W都是合理有效的。密钥协商算法如下:
───────────────────────────────────────
算法 密钥协商
输入: 己方私钥s,对方公钥W,椭圆曲线参数
输出: 协商出的秘密值s。
步骤:
step1、 计算临时点T=← s×W。
step2、 得到T点的x坐标tx。
step3、 将tx交给密钥导出函数KDF算出协商的秘密信息。
s=KDF(tx)。
step3: 返回s。
───────────────────────────────────────
现在来解释为什么双方能协商出相同的秘密值。假设协商双方为A和B,各自的公私钥对分别为和
,
所以可以得到:
这就说明了双方协商得出的是同一个秘密值。