常见英文:
encrypt:加密
decrypt:解密
plaintext:明文
ciphertext:密文
密码的类型
根据密钥的使用方法,可以将密码分为2种
-
对称密码
-
公钥密码(非对称密码)
对称密码(Symmetric Cryptography)
在对称密码中,加密、解密时使用的是同一个密钥
常见的对称密码算法有:
DES
- DES是一种将64bit明文加密成64bit密文的对称密码算法
- 密钥长度是64bit,但每隔7bit有一个检查专用位,因此密钥长度实质上是56bit
- 缺点:由于DES每次只能加密64bit的数据,遇到比较大的数据,需要对DES加密进行迭代(反复),而且目前已经可以在短时间内被破解,不安全。
3DES
- 3DES,将DES重复3次所得到的一种密码算法,也叫做3重DES。
- 3个密钥都是不同的,也称为DES-EDE3。
- 如果所有密钥都使用同一个,则结果与普通的DES是等价的
- 如果密钥1、密钥3相同,密钥2不同,称为DES-EDE2
- 缺点:此为在DES的基础上的增强加密强度,然而带来了多个密钥的维护成本,同时影响了处理速度,目前已不安全
AES
- AES取代DES,是目前首选的新标准的对称加密算法,速度快,安全级别高。
- AES的密钥长度有128、192、256bit三种。
- 在2000年时选择Rijindael算法作为AES的实现
- 目前AES,已经逐步取代DES、3DES,成为首选的对称密码算法
- 基于排序和置换运算,迭代的算法,用128bit(16字节)分组加密解密数据
- 一般来说,我们也不应该去使用任何自制的密码算法,而是应该使用AES,它经过了全世界密码学家所进行的高品质验证工作。
对称加密的优缺点:
- 优点:计算量小,速度快,效率高
- 缺点:密钥配送问题
密钥配送问题
在使用对称密码时,一定会遇到密钥配送问题,A将使用对称密码加密过的消息发给了B,只有将密钥发送给B,B才能完成解密,在发送密钥过程中,可能会被C窃取密钥,最后C也能完成解密。
如何解决密钥配送问题
- 事先共享密钥
数据传输前分享密钥,但如果一方泄露,隐患仍较大。且麻烦 - 密钥分配中心
在运用AES加密前,前端申请分配中心生成与该用户对应的密钥,加密数据后传给后端,后端从分配中心同样获取密钥,进行解密。 - Diffie-Hellman密钥交换
在公共信道上安全交换加密密钥的方法(没有深入研究) - 公钥密码(非对称加密)
公钥密码(Public-key Cryptography)
公钥密码中,密钥分为加密密钥、解密密钥2种,它们并不是同一个密钥,公钥密码也被称为非对称密码(Asymmetric Cryptography)
关于公钥和私钥
- 公钥:加密密钥,一般是公开的。
- 私钥:解密密钥,由消息接收者自己保管的,不能公开。
- 公钥和私钥是一 一对应的,是不能单独生成的,一对公钥和密钥统称为密钥对(key pair)
- 由公钥加密的密文,必须使用与该公钥对应的私钥才能解密。
- 由私钥加密的密文,必须使用与该私钥对应的公钥才能解密。
最常用的加密方式:RSA
RSA是目前使用最广泛的公钥密码算法,RSA的名字,由它的3位开发者,即Ron Rivest、Adi Shamir、Leonard Adleman的姓氏首字母组成。
RSA能同时用于加密和数字签名的算法
非对称加密的优缺点:
优点:解决密钥配送问题,分公私钥,安全性高
缺点:加解密速度慢,如何解决非对称加密加密速度慢问题?使用混合密码
补充
公钥和私钥都可以加密,那么我们应该使用哪个用来加密,哪个用来解密呢?
总结就是:
- 加密时,公钥加密,私钥解密
- 签名时,私钥签名,公钥验证
有关签名,可以参考数字签名
混合密码系统(Hybrid Cryptosystem)
混合密码系统采用将对称密码和公钥密码相结合的方法,解决了公钥密码速度慢的问题,并通过公钥密码解决了对称密码的密钥配送问题。
网络上的密码通信所用的SSL/TLS都运用了混合密码系统
混合密码-加密过程
- 消息发送者要拥有消息接收者的公钥
- 生成会话密钥(由伪随机数生成器生成的临时密钥,又作对称密钥),作为对称密码的密钥加密消息。
- 用消息接收者的公钥,加密会话密钥。
- 将用会话密钥加密的消息和用公钥加密的会话密钥,一并发给消息接收者。
混合密码-解密过程
- 消息接收者用自己的私钥解密出会话密钥
- 再用第1步解密出来的会话密钥,解密消息
总结:
- 用对称密钥对消息进行加密
- 发送者用非对称加密的公钥对对称加密的密钥加密
- 接收者用私钥解密获得对称加密的密钥
- 接收者再用对称加密的密钥来解密消息