530 likes | 755 Views
第一部分 密码学. 四川大学 曾雪梅 zengxm@scu.edu.cn 课件下载: http://imc.scu.edu.cn/zengxm/course/. 密码学简介. 密码学 : 以研究秘密通信为目的,研究对传输信息采取何种秘密的变换,以防止第三者对信息的截取。 密码编制学 —— 研究把信息(明文)变换成没有密钥不能解密或很难解密的密文的方法 密码分析学 —— 研究分析破译密码的方法 四组人用到了密码学:军事人员、外交人员、写日记者、情侣. 经典密码学、现代密码学. 凯撒密码. 保密系统模型. 搭线信道 (被动攻击). 搭线信道 (主动攻击).
E N D
第一部分 密码学 四川大学 曾雪梅 zengxm@scu.edu.cn 课件下载:http://imc.scu.edu.cn/zengxm/course/
密码学简介 • 密码学:以研究秘密通信为目的,研究对传输信息采取何种秘密的变换,以防止第三者对信息的截取。 • 密码编制学——研究把信息(明文)变换成没有密钥不能解密或很难解密的密文的方法 • 密码分析学——研究分析破译密码的方法 • 四组人用到了密码学:军事人员、外交人员、写日记者、情侣
经典密码学、现代密码学 凯撒密码
保密系统模型 搭线信道 (被动攻击) 搭线信道 (主动攻击) m` 密码分析员 (窃听者) 非法接入者 c m 信源 M m 加密器 C=EK1(M) 解密器 M=Dk2(C) c 接收者 信道 k1 k2 密钥源 k1 密钥源 k2 密钥信道 K1=k2: 单钥,对称密码体制 K1≠k2: 双钥,非对称密码体制
主要内容 • 对称加密原理 • 对称加密算法 • 密码块的操作模式 • 加密设备的位置 • 密钥分配
2.1 对称加密原理 • 对称加密也称为常规加密、密钥或单密钥加密 • 加密方案的五个组成部分(图2.1): • 明文(Plaintext) • 加密算法(Encryption algorithm) • 密钥(Secret Key) • 密文(Ciphertext) • 解密算法(Decryption algorithm)
保密密钥K 保密密钥K 加密 传输密文C 解密 明文 明文M Alice Bob 2.1 对称加密原理(2) 加密过程: C=EK(M) 解密过程: M=DK(C)
对称加密的两个安全要求: • 需要强大的加密算法 • 用安全的方式获得保密密钥的副本 • 安全性依赖密钥的保密,而不是加密算法的保密(Kerckoff原则)
2.1.1 密码系统 • 三个独立的因素: • 用于从明文到密文转换的操作类型 • 取代(替换)、置换(重新排序) • 所使用密钥的数目 • 对称 (单个密钥) • 非对称 (双密钥加密, or 公钥加密) • 处理明文的方法 • 分块加密(block cipher) • 流密码(stream cipher) • A5、RC-4、PKZIP
2.1.2 密码分析 • 密码分析:试图发现明文或密钥的过程
2.1.2 密码分析(2) • 蛮力攻击: • 尝试任何可能的密钥,直到能够将密文正确解释为明文为止
2.1.2 密码分析(3) • 加密方案是计算上安全的(computationally secure) • 破译密文的成本超过了加密信息本身的成本 • 破译密文所要的时间超过了信息的有效期 • 理论安全,或无条件安全: • 攻击者无论截获多少密文,都无法得到足够的信息来唯一地决定明文。 • Shannon用理论证明:欲达理论安全,加密密钥长度必须大于等于明文长度,密钥只用一次,用完即丢,即一次一密,One-time Pad,不实用。
2.1.3 Feistel 密码结构 在1973, IBM公司的 Horst Feistel描述了大部分对称的对称密码算法所具有的结构,包括DES. Fesitel网络的实现依赖下列参数和设计特征的选择: • 块大小:块越大意味着越安全 • 密钥大小:密钥越大越安全 • 循环次数:多个循环可以提供更多的安全性 • 子密钥产生算法:算法越复杂,密码分析难度就越困难. • 快速软件加密/解密:要考虑算法执行的速度 • 分析的容易性:算法表示简洁清晰,更易于对加密技术的缺陷进行分析
2.1.3 Feistel 密码结构(3) • Fesitel密码的解密过程 • 实质上与加密过程相同 • 使用密文作为算法的输入,按照相反的顺序使用子密钥Ki
2.2 对称加密算法 • 分块加密 p26 • 按照固定大小处理明文输入,而且每个明文块产生相同的密文块 • 数据加密标准(DES)、三重DES(3DES)、高级加密标准(AES)
2.2.1 数据加密标准 • 数据加密标准Data Encryption Standard (DES) • 最广泛使用的加密框架 • 也称为数据加密算法 Data Encryption Algorithm (DEA) • DES is a block cipher • 明文是64位块 • 密钥长度为56位
64位明文 64位密钥 初始置换 置换选择1 K1 第1轮 置换选择2 循环左移 K2 第2轮 置换选择2 循环左移 K16 第16轮 置换选择2 循环左移 32位互换 图:DES整体解决方案 逆初始置换 64位密文 子密钥的产生
初始置换IP 和逆置换IP-1 输入为In[], 输出为Out[] Table[64] = {58, 50, 42, 34, 26, …….23, 15, 7}; for(int i=0; i<len; ++i) Out[i] = In[ Table[i]-1 ];
加密函数F 32位 扩展置换 48位 48位子密钥
S盒计算 • S1 输入二进制数组中的第1和第6两位所组成的二进制数值代表选中的行号,其余4位所组成的二进制数值代表选中的列号,而选中的行和列的交点处的数字便是选择函数的输出 例子: S1的输入为:101011 第1位和第6位组成11=(3)10,表示选中S1标号为3的那行 其余4位组成0101=(5)10,表示选中S1标号为5的那列 所以,S1的输出为:1001
子密钥的产生 • 64比特的密钥K,经过PC-1后,生成56比特的串。 • 该比特串分为长度相等的比特串C0和D0。然后C0和D0分别循环左移1位,得到C1和D1。C1和D1合并起来生成C1D1。C1D1经过PC-2变换后即生成48比特的K1
DES • 每次迭代的处理公式: • Li= Ri-1 • Ri = Li-1 F(Ri-1, Ki) • DES强度的关注点: • 算法 • 密钥的长度 (56-bits) 对付蛮力攻击的方法:使用较长的密钥
DES解密 • DES解密和加密使用同一算法,但子密钥的使用顺序要倒过来,即使用K16,K15,….K1. • 解密时把64位密文当作明文输入 • 数学描述: • Ri-1=Li • Li-1=Ri f(Li,Ki)
DES的雪崩效应 • 雪崩效应 明文或密钥的一比特的变化,引起密文许多比特的改变。如果变化太小,就可能找到一种方法减小有待搜索的明文和密文空间的大小。 -如果用同样密钥加密只差一比特的两个明文: 3次循环以后密文有21个比特不同,16次循环后有34个比特不同 -如果用只差一比特的两个密钥加密同样明文: 3次循环以后密文有14个比特不同,16次循环后有35个比特不同
DES的强度 • 56-bit 密钥有256 = 72,057,584,037,927,936 ≈ 7.2亿亿之多 • 蛮力搜索( brute force search ) 似乎很困难,20世纪70年代估计要1000-2000年 • 技术进步使穷举搜索成为可能 • 1997年1月29日,RSA公司发起破译RC4、RC5、MD2、MD5,以及DES的活动,破译DES奖励10000美金。明文是:Strong cryptography makes the world a safer place. 结果仅搜索了24.6%的密钥空间便得到结果,耗时96天。 • 1998年在一台专用机上(EFF)只要三天时间即可 • 1999年在超级计算机上只要22小时!
2.2.2 三重DEA • 使用三个密钥并执行三次DES算法 (加密-解密-加密) • C = 密文 • P = 明文 • EK[X] = 使用密钥K加密X • DK[Y] = 使用密钥K解密Y • 有效密钥长度为 168 bits C = EK3[DK2[EK1[P]]] P= DK1[EK2[DK3[C]]]
2.2.2 三重DEA(3) • 三重DES的第二阶段并没有密码学方面的意义,惟一好处是使得3DES用户能解密原先单个DES用户加密的数据,即: K1=K2=K3 • FIPS46-3允许使用两个密钥,即K1=K3,这样所提供的密钥长度为112位 C = EK1[DK1[EK1[P]]]=Ek1[P]
2.2.3高级加密标准(AES) • 1997年NIST宣布征集AES算法 • 要求: 与三重DES比,要快且至少一样安全,分组128位,密钥128/192/256位 • 评价准则:安全,计算有效性,内存需求,硬件和软件的适用性以及灵活性 • 1998年确定第一轮15个候选者 • 1999年确定第二轮五个候选者: MARS, RC6, Rijndael, Serpent, Twofish • 2001年11月Rijndael作为被提议的AES算法
2.2.4 流密码和RC4 密钥K 密钥K 伪随机字节产生器 (密钥流产生器) 伪随机字节产生器 (密钥流产生器) 明文 字节流 M 明文 字节流 M 密文 字节流 C 11001100 01101100 10100000 01101100 10100000 11001100
RC4算法 • Ron Rivest, 1987年设计的流密码 • WEP和WiFi协议使用RC4 • 过程 • 初始化 • 初始排序 • 流产生
2.3 密码块的操作模式 • 电子密码本(electronic codebook,ECB): 明文分成相同长度的明文块(64位),使用同一个密钥对每个明文块进行加密 • 结果: 同样的明文块在消息中多次出现的话,它产生的密文总是相同的 对较长的消息来说,ECB方法并不安全!
2.3 密码块的操作模式(2) • 密码分块链接模式 (CBC) • 加密算法的输入是当前明文块与前一个密文块异或操作的结果. • 不会暴露64位的重复块 当Pi中发生错误时,将影响后续所有的密文块,加密错误传播无界; 当Ci-1中发生错误时,只影响Pi-1和Pi,不影响其它明文块,错误传播有界;
2.3.1密码分块链接模式(2) • 初始化矢量IV • IV对发送方和接收方都是已知的 • IV和密钥都要受到保护: 可以通过其他密码方式(如ECB)对IV进行加密 • 对手可以修改IV值,改变接收方收到的数据 (撇号表示取反)
2.3.2 密码反馈方式(CFB) • 通过使用CFB模式,可以将任何块密码转换成流密码。 • 流密码特点: • 不需要将信息填充以分成块 • 可以进行实时操作 流密码的一个重要优点:密文与明文的长度是相同的
C1=P1 SS(E(IV)) P1=C1 SS(E(IV)) Ci=Pi SS(E(Ci-1)) Pi=Ci SS(E(Ci-1)) 当Pi中发生错误时,将影响后续所有的密文块,加密错误传播无界; 当Ci-1中发生错误时,只影响Pi-1和Pi,不影响其它明文块,错误传播有界;
2.4 加密设备的位置 • 链路加密: • 需要大量的加密设备 • 能够提供高度的安全性 • 数据包在每个交换机上都需要解密 • 端到端加密 • 源端加密、目的端解密 • 负载(用户数据)加密 • 报文头以明文方式传输 • 高安全性:链路加密和端到端加密都需要 (见图 2-9)
2.5 密钥分配 • A选择密钥,然后物理地传递给B. • 第三方选择密钥,然后物理地传递给A和B. • 如果A和B已使用密钥,一方可用旧密钥加密新密钥,在传送给对方. • 如果A和B与第三方C都有加密连接,则C可以通过对A和B的加密连接将密钥传送给A和B.
2.5 密钥分配(2) • 会话密钥: • 数据采取一次性的会话密钥加密,会话结束后,密钥失效 • 永久密钥: • 为分配会话密钥,在两个实体之间使用的永久密钥