ECC 和 ECIES 介绍
1. 参考链接
2. CBC
- CBC 模式的全称是 Cipher Block Chaining 模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起。
- 在 CBC 模式中,首先将明文分组与前一个密文分组进行 XOR 运算,然后再进行加密。
来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=977d87a2fd5e076d6842715d7a9bb50.png&pos_id=img-jgBYCdht-1720847279353)
- 当加密第一个明文分组时,由于不存在“前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来代替“前一个密文分组”,这个比特序列称为初始化向量(Initialization Vector),通常缩写为 IV,一般来说,每次加密时都会随机产生一个不同的比特序列来作为初始化向量。
- 在分组密码中,当明文长度不为分组长度的整数倍时,需要在最后一个分组中填充一些数据使其凑满一个分组长度。
3. ECC
- ECC(Elliptic Curve Cryptography,椭圆曲线密码学)是一种基于椭圆曲线数学结构的公钥密码学方法。
4. ECIES
- 集成加密方案,elliptic curve integrate encrypt scheme;
- ECIES 并不是一种具体的方案,其中的密钥导出机制,加密方法都可以根据自己的需要进行设计。ECIES 也有几个标准:ANSI X9.63, IEEE 1363a 和 ISO/IEC 18033-2。
4.1. 介绍
- 是一种基于椭圆曲线密码学(ECC)的混合加密方案,用于确保加密通信的安全性。它结合了对称加密和非对称加密的优点,实现了高效、强安全性的数据加密。
- 一般说 ECC 的算法就是指使用私钥解密对称密钥的算法;
4.2. 架构组件
- 椭圆曲线密钥对:包括公钥(public key)和私钥(private key),用于非对称加密和解密。
- 对称密钥算法:如 AES,用于实际的数据加密,因为对称加密比非对称加密更高效。
- 密钥派生函数(KDF, Key Derivation Function):从椭圆曲线上的共享秘密导出对称密钥。
- 消息认证码(MAC, Message Authentication Code):确保消息的完整性和真实性。
4.3. 原理
- ECIES 的工作原理大致如下:
- 发送方和接收方各自生成一对公私钥。
- 发送方使用接收方的公钥加密一个随机生成的对称密钥。
- 发送方将加密的对称密钥和使用该对称密钥加密的数据一起发送给接收方。
- 接收方使用自己的私钥解密对称密钥,然后使用对称密钥解密数据。
- 一般说 ECC 的算法就是指使用私钥解密对称密钥的算法;
4.4. 加解密过程
4.4.1. 加密过程
- 密钥生成;
- 发送方生成一个临时的椭圆曲线密钥对(临时公钥和私钥)。
- 共享秘密计算:
- 使用发送方的临时私钥和接收方的公钥计算共享秘密。
- 密钥派生:
- 应用 KDF 将共享秘密派生为对称密钥和 MAC 密钥。
- 对称加密:
- 使用派生出的对称密钥加密消息。
- 消息认证码:
- 生成消息的认证码以确保消息完整性。
- 打包发送:
- 将临时公钥、加密后的消息和 MAC 打包发送给接收方。
4.4.2. 解密过程
- 共享秘密计算; -接收方使用自己的私钥和发送方的临时公钥计算共享秘密。
- 密钥派生:
- 使用同样的 KDF,从共享秘密派生对称密钥和 MAC 密钥。
- 验证消息认证码:
- 使用 MAC 密钥验证收到的 MAC,确保消息的完整性和真实性。
- 对称解密:
- 如果 MAC 验证通过,使用派生出的对称密钥解密消息。