SSH加密原理、RSA非对称加密算法学习与理解

     首先声明一下,这里所说的SSH,并非Java传统的三大框架,而是一种创建在应用层和传输层基础上的安全外壳协议,熟悉Linux的朋友常用到一 个SSH Secure Shell Cilent的工具,本文也是基于此工具加密原理的学习,在SSH的加密原理中,使用到了RSA非对称加密算法,本文也一并作了学习和了解。html

    非对称加密算法算法

    在平常的工做生产中, 咱们常常须要进行数据的通信,开发人员常常须要对数据进行加解密操做,以保证数据的安全。数据的加密算法非为对称加密和非对称加密两种,经常使用的DES、三 重DES、AES等都属于对称加密,即经过一个密钥能够进行数据的加解密,密钥一旦泄漏,传输的数据则不安全。安全

    非对称加密算法的核心源于数学问题,它存在公钥和私钥的概念,要完成加解密操做,须要两个密钥同时参与。咱们常说的“公钥加密,私钥加密”或“私钥加密, 公钥解密”都属于非对称加密的范畴,后文中讲到的RSA算法也一种典型的非对称加密算法。公钥加密的数据必须使用私钥才能够解密,一样,私钥加密的数据也 只能经过公钥进行解密。服务器

    相比对称加密,非对称加密的安全性获得了提高,可是也存在明显的缺点,非对称加解密的效率要远远小于对称加解密。因此非对称加密每每被用在一些安全性要求比较高的应用或领域中。框架

    典型的RSA非对称加密工具

    RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最普遍的非对称加密算法,于1978年由美国麻省理工学院(MIT)的三位学着:Ron Rivest、Adi Shamir 和 Leonard Adleman 共同提出。
学习

    它的原理较为简单,咱们假设有消息发送方A和消息接收方B,经过下面的几个步骤,咱们就能够完成消息的加密传递:加密

  1. 消息发送方A在本地构建密钥对,公钥和私钥;spa

  2. 消息发送方A将产生的公钥发送给消息接收方B;设计

  3. B向A发送数据时,经过公钥进行加密,A接收到数据后经过私钥进行解密,完成一次通讯;

  4. 反之,A向B发送数据时,经过私钥对数据进行加密,B接收到数据后经过公钥进行解密。

    因为公钥是消息发送方A暴露给消息接收方B的,因此这种方式也存在必定的安全隐患,若是公钥在数据传输过程当中泄漏,则A经过私钥加密的数据就可能被解密。

    若是要创建更安全的加密消息传递模型,须要消息发送方和消息接收方各构建一套密钥对,并分别将各自的公钥暴露给对方,在进行消息传递时,A经过B的公钥对数据加密,B接收到消息经过B的私钥进行解密,反之,B经过A的公钥进行加密,A接收到消息后经过A的私钥进行解密。

    固然,这种方式可能存在数据传递被模拟的隐患,咱们能够经过数字签名等技术进行安全性的进一步提高。因为存在屡次的非对称加解密,这种方式带来的效率问题也更加严重。   

    SSH加密原理

    在SSH安全协议的原理中, 是一种非对称加密与对称加密算法的结合,先看下图:

    这里进行一下说明:

  1. 首先服务端会经过非对称加密,产生一个公钥私钥

  2. 在客户端发起请求时,服务端将公钥暴露给客户端,这个公钥能够被任意暴露;

  3. 客户端在获取公钥后,会先产生一个由256位随机数字组成的会话密钥,这里称为口令;

  4. 客户端经过公钥将这个口令加密,发送给服务器端;

  5. 服务器端经过私钥进行解密,获取到通信口令;

  6. 以后,客户端和服务端的信息传递,都经过这个口令进行对称的加密。

    我的感受,这样的设计在必定程度上提升了加解密的效率,不过,与客户端服务端各构建一套密钥对的加解密方式相比,在安全性上可能有所降低。在上面所述的经过口令进行加密的过程当中,数据也是能够被窃听的,不过因为密钥是256个随机数字,有10的256次方中组合方式,因此破解难度也很大。相对仍是比较安全的。服务端和客户端都提早知道了密钥,SSH的这种方式,服务端是经过解密获取到了密钥。

    DH密钥交换算法

    SSH的原理,是基于RSA非对称加密,RSA是基于大数的因式分解数学难题,下面要提到的DH密钥交换算法则是基于有限域上的离散对数难题。

    DH算法是一种密钥协商算法,只用于密钥的分配,不用于消息的加解密。它提供了一种安全的交换密钥的方式,经过交换的密钥进行数据的加解密。就像SSH原理中,口令的交换,不过DH算法更安全。

    咱们举个例子来进行说明,假设有A、B两方,A做为发送者,B做为接收者。经过下面的几个步骤就能够构建出一个只属于双方的密钥口令,以下:

  1. 首先A、B双方,在通讯前构建专属于本身的密钥对,假设分别是公钥A,私钥A,公钥B,私钥B;

  2. A将本身的公钥A暴露给B,B经过私钥B公钥A通过必定的运算产生出本地的密钥B

  3. 一样,B将本身的公钥B暴露给A,A经过私钥A公钥B通过必定的运算产生出本地的密钥A

  4. 最后,这个算法有意思的一点就是,密钥A密钥B是一致的,这样A、B双方就拥有了一个属于双方的“秘密”口令;

    DH算法的产生是,对称加密向非对称加密的过分,为后续非对称加密的产生和发展奠基了基础。

    总结:成文的过程当中,阅读了一些关于加密解密的算法,作出了如上的理解,毕竟术业有专攻,也可能存在理解偏颇,甚至错误的地方,但愿你们批评指正。

    更多请看这里:SSH加密原理、RSA非对称加密算法学习与理解

相关文章
相关标签/搜索