密码 | 对称加密 | AES

一、AES 算法简介

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准,用来替换原先的 DES.
背景介绍:1997年1月2号,美国国家标准技术研究所(National Institute of Standards and Technology: NIST)宣布希望征集高级加密标准(Advanced Encryption Standard: AES),用以取代DES。AES得到了全世界很多密码工作者的响应,先后有很多人提交了自己设计的算法。最终有5个候选算法进入最后一轮:RijndaelSerpentTwofishRC6和MARS。最终经过安全性分析、软硬件性能评估等严格的步骤,Rijndael算法获胜。

AES 算法的区块长度固定为128位(16 字节),密钥长度则可为128位,192位,256位。加密模式可采用 ECB,CBC,CTR,OFB,CFB 等模式进行加密。
其中 ECB 与 CBC 模式是对数据原文做加密处理,原文长度的必须为 16 或 16 的倍数方可加密成功,不足16倍数的部分则需进行 Padding 处理(Padding 方式为 PKCS5 Padding 或 PKCS7 Padding)。
CTR,OFB,CFB 模式则是对待加密数据的 IV 做加密处理,原文长度不需为 16 或 16 的倍数,原文长度与密文长度相等。
AES 属于对称加密即加密密钥与解密密钥是相同的,加密速度快。

二、AES 加密原理

AES 是分组密码技术,将明文进行分组加密,每组为固定128位(16字节)区块长度,不足 128 位的部分需采用补位方式,将其补全成为 128 位数据后进行加密。AES密钥区块长度可为 128位,192位,256位区块长度,加密过程中采用 Rijndael 提出的特定的密钥生成方案。

AES 128 10轮
AES 191 12轮
AES 256 14轮

加解密步骤:
AES 加密分为 4步。

  • SubBytes(),ShiftRows(),MixColumns(),AddRoundKey()。
    AES 解密分为 4步。
  • 逆向 MixColumn 子层, 逆向 ShiftRow 子层, 逆向 SubBytes 层,逆向 AddRoundKey()。
image

SubBytes()

字节替换,AES 定义了一个 16(0~F) * 16(0~F) 字节的 S 盒(S-Box),将输入的数据 16 byte(4 * 4) 按照 S 盒的内容进行依次替换。例如数据为0x31,则需找到 S-Box 中横坐标为 3 纵坐标为 1 的值,进行替换操作。

ShiftRows()

ShiftRows 行位移变换是状态数组的第一行保持不变,第二行循环左移一个字节,第三行循环左移两个字节,第四行循环左移三个字节。行移位变换的目的就是增加 AES 的扩展属性。

MixColumns()

MixColumns 列混淆变换是一个线性变换,混淆了状态矩阵的每一列。列混淆变换中,每输入的一个字节均影响了 4 个输出字节,MixColumn 操作是 AES 中的主要扩散元素。ShiftRows() 和 MixColumns() 组合操作使得三轮以后,状态矩阵的每个字节都依赖于所有 16 个明文字节成为可能。

AddRoundKey()

密钥加法层是将 16 字节的当前状态矩阵和 16 字节的子密钥通过按位 XOR 操作结合在一起的。

三、AES 模式说明

分组密码算法(DES,AES,SM4等)只能加密固定长度的分组,当待加密明文数据长度都超过分组密码长度时,就需要对分组密码算法进行迭代,将明文数据进行加密,迭代的方法称为分组密码的模式

ECB 模式

ECB 模式全称为电子密码本模式,ECB 模式中,将明文分组加密之后的结果直接拼接成密文分组。
ECB 模式中相同的明文分组会被转换成为相同的密文分组。
计算支持并行计算(加密,解密)。

ECB 模式存在非常大的风险,攻击者不需要破译密码就可以操作明文。
分组1:卡号A
分组2:金额1
分组3:卡号B
交易信息为卡号A 向卡号B 转账 金额1,攻击者将分组信息对调成 卡号B 向卡号A 转账 金额1,攻击者无需解析密文,就能更改交易信息,显然是存在风险的。

image

CBC 模式

CBC 模式全称为密码分组链接模式,CBC 模式中加密过程引入初始化向量 IV,第一包数据与初始化向量 IV 做异或操作后进行加密,接下来将明文分组与前一个密文分组进行 异或操作后在进行加密。
计算支持并行计算(仅解密)。


image

CFB 模式

CFB 模式为密文反馈模式,在 CFB 模式中,明文分组并没有直接进行加密,第一包数据将初始化向量加密,密文值与明文分组进行异或操作,接下来依次将每次异或得到的结果进行加密得到数据密文。
计算支持并行计算(仅解密),可以解密任意分组。


image

OFB 模式

OFB 模式为输出反馈模式,OFB 模式中,密码算法的输出会反馈到密码算法的输入中。OFB 模式中,XOR 所需要的比特序列可以事先通过密码算法生成,和明文分组无关。只要提前准备好所需的密钥流,则在实际从明文生成密文的过程中,就不需要动态密码算法了。
计算不支持并行计算(加密,解密)。


image

CTR 模式

CTR 模式为计数器模式,CTR 模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。CTR 模式中,每个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生成密钥流。最终的密文分组是通过将计数器加密得到的比特序列,与明文分组进行异或得到。CTR 模式可以以任意顺序对分组进行加解密,在加解密时需要用到的 “计数器” 的值可以由分组序号直接计算出来,可以实现并行计算,支持并行计算的系统中,CTR 模式的速度非常快。CFB,OFB 模式均推荐使用 CTR 模式代替。
支持并行计算(加密,解密)。


image

四、参考

参考链接:
https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf
http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
https://bbs.pediy.com/thread-253884.htm

参考书籍:
《深入浅出密码学》
《图解密码技术》

参考代码:
LGPL-AES:https://tls.mbed.org/source-code

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359

推荐阅读更多精彩内容