2012年秋季学期《密码学》课程主讲教师:翟起滨
推荐的参考书
CRYPTO-2012:The End of CryptoJonathan ZittrainProfessor of Law School and Professor of Computer Science, Harvard University,
第一章 引言
密码学的基本概念
基本术语
古典加密通信的模型
密码体制
密码体制分类
密码破译
古典密码的破译手段
密码算法的安全性
密码分析的基本原则
美国NSA在上世纪70年代面临的第一个挑战——密码技术从政府的黑屋子流向民间!
1976年后的密码学
从此密码学走向Internet时代
2006年12月21日PKC30周年庆典活动Whitfield Diffie, Martin Hellman, Brian Snow, Jim Bidzos
第二章 古典密码
代换密码
字母代换密码
移位密码分析:
复合密码算法
广义的单表代换
单表替换密码的破译
对抗频率分析的办法
多对应代换密码
多表代换密码
Vigenére cipher (1858)
Vigenére cipher-破译
滚动密钥密码
若干古典密码算法的例子
Playfair举例
Playfair密码分析
Hill密码(1929)
Hill密码的例子:
Hill密码分析
第三章 分组密码与数据加密标准
DES的产生
DES的应用
分组密码的一般设计原理
实现的设计原则
简化的DES
加密算法的数学表示
对S-DES的深入描述
S-DES的密钥生成
Feistel
Feistel结构定义
Feistel结构分析
DES示意图
DES的描述
一轮加密的简图
初始置换IP和初始逆置换IP—1
DES: Function F
S-Box-i
S-Box-ii
S-Box
子密钥的产生
置换选择1(PC-1)和置换选择2(PC-2)
对DES的讨论
S-Box问题
密钥长度
DES加解密过程
DES的破译
弱密钥与半弱密钥
差分密码分析
攻击3轮DES
DES的F函数
第2章习题讲解
第4章 有限域(见数学基础课件)
第5章 高级加密标准(The Advanced Encryption Standard)
AES背景
下面讨论AES—Rijndael算法Rijndael为AES所定义的迭代式的分组密码算法,它的分组长度(block length)和密钥长度(key length)是可以各自独立的,当然它们都可以是128bit,192bit或256bit。AE
AES参数配置表
我们通常限定AES密钥长度为128bit。Rijndael的数据结构:(1)不论是明文,还是密文,密钥都是若干字节(1byte=8bits)构成的串(strings): b1 b2……bs易见: 128b
(2)将字节串排列成4行的矩阵:注:1)数据加密过程中产生的中间结果都称为State(状态)。一个状态可以表成4行Nb列的一个矩阵,其中Nb=分组长度/32;矩阵中的每一个系数是一个字节(1byte=8bits)。
注:2)密钥(cipher key)也表示成一个4行Nk列的矩阵,其中Nk=密钥长度/32。下面给出,当明文分组为128比特,密钥长也为128比特时的各自状态矩阵: a00 a01 a02 a03 k00 k01 k02 k03
(3) 加密流程:Rijndael(State,CipherKey){ KeyExpansion(CipherKey,ExpandedKey); 初始化 AddRoundKey(State,ExpandedKey);fo
AES-128加解密过程
AES Round
AES算法特征:
轮密钥加(Add Round Key)
▲ Add Round Key:
Substitute Bytes :
example
S—盒的构造:Rijndael的S—盒输入和输出都是8bit的,S是由两个变换复合而成: S=L•F可以将x∈{0,1}8看作有限域有限域GF(28)中的元素,则F(x)= x-1 x≠0 0
GF(28)的构造选定GF(2)(ie F2)上的一个8次不可约多项式m(x)=x8+x4+x3+x+1 则GF(28) ∽= F2[x]/,设[x]=α,有GF(28)={c0•1+ c1• α + c2• α2+…+ c7•
另一方面,某字节对应的f(x) ∈ F2[x]/,求这个字节的逆,就是求f(x) -1,可用Euclid算法,算出u(x),v(x) ∈ F2[x],使 u(x)f(x)+v(x)m(x)=1于是
例1、f(x)=x6+x4+x2+x+1=(01010111);则x •f(x) (mod m(x))=(10101110)=x7+x5+x3+x2+x 例2、 f(x)=x7+x5+x2+x+1=(10100111);则x •
行移位(Shift Row)变换
▲shift Row对由字节组成的4行状态矩阵的每一行进行左循环移位,移位量(off sets)根据分组长度Nb和所在行数r而定:
example
列混合Mix Column变换
▲Mix Column状态矩阵中的每一列视为GF(28)上的一个4维列向量α,用一个固定的4 x 4矩阵C左乘,得到的4维列向量β=Cα作为变换的输出结果:矩阵C=(Cij)中的系数取自GF(28) , 2 3 1 1
AES的密钥扩展和轮密钥选取
▲Key Expansion ▲子密钥发生器Key Expansion的输入是初始密钥CipherKey,长度为32 • Nk比特,其中Nk=4,6或者8。其输出为各轮的子密钥Expanded Key。 ▲子密钥只用在Add RoundKey中
当Nk≤6时:Key Expansion(byte Key[4*Nk],word W[Nb*(Nr +1)]){for ( i=0;i
注:1)首轮的W[0],W[1],…,W[Nk-1]就是初始的密钥(Cipher Key)。2)对于Nk≤i
G变换
example
32bit的W[i-1]可表为4个字节:a0 a1 a2 a3 ,于是,RotByte(W[i-1])= a1 a2 a3 a0 ,即将4个字节做左循环移位。Byte替换——SubByte(a0 a1 a2 a3 )=S(a0) S(a1) S(
Rijndael安全性
AES Decryption
Full AES key extraction in 65 milliseconds using cache attacks
Cache Attacks
事实上,对AES的代数攻击也引起重视