我们先看看鸿蒙过的是什么的标准的EAL5+,从ST和证书中都能清楚发现,鸿蒙并不遵循任何PP,是按着CC进行检测认证的。
图5 鸿蒙ST,注意最后一行“this security target does not claim conformance to any PP”
这就有意思了。之前也说了,PP是对一类产品定义的评估标准,而鸿蒙声明并不遵循任何已有的PP,那么就意味华为认为鸿蒙是一个全新的产品,和市面上已经被录入规范的产品都不一样。因为是全新产品,所以遵循CC的方法论,自行定义资产,威胁,安全功能,这样的认证含金量显然要比使用PP的认证的低很多,毕竟PP是很多专家合作讨论数个月或者数年的结晶。
我们仔细分析鸿蒙的EAL5+的ST具体内容,然后和GP的PP进行对比,深入了解一下华为ST是怎么定义安全的。
不过在此之前,笔者还是要先简单介绍下CC的评估体系,为后面的解释做点铺垫。
CC评估准则,主要建立了一套评估安全的方法论,这个评估方法大致是如下图所示的样子。首先建立一个产品的安全评估模型,表明哪部分属于评估对象(TOE),哪部分不属于;然后需要对产品定义安全资产,这是最核心的部分,一切的安全评估都是为了保护安全资产的;接着定义安全问题,即安全资产可能遇到哪些威胁,目前安全资产所处的环境是什么,还需要假设一些前提条件;有了威胁,后面就是要定义安全目标,安全目标的实现可以抵御安全威胁;最后定义安全要求,实现了这些安全要求,就意味着安全目标达到了,安全要求包括安全功能和安全保障,这两部分如果都可以实现,那么最终就意味着产品是可以抵御威胁的,保证产品的资产安全。
那么我们再回到鸿蒙的ST文档上,看看笔者认为很讨巧的几个点。 1 鸿蒙的评估对象范围
鸿蒙的评估对象是完全的软件,不包括硬件和bootloader,如上面图2所示。这里就已经和GP_TEE的PP有了很大的区别,GP_TEE的PP规定的评估对象是包括部分的硬件资源的,因为GP的专家们知道,没有硬件安全基础的安全,是空中楼阁。 2 鸿蒙定义的威胁
鸿蒙只定义了两个威胁:T.UNAUTHORIZED
ACCESS和T.QUEUE SKIPPING,简单的说,一个是访问控制的威胁,一个是进程插队的威胁。偌大的一个操作系统只面临两类威胁,实在是不能理解中间的内涵。威胁也是CC体系中核心的存在,所有的安全功能,保障措施全部都是围绕着如何抵御威胁展开的,威胁越少,安全功能越好设计,举个通俗的例子,战国秦国面临的威胁只有东面从函谷关的攻击,只要守住这一个关卡,就能抵御六国的攻击,但是中原的战国韩国威胁来自四面八方,它需要保障安全的设计就会非常复杂。
GP_TEE的定义的威胁就很多,T.ABUSE_FUNCT、T.CLONE、T.FLASH_DUMP、T.IMPERSONATION、T.RAM 、T.ROGUE_CODE_EXECUTION、T.PERTURBATION、T.RNG、T.SPY、T.TEE_FIRMWARE_DOWNGRADE、T.ROLLBACK、
T.STORAGE_CORRUPTION、T.TA_PERSISTENT_TIME_ROLLBACK、T.ABUSE_DEBUG。威胁多,安全功能就更难设计,相应的所能达到的评估等级也就不容易太高。
这就是笔者认为,为什么鸿蒙能达到EAL5+的关键,华为使用了极其完备的安全设计,能抵御这两个威胁。但是问题来了,作为一个承载安全的操作系统,它真的不会受到来自物理攻击的威胁吗?内存有没有可能泄露机密信息?FLASH会不会被越权访问?随机数发生器会不会被篡改?其他的威胁到底是不是威胁?如何保障安全资产不受到其他威胁的破坏?这些问题,估计只有定义资产和威胁的人才清楚。 3 鸿蒙定义的假设
假设是产品安全的一个前置条件或者说是一个免责声明,举个例子,防盗门是安全的,这需要假设在和平环境下,破坏者只是平民;如果在战场上,破坏者是军队,那么这个防盗门是不可能安全的。
鸿蒙的假设是两个:A.TRUSTWORTHY
PERSONNEL、A.ENVIRONMENT和A.TRUSTED PROCESS,其中想说说第二个假设A.ENVIRONMENT,描述如下:
l The bootloader shall initialize the hardware so the TOE starts in a safe and secure state.
l The memory managed by the TOE, and the Kirin 970/980 SoC required by the TOE shall be protected in
confidentiality and integrity from the outside of the TOE.
l The bootloader and ARM Trusted Firmware shall be protected in integrity from the outside of the TOE.
简单理解就是鸿蒙安全,需要假设的条件是启动时bootloader要验证硬件以保证鸿蒙在安全状态,内存要被外部保证机密性和完整性,bootloader和防火墙也要被外部保障是完整的。
综上所述,华为对鸿蒙的评估对象范围上,排除了硬件和固件,威胁定义上只选择了两个威胁,排除了物理攻击,假设上又假设了固件是安全的,所以从安全评估的角度看,EAL5+的唯一难点,就剩下半形式化了。
4鸿蒙的EAL5+,是否可以说明其安全性比肩安全实体了?