《计算机密码学》复习范围第1章引言信息安全属性保密性,完整性,可用性,真实性,实时性,不可否认性。1.什么是被动攻击和主动攻击,各有几种类型?分别是对信息系统的什么性质进行的攻击?1.被动攻击被动攻击即窃听,是对系统的保密性进行攻击,如搭线窃听、对文件或程序的非法拷贝等,以获取他人的信息。被动攻击又分为两类,一类是获取消息的内容第二类是进行业务流分析,假如我们通过某种手段,比如加密,使得敌手从截获的消息无法得到消息的真实内容,然而敌手却有可能获得消息的格式、确定通信双方的位置和身份以及通信的次数和消息的长度,这些信息可能对通信双方来说是敏感的。被动攻击因不对消息做任何修改,因而是难以检测的,所以抗击这种攻击的重点在于预防而非检测。2.主动攻击这种攻击包括对数据流的某些篡改或产生某些假的数据流。主动攻击又可分为以下三个子类:①中断:是对系统的可用性进行攻击,如破坏计算机硬件、网络或文件管理系统。②篡改:是对系统的完整性进行攻击,如修改数据文件中的数据、替换某一程序使其执行不同的功能、修改网络中传送的消息内容等。③伪造:是对系统的真实性进行攻击。如在网络中插入伪造的消息或在文件中插入伪造的记录。抗击主动攻击的主要途径是检测,以及对此攻击造成的破坏进行恢复。2.恶意程序的分类:是否需要主程序、能否自我复制?恶意软件指病毒、蠕虫等恶意程序,可分为两类,一类可自我复制:蠕虫,病毒不可复制的:特洛伊木马,逻辑炸弹,陷门3.安全业务分为哪5种?各有什么含义?保密业务,认证业务,不可否认业务,访问控制4.信息安全的基本模型?信息系统的保护模型?信息安全的基本模型:通信双方欲传递某个消息,需通过以下方式建立一个逻辑上的信息通道:首先在网络中定义从发送方到接收方的一个路由,然后在该路由上共同执行通信协议。如果需要保护所传信息以防敌手对其保密性、认证性等构成的威胁,则需要考虑通信的安全性。安全传输技术有以下两个基本成分:①消息的安全传输,包括对消息的加密和认证。加密的目的是将消息搞乱以使敌手无法读懂,认证的目的是检查发送者的身份。②通信双方共享的某些秘密信息,如加密密钥。为获得消息的安全传输,可能还需要一个可信的第三方,其作用可能是负责向通信双方发布秘密信息或者在通信双方有争议时进行仲裁。安全的网络通信必须考虑以下4个方面:①加密算法。②用于加密算法的秘密信息。③秘密信息的分布和共享。④使用加密算法和秘密信息以获得安全服务所需的协议。信息系统的保护模型:对付未授权访问的安全机制可分为两道防线:第一道称为守卫者,它包括基于通行字的登录程序和屏蔽逻辑程序,分别用于拒绝非授权用户的访问、检测和拒绝病毒;采用技术如基于口令的验证方式。由于该方式容易被攻破,目前开始采用基于数字证书的验证方式。第二道防线由一些内部控制部件构成,用于管理系统内部的各项操作和分析所存有的信息,以检查是否有未授权的入侵者。如将合法用户划分为不同的用户组,不同用户组被赋予不同的权限以访问主机的目录、文件等资源5.密码体制从原理上可分为哪两大类,各自的含义?单钥体制(One-keysystem):加密密钥和解密密钥相同。分类:流密码(Streamcipher):明文逐位加密分组密码(Blockcipher):明文逐组加密单钥体制不仅可用于数据加密,也可用于消息的认证。采用单钥体制的系统的保密性主要取决于密钥的保密性,与算法的保密性无关,即由密文和加解密算法不可能得到明文。换句话说,算法无需保密,需保密的仅是密钥。根据单钥密码体制的这种特性,单钥加解密算法可通过低费用的芯片来实现。密钥可由发送方产生然后再经一个安全可靠的途径(如信使递送)送至接收方,或由第三方产生后安全可靠地分配给通信双方。•双钥体制(Two-keysystem):加密密钥和解密密钥不同。加密和解密能力分开•可以实现多个用户加密的消息只能由一个用户解读(用于公共网络中实现保密通信)•只能由一个用户加密消息而使多个用户可以解读(可用于认证系统中对消息进行数字签字)。•无需事先分配密钥。6.单钥体制对明文消息的加密的两种方式?单钥体制(One-keysystem):加密密钥和解密密钥相同。分类:流密码(Streamcipher):明文逐位加密分组密码(Blockcipher):明文逐组加密7.对密码系统的攻击的4种类型?第2章流密码1.有限状态自动机的基本原理?2.LFSR输出序列和周期的计算3.m序列密码的破译4.J-K触发器和基本钟控序列生成器输出序列和周期的计算第3章分组密码体制1.Des加密算法的过程2.分组密码的4种运行模式1电码本(ECB)模式:ECB(electroniccodebook)模式是最简单的运行模式,它一次对一个64比特长的明文分组加密,而且每次的加密密钥都相同,如图3.10所示。当密钥取定时,对明文的每一个分组,都有一个惟一的密文与之对应。因此形象地说,可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文。ECB在用于短数据(如加密密钥)时非常理想,因此如果需要安全地传递DES密钥,ECB是最合适的模式。ECB的最大特性是同一明文分组在消息中重复出现的话,产生的密文分组也相同。2密码分组链接(CBC)模式:让重复的明文分组产生不同的密文分组,CBC(cipherblockchaining)模式就可满足这一要求。加密算法的输入是当前明文分组和前一次密文分组的异或;因此加密算法的输入不会显示出与这次的明文分组之间的固定关系,所以重复的明文分组不会在密文中暴露出这种重复关系。3.IDEA算法4.AES算法第4章公钥密码6.RSA加密体制的原理和计算7.ECC加密体制的原理和计算第5章密钥分配与密钥管理1.在单钥密钥体制下有中心的密钥分配和无中心的密钥分配2.公钥加密体制下公钥的4种分配方法3.用公钥加密分配单钥密码体制的密钥4.Diffie-Hellman密钥交换5.线性同余算法伪随机数产生器第6章消息认证和杂凑算法1.消息认证码的定义及3种使用方式消息认证码是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。2.杂凑函数的定义及6种使用方式杂凑函数H是一公开函数,用于将任意长的消息M映射为较短的、固定长度的一个值H(M),作为认证符,称函数值H(M)为杂凑值、杂凑码或消息摘要。杂凑码是消息中所有比特的函数,因此提供了一种错误检测能力,即改变消息中任何一个比特或几个比特都会使杂凑码发生改变。①消息与杂凑码链接后用单钥加密算法加密。由于所用密钥仅为收发双方A、B共享,因此可保证消息的确来自A并且未被篡改。同时还由于消息和杂凑码都被加密,这种方式还提供了保密性,见图6.3(a)。②用单钥加密算法仅对杂凑码加密。这种方式用于不要求保密性的情况下,可减少处理负担。注意这种方式和图6.1(a)的MAC结果完全一样,即将EK[H(M)]看作一个函数,函数的输入为消息M和密钥K,输出为固定长度,见图6.3(b)。③用公钥加密算法和发送方的秘密钥仅加密杂凑码。和②一样,这种方式提供认证性,又由于只有发送方能产生加密的杂凑码,因此这种方式还对发送方发送的消息提供了数字签字,事实上这种方式就是数字签字,见图6.3(c)。④消息的杂凑值用公钥加密算法和发送方的秘密钥加密后与消息链接,再对链接后的结果用单钥加密算法加密,这种方式提供了保密性和数字签字,见图6.3(d)。⑤使用这种方式时要求通信双方共享一个秘密值S,A计算消息M和秘密值S链接在一起的杂凑值,并将此杂凑值附加到M后发往B。因B也有S,所以可重新计算杂凑值以对消息进行认证。由于秘密值S本身未被发送,敌手无法对截获的消息加以篡改,也无法产生假消息。这种方式仅提供认证,见图6.3(e)。⑥这种方式是在⑤中消息与杂凑值链接以后再增加单钥加密运算,从而又可提供保密性,见图6.3(f)。3.杂凑函数应满足的条件杂凑函数的目的是为需认证的数据产生一个“指纹”。为了能够实现对数据的认证,杂凑函数应满足以下条件:①函数的输入可以是任意长。②函数的输出是固定长。③已知x,求H(x)较为容易,可用硬件或软件实现。④已知h,求使得H(x)=h的x在计算上是不可行的,这一性质称为函数的单向性,称H(x)为单向杂凑函数。⑤已知x,找出y(y≠x)使得H(y)=H(x)在计算上是不可行的。如果单向杂凑函数满足这一性质,则称其为弱单向杂凑函数。⑥找出任意两个不同的输入x、y,使得H(y)=H(x)在计算上是不可行的。如果单向杂凑函数满足这一性质,则称其为强单向杂凑函数。第⑤和第⑥个条件给出了杂凑函数无碰撞性的概念,如果杂凑函数对不同的输入可产生相同的输出,则称该函数具有碰撞性。4.MD5和SHA杂凑算法的基本过程,它们之间的区别与联系第7章数字签字和密码协议1.数字签字的两类执行方式?1.直接方式直接方式是指数字签字的执行过程只有通信双方参与,并假定双方有共享的秘密钥或接收一方知道发方的公开钥。直接方式的数字签字有一公共弱点,即方案的有效性取决于发方秘密钥的安全性。如果发方想对已发出的消息予以否认,就可声称自己的秘密钥已丢失或被窃,因此自己的签字是他人伪造的。具有仲裁方式的数字签字和直接方式的数字签字一样,具有仲裁方式的数字签字也有很多实现方案,这些方案都按以下方式运行:发方X对发往收方Y的消息签字后,将消息及其签字先发给仲裁者A,A对消息及其签字验证完后,再连同一个表示已通过验证的指令一起发往收方Y。此时由于A的存在,X无法对自己发出的消息予以否认。在这种方式中,仲裁者起着重要的作用并应取得所有用户的信任。2.RSA签字与DSS签字的不同方式?RSA算法既能用于加密和签字,又能用于密钥交换。与此不同,DSS使用的算法只能提供数字签字功能采用RSA签字时,将消息输入到一个杂凑函数以产生一个固定长度的安全杂凑值;再用发方的秘密钥加密杂凑值就形成了对消息的签字。消息及其签字被一起发给收方,收方得到消息后再产生出消息的杂凑值,且使用发方的公开钥对收到的签字解密。这样收方就得了两个杂凑值,如果两个杂凑值是一样的,则认为收到的签字是有效的。DSS签字也利用一杂凑函数产生消息的一个杂凑值,杂凑值连同一随机数k一起作为签字函数的输入,签字函数还需使用发送方的秘密钥SKA和供所有用户使用的一族参数,称这一族参数为全局公开钥PKG。签字函数的两个输出s和r就构成了消息的签字(s,r)。接收方收到消息后再产生出消息的杂凑值,将杂凑值与收到的签字一起输入验证函数,验证函数还需输入全局公开钥PKG和发送方的公开钥PKA。验证函数的输出如果与收到的签字成分r相等,则验证了签字是有效的。3.保证消息的实时性常用两种方法?保证消息的实时性常用以下两种方法:•时戳如果A收到的消息包括一时戳,且在A看来这一时戳充分接近自己的当前时刻,A才认为收到的消息是新的并接受之。这种方案要求所有各方的时钟是同步的。•询问-应答用户A向B发出一个一次性随机数作为询问,如果收到B发来的消息(应答)也包含一正确的一次性随机数,A就认为B发来的消息是新的并接受之。4.相互认证与单向认证?