大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
二. 加密算法介绍
对称加密算法
对称加密算法用来对敏感数据等信息进行加密,经常使用的算法包含:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
AES与3DES的比較
算法名称 | 算法类型 | 密钥长度 | 速度 | 解密时间(建设机器每秒尝试255个密钥) | 资源消耗 |
---|---|---|---|---|---|
AES | 对称blockpassword | 128、192、256位 | 高 | 1490000亿年 | 低 |
3DES | 对称feistelpassword | 112位或168位 | 低 | 46亿年 | 中 |
非对称算法
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,须要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线password编码学。
ECC和RSA相比,在很多方面都有对绝对的优势,主要体如今下面方面:
抗攻击性强。同样的密钥长度,其抗攻击性要强非常多倍。
计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。
存储空间占用小。ECC的密钥尺寸和系统參数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。
带宽要求低。当对长消息进行加解密时,三类password系统有同样的带宽要求,但应用于短消息时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 对password分析的安全性:因为MD5的设计,易受password分析的攻击,SHA-1显得不易受这种攻击。
l 速度:在同样的硬件上,SHA-1的执行速度比MD5慢。
对称与非对称算法比較
以上综述了两种加密方法的原理,整体来说主要有以下几个方面的不同:
l 在管理方面:公钥password算法仅仅须要较少的资源就能够实现目的,在密钥的分配上,两者之间相差一个指数级别(一个是n一个是n2)。所以私钥password算法不适应广域网的使用,并且更重要的一点是它不支持数字签名。
l 在安全方面:因为公钥password算法基于未解决的数学难题,在破解上差点儿不可能。对于私钥password算法,到了AES虽说从理论来说是不可能破解的,但从计算机的发展角度来看。公钥更具有优越性。
l 从速度上来看:AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍,假设用硬件来实现的话这个比值将扩大到1000倍。
三. 加密算法的选择
因为非对称加密算法的执行速度比对称加密算法的速度慢非常多,当我们须要加密大量的数据时,建议採用对称加密算法,提高加解密速度。
对称加密算法不能实现签名,因此签名仅仅能非对称算法。
因为对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量非常小时,我们能够考虑採用非对称加密算法。
在实际的操作过程中,我们通常採用的方式是:採用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的长处,既实现了加密速度快的长处,又实现了安全方便管理密钥的长处。
那採用多少位的密钥呢? RSA建议採用1024位的数字,ECC建议採用160位,AES採用128为就可以。
四. password学在现代的应用
保密通信:保密通信是password学产生的动因。使用公私钥password体制进行保密通信时,信息接收者仅仅有知道相应的密钥才干够解密该信息。
数字签名:数字签名技术能够取代传统的手写签名,并且从安全的角度考虑,数字签名具有非常好的防伪造功能。在政府机关、军事领域、商业领域有广泛的应用环境。
秘密共享:秘密共享技术是指将一个秘密信息利用password技术分拆成n个称为共享因子的信息,分发给n个成员,仅仅有k(k≤n)个合法成员的共享因子才干够恢复该秘密信息,当中不论什么一个或m(m≤k)个成员合作都不知道该秘密信息。利用秘密共享技术能够控制不论什么须要多个人共同控制的秘密信息、命令等。
认证功能:在公开的信道上进行敏感信息的传输,採用签名技术实现对消息的真实性、完整性进行验证,通过验证公钥证书实现对通信主体的身份验证。
密钥管理:密钥是保密系统中更为脆弱而重要的环节,公钥password体制是解决密钥管理工作的有力工具;利用公钥password体制进行密钥协商和产生,保密通信两方不须要事先共享秘密信息;利用公钥password体制进行密钥分发、保护、密钥托管、密钥恢复等。
基于公钥password体制能够实现以上通用功能以外,还能够设计实现下面的系统:安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票系统等。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118477.html原文链接:https://javaforall.cn