《数字签名与身份认证(3).ppt》由会员分享,可在线阅读,更多相关《数字签名与身份认证(3).ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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位数据
17、块(Yq)和128位缓冲值ABCD作为输入,并修改缓冲值的内容。每次使用64常数表T164中的四分之一v步骤步骤5:输出结果。:输出结果。所有的L个512位数据块处理完毕后,第L个数据块的输出就是128位消息摘要MD5算法描述(/)(/)MD5的安全性v新闻:2004年8月17日的美国加州圣巴巴拉,国际密码学年会(Crypto 2004)上,来自中国山东大学王小云教授的一篇关于“破译MD5、HAVAL-128、MD4以及RIPEMD-128算法”的报告引起了轰动,报告中提到的新破译方法几乎标志着世界通信密码标准MD5堡垒的轰然倒塌。一石激起千层浪,此前一直负责公开征集针对MD5的攻击而设立的权
18、威站点http:/ Project)即日停止,并开始提供该站点以往技术资料的下载Hash函数的基本用途END3.3 数字签名体制现实中,我们使用的签名有何作用?从法律上讲,签名有两个功能:标识签名人标识签名人和表示签名人对文件内容的认可表示签名人对文件内容的认可 使签名者不可否认 在书面文件上签名是确认文件的一种手段,其作用有两点:第一,自己签名难以否认,确认文件已签署的事实第二,签名不易模仿,确定文件是真的事实3.3 数字签名体制v数字签名是认证的重要工具认证的重要工具v为什么需要数字签名?报文认证用以保护双方之间的数据交换不被第三方侵犯;但并不能保证双方自身的相互欺骗。假定A发送一个认证的
19、信息给B,双方之间的争议可能有多种形式:vB伪造一个不同的消息,但声称是从A收到的vA可以否认发过该消息,B无法证明A确实发了该消息3.3 数字签名体制 数字签名与书面文件签名有相同之处,采用数字签名能确认以下两点:第一,信息是由签名者发送的第二,信息自签发后到收到为止未曾做过任何修改 数字签名可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息,或发出(收到)信件后又加以否认等情况发生与传统签名的比较v传统签名的基本特点与被签的文件在物理上不可分割签名者不能否认自己的签名签名不能被伪造容易被验证v数字签名是传统签名的数字化能与所签文件“绑定”签名者不能否认自己的签名签名不能被伪造容
20、易被自动验证3.3 数字签名体制数字签名应满足的要求v接收者能够核实发送者v发送者事后不能抵赖对报文的签名v接收者不能伪造对报文的签名数字签名原理3.3 数字签名体制v常用的数字签名算法RSA数字签名算法(P79)ELGamal数字签名算法(P80)美国的数字签名标准/算法(DSS/DSA)(P83)Fiat-Shamir数字签名算法Schnorr数字签名算法椭圆曲线数字签名算法3.3.1 RSA数字签名体制RSA实现加密与认证RSA密钥对的生成随机选择两个大素数 p,q 计算 n=p q注意(n)=(p-1)(q-1)选择 e使得1e(n),且gcd(e,(n)=1 解下列方程求出 d e
21、d 1 mod(n)且 0dn 公布公钥:KU=e,n 保存私钥:KR=d,n销毁:p,q 3.3.1 RSA数字签名算法数字签名算法RSA数字签名过程发送方要签名的报文m:使用自己的私钥 KR=d,n 计算:s=md mod n,where 0mn接收方验证签名s:获得发送方的公钥 KU=e,n计算:m=se mod n 注意:m必须比n小 一般先对m做hash摘要再签名 EKUaH(m)3.3.1 RSA数字签名算法数字签名算法书中书中P80有错有错3.3.1 RSA数字签名体制 RSA算法是公钥密码体制中最负有盛名的算法,是第一个既能用于数据加密也能用于数字签名的算法,算法思想简单,易于
22、理解,程序易于实现RSA缺点:产生密钥麻烦,受到素数生成技术的限制,难以做到一次一密为保证安全性,要求分组长度大,n要600bit以上,运算代价很高3.3.2 ElGamal数字签名ElGamal数字签名体制是由T.ElGamal于1985年提出ElGamal算法是在密码协议中有着大量应用的一类公钥密码算法安全性是基于离散对数问题的困难性既可以用于数字签名,也可用于加解密ElGamal数字签名体制的变体已经用于DSS中缺点:密文成倍扩张3.3.2 ElGamal数字签名参数构造(1)全局参数 p:大素数 g:公开的本原根(2)私钥 x:用户选择的一个随机数(3)公钥 y:3.3.2 ElGam
23、al数字签名签名过程给定要签名的消息为M(1)生成一个随机数k,使得gcd(k,p-1)=1(2)计算r:(3)计算s:(4)把消息M和签名结果(r,s)发送给接收者 由于r和s都引入了随机数k,所以即使是同一个消息,由于k的不同,会使签名结果发生变化,因此称其为随机化的数字签名随机化的数字签名。注:通常情况是对消息注:通常情况是对消息 M直接签名直接签名3.3.2 ElGamal数字签名验证过程(1)取得发送方的公钥y(2)预查合法性:如果 ,那么继续后面的步骤,否则签名不合法(3)计算(4)计算(5)比较 ,如果二者相同,表示签名有效,否则无效了解:P82 3.3.2.5 ElGamal数
24、字签名体制的变形练习取p=11,g=2,私钥x=8,随机数k=9,使用上述参数对消息M=5进行ElGamal数字签名并验证3.3.3 数字签名标准DSSvDSS(Digital Signature Standard)签名标准是1991年8月由美国NIST公布,1994年5月19日的正式公布,并于1994年12月1日采纳为美国联帮信息处理标准,主要用于与美国政府做生意的公司vDSS为ELGamal和Schnorr签名方案的改进,其使用的算法记为DSA(Digital Signature Algorithm)此算法由D.W.Kravitz设计,密钥长度为512-1024bit,DSS使用了SHA,
25、安全性是基于求离散对数的困难性DSS算法描述3.3.3 数字签名标准数字签名标准DSS 全局公钥组成全局公钥组成p:L bit长的素数。L为64的倍数,范围为5121024q:p-1的160bit的素因子g:g=h(p-1/q)mod p。h是满足1h1 的任何整数 用户的私钥用户的私钥x:随机或伪随机整数,且0 xq 用户的公钥用户的公钥y:y=gx mod p 与用户每条消息相关的秘密值与用户每条消息相关的秘密值k:随机或伪随机整数,且0kq 签名签名r=(gk mod p)mod qs=k-1(H(M)+xr)mod q签名:(m,r,s)验证验证w=(s)-1 mod qu1=H(M)
26、*w mod qu2=rw mod qv=(gu1yu2)mod pmod q检验:v=rM =要签名的报文H(M)=使用SHA-1求得M的摘要3.3.3 数字签名标准DSSvDSA算法的一个重要特点:两个素数是公开的v理解课本P84 图3-5 DSS数字签名体制3.3.4 数字签名中的问题与改进 数字签名方法在具体应用中还有一些问题需要解决(1)签名后的文件可能被接收方重复使用:如一张支票 重放攻击:加入时间戳(Timestamp)(2)RSA算法基于大数的因子分解难题,随着计算机水 平的提高,需要密钥越来越长。PGP:700bit以上 SET协议中:用户1024bit 认证中心CA2048
27、bit 长密钥的问题:运算速度慢、存储和管理难(3)公钥算法效率低,不易于长文件加密,常采用hash函 数生成消息摘要再签名(4)在hash签名中使用一个密钥k,用H(m,k)代替H(m),可增强安全性理解:理解:P85 图图3-6 公开密钥和对称密钥相结合的签名公开密钥和对称密钥相结合的签名3.3.5 数字签名的发展方向目前的两种算法:基于大整数因子分解难题的RSA算法和基于椭圆曲线上离散对数计算难题的ECC算法 基于RSA算法的数字签名还有一定的发展对于未来的加密、生成和验证数字签名的工具,只有用SSL(安全套接层)建立安全链接的Web浏览器,才会频繁使用数字签名 支持数字签名是Web发展
28、的目标,确保数据保密性、完整性和不可否认性才能保证在线商业的安全交易数字签名作为电子商务的应用技术,越来越受重视数字签名为互联网用户提供受密钥保护的唯一身份证明,作为身份标识符,会被跟踪网络在线活动,成为安装在身上的监视器3.4 身份认证v身份认证是通信双方在实质性数据传送之前,进行审查和证实对方身份的操作。身份认证可在用户登录时进行,也可以贯穿于数据传输的过程中v在允许用户进入计算机网络系统之前,必须进行严格的身份认证,可采用普通口令系统、一次性口令或生理特征等认证措施v认证系统是身份鉴别技术的具体应用v身份验证技术是在计算机中最早和最广泛应用的安全技术,是用户能够进入应用系统的一道屏障v身
29、份认证是网络安全中最前沿的一道防线,是最基本的安全服务,其他的安全服务都要依赖于它。一旦身份认证系统被攻破,那么系统的所有安全措施将形同虚设3.4 身份认证v身份认证指的是对实体身份的证实,用以识别合法或者非法的实体,阻止非法实体假冒合法实体窃取或者访问网络资源v身份验证是用户向系统出示自己身份证明的过程v身份认证是系统查核用户身份证明的过程v这两个过程是判明和确认通信双方真实身份的两个重要环节,统称为身份认证(或身份鉴别)v常用的认证技术有三种:报文鉴别身份鉴别数字签名身份认证简介v身份认证通常是通过某种复杂的身份认证协议来实现,身份认证协议是一种特殊的通信协议,它定义参与认证服务的所有通信
30、方在身份认证过程中需要交换的所有消息的格式、消息的次序以及消息的语义等。通常采用密码学技术来实现认证信息的存储与传输的安全v典型的身份认证协议涉及示证者(Prover)验证者(Verifier)攻击者(Attacker)在某些情况下,还涉及可信赖的第三方TTP3.4 身份认证身份认证技术技术身份认证模型示证者示证者输入输入传输传输验证者验证者3.4 身份认证身份认证技术技术身份认证简介v典型的身份认证方法实体所知道的或掌握的知识(something you know,知识证明),如口令实体所持有的物件(something you have,持有证明),如令牌、智能卡动态口令实体的生物特征(so
31、mething you are,属性证明),如指纹、视网膜、DNAUSB Key认证,密钥、数字证书3.4 身份认证身份认证技术技术认证系统面临的攻击v在网络环境下,由于认证信息需通过在网上传输,攻击者可能对身份认证系统发起以下的攻击窃听(Eavesdropping)猜测攻击(Guessing)中间人攻击(Man-in-the-Middle)重放攻击(Replay)攻击认证服务器(Compromised server)密码分析攻击(Cryptanalysis)3.4 身份认证身份认证技术技术桌面应用程序密码安全3.4 身份认证身份认证技术技术Web应用程序密码安全3.4 身份认证身份认证技术技
32、术基于口令的身份认证v最简单的身份认证方式是采用用户名/静态口令方式,它是最基本也是最经济实用的认证方式v为解决静态口令的诸多问题,安全专家提出了一次性口令(One Time Password)技术。v基本思想是在网上传送的口令只使用一次。一次性口令系统主要是为抵制重放攻击而设计的挑战/应答(Challenge/Response):用户要求登录时,系统产生一个随机数(挑战)发送给用户,用户将该随机数和口令按约定的算法做运算,结果作为应答发给服务器,服务器运用约定的算法对口令和随机数做运算以验证用户身份。由于服务器发出的每次随机数不同,因此用户给出的应答也不同,从而避免了重放攻击,也避免了口令的明文传输,但此机制仍然存在口令猜测攻击,且对于用户来说,操作繁杂,容易造成输入错误3.4 身份认证身份认证技术技术采用加密的一次性口令模型Login,IDcIDc,RIDc,MACClientMAC=H(R,K)MAC=H(R,K)比较比较MAC和和MACOK/DisconnectServer3.4 身份认证身份认证技术技术口令的管理v口令产生器 不是让用户自己选择口令,口令产生器用于产生随机的和可拼写口令 v口令的时效 强迫用户经过一段时间后就更改口令系统还记录至少5到10个口令,使用户不能使用刚刚使用的口令v限制登录次数 免受字典式攻击或穷举法攻击 3.4 身份认证身份认证技术技术END