填空:1.密码包括两部分:密码编码学和密码分析学2.根据每次处理数据的多少可以分为流密码、分组密码各自一个代表算法:RC4、DES算法3.单表替换密码的密钥有多少种:26!Playfair 密码有5×5个密钥轮转机:26^n4.IDEA算法密钥长度为128bits,RC4算法的密钥长度为8-2048bitsAES算法的密钥长度分别为128、192和2565.DES密码数据分组为64bits,和输入密钥是64bits,产生56bit的字密钥6.安全服务(X.800),服务分成五大类:认证访问控制数据保密性数据完整性不可否认性名词解释:无条件安全:无论有多少可使用的密文,都不足以唯一的确定密文所对应的明文。
计算的安全:1.破译密码的代价超出密文信息的价值2.破译密码的时间超出密文信息的有效生命对称密钥体制经典的密码体制中,加密密钥与解密密钥是相同的,或者可以简单相互推导,也就是说:知道了加密密钥,也就知道了解密密钥;知道了解密密钥,也就知道了加密密钥。
所以,加、解密密钥必须同时保密。
这种密码体制称为对称(也称单钥)密码体制。
最典型的对称加密算法是DES数据加密标准。
公钥密码体制公钥算法是基于数学函数而不是基于替换和置换的。
公钥密码学使用两个密钥:公密钥、私密钥,其中公密钥可以公开,而私密钥需要保密。
仅根据密码算法和加密密钥来确定解密密钥在计算上是不可行的。
两个密钥中的任何一个都可以用来加密,另一个用来解密。
公钥密码可以用于加密、认证、数字签名等。
ECC椭圆曲线密码学(ECC, Elliptic curve cryptography)是基于椭圆曲线数学的一种公钥密码的方法,ECC他是添加了模拟的模乘运算,叠加的是模拟的模幂运算。
需要困难的问题去当量于离散的log。
Q=KP,Q、P属于主要曲线,他是容易的计算Q的值给出K、P,但是是困难的去找到K给出Q、P,解决椭圆算法问题。
Eq(a,b)碰撞(Collision)如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。
既然是把任意长度的字符串变成固定长度的字符串,所以,必有一个输出串对应无穷多个输入串,碰撞是必然存在的。
置换:指古典密码的编码方式的一种,把明文中的字母重新排列,字母本身不变,但其位置改变了,从而实现加密明文的过程。
替换:代换是指古典密码的编码方式的一种,即将明文中的字符替换成其他字符,产生相互映射的关系。
离散对数选择一个素数p,设α与β为非0的模p整数,令)(modpxαβ≡,求x的问题成为离散对数问题。
如果n是满足nα)mod1p(≡的最小正整数,假设0nx<≤,我们记)(βαLx=,并称之为与α相关的β的离散对数(素数p可从符号中忽略混淆:使得密钥和明文以及密文之间的依赖关系相当复杂以至于这种依赖性对密码分析者来说是无法利用的。
目前主要采用替代运算以及非线性运算等。
在DES主要采用S盒替代。
扩散:密钥的每一位数字影响密文的许多位数字以防止对密钥进行逐段破译,而且明文的每一位数字也应影响密文的许多位数字以便隐蔽明文数字统计特性。
最简单的扩散是置换。
简答:HMAC设计思路1.在消息中使用散列函数:2.其中K+填充大小是关键3.OPAD,iPad都采用指定的填充常量4.开销仅有3哈希的消息需要单独计算比5.任何MD5,SHA-1,RIPEMD-160,可以使用五种模式Electronic Codebook Book(ECB):消息被分成独立块是加密每个块是一个值,该值被取代的,像一个码本,因此命名独立于其它块的每个块的编码Ci = DES k1 (Pi)用途:安全传输的单值优点和局限性:重复的消息可能会出现在密文如果对其的消息块特别是数据,例如图形或与信息变化非常小,这成为一个码书的分析问题弱点由于是独立的加密消息块主要用途是发送一些数据块Cipher Block Chaining (CBC)消息被破碎成块但这些在加密操作中被链接在一起每个以前的密文块是拴在当前的明文块,因此名称使用的初始向量(IV)的启动过程CI = DES k1(Pi XOR Ci-1)C-1= IV用途:批量数据加密,身份认证优点和局限性:每个密文块都依赖于所有的消息,在此之前块因此,在消息中的变化会影响所有变更后的密文块,以及原来的块后需要已知的发送器和接收器的初始值(IV)但是,如果四是明文发送的,攻击者可以更改位的第一个块,并改变IV,以弥补因此,要么IV必须是一个固定的值(如EFTPOS)或它必须被发送之前在ECB模式加密的其余消息在结束的消息,处理可能出现的最后一个短块通过与已知的数据值(例如空值填充)或垫的最后一个数据块计数焊盘尺寸,如[B1,B2,B3 0 0 0 0 5]< - 3字节数据,然后5个字节垫+计数Cipher FeedBack (CFB)消息被视为一个比特流添加到输出的块密码结果反馈为下一阶段(名)标准允许任何数量的位(1,8或64或任何)被反馈表示CFB-1 CFB-8,循环流化床-64等是最有效的使用的所有的64个位(CFB-64)Ci = Pi XOR DES K1(Ci-1)C-1 = IV用途:流数据加密,身份认证优点和局限性:相应的数据到达时,位/字节最常见的流模式限制来搪塞,而每n位块加密后Output FeedBack (OFB)消息被视为一个比特流输出的密码被添加到消息输出反馈(因此名字)反馈的消息是独立的可以预先计算Ci = Pi XOR OiOi = DESK1(Oi-1)O-1 = IV用途:流加密噪声信道优点和局限性:错误反馈问题或需要时使用加密邮件之前可表面上类似CFB但反馈是从输出的密码,并且是独立的消息发送方和接收方必须保持同步,和一些恢复方法是必要的,以确保发生这种情况最初指定的m位反馈的标准后来的研究表明,只有被使用OFB-64Counter (CTR)一个“新”模式,虽然早期提出类似OFB加密计数器的值,而不是任何反馈值必须有一个不同的密钥,每个明文块的计数器值(不会被重用。
)Ci = Pi XOR OiOi = DESK1(i)用途:高速网络加密优点和局限性:效率1可以做并行加密2在需要的提前3对突发的高速连接随机访问加密的数据块可证明安全性(其他模式)但必须确保不会重复使用的键/计数器的值,否则可能会破坏(CF OFB)hash用途对应的几个图(a)A→B:EK[M||H(M)] (c) A→B:M||EKRa[H(M)] 提供保密——仅A和B共享K 提供认证和数字签名提供认证——加密保护H(M) 加密保护H(M)(b) A→B:M||EK[H(M)] 仅A能生成EKRa[H(M)] 提供认证——加密保护H(M)(d) A→B:EK[M||EKRa[H(M)]]提供认证和数字认证提供保密——仅A和B共享K(e) A→B:M||H(M||S)提供认证——仅A和B共享S(f) A→B:EK[M||H(M)||S]提供认证和数字签名——仅A和B共享S提供保密——仅A和B共享K分析题:1、RSA算法设计,因式分解问题,密文膨胀。
RSA算法原理实例选择两个素数:p=17 和q=11;计算n = pq =17×11=187;计算ø (n)=(p–1)(q-1)=16×10=160选择e,使其与ø (n)互素且小于ø (n)。
在此选择e = 7确定d:d×e≡1 mod 160 并且 d < ø (n) 。
因为23×7=161= 10×160+1,符合要求。
所以选择d=23 。
公布公钥KU={7,187}保护私钥KR={23,17,11}对于明文信息m = 88 (88<187)加密:C = 887 mod 187= [(884 mod 187) ×(882 mod 187) ×(881 mod 187)]mod187= (88×77 ×132) mod187=11881 mod 187= 88882 mod 187=(88 ×88)mod187=77884 mod 187= [(882 mod 187) ×(882 mod 187)]mod187= (77 ×77) mod187=132解密:M = 1123 mod 187 = 882、DH算法设计,离散对数问题,中间人攻击DH算法设计:1.对于所有用户选择一个大素数或者多项式q(公开)α作为mod q的幂根(公开)2.对于用户A获取密钥:选择一个私钥xA < q计算它的公钥yA = α^xA mod q3.对于用户B获取密钥:选择一个私钥xB < q计算它的公钥yB = α^xB mod q4.每个用户都公开它的公钥5.可以获取的信息有{α, q, yA,yB }6.共享会话密钥对于用户A和B是K AB用中间相遇攻击搜索DES-EDE3的时间复杂度是多少?给出具体方法C=EK3(DK2(EK1(P)))⇒X = DK3(C) = DK2(EK1(P))对所有2112个密钥(k1k2), DK2(EK1(P)),对结果排序对所有256个密钥(k3),解密C,对结果排序3.逐个比较,找出K1,K2使得DK3(C) = DK2(EK1(P))4.时间复杂度为max( 2112 ,256 )= O(2112)Hash 函数和MAC 的主要解决什么信息安全问题,他们之间的区别和联系是什么? 答:用来检验信息完整性;MAC 是一种需要key 的算法,以可变长度的消息和key 作为输入,产生一个认证码,拥有key 的接收方产生一个验证码来验证消息的完整性。
Hash 函数将可变长度的消息映射为固定长度的Hash 值,对于MAC 、Hash 函数必须以某种方式和key 捆绑起来。
计算题:Caesar(恺撒)密码C = E(p) = (p + k) mod (26)p = D(C) = (C – k) mod (26)如k =3,则规定的替换如下:于是明文hello 变成密文为:khoor密钥只有25种,非常容易被破解。
Playfair 密码在单表替换中长密钥并没有提供足够的理想的安全性,增强安全性的一个途径是对多个字母组合进行加密。
Playfair 将明文中的双字母组合作为一个单元对待,并将这些单元转换为密文的双字母组合。
- 构造密钥矩阵首先填入密钥,矩阵剩余部分填入其他的字母。
例如,使用密钥MONARCHY ,构造出来的密钥矩阵如下:⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡Z X W V U T S Q P LK J I G F E D B Y H C R A N O M /接着,使用密钥矩阵进行加密:加密规则:按成对字母加密相同对中的字母加分隔符(如x)Balloon -> ba lx lo on同行取右边:on -> na同列取下边:ba -> ib其他取交叉:lx -> qt; lo -> faBalloon -> ba lx lo on -> ibqtfanaVigenere 密码另一种增强安全性的方法是使用多表替换,破坏语言的统计特性,使用相关的单表代换规则,用密钥选择决定使用那个代换表。