【技术帖】数据存储安全与全方位防护

随着个人和企业越来越注重数据安全,通常重金购买各种安全产品,如防火墙,VPN,入侵防御系统,应用控制网关,各种杀毒软件等,希望构造一个全方位的安全办公应用环境,所有数据的产生、应用都在这样的安全环境里,从而保证数据的安全性。很多时候,数据的安全性已经远远大于设备本身的价值。但是,搭建这样的一套安全防护系统,我们的数据就真的安全了吗?

数据离不开存储,作为数据存储的最终载体硬盘,为数据提供最终的存储空间。所有需要永久性记录的数据,必须存放在像硬盘这样的永久性存储载体上。数据在硬盘上进行存储,那通过硬盘读写的数据可靠吗?安全吗?

硬盘结构与原理

硬盘目前市面上主要分为机械硬盘和固态硬盘(SSD),我们先来看看硬盘的原理和构造,如下图所示:

这是一个简化的硬盘结构图,机械硬盘和固态硬盘SSD具有相似的结构。由上图可以看出,硬盘内部其实还有一个小系统,有处理器,有ROM,有缓存RAM等。

其中,处理器运行固件,负责初始化周边模组,驱动周边模组完成命令和数据的处理以及传输控制等;缓存用于主机和存储介质之间进行数据中转使用;主机接口负责对接主机侧的命令协议和数据传输;ROM负责加载处理器提供存储服务的产品固件。

对于机械硬盘,产品固件可能存放在独立的I2C接口的EEPROM上,也可能存放在SPI接口的NOR Flash上;对于固态硬盘SSD,产品固件通常存放在NAND Flash上的系统区(由固件定义,用户不可见区域)。产品固件可能是在出厂时由硬盘厂商写好的,也可能是在后续的使用过程中,或者某个中间环节通过升级工具升级写入的。几乎所有的硬盘厂商,考虑修复软件bug等因素,都会提供升级功能。

硬盘上电时,处理器执行Boot ROM,Boot ROM再加载产品固件,然后将CPU控制权移交给产品固件。产品固件获取控制权过后,通过控制主机接口、DMA以及缓存资源等,来完成主机业务对数据的存取业务。由于产品固件存放于硬盘的系统区,运行于硬盘的内部小系统,这部分数据和处理独立于主机所在安全系统以外,不受任何安全措施监控。所以,数据如何处理,完全受控于产品固件本身,产品固件本身的可靠性和安全性,在很大程度上决定了数据的可靠性和安全性。

那么,问题来了,我们的产品固件是否安全?如果不安全,如何保证安全?

固件与安全

硬盘制造商在发布固件时,有的厂家为了简化处理,只简单在固件头部写入部分厂家标识和版本标识,方便在后续的生产和升级场景进行识别;有的做的多一点,在前面的基础上还对固件进行了CRC校验,检查固件数据的完整性。前者可以识别是否是自己固件以及对应版本号,后者则可以进一步看出固件在传输过程中是否发生了变化。

这些手段在大部分应用下已经可以满足需要,但无法防备带有恶意目的的特殊用户对固件进行针对性的修改(hacker行为),注入恶意软件代码,然后再重新计算出新的CRC来伪装成合法的固件。这种经过伪装的固件,可以在硬盘流通和使用的各个环节通过升级方式写入,并在重新使用时驻扎硬盘内部小系统,且完全不被任何安全措施发现。

如果这种带有恶意代码的固件接管硬盘的内部小系统,那么接下来,他可以做更多可怕的事情。比如识别并截取BIOS加载loader的读命令,返回感染的loader数据。如果bios加载了受感染的loader,并将CPU控制权交给这种loader,那么接下来就可以做更多攻击行为,如截取密码等。且这种感染的loader非常隐蔽(不在硬盘用户可见区),在系统启动阶段即被激活,可无限次复活,危害性巨大。

这种恶意固件还可通过检测固定特征或地址的读写数据内容,截取并修改内容;或者记录内容,将其写入系统不可见区,等待合适时候获取记录内容等各种非法行为。

这种直接对硬盘固件的攻击行为,隐蔽性高,不易发现,但却危害巨大,曾经被著名的“方程式组织”所采用,攻击了多个硬盘厂商的硬盘,覆盖包括中国、俄罗斯、英国等在内的30多个国家。

其实,这种攻击很容易防范,因为非法固件一定要下载到硬盘内部,且被内部的ROM加载过后才可运行。硬盘厂商完全可以在生产、升级以及ROM加载阶段,通过对固件进行合法性检测,来杜绝非法固件下载并获取到CPU的控制权。如版本发布时对固件进行签名,生产和升级时硬盘对下载的固件进行验签,ROM加载时也验签整个固件。所有操作都保证固件真正合法,理论上就杜绝所有恶意目的恶意行为。

如果固件是合法安全的固件,是否数据在所有场景下就安全了呢?

合法安全的固件让硬盘处于一个安全的运行环境。但我们平时使用时,通常一个环境被多个人使用,或者需要经常移动硬盘接入多个不同的主机环境,这样的应用场景下,数据是否安全?

数据安全

用户存放在硬盘上的数据,由于内容不同,可能对用户的重要性也不尽相同。如何保证访问特定数据内容的用户一定是真正对应的合法用户?你可能首先想到这个可以由系统来保证,和硬盘没有关系。那么,再加上一条,如果这个硬盘是一块移动硬盘呢?在一些特殊的应用场景下,我们的移动硬盘可能会在多个不同安全环境下进行接入。如何从存储的角度来保证数据访问的用户是被授权的用户?

如果将数据访问与用户权限进行一对一绑定,在用户访问特定范围数据时,需要得到对应区间授权,硬盘按照区间范围对用户鉴权成功过后,才被允许数据访问,那么这种访问方式,无疑将满足最大可能性的数据访问安全。

更进一步,不同区间的数据使用不同的密钥对数据加密存储,加密密钥必须与对应区间的授权码有绑定关系,只有正确的授权码才能解开对应数据区的加密密钥,通过这样的一种方式,数据将得到最大安全保障。

固件安全保证生产、升级时只有合法的固件才能下载到硬盘;数据安全保证硬盘使用过程当中,只有得到数据访问授权的用户,才能访问对应区域的重要数据,保证访问合法性。那么,硬盘淘汰过后的数据如何保证数据不被非法访问呢?

数据销毁

硬盘因为容量、性能、可靠性等原因,可能面临升级换代或淘汰。但通常这种淘汰下来的硬盘有很大可能性被重新流通使用或者被存有恶意目的用户非法获取,且这种硬盘上通常可能有容易被我们忽略的重要数据和信息。

一般的做法可能是,格式化整个硬盘,或杜绝这类硬盘进行再次流通,统一物理销毁。但这样的方法前者比较耗时,且不一定真正的删除了硬盘上的数据;后者虽可真正销毁,但增加成本。

有没有一种办法,成本低,能够快速销毁硬盘上的数据,且销毁后理论上无法再次恢复数据?答案当然是肯定的,且当前有些做得好的硬盘厂商已经支持,目前国科微的SSD硬盘方案已具有这种功能,这就是硬盘的安全擦除。

所有支持安全擦除功能的硬盘,其上的数据都是经过符合行业或国家认可的加密算法进行加密存储的。当需要进行数据销毁时,我们只需要向硬盘发送一个安全擦除命令,硬盘收到命令后对数据加密的密钥进行销毁。一旦数据的加密密钥被销毁,硬盘上存放的密文数据再也无法恢复回来。

当然,这种用于数据加密的密钥,一定是不同硬盘唯一的,甚至同一硬盘不同区域唯一的,且是随机产生的,存储的方式必须也是以密文方式存放,这样就可以保证密钥的唯一性和不可复制。一旦密钥被销毁,那么技术上无法找到恢复的可能性。

只有真正的从生产、流通、应用和回收等各个环节,针对固件安全、数据安全、数据销毁等场景都做了安全设计的硬盘,才算是真正的安全存储产品。一套安全解决方案只有在各个节点和环节都使用进行了安全设计的产品,才能说是真正的安全解决方案,才是一个能够全方位防护的安全解决方案。

(来源:国科微电子股份有限公司)