最近用到ECIES(集成加密方案,elliptic curve integrate encrypt scheme),就想从网上找找ECIES是什么,但找不少资料还是没弄明白。
后来看了几篇文献,基本上弄懂了,在这里分享下想法。
ECIES并不是一种具体的方案,其中的密钥导出机制,加密方法都可以根据自己的需要进行设计。ECIES也有几个标准:ANSI X9.63, IEEE 1363a 和 ISO/IEC 18033-2。
简单来说加密时为: 使用发送者的私钥和接受者的公钥生成加密密钥ek和MAC密钥mk,用ek对明文M加密得到密文c,使用mk生成密文c的标签。将发送者的公钥,密文c和标签一起发送给接受者。(也可在生成密钥和标签的步骤加入共享消息)
解密时:接受者收到发送者发送的公钥,密文c和标签,加入自己的私钥,即可生成加密密钥ek和MAC密钥mk,使用ek对密文c解密,得到消息M。
以下为详细流程。
一、加密
①选择一个在 1 和 n - 1 之间的临时随机整数k,计算 R = kG = ( Gx,Gy) 。
②将点 R 转换成八进制字符串 R’。
③由临时密钥 k 和公钥 Q 得到共享秘密域元素 z,( 例如 P = ( Gx,Gy) = kQ,令 z = xp) 。