Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Why Does Cryptographic Software Fail? : a Case Study and Open Problems

论文下载

漏洞

统计归类了CVE中269个与密码学有关的漏洞,其中17%来自密码库本身

Fig

  • 明文泄露:明文通信、明文存取、明文日志
  • 中间人攻击:
    • 验证逻辑错误:Apple“goto fail”
    • 证书验证不足:安卓Apk证书
  • 枚举攻击:
    • 加密逻辑错误:sign extention -fsigned-char
    • 弱加密算法: DES,ECB模式
    • 弱加密密钥、硬编码密钥
    • 弱PRNG: 统计学随机函数如梅森旋转,Math.random
    • 可预测种子: 使用time、process PID、内存中未初始化的数据
    • 种子重用: fork之后父子进程的seed相同

Fig

  • 旁路攻击:
    • 计时、Padding Oracle、CRIME攻击、内存泄露

预防措施

  • 设计实现
    • 原语:没有基于敏感信息的程序跳转和内存读取,Ed25519
    • 协议:Openssl 的验证
    • 应用:出于安全,隐藏底层细节接口,Keyczar
  • 测试:代码覆盖率 底层接口
  • 静态分析:
    • 编译警告,-Wall -Wunreachable-code
    • 密码学误用,工具:MalloDroid,CryptoLint
  • 验证:形式化证明

开放性问题

  • 原语:
    • 形式化证明中SAT问题是NPC的
    • weak key的判定
    • 从底层汇编抽出数学模型
  • 协议:
    • 如何避免CRIME之类的旁路攻击。
      • CRIME攻击:http请求中重复头部的值,只有cookie是未知的,对cookie逐位猜测,如果更长的字符串出现两次,密文会被压缩的更短
  • 应用:密码库如何提供安全的接口:强密码套件、避免随机性不够的seed和硬编码、提供mac验证,避免敏感信息明文泄露