2020-10-24
嵌入式安全
1.安全的重要性
(1)为什么安全如此的重要?
对于嵌入式系统正越来越频繁地遭到黑客入侵。
(2)如今为何需要安全性?
1) 设备需要联网,比如现在工业4.0的设备,设备连接云
2) 安全攻击和黑客入侵频率的增加
3) 保护你的IP(知识产权),应用。
(3)嵌入式系统应用中的安全需求?
1) 机密性、隐私
确保任何意外实体都无法读取保存的数据或传输的报文。
2) 完整性
确保报文始终不发生改变(没有丢包或被篡改)
3) 真实性
确保某件事务与声明相符,
不可否认性(查明具体来源和发送方的身份);
证明/安全引导/安全DFU(提供可靠证据来证明现有代码是真实的,支持本地或远程证明)
(4)通过硬件加密实现的安全性更高。
硬件加密以数倍于软件实现的速度执行加密/解密;
性能更高,代码更小。
1) 保证应用程序完整性
与软件相比,硬件可信根更安全,更能保证代码/应用程序完整性
2) 抵御逆向工程
软件实现更易受逆向工程攻击。
3) 抵御非侵入性攻击。
基于软件的解决方案更容易受基于功耗分析的攻击。
4) 秘钥保护级别更高
使用硬件存储秘钥的保护级别要高于使用软件存储。
- 安全的基本概念,算法和实现方式
(1)嵌入式安全意味着将安全算法和非安全应用结合起来,构建一个完整的解决方案。
1) 机密性:通过加密(包括对称和非对称的加密算法)解决机密性的问题
2) 完整性:通过哈希算法(MD5、SHA-1、SHA-256)和对称的加密算法来解决完整性问题;
3) 身份验证:通过数字签名来解决身份验证的问题。
(2)基本算法
哈希运算:哈希运算所采用的是一种强大的不可逆数学变换;不同长度的报文通过哈
希运算后一般产生相同长度(比如32字节)的摘要。哈希运算不仅可以验证报文还可以用于检查报文的完整性。
•强大的哈希运算的特性:
•计算摘要谓可容易实现
•无法重新生成原始报文
•无法在不改变摘要的前提下修改报文
•无法找到具有相同摘要的不同报文
•输出称为“报文摘要”,长度固定
•SHA256输出32字节摘要,这与输入的大小无关
使用哈希运算进行验证时,结果称为
•MAC = 报文验证代码
•MIC = 报文完整性代码
对称密钥加解密:所谓的对称密钥,就是加密密钥和解密密钥相同。由于通信双方的密钥相同,因此密钥的保存非常关键。
密钥分配很简单
•一个密钥可公开共享,我们称其为“公钥”
•另一个密钥以极其私密的方式保存,我们称其为“私钥”
•此密钥的安全性和私密性对系统的安全至关重要
•在公钥基础架构(即PKI)中,每个元素都有自己的密钥对
•密钥对绝对不能共享
•每个元素都具有惟一身份是安全的基础
非对称算法:所谓的非对称,指的是两个数学上相关的密钥,一个密钥可以公开共享,称为公钥,另一个密钥以及其私密的方式保存,称为私钥,一般使用时,我们使用公钥加密,私钥来解密。我们可以使用使用非对称算法来验证身份,一般使用私钥产生数字签名,使用公钥进行验证,即验证身份的合法性。
数字签名
它不是对质询的加密响应
•签名是一种复杂的数学函数,它利用私钥、随机质询和一个惟一随机数来创建结果
•得到的数字签名只能使用签名者的公钥进行验证
•…验证不是解密
•验证是另一种复杂的数学函数,其惟一目的在于确定发送者的私钥是否用于创建该数字签名
•验证函数的结果为“是/否”结果
证书:证书用于确保实体是真实可靠的。通信双方在通信之前,必须要建立一个信任链,以便彼此共享共同的信任锚或信任根,信任锚通常是OEM,但也可以使证书颁发机构(CA)
(3)证书的签名和结构
证书内容
•版本和序列号
•算法ID
•颁发者
•有效期
•开始日期/截止日期
•主题
•主题公钥信息
•公钥算法
•主题公钥
•证书签名算法
•数字签名
•颁发者惟一标识符(可选)
•主题惟一标识符(可选)
•扩展(可选)
使用加密安全随机数发生器同样重要
•我们需要与承诺可从嵌入式系统操作中获得高熵随机数的不法供应商作斗争
实现强安全性需要什么条件?
高熵随机数发生器
•“熵”是一种严重的无序状态,是随机性的基础
•可以信任的不可变真实代码区域
•用于存储机密信息和关键加密基元的硬件强制持久安全区域
•通过防篡改保护实现
•强大的加密方法和可靠的信任链
•本演示文稿中采用了椭圆曲线加密(ECC)方法,这是现行标准
•由于ECC的密钥长度较短且安全级别相同,因此正在逐渐取代RSA
•ECC-256位= RSA-3072位
•考虑周全的生态系统和基础架构
3.系统安全构件
1) 硬件可信根
所有安全系统都需要硬件可信根,其中包含2个属性:
固件验证(又称为安全引导,适用于所有系统)-- 确保即将运行的软件为正确的软件。它涉及映像签名以及稍后启动时的过程映像验证。
可信身份(用于联网系统)–秘钥受防篡改保护和边信道攻击保护。
这是与可信链相关的私钥或共享秘钥,应具备根据相关认证标准测试的防篡改保护和边信道攻击保护。
2) 防伪
防止攻击者仿造一次性物品或复制附件
3) IP保护
防止攻击者窃取MCU固件或FPGA RTL中的IP。
价值在于系统代码内的知识产权(IP)。因此,需要在系统运行期间的任何时刻对已签名的代码进行验证。
原理与安全引导类似,但验证在运行时进行。
4) 安全更新
利用安全通信和安全引导机制来确保安全传送真实的映像。
对于联网系统-安全远程无线(OTA)更新
•对于非联网系统-本地更新(例如:U盘),前提是待更新的软件或固件安全地存储在相应的位置。
•代码/软件/映像签名和验证
•安全加载程序(执行更新的软件)需要对目标设备、文件或系统进行身份验证
5) 安全链接
对设备通信进行身份验证并选择性进行加密
主机和客户端所连隧道的加密/解密功能可确保安全通信,从而防止中间人攻击,即试图在通信隧道内拦截数据加以篡改。
在建立安全通信的过程中,存在一个密钥协议阶段。该阶段将请求必须加以保护的可信根,以便能够开始推送数据和避免出现冒用身份的客户端。
•通过IP网络的TCP或UDP实现TLS或DTLS层
•以太网、Wi-Fi®和6LowPan等
•协议栈可位于MCU/MPU或无线模块(例如WINC1500)中。
•FPGA SmartFusion2集成了Cortex® -M3以处理通信
•(D)TLS凭证应位于防篡改的第三方经测试物理安全边界中,例如,JIL“高”等级安全元件或MCU/MPU上的等效安全元件(如果有)
•其他通信协议栈
•Bluetooth® 、Zigbee® 、LoRa和其他802.15.4无线电等
•始终考虑真实性、保密性和完整性
•请记住:仅加密是不够的
6) 应用层安全
利用系统的加密功能进一步强化实现(访问权限)
安全性专门应用于应用层以防止未经授权的访问。
应用层安全是指保护OSI模型第7层应用免受恶意攻击的方法,这些恶意攻击可能暴露私人信息。
机制示例:
•检测到篡改时禁止密钥或固件操作
•完整性监视
•用户权限/访问授权
•内核分离
•硬件防火墙
•篡改宏
•归零
•安全代码预配置
•映像签名/验证
4. 安全引导
可信根可保证客户数据/引导文件免于加载到执行环境
•安全引导加载程序可确保设备的可信根
•安全引导可防止在设备中运行未经授权的应用程序
•由于经过加密和签名,因此允许加载可信的应用程序
•通过检查完整性并对其进行解密,允许执行可信的应用程序
安全引导加载程序加载经过加密和签名的应用程序
•将应用程序映像存储到外部NVM中之前,先进行加密和签名
•使用AES-CBC进行加密,实现机密性
•使用AES-CMAC或HASH+RSA进行签名,实现身份验证/完整性
•加密密钥存储在受保护的熔丝矩阵中
安全引导加载程序的原理
•安全引导加载程序执行经过加密和签名的应用程序
•将映像从外部NVM下载到嵌入式SRAM中
•对映像进行身份验证(HASH-RSA –AES-CMAC)
•如果通过身份验证,则解密嵌入式SRAM中的引导文件(AES-CBC)
•禁止访问包含身份验证/加密密钥的熔丝
•然后,启动嵌入式SRAM中的映像
如果映像未通过身份验证,则根据客户设置,将检查下一个存储器或不执行任何操作,因为它可能是恶意的代码。
5. 物联网安全
选择在安全性方面值得信赖并且进行过试验的供应商使用经过验证的标准安全性架构和相关实践
提供惟一、可信、受保护且可验证的身份,从而确保身份验证安全(信任根)
加密通信(TLS1.2)
使用安全的OTA固件验证和安全引导。
将私钥与用户隔离
•人类是最难预测的安全风险
将私钥与软件隔离
•补丁发布后,会向攻击者暴露软件的弱点。为物联网硬件开发补丁往往需要几个月的时间,而这样会让攻击者有足够的时间入侵系统。
将密钥操作与制造阶段隔离
•不仅与供应链设备隔离,还应与供应链中的用户隔离。
将密钥与单片机隔离
•请勿将私钥存储在闪存中
2)创建带多个证书的设备身份
设备身份应惟一、可验证且可信加密密钥对一个私钥和一个数学上相关的公钥(一对一的关系)
身份的可信性依赖于在产品的使用寿命内保密的私钥以及保持安全的加密算法实现:
•没有遭受暴力攻击的可能
•不存在已知协议弱点
•不存在会导致密钥材料泄漏的边信道攻击
证书不是惟一的身份验证安全模型。客户只需使用基本公钥/私钥对即可对令牌进行签名,之后会对令牌进行验证(Google方案)
用于在联网设备的使用寿命内安全存储密钥材料。密钥绝不存在于设备之外
•密钥由器件使用满足NIST规范的“*”随机数发生器(RNG)生成,处于器件的安全边界内
•所有加密算法都在防篡改边界内执行
•将密钥与应用软件严格隔离
•这样一来,密钥、机密信息和原语便可与所有易受攻击的资源严格隔离
本文地址:https://blog.csdn.net/chocolate2018/article/details/109256549
上一篇: linux下防止ssh暴力破解的方法
下一篇: PoisonIvy Rat 远程溢出实战