今天我们讨论密码模块的软固件安全。总的来说,在密码模块全部11个域中,软固件安全是最容易理解,最容易掌握的一部分。
定义
在0028标准规范中,并没有给出软固件安全的定义,这里作者结合实际经验给出如下定义:对于密码模块边界内的所有软件、固件,密码模块应当对其进行完整性保护,确保软件固件安全可靠,没有被未经授权的篡改,软固件完整性保护的技术应是基于密码技术。
技术原理
软固件安全基于密码技术实现,我们都知道,密码技术的三个特性机密性、完整性、抗抵赖。总的来说,完整性鉴别技术包含两大类,一是基于密钥的消息鉴别码,另一种是不基于密钥的方法。
对于密码模块安全等级第一级,一般使用SM3算法计算杂凑值就可以满足标准规范要求,也就是说,密码模块一级通常使用不基于密钥的方法。
对于密码模块二级及以上模块,必须使用基于密钥的消息鉴别码;从密码算法的角度,可以使用对称、非对称、杂凑。对称算法一般是计算软固件的MAC值,例如SM4_MAC;杂凑算法一般可以使用HMAC模式,比如SM3-HMAC;非对称算法一般是计算签名值。
完整性保护实现
我们以一级软件密码模块为例,给出一个完整性保护的实例。软件在上架发布时会使用SM3算法计算软件的杂凑值,并同软件一同发布。每次软件启动时,计算软件密码模块的杂凑值,并将计算得到的杂凑值与密码模块发行时的杂凑值进行比较,比较一致则说明软件件完整性未受到破坏。
以上关于软固件安全的描述,仅供参考,也可私信作者进一步深入沟通,微信号:TYNNNL。