tls使用中的一些基本概念

本文概述了TLS加密的基本概念,包括对称与非对称加密算法(如AES, RSA, ECC),证书的作用与组成,以及数据传输加密的SSL/TLS协议实现。重点讲解了证书链、密钥交换和加密算法协商过程,以及openssl工具的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#关于TLS加密的一些基本概念
---------------------------------------------
最近在做[mbedtls](https://tls.mbed.org)的移植工作,随手写点东西方便以后查,首先强调的一点从工程的角度看加密算法都是针对解密代价来说的,理论上所有的加密都可以破解,但是只要解密的代价超过了可以接受程度就认为是安全的。其次加密算法的安全和算法是否公开无关,可靠的加密应该是通过密钥加密,而不能通过隐瞒算法来实现。再次不要试图自己造轮子,采用公开的现成的程序显然更符合实际情况。
---------------------------------------------

##基本概念
- 对称加密:加密公钥和解密公钥相同,优点的加密速度快,缺点是密钥的传输必须通过某种方法隐藏,以免第三者发现
   1. AES加密 目前最流行的对称加密方法。优点是加密算法快,暴力破解难度大,是一种分组加密方式,区块长度为128bit,加密密钥长度支持128,192,256.
   2. Camellia加密,一种较新的加密方法,也是分组加密,优点是采用小规模硬件就恨容易实现,密钥长度同样支持3种
   3. blowfish加密,一种1993年出现的加密算法,优点是算法快。
   4. DES 加密,很老的加密算法,已经被破解,不推荐在新产品中使用。
- 非对称加密:加密公钥和解密公钥不同,优点是密钥传输简单。无需特别处理方法。缺点是加密速度慢,运算量很大,在实际应用中双方首先建立各自的公钥和私钥,然后交换公钥,用对方的公钥加密在传输给对方,接收方可以用自己的私钥解密。这样第三方即使能够抓取全部的数据,也只能看到公钥和公钥加密过的数据,而无法破解,如果采用暴力破解的方法明显消耗时间太长,花费的代价远低于得到的价值,恶意的第三方会没有破解的动力。
   1. RSA 加密,加密原理可以简单描述如下:根据欧拉定理两个互质数相乘得到一个合数,这个过程恨简单,已知一个合数和另外一个质数也很容易算出另外一个质数。反过来只知道一个质数是无法推算出另外一个质数。RSA加密就是基于这个原理,两个质数一个对应于公钥,一个对应于私钥,用公钥加密,用私钥解密。
  2. ECC加密,椭圆曲线算法加密,其原理基于椭圆曲线计算,出现的时间要晚于RSA加密,主要优点是运算速度快,加密安全性高,160位的加密的强度和1024位RSA的加密强度一样。并且密钥占内存小,可以用于小型系统。预计在将来会取代RSA算法 。
-  证书, 对传输加密只解决了互联网上通讯一半的问题。还存在另一个问题就是身份的确认,即如何保证发送的信息确实来自身份确定的一方。这里又采用了非对称加密的方式来达到这个目的。和传输的时候相反,用私钥加密,然后公开自己的公钥,可以说一段话,然后用自己的私钥加密,而对方已经得到了公钥,只要用公钥可以正常解密。就可以确认说话者就是特定的人。我们说的证书就是对应的公钥。这里还牵涉到一个概念:SHA(安全散列算法)其含义是对一段数据应用一定的算法,产生一串新的数据,不同数据对应的SHA值应不同,并且从SHA无法反推出原始的数据。这样在实际使用中可以提供一个SHA值,这样当你得到一段文字和一个SHA值时,你可以自行计算这段数据的SHA值,然后与提供的SHA对比,如果两者一致就可以确认这段数据没有被人修改过。SHA算法包括SHA-1,SHA-256,SHA-512等,其中SHA-1已经被破解,不推荐人们继续使用。 这里要说一段题外话,正规的网站在存储密码的时候保存的不应该是你输入密码的原文,而应该是SHA或者和SHA类似算法计算出来的数据,在你登录的时候网站比较的是通过你输入密码推算的一个数字指纹进行对比。这样即使网站被人恶意破解成功,第三方或者网站也无法知道你密码的原始值,也就无法利用密码去从事其他破坏性的工作。而有些东西在比对的时候不能做到100%一样才认为是完全一致,这种东西就无法保存散列值,只能保存原文,比对的时候如果相似度达到一定以上就认为是一致。也就是说在网站只有在保存原始的信息的情况下才能进行比对,如果网站一旦被破解,你的原始信息就会被恶意第三方得知。这是一件很可怕的事情,指纹就是这种典型的例子。所以牵涉到指纹的存取会是很麻烦的事情。
- 再回来继续说证书。证书在实际使用中被称为证书链,它不只是一张证书,而是由一系列证书构成。所以被称为链。
  1. CA证书:根证书,这是证书的源头。这种证书是随系统安装的,比如各个浏览器在安装的时候都会撞上预先安装根证书。
  2. key文件:通常指私钥。用专用工具生成。保管时要注意,如果被人得到意味着他人可以随便冒充你的身份。
  3. crt文件:证书,公钥。公开发布,用于校验私钥加密信息。
  4. CSR文件:证书请求文件。用于向证书颁发机构提出证书申请,证书机构经过审查后生成证书证书给你即可正式使用。
  5. 证书链:在实际使用中出于方便的目的,证书机构可能会授权其他机构可以颁发下一级的证书。这样你收到的证书就是可能不是CA直接颁发的,但是通过溯源,最后能确定初始的起源是CA机构。
  6. pem,der:是指证书或者密钥的格式。PEM是base64编码,而der是二进制编码。 
  7. pkcs:公钥密码字交换标准。
 - 这里要提到一点,证书和传输数据的时候看起来是一个互逆的过程,证书是私钥加密,公钥解密,而数据传输是公钥加密,私钥解密。实际上由于应用环境的差异,两者用的算法一般不同,而不是一套加密工具产生两套密钥对。
- 查看证书的信息可以用浏览器,也可以用加密工具,我说几个使用openssl的命令:
  1. 查看证书:xxxx为证书文件名
    >  openssl x509 -in xxxxxx -text
  2. 查看key
   >  openssl rsa -in xxxxx  -text
  3. 生成CA 证书和key: xxxxx 为证书有效天数 ,xxxkey代表私钥名字,xxxca代表ca证书名字
   >  openssl req -new -x509 -days xxxx -extensions v3_ca -keyout xxxkey.key -out xxxca.crt
  4. 生成请求证书:先生成私钥,然后用私钥制作请求证书
  > openssl genrsa  -out xxx.key 2048
  > openssl req -new -key xxx.key -out xxx.csr
  5.  用请求证书生成能使用的证书:这一步通常应该是由CA机构做的:这里的xxxx.crt 和 xxxx.key都是在第三步中生成的。
  >  openssl x509 -req -in xxx.csr -CA xxx.crt -CAkey xxx.key -CAcreateserial -out xxxx.crt -days xxxx
 - 上面是一些openssl的简单使用方法,具体的可以参考[1](https://blog.youkuaiyun.com/qq_30866297/article/details/51501523)和[2](https://www.openssl.org)

## 数据传输加密的实现
- 有了证书和加密算法,就有了数据传输可靠性的基础,但是真正的传输过程还要更复杂一些:
   1. 非对称加密速度慢,如果用于实际的使用会拖慢系统的运行速度。对称加密速度快但是密钥怎么可靠分发?
   2. 有了证书可以确定身份,但是在传输过程中怎么实现身份确认?
-  针对这些就有了ssl和tls协议。ssl可以认为是早期的加密传输协议,而TLS则是对其进一步的优化。这两者均建立在socket上。由于是基于socket层构建的,意味着只是简单插入了一个加密层,而无需对上层做更改。加密层实现了如下功能:
   1. 证书的确认,采用一系列的步骤,通过对证书的校验,确认双方的身份。
   2. 完成了公钥的交换和加密算法的协商。
   3. 在协商过程中使用非对称加密传输对称加密密钥,在后续的通信过程中使用对称加密,这样既获得了对称加密的高速度也兼顾了非对称加密的可靠性。
以上就是关于TLS加密的一些基本概念,传输层加密是互联网安全运行的基石。在这里我们要感谢数学家和加密算法开发人人员。数学家为加密提供了理论基础,而加密算开人员构造了加密算法和提供了实现的程序。而所有这一切都是公开的,意味着所有的人都可以免费使用并从中获益。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值