椭圆曲线集成加密框架 ECIES
ECIES 加密算法
基本过程
- 发送方 Alice 和接收方 Bob 分别利用椭圆曲线密钥函数生成各自的密钥对( R,S) ,( P,Q)
方法1:密钥对生成(KG)
- 建立椭圆群 Ep ( a,b) ,选取椭圆曲线 E: y2 = x3 + ax + b( mod p)
- 在椭圆群 Ep 中选择点 G = ( Gx,Gy ) ,G 符合条件 n·G = O,n 代表大素数, O 代表无穷远点
- 确定私钥,通常将小于 n 的整数 d 确立为私钥
- 确定公钥,依据公式 P = d·G,得到公钥 P
- 发送方 Alice 利用自己的私钥 S 和 Bob 的公钥 P 进行密钥协商,生成共享密钥 P·S
- 经过KDF密钥派生模块生成两个密钥Mk,Ek,其中密钥Mk 用于签名生成摘要,Ek 用于明文数据加密
方法2:密钥派生函数 (KDF)
密钥派生函数( KDF) :一个将字符密码(Password)转换成密钥(Key)的函数
- 发送方Alice利用上述生成的加密密钥Ek 在Enc加密模块中对明文数据M进行加密操作,得到密文ME
方法3:加密算法 (ENC)
该算法采用 128 位的密钥长度,每隔128 位,消息被分为一组。采用不同顺序的轮密钥,互为逆操作,同时非线性迭代结构被应用于加密过程
- 密文 ME 在 签字算法 MAC 模块中通过密钥 Mk,为密文打上标签,生成摘要 D
- 发送方 Alice 将公钥 R,密文 ME,标签 D 打包发送给接收方 Bob
ECIES解密算法
基本过程
- 接收方Bob接收到密文数据后,首先拆包,得到公钥R,密文ME,标签 D
- Bob 同样使用自己的私钥 Q 和发送方 Alice 的公钥 R,经过 KA 密钥交换和 KDF 密钥派生模块生成共享密钥对 Mk,Ek
方法1:密钥派生函数 (KDF)
密钥派生函数( KDF) :一个将字符密码(Password)转换成密钥(Key)的函数
- Bob 利用密钥 Mk,通过 签字算法MAC 模块,得到密文的标签值 D’
- 比较 D 与 D’ 的值是否一致,如果不一致,则表示接收的信息是不完整的
- 如果一致,则利用上述生成的密钥 Ek 在加密算法 ENC 模块中解密密文 ME 得到明文 M
方法2:加密算法 (ENC)
该算法采用 128 位的密钥长度,每隔128 位,消息被分为一组。采用不同顺序的轮密钥,互为逆操作,同时非线性迭代结构被应用于加密过程