一、加密算法的选择:
1.1 对称加密:
不安全的加密算法:
a.DES系加密算法(DES/DESX/3DES/2TDEA )
DES(Data Encryption Standard) 是IBM开发的商业密码 ,基于Lucifer算法,1972年成为美国国家标准局NIST((National Institute of Standards and Technology)的加密标准; 3DES相当于是对每个数据块应用三次DES加密运算,Triple Data Encryption Algorithm,缩写为TDEA。
b.RC2/RC4 (Ron's Code)
即Ron Rivest提出的加密算法,为RSA公司所有,是一种可变秘钥长度的加密算法,速度要比DES快很多,RSA一直拒绝公开RC2/RC4的加密细节,直到被人匿名公布了RC2/RC4的源代码。
c.TEA
据说鹅厂一直在使用,好像还对其进行了改进,网上也有很多TEA加密解密的源码,不过TEA已经被破解了,所以还是不使用为好。
d. base64伪加密
这个一定要严格禁止使用
这个一定要严格禁止使用
这个一定要严格禁止使用
base64不是真正的加密算法,只能算是一种伪加密。64(2的6次幂)代表64个可打印的字符(A~Z,a~z,0~9,+,-,对64个字符进行0~63进行编排),base64的原理是对数据中的24个bit话划分成4组,每组6个bit,然后在每组前加两个0构成8bit (值得范围是0~63),然后根据base64编码表进行替换为64个可打印字符之一,最后每组扩展为32bit。简单来说就是一个简单的字符映射替换,几乎不具有现代密码学上的安全性。
对称加密算法推荐【密码长度大于128bit】:
AES-GCM(Galois/Counter Mode);
AES-CTR(Counter,计算器模式);
AES-OFB(Output FeedBack,输出反馈模式)。
1.2 非对称加密:
a.RSA:
RSA是目前主流使用的非对称加密算法是(Rivest, Shamir, Adleman, 即三位发明者的名字的首字母) 三位科学家在Diffie(提出非对称加密的猜想)的启发下,组成一个小团体,耗费了一年的时间完成的,Rivest是实际的算法提出者,Shamir也是一个密码学大牛,教科书中会有很多地方提到他,但是在RSA的贡献上没有Rivest运气好,Adleman是数学家,主要验证Rivest, Shamir提出算法的有效性,三位凭借RSA的成果获得了2002年图灵奖。
b.DSA /ECDSA:
DSA(Digital Signature Algorithm)是美国国家标准局NIST于1991公布的签名算法,只具有数字签名功能,不具有加密功能。
ECDSA(Elliptic Curve Digital Signature Algorithm)即椭圆曲线数字签名算法,即ECC与DSA的结合。
b.背包加密算法
背包加密由Merkle-Hellman基于背包难题,提出的第一个公钥加密算法,不过仅仅两年后就被破解了。
非对称加密算法推荐:
RSA的密码长度大于3072bits;
DSA的密码长度大于3072bits;
ECDSA的大于256bits。
1.3 Hash算法:
**不安全的Hash算法:SHA0,SHA-1,MD2,MD4,MD5等;
推荐:SHA256,SHA-3
1.4 密码交换算法:
目前主流使用的非对称加密算法是D-H协议(Diffie-Hellman,两位发明人的首字母,猜想由Diffie提出(非对称加密的猜想也是由他提出),最后由Hellman提出具体算法,凭借D-H协议二位获得了2015年的图灵奖
)和 ECD-H(Ellipse Curve Cryptography 椭圆曲线算法和D-H的结合
)
备注:据说Diffie已经全职加盟浙江大学
推荐:
D-H 的密码长度大于3072bits;
ECD-H大于256bits;
1.5 随机数:
C库或者java的random()都是伪随机数,一定要禁止用于安全用途。
推荐:OpenSSL,Java 的SecureRandom ,unix的dev/random,window的cryptGenRandom,以及中软的Random组件。
1.6 其他:
1.5.1 禁止使用SSL2.0(MD5,中间人攻击),SSL3.0(中间人攻击),TLS1.0(使用RC4加密),TLS1.1(使用MD5和SHA-1)
推荐: TLS1.2,TLS1.3
1.5.2 ssh禁止使用cbc模式,禁止使用sshv1,要使用v2及以上版本,
推荐: HMAC-SHA2消息认证算法,
网友评论