对称加密和非对称加密

2018-11-03  本文已影响0人  撸撸很乖张

对称加密的缺点

RSA

非对加密
公钥加密,私钥解密 用于加密
私钥加密,公钥解密 用于签名

非对称加密细节:
公钥和私钥本地欧拉函数生成

  1. GIT服务器上存储的是公钥,你本地存储的是私钥,当你push本地代码库到远程代码库,服务器会要求你出示私钥,并且用你出示的私钥和它的公钥配对来完成认证。由于使用的是不对称加密,所以公钥可以公开,只要保管好私钥就可以。
  2. 路人甲只要没有私钥,所以无法push。这样才能保证开源项目的完整性,否则阿猫阿狗都去push代码,那项目不就乱套了?如果路人甲想对你的项目做出贡献,那么以GITHUB为例,他会发送一个pull request给你,然后由你来审核他作出的改变,如果审核通过,那么你就可以将他的pull request合并到你工程的某一分支中。这里只以GITHUB为例,私有的GIT服务器可能没有类似功能,比如GITLAB就没有pull request。

数字签名
防止抵赖,能够检查签名后的内容是否被改过。
比如 防止软件被更改,加入病毒等等

实现细节

CA机构 给企业数字证书,证书里有A的公钥和私钥。A的公钥被CA机构的私钥加密,即签名,这样将A的加密后的公钥给B的时候,B需要信任CA机构,获得CA机构的公钥,然后解密还原A的公钥。

作用 为企业和用户颁发数字证书,确认这些企业和个人身份,发布证书吊销列表

windows系统 运行 输入mmc,可以查看安装的证书。

SSL

SSL是基于非对称加密的原理,在这之上还进行了对称加密的数据传输。当传送数据量过大的时候,客户端和服务器之间互相商定了一个对话密钥(session key),使用这个对话密钥来进行对称加密加快运算速度。

整个SSL的流程如下:

客户端向服务器请求证书,验证无误后拿到服务器的公钥
双方协商生成一个session key
最后双方采用session key进行加密通信
主要关注前两步,即SSL的握手阶段。

  1. Client Hello
    客户端向服务器发出一个随机数,以及支持的传输协议以及加密算法 ,压缩方法。
  2. Server Hello
    服务器在确认支持客户端的传输协议等要求后,发送服务器的证书,以及一个随机数,安全需求更高的服务器会要求客户端发送证书来证明客户端的身份。
  3. 客户端回应
  1. 服务端回应
    服务端收到第三个随机数后,计算出对话密钥,至此,握手阶段结束。接下来使用对话密钥进行通信即可。
上一篇下一篇

猜你喜欢

热点阅读