声明:版权归原作者所有,如有侵权请联系删除。
本章主要对标准与认证做概要性介绍,帮助开发人员了解:
- 开产品开发中,需要遵循的各种标准
- 在产品初步开发完成后,需要推向市场时,应该通过什么样的信息安全认证
7.1 标准概论
标准其实就是一些规范文件。
标准可以来做什么?标准的最大特点是可以反复使用,而且达到通过标准,能获得一致性结果。
遵循标准对安全有什么价值?不遵循安全标准,基本上等于不安全。举个栗子,在 STM32 加密库中,看到 RSA PKCS 1.5 的函数名称,而不是直接的 RSA 运算。这是因为 RSA 算法的基本原理只是给我们展现了教科书级别的算法。在实际应用中,如果直接使用,非常容易受到攻击。例如,假设我们所有人的公钥指数都选为 3,虽然模数 n 不同,私钥指数是不同的。但是如果没有按照 RSA PKCS1.5 进行填充,那么根据中国余数定理,如果同一内容多方加密后,攻击,可以在不知道私钥指数的情况下,将明文恢复。这是所谓的广播攻击。而如果遵循了 RSA PKCS 1.5 的随机填充要求,这个攻击就无法奏效。这是我们需要 PKCS1.5 的原因。当然这些年随着攻击防护研究的深入,PKCS1.5 标准也正在更新换代中。
所以安全技术开发中有一个非常重要的原则:要遵循标准。很多公司都规定要使用公开的算法,要用公开的标准。在做安全开发时,一定要记住:不可随随便便搞发明创新,否则极有可能给系统留下安全漏洞。当然,在遵循算法标准的情况下,可以在实现算法的过程中加入更多的防护。
7.2 与安全有关的标准
当谈论标准时,通常涉及两类标准。
大类标准,例如 FIPS(美国联邦信息处理标准),再如国密 SM(商用密码)
-
一些具体的算法或者协议标准,该类内容很多,这里只谈STM32 用户开发中常用的。
- 加密:DES、AES、RSA。DES已经认为不安全,应该被AES取代
- 单向散列函数:MD5,SHA1,SHA2,SHA3。MD5已经被攻破,SHA1不推荐使用。
- 消息认证码:含有 HAMC 以及以及 AES 算法的消息认证码
- 数字签名: RSA PKCS1.5、椭圆曲线 ECDSA
- 公钥体系基础架构:X.509,常用的数字证书就是 X.509 标准定义的
除了这些国际算法标准,中国也有相应的国家密码标准,称之为国密。如 SM1 为对称密钥,其加密强度与 AES 相当;SM2 为非对称加密,基于椭圆曲线 ECC;SM3 摘要消息;SM4 是一个对称密钥算法。
通讯安全标准也是有标准,如 TLS。
处理信息安全的时候会发现,基本上天天需要和这些已经标准化的算法与协议打交道。
7.3 认证概论
通用控制器目前信息安全强制认证并不常见。但是如果所销售的产品所在行业已经有国家强制性标准,比如要销售给美国政府的事业单位,则认证是必不可少的步骤。还有一些客户是基于风险所考虑的。不同的国家有不同的法律要求,如果因为安全的原因,例如用户个人信息泄露,而导致制造商分销商被起诉,则有可能面临巨额赔偿。而认证可以降低该风险,甚至免除责任。最后一种则是客户为了提高客户满意度,提高产品区分度,所通过的一些认证。
如果打算去做认证,那么在做产品计划的时候,就需要认真考量时间和费用这两点。很多产品认证,一方面需要的时间很长,半年甚至一年;另一方面,认证的费用也很高,百万级别的费用并不少见。
有时候产品认证的范围,不仅仅是送测的产品。整个公司的研发,生产环境以及公司的产品制造流程都可能在认证范围之内。
7.4 认证流程
认证实验室和颁发证书的认证机构主体通常不是同一个。
为了通过认证,一般需要提交文档、源代码、产品样片。认证测试很多时候价格不菲,而且按次收费。为了通过认证,就要选用正确的芯片与软件开发包。STM32 与 STM32 加密库在这个时候就可以发挥作用。
认证实验室或者受委托机构,会对你提交的文档、代码进行审查,同时进行产品安全测试。如果认证标准需要评估管理体系生成流程,则认证机构会组织对提交材料的单位进行现场审查。
文档审查、产品测试以及现场审查都符合标准,则由认证实验室或者受委托机构提交一份评估报告。
认证主管机构认可评估报告,会颁发相应证书。证书一般都是有期限的。
收到证书后,认证进入维护阶段。若产品发生变化,则可能需要提交产品更改申请。若产品到期,则要考虑是否重新延展认证书年限。同时,认证管理机构会定期对获得证书的单位进行监督审查。
当然,有些认证可能只需要提交问卷或者提交自测试的结果就可以了。那样的话会比较简单,但前提是认证机构相信这个自测试结果。
7.5 NIST FIPS 140
NIST FIPS 140 是美国国家强制的标准,该标准是美国 NIST 联合加拿大制定的,在英国等其他国家也得到承认。当前版本是 FIPS-140 2。NIST 创建了 CMVP 来认证加密模块是否达到了 FIPS140 的要求。不符合该标准的产品无法进入美国政府的采购列表。产品一旦符合它的规定,并得到认证,就已达到了美国和加拿大公共机构的安全标准,可以向美国和加拿大出口。这个认证分为两部分,CAVP 密码算法验证体系,以及 CMVP 密码模块验证体系。CAVP 密码算法验证体系是 CMVP 的先决条件。
FIPS-140 2 具有 4 个等级:
- 等级1. 通常用于软件加密产品
- 等级2. 要求基于角色的认证,具备记录物理篡改的能力(篡改取证)
- 等级3. 增加物理篡改预防的措施
- 等级4. 包含高级防篡改的功能。针对产品运行在不受保护的物理环境中。任何方向的攻击都可以大概率被检测到,然后导致明文数据被擦除。
FIPS-140 认证过程时间长,成本高。如果产品通过了 CMVP 认证,获得 FIPS-140 认证证书,可在产品中加入 FIPS-140 2 inside 等标志。
7.6 STM32 的 CAVP 认证
STM32 加密库为了减轻客户 FIPS-140 产品认证工作,提供通过 CAVP 认证的加密库 XCUBE-CRYPTOLIB。
STM32 的 CAVP 认证包括以下内容:
- 对于 Hash 和 HMAC算法:
- SHA-1、SHA-224、SHA-256、SHA-384、SHA-512
- HMAC-SHA-1、HMAC-SHA2-224、HMAC-SHA2-256、HMAC-SHA2-384、HMAC-SHA2-512
- 对于对称密钥 AES 算法,STM32 AES-CBC、AES-CCM、AES-CFB128、AES-CMAC、AES-CTR、AES-ECB、AES-GCM、AES-KW、AES-OFB、AES-XTS
- 对于随机数,STM32 DRBG
- 对于RSA公钥算法,STM32 RSA PKCS 1.5 通过了认证,可以用来签名和验证签名。
- 对于椭圆曲线 ECC 公钥算法,STM32 ECDSA 密钥生成、密钥验证、签名生成、签名认证