张三给李四通过P2P网络发送一条信息,现在有3个问题需要面对:
1,张三发出信息后如何确保只有李四才能解密信息?
2,李四收到信息怎么确定这条信息就是张三发送的呢?
3,这条信息是否别第三人窥视或者篡改过?
至于P2P网络的连通性我们在此不讨论,可以明确的是,这是无懈可击的。在回答这3个问题之前我们先补补课。
我们要明确一个概念,非对称加密,对于程序员同学会非常容易理解,可以自行联想RSA加密。这涉及到公钥和私钥。我猜这会你想到了自己的以太钱包。
- 使用公钥加密一段信息后,使用公钥解不开,必须使用私钥才能解开;
- 使用私钥加密一段信息后,使用私钥解不开,必须通过公钥才能解开。
- 根据加密原理,通过私钥可以轻松算出公钥,但是通过公钥无法算出私钥。
回到张三李四通信的问题上来。张三要发送一条信息给李四,要确保只有李四才能解密这条信息,于是张三就用李四的公钥加密原始信息,这条信息开始在P2P网络传播,可能要经过很多节点,虽然所有人都知道李四的公钥,但是用公钥是无法解密此信息的,最终李四收到此信息后,用自己的私钥解读张三发来的信息。
问题一解决了。
张三如何证明自己是这条信息发送者呢?在网络上,每个人都可以伪装成别人,那么李四如何识别收到的信息就是张三本人发的而不是王五赵六伪装的呢?
方法很简单的,张三只需要对信息加密两次就可以了。
1,张三先用自己的私钥对原始信息进行第一层加密(也叫数字签名)
2,在上一步数据基础上再用李四的公钥进行第二次加密。
李四收到信息后以相反是顺序进行解密:
1,公自己的私钥解密(证明这是发给我的,别人没有我的私钥解不开);
2,然后用张三的公钥解密(证明这是张三发出的,别人没有张三的私钥,无法加密)。
问题二也解决了。
如果被多层加密过的信息在传输工程中被篡改了,那么任何人都不会解密此密文,那么这个网络的连通是没有意义的。所以问题三也不存在了。
有了这项非对称加密技术保障,我们便不必担心区块链网络通讯的安全问题了。
公钥就是你钱包的地址,私钥就是你对这个地址的控制权。如果你区块链资产被盗了,那一定是自己的疏忽导致了你的私钥被盗了。私钥是在钱包客户端生通过加密算法成的,包括钱包备份、助记词都是存在客户端的,而不会上报到钱包公司的中心服务器的。所以钱包备份、密码、助记词这些些敏感信息一定要看管好。允许你暴露给互联网的只有 公钥。
是不是觉得区块链没那么晦涩了?
网友评论