密码学常见术语

本文承接前文加密,因为不是人人都选修过信息安全和密码学课程,且工作后一直记得相关概念,这里稍作整理。本文没有干货,只是对开发中涉及到的密码学相关术语的汇总。

散列算法(Hash Algorithm)

摘要算法(Digest Algorithm)

MD4

MD4 消息摘要算法(MD4 Message-Digest Algorithm),1990 年由 Ronald L. Rivest 提出。其摘要长度为 128 位,一般 128 位长的 MD4 散列被表示为 32 位的十六进制数字。

MD5

MD5 消息摘要算法(MD5 Message-Digest Algorithm),1992 年由 Ronald L. Rivest 提出。

MD6

MD6 消息摘要算法(MD6 Message-Digest Algorithm),2008 年由 Ronald L. Rivest 提出。算法增加了并行机制。

RIPEMD

RACE 原始完整性校验消息摘要(RACE Integrity Primitives Evaluation Message Digest),1996 年由 COSIC 研究小组发布。 RIPEMD 以 MD4 为基础原则设计,其表现与 SHA-1 类似,RIPEMD-160 最为常用。

SHA 家族

SHA 安全散列算法(Secure Hash Algorithm),由美国国家安全局(National Security Agency,NSA)设计,美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)发布。

SHA-0

1993 年发布,即 FIPS PUB 180 Secure Hash Standard,也被称为 SHA-0。

SHA-1

1995 年发布,即 FIPS PUB 180-1 Secure Hash Standard,也被称为 SHA-1。

SHA-2

2001 年发布,即 FIPS PUB 180-2 Secure Hash Standard,SHA-2 包括 SHA-224, SHA-256, SHA-384, SHA-512 算法。

SHA-3

2015 年发布,即 FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions,也被称为 Keccak 算法。

加密算法

对称加密(Symmetric Encryption)

对称加密是指加密和解密使用同一个密钥的加密方式。

  • 工作过程:发送方使用密钥将明文数据加密成密文,然后发送出去,接收方收到密文后,使用同一个密钥将密文解密成明文读取。
  • 优点:加密计算量小、速度块,适合对大量数据进行加密的场景。
  • 缺点:存在密钥传输问题和密钥管理问题。速度快,安全性不高。
  • 常见的对称加密算法:DES、3DES、Blowfish、IDEA、Rabbit、RC4、RC5、RC6、AES。

DES

DES,数据加密标准(Data Encryption Standard),1972 年由美国 IBM 公司研制,1977 年被美国政府采纳为加密标准。

DEA

DEA,数据加密算法(Data Encryption Algorithm),DES 所使用的算法。

3DES

3DES 或 Triple DES,三重数据加密算法,1981 年公布,是 DES 算法向 AES 算法过渡的加密算法。

IDEA

IDEA,国际数据加密算法(International Data Encryption Algorithm),1990 年由 Xuejia Lai(来学嘉)和 James Massey 提出。在 DES 算法的基础上发展出来的,类似于 3DES。

AES

AES,高级加密标准(Advanced Encryption Standard),2001 年由美国国家标准与技术研究院(NIST)发布。

Rijndael

Rijndael,AES 所使用的加密算法,由 Vincent Rijmen 和 Joan Daemen 开发。

RC4 RC5 RC6

RC4,Rivest Cipher 4,1987 年由 Ronald L. Rivest 提出的一种流加密算法,属于对称加密算法。

RC5,1994 年提出的分组密码算法。

RC6,一种新的分组密码算法,是 AES 的候选算法(最终采纳的是 Rijndael 算法)。

Rabbit

Rabbit,Rabbit Stream Cipher,流加密算法,由 Cryptico 公司在 2003 年设计发布。

Blowfish

Blowfish,分组密码算法,1993 年由 Bruce Schneider 设计,用于替代 DES,属于对称加密算法。

非对称加密(Asymmetric Encryption)

非对称加密算法,也称为“公开密钥加密算法”,是指加密密钥和解密密钥完全不同,其中一个为公钥,另一个为私钥,并且不可能从任何一个推导出另一个。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

  • 优点:安全性高
  • 缺点:加密与解密速度慢
  • 常见的非对称加密算法:RSA、ECC、Diffie-Hellman、ElGamal、DSA。

工作过程:

  1. A 要向 B 发送信息,A 和 B 都要产生一对用于加密和解密的公钥和私钥。
  2. A 的私钥保密,A 的公钥告诉 B;B 的私钥保密,B 的公钥告诉 A。
  3. A 要给 B 发送信息时,A 用 B 的公钥加密信息,因为 A 知道 B 的公钥。
  4. A 将这个消息发给 B(已经用 B 的公钥加密消息)。
  5. B 收到这个消息后,B 用自己的私钥解密 A 的消息,其他所有收到这个报文的人都无法解密,因为只有 B 才有 B 的私钥。
  6. 反过来,B 向 A 发送消息也是一样。

ECC

ECC,椭圆曲线加密算法(Elliptic Curve Cryptography),1985 年由 Neal Koblitz 和 Victor Miller 提出。

RSA

RSA 加密算法,1977 年由 Ronald L. Rivest、Adi Shamir 和 Leonard Adleman 提出,RSA 即三人姓氏首字母。

Diffie-Hellman

Diffie-Hellman 或 DH,1976 年 Whitfield Diffie 和 Martin Hellman 提出一种密钥交换协议,被称为 Diffie-Hellman 密钥交换协议(Diffie-Hellman Key Exchange),使用的算法被称为 Diffie-Hellman 算法。

ECDH

ECDH,全称 Elliptic Curve Diffie-Hellman,即椭圆曲线 Diffie-Hellman 密钥交换算法。

ElGamal

ElGamal,基于 Diffie-Hellman 密钥交换的非对称加密算法,1985 年由 Taher Elgamal 提出。

DSS

DSS,数字签名标准(Digital Signature Standard),1991 年美国国家标准与技术研究院(NIST)提出。

DSA

DSA,数字签名算法(Digital Signature Algorithm),Schnorr 和 ElGamal 签名算法的变种。

其他术语

PRNG

PRNG,伪随机数生成器(Pseudo Random Number Generator)。

CSPRNG

CSPRNG,密码学安全伪随机数生成器(Cryptographically Secure Pseudo Random Number Generator)

分组密码(Block Cipher)

常用的分组密码加密模式:

  • 电码本模式(Electronic codebook,ECB)
  • 密码分组链接模式(Cipher-block chaining,CBC)
  • 计算器模式(Counter,CTR)
  • 密码反馈模式(Cipher feedback,CFB)
  • 输出反馈模式(Output feedback,OFB)

PEM

一般指 PEM 证书格式,在 RFC 1421 Privacy Enhancement for Electronic Mail 中定义。

PKCS

PKCS,公钥加密标准(Public Key Cryptography Standards),由美国 RSA 数据安全公司制定。

涉及的标准:

  • PKCS#1:RSA 密码学标准。
  • PKCS#3:DH 密钥协议标准。
  • PKCS#5:密码基植加密标准。
  • PKCS#6:证书扩展语法标准。
  • PKCS#7:密码信息语法标准。
  • PKCS#8:私钥信息表示标准。
  • PKCS#9:选择属性格式。
  • PKCS#10:证书申请标准。
  • PKCS#11:密码设备标准接口。
  • PKCS#12:个人信息交换标准。
  • PKCS#13:椭圆曲线密码学标准。
  • PKCS#14:伪随机数生成器标准。
  • PKCS#15:密码令牌信息格式标准。

其中 PKCS#2 和 PKCS#4 已撤销,被纳入 PKCS#1 之中。

PKI

PKI,公钥基础设施(Public Key Infrastructure)。

MAC

MAC,消息认证码(Message Authentication Code),由特定算法计算后产生,用于检查消息的完整性,以及身份验证。

HMAC

HMAC,散列消息认证码(Hash-based Message Authentication Code),也被称为密钥散列消息认证码(Keyed-hash Message Authentication Code),一种基于密码散列函数的消息认证码,可以和 MD5、SHA-1 结合使用,常见的有 HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512, HMAC-MD5。

KDF

密钥派生函数(Key Derivation Function)。

HKDF

即 HMAC-based KDF,基于 HMAC 的密钥派生函数。

PBKDF2

即基于密码的密钥派生函数(Password-Based Key Derivation Function 2)。存储登录密码时,一般都会使用散列函数进行加密,比如 MD5 算法,但 MD5 算法本身已经被破解,并且无法防止彩虹表攻击。可以使用 PBKDF2 算法代替 MD5 加密密码。

TLS/SSL

TLS 全称“传输层安全性协议(Transport Layer Security)”,SSL 全称“安全套接字层协议(Secure Sockets Layer)”。

SSL 最初由网景公司(Netscape)设计开发,后 IETF 将 SSL 标准化为 TLS,它是 HTTPS 的基础。

TLS/SSL 版本变化:

  • SSL 1.0
  • SSL 2.0 1995 年发布
  • SSL 3.0 1996 年发布
  • TLS 1.0 1999 年发布
  • TLS 1.1 2006 年发布
  • TLS 1.2 2008 年发布
  • TLS 1.3 2018 年发布

TLS/SSL 在传输层与应用层之间对网络连接进行加密。

OpenSSL

OpenSSL 是一个开源的 TLS/SSL 协议工具包,同时除了实现 TLS/SSL 协议(libssl),还提供通用的密码学算法库(libcrypto)和命令行工具(openssl)。