STM32保“密”诀窍,你都造吗?

信息安全 | STM32保“密”诀窍,你都造吗?

万物互联畅想下,如何应对安全挑战?

物联网(IoT)作为数字化转型浪潮最热门的科技风口或发展方向,全景融合了嵌入式技术、网络技术、感知技术、通信技术和信息安全技术等于一身,成为智能家居、可穿戴、工业物联网、智能城市、自动驾驶汽车等应用场景背后的核心技术支撑。随着接入设备的指数级增长,我们在体验了设备之间实现有效通信、自动化、大幅节省时间和成本等便捷后,而另一面指数级升级的“安全威胁“,也逐步成为物联网(IoT)未来最关键的挑战,诸如物联网用户受到网络攻击和身份盗用的隐私问题,老旧物联网设备的加解密技术带来的安全漏洞等等。


1、什么是安全?

在英语中,安全一词有两种不同的定义:Safety, 通常指功能安全 Functional Safety,即保护系统不受那些随机故障的影响,功能安全的失效通常造成对人身和环境的破坏及威胁;另一个

Security,强调信息安全 Information Security,保护资产不受恶意威胁而遭受损失。


在信息安全的框架下,我们提到资产,就是指一切我们认为有价值的对象;我们要保护资产,有安全的考量,说明资产有弱点,也叫漏洞,也就是系统的脆弱性;威胁,就是利用资产的弱点来破坏系统运行的一系列行为,令资产价值损失,让恶意第三方获益。资产、弱点、威胁构成了资产弱点威胁模型。当我们谈信息安全时,首先要甄别需要保护的资产是什么?明确了这一点,才可能针对有风险的系统弱点来制定安全方案、采取安全措施。

根据安全应用的不同,要保护的资产(或者叫属性/property)也有所不同。与STM32应用领域相关的信息安全保护,就是保护完整可靠的数据,仅能被授权访问


信息安全有三个基本要素:C.I.A,Confidentiality =保密;Integrity =完整;Availability =可用。

保密性,通俗讲就是一般人不可知晓。它的另一层意思就是:只有被授权的主体才知道信息的内容。

完整性,Integrity。信息的完整性,要分成两个方面来理解,狭义的完整, 就是信息本身没有被修改被破坏;广义的完整性,还包括该信息的来源方是可靠的。举个例子,有人盗取了别人的身份证,然后号称这是他。这个身份证本身是完整的,真正的身份证,符合狭义完整性;但这个身份证不是这个人的。这就不具有广义的信息完整性。

可用性,表示被授权的主体,在需要的时候可以访问到信息或者服务。

信息安全 | STM32保“密”诀窍,你都造吗?

▲ 信息安全三要素

信息安全有三大工具标识(Identity)、认证(authentication)和授权(authorization)。标识,用来表明主体的身份,由主体提出,可能是真,可能是假,需要认证;认证,用于核实声称的内容,常用方法有询问你知道的一些事情,你的身份证件,或者你独有的特征;对标识的认证完成后,就要授权该标识所代表的主体可以访问的资源,和可以实施的行为。

那么,问题来了,信息安全的三大工具是如何支持信息安全三要素的?

信息安全 | STM32保“密”诀窍,你都造吗?

▲ 信息安全三要素 VS. 工具

机密性,表示信息不能被未授权的主体获得。有主体,就有标识,有标识就需要认证;然后能访问和不能访问,就是授权的不同。

完整性,表示信息被未授权的主体修改后能被立即识别。广义的消息完整性还要保证信息来源的可靠,即主体可靠。那么自然也就需要标志,和认证。

可用性,表示被授权的主体,在需要的时候能够访问到信息。自然也是有主体,就有认证,然后授权他可以使用某种服务或者访问某种资源,比如信息。


2、安全,贯穿产品的整个生命周期

理解安全的定义、信息安全三要素和三大工具后,我们认识到要做好信息安全保护,需要建立安全分析模型,基本思路就是基于对主体的资产弱点威胁分析,列出所有资产,理解相关威胁,思考相关弱点,然后策划对应的保护措施

。我们要理解,资产是安全第一关注的对象;认识安全风险来自资产、弱点、威胁的交集;运用安全与资产、弱点、威胁的依赖关系,设计对应的保护措施。

作为开发者,我们一定要建立体系化的安全思维:安全绝不是一个点,它是一个整体概念,不仅是系统上的整体,还是时间跨度上的整体。安全思维需要贯穿产品的整个生命周期,从功能定义,设计,开发,测试;到生产制造、传输,部署,以及使用寿命内的产品维护。


安全分析举例:一个安全的家

信息安全 | STM32保“密”诀窍,你都造吗?

信息安全 | STM32保“密”诀窍,你都造吗?

安全是一个系统的设计和部署,它的安全性取决于整个系统中所有环节里的最短板,必须通盘考虑。不是一个加密算法,一个安全芯片就可以简单解决的。


3、应该学一点密码学

密码学的应用是基于一个需要保护的场景或者说模型。那么为了通讯安全或者设备安全,我们会采用各种各样的密码,密码的背后是加解密技术。 加解密技术说白了就是变换,加密变换和它的反变换 --- 解密变换。

加解密技术也有三个属性,也叫 CIA,保密性,完整性以及可认证性。注意,加解密技术的A是指Authentication,与信息安全三要素CIA中的可用性 A (Availability) 不一样。


加解密技术提供的服务就是传输机密数据(Confidentiality),校验数据完整性(Integrity)和身份认证(Authentication)。我们通过加解密的过程来理解:

信息安全 | STM32保“密”诀窍,你都造吗?

▲ 加解密过程

  • 能够提供保密服务的算法有对称加解密技术和非对称加解密技术,实现机密数据传输;
  • 能够提供狭义完整性服务的算法有哈希(单向散列)函数,校验数据完整性;
  • 能够提供认证鉴别类服务有基于非对称密钥技术的数字签名技术,以及基于对称密钥的技术的消息验证码 MAC。

加解密技术确实很难,但我们不去发明算法,也不去尝试攻击和破解现有算法,我们只是去使用它;而且现在很多加解密库已经对上封装的很好,我们只要理解了密码学基本原理,熟悉了加解密库的API接口,就可以比较方便的使用它了。


4、STM32的安全特性

信息安全 | STM32保“密”诀窍,你都造吗?

▲ STM32现有安全特性全景图

如上图,STM32安全特性涵盖硬件、软件例程、软件工具,以及用于解决安全生产或者说安全固件烧录的整套服务,SFI(安全固件安装)。


蓝色部分代表硬件,包括存储与执行保护模块、芯片UID、外部监测模块和加解密模块。

  • 存储与执行保护模块:包括读保护RDP、写保护WRP、私有代码保护PCROP、唯一启动入口UBE、安全用户闪存、MPU、防火墙firmware;最新的产品系列L5中,还有TrustZone安全隔离功能,区分可信代码和非可信代码。
  • 芯片UID(unique ID):是ST提供给每个STM32芯片的唯一ID号,出厂前就写在了片上闪存的系统flash,它与安全不直接相关,但会在安全相关应用中用到;
  • 外部监测模块:如看门狗,Tamper外部入侵检查;
  • 加解密模块:包括真随机数产生器 TRNG、对称加解密加速器 AES、对称加解密加速器 Crypto、哈希模块 HASH、非对称加解密加速器 PKA。

灰色部分是软件例程包

  • 基于存储与执行保护模块的各个例程
  • 加解密库,一方面有基于下面加解密硬件模块的实现,也有仅依赖于Cortex-M内核的软件实现。
  • SBSFU安全包,是结合了基本所有硬件模块和加解密技术的应用,实现了安全启动和安全升级。SBSFU是由ST开发的,针对嵌入式领域安全启动和安全升级的免费开源参考实现。开发者可按需裁剪,集成到自己的应用中;或者参考它,做自己的实现。
  • 来自ARM的开源协议栈mbedTLS,集成在带以太网IP的STM32系列的Cube包中。

安全固件安装(SFI:Secure Firmware Install)用于解决安全生产或者说安全固件烧录的整套服务,HSM是一个硬件,帮助SFI服务的实施。安装,就是指在空片上烧录初始版本的应用固件,通常发生在产线上。SFI适用于OEM把一批次的STM32和自己开发好的固件给到第三方或者不可信的产线去烧录时,解决OEM对产线安全方面的顾虑;比如,OEM开发的固件会有私密性要求,防止知识产权泄露;另外,OEM可以控制固件烧录的次数,规避品牌资产带来风险。

作为STM32生态系统的一部分,STM32CubeProgrammer和TrustPackageCreator 是学习和操作SBSFU需要用到的软件工具。CubeProgrammer是STLINKUtility的继承者,主要用来烧写、读取、擦除STM32片上闪存以及选项字节;TrustPackageCreator专门服务于安全应用,SBSFU和SFI都会用到,TrustPackageCreator没有单独的下载包,它的GUI和命令行版本的程序,都是在CubeProgrammer的安装目录下。


分享到:


相關文章: