密码技术概览 (1)

基础

密码学中的密码(cryptography)指的是安全传送消息的方法,包括加密算法、密钥等等。注意,汉语中经常讲到的 “帐号、密码” 中的 “密码” 指的是口令(password、passcode、pin)。

密码学的理论基础是数学中的“”题(何为难题?这一点参考 信息论复杂性理论),如对大数的分解质因数(Prime Factorization)、模N下求大数的平方根(Square root)以及模N下求离散对数(Discrete Logarithm)等等。

上图是一个经典的密码学例子:

对待加密的原始比特流可称为明文(plaintext),另一个与其等长的比特流可称为密钥(key)。对二者一次异或运算(XOR)可视为加密(encrypt),其加密的结果可称为密文(ciphertext)。对密文与密钥的一次异或运算可视为解密(decrypt),其解密的结果就是原始比特流,即明文。在不知道密钥的情况下,根据密文生成明文的过程叫破译(cryptanalysis)。

关于密码技术,有一些常识需要清楚:

  • 不要使用保密的密码算法——隐蔽式安全(Security By Obscurity)

  • 不要使用自制的密码算法——开发高强度的密码算法是困难的

  • 使用低强度的密码比不加密更危险——错误的安全感

  • 任何密码总有一天会被破解——时间成本与明文价值的权衡

  • 密码只是信息安全的一部分——脆弱的是人类自己

工具箱

密码学家的工具箱中应包括但不限于如下几种技术:

对称密码

对称密码(symmetric-key cryptography),一种在加密、解密时使用相同的(或简单互推的)密钥的密码技术。

经典的对称密码算法:

  • DES(Data Encryption Standard)
  • 3DES(Triple-DES)
  • AES(Advanced Encryption Standard)

非对称密码

非对称密码(asymmetric cryptography),也叫公钥密码(Public-key cryptography),一种需要两个密钥的密码技术,一个是公开密钥,另一个是私有密钥,前者加密,后者解密。

经典的非对称密码算法:

  • RSA(Rivest-Shamir-Adleman)
  • ECC(Elliptic Curve Cryptography)
  • Rabin
  • ElGamal

单项散列函数

单项散列函数(one-way hash function)有一个输入和一个输出,其中输入称为消息(message),输出称为散列值(hash value)。

h = H(M), 单项散列函数H(M)作用于任意长度的消息M,返回长度固定的散列值h

经典的单项散列函数算法:

  • SHA-1
  • SHA-2(Secure Hash Algorithm-2)
    • SHA-256
    • SHA-512
  • REPEMD-160
  • SHA-3(Secure Hash Algorithm-3)
    • Keccak

消息认证码


Unfinished


数字签名


Unfinished


推荐书籍