参考课程:中国大学MOOC《网络安全》——北京航空航天大学
- 网络安全笔记2——单钥密码体制
- 古典密码
- 代换密码
- 置换密码
- 流密码
- 分组密码
- 概念
- Shannon的密码设计思想
- 数据加密标准(DES)
- 运算步骤
- 注意事项
- DES算法详细图解
- S盒和P盒
- DES的安全性
- 高级加密标准(AES)
- 算法简介
- AES加密算法详解(图文解释)
- AES对应用密码学的积极影响
- SM4密码算法
- 基本运算
- 加密算法
- 解密算法
- SM4的安全性
- 分组密码的工作模式分类
- 电码本模式(ECB)
- 密码分组链接模式(CBC)
- 密码反馈模式(CFB)
- 输出反馈模式(OFB)
- 计数器模式(CTR)
- 分组密码总结
密码体制的语法定义
- 明文消息空间M:可能的明文字母串集合
- 密文消息空间C:可能的密文字母串集合
- 加密密钥空间K:可能的加密密钥集合
- 解密密钥空间K’:可能的解密密钥集合
- 有效的密钥生成算法ζ:N → K × K’
- 加密算法E:M × K → C
- 解密算法D:C × K’ → M
- 密钥生成算法:∀整数1l,ζ(1l)输出长为l的密钥对:(ke,kd) ∈ K × K’
- 加密/解密过程:∀m ∈ M,c ∈ C c = Eke(m) m = Dkd(c) = Dkd(Eke(m))
密钥体制的分类
- 若ke=kd,则加密算法称为单钥加密体制(对称加密体制或私钥加密体制)
- 若ke≠kd,则加密算法称为双钥加密体制(非对称加密体制或公钥加密体制)
单钥密码按照加解密运算的特点分类
- 流密码(Stream Cipher):数据逐比特加密,即数据流与密钥流逐比特进行异或(XOR)运算;
- 分组密码(Block Cipher):对数据分组进行处理。
古典密码学有两大基本方法
- 置换密码:明文字母保持不变,但顺序被打乱。
- 代换密码:明文字母被替换,但顺序保持不变。 代换密码主要包括:单表代换(一个明文字母对应的密文字母是确定的);多表代换(一个明文字母可以表示为多个密文字母);弗纳姆密码:将每消息比特和相应的密钥比特进行比特异或运算
单表代换
凯撒密码(单表代换)
维吉尼亚密码(多表代换)
- 引入密钥的概念:根据密钥来决定用哪一行的密表来进行代换。
- 使用词组作为密钥:词组中每一个字母都作为索引来确定采用某个代换表,加密时需要循环使用代换表完成明文字母到密文字母的代换,最后所得到的密文字母序列即为密文。
弗纳姆密码(代换密码)
弗纳姆密码(Vernam Cipher)的基本原理是:将明文与密钥进行模2加法运算。如果M=C=K={0,1}*,则弗纳姆密码就是代换密码的特例;如果密钥串只使用一次,那么弗纳姆密码就是一次一密密码。 弗纳姆密码也可以看成序列密码(流密码)的雏形。
置换密码置换密码又称换位密码,是通过重新排列明文中元素的位置而不改变元素本身来实现加密的体制,它广泛应用于现代分组密码的构造。
置换就是简单的换位,每次置换都可以用一个置换矩阵来表示,且都有一个与之对应的逆置换矩阵。
原理
- 明文m=m1,m2,… …ml
- 伪随机序列k=k1,k2,… …kl
- 密文ci = Eki(mi)
- 解密过程与加密过程相同且互逆
- 流密码的安全性完全依赖于伪随机数的强度
有限状态自动机
- 若密钥流是一个完全随机的非周期序列,则我们可以用它来实现一次一密体制。
- 但实用中的流密码大多采用有限存储单元和确定性算法,可用有限状态自动机(Finite State Automation)来描述。
- 因此,由有限状态机产生的序列是伪随机序列。
流密码的分类
同步流密码
自同步流密码
祖冲之密码
2011年,我国商用密码算法——祖冲之密码算法(ZUC)被批准成为新一代宽带无线移动通信系统(LTE)国际标准,即4G的国际标准
我国向3GPP提交的算法标准包含如下内容:
- 祖冲之密码算法(ZUC):用于产生密钥序列
- 128-EEA3:基于ZUC的机密性算法
- 123-EIA3:基于ZUC的完整性保护算法
分组密码(Block Cipher)是将明文消息编码表示后的数字序列x1,x2,…,xi,划分成长为m的组x = (x0,x1,…,xm-1),各组(长为m的矢量)分别在密钥k = (k0,k1,…,kt-1)控制下变换成输出长度为n的数字序列y = (y0,y1,…,yn-1)(长为n的矢量),其加密函数E:Vm × K → Vn,Vm和Vn是m、n维矢量空间,K为密钥空间。
设计要求
- 分组长度足够大(≥128~256比特,都是64的倍数,计算机总线长度为64位,便于计算)
- 密钥量要足够大(≥128~192~256比特)
- 算法足够复杂(包括子密钥产生算法)
- 加密、解密算法简单,易软、硬件实现
- 数据无扩展(只在引入同态置换和随机化加密时仍有扩展)
- 差错传播尽可能得小
- 扩散(diffusion) 将每位明文及密钥数字的影响尽可能迅速地散布到较多个输出的密文数字中,以便隐蔽明文数字的统计特性。产生扩散的最简单方法是通过“置换(Permutation)”(比如:重新排列字符)
- 混淆(confusion) 其目的在于使作用于明文的密钥和密文之间的关系复杂化,使明文和密文之间,密文和密钥之间的统计相关特性极小化,从而使统计分析攻击不能奏效。通常的方法是“代换(Substitution)”
DES:Data Encryption Standard DES数据加密标准是美国于1977年在全球范围内公开的第一个现代单钥加密算法,DES是一种分组密码,其输入的明文长度为64bit,密钥长度为56bit,输出的密文长度为64bit。
运算步骤- 对输入分组进行固定的“初始置换”IP,可以将这个初始置换写为(L0,R0) ← IP(Input Block),注意:这里L0和R0称为左、右半分组,各为32比特。IP是固定的、公开的函数。
- 迭代运算,即将下面的运算迭代16轮:Li ← Ri-1;Ri ← Li-1 ⊕ f(Ri-1,ki)
- 将16轮迭代后得到的结果(L16,R16)输入到IP的逆置换IP-1中:Output Block ← IP-1(R16,L16)
- DES算法的加密和解密均采用上述3个步骤。
- 初始置换过程实际上为香农信息论中的“扩散(Diffusion)”;迭代运算过程就是香农信息论中的“混淆(Confusion)”。
- 如果加密时使用的轮密钥次序为k1,k2,…,k16,那么解密时使用的轮密钥次序为k16,k15,…,k1。
- DES采用Feistel网络结构。Feistel密码结构是一种对称结构,满足对合性。采用此结构的密码,其好处是加解密可以使用同一个芯片。
- S盒的作用是混淆(Confusion),主要增加明文和密文之间的复杂度(包括非线性度等)。DES的安全性直接取决于S盒的安全性。
- P盒的作用是扩散(Diffusion),目的是让明文和密钥的影响迅速扩散到整个密文中。即一位的明文或密钥的改变会影响到密文的多个比特。
- S盒和P盒的作用体现了Shannon的扩散和混淆的密码设计思想。
1997年1月28日,美国RSA公司悬赏10000美元破译DES。美国程序员RockeVerser用140天破译成功。从此宣布了DES时代的终结。 2008年SciEngines公司的Rivyera将破解DES的时间缩减到1天以内,并一直保持着暴力破解DES的记录。 于是,有人提出了TripleDES算法。 DES、TripleDES算法(3DES)已经不再使用,需要提出新的、更安全的数据加密标准。
高级加密标准(AES)AES: Advanced Encryption Standard AES是美国联邦政府采用的一种用来替代DES的加密标准,其于2001年发布并在2002年成为有效的加密标准,已经被多方分析且广为使用。 Rijndael是分组长度和密钥长度均可变的分组密码,其密钥长度和分组长度可以独立指定为128/192/256bit(都是64的倍数)。 AES的密钥长度为128/192/256bit, 但分组长度固定为128bit。
算法简介- AES具有加长可变的密钥128/192/256b及数据分组长度128b,为各种应用要求提供了大范围可选的安全强度。
- 128/192/256b密钥对应的加密轮数为10/12/14。
- 避免了多重加密(例如3DES)的使用,减少了实际应用中的密钥数量,可以简化安全协议和系统的设计。
- AES的广泛使用将导致同样强度的新型杂凑函数的出现。
2006年,我国国家密码管理局公布了无线局域网产品使用的SM4 (原名SMS4)密码算法,这是我国第一次公布自己的商用密码算法,旨在加密与保护静态储存和传输信道中的数据。
特点
- 分组密码算法,分组长度和密钥长度128bit, 32轮迭代
- 以字节为单位对数据进行处理
- 解密算法与加密算法结构相同,轮密钥的使用顺序相反
- 模2加和循环移位计算 32bit异或计算(⊕)和32bit循环左移(
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?