打印

单片机程序固件加密的另一种思路

[复制链接]
1817|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#技术资源# #申请原创#
《单片机程序固件加密的另一种思路》
0、引言:MCU的发展过程和固件加密重要性
随着大规模集成电路的出现和发展,单片机(MCU)将原有计算机上的CPU、RAM、ROM、定时计数器和多种I/O接口集成到一个芯片,从而形成芯片级的计算机。这也是TI工程师的Gary Boone和Michael Cochran发明的全球第一颗微控制器(MCU)--TMS 1000系列(下图)的雏形。之后,日本电子厂商开始生产汽车用微控制器,包括用于车内娱乐、自动雨刷、电子锁和仪表盘的4位MCU,以及用于发动机控制的8位MCU。

图1:TI的TMS 1000系列MCU

时至今日,单片机除了传统的玩具市场、工业控制、汽车电子、白家电等,在物联网以及智能化浪潮来临以后,单片机更加成为产品设备的核心部件,一方面设备需要进行实时性高效智能的信息,另一方面还要能与其他设备进行信息互换,这些需求都需要由单片机来完成。而中国拥有最为广泛的消费群体和应用场景,单片机在国内的发展优势也更为明显。从图2所示,预计到2022年,中国MCU市场规模将突破300亿元大关,预计达到319亿元!

图2:中国MCU市场规模增长与预测
可以说,单片机因应用而生,除了芯片本身硬件性能,与应用相关的程序固件越发显得重要,固件安全的需求也就越来越受到关注!
1、单片机的信息安全
首先,广义上的“安全”,也可视作为“信息安全”,它具有三个重要的特点:
1)保密性:需要确保信息不为其它未授权的个人或团体所获得
2)完整性:维持和确保信息的完整,不被未授权的篡改
3)可行性:被授权访问信息的主体,在需要信息的时候能及时访问并获取
保密性 Confidentiality,Integrity 完整性 和 可行性 Availability,简称:CIA  
从以上特征描述,引申出处理信息安全的三种常用工具:标识、认证以及授权,也简称为:IAA
1)标识:Identity
首先,信息访问者标明主体身份,但是不确定该主体确实可访问该信息?所以,得验证其真假;
2)认证:Authentication
身份认证也就是核实主体声称的内容是否属实?以便在主体身份核实后,进行更细化的动作
3)授权:Authorization
作为更精细的信息处理,需要解决的问题包括:确保哪些信息可被授权人查看?被查看的信息是否保持完整,未被未授权的修改?以及被授权人可以随时方便的访问可查看的信息。
信息安全的三要素以及三种工具的相互关系,如图3所示:

图3:信息安全三要素与信息安全工具相互关系
2、单片机的攻击风险
单片机一般都有内部程序区和数据区,供用户存放程序和工作数据。为了防止未经授访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就叫单片机加密。
单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序这就叫单片机解密。目前单片机常用解密方法主要包括:
1 软件攻击
该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMEL AT89C51系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。
2)电子探测攻击
该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。
3)过错产生技术
该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生,攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护 信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。
4)探针技术
该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。
为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏。
GD32W51x 为国内领先的半导体厂商兆易创新最新发布的一款基于Cotrex-M33内核的MCU,Cortex-M33内核基于Armv8-M指令集架构,集成了TrustZone硬件安全机制,支持独立的存储访问空间,提供了系统开发所必需的安全性和灵活性。本文主要基于GD32W51x MCU 介绍TrustZone安全机制的内容及具体工程应用方法。
3、信息安全保障
3.1 Trust Zone 介绍
ARM TrustZone是基于硬件的安全功能,它通过对原有硬件架构进行修改,在处理器层次引入了两个不同权限的保护域——安全世界和普通世界,任何时刻处理器仅在其中的一个环境内运行。同时这两个世界完全是硬件隔离的,并具有不同的权限,正常世界中运行的应用程序或操作系统访问安全世界的资源受到严格的限制,反过来安全世界中运行的程序可以正常访问正常世界中的资源。这种两个世界之间的硬件隔离和不同权限等属性为保护应用程序的代码和数据提供了有效的机制:通常正常世界用于运行商品操作系统(例如Android、iOS等),该操作系统提供了正常执行环境(Rich Execution Environment,REE);安全世界则始终使用安全的小内核(TEE-kernel)提供可信执行环境(Trusted Execution Environment,TEE),机密数据可以在TEE中被存储和访问。这样一来即使正常世界中的操作系统被破坏或入侵(例如iOS已被越狱或Android已被ROOT),黑客依旧无法获取存储在TEE中的机密数据。
图4中(a)描述了Cortex-A上采用的TrustZone架构,该架构中还引入了一种称为监视模式的处理器模式,该模式负责在世界过渡时保留处理器状态,两个世界可以通过称为安全监视器调用(SMC)的特权指令进入监视模式并实现彼此切换。
图4:Arm Trust Zone
除了Cortex-A微架构外,ARM发布的新一代Cortex-M微架构同样为TrustZone提供了硬件支持。与Cortex-A相同的是,Cortex-M依旧将处理器运行状态划分为安全世界和正常世界,并阻止运行于正常世界的软件直接访问安全资源。不同的是,Cortex-M已针对更快的上下文切换和低功耗应用进行了优化。具体来说,Cortex-M中世界之间的划分是基于内存映射的,并且转换是在异常处理代码中自动发生的(如图1(b)所示)。这意味着,当从安全内存运行代码时,处理器状态为安全,而当从非安全内存运行代码时,处理器状态为非安全。Cortex-M中的TrustZone技术排除了监视模式,也不需要任何安全的监视软件,这大大减少了世界切换延迟,使得世界之间的转换为更高效。为了在两个世界之间架起桥梁,Cortex-M引入了三个新指令:secure gateway(SG),branch with exchange to non-secure state(BXNS)和branch with link and exchange to non-secure state(BLXNS)。 SG指令用于在安全入口点的第一条指令中从非安全状态切换到安全状态。安全软件使用BXNS指令来返回到非安全程序;最后,安全软件使用BLXNS指令来调用非安全功能。此外,Cortex-M中的状态转换也可以由异常和中断触发。
3.2 GD32 Trust Zone 产品
GD32W515系列MCU持续采用最新的Arm® Cortex®-M33内核,片上集成了2.4GHz单流IEEE802.11b/g/n MAC/Baseband/RF射频模块。Cortex®-M33内核基于Armv8-M指令集架构,支持DSP指令扩展和单精度浮点运算(FPU),还集成了TrustZone硬件安全机制,支持独立的存储访问空间,提供了系统开发所必需的安全性和灵活性。

得益于TrustZone硬件安全架构提供的系统隔离特性,全新MCU能够支持安全区域的安全启动,并可在软件层面提供安全存储、初始化认证以及安全日志等服务,严格保护了机密代码和数据、核心流程以及关键外围设备。还支持Wi-Fi协议规定的全新安全特性,如WPA3以及管理帧保护功能,进一步增强了终端设备通信过程的保密性和安全性。GD32W515系列MCU已经正式通过Arm平台安全架构PSA Level 1、PSA Functional API认证,以提供更高安全保障。还通过了Wi-Fi联盟(WFA)授权的Wi-Fi认证,以及RF FCC/CE合规认证。与各厂商无线路由器(AP)具有极佳的相容性,可以快速建立连接并完成通信。

图5:GD32W515系列

同时,方案交付也会涉及多个环节,包括代理商、方案公司、烧录厂和加工厂等,现有单一调试或烧录工具也无法满足整个交付链条的安全管控。

3.3 程序固件云端交付

针对这一痛点,创芯工坊(ICWORKSHOP.com)在2017年首次提出程序固件云端交付的概念,并于2018年实施上线。期望在程序开发者/方案公司与终端用户间,搭建一个可靠安全的交付平台,通过固件与烧录次数绑定,从而保护开发者知识产权,使双方受益。

自发布日至2020年底,已成功完成固件在线交付&云端烧录近7,000万次。
不仅为广大单片机方案公司提供了更加安全、开放和多元的交付模式,同时也适用于多种固件安全烧录场景。


图6:云端固件交付流程图及安全要点

如图6 交付流程图所示,整个交付链条,以授权订单代替了以往的单个固件传输和交接,生产厂家或用户接触不到程序固件源码,降低了固件被**的风险。同时也适用于项目初期的程序调试,以往需要频繁的将升级改动过的程序烧入烧录器中,再快递给用户确认,现在通过云端交付,用户直接可以方便地下载更新固件,节省了沟通成本和物流成本,大大提升了效率。

创芯工坊除了提供平台端服务,配合PowerWriter安全烧录器提供的多种加密机制,在不提升芯片安全等级的情况下,同样实现了“一芯一密”功能!同时,配合PowerWriter烧录器提供的离线(UID绑定)和ICWKEY授权密钥,以及在线授权等多种加密方式(如图7所示),大大提升了芯片**的难度。


图7:PowerWriter上位机加密模式选项

加密模式:

1)在线授权(在服务端开启)
在线授权方案功能由创芯工坊官方提供,此时的烧录器内部不存储离线固件,而是将固件提交到创芯工坊的后台管理控制台以订单形式发布,客户再通过创芯工坊客户端实现远程量产烧录,烧录芯片时需要全程联网,从授权服务器获取授权数据,在线授权方案同样是基于 CID 的,整个授权的算法可由创芯工坊用户自主设计。

2)自带内置离线授权
Power Writer 内置了基于随机矩阵算法的 UID 离线授权方法,跟市面上固定授权方法不同的是 Power Writer 可以由开发者自由编辑算法矩阵。Power Writer 内置解析算法,对矩阵进行 解析生成正确的算法,内置离线授权根据用户选择的芯片,参数设置自动生成 Demo 代码,极大地提高了了用户的开发效率。离线授权界面设置(如图8所示)。


图8:PowerWriter 内置离线授权设置界面

离线授权基础设置包含:
密钥地址:密钥地址可以理解为存放授权信息的地址,它的默认地址设定为芯片Flash容量-12的位置,上图是 STM32F071CB 的默认存储地址。
用户密码长度:填写用户设定密码长度,默认为12字节,可选 4字节,8字节长度
数据存储模式:数据存储模式分为小端模式和大端模式
用户密码(3组用户密码):根据设定可以设定最多三种用户密码
Matrix 编码:Matrix 编码定义了用户可以编辑的离线授权的加密矩阵(如图9所示)。



图9:PowerWriter 离线授权随机矩阵

Power Writer 提供了强大的随机矩阵授权算法,用户可以快速的随机生成功能,生成独一无二的随机授权矩阵验证算法,同时可以对随机算法矩阵的强度进行优化判断,自动导出 Demo 代码。

3)安全授权盾/授权密钥


图10:ICWKEY 授权流程

如图10所示,通过 ICWKEY 可以实现非对称 ECDSA(ECC非对称加密算法)授权,可以灵活将授权功能和PowerWriter进行分离控制,并提供高强度的授权方法终极
解决方案,针对高端产品,大批量产品授权,实现灵活的授权控制方案。


图11:PowerWriter端ICWKEY通信配置

如图11所示,通过PowerWriter上位机软件可对ICWKEY进行配置:

密码:为了提供最高强度的通讯加密,PowerWriter与ICWKEY的通讯采用AES128 CBC模式加密,密码配置在PowerWriter端随机生成,当密码框无焦点时默认不显示密码,密码可以使用随机生成功能进行生成.不提供手动填入。
初始向量:PowerWriter和ICWKEY 的通讯除了通信密码,同时提供一组初始向量,再通过创芯工坊的滚码算法,实现高强度的加密。
项目名称:此名称将和ICWKEY屏幕显示项目名称保持一致,默认格式为 :SafeLic_XXXXXXXX,如用户对默认的显示项目名称不满意。可以手动填写,默认最多为 16 个字节。
授权地址:填写 ICWKEY 在Flash中的授权地址,PowerWriter将根据用户填写的此地址,写入授权信息到 目标芯片的 Flash 地址中。此地址的默认值为芯片Flash的末尾- 0x80的位置。在基于ICWKEY开发完成项目后,基于MDK导出的Mapping信息找到授权的地址,在此处填写当前正确的授权地址信息。
随机生成:点击此按钮 Power Writer 将随机生成 密码、初始向量、项目代码。
保存设置:当用户完成设置后,点击保存,此时 ICWKEY 配置信息将会保存到缓冲区。

同时,考虑到程序固件所需要的保护级别不同,以及安全级别更高的物联网设备应用场景,如图12 所示,除了在本地实现了UID绑定固件的机制,创芯工坊也支持用户通过创芯工坊服务器或自建服务器,自行实现授权算法,从而真正实现”一芯一机一密”!


4、总结

MCU的发展是硅基芯片和软件的共同成果,缺一不可!

嵌入式开发方案的交付,离不开程序固件,而随着互联网的渗透以及物联网的行业落地,在市场价格竞争和交付效率压力面前,半导体行业从业者(从芯片原厂、方案集成到渠道通路)都面临巨大挑战和改变:传统的单兵出击变为协同作战,传统的PCB交付变为程序软件授权,传统的芯片贸易变为集成方案以提升附加值 。。。。所有的改变都需要基于“信任与安全”的前提,而这就是创芯工坊基于互联网技术,结合硬件产品,提供更为完善的本地化安全交付和安全烧录方案的初衷!

欢迎探讨!

https://www.icworkshop.com
https://www.powerwriter.com
https://space.bilibili.com/543905613

附上:PowerWriter 防BUG符


图片 3.png (279.44 KB )

图片 3.png

图片 2.png (242.91 KB )

图片 2.png

图片 1.png (396.22 KB )

图片 1.png

使用特权

评论回复
沙发
AlexChiu|  楼主 | 2022-7-31 12:23 | 只看该作者
创芯工坊 - 固件云端交付平台
www.icworkshop.com
免费注册使用

PowerWriter 安全烧录器答疑
https://docs.powerwriter.com/docs/faq

使用特权

评论回复
板凳
斯蒂芬改色的| | 2022-7-31 12:58 | 只看该作者
1111

使用特权

评论回复
地板
专注于嵌入式| | 2022-8-1 09:23 | 只看该作者
那不怀好意的人攻破你的云端交付平台,那客户的损失你们赔得起么?

使用特权

评论回复
5
koala889| | 2022-8-3 20:37 | 只看该作者
感觉这是大厂风范

使用特权

评论回复
6
AlexChiu|  楼主 | 2022-8-4 03:06 | 只看该作者
专注于嵌入式 发表于 2022-8-1 09:23
那不怀好意的人攻破你的云端交付平台,那客户的损失你们赔得起么?

你好,谢谢关注!
首先,安全是相对的,而不是绝对的!比如你即使选用了A类锁,它也只能延长被技术**的时间,同时它也无法避免被暴力**。所以,我们提供的是从烧录器硬件端(烧录器+授权秘钥)到云平台端整个交付的链路安全,增加了**反编译的难度,而**也是有成本的。目前,上述加密+授权方式,不是概念性的设想,已得到商业用户验证认可并投入使用!同时,我们还会针对不同类型客户需求和应用场景,不断优化和改进;
其次,不可否认,我们会对未知事物产生恐惧,是因为恐惧本身就是未知的!对众多个人开发者和方案公司而言,我们提供的固件加密和授权烧录方式,在确保开发者权益的同时,拓展一种新的生意模式!如果手上有常见的STLINK或GDLINK,免费注册创芯工坊账号,即可体验云端交付模式。谢谢关注!

使用特权

评论回复
7
AlexChiu|  楼主 | 2022-8-4 03:08 | 只看该作者
痛则思变,变则通,通则不痛!

使用特权

评论回复
8
AlexChiu|  楼主 | 2022-8-4 03:09 | 只看该作者

使用特权

评论回复
9
daichaodai| | 2022-8-4 19:11 | 只看该作者
学习了,不过加密也难防抄板。

使用特权

评论回复
10
nongshengjiang| | 2022-8-8 21:44 | 只看该作者
一般的用UUID,自己做个公式,在运行通过测试过程读出,计算,验证,发送,更新ROM,这难抄了吧。我都是这样弄

使用特权

评论回复
11
星辰大海不退缩| | 2022-11-23 21:23 | 只看该作者
加密公式一般防错机制都比较多,用创芯工坊 - 固件云端交付平台更好增加安全性

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

158

帖子

2

粉丝