对称密码算法
指加密和解密使用相同**的加密算法。对称加密算法的优点在于加解密的高速度和使用长**时的难**性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个**并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个**,**的生成和分发将成为企业信息部门的恶梦。
常见的对称加密算法:SM4、DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
1.**传输问题:
如上所说,由于对称加密的加密和解密使用的是同一个**,所以对称加密的安全性就不仅仅取决于加密算法本身的强度,更取决于**是否被安全的保管,因此加密者如何把**安全的传递到解密者手里,就成了对称加密面临的关键问题。(比如,我们客户端肯定不能直接存储对称加密的**,因为被反编译之后,**就泄露了,数据安全性就得不到保障,所以实际中我们一般都是客户端向服务端请求对称加密的**,而且**还得用非对称加密后再传输。)
2.**管理问题:
随着**数量的增多,**的管理问题会逐渐显现出来。比如我们在加密用户的信息时,不可能所有用户都用同一个**加密解密吧,这样的话,一旦**泄漏,就相当于泄露了所有用户的信息,因此需要为每一个用户单独的生成一个**并且管理,这样**管理的代价也会非常大。企业中每一个持有**的人都保守秘密是不可能的,他们通常会有意无意的把**泄漏出去——如果一个用户使用的**被入侵者所获得,入侵者便可以读取该用户**加密的所有文档,如果整个企业共用一个加***,那整个企业文档的保密性便无从谈起。
(公钥加密)非对称密码算法
指加密和解密使用不同**的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对**,并分发n个公钥。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加***的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比非对称加密慢上1000倍。
常见的非对称加密算法:SM2、RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
那么通信过程中秘钥是如何交互的呢?
1.乙方生成一对**(公钥和私钥)并将公钥向其它方公开。
2.得到该公钥的甲方使用该**对机密信息进行加密后再发送给乙方。
3.乙方再用自己保存的另一把专用**(私钥)对加密后的信息进行解密。乙方只能用其专用**(私钥)解密由对应的公钥加密后的信息。
在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法**密文,因为只有乙的私钥才能解密密文。
同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。
(Hash算法)密码杂凑算法
通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。
常见的Hash算法:SM3、MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
加密算法的效能通常可以按照算法本身的复杂程度、**长度(**越长越安全)、加解密速度等来衡量。上述的算法中,除了DES**长度不够、MD2速度较慢已逐渐被淘汰外,其他算法仍在目前的加密系统产品中使用。