> 文档中心 > 嵌入式平台安全启动介绍

嵌入式平台安全启动介绍


嵌入式平台安全启动介绍

在嵌入式中的安全启动,第一要素是需要对镜像进行保护,保证镜像的安全性,防止镜像被破解和篡改。为了保护这些镜像,需要对启动镜像做加密或者签名操作,如果镜像被第三方修改或者遭到破坏,镜像则无法启动,只有通过身份校验的镜像才可被执行,达到安全启动的作用。

加解密秘钥介绍

术语

明文:原始的消息

密文:加密后的明文

加密:将明文变为密文的变换过程

解密:将密文变为明文的变换过程

密码编码学:研究各种加密方案的领域

密码分析学:在不知道任何加密信息的条件下去解密

SHA

安全散列算法(Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。sha也是hash算法的一种,常见的还有信息摘要算法(MD5 Message-Digest Algorithm,缩写为MD5),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

算法 发布时间 说明
SHA-0 1993 发布之后很快就被NSA撤回,是SHA-1的前身
SHA-1 1995 SHA-1在许多安全协议中广为使用,包括TLS、PGP、SSH、S/MIME和IPsec,2017年荷兰密码学研究小组CWI和Google正式宣布攻破了SHA-1
SHA-2 2001 包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256
SHA-3 2015 美国国家标准技术研究所(National Institute of Standards and Technology)感觉需要一个与之前算法不同的,可替换的加密散列算法

特点:

  • 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法)

  • 对输入数据非常敏感,哪怕原始数据只修改了一个Bit,最后得到的哈希值也大不相同

  • 散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小

  • 哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值

    在这里插入图片描述

现使用软件方式程序使用SHA1进行对镜像计算摘要,因只是为了保证对镜像的完整性校验,虽然现在已经被破解,但是仍然可使用。

RSA

一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

RSA算法理论依据:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难

在这里插入图片描述
在这里插入图片描述

AES

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。现在,高级加密标准已然成为对称密钥加密中最流行的算法之一。

AES-GCM

在这里插入图片描述

对称加密

对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。

在这里插入图片描述

  • 优点:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

  • 缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后双方保存好秘钥。如果一方的秘钥被泄露,那么加密信息也就不安全了

  • 使用场景:本地数据加密、https通信、网络传输等

  • 常见算法:AES、DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6

非对称加密

非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。

在这里插入图片描述

  • 优点:非对称加密与对称加密相比其安全性更好
  • 缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
  • 使用场景:https会话前期、CA数字证书、信息加密、登录认证等
  • 常见算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

HASH算法

Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

  • 优点:不可逆、易计算、特征化
  • 缺点:可能存在散列冲突
  • 使用场景:文件或字符串一致性校验、数字签名、鉴权协议
  • 常见算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

通用启动流程

在host端对镜像进行签名,设备端启动进行验签操作

在这里插入图片描述

该流程使用RSA的私钥对镜像的hash进行签名,将签名的数据放置到裸数据后面。在设备启动的时候,分别读取裸数据和已经签名的数据,使用host端同样的hash算法对裸数据计算hash值,常用的hash算法有SHA和MD5。使用RSA的公钥验签,对签名的数据进行验签计算1,得到的值如果和对裸数据计算出的hash值是一致的,说明这次验签校验通过,验证了这个裸镜像的身份,镜像可以加载;如果hash值对比不一致,可能的原因是镜像在传输过程中数据丢失或者被更改,证明镜像是有问题的,裸镜像不能加载启动。

ZYNQMP安全启动流程

在这里插入图片描述

Host端镜像签名

设备端在启动过程中,对加密摘要(密文)的进行解密操作,对加载到内存的镜像计算摘要,对比计算出的摘要和解密出的摘要是否一致,一致则校验通过。

Device端镜像验签

设备端在启动过程中,对加密摘要(密文)的进行解密操作,对加载到内存的镜像计算摘要,对比计算出的摘要和解密出的摘要是否一致,一致则校验通过。

方案对比

方案一:

使用对称加密算法AES-GCM,在HOST端对整个镜像(明文)进行加密,生成加密镜像(密文),设备端在启动过程中,对加密镜像(密文)的进行解密操作,生成未加密镜像(明文),校验通过后加载启动。

在这里插入图片描述
优点:操作简单

缺点:对大数据量的加密镜像,使用AES-GCM解密启动时,消耗时间较长

方案二:

使用对称加密算法AES-GCM,HOST端不需要对整个镜像(明文)进行加密,抓取镜像获取头20字节,尾部20字节,生成摘要,对这40个字节进行加密;设备端在启动过程中,对加密摘要(密文)的进行解密操作,抓取读到镜像获取头20字节,尾部20字节的摘要进行对比,校验通过后加载启动。

在这里插入图片描述

优点:加入了签名的概念,一定程度上可以保证了镜像安全性

缺点:除去40字节摘要,其它剩余字节可能在传输升级过程中出错,导致校验通过启动也会失败,需加CRC对镜像完整性校验。

方案三:

使用对称加密算法AES-GCM,HOST端不需要对整个镜像(明文)进行加密,使用SHA对镜像进行hash计算生成摘要,对生成摘要进行加密;设备端在启动过程中,对加密摘要(密文)的进行解密操作,对加载到内存的镜像计算摘要,对比计算出的摘要和解密出的摘要是否一致,一致则校验通过。
在这里插入图片描述

优点:有签名概念,计算摘要不需要额外增加CRC计算,hash可保证完整性校验,小数据的摘要也可保证快速解密

缺点:使用两种算法,实现相对复杂,AES-GCM秘钥安全性需进行保证,需将秘钥存放在存储器中emmc、nand、flash或者OTP中。

方案四:

使用非对称加密算法RSA,HOST端不需要对整个镜像(明文)进行加密,使用SHA对镜像进行hash计算生成摘要,对生成摘要使用RSA私钥进行加密;将公钥附加到镜像后面,设备端在启动过程中,解析出公钥,使用公钥对加密摘要(密文)的进行解密操作,对加载到内存的镜像计算摘要,对比计算出的摘要和解密出的摘要是否一致,一致则校验通过。

在这里插入图片描述

优点:安全性好,不需要额外对RSA公钥进行存储。

缺点:大数据量计算耗时长。使用SHA+RSA,实现较SHA+AES更加复杂

OTP原理

属于一次性可编程存储器(One Time Programmable, OTP),仅可被烧写一次,但可以被多次读取,出厂初始状态下所有OTP 的bit均为0,通过特殊的烧写时序可以将bit从0改成1,一旦某bit被烧写成1后便再也无法被修改(可理解为硬件熔丝烧断了无法恢复)。
在这里插入图片描述
作用:可用于存储秘钥Key和一些重要的出厂版本信息