vlambda博客
学习文章列表

对称加密算法:长期有效的加密(上)

本期我们将分为两个章节去探索对称密钥算法,这是无处不在的对称加密,就像星际迷航中的小问题一样。两篇文章都有点长,请耐心地阅读哦,你会有所收获的。



对称加密算法是实现安全通信的基本过程,是信息安全不可或缺的部分,它可以帮助客户安全地以比光速还快的速度对数据进行加密。
什么是对称算法及其工作原理?
对称算法 对称密钥加密 核心加密功能。它是计算机执行与加密和解密数据有关的特定任务时遵循的一组指令或步骤。
这要怎么理解呢?
我们使用对称加密算法(与加密密钥结合)来完成两个主要任务:
1.    加密:将可读文本(纯文本)转换为不可读的加密文本(密文);
2.    解密:将密文转换回纯文本。

对称加密算法对加密和解密使用相同的加密密钥。(与使用两个不同密钥的非对称加密算法不同。)

通常,加密算法是基于数学原理的,取决于其设计,其范围可以从非常简单到非常复杂。对于对称加密算法,将它们与单个密钥配对以将可读(明文)数据转换为难以理解的乱码(密文)。然后他们使用相同的密钥将密文解密回纯文本。所有这些都是以确保数据机密性和隐私性的方式完成的。看起来是不是有点拗口?但是非常地酷。
实际上,对称加密算法有几种不同的名称:
·        对称密钥算法
·        对称加密算法
·        密钥算法,以及
·        大容量密码。(稍后我们将进一步讨论批量密码。)
通常,加密的目的就是为了加密,这样唯一一个拥有密钥的人才能解密和读取秘密消息。具体的操作可以快速浏览下图:

此示例消息是使用AES 128对称加密算法加密的。这里的目的只是向你展示对称密码术的工作原理。

在上图中,从左向右移动,你将看到以纯文本可读数据开头。一旦将对称加密算法和密钥应用于该数据,它便成为无法读取的密文。解密该消息以解密其含义的方法是使用解密密钥。在对称加密的情况下,解密密钥与用于加密数据的密钥相同。基本上,你两次使用相同的密钥。 
对称加密算法实际上是做什么的?
简而言之,对称算法是密码学中的一组指令,它们使用一个密钥来加密和解密数据。这些加密算法和密钥是轻量级的,因为它们旨在提高处理大型数据块或数据流的速度。(这就是为什么对称加密算法被称为批量密码的原因。)
另一方面,非对称密钥算法和密钥是资源的消耗者。密钥需要占用大量的CPU处理资源和时间,还有电池电量以及要执行的带宽。
但是,它非常适合加密公共信道中的小批量数据。非对称密钥交换(稍后将详细讨论)是在哪些不安全的公共渠道中分发密钥的好方法。
这就是为什么人们经常使用对称加密来编码大量数据的原因。
是什么决定了对称加密算法的强度?
你是不是很快发现,并非所有对称算法都是平等创建的。它们的强度会有所不同。那么强度在密码学中到底意味着什么?简单的理解是,加密强度就是黑客破解加密以获取数据访问权的难易程度。当然,具体的答案可能会根据你评估的算法类型而异。但是,总的来说,加密强度通常可以归结为以下几个关键特征:
·        对称密钥的长度,随机性和不可预测性;
·        该算法抵抗或抵抗已知攻击的能力;
·        缺少后门或其他故意漏洞。

对称加密可能有点平衡,因为你需要算法和密钥,这些算法和密钥在计算上既困难又实用,可以以可接受的性能使用。

对称加密算法不能在公共频道中独占鳌头
尽管对称加密算法看起来像是用于所有类型的在线数据加密的最合逻辑的工具,但它并不是那么简单。对称加密也有缺点,尤其是在公共信道上单独使用时。这些弱点以密钥分发和密钥管理问题的形式出现:
·        你需要安全的连接来分发对称密钥;
·        如果你将密钥分发给很多人,那么试图与每个拥有密钥副本的人保持同步,这样可能会有难度。
在使用对称加密时,理想情况下,你和与之通信的人会提前(在将其用于任何数据交换之前)对你的密钥进行排序。这意味着,为了与他人安全地共享对称密钥,你需要亲自与他们会面以将其提供给他们。但是,如果你与要共享的另一方遍布在全国各地,该怎么办?或者,甚至在世界的另一端呢?
在目前的状态,人们每天每一刻都在与世界各地的Web服务器交换信息。这意味着人们无法提前见面分发或接收钥匙。因此,我们必须依靠其他方式与其他对接方安全地交换密钥。
这就是非对称算法(或更具体地说,是密钥交换协议)发挥作用的地方。非对称密钥交换使在不安全的公共通道中交换对称密钥成为可能。你可能意识到或还未意识到的是,你现在实际上正在使用对称和非对称加密技术的这种组合。
非对称技术使互联网上的安全对称加密成为可能
给大家看一个网站连接案例。在浏览器中看到那个挂锁图标了吗?有这个图标显示,说明你连接到的网站是安全的。

对称加密算法:长期有效的加密(上)

因此,当我们最初连接wosign.com时,我们的浏览器必须与wosign的服务器执行称为TLS握手的过程。这种握手是服务器向浏览器证明它是合法的而不是冒名顶替者的一种方式。握手过程使用非对称加密和非对称密钥交换过程。

·        非对称加密过程会验证数字签名。
·        非对称密钥交换过程会加密浏览器和Web服务器将用来创建对称会话密钥的主密钥。

当然,握手有几个版本-TLS 1.0TLS 1.2TLS 1.3-并且它们的工作方式存在特定差异。(例如,互联网工程任务组[IETF]要求严格使用TLS 1.3中的仅前向安全密码,当然这个话题我们不在这里展开讨论。)但要知道,应该至少要使用TLS1.2握手。截至202010月,Qualys SSL Labs报告称99%的站点支持TLS 1.2协议,而39.8%的站点支持TLS 1.3协议。

我们不会在这里详细介绍TLS握手的工作原理,但是我们得它涉及密码套件的使用。这些密码组合通过确定使用以下几种方式,建立安全的HTTPS连接:
·        协议(TLS
·        非对称密钥交换算法(例如Diffie-Hellman
·        批量加密密码
·        数字签名
·        哈希函数(例如SHA2-2
·        消息验证码(MAC)功能

两种对称算法(密码)

在安全地连接到网站时进行对称加密的过程中,我们通过使用批量密码来实现。批量密码有两个子类别:分组密码和流密码。
分组密码
在这种类型的密码中,明文数据分为固定长度的位组(称为块),然后将每个块作为一个单元进行加密,这会使此过程变慢。如果没有足够的数据来完全填充一个块,则使用填充(通常商定的0位数)来确保这些块满足固定长度要求。
理想的分组密码具有很大的密钥长度,这是不切实际的,因此许多现代密码必须缩减密钥的长短度才能使用。但请注意:与非对称加密不同的是,对称加密密钥的大小并不能决定数据块的大小。
大多数现代对称加密算法都属于块密码阵营,并且这些类型的密码具有更广泛的用途和应用机会。因此,我们主要在这里重点介绍它们。还有最流行或最常用的流密码是什么,接着我们来讲。
流密码
使用这种类型的密码,它一次加密一位明文数据。这样,数据将在流之中而不是像块密码那样按块进行处理。这使该过程的资源消耗更少,并且可以更快地实现。
现在,我们将不讨论分组密码和流密码的所有细节,未来几周的时间内可能会出分解分组密码和流密码的文章,到时候再来留意吧。
说到这里,可能有人觉得兴奋,有人却开始觉得复杂。使用共享密钥加密时,有几种众所周知的对称密钥算法需要知道。让我们彻底解析它们,以了解它们是什么以及它们是如何工作的。(下文见)

-END-

国密应用研究院介绍

集结密码界专家大咖针对政策解读、市场研究、技术应用等各个研究方向作出最有态度的观点输出,行业科普持续日常更新,做一个专业、智慧、有料、全面的商密应用研究传播平台。

编辑|豚BB

图片|豚BB

投稿邮箱|[email protected]