数字签名与身份认证(3).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数字签名与身份认证(3).ppt》由会员分享,可在线阅读,更多相关《数字签名与身份认证(3).ppt(65页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第3章 数字签名与身份认证v报文鉴别报文鉴别v散列函数散列函数v数字签名体制数字签名体制v身份认证技术身份认证技术v身份认证的实现身份认证的实现认证需求v网络环境中的攻击(认证的需求)1.泄漏2.通信量分析3.伪装(假报文)4.内容篡改(插入、删除、调换和修改)5.序号篡改(报文序号的修改)6.计时篡改(报文延迟或回放)7.抵赖(发送方否认)8.抵赖(接收方否认)保密性保密性报文认证报文认证数字签名数字签名数字签名与身份认证v数字签名:通信双方在网上交换信息用公钥密码防止伪造和欺骗的一种身份认证,是信息网络安全的研究热点和重要手段,保证信息完整性、鉴别发送者的身份真实性与不可否认性,在电子商务
2、、电子银行、电子政务等领域广泛应用,世界各国先后正式颁布了数字签名法v认证:又称为鉴别、确认,是证实某人或某物是否名副其实或有效的过程,是防止主动攻击的重要技术3.1 报文鉴别v信息网络安全的威胁的两方面被动攻击:对手通过侦听和截取等手段获取数据主动攻击:对手通过伪造、重放、篡改、乱序等手段改变数据v报文鉴别的目的:保护数据不受主动攻击v报文鉴别的方式报文加密函数:加密整个报文,以报文的密文作为鉴别报文鉴别码:依赖公开的函数对报文处理,生成定长的鉴别标签散列函数:将任意长度的报文变换为定长的报文摘要,并加以鉴别3.1.1 报文鉴别概述v加密:防止信息被窃听采取的措施v报文鉴别:防止信息被篡改和
3、伪造的技术v鉴别:验证通信对象是原定的发送者而不是冒名顶替者的技术v报文鉴别的过程:通信的接收方能够鉴别验证所收到的报文(包含发送者、报文内容、发送时间和序列等)的真伪3.1.1 报文鉴别概述报文认证内容报文认证内容 报文源的鉴别:使用约定密钥(由发送方决定)报文宿的鉴别:密钥(IDB)、通行字(PWB)公钥密码时,用对方的公钥加密即可 报文时间性的鉴别:确认报文是否保持正确的顺 序,有无断漏和重复v 初始向量法:初始向量加密报文v 时间参数法:在报文中加入时间参数v 随机数法:适合全双工通信 报文内容的鉴别:使收方能够确认报文内容是否真实v 没有被修改3.1.1 报文鉴别概述报文鉴别方法报文
4、鉴别方法报文鉴别码报文鉴别码(MAC,Message Authentication Code)用一个密钥生成的一个小的数据块,追加在报文的后面 通信双方共享密钥K,AB发送报文M,根据密钥和报文计算报文鉴别码MAC=F(K,M),F是加密算法的某一函数,将M和MAC一起发送给B;B用收到的M,使用同样的K再计算一次报文鉴别码,进行比较;若一致,报文为真。例如,DES算法可生成报文鉴别码,采用密文的最后若干个比特(16或32)作为报文鉴别码。对MAC不进行类似加密过程的反向计算,因此鉴别较难被攻破 报文鉴别可通过将报文加密实现,在特定的网络中,许多报文不需要加密,但要求发送的报文是完整和不是伪造
5、的。例如,通知网络上所有用户有关上网的注意事项,可使用单独的相对简单的报文鉴别算法来达到目的3.1.1 报文鉴别概述报文鉴别方法报文鉴别方法报文摘要报文摘要:报文鉴别码的变种 将可变长度的报文M作为单向散列函数的输入,然后得出一个固定长度的标志H(M),将其称为报文摘要(MD,Message Digest)单向散列函数的特点单向散列函数的特点:从一个报文生成一个MD代码是容易的,反过来从一个代码生成一个报文则实际上是不可能的;还能保证不同的报文不会得出同样的MD代码 目前,大多数使用报文摘要MD算法来进行报文鉴别,原理见P72 图3-2 报文摘要的优点报文摘要的优点:对短的固定长报文摘要H(M
6、)进行加密比对整个报文m进行加密效率要高得多,但是对鉴别报文m来说,效果一样,也就是说,m和EK(H(M)在一起是不可篡改和伪造的,是可鉴别和不可抵赖的3.1.1 报文鉴别概述报文摘要报文摘要 要做到不可伪造,MD算法必须满足以下两个条件:1.任给一个报文摘要值x,若想找到一个报文y,使得H(y)=x,在计 算上不可行2.若想找到任意两个报文x和y,使得H(x)=H(y)在计算上不可行 也就是说,若(m,H(m)是发送方产生的报文和报文摘要,攻击者不可能伪造另一个 ,使得 同时,发送方可以对H(m)进行数字签名,使报文成为可鉴别的和不可抵赖的报文摘要一般采用散列函数(Hash Function
7、,哈希函数)实现,目前用的最广泛的是MD5报文摘要算法3.1.2 报文摘要MD算法网络管理协议SNMPv2采用MD鉴别技术:通信双方共享一小段秘密的数据块发送端先将此秘密数据块追加在报文M的前面,然后输入到散列函数H,计算出MD,再将MD追加在M的后面,同时去除一开始加上的秘密数据块,发送给接收端接收端先去除加了密的MD,然后在报文M的前面追加上自己拥有的秘密数据块后,输入到散列函数H,计算H(M)。比较H(M)和MD,若一致,则收到的报文M是真的3.1.2 报文摘要MD算法报文摘要算法与DES有更多的共同点,没有正式的数学基础,而是依靠算法的复杂性产生随机的输出来满足对其功能的要求当前使用最
8、广泛的报文摘要算法是MD5,提供一种单向的哈希函数,可对任意长的报文进行计算,得出128位的MD代码,附在信息报文的后面,以确保鉴别报文以防篡改。如果采用穷举法攻击尝试每秒10亿条明文的计算量,需要计算约10年3.1.2 报文摘要MD算法MD5MD5算法是对需要进行摘要处理的报文信息按512位进行处理先将需要进行摘要处理的报文信息块进行填充,使信息报文的长度等于512的倍数,填充方法:先在需要进行摘要处理的报文信息后填充64字节长的信息长度,再用首位为1、后面全为0的 填充信息填充然后对信息报文一次处理,每次处理512位,每次进行4轮16步总共64步的信息变化处理,每次输出结果为128位,把前
9、一次的输出作为下一次信息变换的输入初始值最后输出一个128位的哈希摘要结果3.1.3 报文加密函数报文加密函数报文加密函数是用完整报文的密文作为对报文的认证,分为两种:常规的对称密钥加密(P73)公开密钥的双密钥加密函数(P74)使用公钥加密明文只能提供保密不能提供认证,因为任何人都可获得公钥。为了提供认证,发送者A用私钥对信息的明文进行加密,任意接收者都可以用A的公钥解密。既可提供认证,也可提供数字签名注意注意:只用私钥加密不能提供保密性,任何人只要获得A的公钥就能对密文进行解密3.2 散列函数散列函数又称哈希函数(Hash Function),把任意长度的报文M通过函数变换为一个固定长度的
10、散列码h,散列函数表示为h=H(M),生成报文独有的“指纹”散列函数是一种算法,算法输出的内容称为散列码(值)或称报文摘要(数字摘要)报文摘要就像该报文的数字指纹,惟一地对应原始报文。如果原始报文改变并且再次通过散列函数,它将生成不同的报文摘要,可用于检测报文的完整性,保证报文始终没被改变和破坏散列函数是公开的,一般不涉及保密密钥,少量有密钥的散列函数作为计算报文的认证码,因其有密钥具有一定的身份鉴别功能Hash函数主要用于完整性校验和提高数字签名的有效性在多数信息安全应用中,把散列函数、加密和数字签名结合使用,实现系统的有效、安全、保密和认证功能3.2.1 一个简单散列函数散列函数都是把输入
11、的报文或文件看作若干个长度为n比特的分组序列,而后用迭代的方法每次处理一个分组,产生n比特的散列码简单简单散列散列函数函数每个分组之间按比特异或,即Ci=bi1bi2.bim其中,Ci是第i个比特的散列码,1 i n m是输入报文的分组数(每块n比特)bij是第j分组的第i比特 是按比特异或散列码其实是在报文的每一比特位置上产生一个散列码其实是在报文的每一比特位置上产生一个简单简单的奇偶校验的奇偶校验,也就是纵向的冗余校验,见,也就是纵向的冗余校验,见P75表表3-1v简单散列函数的改进方案先将n比特的散列值设置为0按如下方式依次处理数据分组:v将当前的散列值循环左移(或右移)一位v将数据分组
12、与以为后的散列值异或得到新的散列值好处:把输入的数据产生随机化的效果,并且将输入中的数据格式掩盖掉3.2.1 一个简单散列函数v建立在压缩函数想法之上:给一个输入n位长消息,得到一个较短的散列值,不要求恢复消息本身v单向散列函数的性质单向散列函数的性质(P76)广泛适用性函数H能适用于任何大小的数据分组码长固定性函数H产生定长输出易计算性对于任何数据M,计算H(M)是容易的单向不可逆性无法由散列码倒推报文,即对任意给定的码h,寻求M使得H(M)=h在计算上不可行(单向函数)弱单向性对任意给定的数据x,寻求不等于x的y,使得H(y)=H(x)在计算上不可行(弱单向散列函数、弱抗冲突)强单向性寻求
13、任何一对数据(x,y),使得H(x)=H(y)在计算上不可行,即不同报文不能产生相同的散列码(强单向散列函数,强抗冲突)3.2.2 单向散列函数散列函数是可公开的,不需要保密,安全性来自它产生单向散列的能力最常用的两个单向哈希函数是MD5和SHA-1MD5(128bit)、SHA-1(160bit)3.2.2 单向散列函数3.2.3 散列函数的一般结构lIV =初始向量 CV i =链接变量lYi =第i个输入分组 f =压缩函数ln =散列值长度 b =输入分组长度 L=输入的分组数 散列函数是建立在压缩函数基础之上,通过对消息分组的反复迭代压缩,生成一个长度固定的散列值 一般在迭代的最后一
14、个分组中还包含有消息的长度图图3-4 散列函数的整体结构散列函数的整体结构3.2.4 压缩函数的构造原理压缩函数是散列函数设计的关键所在 1.专门设计的压缩函数:利用随机性和多轮的“混乱”达到散列的目的,如MD5、SHA等算法2.基于分组密码算法的压缩函数:基于所选择的分组密码算法的安全性,最简单的方式CBC(密码分组链接)模式,最后分组密文就作为散列值3.基于公钥密码算法的压缩函数:在CBC模式中使用公钥密码算法作为压缩函数,要扔掉私钥4.其它特殊的一些构造方法散列函数MD5介绍vMD5消息摘要算法(RFC 1321)是由Ron Rivest提出v输入:任意长度的消息v输出:128位消息摘要
15、v处理:以512位的分组为单位参考书p25812.1 MD5 消息摘要算法MD5算法描述步骤步骤1:增加:增加填充位填充位(一个一个1 和若干个和若干个0)。)。使填充消息的长度满足:长度 448 mod 512,即使消息本身已满足长度要求,仍然需要填充。例如,消息长448位,要填充512位使其长度位960位步骤步骤2:填充填充长度。长度。原始消息长度(二进制位的个数),用64位表示。如果长度超过264位,则仅取最低64位,即mod 264 以上步骤为预处理阶段,到此已经得到一个512位的整倍数长度的新的报文。可以表示为L个512位的数据块:Y0,Y1,YL-1。新报文长度为L512bits
16、令N=L16,则报文长度为N个32位的字 令M0N-1表示以字为单位的消息表示MD5算法描述v步骤步骤3:初始化:初始化MD缓冲区。缓冲区。一个128位MD缓冲区用以保存中间和最终Hash函数的结果。它可以表示为4个32位的寄存器(A,B,C,D)寄存器初始化为以下的16进制值 A=67452301 B=EFCDAB89 C=98BADCFE D=10325476MD5算法描述v步骤步骤4:处理消息块(:处理消息块(512位位=16个个32位字)位字)压缩函数是该算法的核心(HMD5),包括4轮处理四轮处理具有相似的结构,但每次使用不同的基本逻辑函数,记为F,G,H,I每轮以当前的512位数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字签名 身份 认证
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内