时至今日,互联网和物联网已经渗透到我们生活的点点滴滴,数据在其中的重要性不言而喻,一旦数据遭到恶意攻击,导致泄漏或篡改等,这两张网的安全性也就不复存在。因此,2015年重新颁布的《国家安全法》中第24、25条特别强调了数据安全要自主可控,而作为数据安全最重要环节之一的数据存储安全也就成为了业界关注的焦点。
硬盘是数据的栖息地,那么如何确保数据能安全的存储在硬盘上呢?众所周知,人们为防止自己家中财物被盗取,往往会在门上加上一把锁,没有钥匙就没办法入门,一样的道理,为了保护数据,可以对数据进行加密,只有拥有密钥的用户才能获取数据内容,这就是密码技术。
密码技术的核心是对信息按照一定的规则重新编码来保证信息的机密性,国际上已有一系列密码算法,而为了信息安全自主可控,我国商用密码局近年来也组织制定了一些自主研发的密码算法,包括SM1、SM2、SM3、SM4、SM7、SM9等。结合国家密码算法,从硬盘固件安全和数据安全两个方面出发,可以一定程度确保整个数据存储系统的安全。
下面先简述几种常用国密算法的基本原理和应用场景,再从固件安全和数据安全两个方面,详细介绍国密算法在对应安全节点的具体应用。
一系列国密算法中每个算法都有其独特的用途,有些用于大量数据的加解密,有些用于身份的认证,有些用于防止数据被篡改。这些算法的安全性经过大量的论证,并基于现代密码学的原理,逐步公开算法的具体实现,任何单位和个人都可以使用国密算法来保护自己的信息安全,其中应用最多最广的是SM2、SM3、SM4算法。
SM2算法是一种基于椭圆曲线的非对称密码算法,即使用私钥加密后的密文只能用对应公钥进行解密,反之使用公钥加密的密文也只能用对应的私钥进行解密。通过对私钥进行椭圆曲线运算可以生成公钥,而由于椭圆曲线的特点,知道公钥却很难反推出私钥,这就决定了SM2算法的安全性。SM2算法最常见的应用是进行身份认证,也就是我们熟知的数字签名与验签,通过私钥的私密性来实现身份的唯一性和合法性。
SM3算法是一种杂凑算法,任意长度的数据进过SM3算法后会生成长度固定为256bit的摘要。SM3算法的逆运算在数学上是不可实现的,即通过256bit的摘要无法反推出原数据的内容,因此在信息安全领域内常用SM3算法对信息的完整性进行度量。
SM4算法是一种对称密码算法,它以128bit为一组进行加解密。密钥也固定为128bit,使用某一密钥加密后的密文只能用该密钥解密出明文,故而称为对称加密。SM4算法采用32轮非线性迭代实现,加解密速度较快,常应用于大量数据的加密,保存在存储介质上的用户数据往往就使用SM4算法进行加密保护。
固件控制着整个存储系统的正常运行,倘若非法人员可以随意导入固件、修改固件,那么数据也将完全暴露,因此保护数据存储安全的首要一点就是要确保固件在导入、保存和执行过程中的安全。
在固件导入过程中使用SM2算法进行验签,其中用到的公钥保存在主控芯片内部,私钥由受信用的固件厂商保存。对于要导入的固件,需要使用私钥对其进行签名,将签名和固件一起导入到盘片,带有签名的固件下载到缓存RAM后,再用公钥进行SM2验签。只有使用合法私钥签名的固件才能通过验签,成功导入,没有签名或者使用非法私钥签名的固件无法通过验签而被丢弃。如此,拥有合法私钥的用户才拥有固件的导入权限,从源头上确保了盘片内部固件的合法性。
以固态硬盘为例,用户数据由主机写入到硬盘的流程如上图所示,虚线部分为国密算法在数据安全中的应用。若用户数据的明文直接保存在存储介质上,那么只要拿到存储数据的存储介质,就能以一定的途径获取到其中存储的用户数据,比如换上其它的主控芯片、对存储介质上的电平进行分析等。我们可以在数据读写路径上加上一道门锁——SM4加解密:数据由主机传输到缓存RAM的过程中,使用SM4 算法加密,写入到缓存上的就是密文,并最终以密文的形式保存在存储介质Flash上;读取数据时再解密出明文返回给主机。
以上所述的加密过程对用户是完全透明的,用户完全感知不到加解密过程的存在。为确保明文数据只对授权用户可见,需要对加解密数据的密钥——介质密钥(MKey)进行保护,将其与授权用户关联起来。一种简单的关联方式如下图所示,一方面使用SM3算法对用户口令进行杂凑生成口令摘要,保存口令摘要用于身份鉴权;另一方面,对用户口令进行派生构造加密密钥(EKey),对介质密钥进行加密保存。这个过程主要有以下三个方面:
创建——如上图所示,用户创建自己口令的同时,会生成取自口令摘要的加密密钥EKey和取自真随机数的介质密钥MKey;通过SM4算法将MKey用EKey加密;最终将口令摘要和MKey密文保存在Flash上。
鉴权——创建用户口令后再次上电,鉴权之前,由于无法获取MKey而使盘片处于锁定状态。鉴权的过程即时将输入的用户口令使用SM3算法进行杂凑得到一份摘要,再从Flash上加载出保存的口令摘要,两份摘要相同则认为用户身份合法,反之不同则不合法。
解锁——输入正确的用户口令,通过身份鉴权之后,才能构造出正确的EKey,解密出MKey明文,进而对读写的数据进行正常的加解密,实现盘片的解锁,如上图所示。
这个关联过程也叫做密钥管理过程,上面介绍的仅仅是一个基本思路,事实上在实际使用过程中,往往采用密钥多级加密方式,也往往会在这个过程中加入一些真随机数,来确保鉴权的有效性和介质密钥的私密性。
综上所述,对用户数据的直接保护也使用了两道门锁——一道是对数据的输入和输出加上SM4加解密,确保存储的用户数据是密文;另一道是对介质密钥加上SM3和SM4算法,确保介质密钥直接与可信用户关联,进而实现了用户数据明文只有可信用户唯一可见。
结语
SM2、SM3、SM4算法,从固件安全和数据安全两个维度,为数据存储安全建立了一道坚实的保护墙。将自主研发的国家商用密码算法应用到数据存储安全,是顺应了国产化需求的,也是实现数据安全自主可控道路上重要的一步。