您好,欢迎访问三七文档
1加密无证明,只概述1技术汇总1.对称密码symmetriccryptography2.非对称密码asymmetriccryptography,又称为公钥密码public-keycryptography混合密码系统3.单向散列函数one-wayhashfunction—验证完整性integrity,防止被篡改。即:哈希值、密码校验和、指纹、信息摘要4.消息认证码messageauthenticationcode,确保消息不被篡改、确认消息来源。5.数字签名digitalsignature,确保完整性不被伪装篡改、提供认证、防止否认repudiation6.伪随机数生成器:PseudoRandomNumbergenerator。1/2提供机密性,信息不被破译3/4/5提供完整性,信息不被篡改4/5提供认证,信息不被伪装5提供不可否认性,信息不被否认tips:使用低强度的密码比不进行任何加密更危险。获得安全感是因为“信息被加密了”,并不是“密码很复杂”链接:《欺骗的艺术》《反欺骗的艺术》密码破解方案:1.穷举、暴力破解–在密钥空间keyspace中寻找密钥2.频率分析–经验上的可能性构型密钥空间,然后穷举并深搜这种空间3.Enigma–通讯密码A加密得到密文a,明文B通过a进行加密得到b,然后a和b一块传输。对于A到a的加密算法,密钥是X;能够保证在A不变的情况下,得到很多的;X是不断变化的。2遇到的问题:X的派送、A的强度。2对称加密(共享密钥密码)基础:比特的xor(异或)加密:AxorX=C解密:CxorX=AA为名为,X为密钥(可以理解为ps中的蒙版),C为密文2.1一次性密码加密AxorX=C,由于X是一次性的,那么遍历X密钥空间,得到的值无法判断是否是真正的A。因而无法被破解。那么问题变成了安全的发送X,并且保证X要同步,且X与A的长度应该是相同的,且生成X也是个问题。根本问题是:如果能安全发送X,那么就没有发送X的必要了。X的生成应当是非常非常随机的随机序列。2.2DES(DataEncryptionStandard)加密DES共计64比特--其中56比特是有效bit,每隔7比特设置一个校验位。明文按照64比特长度进行分组,每一组与DES的64位密钥进行加密。即DES一种分组密码。在搞明白DES的结构时,需要了解Reistel网络:1.64比特的输入信息,分为左32比特A,右32比特B。2.B=b:右32比特B直接输出得输出的右32比特b(B与b相等)。3.Axorf(B)=a:右侧32比特B经过子密钥f()得到tmpB,tmpB与A进行异或得到输出的左32比特。子密钥相当于是一个轮函数,一个轮子,可以参考Enigma4.ab位置互换得到ba:将输出的左右ab位置互换。5.重复步骤1.(直到不想再加密为止)Reistel中构成子密钥的轮函数相当于是密钥的核心所在。适合分组密码算法。在解密时,按照上步骤逆向输出即可得到明文。可以采用同一种工具进行加密和解密。2.3三重DES(triple-DES)即增强型DES,将明文进行3次DES加密。流程为:加密—解密—加密1.DES密钥D1对明文A进行加密得到A12.DES密钥D2对A1进行解密得到A23.DES密钥D3对A2进行加密得到A3,A3为最终的密文a。这么做目的是为了兼容普通的DES。例如:如果D1=D2=D3,那么上述过程与普通DES一样。如果D1=D3≠D2,称为DES-EDE2。如果D1≠D2≠D3,称为DES-EDE3,密钥空间为2^56*2^56*2^56=2^168。DES-EDE3解密过程为:4.DES密钥D3对密文a进行加密得到a335.DES密钥D2对a3进行解密得到a26.DES密钥D1对a1进行加密得到a0,a0为最终的明文。DES-EDE2、DES-EDE1参考DES-EDE3。2.4AES(AdvancedEncryptionStandard)对称密码的新标准,在2000年选择了名为Rijindael的对称密码算法。通过竞争来实现标准化(standardizationbycompetition)。出发点:加密速度快、密钥准备速度快、适合各种平台(例如智能卡、8位cpu等)、实现容易、安全、免费、公开。本质上也是分组密码算法,分组长度为128比特,密钥长度在可以为从128到256之间,以32比特为间隔。(AES标准中,密钥长度为128、192、256三种长度)Rijndael加密过程:1.输入分组为128比特的明文A[a1,a2,a3,…,a16],即16字节。2.16字节中每一个字节的值进行SubBytes处理,即:0~255对应的索引值对每一个字节进行替换,得到B[b1,b2,b3,…,b16]。相当于简单密码替换。3.对B进行ShiftRows处理,得到C[c1,c2,c3,…,c16]。即:将b1—b16进行扰码R处理。B*R=C4.对C进行MixColumns处理得到D,即对一个4比特的值进行计算,得到另外一个4比特的值。5.对D通过轮密码进行异或(参照Reistel网络中的轮密码),经过16轮的异或得到对中的密码。解密过程:1.对密文,通过加密过程中的轮密码进行异或得到a2.对a分别经过InvMixColumns、InvShiftRows、InvSubBytes得到明文。此步骤不能像DES那样在加密算法中进行解密。因而Rijndael的加密和解密不能像DES那样使用同一个算法,需要有反算法。2.5总结密钥空间要大。使用对称加密算法,建议使用AES。怎么进行安全的密钥配送呢?采用公钥密码算法进行对称密码配送。如果明文长度超过分组长度,需要对密码算法进行迭代。在后文中描述。3分组密码的模式—即:分组密码是如何迭代的分组密码的迭代方法称为分组密码的“模式”。此概念的出现是为了解决如下问题:“对于128比特的明文,如果是相同的字符,那么直接分成2组,并通过DES进行加密,将会得到相同的两组密文。这就不合适了。”即:怎么处理明文各分组之间的关系。43.1分组密码的模式可以分为:分组密码、流密码。分组密码blockcipher,每次处理固定长度明文,处理一组ok一组。流密码streamcipher,对数据流进行连续处理的一类密码算法。一般以1/8/32等比特为单位进行加密,需要连续处理,上一组和下一组的处理有依赖关系。常用的模式:1.ECB模式:ElectronicCodeBookmode电子密码本模式2.CBC模式:CipherBlockChainingmode密码分组连接模式3.CFB模式:CipherFeedBackmode密文反馈模式4.OFB模式:OutputFeedBackmode输出反馈模式5.CTR模式:CounTeRmode计数器模式3.1.1ECB模式将明文分组,直接进行加密得到密文分组。那么相同的明文进行加密将会得到相同的密文。因而主动攻击者,可以通过改变密文中字符的顺序、删除某一个密文分组、添加某一密文分组,从而是接收者在解密后得到不同的结果;期间,主动攻击者,不需要破译密码。当然,可以通过消息认证码的方式防止对密文的篡改。不过其他模式,可以避免ECB的缺点。3.1.2CBC模式1.明文分组A1xor起始向量A0,再经过加密=加密分组a12.a1xor明文分组A2,再经过加密=a2.3.如此依此完成所有的明文分组,得到最终的结果。对于初始化向量,每次加密要每次使用不同的随机的初始化向量。因为,如果使用相同的向量,则同一个密钥对同一个明文进行加密,每次得到的密文一定相等,这就又遇到了和ECB类似的问题。因而可以被篡改。解密时,需要相同的起始向量:1.密文分组a1解密后,与起始向量a0进行异或得到明文a1。2.密文分组a2经过解密后,与密文分组a1进行异或得到明文a2。3.依此进行。如果密文中有一个比特没有传输正确,那么在解密时,将会影响当前和下一个密文的解密。攻击方案:对起始向量进行修改,例如翻转一个比特,那么解密得出的第一个明文对已的比特将被翻转;对密文a1进行翻转,则明文a2对应比特将被翻转。CBC模式应用,通信协议之一的IPsec采用CBC模式进行迭代。使用#DES-CBC、AES-CBC等。53.1.3CFB(CipherFeedBack)密文反馈模式前一个密文分组会被送回到密码算法的输入端。步骤:1.初始化向量A0经过加密后,与明文分组A1进行xor,得到密文分组a1.2.密文a1经过加密后,与明文分组A2进行xor,得到密文分组a2.3.以此进行到结束。解码步骤:1.初始化向量a0经过加密后,与密文分组a1进行xor,得到明文分组A1.2.密文分组a1经过加密后,与密文分组a2进行xor,得到明文分组A2.3.以此进行初始化向量每次都需要变化。CFB算法每一步骤的加密相当于明文于随机密码进行xor,类似于一次性密码本。CFB算法中有密码算法生成的比特序列成为密钥流keystream。密码算法相当于用来生成密钥流的伪随机数生成器,初始化向量相当于是伪随机数的种子。CFB模式总,明文数据可以被逐比特加密,因而,CFB模式可以看做是一种使用分组密码来实现流密码的方式。攻击方式:重放攻击replayattack:1.第一天Alice发送密文A1、A2、A3、A4,Mallory保存A2、A3、A42.第二天Alice发送密文B1、B2、B3、B4,Mallory将密文更改为B1、A2、A3、A4.如果密码不变,那么Bob能够得到明文b1、“错误”、a3、a4,此时Bob无法判定这个“错误”是为何。3.1.4OFBOutput-Feedback输出反馈模式将密码算法的输出反馈到密码算法中。加密步骤:1.初始向量X0,经过加密后得到X1,X1与明文分组A1进行xor,得到密文a12.将X1再次加密得到X2,X2与明文分组A2进行xor,得到密文a2.3.依次进行。解密步骤:1.初始向量X0,经过加密后得到X1,X1与密文分组a1进行xor,得到明文A12.将X1再次加密得到X2,X2与密文分组a2进行xor,得到密文A2.3.依次进行。OFB、CFB区别仅仅在于密码算法的输入。但OFB的密码流可以提前准备,或者与xor并行,所以效率高。6潜在的特殊问题:如果X0经过加密后得到的X1与X0相等,那么X2、X3都将相等。3.1.5CTR模式CounTeR计数器模式CTR是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。加密步骤:1.计数器A,加密后,与明文分组A1进行xor,得到密文a1.2.计数器A+1,加密后,与明文分组A2进行xor,得到密文a2.3.以此继续。解密:1.计数器A,加密后,与密文分组a1进行xor,得到明文A1.2.计数器A+1,加密后,与密文分组a2进行xor,得到明文A2.3.以此继续。计数器包括:8比特nonce,及不同的值+8比特计数器。作为初始值。支持并行计算,可以对任意的密文分组进行解密,非常快。3.1.6推荐使用CBC、CTRCTR与OFB类似,密文一个比特返还后,得到的明文也将被翻转。4公钥密码公钥加密,私钥解密。可以解决对称加密中密钥传输的问题。密钥配送问题:keydistributionproblem,安全的方式发送密钥。密钥配送方案:1.通过事先共享密钥来解决2.通过密钥分配中心KDC来解决a)所有用户的密钥都放在密钥中心,密钥中心知道所有人的密钥,每个用户保管自己的密钥。b)Alice向KDC申请与Bob通讯。c)KDC生成临时回话密钥。d)KDC将回话密钥用Alice的共享密钥加密发送给Alice,用Bob的共享密钥加密发送给Bob。e)Alice、Bob分别用各自的共享密钥解密,并获得临时回话密钥。f)Alice、Bob使用临时回话密钥进行通信。直接攻击密钥分配中心即可。3.通过Diffie-Hellman密钥交换—后文中讲解4.通过公钥密码交换。74.1公钥加密:public-keycryptography,即非对称密码包括加密密钥、解密密钥
本文标题:加密技术概述
链接地址:https://www.777doc.com/doc-3353719 .html