密码技术概述
密码技术是防止信息泄露的技术,是信息安全技术中最重要和最基本的安全技术。
密码技术中常用的一些术语:
1)明文P(Plaintext ) :可以理解的信息原文。
2)加密E(Encryption):用某种方法伪装明文以隐藏它的内容的过程。
3)密文C(Ciphertext): 经过加密后将明文变换成不容易理解的信息。
4)解密D(Decryption):将密文恢复成明文的过程。
5)算法(algorithm) :就是用于加密或解密的方法,在现代密码学中算法就是一个用于加密和解密的数学函数。
6)密钥K(key) :是用来控制加密和解密算法的实现。
如果将加密过程看成是一个数学函数F的话, 则密文C可以表示为:
C = E(P, K )
在已知密钥K1、 K2、加密算法E和解密算法D时加密和解密过程:
EK1 ( P ) = C
DK2( C ) = P
P = DK2 ( E K1( P )) = P
在实际加密和解密时,根据加密算法的特点, K1与K2的值可以不同,也可以相同。
熵和信息
– 变量Xi如果取自字符集合X, 设X有N个字符,那么关于X的熵可以定义为
条件熵
互信息量 I(X;Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)表示已知一个变量关于另外一个变量不确定度的减少量。
古典加密方法
代替密码
代替密码又称替换密码,就是按照一定要求,将明文中的每个字符替换成另一个字符,明文中字符的位置保持不变,但其本身改变了。如移位密码 。
换位密码
换位密码也可称为置换密码,它是改变明文中字母的位置,明文中的字母不变。也就是明文中的字母保持不变,但顺序被打乱了。例如可以将明文the变换成het。
对称加密体制
对称加密算法,有时又叫传统密码算法,它的典型特点是:
a)采用的解密算法就是加密算法的逆运算,或者解密算法与加密算法完全相同;
b)加密密钥和解密密钥相同,或者加密密钥能够从解密密钥中推算出来,反过来也成立。
对称算法要求发送者和接收者在安全通信之前,商定一个密钥。它的安全性依赖于密钥的保密性。
对称算法可分为两类: 分组密码和序列密码或流密码。
a)分组密码是将明文分成固定长度的组或块(如64比特为一组),然后用同一密钥和算法对每一块进行加密,输出密文的长度也是固定的。
b)序列密码( stream cipher)的主要原理是通过伪随机序列发生器产生性能优良的随机序列,使用该序列与明文序列叠加来输出密文序列。解密时,再用同一个随机序列与密文序列进行叠加来恢复明文。
两大类现代密码技术
对称密码算法( symmetric cipher)
加密和解密密钥相同,或实质上等同,即从一个易于推出另一个
又称秘密密钥算法或单密钥算法
包括DES, Rijndael (AES) , Blowfish, IDEA, LOKI, RC5等算法
非对称密钥算法( asymmetric cipher)
加密密钥和解密密钥不相同,从一个很难推出另一个
又称公开密钥算法( public-key cipher)
公开密钥算法用一个密钥进行加密, 而用另一个进行解密
公开密钥( public key),简称公钥。
私人密钥( private key)私钥,简称私钥
包括RSA等算法
数据加密算法DES
1) 加解密思想
加密: Li = Ri-1; Ri = Li-1⊕F(Ri-1,Ki)
解密: Ri-1 = Li
Li-1 = Ri⊕F(Ri-1,Ki)
= Ri⊕F(Li,Ki)
Feistel分组加密算法特点
• 分组大小。越大安全性越高,但速度下降, 64比较合理
• 密钥位数。越大安全性越高,但速度下降, 64广泛使用,但现在已经不够用—〉 128
• 步数,典型16步
• 子钥产生算法。算法越复杂,就增加密码分析的难度
• 每一步的子函数。函数越复杂,就增加密码分析的难度
• 快速软件实现,包括加密和解密算法
• 易于分析。便于掌握算法的保密强度以及扩展办法
DES特点
• 对称算法:加密和解密除密钥编排不同外,使用同一算法
• 分组加密算法:明文和密文为64位分组长度
• 密钥长度: 56位,但每个第8位为奇偶校验位,可忽略密钥可为任意的56位数。
• 采用混乱和扩散的组合,每个组合先替代后置换,共16轮
• 只使用了标准的算术和逻辑运算,易于计算机实现,高效
F中的扩展函数E
F中的S-box
S盒设计标准:
• (1) 每个S-盒都有6 个输入位和4 个输出位。
• (2) 任意一个输出位都不应该太接近于输入位的线性组合。
• (3) 如果输入的最髙位和最低位都是固定的,只有中间的4 个位是可变的,则每个可能的4 位输出值都必须只出现一次。
• (4) 对于S-盒的两个输入,如果仅有丨位不同,则输出必须至少有两位不同。
• (5) 对于S-盒的两个输入,如果只有中间两位不同,则输出必须至少有两位不同。
• (6) 对于S-盒的两个输入,如果开头的两位不同,但最后两位相同,则输出必须不同。
• (7) 对任意有6 位非零差分的输入对, 32 对输入中至多有8对有相同的输出差分。
• (8)8 个S-盒对应的32位输出的冲突(零输出差异)只有在三个相邻的S-盒的情况下才有可能。
F中的置换盒子P
加密过程(例子)
取16进制明文X: 0123456789ABCDEF
密钥K为: 133457799BBCDFF1
去掉奇偶校验位以二进制形式表示的密钥是
00010010011010010101101111001001101101111011011111111000
应用IP,我们得到:
L0=11001100000000001100110011111111
L1=R0=11110000101010101111000010101010
然后进行16轮加密。
最后对L16, R16使用IP-1
得到密文: 85E813540F0AB405
• DES算法的本质
– 关键在于8个S-BOX
• 针对DES的密码分析
– 差分分析法 经过2^47量级的计算可攻破
– 线性分析法
分组密码的用法
• 电子簿模式(electronic codebook mode)ECB 密文块损坏->仅对应明文块损坏
• 密码块链接(cipher block chaining)CBC 密文块损坏->两明文块损坏
• 密码反馈方式(cipher feedback)CFB 一个单元损坏影响多个单元: (W+j-1)/j
• 输出反馈方式(output feedback)OFB 一个单元损坏只影响对应单元
公开密钥体制
一对密钥( pk, sk) pk( public-key)公钥 sk( private key)私钥
三种典型的算法
基于大整数分解算法体制
基于椭圆曲线算法体制
基于离散对数难题的算法体制
1、RSA算法
数学基础
(1) -整数分解和同余
素数分解:eg. 91 = 7 × 13 ; 3600 = 24 × 32 × 52
同余:eg. 100 = 34 mod 11
(2) -互质关系
(3) -欧拉函数
CASE1:
如果n=1,则 φ(1) = 1 。
CASE2:
如果n是质数,则 φ(n)=n-1 。
CASE3:
如果n是质数的某一个次方,即 n = pk(p为质数, k为大于等于1的整数),则φ(pk)=pk-pk-1 =pk(1-1/p)
比如 φ(8) = φ(23) =23 - 22 = 8 -4 = 4。
CASE4:
如果n可以分解成两个互质的整数之积, n = p1 × p2则φ(n) = φ(p1p2) = φ(p1)φ(p2)
φ(56)=φ(8× 7)=φ(8)× φ(7)=4× 6=24。
CASE5:
因为任意一个大于1的正整数,都可以写成一系列质数的积 n=P1k1P2k2```Prkr即φ(n)=n(1-1/P1)(1-1/P2)···(1-1/Pr)
这既是欧拉函数的通用计算公式
(4) -欧拉定理
(5) -模反元素
RSA原理
假设Alice要与Bob进行加密通信,她该怎么生成公钥和私钥呢?
RSA算法步骤
每个用户生成自己的公钥\私钥对, Bob为实现者,实现步骤如下:
(1) Bob寻找出两个大素数p和q ( 100~200 digit)
(2) Bob计算出n=pq 和φ (n)=(p-1)(q-1) n 的 长 度 就 是 密 钥 长 度(二进制),一般1024位,2048位
(3) Bob选择一个随机数e (0<e< φ (n)),且e与φ (n)互质
(4) Bob使用辗转相除法,解下列同余方程, 求解密密钥 d,也即e对于φ (n)的模反元素,等价于求二元一次方程ex+φ (n)y=1
故 d=e-1(modφ(n)) 并保存其私钥: K-1={d, p, q} ed mod φ (n)=1
(5) Bob在目录中公开n和e作为公钥K={e, n}
密码分析者攻击RSA体制的关键点在于如何分解n。若分解成功使n=pq,则可以算出φ(n)=( p-1)(q-1),然后由公开的e,解出秘密的d,一旦d泄漏,就等于私钥泄漏。
RSA算法使用
(1)加密要用公钥 (n,e)
(2)解密要用私钥(n,d)
两种密码体制的比较
对称算法
1)如果有N个成员,就需要N( N-1) /2个密钥
2)知道了加密密钥就等于知道了解密密钥
3)不是建立在严格意义的数学问题上,而是基于多种“规则”和可“选择”假设上
4)通信双方在开始通信之前必须约定使用同一密钥,这就带来密钥在传递过程中的安全问题,所以必须建立受保护的通道来传递密钥
5)对称算法不能提供法律证据,不具备数字签名功能。
6)对称算法加密速度快,这也是对称算法唯一的重要优点,通常用对称算法加密大量的明文。
公开密钥算法
1)每个成员都有一对密钥(pk、sk)。如果有N个成员,只需要2N个密钥,需要的密钥少,密钥的分配和安全管理相对要容易一些。
2)知道加密过程不能推导出解密过程,如果能推导出来也是很难的,要花很长的时间和代价。
3)容易用数学语言描述,算法的安全性建立在已知数学问题求解困难的假设上。
4)需要一个有效的计算方法求解一对密钥 pk、sk ,以确保不能从pk、 sk中相互推导。
5)用公开密钥算法传送信息时,无需在通信双方传递密钥。
6)就目前来看,公开密钥算法加密的速度要比对称算法慢的多。一般只用公开密钥算法加密安全要求高,信息量不大的场合。
信息隐藏技术
基本原理信息的隐藏过程一般由密钥控制,通过嵌入算法将秘密信息隐藏于公开信息中。再将隐藏有秘密信息的公开信息通过网络等信道传递到对方,对方通过检测器利用密钥从隐藏载体中恢复出秘密信息。
两部分组成:
1)信息嵌入算法,它利用密钥来实现秘密信息的隐藏;
2)隐藏信息检测与提取算法,它利用密钥从隐藏载体中检测和提取出秘密信息。
数字水印
数字水印技术就是将指定的数字、序列号、文字、图像标志等版权信息嵌入到数据产品中,以起到版权保护、秘密通信、数据文件的真伪鉴别和产品标识等作用。
主要特征
鲁棒性、水印容量(水印容量的增加会带来鲁棒性的下降)、安全性、自恢复性、不可见性。
水印算法
• 空域算法
• 变换域算法
• 压缩域算法
数字水印攻击
目前已出现的攻击数字水印方法大约可分为5类:简单攻击、同步攻击、迷惑攻击、删除攻击、协议攻击。
分组加密和流加密(序列加密)方法的适用场景分别是什么?
分组密码的用法:
电子簿模式、密码块链接、密码反馈方式、输出反馈方式
流加密:
WEP网络传输协议、硬盘加密、eStream等
了解初等数论和密码算法之间的关系。
对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式破解。到当前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被破解的。
了解当前主要使用的对称和非对称密码方法。
对称密码算法:
包括DES, Rijndael (AES) , Blowfish, IDEA, LOKI, RC5等算法
非对称密钥算法:
RSA等算法