你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
STMCU-管管 发布时间:2020-3-26 13:31
11.jpg

) m: X! h) Z) ^# `; U+ T
万物互联畅想下,如何应对安全挑战?
. @4 y+ v7 p1 ?9 D  O, b0 l4 t6 V
物联网(IoT)作为数字化转型浪潮最热门的科技风口或发展方向,全景融合了嵌入式技术、网络技术、感知技术、通信技术和信息安全技术等于一身,成为智能家居、可穿戴、工业物联网、智能城市、自动驾驶汽车等应用场景背后的核心技术支撑。随着接入设备的指数级增长,我们在体验了设备之间实现有效通信、自动化、大幅节省时间和成本等便捷后,而另一面指数级升级的“安全威胁“,也逐步成为物联网(IoT)未来最关键的挑战,诸如物联网用户受到网络攻击和身份盗用的隐私问题,老旧物联网设备的加解密技术带来的安全漏洞等等。
1 c. ~0 B; q3 m
1 什么是安全?
在英语中,安全一词有两种不同的定义:Safety, 通常指功能安全 Functional Safety,即保护系统不受那些随机故障的影响,功能安全的失效通常造成对人身和环境的破坏及威胁;另一个 Security,强调信息安全 Information Security,保护资产不受恶意威胁而遭受损失。
在信息安全的框架下,我们提到资产,就是指一切我们认为有价值的对象;我们要保护资产,有安全的考量,说明资产有弱点,也叫漏洞,也就是系统的脆弱性;威胁,就是利用资产的弱点来破坏系统运行的一系列行为,令资产价值损失,让恶意第三方获益。资产、弱点、威胁构成了资产弱点威胁模型。当我们谈信息安全时,首先要甄别需要保护的资产是什么?明确了这一点,才可能针对有风险的系统弱点来制定安全方案、采取安全措施。
根据安全应用的不同,要保护的资产(或者叫属性/property)也有所不同。与STM32应用领域相关的信息安全保护,就是保护完整可靠的数据,仅能被授权访问。
1 o( p0 ^+ u: b! |; F  z3 Y
信息安全有三个基本要素:C.I.A,Confidentiality=保密;Integrity =完整;Availability=可用。
3 b) H% A# p: G5 i
保密性,通俗讲就是一般人不可知晓。它的另一层意思就是:只有被授权的主体才知道信息的内容。
完整性,Integrity。信息的完整性,要分成两个方面来理解,狭义的完整,就是信息本身没有被修改被破坏;广义的完整性,还包括该信息的来源方是可靠的。举个例子,有人盗取了别人的身份证,然后号称这是他。这个身份证本身是完整的,真正的身份证,符合狭义完整性;但这个身份证不是这个人的。这就不具有广义的信息完整性。
可用性,表示被授权的主体,在需要的时候可以访问到信息或者服务。
  j6 U9 F$ F1 y& h
22.jpg
信息安全三要素
. I, M! R: ^, P' P9 u, ]
信息安全有三大工具,标识(Identity)、认证(authentication)和授权(authorization)。标识,用来表明主体的身份,由主体提出,可能是真,可能是假,需要认证;认证,用于核实声称的内容,常用方法有询问你知道的一些事情,你的身份证件,或者你独有的特征;对标识的认证完成后,就要授权该标识所代表的主体可以访问的资源,和可以实施的行为。

# _) @  P- R! o5 O  F
那么,问题来了,信息安全的三大工具是如何支持信息安全三要素的?

' w3 l: S/ [  k; ^% d' [
33.png
信息安全三要素 VS. 工具

. V( X8 h, F2 `( O5 A# n* A- O
机密性,表示信息不能被未授权的主体获得。有主体,就有标识,有标识就需要认证;然后能访问和不能访问,就是授权的不同。
完整性,表示信息被未授权的主体修改后能被立即识别。广义的消息完整性还要保证信息来源的可靠,即主体可靠。那么自然也就需要标志,和认证。
可用性,表示被授权的主体,在需要的时候能够访问到信息。自然也是有主体,就有认证,然后授权他可以使用某种服务或者访问某种资源,比如信息。

2 Y- i; \. C$ f. v: r. H' G
2 安全,贯穿产品的整个生命周期

1 }! W3 b, g3 M& v: n5 W
理解安全的定义、信息安全三要素和三大工具后,我们认识到要做好信息安全保护,需要建立安全分析模型,基本思路就是基于对主体的资产弱点威胁分析,列出所有资产,理解相关威胁,思考相关弱点,然后策划对应的保护措施。我们要理解,资产是安全第一关注的对象;认识安全风险来自资产、弱点、威胁的交集;运用安全与资产、弱点、威胁的依赖关系,设计对应的保护措施。
作为开发者,我们一定要建立体系化的安全思维:安全绝不是一个点,它是一个整体概念,不仅是系统上的整体,还是时间跨度上的整体。安全思维需要贯穿产品的整个生命周期,从功能定义,设计,开发,测试;到生产制造、传输,部署,以及使用寿命内的产品维护。
6 ~4 d3 N1 \4 v  E% z/ f
44.jpg
安全分析举例:一个安全的家
- o! ~2 X2 B1 v# F
55.jpg

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

- ]0 x' ~" a% M: d9 G! h3 k
3 应该学一点密码学

+ M: u' L$ y4 L% f5 o
密码学的应用是基于一个需要保护的场景或者说模型。那么为了通讯安全或者设备安全,我们会采用各种各样的密码,密码的背后是加解密技术。加解密技术说白了就是变换,加密变换和它的反变换 --- 解密变换。加解密技术也有三个属性,也叫 CIA,保密性,完整性以及可认证性。注意,加解密技术的A是指Authentication,与信息安全三要素CIA中的可用性 A (Availability) 不一样。
加解密技术提供的服务就是传输机密数据(Confidentiality),校验数据完整性(Integrity)和身份认证(Authentication)。我们通过加解密的过程来理解:

) n+ ?9 o. W- f9 ^1 B, J& |# n# N. J
66.png
加解密过程

/ g7 ]6 n  S, J  b2 _
·  能够提供保密服务的算法有对称加解密技术和非对称加解密技术,实现机密数据传输;
·  能够提供狭义完整性服务的算法有哈希(单向散列)函数,校验数据完整性;
·  能够提供认证鉴别类服务有基于非对称密钥技术的数字签名技术,以及基于对称密钥的技术的消息验证码 MAC。
·  加解密技术确实很难,但我们不去发明算法,也不去尝试攻击和破解现有算法,我们只是去使用它;而且现在很多加解密库已经对上封装的很好,我们只要理解了密码学基本原理,熟悉了加解密库的API接口,就可以比较方便的使用它了。
! {$ Z0 J7 c' k
4 STM32的安全特性
( V0 }4 G* A$ Z% e+ I+ {1 O
77.jpg
STM32现有安全特性全景图
; b7 J5 E$ P2 q( D/ q8 c
如上图,STM32安全特性涵盖硬件、软件例程、软件工具,以及用于解决安全生产或者说安全固件烧录的整套服务,SFI(安全固件安装)。
8 a8 B" ]! v: h5 J
蓝色部分代表硬件,包括存储与执行保护模块、芯片UID、外部监测模块和加解密模块。
·  存储与执行保护模块:包括读保护RDP、写保护WRP、私有代码保护PCROP、唯一启动入口UBE、安全用户闪存、MPU、防火墙firmware;最新的产品系列L5中,还有TrustZone安全隔离功能,区分可信代码和非可信代码。
·  芯片UID(unique ID):是ST提供给每个STM32芯片的唯一ID号,出厂前就写在了片上闪存的系统flash,它与安全不直接相关,但会在安全相关应用中用到;
·  外部监测模块:如看门狗,Tamper外部入侵检查;
·  加解密模块:包括真随机数产生器 TRNG、对称加解密加速器 AES、对称加解密加速器 Crypto、哈希模块 HASH、非对称加解密加速器 PKA。
7 {% K/ x' h9 c* }! ]# i6 Y" y
灰色部分是软件例程包:
基于存储与执行保护模块的各个例程
加解密库,一方面有基于下面加解密硬件模块的实现,也有仅依赖于Cortex-M内核的软件实现。
SBSFU安全包,是结合了基本所有硬件模块和加解密技术的应用,实现了安全启动和安全升级。SBSFU是由ST开发的,针对嵌入式领域安全启动和安全升级的免费开源参考实现。开发者可按需裁剪,集成到自己的应用中;或者参考它,做自己的实现。
来自ARM的开源协议栈mbedTLS,集成在带以太网IP的STM32系列的Cube包中。
安全固件安装(SFI:SecureFirmware Install)用于解决安全生产或者说安全固件烧录的整套服务,HSM是一个硬件,帮助SFI服务的实施。安装,就是指在空片上烧录初始版本的应用固件,通常发生在产线上。SFI适用于OEM把一批次的STM32和自己开发好的固件给到第三方或者不可信的产线去烧录时,解决OEM对产线安全方面的顾虑;比如,OEM开发的固件会有私密性要求,防止知识产权泄露;另外,OEM可以控制固件烧录的次数,规避品牌资产带来风险。

! m8 Y: L2 U, \( M/ J& w; o
作为STM32生态系统的一部分,STM32CubeProgrammer和TrustPackageCreator 是学习和操作SBSFU需要用到的软件工具。CubeProgrammer是STLINKUtility的继承者,主要用来烧写、读取、擦除STM32片上闪存以及选项字节;TrustPackageCreator专门服务于安全应用,SBSFU和SFI都会用到,TrustPackageCreator没有单独的下载包,它的GUI和命令行版本的程序,都是在CubeProgrammer的安装目录下。
$ ?% u% f# F* z: n. `

* i* R% t7 S1 T$ E6 V1 n) h- o9 G4 V) Z4 P( c
收藏 评论3 发布时间:2020-3-26 13:31

举报

3个回答
- 璀璨。 回答时间:2020-3-26 16:58:20
这个好,保密很有用
baobo 回答时间:2020-3-27 06:59:29
签到
sumoon 回答时间:2020-3-27 10:23:16
提示: 作者被禁止或删除 内容自动屏蔽

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版