19_加密解密

常见英文:

encrypt:加密
decrypt:解密
plaintext:明文
ciphertext:密文

密码的类型

根据密钥的使用方法,可以将密码分为2种

  • 对称密码


    image.png
  • 公钥密码(非对称密码)


    image.png

对称密码(Symmetric Cryptography)

image.png

在对称密码中,加密、解密时使用的是同一个密钥
常见的对称密码算法有:

DES
Snip20200817_1.png
  • DES是一种将64bit明文加密成64bit密文的对称密码算法
  • 密钥长度是64bit,但每隔7bit有一个检查专用位,因此密钥长度实质上是56bit
  • 缺点:由于DES每次只能加密64bit的数据,遇到比较大的数据,需要对DES加密进行迭代(反复),而且目前已经可以在短时间内被破解,不安全。
3DES
Snip20200817_3.png
  • 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)

image.png

公钥密码中,密钥分为加密密钥、解密密钥2种,它们并不是同一个密钥,公钥密码也被称为非对称密码(Asymmetric Cryptography)

关于公钥和私钥
  • 公钥:加密密钥,一般是公开的。
  • 私钥:解密密钥,由消息接收者自己保管的,不能公开。
  • 公钥和私钥是一 一对应的,是不能单独生成的,一对公钥和密钥统称为密钥对(key pair)
  • 由公钥加密的密文,必须使用与该公钥对应的私钥才能解密。
  • 由私钥加密的密文,必须使用与该私钥对应的公钥才能解密。

最常用的加密方式:RSA

RSA是目前使用最广泛的公钥密码算法,RSA的名字,由它的3位开发者,即Ron Rivest、Adi Shamir、Leonard Adleman的姓氏首字母组成。

RSA能同时用于加密和数字签名的算法

非对称加密的优缺点:

优点:解决密钥配送问题,分公私钥,安全性高
缺点:加解密速度慢,如何解决非对称加密加密速度慢问题?使用混合密码

补充

公钥和私钥都可以加密,那么我们应该使用哪个用来加密,哪个用来解密呢?


image.png

总结就是:

  • 加密时,公钥加密,私钥解密
  • 签名时,私钥签名,公钥验证

有关签名,可以参考数字签名

混合密码系统(Hybrid Cryptosystem)

  • 混合密码系统采用将对称密码和公钥密码相结合的方法,解决了公钥密码速度慢的问题,并通过公钥密码解决了对称密码的密钥配送问题。

  • 网络上的密码通信所用的SSL/TLS都运用了混合密码系统

混合密码-加密过程
image.png
  1. 消息发送者要拥有消息接收者的公钥
  2. 生成会话密钥(由伪随机数生成器生成的临时密钥,又作对称密钥),作为对称密码的密钥加密消息。
  3. 用消息接收者的公钥,加密会话密钥。
  4. 将用会话密钥加密的消息和用公钥加密的会话密钥,一并发给消息接收者。
混合密码-解密过程
image.png
  1. 消息接收者用自己的私钥解密出会话密钥
  2. 再用第1步解密出来的会话密钥,解密消息
总结:
  1. 用对称密钥对消息进行加密
  2. 发送者用非对称加密的公钥对对称加密的密钥加密
  3. 接收者用私钥解密获得对称加密的密钥
  4. 接收者再用对称加密的密钥来解密消息

你可能感兴趣的:(19_加密解密)