现代密码学总结_第1页
现代密码学总结_第2页
现代密码学总结_第3页
现代密码学总结_第4页
现代密码学总结_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、现代密码学总结 第一讲 绪论· 密码学是保障信息安全的核心· 安全服务包括:机密性、完整性、认证性、不可否认性、可用性· 一个密码体制或密码系统是指由明文(m或p)、密文(c)、密钥(k)、加密算法(E)和解密算法(D)组成的五元组。· 现代密码学分类:· 对称密码体制:(又称为秘密密钥密码体制,单钥密码体制或传统密码体制)密钥完全保密;加解密密钥相同;典型算法:DES、3DES、AES、IDEA、RC4、A5· 非对称密码体制:(又称为双钥密码体制或公开密钥密码体制)典型算法:RSA、ECC第二讲 古典密码学· 代换密码:

2、古典密码中用到的最基本的处理技巧。将明文中的一个字母由其它字母、数字或符号替代的一种方法。(1)凯撒密码:c = E(p) = (p + k) mod (26) p = D(c) = (c k) mod (26)(2)仿射密码:明文p Z26,密文c Z26 ,密钥k=(a,b) ap+b = c mod (26)(3)单表代换、多表代换Hill密码:(多表代换的一种)明文p (Z26)m,密文c (Z26)m ,密钥K 定义在Z26上m*m的可逆矩阵加密 c = p * K mod 26 解密p = c * K-1 mod 26Vigenere密码:查表解答(4)转轮密码机:· 置

3、换密码··· :将明文字符按照某种规律重新排列而形成密文的过程列置换,周期置换· 密码分析:· 统计分析法:移位密码、仿射密码和单表代换密码都没有破坏明文的频率统计规律,可以直接用统计分析法· 重合指数法· 完全随机的文本CI=0.0385,一个有意义的英文文本CI=0.065· 实际使用CI的估计值CI:L:密文长。 fi:密文符号i发生的数目。第三讲 密码学基础第一部分 密码学的信息论基础· Shannon的保密通信系统模型· 对称密码体制· 非对称密码体制· 一个密码体

4、制是一个六元组:(P, C, K1, K2, E, D )P-明文空间 C-密文空间 K1 -加密密钥空间 K2 -解密密钥空间E -加密变换 D -解密变换 对任一kK1,都能找到k K2,使得D k (E k (m)=m,mM.· 熵和无条件保密· 设随机变量X=xi | i=1,2,n, xi出现的概率为Pr(xi) 0, 且 , 则X的不确定性或熵定义为熵H(X)表示集X中出现一个事件平均所需的信息量(观察前);或集X中每出现一个事件平均所给出的信息量(观测后).· 设X=xi|i=1,2,n, xi出现的概率为p(xi) 0,且i=1,n p(xi)=1

5、; Y=yi|i=1,2,m, yi出现的概率为p(yi) 0,且i=1,m p(yi)=1;则集X相对于集Y的条件熵定义为· X视为一个系统的输入空间,Y视为系统的输出空间,通常将条件熵H(X|Y)称作含糊度,X和Y之间的平均互信息定义为:I(X,Y)=H(X)-H(X|Y) 表示X熵减少量。· 完善保密的(无条件保密的)密码系统(P,C,K,E,D)系统满足 或 第二部分 复杂性理论· 算法计算复杂性常常用两个变量来度量:时间复杂度(计算复杂度)T和空间复杂度S· 假设一个算法的计算复杂度为O(nt),其中t为常数,n为输入问题的长度,则称这算法的复

6、杂度是多项式的。具有多项式时间复杂度的算法为多项式时间算法。· 如果一个算法的复杂度为O(tf(n),t为大于1的常数,f(n)是以n为自变量的多项式函数,则称该算法的复杂度是指数的。当f(n)是大于常数而小于线性函数时,称为亚指数时间算法。· 如果一个判定问题存在解它的多项式时间的算法,则称该问题属于P类.如果一个判定问题不存在解它的多项式时间的算法,且对于一个解答可以在多项式时间验证其是否正确,则称该问题属于NP类.第四讲 分组密码· DES算法· 整体结构:Feistel结构· 给定明文,通过一个固定初始置换IP来重排输入明文块P中的比特

7、,得到比特串P0=IP(P)=L0R0,这里L0和R0分别是P0的前32比特和后32比特· 16轮迭代,密钥生成按下述规则进行16次迭代,即1i16这里 是对应比特的模2加,f是一个函数(称为轮函数);16个长度为48比特的子密钥Ki(1i16)是由密钥k经密钥编排函数计算出来的.· 对比特串R16L16使用逆置换IP-1得到密文C,即C=IP-1 (R16L16)· 注意:第十六轮迭代左右两块不交换· 分组密码的轮函数(f)· 长度为32比特串Ri-1作为第一输入,以长度为48比特串Ki作为第二个输入,产生长度为32比特的输出 ·

8、扩展置换(E盒):32位输入扩展为48位输出:按照8行6列次序排列,从32,1,2排列,上一行的后两位一次在下一行的起始位置得到重用。· 密钥加:按位异或加,计算· S盒代换:DES中唯一的非线性部分8个S盒。每个S盒输入均为6位,输出为4位。Bj=b1b2b3b4b5b6, b1b6确定行r的二进制表示, b2b3b4b5确定列c的二进制表示,行列确定唯一长度为4的二进制数字· P置换:根据固定置换P(*)进行置换· DES算法的密钥编排算法· 64比特密钥K,根据固定置换PC-1来处理K得到PC-1(K)=C0D0,C0和D0分别由最前和最

9、后28比特组成(去除8,16,24,32,40,48,56,64这8位奇偶校验位)· 对1i16, DES的每一轮中使用K的56比特中的48个比特(压缩方法:删除C中的9,18,22,25位和D中的7,9,15,26位)· 计算Ci=LSi(Ci-1)和Di=LSi(Di-1),且Ki=PC-2(CiDi),LSi表示循环左移两个或一个位置, 具体地, 如果i=1,2,9,16就移一个位置,否则就移两个位置, PC-2是另一个固定的置换。· DES的解密与加密使用一样的算法,以密文y作为输入,以相反顺序使用密钥编排K16,K15,K1,输出的是明文X·

10、DES算法的扩散· 两轮扩散:· 三轮扩散:从LO的一块数据影响开始· AES算法· 128位(16个字)输入明文,128位密钥长度,第一次迭代前 明文 密钥· AES算法整体结构:· AES算法的轮函数Rijndael轮函数1)字节代换(SubByte) 2)行移位(ShiftRow) 3)列混合(MixColumn) 4)密钥加(AddRoundKey) 字节代换:字节代换是非线形变换,独立地对状态的每个字节进行,代换表(即S-盒)是可逆的 S盒可以由以下两步运算得到:· 求输入元素在m(x)=x8+x4+x3+x+1

11、上的逆元;· 对上步中所求得的逆元进行如下运算行移位:行移位是将状态阵列的各行进行循环移位,不同状态行的位移量不同;第0行不移动;第1行左移1字节;第2行左移2字节;第3行左移3字节 · 列混合: 其中:(00000010)*(a7a6a5a4a3a2a1a0)=( a6a5a4a3a2a1a00) ,a7为0; =( a6a5a4a3a2a1a00) (00011011),a7为1 (00000001)*(a7a6a5a4a3a2a1a0)= (a7a6a5a4a3a2a1a0)(00000011)*(a7a6a5a4a3a2a1a0)= (00000010)*(a7a6

12、a5a4a3a2a1a0) (a7a6a5a4a3a2a1a0)· 密钥加:密钥加是将轮密钥简单地与状态进行逐比特异或;轮密钥由种子密钥通过密钥编排算法得到 注:结尾轮函数将列混合这一步骤去掉· AES算法的密钥编排算法· 密钥编排指从种子密钥得到轮密钥的过程,AES的密钥编排由密钥扩展和轮密钥选取两部分组成,基本原则如下:轮密钥的总比特数等于轮数加1再乘以分组长度;(10+1)*128=1408)种子密钥被扩展成为扩展密钥轮密钥从扩展密钥中取,第1轮轮密钥取扩展密钥的前Nb个字,第2轮轮密钥取接下来的Nb个字· 密钥扩展:每一列的4个字节组成一个字&g

13、t;对w数组扩充40个新列,构成总共44列扩展密钥数组,如下产生(1)如果i不是4的倍数,那么wi=wi-4 wi-1(2)若果i是4的倍数,那么wi=wi-4 T(wi-1) T为一个复杂的函数T函数由三个部分组成:字循环,字节代换和轮常量异或· 字循环:将1个字中的4个字节循环左移1个字节。即b0 ,b1,b2,b3变换成b1,b2,b3,b4· 字节代换:对自循环的结果使用S盒(书上P112表4-15)· 将前两步的结果同轮常量Rconj进行异或,其中j表示轮数· 轮密钥的选取· AES的解密变换· ByteSub的逆变换由代换

14、表的逆表做字节代换· 行移位运算的逆变换是循环右移,位移量与左移时相同· 列混合运算的逆运算是类似的,即每列都用一个特定的多项式d(x)相乘d(x)=0Bx3+0Dx2+09x+0E.· 密钥加运算的逆运算是其自身· AES算法的扩散第一轮第二轮总体· 其他典型分组密码SMS4算法·· 128比特明文分为4个32比特字,分别赋值给四个寄存器A、B,C,D(D为最高).进行32轮F运算,设每轮输入为寄存器当前状态值 和轮密钥为 ,则轮函数F为:将寄存器最右边字A的值移出,高三个字顺次右移32位,F函数的输出赋值给最左边的寄存器

15、字D.32轮的输出 进行反序变换R,然后输出密文.· 轮函数F以字为单位进行运算,输入寄存器值 和轮密钥 合成置换T:是一个可逆变换,由非线性变换和线性变换L复合而成, 即T(.)=L(.)非线性变换由4个并行的S盒构成线性变换L:· 密钥编排算法· 加密密钥长度为128比特MK· 轮密钥表示为 ,· 为系统参数, 为固定参数,用于密钥扩展算法· 密钥扩展算法:T变换与加密算法轮函数中的T基本相同,只将其中的线性变换L修改为固定参数CKi的取值方法为:设 为 的第j 字节(i=0,1,31;j=0,1,2,3,即则· 分组密

16、码的运行模式· 为了能在各种场合使用DES,定义了4中DES运行模式:ECB,CBC,CFB,OFBAES的另外一种运行模式:CTR· ECB模式最简单的一种分组密码工作方式。一次处理一个明文分组。密文块可以分别独立解密,无顺序要求;密钥相同时,明文中相同的64比特分组产生相同的64比特密文块;不存在错误传播,一块密文传送错误只导致对应明文解密错误;主要用于发送少数量的分组数据;· CBC模式先对明文分组,一次对一个明文分组加密,加密算法的输入是当前明文分组和前一次密文分组的异或.在产生第1个密文分组时,需要有一个初始向量IV与第1个明文分组异或;解密时,IV和解

17、密算法对第1个密文分组的输出进行异或以恢复第1个明文分组;密钥相同时,明文中相同的64比特分组产生不相同的64比特密文块;存在错误传播,一块密文传输错误会导致下一块密文解密失败;· CFB模式加密:设加密算法的输入是64比特移位寄存器,其初值为某个初始向量IV. 加密算法输出的最左(最高有效位)j比特与明文的第一个单元P1进行异或,产生出密文的第1个单元C1. 传送该单元并将输入寄存器的内容左移j位,用C1补齐最右边(最低有效位)j位. 这一过程继续到明文的所有单元都被加密为止.解密,将加密算法输出的最左(最高有效位)j比特与密文的相应单元异或,产生明文. 反馈到输入寄存器的值为密文

18、单元消息被看作bit流,无须分组填充;适合数据以比特或字节为单位出现标准允许反馈任意比特;需要额外的初始向量密文块需按顺序逐一解密密钥相同时,明文中相同的64比特分组产生不相同的64比特密文块.存在错误传播(只传播后面的几块)· OFB模式类似于CFB, 不同之处在于OFB模式是将加密算法的输出反馈到移位寄存器,而CFB模式中是将密文单元反馈到移位寄存器消息被看作比特流,无须分组填充密钥流可以在已知消息之前计算,不需要按顺序解密不存在比特错误传播发送者和接收者必须保持同步· CTR模式消息被看作bit流,无须分组填充;只使用加密算法,且所有加密都使用同一密钥;需要额外的初始

19、向量;密钥相同时,明文中相同的分组产生不相同的密文块;不存在比特错误传播;效率,密钥流可以在已知消息之前计算,不需要按顺序解密;优点:(1)硬件效率高,吞吐量仅受可使用并行数量的限制; (2)软件效率高,能够并行计算 (3)预处理 (4)随机访问 (5)可证明安全性 (6)简单性· 查分分析思想设F为轮函数,共m轮迭代。P:表明明文P1和P2的差分;设R1:表示明文和密钥输入后第i轮输出R1和R2的差分;· 如果 ,那么,对2t个密钥计算,· 如果首先选取多个明文对,使得至少有一对为正确明文对,满足其次重复猜测搜索密钥 的过程第五讲 流密码· 序列密码:

20、又称流密码。指明文消息按字符逐位地加密的一类密码算法。· 流密码分类:· 同步序列密码密钥序列的产生独立于明文消息和密文消息的一类流密码。OFB模式是同步序列密码的一个例子;特性:发送方和接收方必须同步;无错误传播;优点:容易检测插入、删除、重播等主动攻击;· 自同步序列密码密钥序列的产生是密钥及固定大小的以往密文位的函数。特性:自同步特性; 有限的错误传播;优点:接收端和发送端不同步,只要接收端能连续地正确地接受到n个密文符号,就能重新建立同步;· 流密码原理密钥系列产生器分为驱动部分和组合部分。驱动部分产生控制生成器的状态序列;组合部分对驱动部分的各

21、个输出序列进行非线性组合。驱动器一般利用线性反馈移位寄存器LFSR,特别是利用最长周期或m序列产生器实现;非线性反馈移位寄存器也可作为驱动器。· 线性反馈移位寄存器· 反馈移位寄存器(FSR)是由n位的寄存器和反馈函数组成,如下图所示,n位的寄存器中的初始值称为移位寄存器的初态.工作原理:反馈函数f是n个变元(b1,b2,bn)的布尔函数. · 线性反馈移位寄存器的反馈函数为线性函数 设n级LFSR的输出序列ai满足递推关系这种递推关系可用一个一元高次多项式表示,称这个多项式为LFSR的特征多项式· 设 是上的多项式,使的最小的p称为的周期或者阶

22、3; n级LFSR输出的序列的最大周期是2n-1· 当LFSR的寄存器状态遍历2n 1个非零状态时,序列的周期达到最大2n 1,这种序列被称为m序列· 若n次不可约多项式p(x)的阶为2n-1,则称p(x)为n次本原多项式· ai是周期为2n 1的m-序列的充要条件是其特征多项式f(x)为n阶本原多项式· 非线性组合部分· 滤波生成器又叫前馈生成器,一般由LFSR和滤波(前馈)函数两部分组成. LFSR可以是一个,也可以是几个,它们输出的序列共同作为滤波函数的输入。滤波函数要求具有很好的非线性性质,以增强生成器的抗攻击能力。Geffe序列发生器

23、: 两个LFSR作为复合器的输人,第三个LFSR控制复合器的输出如果a1, a2, 和a3是三个LFSR的输出,则Geffe发生器的输出表示为:b = (a1 a2) ( a1 a3) a3 如果3个LFSR长度分别为n1,n2和n3,线性复杂度为(n2+n3)n1+n3周期为3个LFSR周期的最小公倍数;如果3个本院反馈多项式的阶数互素,那么发生器的周期是3个LFSR周期之积,即(2n1-1)(2n2-1)(2n3-1)· 钟控生成器。最简单的钟控生成器是用一个LFSR控制另一个LFSR的时钟脉冲当LFSR1输出1时,时钟脉冲通过与门使LFSR2进行一次移位,从而生成下一位;当LF

24、SR1输出0时,时钟脉冲无法通过与门使LFSR2移位(走),从而LFSR2重复输出前一位(停)。也称之为走停生成器· 典型流密码算法· A5算法GSM系统主要使用的序列密码加密算法,保护从基站到移动设备传输信息x、y、z(位置分别为A、B、C的第9、11、11位)进行钟控,若三个位中间至少有两个为“1”,则为“1”的寄存器进行一次进动,而为“0”的不移。反过来,若三个位中至少有两个为“0”,则为“0”的寄存器进行一次移位,而为“1”的不移。这种机制保证了每次至少有两个LFSR被驱动移位· RC4算法典型的基于非线性数组变换的序列密码。使用了一个256字节大小的非线

25、性数据表(简称S表),依据表进行非线性变换,得到密钥流。包括密钥调度算法(KSA)和伪随机生成算法(PRGA)第六讲 HASH函数和MAC· Hash函数的定义:消息是任意有限长度,哈希值是固定长度。性质:· 单向性(抗原像):对干任意给定的消息,计算其哈希值容易。但是,对于给定的哈希值h,要找到M使得H(M)h在计算上是不可行的· 弱抗碰撞(抗二次原像):对于给定的消息M1,要发现另一个消息M2,满足H( M1 )H(M2)在计算上是不可行的· 强抗碰撞:找任意一对不同的消息M1,M2 ,使H(M1)H(M2 )在计算上是不可行的.分类:·

26、改动检测码MDC不带密钥的哈希函数,主要用于消息完整性· 消息认证码MAC带密钥的哈希函数,主要用于消息源认证和消息完整性· MD5算法· 算法过程描述:· 消息填充填充一个1和若干个0使其长度模512与448同余;再将消息的真实长度以64比特表示附在填充结果后面,使总长度为512比特的整数倍。· 初始向量MD5中有A,B,C和D4个32位的寄存器,最开始存放4个固定的32位的整数参数,即初始链接变量,用于第一轮运算:A=0x01234567 B=0x89ABCDEF C=0Xfedcba98 D=0x76543210· 分组处理(迭

27、代压缩)压缩分为4轮,每轮16步函数运算,共64步;512bitMi被均分为16个子分组(32bit/组)参与每轮16步函数运算。每步的输入是4个32bit的链接变量和一个32bit的消息子分组,输出为32bit;经过4轮候,得到的4个寄存器值分别于输入链接变量进行模加,即是当前中间散列值。· 输出散列值128bit· 步函数每一轮的16个步函数相同,使用同一个非线性函数;不同轮的步函数使用的非线性函数不相同;四个非线性函数:Mj:消息分组Mi的第j(0<=j<=15)个32bit子分组。<<<s:循环左移s位常数Ti为· MD5与M

28、D4从三轮改为四轮;增加了一种逻辑运算,第二轮函数从F(x,y,z)=(xy) v(xz) v(yz)改为(xz) v(y z),以消弱对称性;改变第二轮和第三轮访问消息子分组的顺序,使其形式更不相似;改变每轮移位量以实现更快的雪崩效应;每步有唯一的加法常数ti,消除任何输入数据的规律;每一步与上一步的结果相加,这将引起更快的雪崩效应;· SHA256算法· 算法过程描述· 消息填充填充一个1和若干个0使其长度模512与448同余;再将消息的真实长度以64比特表示附在填充结果后面,使总长度为512比特的整数倍。· 初始变量由前8个素数的平方根的小数部分的

29、前32位(二进制)生成用8个32bit寄存器ABCDEFGH表示。初始链接变量存入其中· 压缩函数64轮运算;512bit分组为单位处理消息对于64轮中的每一轮的t,使用一个32bit的Wt,其值由当前被处理的512bit消息分组Mi导出;每轮中使用一个附加常数Kt(取前64个素数的立方根的小数部分的二进制表示的前32bit)· 最后一轮的输出和第一轮的输入模232相加产生Hi· 输出散列值长度为256比特· SHA256的轮函数· 第(i-1)块的输出链接变量a、b、c、d、e、f、g和h分别赋值:a=H0(i-1) b=H1(i-1) c=

30、H2(i-1) d=H3(i-1) e=H4(i-1) f=H5(i-1) g=H6(i-1) h=H7(i-1)· for t=0 to 63:(借助临时寄存器T1和T2) a=T1+T2,b=a,c=b,d=c,e=(d+T1),f=e,g=f,h=g其中:Ch(e,f,g)=(ef)(非eg); Maj(a,b,c)=(ab) (ac)(bc) =ROTR2(a)ROTR13(a)ROTR22(a)=ROTR6(e) ROTR11(e)ROTR25(e) 且ROTRn(x)/ SHRn(x)表示对32bit变量x循环右移/左移n bit· 计算第i个Hash值H(i)

31、H0(i)=a+ H0(i-1) H1(i)=b+ H1(i-1) H2(i)=b+ H2(i-1) H3(i)=c+ H3(i-1)H4(i)=d+ H4(i-1) H5(i)=e+ H5(i-1) H6(i)=f+ H6(i-1) H7(i)=g+ H7(i-1)· 32bit的Wt是从512bit消息中导出的,方法如下:其中(x)= ROTR7(x)ROTR18(x)SHR3(x) (x)= ROTR17(x) ROTR19(x) SHR10(x)· SHA512和SHA284· SHA512填充消息M, 将消息填充到1024的整数倍;将填充消息分割为N个1

32、024比特长的消息块M(1),M(2),M(N);设置初始Hash值H(0);迭代压缩,80步;N次迭代后的输出512比特链接变量作为消息散列值输出;SHA284与SHA512仅有两点不同:初始Hash值H(0)的设置不同;输出384比特长的消息摘要;· 算法过程描述· 消息填充填充一个1和若干个0使其长度模1024与896同余;再将消息的真实长度以128比特表示附在填充结果后面,使总长度为1024比特的整数倍。· 初始变量:· SHA384初始链接变量第九个至第十六个素数的平方根小数部分前64位(二进制)生成· SHA512初始链接变量前八个

33、素数的平方根的小数部分的前64位(二进制)生成· SHA384和SHA512的轮函数· (i-1)次迭代的输出赋值给工作变量a、b、c、d、e、f、g和h;a=H0(i-1) b=H1(i-1) c=H2(i-1) d=H3(i-1) e=H4(i-1) f=H5(i-1) g=H6(i-1) h=H7(i-1)· for t=0 to 79:a=T1+T2,b=a,c=b,d=c,e=(d+T1),f=e,g=f,h=g· 计算第i个Hash值H(i)H0(i)=a+ H0(i-1) H1(i)=b+ H1(i-1) H2(i)=b+ H2(i-1)

34、H3(i)=c+ H3(i-1)H4(i)=d+ H4(i-1) H5(i)=e+ H5(i-1) H6(i)=f+ H6(i-1) H7(i)=g+ H7(i-1)· 消息认证· 消息认证码(MAC)是一种消息认证技术· 发送方A和接收方B共享密钥K,若A向B发送消息M,则A计算利用C=F (K, M)计算MAC值;然后将原始消息M和C一起发送给接收方。接收方B对收到的消息M用相同的密钥K进行相同的计算得出新的MAC值C。并将接收到的C与其计算出的C进行比较 ,若相等,则:(1) 接收方可以相信消息未被修改。(2) 接收方可以确信消息来自真正的发送方。F是MAC

35、函数,它利用密钥K和任意长度的消息M来生成一个固定长度的短数据块C。· 攻击目的:伪造攻击:攻击者在没有密钥K的情况下,伪造一个未经过认证(M,Mac)对.存在性伪造: 如果攻击者只能够对一个不由他控制的消息进行伪造,那么这种伪造攻击称为存在性伪造攻击.选择性伪造: 如果攻击者能够对由他选择的消息进行伪造,那么这种伪造攻击称为选择性伪造攻击.密钥恢复攻击:攻击者通过分析一系列(M,Mac)对,找到控制这些(M,Mac)对的密钥.非自适应选择明文攻击: 敌手在使用Mac设备之前,必须已经选定要测试的消息;自适应选择明文攻击:敌手可以根据Mac设备的输出,自行选择下一次要测试的消息.&#

36、183; CBC-MAC· 填充数据,形成一串n比特组;其次,使用CBC模式加密这些数据;对最后的输出分组进行选择处理和截断(如果mn)形成MAC填充方法:(不知道数据的长度,则应选用填充方法2或3)方法1:对需要计算MAC的数据的右边填充若干个或零个“0”比特,以便得到一个比特长度是n的整数倍的数据串。方法2:对需要计算MAC的数据的右边先填充一个“1”比特,然后填充若干个或零个“0”比特,以便得到一个比特长度是n的整数倍的数据串。方法3:首先对需要计算MAC的数据的右边填充若干个或零个“0”比特,以便得到一个比特长度是n的整数倍的数据串;其次,在所得到的数据串的左边 填充一个n比

37、特组,该组包含了未进行填充的数据的比特长度的二元表示,其左边用“0”补齐。· n比特数据组D1,D2,Dq,计算过程如下:(ek为加密函数)· 置I1=D1,计算O1=ek(I1)· 对i=2,3,q,完成下列计算:Ii=DiOi-1 Oi=ek(Ii)· 对Oq进行选择处理和截断,获得m比特MAC· 攻击:· 假定MAC1=ek(D1),则MAC2是两个分组的消息(D1|D2)的一个合法MAC值,其中,D2=D1 MAC1。这种攻击方法称为”cut and paste”攻击。· 攻击者想伪造消息D的合法MAC。首先,选择消

38、息D1发送给认证者,认证者返回MAC1=ek(D1)然后计算D2=MAC1D,把消息(D1|D2)发送给认证者,认证者返回MAC2=ek(ek(D1)D2)则MAC2是消息D的合法MAC值:MAC2=ek(D)· HAMC· 使用Hash函数H,K1和K2(K1K2)计算MAC=H(K1 |H (K2|m),其中K1和K2由同一个密钥K导出· 工作流程:· H是hash函数(嵌入的散列函数),K是密钥,K+是K左连填充若干0之后的结果,B表示计算消息摘要时消息分块的字节长度,L表示消息摘要按字节计算的长度,M是消息输入· ipad表示0x36重

39、复b/8次,opad表示0x5c重复b/8次· n表示嵌入散列函数产生的散列码长度· 一般来说K的长度不小于n;如果K大于b,则将其作为散列函数的输入而产生一个n位的密钥· HMAC(K,M)=H(K+opad) | H(K+ipad) |M· 在K的左边加上足够的0以得到B字节的K+;· 将(1)得到的K+与ipad异或,产生分组S1;· 将M接在(2)得到的S1后面;· 将H应用于(3)的结果计算消息摘要;· K+与opad异或产生b位分组S0;(6) 将(4)消息摘要接在(5)的S0后面;(7) 应用H于(6

40、)的结果,输出该函数值HMAC(K,M)· CCT认证加密标准· 消息认证方式· SSL:认证加密· IPSec:加密认证· SSH:加密、认证·· 先认证后加密:接受方解密和验证程序都完成后才能确定消息是否有效。具有密文隐藏功能· 先加密后认证:传送信道不安全,传送信息被篡改(或出现传送错误),接受方在解密运算之前就可以发现,从而减少不必要的解密浪费;不具有密文隐藏功能第七讲 公钥密码· 公钥加密体制的原理:· 参数生成过程:接收消息的端系统,产生一对用来加密和解密的密钥公开钥和秘密钥

41、3; 参数生成满足的要求:公开密钥(public-key), 可以被任何人知道, 用于加密或验证签名;私钥(private-key), 只能被消息的接收者或签名者知道,用于解密或签名;由私钥及公开参数容易计算出公开密钥;由公钥及公开参数推导私钥是困难的; · 原理图:· 单向陷门函数单向函数:两个集合X、Y之间的一个映射,使得Y中每一元素y都有唯一的一个原像xX由x易于计算它的像y,由y计算它的原像x是不可行的单向陷门函数:该函数是易于计算的,但求它的逆是不可行的,除非再已知某些附加信息。一族可逆函数fk,满足 Y=fk(X)易于计算(当k和X已知时).· X=f

42、-1k(Y)易于计算(当k和Y已知时).· X=f-1k(Y)计算上是不可行的(当Y已知但k未知时).· 背包密钥体制若用f充当加密函数对明文消息m加密:首先将m写成二元表示,再将其分成长为n的分组;然后求每一分组的函数值,以函数值(背包容积)作为密文分组.· 超递增背包体制(1)解法:已知s为背包容积,对A从右向左检查每一元素,以确定是否在解中:· 若san,则an在解中,令xn=1;若s<an,则an不在解中,令xn=0. 然后令2) 对an-1重复上述过程,一直下去,直到检查出a1是否在解中.3) 检查结束后得解 x=(x1x2xn).若XA

43、=S,则背包问题的解为X;否则原背包问题无解 (2)伪装,防攻击方法:模数k和乘数t皆取常量,满足k>ai,且gcd(t,k)=1,即t在模k下有乘法逆元.bit·ai mod k, i=1,2,n.得新的背包向量B=(b1,b2,bn),记为 Bt·A mod k.用户以B作为自己的公开密钥, t、t-1和k可作为其秘密的陷门信息,即解密密钥.· 加密运算:对明文分组X=(x1x2xn)的加密为c=f(x)=B·Xt·A·X mod k· 解密运算:首先由st-1 c mod k求出s作为超递增背包向量A的容积,再解

44、背包问题即得x=(x1x2xn).· RSA算法(1)密钥的产生· 选两个安全的大素数p和q。· 计算n=p×q,(n)=(p-1)(q-1),其中(n)是n的欧拉函数值。· 选一整数e,满足1<e<(n),且gcd(n),e)=1。· 计算d,满足d·e1 mod (n),即d是e在模(n)下的乘法逆元,因e与(n)互素,由模运算可知,它的乘法逆元一定存在。 · 以e,n为公开钥,d,n为秘密钥。(2)加密:cme mod n(3)解密:mcd mod n· RSA的计算问题模指数运算的快速

45、算法求am可如下进行,m写成二进制表示法:m=bk2k+bk-12k-1+b12+b0,所以· ELGamal算法(1)密钥的产生首先选择一素数p,生成元g和小于p的随机数x,计算ygx mod p,以(y, g, p)作为公开密钥,x作为秘密密钥.(2)加密过程 随机选一与p-1互素的整数k,0<=k<=p-1 计算密文对: C = C1,C2, 发送给接收者C1gk mod p, C2ykM mod p. (3)解密过程 (4)k永久保存?不能重复使用? 攻击者若已知k,可以计算yk,然后用C2/yk就得到明文;若是k重复使用,则C2/C2=M/M,知道其中的一个明文

46、,另一个可求。· 椭圆曲线密码体制(1)密码学中通常采用有限域上的椭圆曲线,它指曲线方程定义式中,所有系数都是某一有限域GF(p)中的元素(其中p为一大素数).其中最为常用的是y2x3+ax+b(mod p) (a,bGF(p), 4a3+27b2(mod p)0) 定义的曲线.(2)设P=(x1,y1),Q=(x2,y2),P-Q,则P+Q=(x3,y3)由以下规则确定:x32-x1-x2(mod p)y3(x1-x3)-y1(mod p)其中,· 利用椭圆曲线实现ElGamal密码体制(1)密钥生成:选取一条椭圆曲线,并得Ep(a,b),取Ep(a,b)的一个生成元G,Ep(a,b)和G作为公开参数.用户A选nA作为秘密钥,并以PA=nAG作为公开钥.(2)加密:B若想向A发送消息Pm,选取一随机正整数kCm=kG, Pm+kPA(3)解密:以密文点对中的第二个点减去用自己的秘密钥与第一个点的倍乘Pm+kPA-nAkG=Pm+k(nAG)-nAkG=Pm第八讲 数字签名· 数字签名的性质:(数据完整性、数据源认证性、数据不可否认性) 能够验证签名产生者的身份,以及产生签名的日期和时间.能保证被签消息的内容的完整性.数字签名可由第三方公开验证,从而能够解决通信双方的上述争议.· 数字签名电子签名,是指附加在某一电子文档中的一组特定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论