数据传输加
1、如果有大量数据要从A传递给B,为了不泄密,就需要对数据加密,出于计算性能考虑,选择共享密钥加密的方式,即A和B都要拥有同一密钥,A用这一密钥加密,B收到后用这一密钥可解密 :)
2、那么,这个共享密钥如何在A和B之间传递呢?如果明文传递,被第三方截获共享密钥,数据的通信就不安全了 :(
所以要对共享密钥进行加密。由于密钥本身不大,计算性能不会成为障碍,所以可以采用公钥加密方式。例如,A设定共享密钥,并用B的公钥对这个共享密钥进行加密后传输给B,B用自己的私钥来解密,这样B就获得了共享密钥了 :)
3、问题是A如何获得B的公共密钥?如果公共密钥以明文直接传输的话,遭遇中间人攻击,中间人可以用自己的公钥来替换B的公钥,这样后续A发出的数据(共享密钥)就可以被中间人以自己的私钥打开了 :(
解决问题的办法是B向A提供自己的证书,证书中包含了B的公钥,并且证书经过权威的第三方机构(认证中心)的签名,这个签名是不可伪造的 :)
4、但是A如何来验证B提供的证书是否合法呢?A需要有认证中心的公钥才能确认证书是否合法呀 :(
这里的办法是将认证中心的公钥编译到软件里去,而软件以CD-ROOM或U盘等物理方式来提供,这样公钥就安全了。
按事情先后顺序梳理一遍就是:
1、A通过软件编译的方式内置认证中心公钥
2、B向A发送自己的证书,证书中包含B的公钥,A用认证中心公钥验证证书合法
3、A设置用于大量数据传输加密的共享密钥,并将这一共享密钥用B的公钥加密后传送给B,B接收后用自己的私钥解密获得共享密钥
4、A用上述共享密钥对大数据进行加密,传递给B,B用同一共享密钥对大数据解密
作者 |马樟平
转载请注明出处:华为云博客 https://portal.hwclouds.com/blogs
- 点赞
- 收藏
- 关注作者
评论(0)