在网络安全方面,AES是您到处都可以看到的首字母缩写词之一。那是因为它已成为加密的全球标准,并且用于确保我们大量通信的安全.
先进的加密标准 (AES) 是一种快速,安全的加密形式,可让您不遗余力地查看我们的数据。我们在诸如 WhatsApp的 和 信号, 像这样的程序 VeraCrypt 和 WinZip, 我们一直使用的一系列硬件和各种其他技术.
为何开发AES?
最早的加密类型很简单, 使用诸如将句子中的每个字母更改为字母表中紧随其后的字母的技术。在这种代码下,前面的句子变成:
如您所见,此简单代码使它完全不可读。尽管最初不可读,但是如果您有时间知道它是一个代码,而不仅仅是在页面上喷出一堆字符,那么最终弄清楚它不会太难.
随着人们越来越擅长破解密码, 加密必须变得更加复杂 所以这样 消息可能是 保密. 这场军备竞赛提出了越来越复杂的方法,而其他人则投入了很多精力来打破它们,导致技术越来越复杂, 例如德国人在一战中发明的Enigma机器.
电子通信的兴起也为加密带来了福音。在1970年代, 美国国家标准局(NBS) 开始寻找可用于加密敏感政府信息的标准方法。他们搜索的结果是采用了IBM开发的对称密钥算法,该算法现在称为 数据加密标准(DES). 在接下来的几十年中,DES达到了相对较好的目的,但是在90年代,一些安全问题开始出现.
DES只有一个 56位密钥 (与 AES中最大256位, 但我们稍后再讨论),因此随着技术和破解方法的改进,针对它的攻击开始变得更加实际。第一个被DES加密的消息是在1997年由DESCHALL项目在 RSA安全发起的竞争.
第二年,电子前沿基金会(EFF)建造了一个DES破解器,可以在短短两天内强行破解密钥。在1999年, 联邦军 和互联网的第一个计算机集体, 分布式网络, 合作使时间减少到24小时以下.
尽管这些攻击代价高昂且不切实际,但它们开始表明DES成为主流加密标准的时代即将结束。具有计算能力 呈指数增长 根据 摩尔定律, 直到不再依赖DES只是时间问题.
美国政府启动了一项为期五年的任务,评估各种不同的加密方法,以便找到安全的新标准。的 美国国家标准技术研究院(NIST) 宣布终于在2001年下半年做出选择.
他们的选择是Rijndael块密码的特定子集,其固定块大小为128位,密钥大小为128、192和256位。它是由比利时的两位密码学家Joan Daemen和Vincent Rijmen开发的。 2002年5月,AES被批准成为 美国联邦标准 并很快成为世界其他地区的标准加密算法.
有关: 密码学新手指南
为什么选择此密码用于AES?
使用任何类型的加密,总会有权衡取舍。您可以轻松地拥有一个比AES指数安全得多的标准,但是加密和解密花费的时间太长,无法实际使用。最后, Rijndael分组密码由NIST选择 对于 全面的能力, 包括其在硬件和软件上的性能,易于实施和其安全级别.
AES如何工作?
请注意,以下示例只是一个简化,但它使您对AES的工作原理有一个大致的了解。不幸的是,世界上没有足够的咖啡来使大多数人想了解AES的更复杂方面。通常情况下,该过程以二进制形式执行,并且会有很多数学运算.
首先,将数据分为多个块.
在这种加密方法下,发生的第一件事是将您的纯文本(这是您要加密的信息)分成多个块。 AES的块大小为128位,因此它将数据分成16字节的四乘四列(一个字节中有八位,并且16 x 8 = 128).
如果您的信息是“请给我买一些薯片”,则第一个步骤如下:
b | 米 | Ø | p |
ü | Ë | 米 | Ø |
ÿ | Ë | Ť | |
s | 一种 |
在此示例中,我们将跳过其余消息,仅关注加密后的第一个块所发生的情况。通常将“…请芯片”添加到下一个块中.
密钥扩展
密钥扩展包括获取初始密钥,并使用它为加密过程的每一轮提供一系列其他密钥。这些新的128位循环密钥是根据Rijndael的密钥计划派生而来的,这实质上是产生新密钥密码的一种简单快捷的方法。如果初始密钥为“ keys are boring1”:
ķ | 一世 | ||
Ë | 一种 | b | ñ |
ÿ | [R | Ø | G |
s | Ë | [R | 1个 |
然后,一旦使用了Rijndael的密钥时间表,每个新密钥都可能看起来像这样:
14 | 29 | 1小时 | s5 |
9天 | 9楼 | ST | 9楼 |
gt | 2小时 | 总部 | 73 |
ks | dj | df | 血红蛋白 |
尽管它们看起来像是随机字符(上面的示例只是组成部分),但是当实际应用AES加密时,每个密钥都是从结构化过程派生的。我们将回到稍后使用这些圆形键的内容.
添加回合密钥
在此步骤中,因为它是第一轮,所以我们的初始密钥被添加到了消息块中:
b | 米 | Ø | p |
ü | Ë | 米 | Ø |
ÿ | Ë | Ť | |
s | 一种 |
+
ķ | 一世 | ||
Ë | 一种 | b | ñ |
ÿ | [R | Ø | G |
s | Ë | [R | 1个 |
这是通过XOR密码完成的,XOR密码是附加加密算法。虽然看起来您实际上无法将这些内容加在一起,但请注意,它实际上是用二进制完成的。角色只是尝试使事物更容易理解的替代物。假设此数学运算为我们提供了以下结果:
3小时 | d | zu | 7秒 |
s8 | 7天 | 26 | 2n |
dj | 4b | 9天 | 9c |
74 | 埃尔 | 2小时 | 汞 |
替代字节
在该步骤中,根据预定表替换每个字节。这有点像文章开头的示例,在该示例中,通过将每个字母更改为字母后面的字母来对句子进行编码(你好 变成 ifmmp).
这个系统稍微复杂一点,不一定有任何逻辑。取而代之的是,该算法可以查找一个已建立的表,例如,该表 3小时 变成 b, s8 变成 9楼, dj 变成 62 等等。完成此步骤后,假设预先确定的表格为我们提供了:
b | n3 | f | n2 |
9楼 | j | 1小时 | js |
74 | WH | 0天 | 18岁 |
s | 17 | 6天 | 像素 |
排行
Shift行是一个简单易懂的名称,实际上,这是您所期望的。第二行向左移动一个空格,第三行向左移动两个空格,第四行向左移动三个空格。这给了我们:
b | n3 | f | n2 |
j | 1小时 | js | 9楼 |
0天 | 18岁 | 74 | WH |
像素 | s | 17 | 6天 |
混合列
这一步很难解释。为了简化大部分数学运算并简化运算,我们只说每一列都应用了一个数学方程式,以便进一步扩散它。假设该操作为我们提供了以下结果:
ls | 44 | 2n | 嘛 |
83 | 28 | ke | 9楼 |
9w | m | 3升 | m4 |
5b | a9 | cj | ps |
再次添加圆键
还记得我们在开始时使用初始密钥和Rijndael的密钥时间表创建的那些圆形密钥吗?好了,这就是我们开始使用它们的地方。我们采用混合列的结果,并添加派生的第一个回合键:
ls | 44 | 2n | 嘛 |
83 | 28 | ke | 9楼 |
9w | m | 3升 | m4 |
5b | a9 | cj | ps |
+
14 | 29 | 1小时 | s5 |
9天 | 9楼 | ST | 9楼 |
gt | 2小时 | 总部 | 73 |
ks | dj | df | 血红蛋白 |
假设此操作为我们提供了以下结果:
9天 | 5b | 28 | 科幻 |
ls | df | 高频 | 3b |
9吨 | 28 | 生命值 | 8楼 |
62 | 7天 | 15 | 啊 |
更多回合…
如果您以为是这样,我们甚至都没有接近。添加最后一个回合密钥后,它返回到字节替换阶段,在该阶段,每个值都根据预定表进行了更改。完成此操作后,将返回到移动行并将每行向左移动一,两个或三个空格的位置。然后,它再次通过混合列方程。之后,添加另一个回合密钥.
它也不止于此。一开始,有人提到 AES的密钥大小为128位,192位或256位. 使用128位密钥时,这些回合中有九个回合。如果使用192位密钥,则为11。当使用256位密钥,则为13。因此,数据通过字节替换,移位行,混合列和舍入密钥步长各达到13次,在每个阶段都在改变.
在这9、11或13轮之后,还有另一轮,其中仅通过字节替换,移位行和添加轮关键步骤来处理数据,但是 不 混合列步骤。删除了混合列步骤,因为在此阶段,它只会消耗处理能力而不改变数据,这会使加密方法的效率降低.
为了使事情更清楚,整个AES加密过程如下:
密钥扩展
添加回合密钥
字节替换
排行
混合列
添加回合密钥
x 9、11或13次,具体取决于密钥是128位,192位还是256位
字节替换
排行
添加回合密钥
数据经过这个复杂的过程后,您的原始 “请给我买一些薯片” 出来看起来像 “ ok23b8a0i3j 293uivnfqf98vs87a”. 它看起来像是一个完全随机的字符串,但是从这些示例中可以看出,它实际上是多次不同的数学运算一次又一次地应用到它的结果。.
这些步骤的重点是什么?
加密我们的数据会发生很多事情,因此了解原因很重要。键 扩张至关重要 步骤,因为它为我们在以后的回合中提供了密钥。否则,将在每个回合中添加相同的密钥,这将使AES易于破解。在第一轮中,添加了初始键,以便开始更改纯文本.
的 字节替换步骤, 其中每个数据点根据预定表进行更改, 也起着至关重要的作用. 它以非线性方式更改数据,以使信息混淆。混淆是有助于隐藏加密数据和原始消息之间关系的过程.
排班也很重要, 执行所谓的扩散。在密码术中,扩散本质上是指转置数据以增加复杂性。通过移动行,数据从其原始位置移动,从而进一步帮助掩盖数据. 混合列 行为类似,垂直而不是水平地更改数据.
在回合结束时,将添加从初始密钥派生的新回合密钥。这给数据增加了更大的混乱.
为什么这么多回合?
的过程 添加圆键, 字节替换, 移行 和 混合塔 更改数据,但仍然可以通过密码分析来破解,这是研究密码算法以破坏密码的一种方法.
捷径攻击 是其中之一 关键威胁. 这些攻击可以比暴力破解更轻松地破解加密。在设计AES时,发现长达六轮的过程都遭受了快捷攻击。因此,至少要增加四轮 128位AES作为安全裕度. 最终的10发回合为加密方法留出了足够的余地,以防止在当今技术条件下进行快捷攻击.
我们为什么不增加更多回合以增强安全性?
对于大多数安全问题,需要 纯粹的防御力量,可用性和性能之间的折衷. 如果您在房屋的每个入口处都放置十个带有门闩的钢制门,那肯定会使其更安全。进出也要花费不合理的时间,这就是为什么我们从未见过有人这样做的原因.
加密是一样的。我们可以通过增加回合数来提高安全性,但它也会更慢且效率更低. 已经确定了10、12和14轮AES,因为它们提供了很好的折衷方案 在这些竞争方面之间,至少在当前的技术环境中.
解密AES
如果您设法解决上述加密过程,解密就相对简单了。为了从密文返回到原始消息的纯文本,所有步骤都是相反的.
如果我们从加密结果开始 “ ok23b8a0i3j 293uivnfqf98vs87a” 和 应用每个加密步骤的逆过程, 它以反向回合键开始,然后是反向移位行和反向字节替换,然后进入9、11或13回合的反向. 看起来像这样:
“ ok23b8a0i3j 293uivnfqf98vs87a”
反向加回车键
倒排行
逆字节替换
反向加回车键
逆混合柱
倒排行
逆字节替换
x 9、11或13次,具体取决于密钥是128,192还是256位
反向加回车键
经过解密过程后,我们再次得到原始消息: “请给我买一些薯片”
128与192与256位AES
AES具有三种不同的密钥长度。主要区别在于数据在加密过程中经过的回合数分别为10、12和14。在本质上, 192位 和 256位 提供一个 安全余量更大 比 128位.
在当前的技术形势下, 128位AES 足以满足大多数实际目的。由具有极高威胁级别的人员处理的高度敏感的数据,例如 最高机密文件 由军方控制,应该用 192 要么 256位AES.
如果您偏执狂,则可能更喜欢使用 192 要么 256位 尽可能进行加密。如果可以使您晚上更容易入睡,这很好,但是实际上在大多数情况下都没有必要。这也不是没有代价的,另外四轮 256位加密 使效率降低约40%.
AES安全性问题
密码学家一直在探索AES的弱点,试图提出新技术并利用他们所采用的技术。这是必不可少的,因为如果没有经过学者的全面测试,那么犯罪分子或民族国家最终可能会找到一种方法来破解它,而全世界都不会知道。到目前为止,研究人员仅发现了理论突破和侧通道攻击.
相关密钥攻击
2009年,发现了一系列相关的密钥攻击。这些是一种密码分析,涉及观察密码在不同密钥下的工作方式。研究人员发现的相关密钥攻击并没有太大的问题。它们只能针对未正确实施的协议.
已知密钥区分攻击
再次在2009年,发生了针对八轮版本AES-128的已知密钥区分攻击。这些攻击使用已知的密钥来找出密码的固有结构。由于此攻击仅针对八发版本,因此对于AES-128的日常用户而言,不必担心太多.
旁道攻击
还有其他一些理论上的攻击,但是在当前技术下,它们仍然需要数十亿年才能破解。这意味着 AES本身目前基本上是坚不可摧的. 尽管如此,如果未正确实施AES,仍然可能会受到攻击,这就是所谓的旁道攻击.
旁道攻击 系统泄漏信息时发生。攻击者侦听声音,定时信息,电磁信息或功耗,以便从算法中收集推论,然后将其用于破解.
如果认真实施了AES,则可以通过删除数据泄漏源或确保泄漏数据与算法过程之间没有明显的关系来防止这些攻击。.
最后一个弱点是比AES特定的更普遍,但是用户需要意识到AES不会自动使数据安全. 如果攻击者可以访问用户的密钥,则即使AES-256也容易受到攻击. 这就是为什么AES只是保持数据安全的一个方面的原因。有效的密码管理,防火墙,病毒检测和抵御社会工程学攻击的教育本身也至关重要.
AES是否足够?
在当今时代,我们所有人都在线传输大量敏感数据, AES已成为我们安全的重要组成部分. 尽管它自2001年以来就存在,但是它重复添加密钥,字节替换,移动行和混合列的过程经得起时间的考验.
尽管有当前的理论攻击和任何潜在的旁道攻击, AES本身仍然安全. 这是确保我们电子通讯安全的极好的标准,可用于需要保护敏感信息的许多情况。从当前的技术水平和攻击技术来看, 您应该对使用它充满信心 在可预见的将来.
为什么我们需要加密?
现在,我们已经了解了AES的技术细节,重要的是讨论为什么加密很重要。在最基本的级别上,加密使我们可以对信息进行编码,以便只有那些有权访问密钥的人才能解密数据。没有钥匙,看起来就像胡言乱语。有了钥匙,看似随机的字符杂乱无章又变成了原始信息.
加密已被政府和军队使用了数千年 以防止敏感信息落入不法之徒。多年来,它越来越多地渗透到日常生活中,尤其是因为我们的个人,社交和工作交易中有很大一部分现已迁移到在线世界.
想想所有的 您输入到设备中的数据: 密码,银行详细信息, 您的 私人信息 以及更多。没有任何类型的加密,无论是罪犯,疯狂的跟踪者还是政府,任何人都可以轻松地窃取此信息.
这么多 我们的信息有价值或敏感, 因此很明显,它需要以某种方式受到保护,以便只有我们自己和我们授权的人才能访问它. 这就是为什么我们需要加密. 没有它,在线世界将无法运行。我们将被完全剥夺任何隐私和安全性,使我们的在线生活陷入混乱.
也可以看看:
密码生成器工具
加密资源:大量工具和指南
历史上著名的密码和密码
网络安全统计 & 事实
“黑客,网络犯罪” 由jaydeep_授权使用 CC0
在网络安全方面,AES是一种广泛使用的加密标准,用于确保我们的通信安全。AES是一种快速、安全的加密形式,可用于各种程序和技术,如WhatsApp、信号、VeraCrypt和WinZip等。AES的开发是为了应对加密技术的不断发展和密码破解的挑战。AES使用Rijndael分组密码,将数据分成多个块,并使用密钥扩展和回合密钥等步骤进行加密。虽然AES已成为全球标准,但仍存在安全性问题,如相关密钥攻击、已知密钥区分攻击和旁道攻击等。因此,我们需要不断改进加密技术,以保护我们的通信和数据安全。