1.柯克霍夫原则:
即使密码系统的任何细节已为人熟知,只要密钥未泄露,它也应是安全的。
无论是在战争时期还是和平时期,都不能把保密的希望寄托于系统或算法的秘密性。机械可以拆解,软件可以反编译。密码系统的所有细节总会被有心人一一拆解。这个时候,如果系统符合柯克霍夫原则,那么即使对手拆解了系统但不知道密钥,他也没有办法破译加密的信息。满足这种严苛条件的密码系统才是安全的。
2.散列函数:
散列函数广泛用于信息完整性的验证,是数据签名的核心技术。散列函数的常用算法有MD---消息摘要算法、SHA---安全散列算法及MAC---消息认证码算法。
3.对称加密:
对称密码体制要求加密与解密使用同一个共享密钥,解密是加密的逆运算,由于通信双方共享同一个密钥,这就要求通信双方必须在通信前商定该密钥,并妥善保存该密钥,该密钥称为秘密密钥。秘密密钥的存在使得对称密码体制开放性变差。
常见的对称加密算法有DES、3DES、AES、IDEA、Blowfish、RC5和RC6等。
4.非对称加密:
非对称密码算法的安全性依赖于计算复杂度上的难题,通常来自于数论。
RSA---整数因子分解问题;
DSA---数字签名算法,源于离散对数问题;
ECC---椭圆曲线加密算法,源于离散对数问题。
由于这些数学难题的实现多涉及底层模数乘法或指数运算,相对于分组密码需要更多的计算资源。
为了弥补这一缺陷,非对称密码系统通常是复合式的:用高效的对称密码算法对信息进行加解密处理,用非对称密钥加密对称密码系统所使用的密钥,通过这种复合方式增进效率。
5.数字签名算法:
数字签名算法可以看做是一种带有密钥的消息摘要算法,并且这种密钥包含了公钥和私钥。也就是说,数字签名算法是非对称加密算法和消息摘要算法的结合体。