当前位置:   article > 正文

【IoT】加密与安全:对称加密算法 AES 原理与用途解析_aes ccm

aes ccm

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

AES算法 - 百度文库

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/909583
推荐阅读
相关标签
  

闽ICP备14008679号