版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、分组对称加密模式:ECB/CBC/CFB/OFB缺CTR一般的加密通常都是块加密,如果要加密超过块大小的数据,就需要涉及填充和链加密模式,文中提到的ECB和CBC等就是指链加密模式。在C#组件中实现的很多算法和Java都不太兼容,至少我发现RSA和AES/ECB是如此。研究了AES/ECB时发现了这篇文档,图还画的不错,先记下。注意,还缺一种CTR的模式。对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)一.AES对称加密:明文分解为多个块1明文块o和1组成的串密钥所以jVEIS是分组密码,也称块密码一r128192淮或2冒6位AES加密器密文块0|届文块L|密文块21|密文块3
2、.p128b-|明文块0明文块1明文块2明文块2亠AES加密分组明文块wordOwordlbvteOObyteOlbyfe02hyt&03byte3Obyte31byte32byte33bvt21rbyte21bvte22byte23byte10byte11byte12byte13wor(I3word!二.分组密码的填充分组密码的填充e.g.:匚閒为有5个字节需要填充,所反二115|?|555新问题:如果刚好不用填充怎么办16苛|16Iti“1PKCS#5填充方式三.流密码:密钥矗生成爲密钥K长度短,好记密钥战生成器密钥流生成器必须有生成一定随机流的能力相同的K生成相同的流J密钥流-彳密钥K明
3、文明文密钥流*密文四.分组密码加密中的四种模式:31ECB模式加密器优点:1简单;2有利于并行计算;第一和第亠块相同的输入产生相同的输出明文块U明文块1明文块“密钥密文块0密文块1密文块仆3误差不会被传送;缺点:1不能隐藏明文的模式;2可能对明文进行主动攻击;32CBC模式:123456了8时间AB帐号K金额优点:1不容易主动攻击安全性好于ECB,适合传输长度长的报文是SSL、IPSec的标准。缺点:1不利于并行计算;2误差传递;3需要初始化向量IV33CFB模式:优点:1隐藏了明文模式;2分组密码转化为流模式;3可以及时加密传送小于分组的数据;缺点:1不利于并行计算;2误差传送:一个明文单元
4、损坏影响多个单元;3唯一的IV;34OFB模式:K4D位II位r这种模式称为OFB模式,又称输出反馈模式Length高n位L吨h位亠丄阿也再补密钥T加拳器I吐位加密器明文块I高U位明文块I密文块0密钥优点:length-nnlength-nn1隐藏了明文模式;2分组密码转化为流模式;3可以及时加密传送小于分组的数据;缺点:1不利于并行计算;2对明文的主动攻击是可能的;3误差传送:一个明文单元损坏影响多个单元;补充:块加密有以下几种方式:电子密码本(ElectronicCodeBook,ECB):在ECB模式中,每块明文都是独立于其他块加密的。虽然这样做比较高效(可以并行执行多个数据块的加密),
5、但这种方法有一个很大的问题。例如,在ECB模式中,对相同明文块的加密总是产生相同的密文块,这为某些类型的密码分析攻击打开了方便之门。ECB方式通常被认为不适合保护敏感数据。密码块链接(CipherBlockChaining,CBC):在CBC模式中,文本块是连续加密的,在加密当前明文块之前,用前一次块加密的结果修改当前明文块。这个过程改进了加密的一些特征(例如,相同的明文块不会产生相同的密文块),但是由于其加密过程是连续的,CBC方式不支持加密的并行化。CBC方式使用一个称作初始化向量(InitializationVector,IV)的附加文本来开始链接过程。IV用于修改被加密的第一个明文块。
6、密码反馈(CipherFeedback,CFB):在CFB模式中,先加密前一个块,然后将得到的结果与明文相结合产生当前块,从而有效地改变用于加密当前块的密钥。这里密钥的值是不断变化的,这个过程与流加密类似,但是性能则远不如流加密。与CBC方式一样,这里要使用一个初始化向量作为加密过程的种子。出反馈(OutputFeedback,OFB):在OFB方式中,使用一个种子或IV来开始加密过程。加密种子后,将加密结果与明文块结合产生密文。之后被加密的种子再度被加密,如此重复此过程,直到遍及全部明文。同样,结果类似于流加密。DES加密模式详解*DES加密模式详解互联网的软件设计一定少不了加密算法,并且大
7、量使用的都会是对称加密,比较常见的对称加密有:DES、3DES、RC4、AES等等;加密算法都有几个共同的要点:密钥长度;(关系到密钥的强度)力口密模式;(ecb、cbc等等)块加密算法里的填充方式区分;对于加密模式,很多同学还不清楚,比如DES,也会有ECB、CBC等不同的区分,它们都是标准的;Windows加密库中,默认则是CBC模式,也可以手工设置;Openssl库要更明显一点,它的函数名里面就写明了,比如:DES_ncbc_encrypt,一看就知道是cbc模式;JAVA里面也比较清楚:Cipherc二Cipher.getlnstance(DES/CBC/PKCS5Padding);也
8、可以看到是CBC模式各种加密模式有什么不同呢:(为了方便,这里的加密key都取64位)电子密码本模式ECB:最古老,最简单的模式,将加密的数据分成若干组,每组的大小跟加密密钥长度相同;然后每组都用相同的密钥加密,比如DES算法,如果最后一个分组长度不够64位,要补齐64位;定义:Enc(X,Y)是加密函数Dec(X,Y)是解密函数Key是加密密钥;Pi(i=O,ln)是明文块,大小为64bit;Ci(i=O,ln)是密文块,大小为64bit;ECB加密算法可表示为:Ci二Enc(Key,Pi)ECB解密算法可以表示为:Pi二Dec(Key,Ci)算法特点:每次Key、明文、密文的长度都必须是6
9、4位;数据块重复排序不需要检测;相同的明文块(使用相同的密钥)产生相同的密文块,容易遭受字典攻击;一个错误仅仅会对一个密文块产生影响;加密块链模式CBC:与ECB模式最大的不同是加入了初始向量定义:Enc(X,Y)是加密函数Dec(X,Y)是解密函数Key是加密密钥;Pi(i=O,ln)是明文块,大小为64bit;Ci(i=O,ln)是密文块,大小为64bit;XOR(X,Y)是异或运算;IV是初始向量(一般为64位);ECB加密算法可表示为:CO二Enc(Key,XOR(IV,PO)Ci二Enc(Key,XOR(Ci-l,Pi)ECB解密算法可以表示为:P0二XOR(IV,Dec(Key,C
10、O)Pi二XOR(Ci-l,Dec(Key,Ci)算法特点:每次加密的密文长度为64位(8个字节);当相同的明文使用相同的密钥和初始向量的时候CBC模式总是产生相同的密文;密文块要依赖以前的操作结果,所以,密文块不能进行重新排列;可以使用不同的初始化向量来避免相同的明文产生相同的密文,一定程度上抵抗字典攻击;一个错误发生以后,当前和以后的密文都会被影响;加密反馈模式CFB:加密反馈模式克服了需要等待8个字节才能加密的缺点,它采用了分组密码作为流密码的密钥流生成器;定义:Enc(X,Y)是加密函数Dec(X,Y)是解密函数Key是加密密钥;Pi(i=0,ln)是明文块,大小为64bit;Ci(i
11、=0,ln)是密文块,大小为64bit;Si(i=0,ln),大小为8bit,n个连续的Si组成加密位移寄存器,一般n=8;Oi二Enc(Key,Si);Lef(x)为取数据x的最左8个bit位;A(x,y)为合并x左移8位,空位用y填充CFB加密算法可表示为:S0二IV;Oi二Enc(Key,Si);Ci=XOR(Ci,Lef(Oi);Si二A(Si-l,Ci);CFB解密算法可表示为:二IV;Oi二Enc(Key,Si);Ci二XOR(Ci,Lef(Oi);=A(Si-1,Ci);图示:特点:每次加密的Pi和Ci不大于64位;加密算法和解密算法相同,不能适用于公钥算法;使用相同的密钥和初始
12、向量的时候,相同明文使用CFB模式加密输出相同的密文;可以使用不同的初始化变量使相同的明文产生不同的密文,防止字典攻击;加密强度依赖于密钥长度;加密块长度过小时,会增加循环的数量,导致开销增加;加密块长度应时8位的整数倍(即字节为单位);一旦某位数据出错,会影响目前和其后8个块的数据;输出反馈模式OFB:与CFB模式不同之处在于,加密位移寄存器与密文无关了,仅与加密key和加密算法有关;做法是不再把密文输入到加密移位寄存器,而是把输出的分组密文(Oi)输入到一位寄存器;定义:Enc(X,Y)是加密函数Dec(X,Y)是解密函数Key是加密密钥;Pi(i=0,ln)是明文块,大小为64bit;C
13、i(i=O,ln)是密文块,大小为64bit;Si(i=O,ln),大小为8bit,n个连续的Si组成加密位移寄存器,一般n=8;Oi二Enc(Key,Si);Lef(x)为取数据x的最左8个bit位;A(x,y)为合并x左移8位,空位用y填充CFB加密算法可表示为:二IV;Oi二Enc(Key,Si);Ci二XOR(Ci,Lef(Oi);=A(Si-l,Oi);注意这里与CFB模式的不同CFB解密算法可表示为:二IV;Oi二Enc(Key,Si);Ci=XOR(Ci,Lef(Oi);=A(Si-1,Oi);特点:与CFB类似,以下都是不同之处;因为密文没有参与链操作,所以使得OFB模式更容易
14、受到攻击;不会进行错误传播,某位密文发生错误,只会影响该位对应的明文,而不会影响别的位;不是自同步的,如果加密和解密两个操作失去同步,那么系统需要重新初始化;每次重新同步时,应使用不同的初始向量。可以避免产生相同的比特流,避免”已知明文”攻击;WindowsAPI进行加密参数设置:CryptGetKeyParam可以对HCRYPTKEY对象的各种参数进行查询,包括加密模式、padding方式等;但这个函数不能用于查询加密key的明文;但如果需要看到真正加密的key是什么,则需要另外的API:CryptExportKey,选择PLAINTEXTKEYBLOB方式进行导出可以得到key的明文;使用加密要注意的地方:当两个封装好的加密算法对8byte数据进行DES加密时,如果加密出来的结果是一样的,千万不要认为这两个算法可以互换;因为ECB模式,和向量全为0的CBC模式得到的密文前8byte,确实是一样,但后面的密文就不一样了;使用加密以前确定你理解了它;互联网程序中加密模式的使用:ECB是不推荐的方式,Key相同时,相同的明文在不同的时候产生相同的明文,容易遭到字典攻击;CBC由于加入了向量参数,一定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备试运管理制度
- 食品加工设备检修维护保养管理制度
- 一例血小板减少待查护理个案
- 化验室设备维护保养计划方案
- (完整版)数码企业产品管理体系及质保措施
- 电镀设备巡检记录表
- 物业绿化养护人员准则
- 城市内涝保险理赔
- 危货快递运输风险评估模型
- 股骨病变护理查房
- 2026AHA-ASA急性缺血性卒中早期管理指南解读课件
- 放射科床旁照相工作制度
- 辽水集团笔试试题题库
- 2026新疆文旅投集团所属产业公司选聘50人笔试模拟试题及答案解析
- 2025-2026学年安徽省马鞍山市高三第一次教学质量监测物理试卷(含解析)
- 工程伦理道德案例分析
- 2026年网络安全攻防电子数据取证关键技术题库
- (完整word版)三级安全教育记录及表格(全)
- 名师整理最新人教部编版语文中考议论文阅读-论证思路及结构专题复习教案含答案
- 预制梁首件施工方案
- 多媒体技术ppt课件(完整版)
评论
0/150
提交评论