赞
踩
1、AES 简介
高级加密标准 (AES,Advanced Encryption Standard),AES 加密算法涉及 4 种操作:
字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。
下图给出了 AES 加解密的流程:
从图中可以看出:
1)解密算法的每一步分别对应加密算法的逆操作;
2)加解密所有操作的顺序正好是相反的。
正是由于这几点(再加上加密算法与解密算法每步的操作互逆)保证了算法的正确性。
加解密中每轮的密钥分别由种子密钥经过密钥扩展算法得到,算法中 16 字节的明文、密文和轮子密钥都以一个 4x4 的矩阵表示。
AES 为最常见的对称加密算法,其中微信小程序加密传输就是用的 AES 加密算法。
对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:
各个部分的作用与意义:
1)明文 P
未加密的原始数据;
2)密钥 K
用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。
密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则有密钥泄漏的风险,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面协商密钥。
3)AES 加密
设 AES 加密函数为 E,则 C = E(K, P),其中 P 为明文,K 为密钥,C 为密文。
也就是说,把明文 P 和密钥 K 作为加密函数的参数输入,则加密函数 E 会输出密文 C。
4)密文 C
经加密函数处理后的数据。
5)AES 解密
设 AES 解密函数为 D,则 P = D(K, C),其中 C 为密文,K 为密钥,P 为明文。
也就是说,把密文 C 和密钥 K 作为解密函数的参数输入,则解密函数会输出明文 P。
2、对称加密算法与非对称加密算法区别
2.1、对称加密算法
加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。
缺点是密钥的传输比较麻烦。
2.2、非对称加密算法
加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。
优点是密钥传输方便,常见的非对称加密算法为 RSA、ECC 和 EIGamal。
实际中,一般是通过 RSA 加密 AES 的密钥,传输到接收方,接收方解密得到 AES 密钥,然后发送方和接收方用 AES 密钥来通信。
3、AES 的基本结构
AES 为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。
AES 本质是一种对称分组密码体制,采用代替/置换网络,每轮由三层组成:
1)线性混合层确保多轮之上的高度扩散;
2)非线性层由 16 个 S 盒并置起到混淆的作用;
3)密钥加密层将子密钥异或到中间状态。
在 AES 标准规范中,分组长度只能是 128 位,也就是说,每个分组为 16 个字节。
密钥的长度可以使用 128 位、192 位或 256 位,密钥的长度不同,推荐加密轮数也不同,如下表所示:
大致步骤如下:
1)密钥扩展(KeyExpansion);
2)初始轮(Initial Round);
3)重复轮(Rounds):
每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey;
4)最终轮(Final Round),最终轮没有 MixColumns。
3.1、ECB(Electronic Code Book 电子密码本) 模式
ECB 模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。
优点:模式操作简单、有利于并行计算、误差不会被传送;
缺点:不能隐藏明文的模式、明文中的重复内容在密文中暴露出来、可能对明文进行主动攻击;
因此,此模式适于加密小消息。
3.2、CBC(Cipher Block Chaining 加密块链) 模式
为了克服 ECB 模式的安全缺陷,设计了密码分组链接模式,它使得当同一个明文分组重复出现时产生不同的密文分组。
对每个分组使用相同的密钥,加密函数的输入是当前的明文分组和前一个密文分组的异或。
从效果上看,将明文分组序列的处理连接起来了。
为了产生第一个密文分组,要使用一个初始向量 IV,IV 必须被发送方和接收方都知道,为了做到最大程度的安全性,IV 应该和密钥一样受到保护。
优点:不容易主动攻击,安全性好于 ECB,适合传输长度长的报文,是 SSL\IPSec 的标准。
缺点:不利于并行计算、误差传递、需要初始化向量。
3.3、CDB(Cipher FeedBack Mode 密码反馈)模式
在密码反馈中,加密函数的输入是一个 length 位的移位寄存器,这个移位寄存器被初始化为一个初始向量 IV。加密函数处理结果的最高位的 n 位明文快以后产生密文,然后这个密文单元被传输出去。同时这个移位寄存器的内容左移 n 位,将密文单元放进移位寄存器的最高位 n 位中。
优点:隐藏了明文模式、分组密码转化为流模式、可以及时加密传送小于分组的数据。
缺点:不利于并行运算、误差传送(一个明文单元损坏会影响多个单元)、唯一的 IV。
3.4、OFB(Output FeedBack 输出反馈)模式
在输出反馈模式中,加密函数的输入是 length 位的移位寄存器 SR,对第一个分组的处理需要使用初始向量 IV。每处理完一个分组,移位寄存器就左移 n 位,加密函数 lengh 位输出的高 n 位被反馈回 length 位的移位寄存器的低 n 位,剩余 length - n 位被丢弃。
优点:隐藏了明文模式、分组密码转化为流模式、可以及时加密传送小于分组的数据;
缺点:不利于并行计算、对明文的主动攻击是可能的、误差传送。
3.5、CTR 模式
计数器模式使用与明文分组模式相同的计数器长度,但要求加密不同的分组所用的计数器值必须不同。计数器值经加密函数变换的结果再与明文分组异或,从而得到密文。
优点:计数器模式能够对多块报文的加解密并行处理、随机对任意一个密文分组进行解密处理(对该密文分组的处理与其他密文无关)、实现的简单性。
3.6、CCM 模式
CCM 模式是 CTR 和 CBC-MAC 的结合模式,其中 CCM 模式加密是采用的 CTR 计数器加密,数据校验是采用的 CBC 模式最后一轮的密文输出,截取相应的位数作为 MAC 值。
AES 加解密:
refer:
http://www.cnblogs.com/luop/p/4334160.html
https://blog.csdn.net/qq_28205153/article/details/55798628
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。