单密钥系统的加密密钥和解密密钥相同,或实质上等同,即从一个易于得出另一个,如下图所示。
对称密码算法(symmetric cipher):
分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。
扩散
要求明文的统计特征消散在密文中。即让明文的每个比特影响到密文的许多比特的取值。尽可能使明文和密文的统计关系变复杂。
混淆
使密文与密钥之间的统计关系尽量复杂,以阻止攻击者发现密钥。
可逆映射 | 不可逆映射 | |||
---|---|---|---|---|
00 | 11 | 00 | 11 | |
01 | 10 | 01 | 10 | |
10 | 00 | 10 | 01 | |
11 | 01 | 11 | 01 |
Feistel网络结构原理
一个分组长度为n (偶数)比特的L轮Feistel网络的加密过程如下:
其中Li和Ri的计算规则如下:
Feistel网络的安全性和软、硬件实现速度取决于下列参数:
Feistel网络的安全性和软、硬件实现速度取决于下列参数:
Feistel网络解密过程
数据加密标准(Data Encryption Standard,DES)是至 今为止使用最为广泛的加密算法。
1974年8月27日, NBS开始第二次征集,IBM提交了算法LUCIFER,该算法由IBM的工程师在1971~1972年研制。
1975年3月17日, NBS公开了全部细节1976年,NBS指派了两个小组进行评价。
1976年11月23日,采纳为联邦标准,批准用于非军事场合的各种政府机构。
1977年1月15日,“数据加密标准”FIPS PUB 46发布
规定每隔5年由美国国家保密局(National Security Agency)重新评估它是否继续作为联邦加密标准。
最近的一次评估是在1994年1月,当时决定1998年12月以后,DES不再作为联邦加密标准。新的美国联邦加密标准被称为高级加密标准AES ( Advanced Encryption Standard )。
DES对推动密码理论的发展和应用起到了重大的作用,学习 和研究它,对于掌握分组密码的基本理论、设计思想和实际应用仍然有着重要的参考价值。
DES背景
数据加密标准(Data Encryption Standard,DES)是至 今为止使用最为广泛的加密算法。
1974年8月27日, NBS开始第二次征集,IBM提交了算法LUCIFER,该算法由IBM的工程师在1971~1972年研制。
1975年3月17日, NBS公开了全部细节1976年,NBS指派了两个小组进行评价。
1976年11月23日,采纳为联邦标准,批准用于非军事场合的各种政府机构。
1977年1月15日,“数据加密标准”FIPS PUB 46发布
规定每隔5年由美国国家保密局(National Security Agency)重新评估它是否继续作为联邦加密标准。
最近的一次评估是在1994年1月,当时决定1998年12月以后,DES不再作为联邦加密标准。新的美国联邦加密标准被称为高级加密标准AES ( Advanced Encryption Standard )。
DES对推动密码理论的发展和应用起到了重大的作用,学习 和研究它,对于掌握分组密码的基本理论、设计思想和实际应用仍然有着重要的参考价值。
双重DES
最简单的多次加密形式有两个加密阶段和两个密钥,给定一个明文P和两个加密密钥K1和K2,有:
C = EK2(EK1(/P)) ←→ P = DK1(DK2(/C))
对于DES来说,密钥长度56×2=112
双密钥的三重DES
一个用于对付中途攻击的明显方法是用3个密钥进行三个阶段的加密,这样要求一个56×3=168bit的密钥,这个密钥有点过大。
作为一种替代方案,Tuchman提出使用两个密钥的三重加密方法。这个加密函数采用一个加密-解密-加密序列:
C=EK1(DK2(EK1(/P))) ←→ P=DK1(EK2( DK1(/C)))。
https://blog.csdn.net/Caoyang_He/article/details/88868493
AES背景
1997年4月15日,美国国家标准技术研究(NIST)发起征集高级加密标准(Advanced Encryption Standard)AES的活动,活动目的是确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,作为新的数据加密标准。
1997年9月12日,美国联邦登记处公布了正式征集AES候选算法的通告。基本要求是:比三重DES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特。
1998年8月12日,在首届AES会议上指定了15个候选算法。
1999年3月22日第二次AES会议上,将候选名单减少为5个,这5个算法是RC6,Rijndael,SERPENT,Twofish和MARS。
2000年4月13日,第三次AES会议上,对这5个候选算法的各种分析结果进行了讨论。
2000年10月2日,NIST宣布了获胜者—Rijndael算法,2001年11月出版了最终标准FIPS PUB197
AES的总体描述
AES具有128bit的分组长度,三种可选的密钥长度,即128bit、192bit和256bit。AES是一个迭代型密码;轮数Nr依赖于密钥长度。密钥为128bit、192bit、256 bit时,轮数分别为:10、12、14。算法执行过程如下:
AES的参数
https://blog.csdn.net/Caoyang_He/article/details/88868493
分组密码在加密时明文分组的长度是固定的,而实用中待加密消息的数据量是不定的,数据格式可能是多种多样的。为了能在各种应用场合安全地使用分组密码,通常 对不同的使用目的运用不同的工作模式。
一个分组密 码的工作模式就是以该分组密码为基础构造的一个密码系统。
目前已提出许多种分组密码的工作模式,如电码本(ECB)、密码分组链接(CBC)、密码反馈(CFB)、输 出反馈(OFB)、级连(CM)、计数器、分组链接(BC)、扩散密码分组链接(PCBC)、明文反馈(PFB) 、非 线性函数输出反馈(OFBNLF)等模式。
PS:提出分组密码的工作模式就是为了让同一个分组的明文加密后的密文不同,从而避免统计攻击
ECB(Electronic Codebook)模式是最简单的运行模式,它一次对一个64比特长的明文分组加密,而且每次的加密密钥都相同
概念图
优点
缺点
不同的明文分组之间的加密独立进行,造成相同明文分组对应相同密文分组,因而不能隐蔽明文分组的统计规律和结构规律,不能抵抗替换攻击。
典型应用
实例
例: 假设银行A和银行B之间的资金转帐系统所使用报文模式如下
敌手C通过截收从A到B的加密消息,只要将第5至第12分组替换为自己的姓名和帐号相对应的密文,即可将别人的存款存入自己的帐号。
每次加密使用同一密钥,加密算法的输入是当前明文前一次密文组的异或。因此加密算法的输入与明文分组之间 不再有固定的关系,所以重复的明文分组不会在密文中暴露。
概念图
特点
典型应用
完整性认证的含义
完整性认证是一个“用户”检验它收到的文件是否遭到第三方有意或无意的篡改。
实例
例:电脑彩票的防伪技术
方法:
认证过程:
执行3),并将计算出的认证码与彩票上的认证码比较,二者一致时判定该彩票是真彩票,否则判定该彩票是假彩票。
若待加密消息需按字符、字节或比特处理时,可采用CFB模式。并称待加密消息按 j 比特处理的CFB模式为 j 比特CFB模式。
适用范围
适用于每次处理 j比特明文块的特定需求的加密情形,能灵活适应数据各格式的需要。
概念图
加密
解密
优点
缺点
比较浪费,因为每轮加解密中都丢弃了大部分结果,通常只保留了的S为为1个字节。
OFB 模式在结构上类似于CFB。不同之处
概念图
加密
解密
优点
缺点
难于检测密文是否被篡改。
适用于传输语音图像
对一系列输入数据块(称为计数)进行加密,产生一系列的输出块,输出块与明文异或得到密文。
应用于ATM网络安全及IPSec中
密码算法产生一个16 字节的伪随机码块流,伪随机码块与输入的明文进行异或运算后产生密文输出。密文与同样的伪随机码进行异或运算后可以重产生明文。
概念图
CTR的特点
模式 | 描述 | 典型应用 |
---|---|---|
电码本(CBC) | 用相同的密钥分别对明文分组独立加密 | 单个数据的安全传输(如一个加密密钥) |
密文分组链接(CBC) | 加密算法的输入是上一个密文组和下一个明文组的异或 | 面向分组的通用传播 认证 |
密文反馈(CFB) | 一次处理s位,上一块密文作为加密算法的输入,产生的伪随机数输出与明文异或作为下一个单元的密文 | 面向数据流的通用传播 认证 |
输出反馈(OFB) | 与CFB类似,只是加密算法的输入是上一次加密的输出,且使用整个分组 | 噪声信道上的数据流传输(如卫星通信) |
计数器(CTR) | 每个明文分组都与一个经过加密的计数器相异或。对每个后续分组计数器递增 | 面向分组的通用传播 用于高速需求 |
每次可加密一个比特或一个字节
适合比如远程终端输入加密类的应用
简介
RC4由RSA三人组中的头号人物Ronald Rivest在1987年设计的密钥长度可变的流加密算法簇。
和DES算法一样,是一种对称加密算法。
算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性 。
可变密钥长度,可变范围为1-256字节(8-2048比特)
以随机置换为基础。密钥长度是可变的,RC4起初是用于保护商业机密的。但是在1994年9月,它的算法被发布在互联网上,也就不再有什么商业机密了
用途广泛,常用于SSL/TLS,IEEE 802.11无线语句网标准的一部分WEP(Wired Equivalent Privacy)协议和新Wifi受保护访问协议(WPA)中。
相关概念
概念图
伪代码
第一部分:初始化算法(KSA)
第二部分:伪随机子密钥流生成算法