已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
作业二、分析比较分组密码AES-CFB 或 OFB与流密码RC4的特点一、RC4算法介绍RC4是一种对称密码算法,它属于对称密码算法中的序列密码(streamcipher,也称为流密码),它是可变密钥长度,面向字节操作的流密码。RC4是流密码streamcipher中的一种,为序列密码。RC4加密算法是Ron Rivest在1987年设计出的密钥长度可变的加密算法簇。起初该算法是商业机密,直到1994年,它才公诸于众。由于RC4具有算法简单,运算速度快,软硬件实现都十分容易等优点,使其在一些协议和标准里得到了广泛应用。流密码也属于对称密码,但与分组加密算法不同的是,流密码不对明文数据进行分组,而是用密钥生成与明文一样长短的密码流对明文进行加密,加解密使用相同的密钥。RC4算法特点:(1)、算法简洁易于软件实现,加密速度快,安全性比较高;(2)、密钥长度可变,一般用256个字节。 对称密码的工作方式有四种:电子密码本(ECB, electronic codebook)方式、密码分组链接(CBC, cipherblock chaining)方式、密文反馈(CFB, cipher-feedback)方式、输出反馈(OFB, output-feedback)方式。RC4算法采用的是输出反馈工作方式,所以可以用一个短的密钥产生一个相对较长的密钥序列。 OFB方式的最大的优点是消息如果发生错误(这里指的是消息的某一位发生了改变,而不是消息的某一位丢失),错误不会传递到产生的密钥序列上;缺点是对插入攻击很敏感,并且对同步的要求比较高。 RC4的执行速度相当快,它大约是分块密码算法DES的5倍,是3DES的15倍,且比高级加密算法AES也快很多。RC4算法简单,实现容易。RC4的安全保证主要在于输入密钥的产生途径,只要在这方面不出现漏洞,采用128bit的密钥是非常安全的。RC4算法加密流程:包括密钥调度算法KSA和伪随机子密码生成算法PRGA两大部分(以密钥长度为256个字节为例)。密钥调度算法:首先初始化状态矢量S,矢量S中元素的值被按升序从0到255排列,即S0=00, S1=1, , S255=255.同时建立一个临时矢量T,如果密钥K的长度为256字节,则将K赋给T。否则,若密钥长度为keylen字节,则将K的值赋给T的前keylen个元素,并循环重复用K的值赋给T剩下的元素,直到T的所有元素都被赋值。这些预操作可概括如下: /*初始化*/ fori = 0 to 255 do Si= i; Ti= Ki mod keylen; 然后用T产生S的初始置换,从S0到S255,对每个Si,根据由Ti确定的方案,将Si置换为S中的另一字节: /*S的初始序列*/ j= 0 fori = 0 to 255 do j= (j + Si + Ti) mod 256 swap(Si,Sj);因为对S的操作仅是交换,所以惟一的改变就是顺序的改变。S仍然包含从0到255的所有元素,在初始化的过程中,密钥的主要功能是将S-box搅乱,代码中的变量i确保S-box的每个元素都得到处理,变量j保证S-box的搅乱是随机的。因此不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,并且该序列是随机的。伪随机序列生成算法:矢量S一旦完成初始化,输入密钥就不再被使用。密钥流的生成是从S0到S255,对每个Si,根据当前S的值,将Si与S中的另一字节置换。当S255完成置换后,操作继续重复,从S0开始: /*密钥流的产生*/ i,j = 0; while(true) i= (i + 1) mod 256; j= (j + Si) mod 256; swap(Si,Sj); t= (Si + sj) mod 256; k= St 伪随机序列一旦生成,就得到子密码sub_k,把子密钥和明文进行异或运算,得到密文。解密过程也完全相同。加密中,只需将k的值与下一明文字节异或;相反解密中,将k的值与下一密文字节异或就可以还原出明文信息。算法描述为: for(i = 0; i textlength; i +) ciphertexti=keystreamiplaintexti RC4算法存在的问题:因为RC4算法具有实现简单,加密速度快,对硬件资源耗费低等优点,使其跻身于轻量级加密算法的行列。但是其简单的算法结构也容易遭到破解攻击,RC4算法的加密强度完全取决于密钥,即伪随机序列生成,而真正的随机序列是不可能实现,只能实现伪随机。这就不可避免出现密钥的重复。RC4算法不管是加密还是解密,都只进行了异或运算,这就意味着,一旦子密钥序列出现了重复,密文就极有可能被破解。具体破解过程如下:若明文、密钥是任意长的字节,可以用重合码计数法(counting coincidence)找出密钥长度。把密文进行各种字节的位移,并与原密文进行异或运算,统计那些相同的字节。如果位移是密钥长度的倍数,那么超过60%的字节将是相同的;如果不是,则至多只有0.4%的字节是相同的,这叫做重合指数(index of coincidence)。找出密钥长度倍数的最小位移,按此长度移到密文,并且和自身异或。由于明文每字节有1.3位的实际信息,因此有足够的冗余度去确定位移的解密。对所有的密钥,输出密钥流的前几个字节不是随机的,因此极有可能会泄露密钥的信息。如果一个长期使用的密钥与一个随机数串联产生RC4算法密钥,那么可以通过分析大量由该密钥加密的密文得到这个长期使用的密钥。解决该问题的办法是:抛弃密钥流最初的那部分数据。RC4 is a stream cipher with variable key length.Typically, 128 bit (16 byte) keys are used for strong encryption, butshorter insecure key sizes have been widely used due to export restrictions.1.RC4_set_key:sets up theB B using the B bytes long key atB.2.RC4:encrypts or decrypts the Bbytes of data at B using B and places the result atB. Repeated RC4() callswith the same B yield a continuous key stream. Since RC4 is a streamcipher (the input is XORed with a pseudo-random key stream to produce theoutput), decryption uses the same function calls as encryption.以下是测试代码:cryptotest.h:cppview plaincopy1. #ifndef_CRYPTOTEST_H_2. #define_CRYPTOTEST_H_3. 4. #include5. 6. usingnamespacestd;7. 8. typedefenum9. GENERAL=0,10. ECB,11. CBC,12. CFB,13. OFB,14. TRIPLE_ECB,15. TRIPLE_CBC16. CRYPTO_MODE;17. 18. stringDES_Encrypt(conststringcleartext,conststringkey,CRYPTO_MODEmode);19. stringDES_Decrypt(conststringciphertext,conststringkey,CRYPTO_MODEmode);20. 21. stringRC4_Encrypt(conststringcleartext,conststringkey);22. stringRC4_Decrypt(conststringciphertext,conststringkey);23. 24. #endif/_CRYPTOTEST_H_rc4test.cpp:cppview plaincopy1. #includestdafx.h2. #include3. #include4. #include5. #include6. #includecryptotest.h7. 8. usingnamespacestd;9. 10. stringRC4_Encrypt(conststringcleartext,conststringkey)11. 12. RC4_KEYrc4key;13. unsignedchar*tmp=newunsignedcharcleartext.length()+1;14. memset(tmp,0,cleartext.length()+1);15. 16. RC4_set_key(&rc4key,key.length(),(constunsignedchar*)key.c_str();17. RC4(&rc4key,cleartext.length(),(constunsignedchar*)cleartext.c_str(),tmp);18. 19. stringstr=(char*)tmp;20. 21. deletetmp;22. 23. returnstr;24. 25. 26. stringRC4_Decrypt(conststringciphertext,conststringkey)27. 28. RC4_KEYrc4key;29. unsignedchar*tmp=newunsignedcharciphertext.length()+1;30. memset(tmp,0,ciphertext.length()+1);31. 32. RC4_set_key(&rc4key,key.length(),(constunsignedchar*)key.c_str();33. RC4(&rc4key,ciphertext.length(),(constunsignedchar*)ciphertext.c_str(),tmp);34. 35. stringstr=(char*)tmp;36. 37. deletetmp;38. 39. returnstr;40. main.cpp:cppview plaincopy1. #includestdafx.h2. #includecryptotest.h3. #includeTestMemory.h4. #include5. #include6. 7. usingnamespacestd;8. 9. voidtest_RC4()10. 11. stringcleartext=中国北京12345$abcde%ABCDE!;12. stringciphertext=;13. stringkey=beijingchina1234567890ABCDEFGH!;14. 15. ciphertext=RC4_Encrypt(cleartext,key);16. stringdecrypt=RC4_Decrypt(ciphertext,key);17. 18. coutsrccleartext:cleartextendl;19. coutgenarateciphertext:ciphertextendl;20. coutsrcciphertext:ciphertextendl;21. coutgenaratecleartext:decryptendl;22. 23. if(strcmp(cleartext.c_str(),decrypt.c_str()=0)24. coutRC4cryptook!endl;25. else26. coutRC4cryptoerror!endl;27. 二、分组密码AES的模式分组密码是最基本的密码技术之一, 其处理消息的长度是固定的, 如 DES为 64比特、AES 为 128比特, 但是在实际中需要处理的消息通常是任意长的 ,且要求密文尽量不确定 ,而分组密码自身不能做到 ,因此,引出了如何利用分组密码处理任意长度消息的问题. 解决这个问题的技术就是分组密码工作模式. 分组密码工作模式的设计理念为了阐述分组密码工作模式的设计理念,我们首先介绍如何评价一个分组密码工作模式. 工作模式的评价指标有三个方面 : 安全性、性能、模式 /执行特点.安全性评价指标包括: 抵抗现有攻击的能力 ; 可证明安全性,在合理的假设下 ,是否有安全性的证明结果 ; 和类似模式安全性的比较 , 和现在用的模式(如 CBC)的比较; 随机性 ,输出的统计特性 ; 是否拥有合理的数学背景等.性能评价指标包括计算的有效性、空间需求 、可并行性和预处理能力等.模式 /执行特点评价指标包括可提供的密码服务、灵活性 、错误特性、模式本身抗错性和简单性等.安全性是所有评价指标中最重要的 , 因为其它性能的评估相对容易、相对直观. 安全性评价中的第一条类似于分组密码中目前流行的做法 ,评价的是工作模式的应用安全性 ,有时和具体分组密码有关,分析模式在实际应用中对强力攻击、中间相遇攻击、潜信道攻击等的抵抗力. 安全性中的第二条评价的是模式的理论安全性,与具体分组密码无关 ; 通常假定分组密码是 “理想 ”的 ,研究工作模式自身的安全性. 模式的理论安全性是设计者应当考虑的首要问题, 也就是在假定好的基本模块存在的条件下,如何设计各种性能的工作模式, 比如用于保密的工作模式、用于认证的 MAC、H ash等. 理论安全性是目前对设计工作模式最基本的要求, 它保证在工作模式这一层没有安全隐患,没有降低分组密码的安全性.典型分组密码工作模式(1) ECB模式加密变换为 C i = EK (Pi ),解密变换为 P i = EK-1 (Ci ) .ECB模式的优点是可并行运算 , 速度快 , 易于标准化. 缺点是分组加密不能隐蔽数据模式 ,即相同的明文组蕴含着相同的密文组; 不能抵抗组的重放、嵌入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 开学第一课:体育与健康同行
- 开学第一课:体育赋能成长
- 2026贵阳熙和妇幼健康管理有限公司招聘考试参考试题及答案解析
- 开学第一课:启航新学期成长向未来
- 2026西安高新区第三初级中学教师招聘考试参考试题及答案解析
- 瑞金市2026年公开招聘城市专职网格员【60人】笔试备考题库及答案解析
- 2025年兰州石化职业技术学院单招职业技能考试题库及答案解析
- 2026山东东营市胜利第四中学招聘1人考试备考试题及答案解析
- 2026云南大理州祥云县矿山救护队招聘矿山救护队员6人笔试参考题库及答案解析
- 2026湖北黄冈市武穴市事业单位引进人才26人考试参考题库及答案解析
- 图书档案馆管理与服务指南
- 行车安全教育培训课件
- 零碳工厂培训课件
- 2026年建筑工地春节后复工复产安全管理专题会议
- 2026四川成都市金牛国投人力资源服务有限公司招聘网格员12人备考考试题库及答案解析
- 中国华电集团有限公司招聘笔试题库2026
- 质量安全意识培训课件
- 2026春译林版英语八下-课文课堂笔记
- 春节后开工第一课安全培训课件
- 2025预制菜包装材料行业市场格局与流通渠道研究报告
- GB/T 6462-2025金属和氧化物覆盖层厚度测量显微镜法
评论
0/150
提交评论