信息安全技术实验报告_第1页
信息安全技术实验报告_第2页
信息安全技术实验报告_第3页
信息安全技术实验报告_第4页
信息安全技术实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息安全技术实验报告姓名:xxx学号:xxxxxxxxx 专业:xxxxx日期:xxxxxxLab2:基于openssl库的对称密码实验一、实验目的让学生熟悉加密的概念,熟悉和了解加密算法(cipher)、加密模式(encryption mode)、以及初始向量(IV )的定义与作用。二、实验环境虚拟机 VirtualBoxUbuntu-16.04.6bless十六进制编辑器三、实验内容3.1使用openssl enc命令来加密/解密一个文件。命令基本格式如下:$ openssl enc -e ciphertype -in plain.txt -out cipher.bin -K 001122

2、33445566778899aabbccddeeff-iv 0102030405060708了解openssl命令的基本格式中各个参数和选项的含义,然后将上述命令代码中的ciphertype 替换成指定的加密类型,比如-aes-128-cbc,-aes-128-cfb,-bf-cbc等,也可以替换命令实例中的参 数K和iv。实验报告中相关问题的回答:1.配置好实验环境,查看openssl版本。即 i biirtii I intix :正互运行 1 Oracle b : .! irtuiilBciy筐理控制视图燃度投备褚助|域端 惬端文件F拒辑位j古君M 螺素终端CQ帮助总lamethyst a

3、methyst-Virtu al Box:-snethystanethystVirtualBox:-*$ openssl ver5ion openssl 1 + ug 1 war 2016/antet hystfl amethyst-V t rtualBox|图3.1.1查看openssl版本创建一个文本文件,并任意输入内容,保存后作为输入文件,执行上面的命令行中的加密命 令,然后使用对应的解密命令解密加密文件,并对比解密后的输出和原始输入文件是否相同。创建一个文本文件plain.txt,并输入内容“I love you”,作为输入文件。这里使用的加密类型为-aes-128-cbc。加密操作如

4、下:$ openssl enc -e -aes-128-cbc -in plain.txt -out cipher.bin -K 00112233445566778899aabbccddeeff-iv 0102030405060708-seed-cfb-seed-ofba fi e t h y s ti sinethyst-Virtua I Box: $ openssl enc -e aes-12S-cbc -in plain-txt -out c ipher.bin -K 0eil223344556778S99aabbccddeeff -iv 0102936405069708 lanethy

5、steanethyst-vtrtualMxS | . 二图3.1.2-1文本加密解密操作如下:$ openssl enc -d -aes-128-cbc -in cipher.bin -out dcipher.txt-K 00112233445566778899aabbccddeeff -iv 0102030405060708困 Uburilu Linux 正在L-F Oracle Vtvl Vi-rtualBox1/a metme t hystvlrtual Box,amethyt-VlrtnalBx:open551 enc -d -aes-129-ctoc -tn cipher-out d

6、ctpher.txt -K 112233445567799abbccddetff -W MN网网甥弱钥了阳asmth丫&taaFie-thiystVirtnalcat (fctphertxt:L love youa methystgiam&tlijst-Virtual Box|图3.1.2-2文本解密结论:解密后的输出和原始输入文件相同。不同工作方式对是否会对明文进行填充?编辑一个文档word.odt,并加密。1)第一种,使用的加密类型为-aes-128-cbc具体操作如下:$ openssl enc -e -aes-128-cfb -in word.odt -out wordcfb.bin

7、-K 0123456 -iv 789图3.1.3-1第一种加密结论:加密后生成的文档大小和原来的明文大小一致。2)第二种,使用的加密类型为-aes-128-cbc具体操作如下:$ openssl enc -e -aes-128-cbc -in word.odt -out wordcbc.bin -K 0123456 -iv 789wordcfb-btnoirdww debttew thystftam eth yst V trtua IBox:openssl enca pie thystgamethyst - V Irtua I Box: $ 12K wordcfb.binjrdcbic.btn

8、 -K 012345S -tv时 e thystian eth yst - V irtua iBox;J12K wordebe .bimane thyseth yst - V irtua IB&x: *$结论:加密后生成的文档大小和原来的明文大小一致。3)第三种,使用的加密类型为-bf-cbc具体操作如下:$ openssl enc -e -bf-cbc -in word.odt -out wordbf.bin -K 0123456 -iv 789.12Kwordcbc.binbtn -K 123456 -tu 78912 Kw&rdbf .blnantflamethyst-VlrtualBo

9、x:-&du -h wordcbc.btnopenssl enc -e -bf-cbc *in word.odt -out wordbf.du -h wordbfbin图3.1.3-3第三种加密结论:加密后生成的文档大小和原来的明文大小一致。4. ecb和cbc两个工作方式对bmp图片的加密效果比较。以picture.bmp图片作为输入文件,分别采用aes-128-ecb方式和aes-128-cbc方式加密并输 出为图像文件。具体操作如下:$ openssl enc -e -aes-128-ecb -in picture.bmp -out pictureecb.bmp -K 0123456$

10、openssl enc -e -aes-128-cbc -in picture.bmp -out picturecbc.bmp -K 0123456 -iv 789I帽 U bu ntu Li hum 正在运行Or*c le VM Vir ujalEoxS理 酬贿w s岫= ii misthyst iiiirnethyst-Viirtu alBox; amethstja-nettiyst-vtrtualBax:-5 openssl enc -e -aes-12-ecb pictureccb . bmp - K &123456 iv 7893 not by this cipherar.etha/

11、ietihyst-VlrtuaiBcx:-5 openssl E-nc e -aes - IZ8- ecb pictureecb.bmp *-tn-tnpicture.brappicture Jbnp-out U-out匚 ameth jr i tguiet-hyst* Virtual Box: *5 op-?n&sl enc -e -aes - L2E- cbc p让turecbcibnp -K *123456 -iv T&9-tnptttore Jbmp-out图3.1.4-1两种加密过程因加密后的文件不能正常显示为图像,所以使用bless打开两个图像文件,修改其前缀为标 准的图像文件前缀

12、:图3.1.4-2用bless修改加密后的文件1/liDme/amethyst/plcturccc b.hnnp BlesCODOQflOfl 00000(112 Dooaoflzq DODODD36 D0D0Qfl4B 0aDOD4)5aQ5B3DBlCTZ9CABE3kFF015FC3&33EECCB拓沁5337225l15旺9775CD0B4F02腿T861FlAfTD:-AB4Ft58B?cag了 F9-F56E1Clfil94ACDE56FE9Fzc32275724ftJEA6E6?tB0133OC4已DC32A6173734AEF054DI43OC4BCS2玷175724AEF0A

13、hE-5Signed 52 tdt:ZD 4。 BE FO Efi AE2- .J. Ls?q中 Hw B j. I zr. -ifl - . .r.Q. . 2 . -W -. .T. I C I K. I Z I . . . IT. .C . K . 2. .W5 . . - .T .SignediabiL 直Unsigned S bit;Signed is bitLnsjned ib bit10M55685023*5顷502琳3.057S29E-1415.3453-119-235a-T1E HHeKddecimaLUnsigned 32 tit;Ft 赤 164 bittZ9 09B-5

14、 5DDcnnnstOctal;Bin 或*Oil 00192WtQtCOl KKHIWI 10Show little decoding uflSJigiied as ihesfidleclmalASCII T=xt?11*5Selpctlon; Non?图3.1.4-3用bless修改加密后的文件2修改后的两个图像及原图片对比如下:图3.1.4-4加密后的图片同原图的对比简要描述ecb和cbc工作方式:ecb是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块, 之后将每块使用相同的密钥单独加密,解密同理。cbc模式对于每个待加密的密码块在加密前会先与前一个密码块的

15、密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量的数据块异或。结论:由图可以看出,cbc方式加密得到的图片跟原图差距很大,原图的线条及颜色都被隐藏得很 好:而ecb方式加密得到的图片还保留了原图的线条形状,只是颜色发生了改变。3.2使用Openssl加密库进行编程在本实验中,将学习如何使用openssl的加密库来加密/解密信息,openssl提供一个叫 作EVP的高级接口,已封装底层函数,尽管openssl也为每一个单独的加密算法提供接口, 但使用evp会更方便一些。实验具体内容:已知明文和密文,如下所示。并且已知加密方法为aes-128-cbc,IV全由0组成,以及key 是字典w

16、ord.txt (实验提供)中的一个英文单词,其长度小于16个字母,由于该单词小于16个 字母128bits所以在其后追加了空格字符对应(0 x20)以达到128bit的长度。实验报告中的问题:1.写一个穷举攻击的程序找到加密密钥key,解密密文,使得解密的结果与明文相同。明文(21 个字符):This is a top secret.密文(十六进制形式):8d20 e505 6a8d 24d0 462c e74e 4904 c1b5 13e1 0d1d f4a2 ef2a d454 0fae 1ca0 aaf91)这里使用的是实验提供的key.c,编译key.c:$ gcc -I /usr/

17、include/openssl -L /usr/lib/ssl -o enc key.c -lcrypto -ldl图3.2.1-1 key.c的编译2)给程序key.c中每条语句添加注释#include /调用 openssl 库头文件#include /调用 openssl 库头文件#include /调用 openssl 库头文件#include /调用字符串头文件#include /调用标准输入输出函数头文件#include /调用 standard library 标准库头文件#define True 1/定义正确返回1#define False 0/定义错误返回0void hand

18、leErrors(void)/ 过滤异常ERR_print_errors_fp(stderr); /将错误信息打印到 FILE 中 abort();/ 终止int encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key,unsigned char *iv, unsigned char *ciphertext/ 声明加密函数EVP_CIPHER_CTX *ctx; /加解密接口函数int len;/声明长度lenint ciphertext_len; / 声明密文长度 ciphertext_len/EVP_C

19、IPHER_CTX_set_padding(ctx, 0);if(!(ctx = EVP_CIPHER_CTX_new()handleErrors();/操作成功返回1,否则返回0if(1 != EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv)/初始化 ctx handleErrors();/操作成功返回1,否则返回0if(1 != EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len)如果要加 密的数据大小是算法块大小的整数倍执行如下的if分支。直接

20、调用EVP算法加密函数进 行加密handleErrors();/操作成功返回1,否则返回0ciphertext_len = len;if(1 != EVP_EncryptFinal_ex(ctx, ciphertext + len, &len)处理最后没加密完的数据 handleErrors();/操作成功返回1,否则返回0ciphertext_len += len; 7 ciphertext_len = ciphertext_len + lenEVP_CIPHER_CTX_free(ctx);return ciphertext_len;返回密文长度int append(char* buffe

21、r)int length = (int)strlen(buffer);/ 声明 length 为循环数组的长度if (length 16)/如果长度16个字符return False;/ 报错memset(buffer+strlen(buffer), , 16-length)/指定数组长度为 16 个字符buffer16 = 0;/ buffer16为空return True;/返回正确结果int main(int argc, char const *argv)char buffer50;/声明循环数组int i = 0;/ 声明 i 为 0char iv17;/声明字符串ivmemset(i

22、v, 0, 17)设置数组起始地址为iv,每个字节的值为0,数组长度为17unsigned char *plaintext = This is a top secret./ 加密输入串unsigned char ciphertext100;/声明无符号类型字符串数组unsigned char*cryptotext=8d20e5056a8d24d0462ce74e4904c1b513e10d1df4a2ef2ad4540fae1ca0aaf9”/ /输入密文ERR_load_crypto_strings(); /加载所有摘要和密码算法 OpenSSL_add_all_algorithms();/

23、加载加密算法函数和单向散列算法函数 OPENSSL_config(NULL);int ciphertext_len; /声明 ciphertext_lenint k=0;/声明 kFILE *fp = fopen(words.txt, r)打开 word.txt 文件while (fscanf(fp, %sn, buffer) != EOF)(/ 当文件未结束时进入循环 k+;if (!append(buffer)/如果未连接到数组continue;/继续循环ciphertext_len = encrypt(plaintext, strlen(plaintext), buffer, iv, c

24、iphertext); unsigned char cryptohex50;for (i = 0; i ciphertext_len; i+)sprintf(cryptohex+i*2,%02x, ciphertexti)每个字符打印二位 16 进制数 cryptohexciphertext_len*2 = 0;if (0 = strcmp(cryptohex, cryptotext)/比较 cryptohex 和 cryptotext 若一致 printf(The key is: %s, cryptohex is %sn, buffer, cryptohex);/ 打印密钥 和密文break

25、;打印密钥和密文/printf(k is %dn, k);EVP_cleanup();ERR_free_strings();return 0;3)运行程序沏 Ubuntu Lihlxj Oracle VM VirtinalBo:M理拦制辨核建设备帮闵洛器1备号田t与t-wtrtnaIfto-xy Isenckey.c LibZ.desktop Labi- txtt-VlrtwlBn?c:j5。Jhe key is: median, cryptohex is 0d2Oe5i056a.ad2d&462ce74e,9O4clbS13eiedldf4a2ef2ad454&faeicaSam f9MW

26、thyst电株朗thys t - virtna l&ox: T 4)程序运行的流程图2.结对伙伴中的一方使用字典中的一个单词加密一段明文,加密后,将明、密文发给对方,接 收方运行程序,找到加密密钥。双方可以互换角色,并验证对方找到的密钥是否正确。1)发送给结对伙伴xxx的明密文信息如下:明文:everything that kills me makes me feel alive密文:9505a817388355b7c78a5c61c14c18fbd99b6eac14d9a9dd2d0b912523aa9cd86926876c57754375ae2964a3732bab1f密钥:absorba

27、m thy Stual B禺|管理控制规囹建辄对常助AmEthyS-tiimcthyst-VlrtualBoX; -涉 Jbuntu UnuK JU在运行-Oracle VM Virtual Boxamethyst9aethyst-VlrtualBox:-$ gcc -T/usr/Include /openssI L/usr/ltb/ssl -o eoc Get_ctfihertexta c -tcrypto -Idlame thy s tsa net h ys t - Vi. rtual Box: -$ Isenckey.c Liab2exapl-es ,de-sktup keytxt test.txtGetctphie r te?ct = c Labi聘。rd 5 + txt图3.2.2-1使用字典中的一个单词加密一段明文 经验证,结对伙伴所获得的密钥正确。2)接收到结对伙伴xxx发来的明密文信息:明文:vae密文:37882e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论