Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Surreptitiously Weakening Cryptographic Systems

本次介绍的论文Surreptitiously Weakening Cryptographic Systems,来自大名鼎鼎的Bruce Schneier,讨论的是如何“设计”一个弱密码学系统

论文下载:https://eprint.iacr.org/2015/097.pdf

1 概要介绍

密码系统在部署之前,要对其可靠性进行检测。本文作者站在一个破坏者的角度上,通过一些具体案例的分析,阐述了在密码学设计和执行部署方面,如何制造一些漏洞,并且对这些漏洞进行了评价,包括漏洞是否容易被发现,是否容易使用,影响范围,是否能被控制等等。

2 模型术语

作者设定了四种角色,包括Saboteur(破坏者,在密码系统设计和执行中,有意或者无意加入漏洞),Attacker(攻击者,利用漏洞实施攻击的人),Victim(受害者,主要是用户),Defender(防御者,密码系统的设计者)

Figure 1

对漏洞的评估,使用了下列参数:

  • secrecy:隐蔽性。
  • utility:实用性
  • scope:影响范围

并对每一项进行了细分:

Figure 2

3 漏洞实例

作者分析了几个比较知名的密码学漏洞:

  • Lotus Notes:同EXP类似,Lotus Notes软件使用64位密钥,其中24位使用NSA的公钥加密传输,只有NSA能破解信息。
  • Dual EC DRBG:椭圆曲线产生伪随机数的问题。
  • Debian OpenSSL PRNG:开发者增加了两行代码,用来为伪随机数发生器提供熵值,但是却违反了内存安全使用原则,导致TLS或者SSH产生的密钥是32767种可能之一。
  • Heatbleed:代码实现漏洞
  • Double Goto:证书验证出现问题。

针对每个实例,其漏洞性质的评价。

Figure 3

4 设计与执行

4.1 设计方面

破坏者可以从两个角度实现设计上的漏洞,一个拥有先进的知识,在系统被广泛熟知之前,后门不会被发现,另一种类似FREAK ATTACK,拥有修改标准的权利,制定一个不安全的规则。

4.2 执行方面

  1. Bad randomness:随机数用在密钥生成,初始向量,密钥管理,关键数生成等方面,在目前做一个弱的随机数发生器并不能,并且有些时候直观上看不出问题。
  2. key 数据泄露: subliminal channels and kleptography. 在密码系统中加入后门。
  3. 泄露敏感数据:一是利用旁路攻击,由于开发者滥用密码算法,例如google keyczar的设计中,根据错误响应返回的不同时间,可以获取明文的一些数据信息。二是处理明文和密钥方法错误,比如加密通信后密钥未销毁,电脑死机时用临时文件存储明文信息,密钥留在内存区。
  4. 不正确的错误处理方式:POA攻击
  5. 随机数和IV重用:cbc模式中重复使用IV导致第一块明文信息泄露,随机数产生,IV熵不足
  6. API使用不当

5 Case Studies

TLS

  1. 随机数如何被预测:设计一个弱的随机数产生方法,似的主密钥可预测;或者使用的熵不足;或者根据产生的随机数推测出规律。
  2. 修改证书和握手信息验证信息,进行中间人攻击。