如果您曾经想知道如何确保 Internet 上的安全,特别是考虑到有几个恶意代理不断试图闯入数据保险库,那么密码学是最适合该问题的答案之一。
正如你 10 月 知道,密码学只是用于保护信息和通信的方法之一,但这并不意味着它很简单。 事实上,它是一项不断发展的技术,以确保其所依赖的标准始终处于领先地位。
这种标准的一个例子是 AES,这是您以前可能遇到过的首字母缩写词,特别是如果您经常使用 WhatsApp、Signal 或 Telegram 等通信应用程序或 VPN 软件。 在本文中,我们将重点关注 AES 并帮助您更好地理解它。
目录
什么是AES?
代表高级加密标准的 AES 是一种流行的加密形式,现在已经使用了很长一段时间,以确保数据安全可靠,远离窥探。
AES 加密在众多产品中脱颖而出的原因在于,它是一种快速、安全的加密方法,其灵活性使其可以用于各种产品,从 WhatsApp 或 Signal 等日常应用到军事安全系统甚至硬件。
加密的工作原理
您可能知道加密是如何工作的。 如果你不这样做,这里有一个快速提醒:加密采用纯文本并将其转换为加密形式,这使它看起来像是由随机字符组成的。 可以肯定地说 AES 是一种对称加密类型,因为它使用相同的密钥来加密和解密数据。
该加密标准使用替换置换网络算法(SPN 算法),以便应用多轮加密来保护数据。 它使用这么多轮的事实使 AES 几乎无法穿透。
AES 不仅是第一个也是唯一一个被 NSA(国家安全局)批准用于保护绝密数据的可公开访问的密码。 最初,这个加密标准被称为 Rijndael,基于它的两个开发者 Vincent Rijmen 和 Joan Daemen(都来自比利时)的名字。
AES 多密钥长度
AES 包括三个分组密码,每个分组密码都有不同数量的可能密钥组合,如下所示:
AES-128:128 位密钥长度 = 3.4 * 1038
AES-192:192 位密钥长度 = 6.2 * 1057
AES-256:256 位密钥长度 = 1.1 * 1077
尽管存在三种分组密码,但它们中的每一种都通过使用不同的密钥长度(即如上所述的 128、192 和 256)来加密和解密 128 个块位中的数据。 所以可以肯定地说,即使密钥的长度可以不同,块大小总是相同的(128 位或 16 字节,它们是相同的)。
AES 使用不同的密钥长度这一事实肯定会在用户中引发一些问题,例如为什么我们首先需要多个密钥长度? 其他人甚至可能质疑拥有多个密钥长度的必要性,考虑到 256 位密钥可能是最安全的密钥,更是如此。
尽管 256 位 AES 密钥只是其中最强大的一个,通常被称为“军用级”,但它并不总是默认部署,发生这种情况的原因是因为可用,或者更好然而,不可用的资源。
AES-128 与 AES-256
密钥的大小越大,消耗的资源就越多,因此可以肯定地说,功能较弱的系统更有可能使用 128 位 AES 密钥,而不是 256 位对应的密钥。 例如,如果您在手机上使用 256 位 AES 加密,它 10 月 比相同加密标准的 128 位版本更快地耗尽电池电量。
256 位 AES 密钥比 128 位密钥更难暴力破解。 然而,即使拥有巨大的计算能力,128 位 AES 密钥仍然几乎不可能破解,因此使用此版本而不是 256 位密钥 10 月 如果您担心功率或延迟,尤其是在便携式设备(例如智能手机)上,这是一个更好的选择。
从好的方面来说,技术进步使得使用 AES-256 和 AES-128 在计算能力和电池寿命方面的差异可以忽略不计,这使得 256 位 AES 成为最受欢迎的选择,因为大多数用户更喜欢和平相处头脑。
使用 AES 的好处
AES 实施的加密方法快速且易于理解,这一事实使 AES 成为各种领域的热门选择。 AES 不仅快速且安全,而且易于实施,这进一步增加了其与生俱来的流行度。
此外,它能够以尽可能快的速度解密受保护的数据,并且比其他流行的加密标准(如 DES)使用更少的内存和计算能力,这使其具有优势。
最后但同样重要的是,如果情况需要,AES 足够灵活,可以让您将其与其他几种安全协议(如 TKIP、WPA2、WEP)以及其他加密类型(如 SSL)结合使用。
以下是选择 AES 优于其他加密标准的一些主要优势:
支持在硬件和软件中实现
它支持三种密钥长度的事实为您在安全性和速度(性能)方面提供了一些灵活性
所有三种密钥类型都足够长,这使得 AES 成为不可能的暴力破解目标
到目前为止,没有任何加密攻击被证明可以对抗 AES
鉴于美国政府将其定义为标准,您几乎可以在任何地方找到它
无论目的地如何,都易于实施(据报道,硬件实施比软件更容易)
不像其他加密类型(例如 DES)那样占用尽可能多的内存
易于与其他安全协议和加密类型结合
AES 的常见用途
尽管我们已经提到 AES 通常在任何支持它的地方使用,但还是有一些例子表明遇到它的几率更高。 即:
VPN
VPN 的工作方式围绕重新路由您的流量,但不是在对其进行加密之前,以便其他人在他们监视您的连接时看不到它。 更重要的是,流量需要在其出口点进行解密,这涉及到对加密标准的需求。 默认情况下,多个 VPN 提供商使用 AES-256,包括 NordVPN、Surfshark 和 ExpressVPN。
密码管理器
密码管理器的工作方式是让您将所有密码放入其中,并通过加密方式使用单个密码保护它们。 市场上的各种密码管理软件解决方案都选择了 AES 作为其有效的加密标准,因为它易于实施、快速且安全。
无线网络
如果没有流量加密,攻击者就可以坐在您的无线网络之外,使用适当的 WiFi 适配器捕获未加密的数据包,并监控您的整个在线行踪而无需关心。 值得庆幸的是,AES 加密,通常与额外的安全标准(WPA2 是当时最流行的)一起可以防止这种情况发生。
网络浏览器
您可能已经知道一段时间以来,Web 浏览器已经加密了用户的连接,以保护他们免受各种网络威胁,例如 MITM(中间人)攻击、欺骗或流量监控。
磁盘加密
尽管此功能主要用于智能手机和平板电脑等便携式设备,但如果您想提高隐私和安全性,加密磁盘并非闻所未闻。 AES 目前是用于加密和解密磁盘内容的最流行的方法之一。
文件压缩软件
无论是我们谈论的 WinRar、WinZip 还是 7z,市场上所有这些存档和文件压缩/解压缩实用程序都使用 AES 作为其首选加密标准,以防止在处理文件时意外数据泄漏。
通讯应用
WhatsApp、Signal、Telegram、Snapchat、Messenger 以及我们未提及的其他应用程序使用 AES 加密来确保您将受益于完全的隐私,无论您是通过发送照片、视频、文档还是纯文本消息这些应用程序。
编程语言库
如果您是程序员,您可能应该知道某些编程语言的库(包括但不限于 C++、Java 和 Python)使用 AES 加密来帮助您保护您的数据和项目免受未经授权的访问。
操作系统组件
为了增加额外的安全层,一些操作系统在其某些组件中添加了 AES 加密。
AES 是如何工作的?
一般来说,您需要了解或了解特定技术的工作原理,才能充分发挥其功能的潜力。 在这种情况下,您应该先了解一下 AES 的工作原理,然后再在您的项目或环境中随意实施或使用它。
1. 数据被分成块
您可能还记得我们上面提到的,AES 是一种分组密码,这意味着它以比特块的形式对接收到的数据进行加密,而不是逐位加密。
因此,AES 加密的第一步是将数据分成块。 这些块中的每一个都包含 128 位或 16 字节的 4×4 列。 考虑到一个字节由 8 位组成,我们有 16 x 8 = 128 位,这是块的大小。
例如,假设您想使用 AES 加密“wdzwdz.com”,加密过程所做的第一件事就是将数据分成块。 但是,一个块只能包含 16 个字符,因此第一个块不会在文本末尾包含“m”。 ‘m’ 将被发送到下一个块。
因此,在将 AES 应用于“wdzwdz.com”后,本文的第一部分将如下面的块所示:
一个
C
e
s
d
吨
吨
.
d
一世
一世
C
一世
v
p
○
2.密钥扩展
密钥扩展过程比我们上面描述的步骤要复杂一点。 它涉及获取初始密钥并使用 Rijndael 的密钥计划生成一系列附加密钥,这些密钥将用于每一轮加密过程。
因此,例如,如果您在上面的纯文本 (wdzwdz.com) 上使用密钥“AESencryption12”,您将得到一串看似随机的数字。
一个
e
是的
○
乙
n
p
n
小号
C
吨
1
r
一世
2
但是,Rijndael 密钥调度使用非常特定的过程来加密初始短语中的每个符号。
结果将如下面的块所示:
7e
04
0b
20
52
6c
1c
56
a7
男朋友
8e
84
30
03
3d
20
同样,尽管它看起来像乱码和随机数,但这正是整个加密过程的重点:将数据隐藏在密码后面,使不知道密码是什么的用户无法访问它,并且无法破解它.
此外,这还远远没有结束,因为加密过程需要使用我们最近为每一轮加密生成的密钥。 但稍后会详细介绍。
3.添加轮密钥
这实际上是第一轮加密,因为我们要将初始密钥(’AES encryption12’)添加到我们的消息块(’wdzwdz.com’)中,如下例所示, 10 月 起初没有意义。
一个
C
e
s
d
吨
吨
.
d
一世
一世
C
一世
v
p
○
和
一个
e
是的
○
乙
n
p
n
小号
C
吨
1
r
一世
2
虽然感觉不可能将两个文本块添加在一起,但请记住,这只是加密过程的图形表示,以便您 10 月 更好地理解它。 实际上,AES 使用二进制代码,使我们尝试添加两个文本块不仅完全合理,而且完全有可能。
这个操作(将两个文本块相加)是通过使用 XOR 密码完成的,结果如下所示:
32
d5
5c
d9
f3
24
a8
46
7e
1c
37
f3
82
5e
3f
03
4.字节替换
为了进一步加强对数据的保护(在我们的例子中,我们试图加密的明文),该过程的这一步将根据一个称为 Rijndael S-box 的表用预定值替换块的每个字节。 你可以看到下面的表格:
00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00
63
7c
77
7b
f2
6b
6f
c5
30
01
67
2b
铁
d7
抗体
76
10
约
82
c9
7天
F A
59
47
f0
广告
d4
a2
af
9c
a4
72
c0
20
b7
fd
93
26
36
3f
f7
抄送
34
a5
e5
f1
71
d8
31
15
30
04
c7
23
c3
18
96
05
9a
07
12
80
e2
eb
27
b2
75
40
09
83
2c
1a
1b
6e
5a
a0
52
3b
d6
b3
29
e3
2f
84
50
53
d1
00
编
20
fc
b1
5b
6a
CB
是
39
4a
4c
58
参考
60
d0
英夫
啊
脸书
43
4d
33
85
45
f9
02
7f
50
3c
9f
a8
70
51
a3
40
8f
92
9天
38
f5
公元前
b6
大
21
10
ff
f3
d2
80
光盘
0c
13
欧共体
5f
97
44
17
c4
a7
7e
3d
64
5天
19
73
90
60
81
4f
直流
22
2a
90
88
46
ee
b8
14
德
5e
0b
D b
a0
e0
32
3a
0a
49
06
24
5c
c2
d3
交流
62
91
95
e4
79
b0
e7
c8
37
6天
8天
d5
4e
a9
6c
56
f4
一个
65
7a
ae
08
c0
巴
78
25
2e
1c
a6
b4
c6
e8
dd
74
1f
4b
BD
8b
8a
d0
70
3e
b5
66
48
03
f6
0e
61
35
57
b9
86
c1
1d
9e
e0
e1
f8
98
11
69
d9
8e
94
9b
1e
87
e9
ce
55
28
df
f0
8c
a1
89
0d
男朋友
e6
42
68
41
99
二维
0f
b0
54
bb
16
尽管此表也看起来像一系列随机字符,但您可以使用它来检查替换字节将具有的值。 例如,c9 将变为 dd,26 将变为 f7,ff 将变为 16,并且很快。 一旦你掌握了它的窍门,它并不难使用。
现在我们已经看到了表格,让我们看看上面第一轮加密生成的新块在基于 Rijndael S-box 的字节替换后将如何变化:
23
03
4a
35
0d
36
c2
5a
f3
9c
9a
0d
13
58
75
7b
请注意,我们实际上已经手动使用 Rijndael S-box 表替换了这些块,因此如果您有兴趣,可以仔细检查并尝试复制结果。 这样,您就更容易理解,尤其是如果您热衷于学习更多有关密码学的知识。
5. 换行
在 AES 加密过程的这一步中,行被移动以将您的数据放在额外的保护墙后面。 虽然第一行保持不变,但接下来的三行以不同的方式移动,如下所示:
第二行向左移动一个字节(单元格)
第三行向左移动两个字节(单元格)
第四行也是最后一行向左移动三个字节(单元格)
23
03
4a
35
36
c2
5a
0d
9a
0d
f3
9c
7b
13
58
75
6.列混合
虽然我们希望尽可能保持准确,但此步骤涉及将一系列复杂的数学公式应用于模块,这在程序结束时为我们提供了一个完全不同的模块。
更具体地说,在此步骤中,每列都乘以预定义的矩阵。 结果将是一个新的代码块,它将进一步用于增加密码的强度并降低它被广泛破解的几率。
在列混合过程结束时,我们将得到一个如下所示的代码块:
43
4d
33
85
c8
37
6天
8天
9a
33
85
9c
42
68
41
99
7.增加额外的回合密钥
还记得前段时间我们告诉过您,我们肯定需要我们在密钥扩展步骤中创建的密钥吗? 好吧,我们曾经用它来打乱过所有的东西,现在我们需要对刚刚获得的数据再打乱一次。
因此,我们在运行列混合步骤后获取我们获得的数据块,并为其添加另一个轮密钥,就像我们在指南中的步骤 3 中所做的那样,如下所示:
43
4d
33
85
c8
37
6天
8天
9a
33
85
9c
42
68
41
99
和
32
d5
5c
d9
f3
24
a8
46
7e
1c
37
f3
82
5e
3f
03
如您所料,此步骤将生成另一个数据块供我们处理,但我们将在此停止。 我们有一种感觉,你明白了。 然而,加密过程还远未结束,因为我们刚刚生成的数据块将经历多次修改。
8. 更多步骤
我们上面提到的这些修改包括我们迄今为止所做的一切:移动行、字节替换、添加轮键和混合列,所以很容易理解为什么我们不得不在这里停下来举例说明。
这些轮次是相同的,并且这些轮次重复的次数取决于 AES 密钥长度,如下所示:
AES-128 使用 9 轮
AES-192 使用 11 轮
AES-256 使用 13 轮
因此,如果您打算使用 AES-256,我们之前提到和解释的步骤将连续重复 13 次,您可以同意这是一个巨大的数量。 也很容易理解为什么 AES 如此难以破解并且是许多环境中的首选加密标准。
但是,我们还没有完成。 在我们上面简要讨论过的 9、11 或 13 轮加密之后,还有一个额外的轮,在此期间算法仅替换字节、移动行并添加轮密钥(它跳过混合列)。
它 10 月 听起来很荒谬,在运行 9、11 或 13 轮之后,混合柱步骤上方的所有步骤都被丢弃了。 原因是此时它有些多余,跳过这一步只是为了保留一些处理能力。
所以实际上,在运行加密过程的所有步骤之后,输入数据(我们在本例开始时使用的明文)将经历 10、12 或 14 轮,具体取决于您选择的密钥长度和看起来像一组随机字符。 并不是说它已经很久没有这样了,因为我们开始了加密过程等等。
因此,回顾一下,在进行加密时,您提供给 AES 加密工具的数据按以下顺序经历以下过程:
块划分
密钥扩展
添加轮密钥
字节替换
行移位
列混合
添加轮密钥
步骤 4-7 重复 9、11 或 13 次,具体取决于密钥长度
字节替换
行移位
添加轮密钥
在这个复杂且看似无穷无尽的过程结束时,如果使用 128 位密钥和“AESencryption12”作为我们的密钥进行加密,我们尝试加密的文本 wdzwdz.com 将如下面的代码所示:
RcadDaLDuP5fHtor3/Rfnq5EijEfhP02pvrlGkGr1Gc=
虽然它 10 月 看起来完全是胡言乱语,再一次,这就是使用加密的重点:让数据像纯文本一样简单,看起来就像在传输过程中出现了可怕的错误,现在看起来像胡言乱语。
如何解密 AES
我们知道 AES 和整个加密过程可能有点少,因为步骤繁多,而且它们会重复很长时间,这可能有点吓人。
然而,如果你退后一步看大局,整个事情实际上开始变得有意义,即使对于那些没有花费毕生精力研究密码学和设计加密或解密信息的完美方法的人来说也是如此。
这正是为什么我们非常有信心,如果加密过程及其所有步骤对您来说是有意义的,那么您将毫无困难地理解 AES 解密。 简而言之,AES 解密遵循与加密过程完全相同的步骤,只是它们被颠倒了。
因此,在我们的例子中,如果我们想从 RcadDaLDuP5fHtor3/Rfnq5EijEfhP02pvrlGkGr1Gc= 返回到“wdzwdz.com”,我们所要做的就是追溯我们的步骤,直到我们到达最初的步骤,如下所示:
逆添加轮密钥
逆行移位
反向字节替换
逆添加轮密钥
反列混合
逆行移位
反向字节替换
根据密钥长度重复步骤 4-7 9、11 或 13 次
逆添加轮密钥
执行上述所有步骤后,我们应该得到原始文本片段“wdzwdz.com”。
AES加密安全吗?
当涉及到所有加密标准(不仅是 AES)时,最紧迫的问题之一是它是否可以为您提供最佳的安全级别。 在这种情况下,问题是:AES 加密安全吗?
尽管您可以亲眼看到该加密标准部署了大量步骤,每个步骤都会扰乱原始文本并将其扭曲得面目全非,但这似乎并没有阻止攻击者设计潜在的方法来规避这些保护手段。
请注意,在现实生活中,攻击者(通常称为黑客或破解者)在尝试入侵您的 PC、数据库、存档或任何您的虚拟堡垒时不会追求最高、最厚的墙。 ‘正在努力保护。
相反,他们会绕着众所周知的墙壁转几圈,试图找到任何值得挖掘的裂缝,然后开始在那里钻孔。 在我们的情况下,攻击者 10 月 希望发现 AES 加密过程中的任何漏洞并从那里开始工作。
值得庆幸的是,密码学研究人员不断尝试发现 AES 加密过程的漏洞,以便能够防止来自首先发现漏洞并且(显然)不与全世界共享漏洞的人的潜在攻击。
到目前为止,研究人员已经能够识别出一系列可能危及 AES 的攻击,但这些攻击要么是纯粹的理论侧信道攻击,要么是使用已知安全密钥的破解尝试,您很快就会从以下内容中了解到部分。
1. 已知密钥识别攻击
密码学研究人员设计了一种使用已知密钥的攻击,并在行动中进行了观察,并显示出一些有希望的结果。 该攻击由 Vincent Rijmen 和 Lars Knudsen 于 2007 年引入。
虽然这对于 AES 加密方法来说并不是很好,但这种攻击有两个缺陷,使其不太可能在现实生活中使用:它使用了一个已知密钥,以及它针对七轮版本进行了测试AES-128。
考虑到大多数时候攻击者不知道密钥(除非他们碰巧偶然发现了它并提供了有关其目的的精确说明),并且 AES-128 有 10 轮加密,因此每天 AES-128 可以放心攻击不太可能发生。
大多数提供 AES-128 的服务还具有对 AES-256 的本机支持这一事实意味着,如果您担心成为已知密钥区分攻击的目标,那么增强您的加密将再容易不过了。
2.相关密钥攻击
相关密钥攻击更像是一个类别,因为它们代表了所有形式的密码分析,攻击者可以在其中分析密码在多个密钥下的工作方式。 在这种类型的攻击中,攻击者不知道密码中使用的密钥的值。
然而,虽然未知,但密钥之间也存在某种数学关系,攻击者确实知道这一点。 最简单的例子之一是攻击者知道密钥的前 16 位始终相同,但不知道这些位实际上是什么。
尽管如果应用正确,相关的关键攻击可能会成功,但它们在现实世界中并不重要。 为了使这种攻击起作用,攻击者需要成功说服密码学家使用数学上相互连接的各种密钥对数据进行加密,然后与攻击者共享秘密。
因此,这种类型的攻击服务器只是提醒人们,人为错误可能会导致 AES 盔甲中的一些扭结,因为该加密标准的实施不力。
3. 侧信道攻击
尽管 AES 目前几乎是不可破解的,但已经有许多尝试设计理论攻击来证明该加密标准的一些漏洞。
即使 AES 推出已经 20 年了,技术在过去 20 年中取得了一些巨大的进步,但暴力破解 AES 所需的计算能力仍然不够,我们仍然需要数十亿年能够破解它。
但是,破坏 AES 加密安全性的另一种尝试是旁道攻击。 这种类型的攻击结合了多种类型的数据泄漏,以从算法中提取足够的数据以供破解。
例如,攻击者可以关注功耗、电磁辐射、执行各种计算所需的时间,甚至是计算过程中产生的声音,以提取有关算法的更多信息。
有几类侧信道,包括:
定时攻击
计时攻击围绕测量执行某些计算所需的时间(例如将已知密码与未知密码进行比较)。
缓存攻击
这些攻击只有在攻击者可以在各种环境中访问受害者的一些缓存时才可行,无论是虚拟化环境(虚拟机)、共享物理系统还是我们正在谈论的云服务。
电磁攻击
电磁攻击基于电磁辐射泄漏,可用于提取各种信息。 测量电磁辐射泄漏有时会导致发现加密密钥。
电源监控攻击
攻击者在某些计算步骤期间监控硬件的功耗,以提取有关算法的信息。
声学密码术
类似于电源监控攻击,但攻击者在执行某些计算步骤时会聆听并分析硬件发出的声音,并从这些发现中提取信息。
数据剩磁
这种类型的攻击围绕着敏感数据,即使在被删除后仍然可以访问和读取。
光学分析
在这种复杂类型的攻击中,高分辨率摄像头用于捕获机密或敏感数据(例如分析硬盘活动指标或晶体管开关状态)。
微分故障分析
这种类型的攻击基于通过在计算中输入错误以触发错误来发现秘密。
尽管您可以同意这些旁道非常有创意,并且它们的作者可以使用它们将即使是最看似微不足道的细节变成真正的信息,但它们只有在被审计的系统泄漏信息时才有效。
出于这个原因,通过确保可能被攻击的系统不泄漏任何数据或确保算法过程和泄漏数据之间没有关联,无论其性质如何,都可以轻松避免侧信道攻击。
4. 密钥恢复攻击
最后但并非最不重要的一点是,在破解 AES 加密的有效方法方面,密钥恢复攻击是一个艰难的竞争者。 2011 年,这种攻击试图证明其对 AES 加密机制的有效性。
这种类型的攻击不太可能发生,因为它涉及攻击者从即将受到攻击的系统中获取至少一对加密和解密的消息。
该攻击显示出可喜的结果,因为它的速度大约是暴力破解的四倍。 然而,考虑到暴力攻击实际上需要数十亿年才能完成,密钥恢复攻击仍然远非理想,这使得它们不太可能用于攻击。
此外,即使需要更短的时间来完成,更改安全密钥通常也会使这对加密和解密的消息变得无用。
AES 安全吗?
考虑到您通过本指南学到的所有内容,我们认为您可以判断 AES 是否是安全的加密标准。
AES 自 2001 年以来一直存在,自推出以来,已经有无数次尝试破解它,这可以肯定地说它经受住了时间的考验,在加密算法方面它仍然是一个可靠的选择。
为了使数据不可读,算法过程所经历的大量步骤是巨大的,即使在今天的计算能力和技术进步的情况下,破解 AES 也需要数十亿年的时间。
因此,考虑到上述所有因素,回答您的问题:是的,AES 是安全的。 甚至 AES-128 也被证明是完全不可能破解的,更不用说它更强大的对应物 AES-192 和 AES-256。
AES 加密 – 结论
考虑到所有因素,在阅读了我们广泛的指南后,我们希望您了解更多关于 AES 的信息,包括它的工作原理、加密过程中经历的过程、可以在哪里使用以及它如何(在理论上)受到损害.
在推出 20 年后,它仍然快速、安全,并且可以在各种硬件和软件环境上实施,这一事实使其真正配得上加密技术“黄金标准”的称号。