极客科技特种技术
1
 
谁是最安全的U盘?浅谈加密闪存设备的算法与工业设计
paclab 2017-1-27 09:52:30

进入数字时代以后,个人信息安全是大家相当关注的话题。密码学的研究与应用贯穿了整个互联网时代:以RSA为代表的数字签名算法传递了我们在互联网上访问与发送的信息。

但是,相伴于此的,装载我们隐私数据的存储设备面临着许多被窃风险。从物理角度来说,便携式存储设备(如手机、u盘、电脑)的丢失很可能会造成极其严重的后果。想想李宗伟和冠希哥,再想想看丢失绑定支付宝账户的手机会对自己造成多大的损失。在天朝,电子数据取证也是查水表的必经手段,老大哥会直接把电脑的硬盘拆走没收。

那么,如何才能稳固最后一道防线,哪怕让你的u盘、移动硬盘已经落入他人手中,也能保证自己信息安全无虞呢?究竟怎么样的加密算法以及软件防御手段才能算是“安全”,怎么样的硬件设计才能保证极端情况的可靠?纵观全球,对信息安全状况最防微杜渐的恐怕就是没底了。知己知彼,百战百胜,我们来看看美帝老大哥的说法。

美帝在1996年开始制定了联邦资料处理标准(FIPS),里面包含了美帝联邦政府给联邦/州政府与各级政府承包商的信息处理标准。其中,有关加密算法的标准包含FIPS 197(只包含AES算法)与FIPS 140-2(加密模块安全级别分类)。FIPS 140-2包含4个级别,其中1级安全度最低,4级则最高。网上竟然没有该标准的中文翻译(好像也没有什么不对),我谨慎翻译了下,下面是其要求(科创发不了好看的表格,烦请点大图):


上述FIPS140-2对硬件加密模块在密码学过程中的关键环节做出了详尽要求,但上面的表格并没有直接阐明符合FIPS140-2的加密算法。当然,FIPS140-2标准可以算是选择一款相当安全u盘的分水岭,低于该标准的闪存盘会是怎么样的呢?

示例1:Kingston Datatraveler Locker+ g3


这款“加密”usb设备乍眼看上去外观逼格还不错,但是实际上它只有一个搭载autorun软件的基于密码访问控制程序,和裸奔几无两样。这款产品很便宜,算是防君子不防小人的产品。

示例2:Kingston Datatraveler Vault


这款产品则是号称搭载基于FIPS197的加密模块(意思就是只有AES256算法),如果光认为该算法在计算层面较难破解,就认为该款设备足够安全的话,请考虑这两点:

I. 产品的硬塑料外壳可拆卸,无法保证tamper safe,即别人拆开把里面的硬件掉包,也不一定能看得出来

II.同上,该设备再拆开外壳后无任何防护措施,若靠读取芯片电平时序则可侧路攻击并大大降低破译算法复杂度

III.全盘加密方式是CBC,即是密码分组链接(Cipher-block chaining),而不是目前在工业界较为被认可的带有调整和密文窃取的XEX加密模式(即XTS)。

之所以放到第三点,是因为这个争论在学界中并未形成统一意见。有的密码学专家称XTS并不比CBC安全太多,原因是随机生成字符碰撞明文值时,开头两位十六进制值为 0x30 0x00所对应加密为ASCII值为0的可能性极高。

如果将标准调高至FIPS 140-2 Level 3,则是民用级别存储设备里最安全可靠的了。具有代表性的产品来自下面三个公司:

第一个Ironkey是美国政府和他们承包商的老主顾,从2005年来美帝国安局(DHS)就一直资助它的母公司Imation,后来再2016年的时候被卖给了Kingston。Ironkey产品的外观设计这么多年都没怎么变过,外壳为一体成型的不锈钢,在不锈钢外壳下面则是灌有环氧树脂的电路板,使得不留痕迹将芯片取出而不损坏芯片结构的难度非常大。据NIST检测标准称,电路板环氧树脂外还有一层金属屏蔽层,若强行拆开则会触发篡改检测响应机制(temper detection and respond),在通电读取数据时将直接触发数据自毁。

第二款Kingston dt4000g2的消费者面向对象同样是美帝政府部门与高科技企业。这款设备使用一体成型不锈钢镀钛合金外壳,电路板两侧灌注环氧树脂,如下图所示


而第三款aegis secure key的公司apricon则很有意思,它并没有多少产品销售至美帝政府的记录,且产品线内包含许多与非加密存储设备(移动硬盘、e-sata转ssd盒...)让人怀疑该产品的专业性。但这款aegis secure key确实通过了FIPS140-2 level 3认证,且它具有上述加密产品都没有的特征:免安装软件,靠物理按键输入密码。里面内置充电电池的aegis key将所有基于身份的认证方式与含有关键性安全参数的端口都存储于内置的加密芯片中。使用的方法则很简单,从口袋里掏出U盘,输入密码后按解锁键,稍待片刻就完成了解密程序,便可插入USB端口读取数据。想象一下你有windows、linux和各种嵌入式设备都要使用u盘,这货就能绕过繁琐的操作系统安装加解密软件步骤。同样的,为了防止物理攻击,这货里面也有环氧树脂封装。

这三款u盘的加密方式都采用了AES256与SHA256,在未来的十余年内足够抵御暴力碰撞攻击。而在全盘数据加密的方面,Ironkey与dt4000g2均采用了密钥散列消息认证码(HMAC),配合XTS方式,它能够有效碰撞法对Hash函数的破解概率。而Aegis key则没有采用HMAC,并直接使用hash值输入至随机数发生器。我们记得斯诺登当年的爆料指出NSA在2006年行贿RSA公司将双椭圆曲线确定性随机比特生成器(Dual_EC_DRBG)写进NIST SP800-90A有关加密算法随机数发生器的技术要求里! 这个算法后门使得NSA能够大大降低碰撞Dual_EC_DRBG伪随机数生成密码的时间复杂度,从而绕过AES算法时间复杂度的障碍。如果换了我,同样的随机数发生器,我一定会选类似随机盐算法的HMAC先对hash加密再生成随机数。

说了这么多,似乎上面三款u盘已经足够狂拽酷霸屌了。有没有更给力点的?

有!当然有!

上文所说的FIPS140-2,是美国联邦政府所规定的加密模组标准。它的适用范围(level 4)顶多也就到政府放放没那么机要的文件上。别忘了美帝国防部下面还有个屌屌的国家安全局,直属总统管(现在是川普了)在美帝的保密政策上,真正和谐的东西当然是归他们管。我们来看看NSA对加密算法的管理政策:

在2005年,NSA公布了用于保护只允许在国内流传(US-Only)与保密相关信息(SCI)文件的加密算法成套标准(NSA Suite B),

  1. 对称加密:使用分组密码工作模式的AES-128与AES-256
  2. 数字签名:椭圆曲线数字签名算法(ECDSA)
  3. 密钥协议:椭圆曲线Diffie–Hellman密钥交换(ECDH)
  4. 散列函数:SHA-256与SHA-384

我们来看看NSA对Secret(美帝保密政策第二级,相当于我国“秘密”)与Top Secret(美帝保密政策第三级,相当于我国“绝密”)的加密要求:

首先是对称加密算法,AES-128及以上适用于Secret级,AES-256适用于Top Secret

其次是数字签名,ECDSA-256适用于Secret级,ECDSA-384适用于Top Secret。

NSA对RSA算法相当的不放心,就算到了3072bit强度也不得用于SCI文件的加密上(RSA-3072的强度约等于AES-128,AES-256强度约等于RSA-15360)。

在密钥协议上,ECDH-256适用于Secret级,ECDH-384适用于Top Secret。


最后是散列函数:SHA-256适用于Secret级,SHA-384适用于Top Secret。

有人可能觉得奇怪:AES-256的加密强度明明可以赶得上512bit的椭圆曲线函数,而384bit的ECC只算得上是AES-192,为什么在数字签名和密钥协议里NSA都只需要384bit就能符合要求了??他们难道是糊涂了不成。其实并不是:原因在于椭圆曲线的时间复杂度区别使得ECC-512会比ECC-384消耗极大,ECC-384已经足够安全(见图)。


什么设备能满足NSA Suite B的要求呢?鄙人不才,曾经听说过的,能够生产这种设备的公司就两个:美帝的Spyrus和英帝的Eclypt (现在改名叫viasat)。Spyrus自己生产的密码芯片完全符合Suite B的最高要求:AES-256、SHA-384与ECC-384。问题在于他们的产品实在是神龙见首不见尾:没得卖。比如前两年和PNY合作的pocket vault系列,堪称便携加密存储设备的黑科技产品:满足Suite B的条件下还拥有USB3.0读写速度,以及最大1TB容量,可惜并没有找着。

再远一点,2010年的时候Spyrus和kingston合作生产过两款极其特殊的,符合Suite B标准的datatraveler系列U盘:Kingston DT5000和Kingston DT6000。


这两款U盘长得非常低调,怎么看也和一般的U盘没什么区别,很少有人会一探乾坤知道背后的故事。可惜的是,它产量极少,且早已停产了。

至于Ecylpt,公开资料上只找到它的低端版本(Eclypt Nano 200,密级相当于FIPS 140-2 Level 2),而它的高端版本甚至没有出现在NIST的认证列表里,看来英国佬也对美帝信不过啊。


下图是Ecylpt nano 200,曾经在英国有出售,但现在也没了


那么,有没有更给力的啊?

答案是 有。

您得去请教下某rod版主了。。。。

想参与大家的讨论?现在就 登录 或者 注册

nkc production server  https://github.com/kccd/nkc.git

科创研究院 (c)2001-2018

蜀ICP备11004945号-2 川公网安备51010802000058号