深度解析塑造未来的技术文章。

加密U盘:当锁什么都没守护

联想所谓“加密”指纹U盘,拆开后竟是未加密的SD卡。教你如何识别硬件中的安全表演。

一个被撬开的U盘,里面露出一张普通的microSD卡
整个安全模型一张图看懂:这个U盘的秘密从来就不是秘密。

此刻某个仓库里,堆着无数标榜“军用级指纹加密”的U盘,一个拿着螺丝刀的十二岁小孩九十秒就能破解。联想的FU100指纹U盘是最新一个被公开拆解的例子:撬开塑料外壳,里面是一张再普通不过、完全未加密的microSD卡。指纹传感器并不解锁数据,它什么也没解锁,只是控制一个开关,让读卡器对电脑可见;数据始终以明文躺在闪存上。

这不是漏洞。漏洞是诚实设计中的失误,而这是一款安全宣传纯粹是装饰的产品。更要命的是,买这些U盘的人恰恰最无力验证这些声明:小企业主、律师、会计师、给护照扫描件找地方存的家长。他们为一个从未真正工程化的承诺付了溢价。

指纹传感器究竟控制了什么

要理解这种设计为何如此糟糕,不妨先看看真正的加密U盘是怎么工作的。在诚实的硬件加密设备中,主机和闪存之间有一颗专用的控制器芯片。它持有加密密钥——理想情况下由PIN派生或由指纹解锁——流经它的每个数据块在写入NAND之前都会用AES加密。把闪存芯片从电路板上拆下来,用芯片级读取工具读出来,得到的只是密文。这才是关键所在。物理存储和“智能”通过加密紧密耦合,所以把存储芯片拿走,什么有价值的东西也拿不到。

联想FU100则完全跳过了这一套。大致架构是:指纹模块、微控制器、USB集线器或读卡器芯片,以及一个microSD卡槽。录入指纹时,传感器模块把模板存在自己内部——这很常规,指纹比对本身大概也没问题。认证通过后,微控制器拉高一根线,把读卡器接入USB总线;认证失败,读卡器就根本不会被枚举。说白了,这就是一个带生物识别门卫的继电器。

可问题是,这个门卫守的是一座没有墙的建筑。microSD卡是可拆卸的标准部件,所以这种攻击甚至算不上攻击——不需要焊接、不需要故障注入、不需要侧信道。你打开外壳(塑料卡扣,可能还有一滴胶水),把卡插进任何读卡器,就能读到全部内容。这套“加密”的爆炸半径是零。

值得停下来想想,这里的威胁模型是怎样崩塌的。这类设备的厂商很喜欢在宣传里谈威胁模型。隐含的故事是:你丢了U盘,陌生人捡到,插上电脑,没有你的手指就什么也拿不到。这个故事只在陌生人搜一下“FU100拆解”之前成立——或者只要他注意到外壳的接缝就行。丢失U盘的现实对手不是拥有X光设备的国家级黑客,而是一个拿着水果刀的好奇路人。面对这种对手,这套设计提供的保护为零。指纹传感器运行完美,却什么也没保护,这恰恰是一个机制与它声称要保护的东西完全脱节的最纯粹示范。

如果攻击者能取出存储介质,用现成工具读出来,那你的设备就从来没加密过。它不过是一把挂在空地上的锁。

核心问题其实就一个:密钥到底存在哪里?

有一个问题能戳穿所有加密存储的营销话术,你应该教给每一个向你请教的人:密钥存在哪里,指纹传感器究竟控制了什么?答案只会落入三类之一。

  • 密钥在加密控制器中,数据静态加密。指纹或PIN解锁专用芯片中的密钥,NAND里存的是密文。金士顿IronKey系列就是这么做的,也是唯一能经得起拆解的设计。
  • 密钥在控制器中,但存储或派生方式很烂。数据名义上是加密的,但密钥要么烧录在固件里,要么由序列号派生,要么能从MCU的闪存中恢复。对付随手丢失的情况还算强过没有,但面对一个带逻辑分析仪和一个周末时间的人,毫无价值。
  • 根本没有密钥。传感器只控制枚举、供电或集线器端口。存储是明文的。联想就是这种设计,而且比买家想象的要常见得多。

中间那一类值得多说几句,因为连一些知名品牌也在这里栽过跟头。安全研究人员多年来拆解过无数“安全”U盘,发现有的AES实现,密钥可以从控制器闪存中恢复;有的认证,只需短接一个调试焊点就能绕过;还有的固件更新机制,允许你重刷MCU并把一切都提取出来。剑桥大学对早期IronKey设备的拆解是这方面的经典案例——值得注意的是,它讲的是把这件事做对有多难,而不只是造假有多容易。IronKey至少是认真做了的。FU100从来没有尝试过。

三类之中藏着一个实用的判断法则:第一类要求厂商做出硬性、昂贵、可核验的声明。比如AES-256 XTS模式,密钥由硬件随机数发生器在设备上生成,PIN错误十次后自动擦除密钥。这些陈述工程师可以验证,也可以证伪。第二和第三类则藏在“受保护”“安全”“生物识别访问”这类模糊措辞后面,描述的是一种体验,而不是一种机制。如果规格表读起来像生活方式广告,那规格表其实已经在告诉你,你买的是哪一类了。

为什么这类产品总能通过审核

更让人不舒服的是组织层面的问题。这不是某个来路不明的小厂在深圳柜台上卖的货——尽管有人指出,FU100在中国大陆电商平台之外几乎没有零售渠道。它来自联想,一家把logo印在政府和银行配发的ThinkPad上的公司,一家已经因Superfish事件失去过一次信任的公司。在它的组织架构图里某处,这款产品经过了工业设计、固件审查、市场签发和法务。要么没有懂安全的人看过,要么有人看过,但决定还是要上市。

两种解释都说得通,而且各有各的难堪。第一种说明安全审查只是走过场。第二种说明这是一场市场部赢了的博弈。不过我报道过足够多的此类事件,觉得通常还有第三种情况:产品由ODM设计,品牌方换个马甲贴上标签,而整条链条上没有人为包装上的宣传语负责。营销文案写“加密”,是因为品类龙头的文案写的是“加密”。这个词会像“军用级”一样在商品列表里扩散——它是一种感觉,而不是一项规格。

一旦你理解了ODM贴牌的流程,很多事情就说得通了。一家白牌厂商设计了一款指纹控制的读卡器——就其定位而言确实不错,大概是瞄准“不让孩子碰我的文件”这类需求——然后拿着一套外壳和logo的菜单去找各个品牌。品牌的产品经理通过抄竞品来写listing文案。链条上没有人是密码学家,也没有人的岗位职责包括“验证密码学声明”。法务审的是商标风险,而不是AES到底存不存在。结果就是一场传话游戏:“生物识别访问控制”在数据手册和商品页面之间的某个环节变成了“指纹加密”,而且没有任何一个人明知故犯地写下了他们自己认得出是假的东西。从某种意义上说这比恶意更糟,因为没有一个可以开除的坏人——只有一个会稳定地大规模制造假安全的流程。

一扇孤零零立在空旷田野中、身后什么也没有的保险库大门
硬件形式的安全表演:一把守着空门的精美锁。

如何真正验证一款加密U盘

大多数这类产品,你不需要实验室也能做个基本判断。购买前问几个问题,就能过滤掉最差的那些。

首先,找FIPS 140-2或140-3认证,并且要有一个可以在NIST的CMVP数据库里查到的真实证书编号。不要只看“符合FIPS”——这个说法毫无意义,厂商之所以用它,正是因为它听起来像真的,却不需要承担任何责任——而要看一份明确列出具体产品和固件版本的证书。真正的密码模块认证对厂商来说是实打实的成本,往往要花几万美元和几个月的实验室时间,这正是它与真正的密码学能力相关的原因。造假很便宜,认证却不便宜。

其次,看厂商是否公开过架构方面的信息。认真的厂商会告诉你加密引擎在控制器上,密钥在设备上生成,主机从不接触密钥。如果只有“生物识别保护”“安全访问”之类的模糊表述,却没有提到AES、密钥派生或设备端加密,那就是一个红旗——它描述的是一个访问闸门,而不是加密。

第三,终极手段:搜索拆解文章。安全社区非常乐意为了集体利益去毁掉昂贵的小工具。如果一款售价90美元的“加密”U盘已经上市两年,却没有人发布过晶片照片或电路板走线分析,这种沉默本身就是信息——通常意味着安全研究圈认为它不值得花那笔购买费用。

还有第四种检查,方法更粗暴,但出奇地有效:看价格与宣传的比例。真正的硬件加密U盘有实实在在的物料成本——一颗安全MCU、经过验证的固件,有时还有用环氧树脂灌封的外壳以抵御芯片级攻击。如果一款128GB的“军用级加密”指纹U盘,卖得比知名品牌的普通128GB U盘还便宜,那这笔账已经告诉你加密是“免费”的,而免费的加密就只值这个价钱。对于便宜得可疑的安全宣传,要用对待便宜得可疑的“正品”苹果充电器一样的警觉:被省掉的那个部件,恰恰是最关键的那个。

为什么干脆不信任硬件本身

我的真实立场是,而且我愿意承认其中的取舍:对大多数人来说,硬件加密U盘根本就是错误的品类。正确的答案是在廉价的通用存储上使用软件加密。一个15美元的普通U盘加上VeraCrypt,或者Linux上的LUKS容器,又或者一个简单的age加密压缩包,就能给你可公开审计的密码学保障,实现代码有成千上万人读过,而且完全不依赖于某个ODM的微控制器是否真的像包装盒上说的那样工作。

反对意见总是关于易用性——这点也公平。VeraCrypt容器让人困惑。律师和会计师往往用不好它,这恰恰是敏感客户文件最后躺在未加密U盘里的原因。这确实是我们工具链的失败,我之前也写过UX反模式如何悄悄削弱安全性。但对“好的密码学难用”这个问题,答案不是“买一个假装好用的假密码学”,而是要求更好的默认设置:操作系统级的加密容器,输入密码即可挂载;文件管理器在右键菜单里提供加密功能;IT部门把U盘正确地预先配置好。

还有一个常被忽视的维护问题。软件加密的容器跑在通用硬件上,永远可以替换:U盘丢了,买一个新的,从备份恢复,完事。硬件加密U盘则是一个单点——如果控制器坏了,如果厂商放弃了解锁工具(这工具通常只能在Windows上跑,而且只支持厂商愿意维护的版本),或者公司倒闭了,你的数据能否取回就取决于一条你无法掌控的供应链。在信任不透明的平台组件能持续工作这件事上,我们集体已经用惨痛的代价学到过这一课。专有的加密设备也会以同样的方式失效,只是更悄无声息。

如果你确实需要一个硬件设备——比如用于物理隔离的数据传输流程,或者因为合规条款要求使用FIPS认证模块——那就只从少数经受过独立审查的厂商那里购买,并且自己核验证书。把这次购买当作你在技术栈中做的任何其他信任决策来对待。我们(最终)学会用来审视固件、供应链和编辑器里的插件市场的那种怀疑态度,放到一个声称在隐形地做密码学的黑盒子上,应该加倍使用。

安全表演,代价是信任

“安全表演”这个词通常被用来形容机场安检队伍,但这件事才是它最纯粹的形态:一种控制措施存在的目的,是让用户感觉受到了保护,实际上却毫无保护作用。而表演在某种意义上比什么都没有更糟,因为什么都没有至少还会告诉你真相。知道自己U盘没加密的人,可能会给文件加密码,可能不会把它落在出租车上,也可能会多想想里面存了什么。而手里拿着一个“加密”U盘的人,则会放松警惕。这款产品不只是没能降低风险,它还通过改变人的行为,实际上放大了风险。

这类故事的真正代价在于此。问题不在于存在一个坏型号——市场上一直都有坏型号。问题在于,每一次假货被曝光,都在教育买家:“加密”只是一个营销词。这侵蚀了那些真正在做工程的厂商的信号价值。当金士顿IronKey和一款指纹控制的SD读卡器以相近的价格并排出现在搜索结果里,披着同样的形容词,诚实的产品就是在和一个光看商品页面无法证伪的谎言竞争。

监管机构本可以解决其中一部分问题,而且他们偶尔也确实这么做。消费者保护机构过去也曾追究过软件中的虚假安全宣传,而在装着明文存储的盒子上写“加密”,是最明确不过的虚假陈述之一。但执法既缓慢又受辖区限制,而商品列表在有人投诉之前,早已被复制到新的店铺里了。真正更快的免疫系统已经在运作:拿着螺丝刀的研究人员,以及学会了在相信形容词之前先等拆解结果的买家。

一排外形完全相同的U盘,其中一个被剖开,里面是空的
货架上一模一样,实际却截然相反——商品页面无法告诉你哪个是哪个。

所以结论并不是“联想不行”,尽管联想确实应该为此承受声誉损失,并且应当随之召回产品。真正的结论是:在硬件安全领域,拆解报告就是规格表。在一台设备被打开、走线被追踪、数据被读出之前,而且读出它的人不靠卖它赚钱,“加密”只是一个声明,而不是一项属性。请据此购买——或者更好的做法,自己加密,然后别再相信塑料外壳。