密码学 | 青训营笔记

180 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

image-20220123154304201

密码学的发展

  1. 古典密码

    受算法限制

  2. 近代密码

  3. 现代密码(香农)

    新特点:基于密钥而非算法

  4. 公钥密码

    无密钥传输保密通信成为可能

加密与解密

加密通过密码算法实现,密码算法从密钥使用角度分为对称密码算法和非对称密码算法。

对称密码算法

也称单钥/私钥密码算法:加密解密密钥相同或实质上相同(可从一个推出另一个)

  • DES、3DES、IDEA、AES
  • 密钥相对较短,一般采用128、192、256比特

image-20220123155602477

非对称密码算法

非对称密码算法:加密密钥和解密密钥不同,从一个很难推出另一个。其中,对外公开的密钥,称为公开密钥( public key),简称公钥;必须保密的密钥,称为私有密钥( private key),简称私钥。又叫公钥密码算法( Public-keycipher)。

例如:RSA、ECC、ELGamal

  • 公钥加密 私钥解密
  • 私钥加密 公钥解密
  • 密钥长度512-2048位

优点:

  • 密钥分发数目与参与者数目相同
  • 在有大量参与者的情况下易于密钥管理一安全
  • 支持数字签名和不可否认性
  • 无需事先与对方建立关系,交换密钥

缺点:

  • 速度相对较慢(可能比同等强度的对称密码算法慢10倍到100倍)
  • 加密后,密文变长

混合加密

将公钥进行非对称加密

image-20220123160511918

image-20220123160534400

image-20220123160545326

哈希函数

  • 对称密码和非对称密码算法主要解决信息的机密性问题,而实际系统和网络还可能受到消息篡改等攻击。
  • 篡改攻击主要包括:修改信息内容,改变程序使其不能正确运行等。哈希函数可以用来保证信息的完整性。
  • 哈希(Hash)函数(也称为杂凑函数或单向散列函数)接受一个消息作为输入,产生一个称为哈希值的输出。输出的哈希值也可称为散列值、消息摘要(Message Digest,MD)

MD5

MD:Message Digest,消息摘要

  • 输入∶任意长度的消息
  • 输出∶128位消息摘要
  • 处理∶以512位输入数据块为单位

SHA-1 算法

SHA ( Secure Hash Algorithm,安全哈希算法)由美国国家标准技术研究所开发

  • 输入∶最大长度为264位的消息
  • 输出:160位消息摘要
  • 处理∶输入以512位数据块为单位处理

比较SHA-1/MD5

  • 散列值长度 MD5 128bits SHA1 160bits
  • 安全性 SHA1算法被视为MD5的替代候选算法
  • 速度 SHA1慢些( openssl speed md5/sha1 )

数字签名

  1. A将文件的哈希值进行私钥加密后与文件、文件的哈希值一并发过去。
  2. B用A的公钥对加密的哈希值进行解密,如果与文件的哈希值相符则证明是A。

image-20220123161748300

  1. 可信性:签名让文件的接收者相信签名者是慎重地在文件上签名的。
  2. 不可重用性:签名不可重用,即使同一消息在不同时刻的签名也是有区别的。如果将签名部分提取出来,附加在别的消息后面,验证签名会失败。这是因为签名和所签名消息之间是一一对应的,消息不同签名内容也不同,因此签名无法重复使用。
  3. 数据完整性:在文件签名后,文件不能改变。
  4. 不可伪造性:签名能够证明是签名者而不是其他人在文件上签名,任何人都不能伪造签名。
  5. 不可否认性:在签名者否认自己的签名时,签名接收者可以请求可信第二方进行仲裁。