聊聊SSL/TLS加密机制背后的算法故事
发布日期:2017-09-12如果你研究SSL和加密的时间足够长,最终你会遇到“密码”这个词。除了通常是一个很酷的词外,密码是加密的一个非常重要的组成部分。
那么,加密所使用的密码是什么呢?
密码就是算法,更具体地说,密码是执行加密和相应的解密过程的一系列步骤。现在的密码依赖于计算机的先进处理能力。然而,情况并非总是如此。历史上最早的著名密码之一属于凯撒大帝——罗马皇帝和开胃菜沙拉的供应者,在军事行动中,他使用这些密码与他的将军们进行交流。
多年来,密码变得越来越复杂,但其背后的逻辑却一直保持不变。无论是凯撒穿越卢比孔,还是第二次世界大战中臭名昭著的“谜”密码,或者是今天的一些算法,它们的加密思想都是相同的,即通过一种方式编码或加密信息,只有指定的接收方才能读懂它。
两组密码
无论出于什么样的意图和目的,当我们讨论的是与SSL加密相关的特定的密码时,存在两种类型的算法:对称算法和非对称算法。这取决于你将要执行的加密类型,同样地,加密类型也分为对称的和非对称的。
对称加密包括两个相同的密钥,或者是通过其名称非常巧妙地表示出来的,两个对称的密钥。这两种密钥都可以执行两种功能:加密和解密。你可以在浏览器和服务器之间的加密web连接中看到这一点。在对SSL证书进行身份验证并完成SSL握手之后,浏览器和服务器交换了对称的“会话密钥”,使得它们在访问期间可以安全地进行通信。当这些会话密钥在发挥作用时,它们使用的是对称密码。
相反,在不对称加密的情况下,你所讨论的就是具有不同能力的不同密钥了。最明显的例子是在SSL握手期间使用的公共/私有密匙对。在这个场景中,一个密匙进行加密,而另一个密匙则进行解密。这种加密需要一种不同类型的密码——一种非对称算法。
常见密码
在加密方法中,有许多种不同的密码,它们通常互相结合起来用于加密。这是因为,特别是在与SSL相关的问题中,你并不会只使用一种算法,而是使用一系列算法,它们被组合在所谓的“密码套件”中。
我们正在朝着这个概念发展,所以我们在这会稍微讲一下。但是,既然我们已经了解了这两种类型的算法——对称的和非对称的——那么我们可以看看不同的密码和它们所具有的功能——然后我们将讨论怎样构建一个密码套件。
下面是一些密码和其他类似算法的例子:
密钥交换
RSA
RSA是由创造它的先生们命名的:Rivest、Rivest和Adleman。这是一个相当常见的非对称密码系统,它使用素数,并且有非常广泛的应用范围。
Diffie-Hellman
这是以Whitfield Diffie和Whitfield Diffie的名字命名的,这是一种公共密钥协议,主要用于交换公共频道的加密密钥。在像DH这样的方法出现之前,密钥必须以物理形式传输。
椭圆曲线Diffie-Hellman
这是一个密钥协商协议,它为双方提供了椭圆曲线公钥私钥对,以建立一个共享的密码(直接作为密钥或生成一个密钥),并在公共渠道上安全地使用。
PSK
通常写作TLS-PSK,这是一种能够提供基于预先在通信双方之间交换的预共享对称密钥的安全通信的密码。
加密密码
AES
先进加密标准,也叫作Rijndael,它是一个NIST(美国国家标准与技术研究院)批准的加密密码,它的块的大小是128位,而对称密钥的长度是128、192或256位。
Camellia
这是一种具有与AES密码类似功能和秘钥大小的对称密钥块密码。它是由NTT(日本电报电话公司)和三菱公司在日本开发的,并得到了ISO/IEC(国际标准化组织/国际电工委员会)、EU(欧盟)和日本CRYPTREC项目组织的批准。
ARIA
这是另一个类似于AES密码的块密码,它是在2003年由韩国的一个研究者团队开发出来的。
数据完整性/认证
基于散列的消息身份验证代码(HMAC)
这是一种消息身份验证,它使用加密的散列来对消息进行身份验证,并确保数据完整性,请想一想SHA-256。
经过身份验证的加密
AE或AEAD提供了在单一编程接口下的数据的机密性、完整性和身份验证保证。它通常与块密码一起使用。
很明显,这是一个不完整的列表,还有很多其他的密码。但是,当我们在下一节开始讨论密码套件时,这至少会给您提供更多的知识背景。
什么是密码套件?
密码套件是在SSL/TLS握手过程中用于磋商安全设置的算法的组合。在交换了ClientHello(客户端问候消息)和ServerHello(服务器端问候消息)之后,客户端将发送它所支持的密码套件的优先级列表。然后,服务器使用从列表中选择的密码套件进行响应。
密码套件以指定的下列内容的组合:
· 密钥交换算法(RSA、DH、ECDH、PSK)
· 身份验证算法(RSA、DSA)
· 批量加密算法(AES、Camellia、ARIA)
· 消息身份验证码算法(SHA-256)
所以,以下面的密码套件为例:
我给它涂上了颜色,以帮助你区分出不同的密码。
协议是TLS。从ECDHE开始,我们可以看到,在握手过程中,密钥将通过短暂的椭圆曲线Diffie Hellman(ECDHE)进行交换。身份验证算法是RSA。AES_128_GCM是一种批量加密算法。最后,SHA-256是散列算法。
大多数浏览器和服务器都有一个他们支持的密码套件列表,为了确定优先级,在握手过程中,双方将会对该列表进行比对,以确定将要使用的安全设置。
写在最后的话
当然,随着TLS 1.3逐步接近最终版本,这一切都将发生变化。尽管之前版本的SSL/TLS通过TLS 1.2使用了这里所描述的密码套件,但在1.3版本中,密码套件的结构将会发生改变,它们只会用于磋商加密机制和HMAC算法。
因为1.3版本密码套件的结构与它的前任不同,所以它们不能与旧的TLS版本互换。
我们学到了什么
对于那些喜欢快速浏览的人来说,以下是今天文章的关键内容:
· 密码是算法、一系列加密指令以及解密信息。
· 密码可以是对称的,也可以是非对称的,这取决于它们所支持的加密类型。
· 密码套件是在SSL/TLS握手期间用来磋商安全设置的指定密码的组合。
· 在握手过程中,客户端和服务器交换密码套件的优先级列表,并决定使用两者所支持的最优套件。
文章来源:sslchina
相关资讯:
HTTPS基础知识:HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套...
HTTPS协议的主要功能基本都依赖于TLS/SSL协议,本节分析TLS/SSL协议工作原理。TLS...HTTPS加密协议详解(一):HTTPS基础知识HTTPS加密协议详解(二):TLS/SSL工作原理...
部分 CA 或大部分的自签 CA (根证书)都是未提供 CRL 或 OCSP 地址的,对于吊销证书会是一件非常麻烦的事情。章节导航:HTTPS加密协议详解(一):HTTPS基础知识...
首页>技术支持>最新数字证书问答 >HTTPS加密协议详解(四):TLS/SSL握手过程 ...session ticket 需要服务器和客户端都支持,属于一个扩展字段,支持范围约60%(无...
HTTPS加密协议详解(一):HTTPS基础知识HTTPS加密协议详解(二):TLS/SSL工作原理HTTPS加密协议详解(三):PKI 体系HTTPS加密协议详解(四):TLS/SSL握手过程HTTPS加密协议...