前言

最近在学习TLS,这里来学习分析下它的前世今生,作为第一篇入门首先肯定要了解下基本的密码学知识,但是因为这个系列文章的重点不是数学研究,外加上本人密码学垃圾,所以只做个基本的概念阐述,如果对更具体的背后算法原理想要有更多的了解,可以私下再研究。

正文

密码学基本特性:

  • 机密性:防止信息泄露
  • 完整性:防止信息被修改
  • 身份认证:防止中间人
  • 不可否认性:防止事后否认

然后相对应的产生了密码学的几大工具:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器

  • 对称加密:加密和解密时使用同一密钥,主要由AES,(DES,RC4等都被证明不安全了),然后还涉及到加密模式,例如流式加密(RC4使用的就是流式),块加密模式(CBC等模式)

  • 非对称加密:公钥体系。常见的有RSA(大整数进行质因数分解)和ECC(椭圆曲线上的离散对数问题),以及DH(有限域上的离散对数问题),后两者在使用过程中类似一个协商过程,而RSA更类似一个单方面的加密传输过程

  • 单向散列函数保证消息的一致性,完整性,没有被篡改。

  • 消息认证码(比单项散列函数多了个共享秘钥)保证消息的一致性,完整性,没有被篡改,并且不存在中间人伪装。但是因为使用的是共享秘钥不能“第三方证明”,“防抵赖”

  • 数字签名保证消息的一致性,完整性,没有被篡改,并且不存在中间人伪装,并且能防止抵赖。注意数字签名的认证公钥又需要可信第三方来认证。

  • 伪随机数生成器:模拟产生随机数列的算法

借用大佬的一张图片来表现下相对应的关系

补充下公钥证书:其实就是因为数字签名无法保证在外的公钥是可信的,没有被中间人替换,所以需要一个可信的的第三方机构(CA)对你这个公钥进行签名,包含一些其他信息,最终形成证书。那么又怎么保证CA是可信的呢,一般例如浏览器(相信微软)就会预装CA的公钥证书再利用证书链来确保CA可信。

总结

主要是理清下密码学工具有什么,然后才方便后面我们在TLS协议涉及分析时理解使用这些工具。然后主要参考的这个大佬的博客,有需要看看。

Halfrost's Field 冰霜之地