被污染的标准
——2013年9月安全天下事
江海客
2013年9月10日,面对加密标准SP800-90种种质疑,NIST终于发表了声明:“我们想向IT网络安全界保证,严格审查标准的透明、公开的过程依旧存在。NIST不会刻意削弱一项加密标准。我们将继续执行使命,与加密团体合作,为美国政府和大型工业创立最强大的加密标准。”NIST同时重新开启了相关标准的审查期。
但这一行动却晚了整整5年,早在2007年,两位密码学家(NielsFerguson和Dan Shumow)提出2006年被纳入SP800-90 标准的Dual_EC_DRBG算法可能潜伏着一个后门。如果以特定方式选择定义算法的一个参数,NSA将可能预测出算法产生的随机数。但这种学界观点,一直波澜不惊,直到最近纽约时报称,由Edward Snowden泄露的内部备忘录证实了NSA生成Dual_EC_DRBG算法这一说法。纽约时报中写道。“由此,NSA迫使国际标准化组织采用这种算法,称之为‘ 技巧性的挑战’以说服组织的领导者。”
尽管NIST声明中称“很久之前,NIST就一直与世界上的密码学专家进行广泛的合作以提供强大的加密支撑。美国国家安全局能够参加NIST加密制定过程是因其自身具有公认的专业领域知识。法律上也要求NIST向NSA进行咨询。”但当密码学界像Bruce Schneier这样的泰斗都开始对美国官方机构提出质疑的时候,则很难再给简单的给类似事件贴上阴谋论的定性。
密码学家Mattew Green也在关注相关爆料,他在通读了ProPublica、纽约时报和卫报的文章后,在《A Few Thoughtson Cryptographic Engineering(关于加密工程的一些总结)》做了如下的概括:
NSA每年花费2亿5千万美元,做了下面这样的事情:
1. 篡改国家标准(NIST标准被特别提及)以削弱密码系统。
2. 对标准委员会施加影响以弱化协议。
3. 同软硬件开发商合作以削弱加密算法和随机数生成算法的强度。
4. 利用下一代4G手机攻击加密系统。
……
所有这些程序都有不同的代号,但是NSA的解密程序都以“Bullrun”命名。
Mattew Green进一步概括了“如何破解一套加密系统”的三个途径,“攻击加密算法、攻击加密算法的具体环境或者植入后门、直接入侵目标”,并引用了Bruce Schneier的话,“数学太好了,但是代码被颠覆了”;“NSA是在‘欺骗’,假设我们能够信任这些文件,那可就解脱了”。而Mattew Green则意味深长的补充,如果那些标准是可信的,那么更多的“破解”方法将是后两者。之后他提出硬件上需要重新考量英特尔安全密钥的随机数加密算法,从软件上重新分析微软CryptoAPI(和微软SChannel)、OpenSSL的加密库。。
Mattew Green担心OpenSSL虽然是开源的,但由于其代码规模庞大,难以被有效审视,因此也可能遭到污染,更担心对一些原则和信念的动摇,比如“不要相信非开源的代码和不受支持的标准”。Mattew Green并未提出更多证据,他焦虑于“我们认为已经解决了的问题,现在却不是我们想象中的样子。”但事实上这种恐慌确实是在扩散的。如一个英国人就在在Change.org发起请愿,请求Linus Torvalds为改进内核安全从/dev/random中移除RdRand。RdRand依赖的一个标准正是NIST SP800-90,被怀疑存在后门。Linus Torvalds对此嗤之以鼻,希望请愿者“自己去读内核代码,再回来承认自己错了”。Linus Torvalds的自信或许来自RdRand并非Linux随机数机制的全部。但NIST SP800-90是否也只是NSA削弱标准的“系统工程”的冰山一角呢?
我无意作出任何情绪化的评价,因为我相信单极世界的形成和全球领导地位的巩固,必然难免是居于领导地位的大国,追求各种资源可控并将可控资源的利己性发挥到极致的过程。而在大国博弈间,互贴“邪恶”标签是一件即经常发生、又低级无趣的事情。
作为一个中国信息安全工作者,无法在这个时候,不想到羸弱的中国信息安全产业和企业能力。多年前,某上海公司的程序员,在开发加密认证API时,把用于生成会话密钥的随机数种子随手设为了常数;国内较早的一套银行自主开发的CA系统,生成一套RSA密钥对的时间需要数个小时。那时的我曾对这些给予无情的嘲笑和批判,但回想起来,落后民族的追赶之路,注定要以幼稚可笑为起点。幼稚本身理应被容忍,不能容忍的应该是倒地拜服的虚无放弃、关门自闭的虚妄幻想以及自欺欺人的掩耳盗铃。