




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息安全技术实验指导书(适用于软件工程专业)计算机科学与技术学院网络工程教研室2008.12目 录 TOC o 1-3 h z HYPERLINK l _Toc231180367 实验一 对称密码算法DES PAGEREF _Toc231180367 h 3 HYPERLINK l _Toc231180368 实验二 HASH 算法SHA1 PAGEREF _Toc231180368 h 11 HYPERLINK l _Toc231180369 实验三 邮件加密软件PGP的使用 PAGEREF _Toc231180369 h 17实验一 对称密码算法DES【实验目的】通过该实验,学习利用基本的密码算法实现信息加解密过程,了解加密算法的作用。【实验环境】操作系统:Windows2000/XP,开发工具:Visual C+/ C+ Builder任选一种。【实验类型】验证性实验【实验学时】3学时【实验内容及步骤】(一)加密模块的设计与实现原理使用DES算法设计加密模块。(1)首先把明文分成若干个64-bit的分组,算法以一个分组作为输入,通过一个初始置换(IP)将明文分组分成左半部分(L0)和右半部分(R0),各为32-bit。然后进行16轮完全相同的运算,这些运算我们称为函数f,在运算过程中数据与密钥相结合。经过16轮运算后,左、右两部分合在一起经过一个末转换(初始转换的逆置换IP-1),输出一个64-bit的密文分组。明文:m=m1m2m64 mi = 0,1 i = 1,2,64密钥:k=k1k2k64 ki = 0,1 i = 1,2,64 其中k8,k16,k64是奇偶校验位,起作用的仅为56位。加密算法:Ek(m) =IP-1T16T15T1IP(m) Ti,i = 1,2,16是一系列的变换。解密算法:Ek-1 (c) = IP-1T1T2T16IP (c) IP:1 9 17 25 33 41 49 572 10 18 26 34 42 50 583 11 19 27 35 43 51 594 12 20 28 36 44 52 605 13 21 29 37 45 53 616 14 22 30 38 46 54 627 15 23 31 39 47 55 638 16 24 32 40 48 56 64IP-1:40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25(2)每一轮的运算过程:如图1所示。通过一个扩展置换(E)将数据的左半部分扩展成48位,并通过一个异或操作与48位密钥结合,通过8个S盒(substitution box)将这48位替代成新的32位,再依照P-盒置换一次。以上四步构成复杂函数f(图中虚线框里的部分)。然后通过另一个异或运算,将复杂函数f的输出与左半部分结合成为新的右半部分。如此反复16次,完成DES算法的16轮运算。图1 一轮DES扩展置换E:32 1 2 3 4 54 5 6 7 8 9 8 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 18个S盒:S1: 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,S2: 15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,S3:10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,S4:7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,S5:2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,S6:12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,S7:4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,S8:13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11,P盒置换:16 7 20 2129 12 28 17 1 15 23 26 5 18 31 10 2 8 24 1432 27 3 919 13 30 622 11 4 25(3)每轮子密钥的生成:密钥通常表示为64-bit,但每个第8位用作奇偶校验,实际的密钥长度为56-bit。在DES的每一轮运算中,从56-bit密钥产生出不同的48-bit的子密钥(K1,K2K16)。如图2所示。首先,56-bit密钥分成两部分(以C、D分别表示这两部分),每部分28位,然后每部分分别循环左移1位或2位(从第1轮到第16轮,相应左移位数分别为:1、1、2、2、2、2、2、2、1、2、2、2、2、2、2、1)。再将生成的56-bit组经过一个压缩转换(compression permutation),舍掉其中的某8个位并按一定方式改变位的位置,生成一个48-bit的子密钥Ki。64位密钥压缩成56位的PC-1:57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 C019 11 3 60 52 44 3663 55 47 39 31 33 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 D021 13 5 28 20 12 4Ci,Di合并压缩成Ki:14 17 11 24 1 5 3 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32图2 DES密钥的生成DES的几种工作方式电子密本方式(ECB)将明文分成n个64比特分组,如果明文长度不是64比特的倍数,则在明文末尾填充适当数目的规定符号。对明文组用给定的密钥分别进行加密,行密文C=(C0,C1,Cn-1)其中Ci=DES(K,xi),i=0,1,.,n-1。密文分组链接方式(CBC)在CBC方式下,每个明文组xi在加密前与先一组密文按位模二加后,再送到DES加密,CBC方式克服了ECB方式报内组重的缺点,但由于明文组加密前与一组密文有关,因此前一组密文的错误会传播到下一组。密文反馈方式(CFB),可用于序列密码明文X(x0,x1,xn-1),其中xi由t个比特组成0 输出反馈方式(OFB),可用于序列密码与CFB唯一不同的是OFB是直接取DES输出的t个比特,而不是取密文的t个比特,其余都与CFB相同。但它取的是DES的输出,所以它克服了CFB的密文错误传播的缺点(二)实验用到的算法分析本实验用到了LibTomCrypt密码库(Tom St Denis编写)中提供的des算法实现 HYPERLINK /morrow/code/batch/wine/dlls/rsaenh/ /morrow/code/batch/wine/dlls/rsaenh/。DES程序包括一个头文件tomcrypt.h和一个实现DES的源文件des.c。本实验用到的头文件函数说明。1)int des_setup(const unsigned char *key, int keylen, int num_rounds, des_key *skey);函数名称:密钥生成函数参数说明:key是一个指针,指向用户输入的初始密钥。keylen是输入密钥的长度,以字节为单位。num_rounds是加密轮数,当输入0时,使用默认的轮数。skey是一个指向结构体变量的指针,变量里面存储加密和解密时每轮使用的子密钥。当密钥生成成功时,返回值为CRYPT_OK(0),结果保留在skey指向的结构体。des_key的定义如下:typedef struct tag_des_key ulong32 ek32, dk32; des_key;结构体里的ek存储加密时用的子密钥,dk里面存储解密时用的子密钥。结构体中用两个32bit整数来存储一轮的48bit密钥,每一个32bit整数被分成4个8bit,每个8bit的低6位bit存储密钥。如果把48bit密钥分成8组,则这8组的顺序按存储的顺序从高到低分别为1、3、5、7、2、4、6、8。这样作是为了加密时可以把扩展和查表运算结合进行。2)void des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, const des_key *key);函数名称:加密函数(ECB模式)参数说明:pt是指向待加密的明文数组的指针ct是指向存储加密结果的指针key是调用密钥生成函数后存储每一轮子密钥的结构体变量3)void des_ecb_decrypt(const unsigned char *ct, unsigned char *pt, const des_key *key);函数名称:解密函数(ECB模式)参数说明:ct是指向待解密的密文数组的指针pt是指向存储解密结果的指针key是调用密钥生成函数后存储每一轮子密钥的结构体变量注意:加密和解密时,pt和ct可以指向同一块内存。每次处理8个字节(分组大小为64位)。复习ppt有关数据填充部分:如果明文输入不是分组长的整数倍怎么办?(PKCS #5, PKCS #7)明文在末尾填充的字节数为1到bb,其中bb等于以字节表示的分组大小,缺少几个字节填充几个“几”(二进制表示)l:明文长度 k:每个分组的长度01 if l mod k = k-102 02 if l mod k = k-2k k . k k if l mod k = 0 例如:填充8个字节,每个填充字节为二进制00001000去掉填充字节:看最后一个字节(是几则去掉解密后明文最后几个字节)思考:为什么不允许填充0字节?补充函数int des_ecb_encData(const unsigned char *pt, int plainLen, unsigned char *ct, int *cipherLen, const des_key *key)函数名称:加密函数(ECB模式),加密任意长度明文,需要填充参数说明:pt是指向待加密的明文数组的指针plainLen是明文的长度,以字节为单位。ct是指向存储加密结果的指针cipherLen返回密文的长度,以字节为单位。key是调用密钥生成函数后存储每一轮子密钥的结构体变量【思考题】1、DES算法是一种什么类型算法?(提示:从密码体制(密码编码学)的三个不同的方面进行分类,它分别属于哪一种)。2、DES算法的分组大小、密钥长度分别是多少?3、测试DES加密的速度,填写下列表格。注意:测试速度时,工程应为release版,否则数据不准确。Build-Set Active Configuration-Win32 Release机器主频: 内存:操作系统:循环次数LOOP_NUMBER数据长度(兆比特,Mb)时间(秒)速度(Mbps)第一次100000061.03520.438139.35第二5276.594138.842第三次50000030.51760.219139.362平均4、下列两题选作一题4.1简述DES加密的基本步骤(实现原理),也可以用框图表示。4.2如果明文数据长度不是8的整数倍,可以调用补充函数des_ecb_encData加密,试编写出对应的解密函数des_ecb_decDataint des_ecb_decData(const unsigned char *ct, int cipherLen, unsigned char *pt, int *plainLen, const des_key *key)函数名称:解密函数(ECB模式),需要去掉填充,得到明文的长度参数说明:ct是指向待解密的密文数组的指针cipherLen是密文的长度,以字节为单位。pt是指向存储解密结果的指针plainLen返回明文的长度,以字节为单位。key是调用密钥生成函数后存储每一轮子密钥的结构体变量【实验报告撰写要求】1) 实验报告纸到实验室购买;2) 实验报告必须手写,内容如下:(1) 实验题目(2) 实验目的(3) 实验环境(4) 实验类型(5) 思考题实验二 HASH 算法SHA1【实验目的】通过实际编程了解SHA1算法的运算过程,加深对HASH算法的认识。【实验环境】操作系统:Windows2000/XP,开发工具:Visual C+/ C+ Builder任选一种。【实验类型】验证型【实验学时】3学时【实验内容及步骤】一、 实验原理哈希(Hash)函数是将任意长的数字串转换成一个较短的定长输出数字串的函数,输出的结果称为哈希值。哈希函数具有如下特点:1) 快速性:对于任意一个输入值x,由哈希函数H,计算哈希值y,即y=H(x)是非常容易的。2) 单向性:对于任意一个输出值y,希望反向推出输入值x,使得y=H(x),是非常困难的。3) 无碰撞性:对于任意给定的数据块x,希望找到一个值y,满足H(x)=H(y),且xy,具有计算不可行性。哈希函数可用于数字签名、消息的完整性检测、消息源认证检测等。现在常见的哈希函数有MD5、SHA1、SHA256、SHA384、SHA512等,本实验我们采用SHA1算法。1 SHA1算法简介 SHA-1算法由美国国家标准和技术协会(NIST)与美国国家安全局(NSA)设计,并且被美国政府采纳,成为美国国家标准。事实上SHA-1目前是全世界使用最为广泛的哈希算法,已经成为业界的事实标准。安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于264位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 2 术语和概念 2.1位(Bit),字节(Byte)和字(Word) SHA1始终把消息当成一个位(bit)字符串来处理。本文中,一个“字”(Word)是32位,而一个“字节”(Byte)是8位。比如,字符串“abc”可以被转换成一个位字符串:01100001 01100010 01100011。它也可以被表示成16进制字符串: 0x616263. 2.2 运算符和符号 下面的逻辑运算符都被运用于“字”(Word) XY = X, Y逻辑与 (C语言中按位与运算符为&)X / Y = X, Y逻辑或 (C语言中按位或运算符为|)X XOR Y= X, Y逻辑异或 (C语言中按位异或运算符为)X = X逻辑取反 X+Y定义如下: 字 X 和 Y 代表两个整数 x 和y, 其中 0 = x 232 且 0 = y 232. 令整数z = (x + y) mod 232. 这时候 0 = z 232. 将z转换成字Z, 那么就是 Z = X + Y. 循环左移位操作符Sn(X)。X是一个字,n是一个整数,0=n=32。Sn(X) = (X32-n) Xn是抛弃右边的n位,将各个位依次向右移动n位,然后在左边的n位填0。因此可以叫Sn(X)位循环移位运算 3 SHA1算法描述 在SHA1算法中,我们必须把原始消息(字符串,文件等)转换成位字符串。SHA1算法只接受位作为输入。假设我们对字符串“abc”产生消息摘要。首先,我们将它转换成位字符串如下: 01100001 01100010 01100011 a=97 b=98 c=99 这个位字符串的长度为24。下面我们需要5个步骤来计算。 3.1 补位 消息必须进行补位,以使其长度在对512取模以后的余数是448。也就是说,(补位后的消息长度)%512 = 448。即使长度已经满足对512取模后余数是448,补位也必须要进行。 补位是这样进行的:先补一个1,然后再补0,直到长度满足对512取模后余数是448。总而言之,补位是至少补一位,最多补512位。还是以前面的“abc”为例显示补位的过程。 原始信息: 01100001 01100010 01100011 补位第一步:01100001 01100010 01100011 1 首先补一个“1” 补位第二步:01100001 01100010 01100011 10.0然后补423个“0” 我们可以把最后补位完成后的数据用16进制写成下面的样子 61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 现在,数据的长度是448了,我们可以进行下一步操作。 3.2 补长度 所谓的补长度是将原始数据的长度补到已经进行了补位操作的消息后面。通常用一个64位的数据来表示原始消息的长度。如果消息长度不大于264,那么第一个字就是0。在进行了补长度的操作以后,整个消息就变成下面这样了(16进制格式) 61626380 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000018 如果原始的消息长度超过了512,我们需要将它补成512的倍数。然后我们把整个消息分成一个一个512位的数据块,分别处理每一个数据块,从而得到消息摘要。 3.3 使用的常量 一系列的常量字K(0), K(1), . , K(79),如果以16进制给出。它们如下: Kt = 0x5A827999 (0 = t = 19) Kt = 0x6ED9EBA1 (20 = t = 39) Kt = 0x8F1BBCDC (40 = t = 59) Kt = 0xCA62C1D6 (60 = t = 79). 3.4 需要使用的函数 在SHA1中我们需要一系列的函数。每个函数ft (0 = t = 79)都操作32位字B,C,D并且产生32位字作为输出。ft(B,C,D)可以如下定义 ft(B,C,D) = (BC)(NOT B)D) ( 0 = t = 19) ft(B,C,D) = B XOR C XOR D (20 = t = 39) ft(B,C,D) = (BC)(BD)(CD)(40 = t = 59) ft(B,C,D) = B XOR C XOR D (60 = t Set Active Configuration-Win32 Release机器主频: 内存:操作系统:循环次数LOOP_NUMBER数据长度(兆比特,Mb)时间(秒)速度(Mbps)第一次第二次第三次平均4、编写一段程序,计算文件“信息安全技术实验指导书”的摘要,并给出摘要值(用16进制表示,例如摘要值为:0A 33 D1 42 21 53 51 AC 52 33 D9 4B 02 D3 19 68 80 2E 42 C1)。注意:不要修改信息安全技术实验指导书(文件最后修改日期为2012-5-14),确保摘要值为固定值。【实验报告撰写要求】1) 实验报告纸到实验室购买;2) 实验报告必须手写,内容如下:(1) 实验题目(2) 实验目的(3) 实验环境(4) 实验类型(5) 思考题实验三 邮件加密软件PGP的使用【实验目的】通过本实验,读者可以掌握以下技能: 学会使用PGP创建密钥对; 学会使用PGP输出和签名公共密钥; 学会使用PGP和Outlook Express发送并接收加密的电子邮件。【实验环境】Windows 2000 Server,需安装Outlook Express软件【实验类型】验证性实验【实验学时】2学时【实验内容及步骤】一、使用PGP创建密钥对这一步将使用密钥生成向导生成密钥对。(1)通过Key Generation Wizard对话框创建密钥对。该对话框有两种打开方式:一种是选择“开始”“程序”“PGP”“PGPkeys”;另一种是用右键点击系统托盘区的PGP图标,选择PGPkeys。在PGPKeys对话框中选择“Keys”“New key”(如图1-1),打开Key Generation Wizard对话框(如图1-2)。图1-1 选择“New Key”图1-2 Key Generation Wizard对话框(2)点击Key Generation Wizard对话框中的“下一步”,输入用户名和邮件地址,如图1-3所示。图1-3 选择参数(3)点击图1-3中的“下一步”,将出现如图1-4所示的对话框。在Passphrase栏内可输入一个最少8个字符的密码短语,确认后单击“下一步”。图1-4 输入密码(4)PGP开始生成一个新的密钥对。当密钥对产生完毕后,会出现一个完成的界面,点击“完成”,结束密钥对的创建过程,如图1-5所示。图1-5 密钥对的生成(5)用户可以在PGPkeys中查看到刚生成的公共密钥,如图1-6所示。图1-6 密钥查看二、使用PGP输出和签名公共密钥这一步将在两台PC机之间通过Outlook Express交换公共密钥,并在二者之间建立完全信任关系。1输出公钥(1)用上面提到的方法打开PGPkeys。(2)用右键单击刚才创建的密钥,并选择Export选项,如图1-7所示。图1-7公钥输出(3)此时出现一个“Export Key to File”对话框。选择保存的目录以及文件名,然后单击“Save”。在选择的目录中将出现一个以.asc为扩展名的文件,如图1-8所示。注意,不要保存私钥。图1-8 选择保存路径及文件名(4)打开Outlook Express,将该文件作为附件发给对方。2添加公钥(1)收到对方的.asc文件后,将其保存到桌面。(2)通过PGPKeys将该公钥文件添加到密钥环中。(3)选择“Keys”菜单中的“Import”(如图1-9所示),将出现一个“Select File Containing Key”对话框。选择保存在桌面上的对方的公钥文件,并单击“打开”,如图1-10所示。图1-9 打开对方公钥图1-10 选择公钥文件(4)此时将出现一个“Select key(s)”对话框(如图1-11所示)。选中刚才添加的密钥,并选择“Import”,则对方的密钥出现在密钥环中,但是没有被签名,所以不被信任。图1-11 Select key(s)对话框(5)用右键单击该密钥,并选择“Sign”选项。(6)此时将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 以节促防活动方案
- 任达华出席活动方案
- 食品用纸包装、纸容器产品质量省监督抽查实施细则
- 企业七天乐活动方案
- 企业亲子烘焙活动方案
- 企业入住活动方案
- 企业冬季活动方案
- 企业单位公司年会策划方案
- 企业品质活动方案
- 企业培训活动方案
- 消防在建工地课件
- 殡仪馆物业服务管理制度
- 电大:理论联系实际阐述文化在社会发展中具有什么样的作用?参考答案03
- 2025贵州医科大学辅导员考试试题及答案
- 原发性肝癌诊疗指南(2024年版)解读
- 2025-2030中国自动铆接机行业市场现状供需分析及投资评估规划分析研究报告
- DB4401-T 43-2020 反恐怖防范管理+防冲撞设施-(高清现行)
- 城市防洪排涝规划编制大纲解读
- 山大社会体育学案例分析
- 2022年浙江省温州市七年级下学期期末语文试卷
- 乡村价值与乡村振兴课件
评论
0/150
提交评论