对称加密+非对称加密+5大安全算法

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对称加密算法:
采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

常用的单向加密算法:
1、DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位(实际用到了56位,第8、16、24、3
2、40、48、56、64位是校验位,使得每个密钥都有奇数个1),其算法主要分为两步:
1)初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则为将输入的第58位换到第一位,第50位换到第2位......依此类推,最后一位是原来的第7位。

L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3......D64,则经过初始置换后的结果为:L0=D58D50......D8;R0=D57D49 (7)
2)逆置换
经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。

此算法是对称加密算法体系中的代表,在计算机网络系统中广泛使用。

2、3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条56位的
密钥对数据进行三次加密。

是DES的一个更安全的变形。

它以DES为基本模块,通过组合分组方法设计出分组加密算法。

比起最初的DES,3DES更为安全。

该方法使用两个密钥,执行三次DES算法,加密的过程是加密-解密-加密,解密的过程是解密-加密-解密。

3DES加密过程为:C=Ek3(Dk2(Ek1(P)))
3DES解密过程为:P=Dk1(EK2(Dk3(C)))
采用两个密钥进行三重加密的好处有:
①两个密钥合起来有效密钥长度有112bit,可以满足商业应用的需要,若采用总长为168bit的三个密钥,会产生不必要的开销。

②加密时采用加密-解密-加密,而不是加密-加密-加密的形式,这样有效的实现了与现有DES系统的向后兼容问题。

因为当K1=K2时,三重DES的效果就和原来的DES一样,有助于逐渐推广三重DES。

③三重DES具有足够的安全性,还没有关于攻破3DES的报道。

3、AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256、512位密钥的加密;
4、Blowfish
对称加密的算法特征:
1、加密方和解密方使用同一个密钥;
2、加密解密的速度比较快,适合数据比较长时的使用;
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
优缺点:
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。

其次如果一方的秘钥被泄露,那么加密信息也就不安全了。

另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

简述:优点:算法简单,加密解密容易,效率高,执行快。

缺点:相对来说不算特别安全,只有一把钥匙,密文如果被拦截,且密钥也被劫持,那么,信息很容易被破译。

非对称加密算法:
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

(1)密钥分配简单。

(2)密钥的保存量少。

(3)可以满足互不相识的人之间进行私人谈话时的保密性要求。

(4)可以完成数字签名和数字鉴别。

但在实际应用中,公钥密码体制并没有完全取代私钥密码体制,这是因为公钥密码体制在应用中存在以下几个缺点:
(1)公钥密码是对大数进行操作,计算量特别浩大,速度远比不上私钥密码体制。

(2)公钥密码中要将相当一部分密码信息予以公布,势必对系统产生影响。

(3)在公钥密码中,若公钥文件被更改,则公钥被攻破。

简述:优点:安全,即使密文被拦截、公钥被获取,但是无法获取到私钥,也就无法破译密文。

作为接收方,务必要保管好自己的密钥。

缺点:加密算法及其复杂,安全性依赖算法与密钥,而且加密和解密效率很低。

5种加密策略
数字摘要
数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash函数对消息进行计算而产生。

如果消息在传递的途中改变了,接收者通过对收到消息采用相同的Hash重新计算,新产生的摘要与原摘要进行比较,就可知道消息是否被篡改了,因此消息摘要能够验证消息的完整性。

消息摘要采用单向Hash函数将需要计算的内容"摘要"成固定长度的串,这个串亦称为数字指纹。

这个串有固定的长度,且不同的明文摘要成密文,其结果总是不同的(相对的),而同样的明文其摘要必定一致。

这样这串摘要便可成为验证明文是否是"真身"的"指纹"了。

MD5
MD5即Message Digest Algorithm 5(信息摘要算法5),是数字摘要算法一种实现,用于确保信息传输完整性和一致性,摘要长度为128位。

MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性,该算法因其普遍、稳定、快速的特点,在产业界得到了极为广泛的使用,目前主流的编程语言普遍都已有MD5算法实现。

MD5 算法底层原理:
简单概括起来,MD5 算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果。

•第一步:处理原文
首先,我们计算出原文长度(bit)对512 求余的结果,如果不等于448,就需要填充原文使得原文对512 求余的结果等于448。

填充的方法是第一位填充1,其余位填充0。

填充完后,信息的长度就是512*N+448。

之后,用剩余的位置(512-448=64 位)记录原文的真正长度,把长度的二进制值补在最后。

这样处理后的信息长度就是512*(N+1)。

•第二步:设置初始值
MD5 的哈希结果长度为128 位,按每32 位分成一组共4 组。

这4 组结果是由4 个初始值A、B、C、D 经过不断演变得到。

MD5 的官方实现中,A、B、C、D 的初始值如下(16 进制):
A=0x01234567
B=0x89ABCDEF
C=0xFEDCBA98
D=0x76543210
•第三步:循环加工
这一步是最复杂的一步,我们看看下面这张图,此图代表了单次A,B,C,D 值演变的流程。

A,B,C,D 就是哈希值的四个分组。

每一次循环都会让旧的ABCD 产生新的ABCD。

一共进行多少次循环呢?由处理后的原文长度决定。

假设处理后的原文长度是M
主循环次数= M / 512
每个主循环中包含512 / 32 * 4 = 64次子循环。

上面这张图所表达的就是单次子循环的流程。

下面对图中其他元素一一解释:
1.绿色F
图中的绿色F,代表非线性函数。

官方MD5 所用到的函数有四种:
F(X, Y, Z) =(X&Y) | ((~X) & Z)
G(X, Y, Z) =(X&Z) | (Y & (~Z))
H(X, Y, Z) =X^Y^Z
I(X, Y, Z)=Y^(X|(~Z))
在主循环下面64 次子循环中,F、G、H、I 交替使用,第一个16 次使用F,第二个16 次使用G,第三个16 次使用H,第四个16 次使用I。

2.红色“田”字
很简单,红色的田字代表相加的意思。

3.Mi
Mi 是第一步处理后的原文。

在第一步中,处理后原文的长度是512 的整数倍。

把原文的每512 位再分成16 等份,命名为M0~M15,每一等份长度32。

在64 次子循环中,每16 次循环,都会交替用到M1~M16 之一。

4.Ki
一个常量,在64 次子循环中,每一次用到的常量都是不同的。

5.黄色的<<<S
左移S 位,S 的值也是常量。

“流水线”的最后,让计算的结果和B 相加,取代原先的B。

新ABCD 的产生可以归纳为:
新A = 原d
新B = b+((a+F(b,c,d)+Mj+Ki)<<<s)
新C = 原b
新D = 原c
•第四步:拼接结果
把循环加工最终产生的A,B,C,D 四个值拼接在一起,转换成字符串即可。

SHA
SHA的全称是Secure Hash Algorithm,即安全散列算法。

1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公
布,1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1。

SHA-1是基于MD4算法的,现在已成为公认的最安全的散列算法之一,并被广泛使用。

SHA-1算法生成的摘要信息的长度为160位,由于生成的摘要信息更长,运算的过程更加复杂, 在相同的硬件上,SHA-1的运行速度比MD5更慢,但是也更为安全。

二、对称加密
对称加密算法是应用较早的加密算法,技术成熟。

在对称加密算法中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,生成复杂的加密密文进行发送,数据接收方收到密文后,若想读取原文,则需要使用加密使用的密钥及相同算法的逆算法对加密的密文进行解密,才能使其恢复成可读明文。

在对称加密算法中,使用的密钥只有一个,发送和接收双方都使用这个密钥对数据进行加密和解密,这就要求加密和解密方事先都必须知道加密的密钥。

DES
DES算法属于对称加密算法,明文按64位进行分组,密钥长64位,但事实上只有56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文和56位的密钥按位替代或交换的方法形成密文。

由于计算机运算能力的增
强,原版DES密码的密钥长度变得容易被暴力破解,因此演变出了3DES算法。

3DES是DES 向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密,是DES的一个更安全的变形。

AES
AES的全称是Advanced Encryption Standard,即高级加密标准,该算法由比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,又称Rijndael加密算法, 是美国联邦政府采用的一种对称加密标准,这个标准用来替代原先的DES算法,已经广为全世界所使用,已然成为对称加密算法中最流行的算法之一。

AES算法作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点,设计有三个密钥长
度:128,192,256位,比DES算法的加密强度更高,更为安全。

三、非对称加密
非对称加密算法又称为公开密钥加密算法,它需要两个密钥,一个称为公开密钥(public key), 即公钥,另一个称为私有密钥(private key),即私钥。

公钥与私钥需要配对使用,如果用公钥对数据进行加密,只有用对应的私钥才能进行解密,而如果使用私钥对数据进行加密,那么
只有用对应的公钥才能进行解密。

因为加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。

非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公钥向其它人公开,得到该公钥的乙方使用该密钥对机密信息进行加密后再发送给甲方,甲方再使用自己保存的另一把专用密钥,即私钥,对加密后的信息进行解密。

RSA
RSA非对称加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman开发的,RSA取名来自开发他们三者的名字。

RSA是目前最有影响力的非对称加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但反过来想要对其乘积进行因式分解
却极其困难, 因此可以将乘积公开作为加密密钥。

四、数字签名
签名认证是对非对称加密技术与数字摘要技术的综合运用,指的是将通信内容的摘要
信息使用发送者的私钥进行加密,然后将密文与原文一起传输给信息的接收者,接收者通过
发送者的公钥解密被加密的摘要信息,然后使用与发送者相同的摘要算法,对接收到的内容
采用相同的方式产生摘要串,与解密的摘要串进行对比,如果相同,则说明接收到的内容是完
整的,在传输过程中没有受到第三方篡改,否则则说明通信内容已被第三方修改。

每个人都有其特有的私钥且都是对外界保密的,而通过私钥加密的的信息,只能通过其
对应的公钥才能解密,因此,私钥可以代表私钥持有者的身份,可以通过私钥对应的公钥来对
私钥拥有者的身份进行校验。

通过数字签名,能够确认消息是由信息发送方签名并发送出来的, 因为其他人根本假冒不了消息发送方的签名,他们没有消息发送者的私钥。

而不同的内容, 摘要信息千差万别,通过数字摘要算法,可以确保传输内容的完整性,如果传输内容中途
被篡改,对应的数字签名的值也将发生改变。

只有信息的发送者才能产生别人无法伪造的数字签名串,这个串能对信息发送者所发
送的内容完整性以及发送者的身份进行校验和鉴别。

通信正文经过相应的摘要算法生成摘要后,使用消息发送者的私钥进行加密,生成数字
签名。

五、数字证书
我们每个人都有很多形式的身份证明,如身份证、驾驶证、护照等等,这些证件都是由相应的签发机构盖章认证,可信程度较高,很难进行伪造,并且,随着科技的发展,还可以通过指纹、视网膜等生物特征进行身份的认证。

数字证书(Digital Certificate),也称为电子证书,类似于
日常生活中的身份证,也是一种形式的身份认证,用于标识网络中的用户身份。

数字证书集合了多种密码学的加密算法,证书自身带有公钥信息,可以完成相应的加密、解密操作,同时,还
拥有自身信息的数字签名,可以鉴别证书的颁发机构,以及证书内容的完整性。

由于证书本身含有用户的认证信息,因此可以作为用户身份识别的依据。

通常数字证书会包含如下内容:
对象的名称(人,服务器,组织)
证书的过期时间
证书的颁发机构(谁为证书担保)
证书颁发机构对证书信息的数字签名
签名算法
对象的公钥。

相关文档
最新文档