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

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

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

( b( a1 F9 ]8 Z- y" j8 G. X* r" e2 L
万物互联畅想下,如何应对安全挑战?

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

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

$ p& c# ]. U6 z) E* L
那么,问题来了,信息安全的三大工具是如何支持信息安全三要素的?

" {1 z& I8 X5 N, T/ `) j
33.png
信息安全三要素 VS. 工具
4 k5 @1 h( J- y! I6 K4 s5 o7 m
机密性,表示信息不能被未授权的主体获得。有主体,就有标识,有标识就需要认证;然后能访问和不能访问,就是授权的不同。
完整性,表示信息被未授权的主体修改后能被立即识别。广义的消息完整性还要保证信息来源的可靠,即主体可靠。那么自然也就需要标志,和认证。
可用性,表示被授权的主体,在需要的时候能够访问到信息。自然也是有主体,就有认证,然后授权他可以使用某种服务或者访问某种资源,比如信息。

& ]! @) n! U) `3 B6 |3 L2 q
2 安全,贯穿产品的整个生命周期
2 i; i# W/ D5 B8 z/ X  o6 [# W
理解安全的定义、信息安全三要素和三大工具后,我们认识到要做好信息安全保护,需要建立安全分析模型,基本思路就是基于对主体的资产弱点威胁分析,列出所有资产,理解相关威胁,思考相关弱点,然后策划对应的保护措施。我们要理解,资产是安全第一关注的对象;认识安全风险来自资产、弱点、威胁的交集;运用安全与资产、弱点、威胁的依赖关系,设计对应的保护措施。
作为开发者,我们一定要建立体系化的安全思维:安全绝不是一个点,它是一个整体概念,不仅是系统上的整体,还是时间跨度上的整体。安全思维需要贯穿产品的整个生命周期,从功能定义,设计,开发,测试;到生产制造、传输,部署,以及使用寿命内的产品维护。
" ]# n3 l( l# Z/ t
44.jpg
安全分析举例:一个安全的家

6 ]$ f  @" i4 _( g, g, _
55.jpg

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

7 D6 ?) ~. d8 ?, e5 J
3 应该学一点密码学

# p- ?4 ?; Q3 y; g/ b3 l& q6 K6 b
密码学的应用是基于一个需要保护的场景或者说模型。那么为了通讯安全或者设备安全,我们会采用各种各样的密码,密码的背后是加解密技术。加解密技术说白了就是变换,加密变换和它的反变换 --- 解密变换。加解密技术也有三个属性,也叫 CIA,保密性,完整性以及可认证性。注意,加解密技术的A是指Authentication,与信息安全三要素CIA中的可用性 A (Availability) 不一样。
加解密技术提供的服务就是传输机密数据(Confidentiality),校验数据完整性(Integrity)和身份认证(Authentication)。我们通过加解密的过程来理解:
! x( Z; \7 v% }4 n( R/ X9 P
66.png
加解密过程
1 D5 ^1 P0 {9 \$ @1 T/ {
·  能够提供保密服务的算法有对称加解密技术和非对称加解密技术,实现机密数据传输;
·  能够提供狭义完整性服务的算法有哈希(单向散列)函数,校验数据完整性;
·  能够提供认证鉴别类服务有基于非对称密钥技术的数字签名技术,以及基于对称密钥的技术的消息验证码 MAC。
·  加解密技术确实很难,但我们不去发明算法,也不去尝试攻击和破解现有算法,我们只是去使用它;而且现在很多加解密库已经对上封装的很好,我们只要理解了密码学基本原理,熟悉了加解密库的API接口,就可以比较方便的使用它了。

5 @7 m4 l8 F# _
4 STM32的安全特性

7 e- `8 ~; A7 F) w6 |9 V& W
77.jpg
STM32现有安全特性全景图
: E0 W% b4 @+ g/ w
如上图,STM32安全特性涵盖硬件、软件例程、软件工具,以及用于解决安全生产或者说安全固件烧录的整套服务,SFI(安全固件安装)。
4 f1 ~* g* N5 t$ o4 Z
蓝色部分代表硬件,包括存储与执行保护模块、芯片UID、外部监测模块和加解密模块。
·  存储与执行保护模块:包括读保护RDP、写保护WRP、私有代码保护PCROP、唯一启动入口UBE、安全用户闪存、MPU、防火墙firmware;最新的产品系列L5中,还有TrustZone安全隔离功能,区分可信代码和非可信代码。
·  芯片UID(unique ID):是ST提供给每个STM32芯片的唯一ID号,出厂前就写在了片上闪存的系统flash,它与安全不直接相关,但会在安全相关应用中用到;
·  外部监测模块:如看门狗,Tamper外部入侵检查;
·  加解密模块:包括真随机数产生器 TRNG、对称加解密加速器 AES、对称加解密加速器 Crypto、哈希模块 HASH、非对称加解密加速器 PKA。
0 M8 p  _9 e; z; t2 R
灰色部分是软件例程包:
基于存储与执行保护模块的各个例程
加解密库,一方面有基于下面加解密硬件模块的实现,也有仅依赖于Cortex-M内核的软件实现。
SBSFU安全包,是结合了基本所有硬件模块和加解密技术的应用,实现了安全启动和安全升级。SBSFU是由ST开发的,针对嵌入式领域安全启动和安全升级的免费开源参考实现。开发者可按需裁剪,集成到自己的应用中;或者参考它,做自己的实现。
来自ARM的开源协议栈mbedTLS,集成在带以太网IP的STM32系列的Cube包中。
安全固件安装(SFI:SecureFirmware Install)用于解决安全生产或者说安全固件烧录的整套服务,HSM是一个硬件,帮助SFI服务的实施。安装,就是指在空片上烧录初始版本的应用固件,通常发生在产线上。SFI适用于OEM把一批次的STM32和自己开发好的固件给到第三方或者不可信的产线去烧录时,解决OEM对产线安全方面的顾虑;比如,OEM开发的固件会有私密性要求,防止知识产权泄露;另外,OEM可以控制固件烧录的次数,规避品牌资产带来风险。

* R" P7 y) y) z' g5 O; z" T0 D
作为STM32生态系统的一部分,STM32CubeProgrammer和TrustPackageCreator 是学习和操作SBSFU需要用到的软件工具。CubeProgrammer是STLINKUtility的继承者,主要用来烧写、读取、擦除STM32片上闪存以及选项字节;TrustPackageCreator专门服务于安全应用,SBSFU和SFI都会用到,TrustPackageCreator没有单独的下载包,它的GUI和命令行版本的程序,都是在CubeProgrammer的安装目录下。
" P8 S* h2 A' L- f9 r6 X* h

9 D, @. d4 P: w+ B5 L
, e- _6 a$ f' W2 a# ~
收藏 评论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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版