个人目的只是想从 应用使用的角度来理解,非对称加密、公钥私钥这些概念。
对于 ssh 的`authorized_keys`的应用使用过程为:
● 服务器检查 `authorized_keys` 文件,找到与客户端提供的公钥匹配的条目。
● 服务器生成一个随机数,并使用公钥对其进行加密,然后将加密后的消息发送给客户端。
● 客户端使用私钥解密该消息,并将解密后的随机数返回给服务器。
● 服务器验证返回的随机数是否正确。如果正确,服务器接受客户端的连接请求。
从这个过程,理解了"正因为客户端使用了私钥来解密,所以才能证明客户端的身份。",而且反过来,“私钥加密,公钥解密”是无法证明身份的。
自己也去 ssh 连接了多个服务器,查看了`authorized_keys`的内容。也看了客户端自己`~/.ssh/id_rsa.pub`。
那对于“私钥签名,公钥验证”,有什么应用场景是平时接触得到的?
- 而且最好有实物可以查看,帮助理解。
- 而且要是能有一个和我上面差不多的简单分析,就更好了。
数字签名的过程:A ----> B 发送一条数据,数据和签名是分开发的。
1. A 先使用摘要算法算出摘要;
2. A 使用自己的私钥对摘要进行加密;
3. A 发送数据给 B ;
4. A 发送签名给 B ;
5. B 收到签名后先使用 A 的公钥进行解密;(体现了防止抵赖的特性)
6. B 收到数据后进行摘要计算,和签名解密出来的摘要进行对比;(验证数据的完整性)
需要注意的是,出于保密性需求,数据发送前也可以使用某种算法进行加密,密钥及算法协商涉及其它过程。
这是书本上学习理解到的知识,没有验证过。
1. 用私钥签名一段数据哈希(如转账)
2. 网络节点还原哈希对应的公钥(椭圆曲线)验证公钥所有者,以及检查公钥所有者记账的金额余额
区块链上的账目实际上是记录在公钥上,即某个公钥持有对应资产数量
私钥签名->公钥验证 你发一条信息出去,任何知道你公钥的人都能验证这条信息是来自于你