480 likes | 753 Vues
第 2 章 密码学概论. 随着计算机病毒所带来危害的日益加剧,计算机犯罪事件不断的增加,黑客攻击的日益频繁,信息安全已成为人们不得不面对的问题。 互联网的广泛使用,全世界都在自投入网,如果不加强网络安全,则将被一网打尽。 作为信息安全的核心技术 —— 密码技术成为人们研究和关注的重点。 有关信息加密技术的研究,特别要注意重视自主开发。. 对于 DES 算法加密产品,美国中央情报局对密钥位在几年前曾作过预测和比较:. 美国政府作出限制密钥为 56bit 位的产品出口,而去年开始放宽出口限制,但其背景是什么呢?
E N D
第2章 密码学概论 • 随着计算机病毒所带来危害的日益加剧,计算机犯罪事件不断的增加,黑客攻击的日益频繁,信息安全已成为人们不得不面对的问题。 • 互联网的广泛使用,全世界都在自投入网,如果不加强网络安全,则将被一网打尽。 • 作为信息安全的核心技术——密码技术成为人们研究和关注的重点。 • 有关信息加密技术的研究,特别要注意重视自主开发。
对于DES算法加密产品,美国中央情报局对密钥位在几年前曾作过预测和比较:对于DES算法加密产品,美国中央情报局对密钥位在几年前曾作过预测和比较: 美国政府作出限制密钥为56bit位的产品出口,而去年开始放宽出口限制,但其背景是什么呢? 对密钥为56bit位DES只要化25万美元,在不到3天就可破译。
密码技术涉及哪些内容? • 下面通过简单例子来引入。 • Alice和Bob想在晚上一起出去,但定不下来是去电影院还是歌剧院,但他们达成协议,通过掷硬币来决定 • 如果他们是通过电话来执行上述协议,显然无法公平实现,因为一方无法验证对方掷硬币的结果。 • 如果在协议中加入密码技术,可形成适合在电话上工作的形式。 • 把密码技术看成函数f(x):Z到Z,且具有性质: • (1)对任意函数,由x计算f(x)是容易的,而给出f(x),要找出对应的x是难的; • (2)找出一对整数(x, y),满足x≠y而f(x)=f(y)是难的。 • 密码技术将研究探讨容易,难的的数学描述,建立量化表示。
电话掷币 • 1.Alice 选择一个大随机数x,并计算f(x);然后通过电话告诉Bob f(x)的值; • 2.Bob告诉Alice自己对x的奇偶猜测; • 3.Alice告诉Bob x的值; • 4.Bob验证f(x)并查看所做猜测是否正确。 • 在开放的计算机和通信网络中保证安全通信,采用密码技术是有效且是唯一可行的方法。 • 电子商务,事务处理,等信息系统对安全的需求,导致了很多密码系统和协议的产生。
2.1 信息加密的基本概念 • 密码学分为密码编码学和密码分析学两个分支。 • 密码编码学是对信息进行编码实现隐蔽信息的一门学问 • 密码分析学则是研究分析破译密码的学问 • 两者互相对立,又互相促进向前发展。
对信息进行编码可以隐蔽和保护需要加密的信息,使未授权者不能提取信息。对信息进行编码可以隐蔽和保护需要加密的信息,使未授权者不能提取信息。 • 被隐蔽的信息称为明文, • 编码后明文变换成另一种隐蔽形式,称为密文。 • 这种变换过程称为加密 • 其逆过程,即由密文恢复成原明文的过程称为解密。 • 对明文进行加密时所采用的一组规则称为加密算法 • 对密文进行解密时所采用的一组规则称为解密算法。
加密和解密算法的操作通常都是在一组密钥控制下进行的,分别称为加密密钥和解密密钥。加密和解密算法的操作通常都是在一组密钥控制下进行的,分别称为加密密钥和解密密钥。 • 密钥是密码体制安全保密的关键,它的产生和管理是一个重要研究课题。 • 在一个密码体制中,如果加密密钥和解密密钥相同,或从一个易得到另一个,就称其为单钥密码体制或对称密码体制。 • 如果在密码体制中,加密密钥和解密密钥不同,且从一个难于推出另一个,则称为双钥密码体制或非对称密码体制, • 1976年由Diffe和Hellman等人所开创的新体制
采用双钥体制的每个用户都有一对选定的密钥:一个是可以公开的,另一个则是秘密的。采用双钥体制的每个用户都有一对选定的密钥:一个是可以公开的,另一个则是秘密的。 • 公开的密钥可以进行注册公布,因此双钥密码体制又称为公钥密码体制。 • 其主要特点是将加密和解密能力分开,从而实现多个用户加密的信息只能由一个用户解读,或只能由一个用户加密信息而使多个用户解读。
在信息传输和处理系统中,除了确定的接受者外,还有非授权者在信息传输和处理系统中,除了确定的接受者外,还有非授权者 • 他们通过各种办法(如搭线窃听、电磁窃听、声音窃听等)来窃取机密信息。 • 他们虽然不知道系统所用的密钥,但通过分析可能从截获的密文推出原来的明文,这一过程称为密码分析。 • 研究如何从密文推出明文、密钥或解密算法的学问称为密码分析学。
为了保护信息的保密性,抗击密码分析,信息加密系统应满足如下要求:为了保护信息的保密性,抗击密码分析,信息加密系统应满足如下要求: • (1)系统至少为实际上不可破,即,从截获的密文或某些已知明文密文对,要决定密钥或任意明文在计算上是不可行的 • (2)系统的保密性只依赖于密钥的保密。 • (3)加密和解密算法适用于所有密钥空间中的元素。 • (4)系统便于实现和使用方便。
为了防止信息被篡改、删除、重放和伪造,就要求系统具有对发送的信息验证的能力,使接收者或第三者能够设别和确认信息的真伪。为了防止信息被篡改、删除、重放和伪造,就要求系统具有对发送的信息验证的能力,使接收者或第三者能够设别和确认信息的真伪。 • 实现这类功能的系统称为认证系统。 • 信息认证要求能保证任何不知密钥的人不能构造出一个密文,使确定的接收者脱密成一个可理解的信息。 • 信息的完整性,它表示在干扰条件外,系统保持恢复信息和原来发送信息一致性的能力,实际中常借助于检错和纠错技术来保证信息的完整性。 • 信息系统安全的中心内容是保证信息的保密性、认证性和完整性。
2.2 单表代换密码 • 2.2.1代换密码概述 • 令A表示明文字母集,它有q个字母或字符,可以抽象地用Zq={0,1,2,…, q-1}来表示。 • 在加密时,将明文分成长为L的信息单元,称为明文组,用m表示,即m=(m0m1…mL-1)(mi∈Zq)。 • 通常称m为L-报文,它是定义在ZqL上的随机变量(ZqL是Zq上的L维向量空间)。明文空间M={m|m∈ZqL}。
令A'表示密文字母集,它有q'个字母或字符,可用Zq'={0,1,2,…, q'-1}来表示。密文单元为c=(c0c1…cL'-1)(ci∈Zq')。c是定义在Zq’L’上的随机变量(Zq’L’是Zq'上的L'维向量空间)。密文空间C={c|c∈Zq’L’}.当A=A'时,有C= {c|c∈ZqL’},即明文和密文由同一字母表构成。 • 加密变换是由明文空间到密文空间上的映射 • f: M→C(m∈M,c∈C) • 当f是一一对应映射时,存在逆映射f-1,使
加密变换通常是在密钥控制下变化的,即 • c=f(m,k)=Ek(m) • 其中k∈Y,Y为密钥空间。 • 一个密码系统就是在f作用下由→的映射,或以中的元素代替中的元素,在此意义下称这类密码为代换密码。 • 当L=1时,称为单字母代换,L>1时,称为多字母代换。
一般选择A=A',即明文和密文字母表相同。 • 若L=L',则映射f可以构造成一一对应,密码没有数据扩展。 • 若L<L',则有数据扩展,可使映射f为一对多的,即明文组可能找到多于一个密文组来代换,称为多名代换密码。 • 若L>L',则明文数据将被压缩,此时每个明文组无法找到唯一的只与它相对应的密文组,映射f是不可逆的,从密文无法完全恢复成明文信息 • 在信息加密时必须是L≤L'。 • 而L>L'的变换可用在数据认证系统。
2.2.2几种代换密码 • 在代换密码中,当A=A',q=q',L=L'时,如果明文的所有字母都用一个固定的明文字母表到密文字母表的映射,即f:Zq→Zq,则称这种密码为单表代换。 • 令明文m= m0m1…,则其相应密文为: • c=E(m)=c0c1…=f(m0) f(m1)… • 若明文字母表A=Zq={0,1,…,q-1},则相应的密文字母表为A'={f(0), f(1),…f(q-1)},A'是A的某种置换。
1.加法密码 • 加法密码表达式为: • Ek(i)=(i+k)≡j mod q 0≤i,j<q, Y={k|0≤k<q} • 其中密钥空间元素个数为q • k=0为恒等变换。 • 解密变换为: • Dk(j)= Eq-k(j)≡j+q-k≡i+k-k≡i mod q • 密文字母表是将明文字母表循环左移k位 • 由于k只能取25个不同数字(除去k=0的恒等变换),故安全性极差。
例2.1:对英文26个采用加法密码,选定密钥为k=5,则有代换表:例2.1:对英文26个采用加法密码,选定密钥为k=5,则有代换表: • A: a b c d e f g h i j k l m n o p q r s t u v w x y z • A' :F G H I J K L M N O P Q R S T U V W X Y Z A B C D E • 明文m=This is aprivate conversation • 密文c=YMNX NX FUWNAFYJ HTSAJWXFYNTS
2.乘法密码 • 乘法密码的加密变换为 • Ek(i)=ik≡j mod q 0≤i,j<q • 其密文字母表是将明文字母表按下标每隔k位取出一个字母排列而成。 • 例2.2:对英文26个采用乘法密码,选定密钥为k=7,则有代换表: • A =abcdefghijklmnopqrstuvwxyz • A'=AHOVCJQXELSZGNUBIPWDKRYFMT • 对明文m=multiplicative cipher • 有密文c=GKZDEBZEOADERC OEBXCP
确保Ek是一一对应的。 • 不加证明地给出定理: • 定理2.1 当且仅当(k,q)=1时,Ek才是一一对应的。 • 由定理可知,乘法密码的密钥个数为(q)((q)表示小于q且与q互素的个数,称为整数q的欧拉函数) • 除去k=1这一恒等变换,可供选择的密钥为(q)-1个。
对于q=26,我们有(q)=12,故除去k=1恒等变换,可供选择的密钥只有1,5,7,9,11, 15,17,19,25共11个 • 保密性极差
3.仿射密码 • 将加法密码和乘法密码进行组合就可得到更多数量的不同密码。按公式 • Ek(i)=ik1+k0≡j mod q 0≤i, j,k1, k0<q , • 加密的称为仿射密码。 • 当(k1,q)=1时,Ek是一一对应的。 • 当k0=0时,即为乘法密码,当k1=1时,即为加法密码。 • q=26时,k1有12种选法,k0有26种选法,因而k0、k1共可组合成12×26=312种选法 • 除去恒等变换,可有密钥数311种 • 对于用手工进行穷举,需要花费相当的时间和精力。
4.密钥短语密码 • 密码表是从正常顺序字母表按某种规律变换而成 • 优点是便于记忆,缺点是密钥量小,保密强度低。 • 如果代换字母表由26个字母随机抽取排列,则共有26!种不同的排列,即共有26!个不同密钥。 • 26!≈4×1026,是一个很大的量。 • 用穷举法进行密码分析,即便利用现代计算机,也是很困难的
为了保留随机代换密码密钥量大的优点,同时又克服密钥不便记忆的缺点,就产生了密钥短语密码。为了保留随机代换密码密钥量大的优点,同时又克服密钥不便记忆的缺点,就产生了密钥短语密码。 • 基本思想是任意选择一个英文短语作为密钥,去掉重复字母后,将其依次写在明文字母表的下面,然后将字母表中没有在短语中出现的字母依次写在此短语后面,就可构造出一个字母代换表。
例2.3:取密钥短语为key phrase cipher,则其代换表为 • A =a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,x,t,z • A'=K,E,Y,P,H,R,A,S,C,I,B,D,F,G,J,L,M,N,O,T,U,V,W,X,Z • 若明文m=key phrase cipher • 则密文c=BHX LSNKOH YCLSHN • 密钥短语是可以任意选择的,故可构成的代换字母表的数量是极大的 • 足以对付密码分析者用穷举法进行的攻击 • 同时密钥短语既可任意选择,又便于记忆
2.2.3密码分析的统计方法 • 密钥短语密码与其他单表代换密码一样,每个字母都是用另一个字母固定代换 • 因而明文中所用语言的各种统计特性都会反应到密文中, • 这样只要所截获的密文具有适当长度,足以反映出所用语言的某些统计特性, • 利用统计方法就可以很快破译单表代换密码。
字母e出现的频率最高,z出现的频率最低。依据各字母出现频率大小的不同,可将26个字母划分为五组,如下表所示:字母e出现的频率最高,z出现的频率最低。依据各字母出现频率大小的不同,可将26个字母划分为五组,如下表所示:
利用统计分析方法,破译单表代换密码的方法是:利用统计分析方法,破译单表代换密码的方法是: • 首先根据密文的统计分析得到单字母频率分布表,将密文字母按频率分类,并与明文字母分类表进行比较,得到初步了解; • 通过研究双字母、三字母或四字母的密文组合来区分元音和辅音字母,从而确定表示元音的那些密文字母; • 采用猜字法,像beginning,committee, people,tomorrow等在密文中也会以某种形式出现,由此进行试验。 • 综合利用英语本身的各种统计特性,对单表代换进行统计分析,破译这类单表密码。
2.3 多表代换密码 若是非周期的无限序列,则相应的密码为非周期多表代换密码。 这类密码对每个明文字母都采用不同的代换表(或密钥),称为一次一密钥密码,是理论上唯一不可破的密码,它可以使明文特点完全隐蔽, 需要密钥量和明文信息长度相同而难于广泛使用
2.3.1几种多表代换密码 • 1.维吉尼亚密码 • 以加法密码为基础的周期代换密码。 称K为用户密钥,其周期地延伸就给出了整个明文加密所需的工作密钥。
例2.4:令q=26,m=user key and working key,用户密钥K=RADIO,即d=5,则有: • 明文m=user key and working key • 密钥K=RADI ORA DIO RADIORA DIO • 密文c=LSHZ YVY DVR NOUSWEG NMM
2.博福特密码 • 博福特密码是按mod q减法运算的一种周期代换密码,即 • ci+td=Eki(mi+td)= ki -mi+td+ki mod q • 博福特密码以ki加密相当于下式的维吉尼亚密码加密: • ci+td=((q-1)-mi+td+ki)mod q
3.弗纳姆密码 • 周期代换密码保密性随周期d加大而增加。 • 当d的长度和明文一样长时就是滚动密钥。 • 如果其中所采用的密钥不重复就是一次一密体制。 • 一般密钥可取自一本书或一篇报告作为密钥源 • 当字母表字母数q=2时的滚动密钥密码称为弗纳姆密码。 • 该密码方案是先将英文字母编成五单元波多电码(见下表),然后随机选择二元数字流作为密钥,用K=k1k2…kl…(kl {0,1})表示。 • 明文字母表示为(ki∈{0.1}。
弗纳姆密码的加密运算就是将k和m的相应位逐位模2相加,即弗纳姆密码的加密运算就是将k和m的相应位逐位模2相加,即 • ci=mikimod2 i=1,2…, • 解密时,可用同样的密钥对密文数字同步地逐位模2相加,便可恢复出明文的二元码序列,即 • mi=cikimod2 i=1,2…,
2.3.2密码分析 • 单表代换可以依靠语言的统计特性来破译, • 多表代换下,原来的统计特性通过多个表的平均作用而被隐蔽起来,因而它的破译比单表要难。 • 在周期为d的多表代换中,字母表中的每个字母将根据它在明文字母序列中的位置而有d种不同的代换字母。 • 在多表代换下,密文字母的频率分布起伏不象明文的起伏那样明显,而且随着代换表数d的加大而更加趋于平坦。 • 但可以通过定量分析,来研究多表代换与单表代换的差别。
2.4 多字母代换密码 • 2.4.1几种多字母函数 • 1.普莱费尔密码 • 这是一种著名的双码代换密码,它的密钥由5×5阶矩阵给定,将英文字母随机填入阵中,将I和J算作一个字母。 • 可选定一个密钥字,除去重复字母后依次按行填入阵中,而后将字母表中还没用上的各字母继续按行填入阵中,就得到密钥阵K。
将明文划分成长为L=2的组或字母对,用(m1,m2)表示,它们在密钥阵K中的位置用(kij,kln),假设(m1≠m2),则(m1,m2)=(kij,kln)的密文字母为:将明文划分成长为L=2的组或字母对,用(m1,m2)表示,它们在密钥阵K中的位置用(kij,kln),假设(m1≠m2),则(m1,m2)=(kij,kln)的密文字母为: 式中,下标指数按模5运算。 如果m1=m2,则可在m1和m2之间插入哑字母如x,则明文变为…m1xm2…。
例2.5:明文m=cryptographic system,取cryptography为密钥字,则其密钥阵就是: 相应加密结果是: m=cr yp to gr ap hi cs ys te mx c=RY PT CB EG HY IQ TL TN RK QV
2.矩阵变换密码 若映射是线性变换,可用Zq上的L×L矩阵T表示 若T是满秩的,则变换为一一对应映射,存在逆变换T-1,使TT-1=T-1T=I。 将L个字母的数字表示为Zq上的L维向量m=(m1,m2,…,mL), 则相应的密文向量c=(c1,c2,…,cL)为mT=c。 把T-1作为解密矩阵,可由c恢复出相应明文cT-1=m
加密时,先将字母按下述乱序表变换成Z26上的整数:加密时,先将字母按下述乱序表变换成Z26上的整数: Abcdefghijklmnopqrstuvwxyz 3 15 4 10 1 13 7 24 2 16 9 14 5 12 20 6 18 25 8 19 22 21 0 17 23 11 • 例2.7:设q=26,L=4,选满秩阵 对明文m=cryptographic system的前4个字母组变换成向量x=(4,25,23,6) 由xT(mod26)得密文y=(3,8,2,25),相应密文字母为ASIR 类似可依次对后面明文组加密。 若最后一组明文不足4个字母,就加上哑字母(如x)凑足4个。 最后可求得密文为ASIR QGLT WCFW BMSK IPWG。
加密中,4个字母为一个整体,变换其中任一个明文字母都会使相应的4个密文字母受到影响。例如,将cryp变为crmp所得密文就由ASIR变为YUSK。加密中,4个字母为一个整体,变换其中任一个明文字母都会使相应的4个密文字母受到影响。例如,将cryp变为crmp所得密文就由ASIR变为YUSK。 • 该例的逆阵 由yT-1(mod26)可得到x,由x及乱序表就可恢复出明文。
3.扩表法 • 扩表法就是将字母表Zq扩展为ZqL,然后再采用单表代换。 • 将Zq上的L个字母m0,m1…,mL-1表示成ZqL中的整数 • x=m0+m1q+m2q2+…+mL-1qL-1 • 任一L长字母组都变成ZqL={0,1,…,qL-1}上的某个元素,然后再对该元素加密。
例2.8:英文字母表Z26={0,1,…,25},采用双码扩表加密,则Z262={0,1,…,675}。例2.8:英文字母表Z26={0,1,…,25},采用双码扩表加密,则Z262={0,1,…,675}。 • 明文字母对is可表示成Z262中的数字x=8+18×26=476。 • 对Z262采用仿射变换,取k0=576,k1=129 • y≡129×476+576≡464 • ≡17×26+22(mod675), • 相应密文字母为WR。 • 解密时先将密文字母WR变换成中的元素,即y=17×26+22=464,而后按加密的反变换求解出x=18×26+8。
2.4.2密码分析 • 同样可以进行密码分析