跳转至

密码学与计算机安全


  • 安全服务要求
    • 机密性
    • 完整性
    • 可用性
    • 消息认证(鉴别)
    • 不可否认性
    • 身份鉴别
    • 访问控制
    • 有效性
  • 基本术语
    • 密码技术(Cryptography):把可理解的消息变换成不可理解消息,同时又可恢复原消息的方法和原理的一门科学或艺术。
    • 明文(plaintext):变换前的原始消息
    • 密文(ciphertext):变换后的消息
    • 密码算法(cipher):用于改变消息的替换或变换算法
    • 密钥(key):用于密码变换的,只有发送者或接收者拥有的秘密消息
    • 编码(encipher /encode):把明文变为密文的过程
    • 译码(decipher /decode):把密文变为明文的过程
    • 密码分析(cryptanalysis /codebreaking):在没有密钥的情况下,破解密文的原理与方法
    • 密码学(cryptology):包括加密理论与解密理论的学科
  • 密码学算法分类:
    • 私钥加密算法(private-key encryption algorithms)/对称加密算法(symmetric encryption algorithms)
      • 分组密码
      • 流密码/序列密码
    • 公钥加密算法(public-key encryption algorithms)/非对称加密算法(asymmetric encryption algorithms)
    • 数字签名算法(digital signature algorithms)
    • 哈希函数(hash functions)
  • 密码分析学
    • 唯密文攻击 (ciphertext only)
    • 只知道算法与一些密文
    • 利用统计方法
    • 需要能够识别明文
    • 已知明文攻击(known plaintext)
      • 知道一些明文/密文对
      • 利用已知的明文密文对进行攻击
    • 选择明文攻击(chosen plaintext)
      • 能够选择明文并得到相应的密文
      • 利用算法的结构进行攻击
    • 选择密文攻击(chosen ciphertext)
      • 能够选择密文并得到对应的明文
      • 利用对算法结构的知识进行攻击
  • 算法复杂性类型
    • 常数级: 复杂性不依赖于 \(n\),用 \(O(1)\) 表示
    • 线性复杂度: 复杂度是 \(O(n)\)
    • 多项式复杂度: 复杂度是 \(O(n^k)\)\(k\) 是一常数
    • 指数性复杂度: 复杂度是 \(O(cf(n))\)\(c\) 是一常数,\(f(n)\) 是指数函数
    • 指数型算法: 复杂度高于任何多项式函数,如 \(O(2^n)\)\(O(n!)\)\(O(n^{\log{n}})\)
  • 问题复杂性及其分类
    • P 类问题
      • 多项式时间内可解的问题
      • 例如:排序、矩阵乘法、最短路径等
    • NP 类问题
      • 多项式时间内可验证的问题
      • 例如:旅行商问题、子集和问题等
  • 无条件安全与计算安全
    • 无条件安全(unconditional security)
      • 即使攻击者拥有无限计算资源,也无法破解密码
      • 例如:一次性密码本(one-time pad)
    • 计算安全(computational security)
      • 在现有计算资源下,破解密码在合理时间内不可行,或者破解密码所需的代价超过了其价值
      • 例如:RSA、AES 等现代密码算法