加密:最常见的算法

在加密中:它是什么以及它是如何工作的? 我们承诺了单字母替换密码的解决方案。见下文:
a b c d e f g h i j k l m n o p q r s t u v w x y z
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
i z s g k b x j f e r t u q a w o h m y n c v l d p
密文: itt vahr iqg qa wtid uirkm eisr i gntt zad
明文:全是工作,不玩耍,让杰克成为一个沉闷的男孩
在这篇博客中,我们将介绍一些众所周知的对称加密算法。对称算法类是指所涉及的每一方都必须访问相同的密钥,因此它们关于密钥的信息是相同或对称的。在我们的下一篇博客中,我们将介绍非对称算法,其中所有参与者之间有关密钥的信息并不相同。让我们首先研究一个众所周知的,但现在大部分已停用的对称算法:des。
数据加密标准 (des) 是由 ibm 开发并于 1977 年标准化的对称加密算法。尽管它已被aes取代(我们将在下面进行研究),但des的设计选择为关键空间问题提供了一个极好的真实示例。虽然对这些算法如何工作的完整描述远远超出了本文的范围,但让我们看一下它们设计中举例说明对称加密算法重要属性的部分。
des 算法在 64 位输入数据块上运行,并通过称为 feistel 网络的结构处理每个块(如右图所示)。由于该算法在 64 位块的固定大小输入上运行,我们稍后需要引入不同的操作模式:将较大的输入拆分为块并组合输出以形成最终密文的方法。正如我们将看到的,它并不像简单地连接对应于每个块的 64 位密文那么简单!
明文输入首先是排列的,但由于排列是固定的并且是公开的,因此它不会为设计增加安全性——它只是为了减慢缺乏算法硬件实现的对手的速度。需要注意的是,现代加密算法的安全性不依赖于算法任何部分的保密性。相反,只有密钥被假定为对手不知道。现代密码设计中的这一重要概念被称为kerckhoffs原理。
然后将数据拆分为左 (l0) 和右 (r0) 的一半,右半部分与子键 k1(通过算法从主键派生)组合。右半部分和子键通过函数“f”组合在一起,以红色突出显示。
f被称为feistel函数,是使des成为一个难题的重要组成部分。有趣的是,我们将看到,与本文开头的一般难题示例 f(x) 不同,des 中的 feistel 函数 f 实际上不是可逆的!相反,可逆性属性(使用 des 解密的能力)来自 feistel 网络结构:使用密文块和子密钥以相反的顺序运行网络会产生原始明文。
feistel 函数 f(如下图所示)的结构是通过扩展和独占 or 运算符将正确的 32 位数据与子键 k 组合在一起来操作的。然后将此组合结果分成 8 个 6 位块,每个块通过替换盒或“s-box”。这些 s 盒中的每一个都实现了众所周知的非线性转换,将 6 位输入映射到 4 位输出。选择这些映射中的每一个对于des的安全性至关重要,在标准化之前,nsa用自己的映射替换了原始映射。当时被广泛认为是恶意的,后来发现nsa的映射可以抵抗一种(当时公开未知的)称为差分密码分析的攻击。
不幸的是,并非所有国家安全局对des的贡献都是无私的。最初的设计要求使用64位密钥,这在1970年代的安全性绰绰有余。然而,nsa强烈主张使用更弱的48位密钥,该标准最终确定为56位。当时的公开理由是使用每个字节的一个位作为奇偶校验位(导致只有 64 个有意义位的“56 位”密钥)来验证 des 密钥是否“有效”。当然,尝试使用错误的密钥解密将达到相同的目标。如今,56 位 des 密钥不提供安全性,因此不应使用 des 算法。相反,对称加密算法应该至少使用128位密钥,这是我们研究的下一个算法满足的属性:高级加密标准aes。
aes
1997年,美国国家标准与技术研究院(nist)宣布了一项开发高级加密标准(aes)的竞赛,这是一种将取代des的对称加密算法。2001年,rijndael算法(比利时设计师vincent rijmen和joan daemen的姓氏组合)被选为获胜者,并被标准化为aes。它定义为 128、192 和 256 位的密钥大小,远大于 des 使用的 56 位密钥。
aes 算法使用替换-置换网络,该网络类似于 des 使用的 feistel 网络,但不同之处在于替换盒 (s-box) 是可逆的。aes执行四个基本操作:
添加圆键
为了混合密钥材料,从主密钥派生一个子密钥以形成 aes 圆形密钥。状态数组 s 初始化为 128 位明文输入块,并通过 exclusive-or 与 round 键的单词 w 组合以形成更新的状态。
子字节
与 des 类似,状态随后通过非线性 s 盒进行转换,在 aes 中,s-box 以可逆的方式将字节映射到字节。根据 kerckhoffs 原理,这种转换和 aes 算法的整个描述是众所周知的。
移位行
此步骤在当前状态下循环移动最后三行。此操作与 mixcolumns 操作一起提供扩散:在整个生成的密文输出中传播明文输入中的微小变化。这种“雪崩效应”可以防止攻击者知道明文-密文对的攻击:多次扩散操作,加上每次迭代中添加圆形密钥的混乱,使得即使知道明文和密文也难以恢复密钥。
混合列
最终操作将信息混合在一列中,从而提供进一步的扩散效果。
然后,根据所选的密钥大小,对这些操作组进行多次迭代。
我们已经看到,des 和 aes 都是分别处理 64 位和 128 位明文块的对称加密算法。


【回顾往年CES】这款“袖珍”机器人竟拿下了当年CES两项大奖!
佳能LEGRIA HF R86 DV究竟好在哪?不仅仅是超强续航
美国空军选用PTC服务备件管理解决方案优化其供应链
斐纳TOMEFON:高智能化程度的扫地机器人
米尔科技Cortex-A5核心板 概述
加密:最常见的算法
Globalfoundries纽约州巨资建晶圆厂 预计201
近场天线测试系统解决大型暗室测试难题
2023 ARC处理器技术论坛,共话智能网联汽车未来
Microchip推出全新3相无刷直流电机栅极驱动器
杀出智能停车四道重围 安防企业方能“笑傲江湖”
泰科天润与湖南大学将进一步加强技术交流合作
一文读懂什么是人工智能机器人
硕盟HDMI转VGA转接线/适配器的简介
特斯拉推出“停车保镖”功能,可监控汽车周边
四维智联AR智能导航系统,助力安全出行升级
变频器控制线怎么接线?变频器接线方法图解
4G模块,可以脚本编程的模块--支持断线重连
当诗人遇到熟读2600亿中文参数的大模型
写给小白的芯片半导体科普:传感器为什么不是集成电路?