第3章分组密码习题
1.证明DES的解密变换是加密变换的逆。
2.对DES进行穷搜索攻击时,需要在由256个密钥空间进行。能否根
据明文、密钥、密文之间的互补关系(即:若C=DES K(P)则C’=DES K’(P’))减小进行穷搜索攻击时所用的密钥空间?试说明原因。
3.现代密码通常是由几个古典密码技术结合起来构造的。在DES 和
AES 中找出采用了下述三种密码技术的部分: (i) 代换密码,(ii) 换位密码, (iii )弗纳姆密码。
4. (i) 为什么AES 被认为是非常有效的?(ii) 在AES 的实现中,
有限域F 28中的乘法是如何实现的?
5.在分组密码的密码分组链接(CBC)运行模式下,如果收到的密文
的解密“具有正确的填充”,你认为传输的明文有有效的数据完整性吗?
6.在8比特CFB模式中,如果在密文字符中出现1比特的错误,问
该错误能传播多远?
7.(1)在IDEA的模乘运算中,为什么将模数取为216+1而不是216?
(2)在IDEA的模加运算中,为什么将模数取为216而不是216+1?8.在DES数据加密标准中,
明文m=0011 1000 1101 0101 1011 1000 0100 0010 1101 0101 0011 1001 1001 0101 1110 0111
密钥K=1010 1011 0011 0100 1000 0110 1001 0100 1101 1001 0111 0011 1010 0010 1101 0011
试求L1和R1。
9.假设我们有128bit的AES密钥,用16进制表示为:
2B7E151628AED2A6ABF7158809CF4F3C
由该种子密钥构造一个完整的密钥编排方案。
10.使用上题中的128bit密钥,在10轮AES下计算下列明文(以16
进制表示)的加密结果:3243F6A8885A308D313198A2E0370734。
11.已知IDEA密码算法中,
明文m=01011100 10001101 10101001 11011110 10101101 00110101 00010011 10010011;
密钥K=00101001 10100011 11011000 11100111 10100101 01010011 10100010 01011001 00100100 01011001 11001010 11100111 10100010 00101010 11010101 00110101,求第一轮的输出和第二轮的输出。
国内外分组密码理论与技术的研究现状及发展趋势 1 引言 密码(学)技术是信息安全技术的核心,主要由密码编码技术 和密码分析技术两个分支组成。密码编码技术的主要任务是寻求产 生安全性高的有效密码算法和协议,以满足对数据和信息进行加密 或认证的要求。密码分析技术的主要任务是破译密码或伪造认证信 息,实现窃取机密信息或进行诈骗破坏活动。这两个分支既相互对 立又相互依存,正是由于这种对立统一的关系,才推动了密码学自 身的发展[6]。目前人们将密码(学)理论与技术分成了两大类, 一类是基于数学的密码理论与技术,包括分组密码、序列密码、公 钥密码、认证码、数字签名、Hash函数、身份识别、密钥管理、 PKI技术、VPN技术等等,另一类是非数学的密码理论与技术,包括 信息隐藏、量子密码、基于生物特征的识别理论与技术等。 在密码(学)技术中,数据加密技术是核心。根据数据加密所 使用的密钥特点可将数据加密技术分成两种体制,一种是基于单密 钥的对称加密体制(传统加密体制),包括分组密码与序列密码, 另一类是基于双密钥的公钥加密体制。本文主要探讨和分析分组密 码研究的现状及其发展趋势。 2 国内外分组密码研究的现状 2.1 国内外主要的分组密码 美国早在1977年就制定了本国的数据加密标准,即DES。随着 DES的出现,人们对分组密码展开了深入的研究和讨论,已有大量 的分组密码[1,6],如DES的各种变形、IDEA算法、SAFER系列算 法、RC系列算法、Skipjack算法、FEAL系列算法、REDOC系列算 法、CAST系列算法以及Khufu,Khafre,MMB,3- WAY,TEA,MacGuffin,SHARK,BEAR,LION,CA.1.1,CRAB,Blowfish,GOST,SQUA 算法和AES15种候选算法(第一轮),另有NESSIE17种候选算法 (第一轮)等。 2.2 分组密码的分析 在分组密码设计技术不断发展的同时,分组密码分析技术也得 到了空前的发展。有很多分组密码分析技术被开发出来,如强力攻 击(穷尽密钥搜索攻击、字典攻击、查表攻击、时间存储权衡攻 击)、差分密码分析、差分密码分析的推广(截段差分密码分析、 高阶差分密码分析、不可能差分密码分析)、线性密码分析、线性 密码分析的推广(多重线性密码分析、非线性密码分析、划分密码 分析)、差分线性密码分析、插值攻击、密钥相关攻击、能量分 析、错误攻击、定时攻击等等。 其中,穷尽密钥搜索攻击是一种与计算技术密不可分的补素密码分 析技术,也是最常用的一种密码分析技术。通过这种技术,可以破 译DES的算法。在DES最初公布的时候,人们就认为这种算法的密钥 太短(仅为56bit),抵抗不住穷尽密钥搜索的攻击。因此,1997 年1月28日,美国colorado的程序员Verser从1997年3月13日起, 在Internet上数万名志愿者的协同下,用96天的时间,于1997年6
分组密码体制简介 分组密码体制也具有简捷、快速的特点,并且容易标准化,使其成为软硬件加密的主流算法。目前主流的分组密码有:DES、IDEA…… . 1.分组密码的特点 与序列密码不同,分组密码是将明文序列划分成等长的分组(Block),对每一组用同一加密算法和同一密钥进行加密。 分组密码有其自身的优点,首先分组密码容易被标准化,因为在今天的数据网络通信中,信息通常是被成块的处理和传输的。其次,使用分组赌东道密码容易实现同步,因为一个密码组的传输错误不会影响到其它的分组,丢失一个密文组不会对随后组的解密产生影响。这就是说,传输错误不会扩散。而这些方面恰恰是序列密码的最大缺点。 分组密码与序列密码相比的一个缺点就是算法庞大一些,需要更多的计算资源。分组密码的另一大缺点是其安全性很难被证明。尽管“可证明安全性”的研究发展很快,但目前的分组密码大多是“看来安全的”,还没有一个分组密码被证明是真正安全的,至多证明了局部安全性。这其中的原因是:因商业化而要求分组密码算法的细节全部暴露,因此对分组密码的攻击类型很多,安全性概念也就很多,有人为了统一这些安全性概念,甚至引入了伪随机性和超伪随机性,它们是用概率图灵机来描述的,在实际设计和分析中很难应用。 2.分组密码的设计准则 一、安全性准则 对以下的安全性的描述总是基于以下的假设:加密体制(包括算法的细节)是公开的;安全性完全依赖于密钥;信道是不安全的,即攻击者可以任意的截取密文;攻击者有时也可以截取一些“废弃”的明文。 (1)分组长度和密钥长度:当明文分组长度为n比特时,至多需要2n个明文-密文对就可以彻底破解密钥。同理当密钥长度为n比特时,对一个截获的密文,至多需要试验2n个密钥就可以破解了密文。因此从安全性角度来考虑,明文分组长度的密钥长度因尽可能的大。 (2)混淆性:所设计的密码应使得明文、密文、密钥之间的依赖关系相当复杂,以至于这种依赖关系对密码分析者来说是无法利用的。密码分析者利用这种依赖关系的方法非常多,比如差分密码分析、线性密码分析等,因此混淆性也是一个非常重要的原则。 (3)扩散性:所设计的密码应使得密钥的每一位数字影响密文的许多位数字,以防止对密钥的逐段破解;明文的每一位数字也影响密文的许多位数字,以便最充分的隐藏明文的统计特征。对扩散性可以有许多种理解,比如“粘连性”指的是明文、密文、密钥每一位都互相依赖;“不连续性”或“雪崩性”指的是当改变明文的任何一个比特时,对应密文改变的比特的个数应是一个随机变量,其平均值是分组长度的一半。 (4)非线性度(抗线性密码分析强度):这一项属于混淆性。有一个基本数学原理:如果明文和密文的关系是n维线性关系,且系数是密钥,则n个明文-密文对(而不是2n个)就可以破解密钥;如果明文与密文的关系是n维r次函数关系,且系数是密钥,则n r个明文-密文对就可以破解密钥;如果虽然次数r较大,但明文与密文的关系“非常逼近”一个n
第3章 分组密码 习题及参考答案 1. 设DES 算法中,明文M 和密钥K 分别为: M =0011 1000 1100 0100 1011 1000 0100 0011 1101 0101 0010 0011 1001 1110 0101 1110 K =1010 1001 0011 0101 1010 1100 1001 1011 1001 1101 0011 1110 1101 0101 1100 0011 求L 1和R 2。 解: 初始变换IP : 1001 1010 1101 0101 1101 0010 0011 1000 0101 0110 0010 0101 1100 0101 1110 1000 则,0L =1001 1010 1101 0101 1101 0010 0011 1000 0R =0101 0110 0010 0101 1100 0101 1110 1000 K 去校验位得: 0C =1101 0111 1100 0000 0010 0111 0111 0D =1010 1000 0111 0110 0011 0101 0010 循环左移一位:1C =1010 1111 1000 0000 0100 1110 1111 1D =0101 0000 1110 1100 0110 1010 0101 经过置换选择得到:1K =0000 1111 0110 1000 1101 1000 1001 1010 1000 0111 0011 0001 同样可以得到:2K =0101 0101 0110 0001 1101 1101 1011 0101 0101 0000 0110 1110 1L =0R =0101 0110 0010 0101 1100 0101 1110 1000
第八节 分组密码的工作模式和一般设计原理 1
分组密码的工作模式 为什么要设计工作模式? 分组密码的工作模式是:根据不同的数据格式和安全性要求, 以一个具体的分组密码算法为基础构造一个分组密码系统的方法。分组密码的工作模式应当力求简单, 有效和易于实现。 2
1980年12月, FIPS 81标准化了为DES开发 的五种工作模式。这些工作模式适合任何分组密码。现在, AES的工作模式正在研发, 这些AES 的工作模式可能会包含以前DES的工作模式, 还 有可能包括新的工作模式。我们仅以DES为例介 绍分组密码主要的五种工作模式。 3
4直接使用DES 算法对64bit 的数据进行加密的工作模式就是ECB 模式。在这种工作模式下, 加密变换和解密变换分别为: DES ()i i k c m = i =1,2,… (4.12) 1DES ()i i k m c ?= i =1,2,… (4.13) 这里k 是DES 的种子密钥, i m 和i c 分别是第i 组明文和密文。 电码本(ECB)模式
在给定密钥下, i m有64 2种可能的取值, i c也有64 2种可能的取值, 各(i m, i c)彼此独立, 构成一个巨大的单表代替密码, 因而称其为电码本模式。 5
+=,则相应的密文ECB模式的缺点是:如果n i i m m +=,即在给定密钥k下,同一明文组总是产生同n i i c c 一密文组,这会暴露明文组的数据格式。某些明文的数据格式会使得明文组有大量的重复或较长的零串,一些重要的数据常常会在同一位置出现,特别是格式化的报头、作业号、发报时间、地点等特征都将被泄露到密文之中,使攻击者可以利用这些特征。 6
上机一:流密码与分组密码编程 【上机目的】 熟悉流密码和分组密码加密/解密算法的基本原理,通过编程/开源代码分析分别了解一种标准流密码算法和一种标准分组密码算法的运行原理。 【上机环境】 1、硬件PC机一台。 2、系统配置:操作系统windows XP以上。 3、编程语言:C/C++/C#/Java/Python 【上机容及要求】 1、分别利用RC4算法(或其它任一种标准流密码算法)和DES算法(或AES算法等其它任 一种标准分组密码算法)对数据进行加解密操作 2、代码分析及注释 3、代码调试 4、代码修改及测试(选做) 备注:可借鉴网上相关算法的开源代码进行编程实现,编程语言不限。 【上机报告】 1、提交关键功能有注释的源码。 2、提交运行测试结果(运行截图及说明)。 3、运行测试结果分析。 4、上机总结(任务完成情况、出现或待解决的问题、收获、体会等)。 流密码 流密码就是使用较短的一串数字(叫它密钥吧),来生成无限长的伪随码流,当然事实上只需要生成和明文长度一样的密码流就够了。一个非常简单的流密码算法是,用6个比特位101100做密钥,将它不断重复得到密码流0. ...直到和明文长度相等,然后将密码流和明文“相加”就得到密文了,解密就是将这个密码流和密文“相加”。流密码算法有个特殊的名称——维吉尼亚密码,当然这里密钥长度可以不是6。用较短的密钥产生无限长的密码流的方法非常多,其中有一种就叫做RC4。 把明文的信息限制在ascii码字符集(它已经能表示所有的英文资料了哈哈),每个字符是一个比特,占8位。假设明文是abc,a、b、c的ascii值分别为97、98、99。二进制形式为01100001、01100010、01100011。密钥流和明文长度一样,假设是sdf,同样可以得到二进制流01110011、01100100、01100110,让他们在对应位做异或运算就可以得到密文了,c语言有^运算符来实现“相加”的操作。我们就直接对字符进行“相加”即a^s, b^d, c^f。得到的结果的二进制形式为00010010、00000110、00000101,它们分别表示ascii码值为18、6、5的字符 RC4用两步来生成密码流 首先你指定一个短的密码,储存在key[MAX]数组里,还有一个数组S[256],令S[i]=i。然后利用数组key来对数组S做一个置换,也就是对S数组里的数重新排列,排列算法为
填空题 1、密码学的主要任务是实现机密性、鉴别、数据完整性、抗抵赖性。 1、机密性是一种允许特定用户访问和阅读信息,而非授权用户对信息内容不可理解的安全属性。在密码学中,信息的机密性通过加密技术实现。 2、完整性数据完整性即用以确保数据在存储和传输过程中不被非授权修改的的安全属性。密码学可通过采用数据加密、报文鉴别或数字签名等技术来实现数据的完整性保护。 3、鉴别是一种与数据来源和身份鉴别有关的安全服务。鉴别服务包括对身份的鉴别和对数据源的鉴别。对于一次通信,必须确信通信的对端是预期的实体,这就涉及到身份的鉴别。 4、抗抵赖性 是一种用于阻止通信实体抵赖先前的通信行为及相关内容的安全特性。密码学通过对称加密或非对称加密,以及数字签名等技术,并借助可信机构或证书机构的辅助来提供这种服务。 5、密码编码学的主要任务是寻求有效密码算法和协议,以保证信息的机密性或认证性的方法。它主要研究密码算法的构造与设计,也就是密码体制的构造。它是密码理论的基础,也是保密系统设计的基础。 6、密码分析学的主要任务是研究加密信息的破译或认证信息的伪造。它主要是对密码信息的解析方法进行研究。 7、明文(Plaintext)是待伪装或加密的消息(Message)。在通信系统中它可能是比特流,如文本、位图、数字化的语音流或数字化的视频图像等。 8、密文(Ciphertext)是对明文施加某种伪装或变换后的输出,也可认为是不可直接理的字符或比特集,密文常用c表示。 9、加密(Encrypt )是把原始的信息(明文)转换为密文的信息变换过程。 10、解密(Decrypt)是把己加密的信息(密文)恢复成原始信息明文的过程。 11、密码算法(Cryptography Algorithm)也简称密码(Cipher),通常是指加、解密过程所使用的信息变换规则,是用于信息加密和解密的数学函数。对明文进行加密时所采用的规则称作加密算法,而对密文进行解密时所采用的规则称作解密算法。加密算法和解密算法的操作通常都是在一组密钥的控制下进行的。 11、密钥(Secret Key )密码算法中的一个可变参数,通常是一组满足一定条件的随机序列 12、替代密码是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文,替代密码的密钥就是其替换表。 13、根据密码算法加解密时使用替换表多少的不同,替代密码又可分为单表替代密码和多
选择题 1、如果发送方用私钥加密消息,则可以实现() A、保密性 B、保密与鉴别 C、保密而非鉴别 D、鉴别 2、在混合加密方式下,真正用来加解密通信过程中所传输数据(明文)的密钥是() A、非对称算法的公钥 B、对称算法的密钥 C、非对称算法的私钥 D、CA中心的公钥 3、以下关于加密说法,不正确的是() A、加密包括对称加密和非对称加密两种 B、信息隐蔽是加密的一种方法 C、如果没有信息加密的密钥,只要知道加密程序的细节就可以对信息进行解密 D、密钥的位数越多,信息的安全性就越高 4、以下关于混合加密方式说法不正确的是:() A、采用公开密钥体制进行通信过程中的加解密处理 B、采用公开密钥体制对对称密钥体制的密钥进行加密后的通信 C、采用对称密钥体制对对称密钥体制的密钥进行加密后的通信 D、采用混合加密方式,利用了对称密钥体制的密钥容易管理和非对称密钥体制的加解密处理速度快的双重优点 5、两个不同的消息摘要具有相同的值时,称为() A、攻击 B、冲突 C、散列 D、都不是
6、()用于验证消息完整性。 A、消息摘要 B、加密算法 C、数字信封 D、都不是 7、HASH函数可应用于()。 A、数字签名 B、生成程序或文档的“数字指纹” C、安全存储口令 D、数据的抗抵赖性 8、数字证书采用公钥体制,每个用户设定一把公钥,由本人公开,用它进行: A、加密和验证签名 B、解密和签名 C、加密 D、解密 9、数字签名为保证其不可更改性,双方约定使用() A、HASH算法 B、RSA算法 C、CAP算法 D、ACR算法 10、1是网络通信中标志通信各方身份信息的一系列数据,提供一种在Internet上验证身份的方式 A、数字认证 B、数字证书 C、电子证书 D、电子认证 11、以下关于CA认证中心说法正确的是
一、选择 1.若一个单向函数存在一个附加信息,当不知道该附加信息时从函数值求原像是困难的,但是知道 该附加信息时从函数求原像是容易的,则该单向函数是 A.陷门单向函数 B.门陷单向函数 C.完全单向函数D容量单向函数 2.标志着公钥密码学诞生的事件是 A. C.Shannon发表的保密系统的通信理论 B.W.Diffle和M.Hellman发表“密码学的新方向”一文 C. C.RSA加密公钥的提出 D.维吉利亚密码体制的提出。 3.下列密码体制中,被认为无条件安全的是 A.一次一密乱码本(one-time pad) B.ElGamal C.RSA D.Cramer-Shop 4.下列密码体制中,不属该分组密码的是 A.IDEA B.AES C.ElGamal D.DES 5.目前通称的AES算法指的是 A.Terpent算法 B.RCG算法 C.Rijndael算法 D.Tuofish算法 二、填空 1.按照一个明文字母是否总是被一个固定的字母代换进行划分,代换密码可分为单表代换密码和 多表代换密码。 2.经典密码学的2个分支:密码编码学和密码分析学。 3.根据攻击者所拥有的信息不同,对数字签名方案的攻击主要有惟密钥攻击,已知消息攻击,选 择消息攻击,适应性选择消息攻击四种常见的类型。 4.分组密码主要有电子密码本模式(ECB) ,密码分组链接模式(CBC) ,密码反馈模式(CFB) , 输出反馈模式(OFB) 。 5.根据密码分析者破译时已具备的条件,把对密码系统的常见攻击分为惟密文攻击,已知明文攻 击,选择明文攻击,选择密文攻击。 三、问答 1.Feistel 密码结构主要部件是哪些?它在迭代运算中起到什么作用? ANS:Feistel密码是通过代替和置换(S-P网络)交替的方式来构造分组密码,其实就是基于混乱和扩散原理实现加解密运算。 S盒变换:它把输入的一个n长的比特串转化为另一个m长的比特串输出。 P盒变换:通过把一个比特串中各比特的位置次序重新排列而得到新的比特串的变换。 2.数字签名的四个特征? ANS:数字签名具有以下特征: (1) 收方能够确认或证实发方的签名,但不能伪造。 (2) 发方发出签名的消息给收方后,就不能再否认他所签发的消息。 (3) 收方对已收到的签名消息不能否认。 (4) 第三者可以确认收发双方之间的消息传送,但不能伪造这一过程。 3.分组密码主要优点是什么?其设计原则应考虑哪些问题? ANS:分组密码的优点是:明文信息良好的扩展性,对插入的敏感性,不需要密钥同步,较强的适用性,适合作为加密标准。在分组密码具体设计中,还需重点考虑的有:S盒的设计、P盒的设计、轮函数F的设计、迭代轮数以及密钥扩展算法等。
流密码和分组密码 按照密钥的特征不同,密码体制分为对称密码体制和非对称密码体制。按照对明文消息加密方式的不同,密码体制分为流密码(Stream Cipher )和分组密码(Block Cipher )[1]。非对称密码体制均为分组密码[2]。 1 流密码 流密码也称为序列密码。在流密码中,明文以序列的方式表示,称为明文流。在对明文流进行加密时,先由种子密钥生成一个密钥流。然后,利用加密算法把明文流和密钥流加密,产生密文流。流密码每次只对明文中的单个bit 位进行加密变换,加密过程所需的密钥流由种子密钥通过密钥流生成器产生。流密码的主要原理是通过随机数发生器产生性能优良的伪随机序列(密钥流),使用该序列加密明文流(逐bit 位加密),得到密文流。由于每一个明文都对应一个随机的加密密钥,因此流密码在理论上属于无条件安全的密码体制(一次一密密码) [3]。流密码的基本加密过程,如图1所示。 图1 流密码的加密过程 设明文流为:12i m m m m = ,密钥流由密钥流发生器f 产生:(,)i i z f k σ=,这里i σ是加密器中的存储器在时刻i 的状态,f 是由种子密钥k 和i σ产生的函数。设最终得到的密钥流为: 12i k k k k = ,加密结果为:121212()()()i i k k k i c c c c E m E m E m == ,解密结果为: 121212()()()i k k k i i m D c D c D c m m m == 。用流密码进行保密通信的模型,如图2所示: 图2 流密码保密通信图 2 分组密码 分组密码也称为块密码。当加密一条长消息(明文)时,首先,将明文编码表示为二进制序列;然后,将其分成若干个固定长度的组(最后一组长度不够时还得进行填充,如补0);
实习二分组密码加密 一、实习目的 1.理解对称加密算法的原理,熟悉常用的对称加密算法:DES、TripleDES、Blowfish; 2.以DES加密算法为例,掌握分组加密算法加、解密过程的实现。 二、实习要求 1.实习前认真预习第5章有关内容; 2.熟悉java中的java.security.*和java.crypto.*中的相关类; 3.按要求认真撰写实习报告。 三、实习内容 1.[基本要求] 以DES/DESede为例,利用java中的相关类实现对指定字符串的加、解密。 2.[实现提示] (1) 可以利用java中的KeyGenerator类创建对称秘钥,利用工厂类KeyGenerator 的静态方法getInstance()获得KeyGenerator()类对象; (2) 方法getInstance()的参数为字符串类型,指定加密算法的名称如:Blowfish、DES、DESede、HmacMD5或HmacSHA1等; (3) 利用工厂类Cipher的对象可以创建密码器。同样的,getInstance()的参数为字符串类型,指定加密算法的名称。 实验截图: 以DES加密为例,客户端:
客户端解密: 实习代码: 服务器MyServer类: package Caesar_Modification; import java.awt.EventQueue; import java.awt.TextArea; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.swing.JFrame;
分组密码与流密码 第一节什么是分组密码 分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。现代分组密码的研究始于20世纪70年代中期,至今已有20余年历史,这期间人们在这一研究领域已经取得了丰硕的研究成果。大体上,分组密码的研究包括三方面:分组密码的设计原理,分组密码的安全性分析和分组密码的统计性能测试。 第二节分组密码的设计原则 Claude Shannon在1949年提出了代替—置换(S-P)网络的想法,成为当代分组加密法的基础,而代替和置换就是两种基本的密码学运算。 Shannon又提出扩散(diffusion)和扰乱(confusion)是影响密码安全的主要因素。扩散的目的是让明文中的单个数字影响密文中的多个数字,从而使明文的统计特征在密文中消失,相当于明文的统计结构被扩散。例如,最简单的方法让明文中的一个数字影响密文中的k个数字,可以用: 扰乱是指让密钥与密文的统计信息之间的关系变得复杂,从而增加通过统计方法进行攻击的难度。扰乱可以通过各种代换算法实现。 设计安全的分组加密算法,需要考虑对现有密码分析方法的抵抗,如差分分析、线性分析等,还需要考虑密码安全强度的稳定性。此外,用软件实现的分组加密要保证每个组的长度适合软件编程(如8、16、32……),尽量避免位置换操作,以及使用加法、乘法、移位
等处理器提供的标准指令;从硬件实现的角度,加密和解密要在同一个器件上都可以实现,即加密解密硬件实现的相似性。 第三节Feistel加密结构 如今许多对称式分组密码都是以Horst Feistel提出的“Feistel加密法”的结构为基础。Feistel加密法以不可逆的混合式加密为基础,将输入的区段分为两半,分多个回合来处理,每回合左半部资料会执行一次替换运算,替换运算会将右半部回合函式F的结果,以XOR运算方式与左半部资料结合起来,然后交换左右两半资料。这一思路充分展现了Shannon的SP网络概念。
DES分组密码实验报告 一、DES算法的实现 1.DES简介 DES算法工作:如Mode为加密,则用Key 去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。 2. DES算法详述 (1)DES加密标准 DES是对二元数字分组加密的分组密码算法,分组长度为64比特。每64位明文加密成64位密文,没有数据压缩和扩展,密钥长度为56比特,若输入64比特,则第8,16,24,32,40,48,56,64为奇偶校验位,所以,实际密钥只有56位。DES算法完全公开,其保密性完全依赖密钥。 DES的加密过程可表示为: DES(m)= IP-1T16·T15…T2·T1·IP(m). 右图面是完全16轮DES算法框图: 图1 完全16轮DES算法
1 初始置换IP 初始置换是将输入的64位明文分为8个数组,每一组包括8位,按1至64编号。 IP的置换规则如下表: 表1 IP置换规则 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 2 IP-1是IP的逆置换 由于第1位经过初始置换后,已处于第40位。逆置换就是再将第40位换回到第1位。 逆置换规则如下表所示: 表2 IP-1置换 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 初始置换IP及其逆置换IP-1并没有密码学意义,因为置换前后的一一对应关系是已知的。它们的作用在于打乱原来输入明文的ASCⅡ码字划分的关系,并将原来明文的第m8,m16,m24,m32,m40,m48,m56,m64位(校验位)变成IP的输出的一个字节。 3. DES算法的迭代过程 图中Li-1和Ri-1分别是第i-1次迭代结果的左右两部分,各32比特。即Li=Ri-1, Ri=Li-1 f(Ri-1,ki)。其中轮密钥Ki为48比特,函数F(R,K)的计算过程如图所示。轮输入的右半部分R为32比特,R首先被扩展成48比特,扩展过程由表3定义,其中将R的16个比特各重复一次。扩展后的48比特再与子密钥Ki异或,然后再通过一个S盒,产生32比特的输出。该输出再经过一个由表4定义的置换,产生的结果即为函数F(R,K)的输出。 32 1 2 3 4 5
一填空题 1.密码学发展的四个阶段:、、 、。 2.DES的分组长度是比特,密钥长度是比特,密文长度是64比特。 3.数字签名方案是指由、、 、、组成的五元组。 4.信息安全的核心是;密码学研究的主要问题是 5.加密算法模式有四种,分别是:,, 5.DES的分组长度是比特,密钥长度是比特,密文长度是比特。 6.AES的密钥长度可以是、、;AES圈变换的由四个 不同的变换组成,它们分别是、、 、。 7.柯可霍夫原则指出密码系统的安全性不能取决于,而应取决于。 8.柯可霍夫原则指出密码系统的安全性不能取决于,而应取决 于。 9.根据加密内容的不同,密钥可以分 为、、 10.对称密码体制可以分为和两类。 11.哈希函数MD5和SHA-1的输出长度分别是和比特。 12.密码学由和组成。 13.分组密码的加解密算法中最关键部分是非线性运算部分,那么,DES加密算法的非 线性预算部分是指非线性代换,AES加密算法的非线性运算部分是指。 14. DES与AES有许多相同之处,也有一些不同之处,请指出两处不同: AES密钥长 度可变DES不可变, DES面向比特运算AES面向字节运算。
15. MD5的主循环有(4 )轮。 16. SHA1接收任何长度的输入消息,并产生长度为(160)bit的Hash值。 17.分组加密算法(如AES)与散列函数算法(如SHA)的实现过称最大不同是(可逆)。 18.Hash函数就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输 出称为。 19.Hash函数的单向性是指对任意给它的散列值h找到满足H(x)=h的x 在计算上 是不可行的。 20.公钥密码体制的思想是基于陷门单向函数,公钥用于该函数的正向(加密)计 算,私钥用于该函数的反向(解密)计算。 21.1976 年,和在密码学新方向一文中提出了公钥密码的思想,从而开创了线代密 码学的新领域。 22.公钥密码体制的出现,解决了对称密码体制很难解决的一些问题,主要体现一下三 个方面:密钥分发问题、密钥管理问题和数字签名问题。 23.RSA的数论基础是数论的欧拉定理,在现有的计算能力条件下,RSA 被 认为是安全的最小密钥长度是1024位。 24.公钥密码算法一般是建立在对一个特定的数学难题求解上,那么RSA算法是基于 大整数因子分解困难性、ElGamal算法是基于有限域乘法群上离散对数的困 难性。 25.为保证安全性,在设计分组密码时,密码变换必须足够复杂,尽量使用混淆与扩 散原则。这样使攻击者除了用穷举攻击以外,找不到其他简洁的数学破译方法二计算题
分组密码加密 一、实习目的 1.理解对称加密算法的原理,熟悉常用的对称加密算法:DES、TripleDES、Blowfish; 2.以DES加密算法为例,掌握分组加密算法加、解密过程的实现。 二、实习内容 1.[基本要求] 以DES/DESede为例,利用java中的相关类实现对指定字符串的加、解密。 2.[实现提示] (1) 可以利用java中的KeyGenerator类创建对称秘钥,利用工厂类KeyGenerator的静态方法getInstance()获得KeyGenerator()类对象; (2) 方法getInstance()的参数为字符串类型,指定加密算法的名称如:Blowfish、DES、DESede、HmacMD5或HmacSHA1等; (3) 利用工厂类Cipher的对象可以创建密码器。同样的,getInstance()的参数为字符串类型,指定加密算法的名称。 三、算法分析和流程图 DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。DES加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。DES工作的基本原理是,其入口参数有三个:key、data、mode。 key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。
四、测试数据和预期结果 1按照规定,密钥输入移位的数字,明文输入字母,如下图所示,加密成功 2加密yanglingmalasong+123 3测试*能否加密 加密
现代密码学
第4讲 现代分组加密算法 S-DES\DES\IDEA
郑东
第4讲 分组密码理论--DES
4.1 S-DES 4.2 DES 4.3 IDEA
4.1.1 简化的DES Simplified DES方案,简称S-DES方 案。它是一个供教学而非安全的加密算 法,它与DES的特性和结构类似,但参 数小。
注:1.* 加密算法涉及五个函数: (1)初始置换IP(initial permutation) (2)复合函数fk1,它是由密钥K确定的,具有 转换和替换的运算。 (3)转换函数SW (4)复合函数fk2 (5)初始置换IP的逆置换IP-1
加密 8bit明文 IP fk SW fk IP-1 8bit密文
10bit密钥 P10 移位 P8
K1 K1
解密 8bit明文
S-DES方案示意图
IP-1 fk SW fk IP 8bit密文
移位 P8
K2 K2
4.1.2 加密算法的数学表示:
?
IP-1*fk2*SW*fk1*IP 也可写为 密文=IP-1(fk2(SW(fk1(IP(明文))))) 其中 K1=P8(移位(P10(密钥K))) K2=P8(移位(移位(P10(密钥K)))) 解密算法的数学表示: 明文=IP-1(fk1(SW(fk2(IP(密文)))))
4.1.3算法描述
(1) S-DES的密钥生成:
设10bit的密钥为( k1,k2,…,k10 ) 置换P10是这样定义的 P10(k1,k2,…,k10)=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6) P8= (k1,k2,…,k10)=(k6,k3,k7,k4,k8,k5,k10,k9 ) LS-1为循环左移1位, LS-2为循环左移2位 按照上述条件,若K选为(1010000010), 产生的两 个子密钥分别为K1=(1 0 1 0 0 1 0 0),K2=(0 1 0 0 0 0 1 1)
第3章分组密码习题 1.证明DES的解密变换是加密变换的逆。 2.对DES进行穷搜索攻击时,需要在由256个密钥空间进行。能否根 据明文、密钥、密文之间的互补关系(即:若C=DES K(P)则C’=DES K’(P’))减小进行穷搜索攻击时所用的密钥空间?试说明原因。 3.现代密码通常是由几个古典密码技术结合起来构造的。在DES 和 AES 中找出采用了下述三种密码技术的部分: (i) 代换密码,(ii) 换位密码, (iii )弗纳姆密码。 4. (i) 为什么AES 被认为是非常有效的?(ii) 在AES 的实现中, 有限域F 28中的乘法是如何实现的? 5.在分组密码的密码分组链接(CBC)运行模式下,如果收到的密文 的解密“具有正确的填充”,你认为传输的明文有有效的数据完整性吗? 6.在8比特CFB模式中,如果在密文字符中出现1比特的错误,问 该错误能传播多远? 7.(1)在IDEA的模乘运算中,为什么将模数取为216+1而不是216? (2)在IDEA的模加运算中,为什么将模数取为216而不是216+1?8.在DES数据加密标准中, 明文m=0011 1000 1101 0101 1011 1000 0100 0010 1101 0101 0011 1001 1001 0101 1110 0111 密钥K=1010 1011 0011 0100 1000 0110 1001 0100 1101 1001 0111 0011 1010 0010 1101 0011 试求L1和R1。 9.假设我们有128bit的AES密钥,用16进制表示为:
2B7E151628AED2A6ABF7158809CF4F3C 由该种子密钥构造一个完整的密钥编排方案。 10.使用上题中的128bit密钥,在10轮AES下计算下列明文(以16 进制表示)的加密结果:3243F6A8885A308D313198A2E0370734。 11.已知IDEA密码算法中, 明文m=01011100 10001101 10101001 11011110 10101101 00110101 00010011 10010011; 密钥K=00101001 10100011 11011000 11100111 10100101 01010011 10100010 01011001 00100100 01011001 11001010 11100111 10100010 00101010 11010101 00110101,求第一轮的输出和第二轮的输出。
分组密码以及安全性研究 1引言 分组密码是对称密码学的一个重要分支,在信息安全领域发挥着极其重要的作用,其研究的主要内容包括分组密码的设计和分析这两个既相互对立又相互统一的方面。一方面,针对已有的密码分析手段,密码设计者总希望设计出可以抵抗所有已知攻击的密码算法;另一方面,对已有的密码算法,密码分析者总希望可以找到算法的某些安全缺陷。这两方面的研究共同推进了分组密码理论的发展。 2 分组密码 2.1概念 分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。分组密码的研究包括三方面:分组密码的设计原理,分组密码的安全性分析和分组密码的统计性能测试。 2.2内容 目前对分组密码安全性的讨论主要包括差分密码分析、线性密码分析和强力攻击等。从理论上讲,差分密码分析和线性密码分析是目前攻击分组密码的最有效的方法,而从实际上说,强力攻击是攻击分组密码最可靠的方法。到目前为止,已有大量文献讨论各种分组密码的安全性。与序列密码每次加密处理数据流的一位或一个字节不同,分组密码处理的单位是一组明文,即将明文消息编码后的数字序列m0,m1,m2,…,mi划分成长为L位的组 m=(m0,m1,m2,…,mL-1),各个长为L的分组分别在密钥k=(k0,k1,k2,…,kt-1)(密钥长为t)的控制下变换成与明文组等长的一组密文输出数字序列c=(c0,c1,c2,…,cL-1)。L通常为64或128。设明文m与密文c均为二进制0、1数字序列,它们的每一个分量 mi,ciεDF(2)(i=0,1,2,…,n-1),则明文空间为{0,1,…,2n-1},密文空间也为 0,1,…,2n-1},分组密码是由密钥k=(k0,k1,k2,…,kt-1)确定的一个一一映射,也就是空间{0,1,…,2n-1},到自身的一个置换F,由于置换F是由密钥k所确定,一般地,我们把这个置换表示为C=Fk(m)。 分组密码算法实际上就是密钥控制下,通过某个置换来实现对明文分组的加密变换。为了保证密码算法的安全强度,对密码算法的要求如下。 (1)分组长度足够大。当分组长度较小时,分组密码类似于古典的代替密码,它仍然保留了明文的统计信息,这种统计信息将给攻击者留下可乘之机,攻击者可以有效地穷举明文空间,得到密码变换本身。 (2)密钥量足够大。分组密码的密钥所确定密码变换只是所有置换中极小一部分。如果这一部分足够小,攻击者可以有效地穷举明文空间所确定所有的置换。这时,攻击者就可以对密文进行解密,以得到有意义的明文。 (3)密码变换足够复杂。使攻击者除了穷举法以外,找不到其他快捷的破译方法。 分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)