常见的加密算法能够分红三类,对称加密算法,非对称加密算法和Hash算法。git
对称加密算法
指加密和解密使用相同密钥的加密算法。对称加密算法的优势在于加解密的高速度和使用长密钥时的难破解性。假设两个用户须要使用对称加密方法加密而后交换数据,则用户最少须要2个密钥并交换使用,若是企业内用户有n个,则整个企业共须要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存状况,但要求企业中每个持有密钥的人都保守秘密是不可能的,他们一般会有意无心的把密钥泄漏出去——若是一个用户使用的密钥被入侵者所得到,入侵者即可以读取该用户密钥加密的全部文档,若是整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。安全
常见的对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC四、RC五、RC6和AES网络
非对称加密数据结构
指加密和解密使用不一样密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另外一方便可用本身的私钥解密。若是企业中有n个用户,企业须要生成n对密钥,并分发n个公钥。因为公钥是能够公开的,用户只要保管好本身的私钥便可,所以加密密钥的分发将变得十分简单。同时,因为每一个用户的私钥是惟一的,其余用户除了能够能够经过信息发送者的公钥来验证信息的来源是否真实,还能够确保发送者没法否定曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端状况下,甚至能比非对称加密慢上1000倍。函数
常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)工具
Hash算法ui
Hash算法特别的地方在于它是一种单向算法,用户能够经过Hash算法对目标信息生成一段特定长度的惟一的Hash值,却不能经过这个Hash值从新得到目标信息。所以Hash算法经常使用在不可还原的密码存储、信息完整性校验等。编码
常见的Hash算法:MD二、MD四、MD五、HAVAL、SHA、SHA-一、HMAC、HMAC-MD五、HMAC-SHA1加密
加密算法的效能一般能够按照算法自己的复杂程度、密钥长度(密钥越长越安全)、加解密速度等来衡量。上述的算法中,除了DES密钥长度不够、MD2速度较慢已逐渐被淘汰外,其余算法仍在目前的加密系统产品中使用。
加密算法的选择
前面的章节已经介绍了对称解密算法和非对称加密算法,有不少人疑惑:那咱们在实际使用的过程当中究竟该使用哪种比较好呢?
咱们应该根据本身的使用特色来肯定,因为非对称加密算法的运行速度比对称加密算法的速度慢不少,当咱们须要加密大量的数据时,建议采用对称加密算法,提升加解密速度。
对称加密算法不能实现签名,所以签名只能非对称算法。
因为对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,所以当数据量很小时,咱们能够考虑采用非对称加密算法。
在实际的操做过程当中,咱们一般采用的方式是:采用非对称加密算法管理对称算法的密钥,而后用对称加密算法加密数据,这样咱们就集成了两类加密算法的优势,既实现了加密速度快的优势,又实现了安全方便管理密钥的优势。
若是在选定了加密算法后,那采用多少位的密钥呢?通常来讲,密钥越长,运行的速度就越慢,应该根据的咱们实际须要的安全级别来选择,通常来讲,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为便可。
二. 加密算法介绍
对称加密算法
对称加密算法用来对敏感数据等信息进行加密,经常使用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不一样的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
AES与3DES的比较
算法名称 |
算法类型 |
密钥长度 |
速度 |
解密时间(建设机器每秒尝试255个密钥) |
资源消耗 |
AES |
对称block密码 |
12八、19二、256位 |
高 |
1490000亿年 |
低 |
3DES |
对称feistel密码 |
112位或168位 |
低 |
46亿年 |
中 |
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,须要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
ECC和RSA相比,在许多方面都有对绝对的优点,主要体如今如下方面:
抗攻击性强。相同的密钥长度,其抗攻击性要强不少倍。
计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。
存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具备特别重要的意义。
带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具备普遍的应用前景。
下面两张表示是RSA和ECC的安全性和速度的比较。
攻破时间(MIPS年) |
RSA/DSA(密钥长度) |
ECC密钥长度 |
RSA/ECC密钥长度比 |
104 |
512 |
106 |
5:1 |
108 |
768 |
132 |
6:1 |
1011 |
1024 |
160 |
7:1 |
1020 |
2048 |
210 |
10:1 |
1078 |
21000 |
600 |
35:1 |
攻破时间(MIPS年) |
RSA/DSA(密钥长度) |
ECC密钥长度 |
RSA/ECC密钥长度比 |
104 |
512 |
106 |
5:1 |
108 |
768 |
132 |
6:1 |
1011 |
1024 |
160 |
7:1 |
1020 |
2048 |
210 |
10:1 |
1078 |
21000 |
600 |
35:1 |
RSA和ECC安全模长得比较
功能 |
Security Builder 1.2 |
BSAFE 3.0 |
163位ECC(ms) |
1,023位RSA(ms) |
|
密钥对生成 |
3.8 |
4,708.3 |
签名 |
2.1(ECNRA) |
228.4 |
3.0(ECDSA) |
||
认证 |
9.9(ECNRA) |
12.7 |
10.7(ECDSA) |
||
Diffie—Hellman密钥交换 |
7.3 |
1,654.0 |
RSA和ECC速度比较
散列是信息的提炼,一般其长度要比信息小得多,且为一个固定长度。加密性强的散列必定是不可逆的,这就意味着经过散列结果,没法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将致使散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具备相同散列结果的两条信息。具备这些特性的散列结果就能够用于验证信息是否被修改。
单向散列函数通常用于产生消息摘要,密钥加密等,常见的有:
l MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文。
l SHA(Secure Hash Algorithm):能够对任意长度的数据运算生成一个160位的数值;
SHA-1与MD5的比较
由于两者均由MD4导出,SHA-1和MD5彼此很类似。相应的,他们的强度和其余特性也是类似,但还有如下几点不一样:
l 对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操做,而对SHA-1则是2160数量级的操做。这样,SHA-1对强行攻击有更大的强度。
l 对密码分析的安全性:因为MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
l 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。
以上综述了两种加密方法的原理,整体来讲主要有下面几个方面的不一样:
l 在管理方面:公钥密码算法只须要较少的资源就能够实现目的,在密钥的分配上,二者之间相差一个指数级别(一个是n一个是n2)。因此私钥密码算法不适应广域网的使用,并且更重要的一点是它不支持数字签名。
l 在安全方面:因为公钥密码算法基于未解决的数学难题,在破解上几乎不可能。对于私钥密码算法,到了AES虽然说从理论来讲是不可能破解的,但从计算机的发展角度来看。公钥更具备优越性。
l 从速度上来看:AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍,若是用硬件来实现的话这个比值将扩大到1000倍。
因为非对称加密算法的运行速度比对称加密算法的速度慢不少,当咱们须要加密大量的数据时,建议采用对称加密算法,提升加解密速度。
对称加密算法不能实现签名,所以签名只能非对称算法。
因为对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,所以当数据量很小时,咱们能够考虑采用非对称加密算法。
在实际的操做过程当中,咱们一般采用的方式是:采用非对称加密算法管理对称算法的密钥,而后用对称加密算法加密数据,这样咱们就集成了两类加密算法的优势,既实现了加密速度快的优势,又实现了安全方便管理密钥的优势。
那采用多少位的密钥呢? RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为便可。
保密通讯:保密通讯是密码学产生的动因。使用公私钥密码体制进行保密通讯时,信息接收者只有知道对应的密钥才能够解密该信息。
数字签名:数字签名技术能够代替传统的手写签名,并且从安全的角度考虑,数字签名具备很好的防伪造功能。在政府机关、军事领域、商业领域有普遍的应用环境。
秘密共享:秘密共享技术是指将一个秘密信息利用密码技术分拆成n个称为共享因子的信息,分发给n个成员,只有k(k≤n)个合法成员的共享因子才能够恢复该秘密信息,其中任何一个或m(m≤k)个成员合做都不知道该秘密信息。利用秘密共享技术能够控制任何须要多我的共同控制的秘密信息、命令等。
认证功能:在公开的信道上进行敏感信息的传输,采用签名技术实现对消息的真实性、完整性进行验证,经过验证公钥证书实现对通讯主体的身份验证。
密钥管理:密钥是保密系统中更为脆弱而重要的环节,公钥密码体制是解决密钥管理工做的有力工具;利用公钥密码体制进行密钥协商和产生,保密通讯双方不须要事先共享秘密信息;利用公钥密码体制进行密钥分发、保护、密钥托管、密钥恢复等。
基于公钥密码体制能够实现以上通用功能之外,还能够设计实现如下的系统:安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票系统等。
一. AES对称加密:
AES加密
分组
二. 分组密码的填充
分组密码的填充
e.g.:
PKCS#5填充方式
三. 流密码:
四. 分组密码加密中的四种模式:
3.1 ECB模式
优势:
1.简单;
2.有利于并行计算;
3.偏差不会被传送;
缺点:
1.不能隐藏明文的模式;
2.可能对明文进行主动攻击;
3.2 CBC模式:
优势:
1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。
缺点:
1.不利于并行计算;
2.偏差传递;
3.须要初始化向量IV
3.3 CFB模式:
优势:
1.隐藏了明文模式;
2.分组密码转化为流模式;
3.能够及时加密传送小于分组的数据;
缺点:
1.不利于并行计算;
2.偏差传送:一个明文单元损坏影响多个单元;
3.惟一的IV;
3.4 OFB模式:
优势:
1.隐藏了明文模式;
2.分组密码转化为流模式;
3.能够及时加密传送小于分组的数据;
缺点:
1.不利于并行计算;
2.对明文的主动攻击是可能的;
3.偏差传送:一个明文单元损坏影响多个单元;