信息安全原理与应用第五章精.ppt
信息安全原理与应用第五章第1 页,本讲稿共73 页2 内容提要 消息鉴别 数字签名第2 页,本讲稿共73 页3消息鉴别 消息鉴别的概念 鉴别函数 消息加密 消息鉴别码MAC 散列函数第3 页,本讲稿共73 页4 通信系统典型攻击 窃听 业务流分析 消息篡改 内容修改:消息内容被插入、删除、修改。顺序修改:插入、删除或重组消息序列。时间修改:消息延迟或重放。冒充:从一个假冒信息源向网络中插入消息 抵 赖:接 受 者 否 认 收 到 消 息;发 送 者 否 认 发 送过消息。第4 页,本讲稿共73 页5基本概念 消息鉴别(Message Authentication):是一个证实收到的消息来自可信的源点且未被篡改的过程。第5 页,本讲稿共73 页6鉴别的目的 鉴别的主要目的目的有二:第一,验证信息的发送者是真正的,而不是冒充的,此为信源识别;第二,验证信息的完整性,在传送或存储过程中未被篡改,重放或延迟等。第6 页,本讲稿共73 页7消息鉴别 消息鉴别的概念 鉴别函数 消息加密 消息鉴别码MAC 散列函数第7 页,本讲稿共73 页8鉴别模型 一个单纯鉴别系统鉴别系统的模型第8 页,本讲稿共73 页9鉴别系统的组成 鉴别编码器和鉴别译码器可抽象为鉴别函数。一个安全的鉴别系统,需满足(1)意定的接收者能够检验和证实消息的合法性、真实性和完整性(2)消息的发送者和接收者不能抵赖(3)除了合法的消息发送者,其它人不能伪造合法的消息 首先要选好恰当的鉴别函数,该函数产生一个鉴别标识,然后在此基础上,给出合理的鉴别协议(Authentication Protocol),使接收者完成消息的鉴别。第9 页,本讲稿共73 页10鉴别函数 用于产生鉴别符的鉴别函数分为三类:(1)消息加密函数(Message encryption)用完整信息的密文作为对信息的鉴别。(2)消息鉴别码MAC(Message Authentication Code)公开函数+密钥产生一个固定长度的值作为鉴别标识(3)散列函数(Hash Function)一个散列函数以一个变长的报文作为输入,并产生一个固定长度的散列码,有时也称报文摘要,作为输出。是一个公开的函数。第10 页,本讲稿共73 页11消息鉴别 消息鉴别的概念 鉴别函数 消息加密 消息鉴别码MAC 散列函数第11 页,本讲稿共73 页12消息加密 消息的自身加密可以作为一个鉴别的度量。对称密钥模式和公开密钥模式有所不同。第12 页,本讲稿共73 页13(a)对称加密:保密性与鉴别 如果用对称密钥加密 提供保密 提供鉴别 仅来自A 传输中没有被更改 需要某种结构或冗余 不提供签名 如何自动确定是否收到的明文可解密为可懂的明文?一种解决办法是强制明文有某种结构.第13 页,本讲稿共73 页(b)公钥加密 如果使用公开密钥加密 提供保密 不提供鉴别 用私钥对信息数字签名 提供鉴别和签名 仅A 有Kra 可以进行加密 传输中没有被更改 需要某种结构或冗余 任何一方均可以使用Kua 验证签名 如果既要提供保密性,又要提供鉴别,用户A 就需要先用自己的私钥签名,再用用户B 的公钥加密,KUb 提供保密性,Kra 提供鉴别和签名。14第14 页,本讲稿共73 页15消息鉴别 消息鉴别的概念 鉴别函数 消息加密 消息鉴别码MAC 散列函数第15 页,本讲稿共73 页16消息鉴别码MAC 使用一个密钥生成一个固定大小的小数据块,并加入到消息中,称MAC,或密码校验和(cryptographic checksum)接收者可以确信消息M 未被改变。接收者可以确信消息来自所声称的发送者;如果消息中包含顺序码,则接收者可以保证消息的正常顺序;MAC 函数类似于加密函数,但不需要可逆性。因此在数学上比加密算法被攻击的弱点要少。第16 页,本讲稿共73 页MAC 的基本用法 MAC 直接附加在消息之后 A B:M|MACK(M)MAC 直接附加在消息之后,并对整体进行加密 A B:EK2 M|MACK1(M)先对消息加密,再对密文生成鉴别码 A B:EK2 M|MACK1(EK2 M)17第17 页,本讲稿共73 页18CBC-MAC ANSI X9.9、FIPS PUB 113 和ISO/IEC 9797 O1=Ek(D1)Oi=Ek(Di Oi-1)(1 i N)第18 页,本讲稿共73 页19CFB-MAC 第19 页,本讲稿共73 页20HMAC 设计目标 无需修改地使用现有的散列函数 当出现新的散列函数时,要能轻易地替换 保持散列函数的原有性能不会导致算法性能的降低 使用和处理密钥的方式简单 对鉴别机制的安全强度容易分析,与hash 函数有同等的安全性第20 页,本讲稿共73 页21符号 H=嵌入散列函数 M=消息(包括散列函数所需填充位)Yi=M 的第i 个数据块,0 i L-1 L=M 的数据块数 b=数据块的位数 n=嵌入散列函数产生的散列码长度位数 K=保密密钥。如果密钥长度大于b,则密钥送入散列函数 形成一个n 位的密钥;推荐程度大于等于n K+=K 在左部添加0使得其长度为b 位 ipad=00110110 重复 b/8 次 opad=01011010 重复b/8 次第21 页,本讲稿共73 页22HMAC 的定义与特征 对密钥K 左边补0 以产生一个hash 用块K+K+每个字节与ipad(00110110)作XOR 以产生Si 对(Si|M)进行hash K+每个字节与opad(01011010)作XOR 以产生So HMACK=HK+opad)|H(K+ipad)|M第22 页,本讲稿共73 页23通过加密得到信息真实性:问题 保密性与真实性是两个不同的概念 根本上,信息加密提供的是保密性而非真实性 加密代价大(公钥算法代价更大)鉴别函数与保密函数的分离能提供功能上的灵活性 在目标系统中延长保护时间 某些信息只需要真实性,不需要保密性 广播的信息难以使用加密(信息量大)网络管理信息等只需要真实性 政府/权威部门的公告第23 页,本讲稿共73 页24消息鉴别 消息鉴别的概念 鉴别函数 消息加密 消息鉴别码MAC 散列函数第24 页,本讲稿共73 页散列函数 散列函数的概念 散列函数的用法 散列函数的特性 散列函数的构造 散列算法25第25 页,本讲稿共73 页26散列函数Hash Function H(M):输入为任意长度的消息M;输出为一个固定长度的散列值,称为消息摘要Message Digest)。这个散列值是消息M 的所有位的函数并提供错误检测能力:消息中的任何一位或多位的变化都将导致该散列值的变化。第26 页,本讲稿共73 页散列函数 散列函数的概念 散列函数的用法 散列函数的特性 散列函数的构造 散列算法27第27 页,本讲稿共73 页散列函数的基本用法 A B:EK M|H(M)A B:M|EK H(M)A B:M|EKRaH(M)A B:EK M|EKRaH(M)A B:M|EKH(M|S)A B:EK M|H(M|S)28第28 页,本讲稿共73 页29方法的优点 加密软件很慢 加密硬件的开销很大 加密是对大长度数据进行优化的 加密算法可能受专利保护 加密算法可能受出口的限制.第29 页,本讲稿共73 页30散列函数的用途 消息的完整性检测 数字签名第30 页,本讲稿共73 页31使用Hash 函数进行完整性检测的模型第31 页,本讲稿共73 页32RSA 签名算法的弱点 任何人能通过对某一y计算x=EkUB(y)伪造一个B 对随机消息x的签名,因为y=SigkRB(x)如果消息x1,x2的签名分别是y1和y2,则拥有x1,x2,y1,y2的任何人可伪造B 关于消息x1x2的签名y1y2,因为SigkRB(x1x2)=SigkRB(x1)SigkRB(x2)mod n 签名者每次只能签log2n 比特长的消息,获得同样长的签名。如果消息很长,需要逐组签名。然而,这样,速度慢,签名长。第32 页,本讲稿共73 页33解决办法 解决办法:引入可公开的密码散列函数(Hash function)。它将取任意长度的消息做自变量,结果产生规定长度的消息摘要。如,使用数字签名标准DSS,消息摘要为160比特,然后签名消息摘要。对数字签名来说,散列函数h 是这样使用的:消息:x 任意长 消息摘要:Z=h(x)160bits 签名:y=sigk(Z)320 bits(签名一个消息摘要)验证签名:(x,y),其中y=sigk(h(x),使用公开的散列函数h,重构作Z=h(x)。然后Verk(y)=Z,来看Z=Z第33 页,本讲稿共73 页34使用Hash 函数进行数字签名的好处 提高数字签名的速度 无需泄露签名所对应的消息,可将签名泄露,如对消息x的签名是y=Sigk(z),其中z=h(x),可将(z,y)公开,而保密x.可将签名变换和加密变换分开,可以在OSI 的不同层提供消息的完整性和机密性。第34 页,本讲稿共73 页散列函数 散列函数的概念 散列函数的用法 散列函数的特性 散列函数的构造 散列算法35第35 页,本讲稿共73 页36新的问题 用以鉴别的散列函数,能否减弱鉴别方案的安全性?这个问题是要分析的。签名的对象由完整消息变成消息摘要,这就有可能出现伪造。第36 页,本讲稿共73 页37安全威胁一(a)伪造方式一:Oscar 以一个有效签名(x,y)开始,此处y=sigk(h(x)。首先他计算Z=h(x),并企图找到一个x 满足h(x)=h(x)。若他做到这一点,则(x,y)也将为有效签名。为防止这一点,要求函数h 具有无碰撞特性。定义 定义1(1(弱无碰撞 弱无碰撞),散列函数h 称为是弱无碰撞的,是指对给定消息x X,在计算上几乎找不到异于x的x X 使h(x)=h(x)。第37 页,本讲稿共73 页38安全威胁二(b)伪造方式二:Oscar 首先找到两个消息xx,满足h(x)=h(x),然后Oscar 把x 给Bob 且使他对x的摘要h(x)签名,从而得到y,那么(x,y)是一个有效的伪造。定义 定义2(2(强无碰撞 强无碰撞)散列函数h 被称为是强无碰撞的,是指在计算上几乎不可能找到相异的x,x 使得h(x)=h(x)。注:强无碰撞自然含弱无碰撞!注:强无碰撞自然含弱无碰撞!第38 页,本讲稿共73 页39安全威胁三(c)伪造方式三:在散列函数的用法(e)中,秘密值S 本身并不发送,如果散列函数不是单向的,攻击者截获到M 和H(M|S).然后通过某种逆变换获得M|S,因而攻击者就可以得到S.定义 定义3(3(单向的 单向的)称散列函数h 为单向的,是指计算h 的逆函数h-1在计算上不可行。第39 页,本讲稿共73 页40HASH 函数的要求满足:1、h 可以作用于一个任意长度的数据块;2、h 产生一个固定长度的输出;3、对任意给定的x,h(x)计算相对容易,无论是软件还是硬件实现。4、对任意给定码H,找到x满足h(x)=H 具有计算不可行性;(单向性)5、对任意给定的数据块x,找到满足h(y)=h(x)的yx具有计算不可行 性。6、找到任意数据对(x,y),满足h(x)=h(y)是计算不可行的。前三条要求具有实用性,第4 条是单向性质,即给定消息可以产生一个散列码,而给定散列码不可能产生对应的消息。第5 条性质是保证一个给定的消息的散列码不能找到与之相同的另外的消息。即防止伪造。第6 条是对已知的生日攻击方法的防御能力。目的:“fingerprint”of messgae第40 页,本讲稿共73 页41生日攻击 假定使用64位的散列码,是否安全?如果采用传输加密的散列码和不加密的报文M,对手需要找到M,使得H(M)=H(M),以便使用替代报文来欺骗接收者。一种基于生日悖论的攻击可能做到这一点.第41 页,本讲稿共73 页42生日悖论 生日问题:一个教室中,最少应有多少学生,才使至少有两人具有相同生日的概率不小于1/2?概率结果与人的直觉是相违背的.实际上只需23人,即任找23人,从中总能选出两人具有相同生日的概率至少为1/2。对长度为m 位的散列码,共有2m个可能的散列码,若要使任意的x,y 有h(x)=h(y)的概率为0.5,只需 k=2m/2 第42 页,本讲稿共73 页43 生日攻击 攻击者产生 一个有效消息的2m/2种变化,具有同样的意义 攻击者也产生 一个期望的欺骗性消息的 2m/2种变化 比较两组消息,找到具有同样 hash 值的消息对(probability 0.5 by birthday paradox)让用户签署有效的文件,然后进行替代,替代物也有效的签名第43 页,本讲稿共73 页44散列函数的安全性 强力攻击:单向2n弱无碰撞2n强无碰撞2n/2第44 页,本讲稿共73 页散列函数 散列函数的概念 散列函数的用法 散列函数的特性 散列函数的构造 散列算法45第45 页,本讲稿共73 页46Hash 函数的构造 基于数学难题的构造方法:计算速度慢,不实用 利用对称密码体制来设计Hash 直接设计第46 页,本讲稿共73 页hash 函数通用结构 由Merkle 于1989年提出 Ron Rivest 于1990年提出MD4 几乎被所有hash 函数使用 具体做法:把原始消息M 分成一些固定长度的块Yi 最后一块padding 并使其包含消息M 长度 设定初始值CV0 压缩函数f,CVi=f(CVi-1,Yi-1)最后一个CVi为hash 值47第47 页,本讲稿共73 页48IV=initial value 初始值CV=chaining value 链接值Yi=ith input block(第i 个输入数据块)f=compression algorithm(压缩算法)n=length of hash code(散列码的长度)b=length of input block(输入块的长度)Merkle-Damgrd 结构CV0=IV=initial n-bit valueCVi=f(CVi-1,Yi-1)(1 i L)H(M)=CVL第48 页,本讲稿共73 页散列函数 散列函数的概念 散列函数的用法 散列函数的特性 散列函数的构造 散列算法49第49 页,本讲稿共73 页50散列算法的发展过程 Ron Rivest 于1990年提出MD4 1992年,MD5(RFC 1321)developed by Ron Rivest at MIT,任意长度的消息,128位的消息摘要 SHA 由NIST 制定,1993年提出SHA-0,1995年提出SHA-1(FIPS PUB 180-1),最大长度为264-1 位的消息,长度为160位的消息摘要 90年代初,欧洲RACE Integrity Primitives Evaluation(RIPE)Project 的结果.RIPEMD-160,最大长度为264-1 位的消息,长度为160位的消息摘要 2001年5月30日,NIST 发布了修订版本 FIPS 180-2,称为SHA-2系列第50 页,本讲稿共73 页SHA 参数第51 页,本讲稿共73 页散列算法的最新进展 Xiaoyun Wang,Xuejia Lai,Dengguo Feng,Hongbo Yu,Collisions for hash functions MD4,MD5,HA V AL-128 and RIPEMD,Crypto2004 近年来密码学界最具突破性的结果,攻击的具体方法比特追踪法 MD5 已被破解,不能再被实际使用。对于SHA-1 算法,碰撞攻击所需要的运算次数从原来设计时估算的280次降为261次。2006年,NIST 要求联邦机构在2010年之后必须停止使用SHA-1,使用SHA-2 系列的版本 2006年,NIST 开始启动为期6年的公开征集新散列算法标准SHA-3的计划。目前,有14个候选算法进入了SHA-3 公开征集的第二轮评估。52第52 页,本讲稿共73 页53 内容提要 消息鉴别 数字签名第53 页,本讲稿共73 页54内容提要 数字签名 数字签名的功能与特性 若干数字签名方案第54 页,本讲稿共73 页55消息鉴别没有解决的问题 Message authentication 用以保护双方之间的数据交换不被第三方侵犯;但它并不保证双方自身的相互欺骗。假定A 发送一个认证的信息给B,双方之间的争议可能有多种形式:B 伪造一个不同的消息,但声称是从A 收到的。A 可以否认发过该消息,B 无法证明A 确实发了该消息。例如:EFT 中改大金额;股票交易指令亏损后抵赖。第55 页,本讲稿共73 页56手写签名 手写签名具有的特性:签名是可信的,接收者相信签名者慎重签署了该文件 签名是不能伪造的 签名是不可重用的 签名后的文件是不能更改的 签名是不可否认的第56 页,本讲稿共73 页57数字签名 数字签名(digital signatures)可以 提供如下功能:签名者事后不能否认自己的签名 接收者能验证签名,而任何其他人都不能伪造签名。在有争议时,可由第三方进行验证 对签名的作者、日期和时间、签名时刻消息的内容提供验证 因此,数字签名提供了鉴别之外的附加功能第57 页,本讲稿共73 页58手写签名与数字签名的主要差别 签署文件方面 手写签名与被签的文件在物理上不可分割 数字签名能与所签文件“绑定”验证方面 手写签名通过与一个真实的手写签名相比较 数字签名通过公开的验证算法来验证“拷贝”方面 手写签名不易拷贝 数字签名容易拷贝第58 页,本讲稿共73 页59数字签名 一个签名方案是一个满足下列条件的五元组(P,A,K,S,V):P 是所有可能消息组成的一个有限集合 A 是由所有可能的签名组成的一个有限集合 K 为密钥空间,它是由所有可能密钥组成的一个有限集合 对每一个k K,有一个签名算法sigk S 和一个相应的验证算法verk V。对每一个消息x P 和每一个签名y A,每一个sigk:P A和 verk:P A true,false 都是满足下列条件的函数 由x P 和y A 组成的数据对(x,y)称为签名消息。第59 页,本讲稿共73 页60对签名方案的攻击模型 唯密钥攻击(key-only attack)攻击者Oscar 拥有Alice 的公钥,即验证函数verk 已知消息攻击(know message attack)Oscar 拥有一系列以前由Alice 签名的消息(x1,y1),(x2,y2),其中是xi消息,yi是Alice 对消息的签名 选择消息攻击 Oscar 请求Alice 对一个消息列表签名.第60 页,本讲稿共73 页61对签名方案的攻击目的 完全破译(total break)攻击者Oscar 可以确定Alice 的私钥,即签名函数Sigk,因此能对任何消息产生有效签名。选择性伪造(selective forgery)攻击者能以某一不可忽略的概率对另外某个人选择的消息产生一个有效的签名。该消息不是以前Alice 曾经签名的消息 存在性伪造(existential forgery)攻击者至少能够为一则消息产生一个有效的签名,该消息不应该是以前Alice 曾经签名的消息。第61 页,本讲稿共73 页62数字签名的设计要求 签名必须是依赖于被签名信息的一个位串模式;签名必须使用某些对发送者是唯一的信息,以防止双方的伪造与否认;必须相对容易生成该数字签名;必须相对容易识别和验证该数字签名;伪造该数字签名在计算复杂性意义上具有不可行性,既包括对一个已有的数字签名构造新的消息,也包括对一个给定消息伪造一个数字签名;在存储器中保存一个数字签名副本是现实可行的。第62 页,本讲稿共73 页63 内容提要 数字签名 数字签名的功能与特性 若干数字签名方案第63 页,本讲稿共73 页64RSA 签名方案BA第64 页,本讲稿共73 页65签名与加密 签名提供真实性(authentication)加密提供保密性(confidentiality)“签名+加密”提供“真实性+保密性”两种实现方式:(A B)先签名,后加密:EKUbM|SigA(M)先加密,后签名:EKUb(M)|SigA(EKUb(M)方式 存在安全问题,不推荐。第65 页,本讲稿共73 页66DSS/DSA DSS(数字签名标准)是特别为签名的目的而设计的。这个方案的改进1994年12月1日被美国NIST(国家标准和技术研究所)采纳作为数字签名标准数字签名标准(FIPS 186)(FIPS 186)。DSS 使用 SHA 作为散列函数 DSS(Digital signature Standard),DSA(Digital signature algorithm)安全性基于计算离散对数的困难性第66 页,本讲稿共73 页67DSS 签名方案B A第67 页,本讲稿共73 页68DSS 算法说明-算法参数 全局公开密钥分量 p 素数,其中2L-1p2L,512L1024,且L 为64的倍数:即比特长度在512到1024之间,长度增量为64比特 q(p-1)的素因子,其中2159q2160 g=h(p-1)/q mod p,其中h 是一整数,1h(p-1)用户私有密钥 x 随机或伪随机整数,其中0 xq 用户公开密钥 y=gx mod p第68 页,本讲稿共73 页69DSS 算法的签名过程 用户每个报文的密数 k 随机或伪随机整数,其中0kq 签名 r=(gkmod p)mod q s=k-1(H(M)+xr)mod q 签名=(r,s)发送签名(r,s)和消息 M 符号:M 要签名的消息 H(M)使用SHA-1 生成的M 的散列码 M,r,s 接收到的M,r,s 版本第69 页,本讲稿共73 页70DSS 算法的验证过程 验证 w=(s)-1 mod q u1=H(M)w mod q,u2=(r)w mod q v=(gu1yu2)mod p mod q TEST:v=r 第70 页,本讲稿共73 页71使用中的问题 用户产生的签名s=0,会泄露私钥。不能将签名所使用的随机数k 泄露出去。不要使用同一个k 签两个不同的消息。第71 页,本讲稿共73 页72其他数字签名方案 一次性数字签名:如果一个签名方案仅给一则消息签名时是安全的,则签名方案是一次性签名方案。当然可以进行若干次验证。不可否认签名:最主要的特征是没有签名者的合作,签名就不能得到验证。由三部分组成:签名算法、验证协议、否认协议。群签名方案:群中各个成员以群的名义匿名地签发消息,群数字签名方案由三个算法组成:签名算法、验证算法和识别算法。盲签名要求:消息内容对签名者不可见,签名被接收者泄漏后,签名者无法追踪签名。第72 页,本讲稿共73 页73参考文献 王昭,袁春编著.陈钟审校.信息安全原理与应用.北京:电子工业出版社,2010.William Stallings,Cryptography and network security:principles and practice,Second Edition.Bruce Shneier,Applied cryptography:protocols,algorithms,and sourcecode in C,Second Edition.李克洪主编.实用密码学与计算机安全.沈阳:东北大学出版社,1997.冯登国,裴定一.密码学导引.北京:科学出版社,1999.冯登国等译.密码学原理与实践(第二版).北京:电子工业出版社,2003.第73 页,本讲稿共73 页