在数据安全比天大的今天,如果有一种硬盘数据加密方法放在你的面前:它不需要安装任何软件,且操作系统无关;不需要额外学习如何使用;不需要额外花费金钱;几乎不会影响性能;不用担心后门;比BIOS密码安全,硬盘换个机器还是加密状态;更妙的是,最新主流硬盘和固态大都已经支持它,不需要额外硬件!这么多优点,请问你的选择是我要,还是我要呢?
这个方法就是“硬盘密码”(HDD password)功能。尽管它有这许多好处,尽管它已经存在很长一段时间了,可惜大多数电脑用户的实际选择都是不要。究其原因,主要是对它不甚了解。大多数用户不知道它,不会用;对它一知半解的又不敢用。在知乎上,搜索硬盘密码问题,回答很少,且大多数答案是错误的。不但一般用户,甚至很多本应对数据安全十分敏感的专业机构都没有开启它,从而因为没有正确处理硬盘数据面临巨额罚款[1]。今天,我就带大家全方位得了解一下硬盘密码,包括它的老标准:“ATA Security Feature Set”;硬盘密码的新技术:OPAL 2.0 SSC,后者的优点;它们与BIOS的关系和如何开启它;它的缺点和隐患等。
传统硬盘密码
很久以前,在前公司发的ThinkPad笔电上,第一次接触了硬盘密码。应IT要求,所有电脑必须开启硬盘密码,在黑乎乎的背景中,硬盘密码输入框颇为醒目:
早期传统的硬盘密码(Hard Drive Password)功能,由硬盘ATA协议定义,属于ATA Security功能集(Feature Set)。它已经存在和使用很久了,下面以ATA硬盘密码代替。ATA硬盘密码定义了两个密码:User和Master密码。User密码由终端用户开启使用(往往是在BIOS中),一旦开启并重新启动后,硬盘上电默认处于锁住状态(Lock),所有ATA的读写命令都不能通过,从而保护了数据的安全。只有用户在BIOS中准确输入User密码后,BIOS通过在ATA unlock命令中嵌入准确的密码,才能将硬盘从Lock状态转换到Unlock状态,从而可以读取硬盘数据,正常使用硬盘,并在整个上电周期中保持Unlock状态,直到再次下电。Master密码主要是避免所有鸡蛋都放在一个篮子里面,由一个更高等级的密码在User密码遗失的情况下,恢复数据和重置密码,毕竟忘记密码是经常的事情。它的主人本应该是硬盘制造商或者公司IT人员,并需要严格管理,毕竟这相当于是开了一个后门。但由于业态的碎片化,使用情况相当混乱。有的商务电脑Master密码由IT管控,提供一个Service Tag以便重置User密码,而大多数Master密码则是空置状态,导致忘记User密码意味着数据的丢失。
从ATA硬盘密码的技术细节可以看出,BIOS只是硬盘密码的输入载体,并不存储密码。Master和User密码由硬盘固件保存,Lock的状态也保存在其中,这保证了硬盘密码的自包含性。也就是将硬盘拔下来,换个电脑,硬盘还是锁住的,需要输入密码才能Unlock,这防止了整机或者硬盘丢失后,数据的泄密。这也是我前公司IT要求必须开启硬盘密码的原因。那么它有什么缺点呢?
ATA Security功能集并未定义密码在硬盘固件中的存储方式,也未要求数据本身在硬盘中是否加密,这让它有了薄弱的环节。有些硬盘固件在NVRAM中,明文存储密码,网上有些工具可以读出这些明文,从而破解硬盘密码;早期的硬盘,数据在硬盘中并未加密。黑客或者数据恢复公司在理论上,可以将盘片或者Flash颗粒拆出来,直接读取来获得数据。针对ATA硬盘密码的这些问题,和新的NVMe不支持ATA命令,OPAL 2.0硬盘密码应运而生。
OPAL 2.0 SSC
TCG国际行业标准组织可信计算组织(TCG,Trusted Computing Group)从用户访问控制和存储数据自加密的维度,制定了OPAL/OPALite/OPAL Pyrite 存储安全扩展协议族 (Storage Security Subsystem Class,Storage SSC)[2],以下简称OPAL 2.0。OPAL 2.0 包含内容锁定、用户配置、访问权限,安全擦除等一系列存储安全相关功能。一个支持OPAL 2.0的自加密硬盘(Self-Encrypting Drive (SED) ) 的系统框图如下:
自加密硬盘SED在图中黑框标出。它有几点比较重要:
- 数据在硬盘(可以是机械硬盘,也可以是SSD)中是加密存储的,就是图中的红色Ciphertext。没有用于解密的MEK(Media Encryption Key),密文无法破解,硬盘数据无法破解,这就避免了离线攻击。OPAL 2.0为了加解密速度,算法采用对称密码算法,AES-128或者AES-256。
- 秘钥MEK(Media Encryption Key) 并不是明文存储,而是由授权密码PIN 生成的KEK(Key Encryption Key)加密存储,解密后使用,且掉电即消失,保证了密文的安全。
- 一旦MEK匹配,由硬盘控制器负责加解密,NVMe或者SATA总线上传输的是明文,保证上次协议和软件的透明。
不仅如此,OPAL 2.0扩展了ATA硬盘密码的Master和User两个密码,定义了一组Admin和User用户(各种子类数目不同),各个User用户可以在各自的“Locking Ranges”操作自己的数据,互不干扰。OPAL 2.0功能如此强大,它在各种硬盘上的支持情况如何呢?
硬盘密码市场现状
当前,OPAL扩展协议族已经被 ATA/NVMe/SCSI等多个存储命令集实现,广泛应用于各种存储设备。大家最新的硬盘往往是支持OPAL的,无论是机械硬盘还是SSD,无论是SATA接口的还是M.2接口的。这里有几点需要特别说明:
- 绝大部分硬盘支持OPAL,但有些硬盘仅仅支持OPAL Pyrite。它不支持数据加密,但密码部分是一样的,安全性稍欠缺,如果是强需求,JD选购的时候,需要看看是否支持加密功能。
- ATA硬盘密码功能和OPAL 2.0并不是互斥的,在很多情况下,硬盘同时支持两者,用哪一种取决于BIOS。
最近几年,硬盘主控国产替代十分红火。头部国产主控已经支持OPAL 2.0(尽管有各种各样的小问题),同时为了体现国产差异化,将AES和HASH算法替换成国密SMx算法成为一个特色。
好了,既然OPAL大都支持,那么如何开启呢?作为一个BIOS内容为主的专栏,答案可想而知。
BIOS支持
开启硬盘密码(ATA或者OPAL)需要BIOS支持。王婆卖瓜一把,目前百敖的硬盘密码功能相对全面一些:
命令集上,支持ATA、ATA SPSP和OPAL,且跨平台跨架构,支持各种ISA。且支持PSID功能。
在BIOS中,开启的地方各种BIOS有所不同,一般在安全菜单里面:
Down side
安全性和易用性往往是矛盾的,硬盘密码也不能例外。硬盘密码开启后,每次启动需要输入硬盘密码,使用稍有不便;更重要的是,硬盘密码需要仔细保存,如果没有IT人员保管Admin密码,User密码再丢失了,数据往往是找不回来的,使用时也需要特别注意。再强调一遍,BIOS只是硬盘密码的输入载体,并不存储密码,找到主板厂商或者BIOS厂商也无济于事,OPAL密码找到硬盘厂商也没有办法。只能借助厂商提供的 PSID功能, 做破坏性清除重置。
OPAL 2.0尽管解决了ATA硬盘密码的诸多安全漏洞,但有个薄弱环节却留了下来,让Hot Plug、Warm Reset和S3攻击有了可乘之机,关于它们,我们以后再讲。最后请大家思考一下,硬盘密码和Bitlocker两者各自的优缺点有哪些呢?文后的公众号有投票,大家可以参与一下。
欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。关注公众号,留言“资料”,有一些公开芯片资料供下载。
- 相关评论
- 我要评论
-