对称加密和非对称加密

对称加密的缺点

  • 解密的密钥需要双方都有,密钥在网络上传递的过程中会被三方截获。
  • 在一个公司里,每台机与每台机之间都需要不同密钥,密钥维护麻烦

RSA

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

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

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

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

实现细节

  • A本地有私钥和公钥
  • A 用一个单向散列函数获得文件的摘要
  • 并用私钥加密摘要(这就是A的签名)
  • 然后A把文件,公钥,和签名发给B
  • B同样用单向散列函数获得文件的摘要1,同时利用公钥解密签名获得摘要2,然后比较摘要1与摘要2,如果相同则证明文件没有被三方篡改。
    签名就像公司的章,证明其身份。文件一般是不加密的。
    应用场景: 比如中央政府给各地方政府发送红头文件,就要加签名。让地方政府知道这文件是中央发过来的,而是内容不被修改。

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. 客户端回应
  • 客户端此时生成第三个随机数(这一个随机数被称为pre-master-key),向CA验证服务器的证书以后拿到服务器的公钥,使用公钥加密第三个随机数,并把加密后的第三个随机数发送给服务器。
  • 客户端在本地利用之前与服务器商量好的加密方法,根据这三个随机数生成一个对话密钥(session key)用于两端通信。
  1. 服务端回应
    服务端收到第三个随机数后,计算出对话密钥,至此,握手阶段结束。接下来使用对话密钥进行通信即可。

你可能感兴趣的:(对称加密和非对称加密)