美文网首页
计算机密码学与PKI体系

计算机密码学与PKI体系

作者: llpy | 来源:发表于2018-03-17 11:36 被阅读153次

    加密算法

    所谓加密算法就是指将信息变成密文的计算方法。 可以很简单也可以很复杂。
    有的加密算法就是对信息进行简单的替换和乱序, 这种加密算法最明显的缺陷就是算法本身必须保证是保密的。

    现代加密算法通常需要密匙来完成对信息的加密运算, 算法本身是可以公开的, 理论上, 只要保证密匙的安全就能保存信息的安全

    对称加密算法与非对称加密算法

    基于密匙的加密算法可以分为两大类: 对称加密算法和非对称加密算法(也叫公钥算法)。

    对称加密算法

    加密数据和解密数据都是用的同一个密匙。

    非对称加算法

    密匙分为公钥和私钥, 公钥用来加密数据, 私钥用来解密数据; 不能从公钥推导出私钥; 任何人都可以拥有公钥,都可以用来加密数据, 只有拥有私钥的人才能将信息解密。

    RSA算法

    RSA算法是当今使用最为广泛的非对称加密算法。

    详细可参考 阮一峰-RSA算法原理(一)

    PKI 公开密匙体系

    PKI是Publick Key Infrastruction的缩写

    对称加密算法的致密弱点在于密匙的安全性,导致对称加密体系解决不了密匙分配和管理的问题。
    非对称加密算法的缺点是速度慢, 非对称加密算法比对称加密算法要慢的多。

    因此非对称加密不适合用于大量的数据加密传输。 为了实现数据的加密传输, 非对称加密需要和对称加密结合使用, 即非对称负责对称密匙交换, 对对称加密算法负责实际的数据加密。

    大概的流程如下:

    1. 用户1 生产随机的secrect key1
    2. 使用用户1的公钥对secrect key1进行加密, 然后传递给用户2
    3. 用户2接收到加密的secrect key1, 使用对应的私钥进行解密,得到secrect key1
    4. 用户2 生产随机的secrect key2
    5. 使用用户2的公钥对secrect key2进行加密, 然后传递给用户1
    6. 用户1接收到加密的secrect key2, 使用对应的私钥进行解密,得到secrect key2
    7. 用户1和用户2就可以使用secrect key1, secrect key2进行加解密

    (? 不是太明白为什么需要secrect key1, secrect key2两个密匙, 使用一个应该就可以)

    公开密匙体系除了可用于安全密匙交换之外, 还可以用于鉴别用户身份。

    这种是两个用户都有自己的私钥和对方的公钥。 意思有两对公钥私钥:

    1. 用户1使用自己的私钥加密message1, 将加密后的信息传递给用户2
    2. 用户2使用用户1的公钥对数据进行解密, 然后使用自己的私钥对这个数据进行加密, 再传递给用户1
    3. 用户1使用用户2的公钥对数据进行解密, 看是否和之前发出的数据一致

    同样的原理, 公开密匙算法可以对数据进行签名和校验, 保证数据的一致性和完整性。

    1. 用户1将数据和对数据加密之后的签名一起发送给用户2
    2. 用户2使用用户1的公钥对数据进行签名, 然后与接收的数据进行比较, 如果一致证明数据没有别篡改

    因为非对称加密算法很慢, 对数据签名一般不采用直接加密数据的方式, 而是加密数据的散列值。

    数据的散列值是通过单向散列函数计算得到的一个固定长度的值, 消息不同得到的散列值也有很大的差异。

    单向的意思就是,不可能从散列值反推出原始数据。比较数据的散列值与数据本身是等价的。 常用的消息散列算法有MD5和SHA-1等。

    非对称算法(也就是公钥算法)仍然要面临公分发, 公钥、私钥与用户(比如说一个网站)真实身份绑定的问题。

    验证用户(一个网站)身份, PKI引入了证书机制解决这个问题, 证书由证书注册中心(CA)统一颁发。

    用户(一个网站)获得自己的证书后, 就可以使用证书来表明自己的身份, 接收方只要使用CA中心的公钥验证用户的证书, 如果验证成功, 就可以信任该证书的用户的身份。

    SSL

    安全套接字层

    internet是一个开放的网络环境, 意味着网络上传输的任何数据都有被截取和监听的可能。 当你向网站提交一些信息时, 这些信息从你的计算机传出, 通过internet上的若干节点之后, 到达服务器, 在这中间的过程中, 这些数据完全是暴露的, 任何人只要有适当的工具都可以截取这些数据。

    SSL就是用来解决这一个问题的。

    SSL位于TCP/IP层和HTTP应用层之间的一层, 是用来加密数据的。 浏览器的SSL实现采用了RSA公司的公钥、私钥加密系统和数字证书应用系统。

    当今的主流浏览器都内置了对SSL的支持

    SSL也是使用 非对称负责对称密匙交换, 对对称加密算法负责实际的数据加密这种方式, 这个工程称为
    SSL握手。

    FH93XKZ)GU8RGT)KLH_RUPJ.png
    1. 客户端向服务器发送客户端的SSL版本号, 加密算法设置等
      2.服务器 向客户端发送客户端的SSL版本号, 加密算法设置等 和证书
    2. 客户端验证服务器身份
    3. 客户的创建secret(对称加密秘钥), 用服务器的公钥加密(公钥在服务器证书中)
    4. 如果服务器也要求验证客户端的身份, 那么客户端也需要把自己的证书传递给服务器

    相关文章

      网友评论

          本文标题:计算机密码学与PKI体系

          本文链接:https://www.haomeiwen.com/subject/qccltxtx.html