
《可信计算课件资源》第3章认证技术与数字签名.ppt
99页1,可信计算基础,周福才 fczhou@,2,第三讲 认证技术与数字签名,认证,消息/数据,身份/实体,证实某主体的真实身份与其所声称的身份是否相符的过程(真实性),证实一个收到的消息来自可信的源点且未被篡改的过程,(完整性、真实性)防止主动攻击证明接收的消息是可信的内容未被篡改、可靠的消息来源、以正确的顺序及时发送,,消息认证用于保证信息的完整性与抗否认性,,,实体身份认证是鉴别对方数字身份的过程(用于鉴别一方证明另一方的用户身份)实体可以是人、进程、客户端、服务器等,5,消息认证与实体认证的比较,消息(数据)认证可能不是实时的,但实体认证却需要实时的当BOB认证一条来源于Alice的消息(例如,E-MAIL)时,Alice可能没有连接到她的E-MAIL系统当Alice访问银行网站时,或者她从ATM取款时,银行网站/ATM 必须要对Alice进行认证认证的目标对于每条消息,消息(数据源)认证必须要确认消息的新鲜性、完整性对于通信会话的整个阶段,实体认证必须要确认实体的身份6,1.消息认证,7,消息认证(Message Authentication):是一个证实收到的消息来自可信的源点且未被篡改的过程。
散列函数( Hash Functions):一个散列函数以一个变长的报文作为输入,并产生一个定长的散列码,有时也称报文摘要,作为输出数字签名(Digital Signature)是一种防止源点或终点抵赖的鉴别技术基本概念,8,从加密到认证和鉴别,窃听(通信量分析)等被动攻击 加密假冒/窜改等主动攻击 认证和鉴别报文(消息)的真实性/完整性 这条报文真的是他发出来的吗? 是不是假冒的?有没有被篡改过?身份的真实性 和我通信的这个人真的是他吗? 是不是假冒的?是不是会话重放?* 数字签名技术,9,对密文保护的保护,在加密之前,添加明文的结构特征 x || h(x) // h=crc,md5,sha1加密 E ( x || h(x), k ) = y传输有可能出错或被窜改y会变做y’解密判断是否依旧符合 x || h(x) 的结构特征,10,认证(真假)的核心思想,一个问题的两个角度消息真实性和完整性身份真实性如何让真实性得到认证?该报文被实施了一种特意的、排他性的印记操作该人能对任意的随机报文实施一种特意的、排他性的印记操作什么样的操作? 一般是生成另外一个和原报文及操作人身份相关的附加小报文。
这需要某种特性的数学函数11,加密与认证分离,加密本身不能实现真实性认证功能(机密性)认证和加密的分离带来灵活性某些信息只需要真实性(认证),不需要保密性– 广播的信息难以使用加密(信息量大)– 网络管理信息等只需要真实性– 政府/权威部门的公告- 不能加密的场合启发:改变形态 E (x||h(x),k )x||E(h(x),k ),12,报文认证(MAC)函数特性,发送方:报文+某种印记特性印记特性中得蕴含了发送方特有的信息(密钥) (M,K)=A传输有被窜改可能,但是篡改导致特性丢失 M || A接收方:判断特性是否仍在不符合则被认为有篡改 (M,K)=? A,13,MAC,14,报文鉴别码(MAC Message Authentication Code),MAC函数计算明文在密钥K的作用下的特征码 M || MAC(M, K)验证时,判断明文和MAC码是否一致讨论MAC不需要可逆为了方便,MAC码通常较短实现MAC函数不排斥使用对称加密算法防范重放攻击(加注时间、报文序号)* 对称MAC不能提供签名特性,,,散列函数,15,MAC的用法,MAC=Ck(M),16,引入散列函数(HMAC),生成MAC没有必要整个报文被加密速度、进出口障碍不需要能恢复原文MAC的计算过程只需体现明文的特征唯一Key是必要的从报文产生特征的数学方法:HASH函数先计算特征,再把特征加密的思想把散列函数和Key结合得MAC HMAC = HashKey(Message),17,HMAC,把HASH值和一个Key结合起来没有使用加密算法目标既能用当前的HASH函数,又易升级为新的HASH函数,并能保持和散列函数一样安全性简单,并易进行密码学分析标准RFC 2104HMAC:Keyed-Hashing for Message AuthenticationFIPS 198The Keyed-Hash Message Authentication Code(HMAC),18,散列函数 h=H(x),函数参数输入:可以任意长度输出:必须固定长度n比特,一般n=128、160函数特性单向性质:给定h,要找x使H(x)=h是困难的弱抗碰撞特性: 对于给定的y,找x,使H(x)=H(y)是困难的强抗碰撞特性(生日攻击): 找x和y,使H(x)=H(y)是困难的* 如果碰撞则意味着数字签名容易被伪造/欺骗,19,1、要使k个人中有两个人的生日相同,k至少应该是多少?,3662、要使k个人中有两个人的生日相同的概率大于0.5,k至少应该是多少?,(23)3、100个人中有两个人的生日相同的概率约为0.9999997!!!,生日悖论,20,k个人中没有两个人的生日相同的概率为: k个人中至少有两个人的生日相同的概率为: 经计算k=23时:1-p=0.5073,,计算方法,21,单向散列函数(One-way Hash Function),单向散列函数(单向+散列) h = H(m)有的散列函数并不满足单向(抗冲突)性质密码学上用的散列函数都是指单向散列函数抗冲突性质给定h,找m满足H(m)=h很难给定m,找m’满足H(m’)=H(m)很难找m1和m2满足H(m1)=H(m2)很难举例MD5、SHA1,22,(a) AB: EK[ M||H(M)],Provides confidentiality -- only A and B share K Provides authentication -- H(M) is cryptographically protected,(b) AB: M||EK[H(M)],Provides authentication -- H(M) is cryptographically protected,(c) AB: M||EKRa[H(M)],Provides authentication and digital signature -- H(M) is cryptographically protected -- only A could create EKRa[H(M)],散列函数的应用,,23,(d) AB: EK[M||EKRa[H(M)]],Provides authentication and digital signature Provides confidentiality,(e) AB: M||[H(M||S)] HMAC,Provides authentication -- only A and B share S,(f) AB: EK[M||[H(M||S)],Provides authentication -- only A and B share S Provides confidentiality -- only A and B share K,散列函数的应用(续),,24,Hash与MAC的区别MAC需要对全部数据进行加密MAC速度慢Hash是一种直接产生鉴别码的方法,25,2. MD5与SHA1,26,MD系列,作者Ronald Rivesthttp://theory.lcs.mit.edu/~rivest/ MD2、MD4、MD5MD2/4/5 RFC1319/1320/1321http://www.ietf.org/rfc/rfc1321.txt 应用曾经是最广泛的摘要算法但是太短(128bits)而SHA有160bits,27,28,MD5简介,• Merkle于1989年提出hash function模型•Ron Rivest于1990年提出MD4•1992年, MD5 (RFC 1321) developed by Ron Rivestat MIT•MD5把数据分成512-bit块•MD5的hash值是128-bit•在最近数年之前,MD5是最主要的hash算法•现行美国标准SHA-1以MD5的前身MD4为基础,29,MD5 detail,输入 任意长输出 128bits过程填充在Y[L]报文填充1~512bits,使之≡448mod512填充64bits长度值填充后报文被划分成512bits分组初始MD寄存器(IV)(小数在前little endian/intel)A=67452301 B=EFCDAB89C=98BADCFE D=10325476分组处理 …,30,MD5示意图,31,散列码(128b)的每一个比特均是输入的每一个比特的函数(随机选择两个报文,即使它们有相似规律性,也很难产生相同的HASH)易受生日攻击,所需操作的数量级264,因为 128位hash值太短。
Dobbertin在1996年找到了两个不同的512-bit块,它们在MD5计算下产生相同的hash至今还没有真正找到两个不同的消息,它们的MD5的hash相等MD5不是足够安全的,MD5: 总结,32,1992年NIST制定了SHA(128位)1993年SHA成为标准(FIPS PUB 180)1994年修改产生SHA-1(160位)1995年SHA-1成为新的标准,作为SHA-1(FIPS PUB180-1)SHA-1要求输入消息长度<264输入按512位的分组进行处理的SHA-1的摘要长度为160位,基础是MD4,SHA1(Secure Hash Algorithm)简介,33,输入 任意报文(<2^64)输出 160bits过程填充报文、长度成512bits分组(与MD5相同)初始化寄存器ABCDEE = C3D2E1F0分组处理 …,SHA1 detail,34,SHA1a block,512bits/32=16words 扩展至W[80]字 每1/4用20字,35,比较SHA1/ MD5,散列值长度MD5 128bits SHA1 160bits安全性SHA看来好些,但是SHA的设计原则没有公开速度SHA1慢些 (openssl speed md5/sha1:)type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytesmd5 5425.31k 19457.48k 55891.45k 104857.60k 143211.40ksha1 5104.58k 16008.41k 37925.33k 57421.81k 68241.68k其他雷同,,,36,hash函数把变长信息映射到定长信息 hash函数不具备可逆性 hash函数速度较快 hash函数与对称密钥加密算法有某种相似性 对hash函数的密码分析比对称密钥密码更困难 hash函数可用于消息摘要 hash函数可用于数字签名,Hash函数小结,37,3.数字签名(Digital Signature),38,消息认证用以保护双方之间的数据交换不被第三方侵犯;但它并不保证双方自身的相互欺骗。
假定A发送一个认证的信息给B,双方之间的争议可能有多种形式:(1)B伪造一个不同的消息,但声称是从A收到的2)A可以否认发过该消息,B无法证明A确实发了该消息抵制通信双方的抵赖对方(自己)否认发送过或收到过某个报文向对方表明自己的身份,。
