首先需要了解ECDH、ECDSA只是用于交换密钥信息,最后对明文的加密还是需要通过AES来实现。
ECDH
Alice生成,Bob生成
,两者分别交换公钥。由于ECC算法,他们可以得到一个公共的密钥信息:
但是ECDH存在中间人攻击问题,因此为了安全,还需要进行签名来互相确认。
ECDSA
在上述ECDH基础上,若Alice需要发出签名,则生成一个临时密钥对,并进行以下操作:
- 将临时密钥信息隐藏在r中:
- 将自己的签名信息隐藏在s中:
,其中,z是一段公开的信息的哈希序列。
- 将
分享给Bob
Bob若要确认该信息确实来自Alice,则进行以下计算:
最后一行计算可展开如下:
因此,若r,s签名信息确实来自Alice,则第三行等式应该成立。此时,Alice和Bob再进行加密通信时,分别通过和
来进行AES所需对称密钥key的生成。
不过这里,具体通过什么方式生成key,我暂时还不太了解。
RSA工作过程:
发送方:
- 生成两个大质数p & q并得到N = pq
- 计算
- 寻找与r互质的一个整数e,此时有定理可找到整数d满足
此时,公钥即(N, e),私钥即(N, d)
加密方计算:
解密方计算:
原理(这里计算情况是m与N互质):