【从智能锁谈STM32安全技术】之 - 安全固件安装

发布者:创意小巨人最新更新时间:2023-09-02 来源: zhihu关键字:智能锁  STM32  安全技术 手机看文章 扫描二维码
随时随地手机看文章

在第六季内容中,将介绍安全固件安装 SFI (Secure Firmware Installation)的原理及解决方案。


安全固件安装的本质是,我们是否能相信工厂的制造过程是安全的过程。如果我们相信工厂是可靠的,相信它总是按照我们的指示,例如,我们希望它不要泄露固件代码,我们希望它不要过生产,他们都能一一办到,那么安全固件安装是没有用武之地。


然而,总有一些工厂,或者工厂里的某些员工 ,他们为了一时利益,可能会将研发设计公司辛苦开发的源代码(通常是厂商的二进制固件代码),直接泄露给其他第三方。同时他们也有可能将委托生产的产品过生产。即,如果我们希望他试着生产的 1000 台 ,结果他们也许会生产 2000 台。1000 台按照合同提供回给厂商,使用正规的商标与品牌,另外 1000 台则不知道使用什么样的商标流入市场。如果该产品在市场上很火爆,他们获得的利益会远远超过代工的收益。


STM32 在这种情景下,提供了一种技术手段,来保护委托方产品研发的权益。也就是说除了正常的 法律手段之外,STM32 技术手段可以防止工厂泄漏受委托生产的固件的二进制代码,同时防止工厂进行过生产,获取非法利益。


2、安全固件安装的两个关键问题及解决


安全固件安装涉及两个关键问题。第一是固件代码的保密性,就是说,我们即使使用第三方工厂进行制造,我们也不会因为工厂制造的安全弱点,而把我们的固件的二进制代码泄露出去。第二个问题就是过生产、产计数的问题。如果我们下的订单是 1000 台,绝无可能生产 1001 台。


要进行固件保密,一种方法就是我们派一个人常驻工厂,24 小时的对工厂流程进行监控。这种情况下我们可以确保没有人去复制二进制固件代码。还有一种方法就是通讯安全的思路。从公司研发部门到设备终端构建一个端对端的安全通道。在这个安全通道上面传输固件。如果你已听过前面的安全讲座的话,我们很快就可以知道,实现这个方法一定是加密技术。我们在研发部门发布产品的时候对固件二进制代码进行加密,然后让设备, 也就是 STM32 进行解密。


那么引出第一个问题,这个加密或者解密的密钥,是如何从研发部门传递到设备里去呢? 这就需要安全通道的概念。我们从前面的加解密技术也知道,我们有能力构建这样的一个安全通道。我们或者利用公钥体系,或者利用对称密钥体系。


那么第二个问题,防止工厂不会过生产产品这个问题是如何解决的呢?如果我们能够控制 STM32 能加密的次数,我们就可以控制实际的产。第一个问题已提到,固件是加密 的。那么,只有通过解密,固件才能在 STM32 里运行。解密的过程,是在 STM32 内部。 换言之, 这是一个产品授权的概念。源端只授权了 1000 台的生产,那么工厂是没有办法 解开 1001 个固件包进行安装。

我们总结一下 ,在工厂里实施固件保密,是通过对称密钥技术。技术原因是,固件一般比 较大,不适合使用公钥算法。而产计数,则是授权的概念,所授权的数字对应于具体的需要生产的产品数目。解密的密钥通过安全的通道直接发送到设备里去。STM32 设备里所运行的程序,是由ST开发,是可信的代码。它能够保证解密的密钥只使用一次。从而保证了使用次数与授权次数相一致。这样一个产计数就成功实现了。


3、安全固件安装的示例解决方案


在了解原理的基础上,我们再具体的看一下这个解决方案的组成。在这个解决方案里有三 个角色,一个角色是研发部门,它是固件的制造者;另一个角色是工厂的产线;第三个参与者则是 STM32 芯片。


关键字:智能锁  STM32  安全技术 引用地址:【从智能锁谈STM32安全技术】之 - 安全固件安装

上一篇:【话说定时器系列】之二:STM32常规定时器时基与时钟源
下一篇:当STM32遇到Linux = STM32MP1

推荐阅读最新更新时间:2024-11-10 10:25

STM32定时器分时操作系统
前后台系统,RTOS与定时器任务管理系统 前后台系统   在裸机上写程序,通常把程序分为两部分:前台系统和后台系统。   简单的小系统通常是前后台系统,这样的程序包括一个死循环和若干个中断服务程序:应用程序是一个无限循环,循环中调用API函数完成所需的操作,这个大循环就叫做后台系统。中断服务程序用于处理系统的异步事件,也就是前台系统。前台是中断级,后台是任务级。 RTOS   RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作 ,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。在实时操作系统中,我们可以把要
[单片机]
STM32输出比较模式和PWM模式
1.两者关系: 其实完全可以理解为PWM模式为输出比较模式的特殊形式,pwm模式在对应定时器上的四个通道产生的频率是同步的(即相同的),而输出比较模式在四个通道可以产生的频率不同。 2.pwm很多是周期固定改变占空比来应用的,当然也有改变频率的,改变占空比修改的是CCR1寄存器,而改变频率则是arr分频器。 3.STM32含有影子寄存器(即起实际作用的寄存器)有TIMx_ARR自动重装载寄存器和TIMx_CCR捕获比较寄存器。 ARR寄存器是用来配置计数器溢出周期(也就是计数器计数最大值,比如定时器使用时周期),也就是定时器定时周期或者作为pwm输出时的周期/频率,而TIMx_CCR捕获比较寄存器则是在作输出时作为计数器响应值,也
[单片机]
STM32库函数USART_SendData问题和解决方法
1. 问题及现象 使用USART_SendData()函数非连续发送单个字符是没有问题的;当连续发送字符时(两个字符间没有延时),就会发现发送缓冲区有溢出现象。若发送的数据量很小时,此时串口发送的只是最后一个字符,当发送数据量大时,就会导致发送的数据莫名其妙的丢失。 如: 1 2 for(TxCounter = 0;TxCounter RxCounter; TxCounter++) USART_SendData(USART1, RxBuffer ); 2. 原因 此API函数不完善,函数体内部没有一个判断一个字符是否发送完毕的语句,而是把数据直接放入发送
[单片机]
STM32-嵌入式学习笔记02-中断应用概述
STM32中断非常强大,每个外设都能产生中断 中断的优先级数值越小,说明他的中断优先级越高 配置中断需要了解NVIC寄存器: NVIC是嵌套向量中断控制寄存器,控制中断的相关功能;它与内核紧密结合,是内核里的一个外设。管理着包括内核和片上的所有外设的中断相关功能。 因此配置中断需要参考下面两个头文件:core_cm3.h 和 misc.h 在配置中断的时候我们一般只配置ISER和ICER IP这3个寄存器: 1)ISER使能中断 2)ICER清除中断 3)设置中断的优先级 给出官方手册寄存器的资料 编程要领: 1)使能中断请求(外设中某个中断) 2)配置优先级分组 3)配置
[单片机]
STM32-嵌入式学习笔记02-中断应用概述
stm32 pwm性能和fpga脉冲性能比较
stm32 pwm采取两种方式,一种是固定设置方式, 例如设置计数器为199个clk,脉宽为100clk ,第二种方式采取DMA配置脉宽方式, 例如我开了一个3000大小的数组,里面都写100, 采取循环DMA发送 fpga就比较简单,对clk计数,最大值为100,到0- 49的时候io为0,50-99为io口为1, 这样就产生了pwm波形 测试结果如下 stm32下面pwm两种方式性能都差不多, 360K基准上下波动3K,最大可达到5K, dma和直接pwm都一样。 fpga方式下面,410K基准上波动不超过1k 性能差异很明显,fpga方式远远好于stm32, 特别是考虑到多轴同步的时候更是这样。 示波器采用同样条件
[单片机]
STM32外部中断总结
该文章是学习了STM32后所写,是对STM32的小小的理解。在文中若有错误指出请指正,不胜感激。 STM32有最多68个可屏蔽的中断通道,有16个可编程的优先级。对于STM32F103ZE芯片,其内部包含了19个边沿检测器用来产生中断或者事件请求。对于外部中断只用了16个外部触发输入线。每一个外部输入线都能够被独立的屏蔽,pending register的寄存器能够保存输入线的状态,这个寄存器不能通过硬件自动清零,必须使用软件来清零; 外部中断的内部连接图如下: 触发信号通过输入线进入检测器,检测器的功能是可以设置的,就是通过上边两个边沿检测器即上升沿出发选择寄存器和下降沿出发选择寄存器。从图中就可以看出外部中断/事件触发
[单片机]
STM32时钟基础内容和常见问题
RCC,Reset and Clock Control(复位和时钟控制),在绝大部分MCU芯片中都包含复位和时钟控制模块,也是MCU重要的组成部分。 相比于以前51单片机,现在STM32内部集成的时钟模块功能更加丰富,包含时钟选择、倍频、输出、外设总线时钟配置等。 STM32 时钟基础内容 STM32时钟树具有多项功能,可通过分频和倍频配置系统以及外设的时钟频率,不同型号STM32的时钟树有所不同。 1. 时钟源STM32的时钟源分为高速、低速两类时钟,同时也分内部和外部。HSE:High Speed External,高速外部HSI:High Speed Internal,高速内部LSE:Low Speed Extern
[单片机]
<font color='red'>STM32</font>时钟基础内容和常见问题
STM32中断优先级void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) { u32 tmppriority = 0x00, tmpreg = 0x00, tmpmask = 0x00; u32 tmppre = 0, tmpsub = 0x0F; /* Check the parameters */ assert(IS_FUNCTIONAL_STATE(NVIC_InitStruct- NVIC_IRQChannelCmd)); assert(IS_NVIC_IRQ_CHANNEL(NVIC_InitStruct- NVIC_IRQChannel)); assert(IS_NVIC_PREE
[单片机]

推荐帖子

变态问题求解答!急急急!!!
刚做完按键切换输入法又发现问题:当系统启动后,我不点击屏幕直接按键切换输入法,当切换到汉王的手写软件时,弹出来个对话框:提示需要重起机器当我按完对话框上的OK后(无需重起),再切换输入法,就不会弹出该对话框后来多次实验发现,只要开机后先点一下触摸屏,再切换输入法就不会出现该现象,查看汉王提供的安装包,发现有个TOUCH.DLL,估计是用来响应我的触摸屏按下事件的(以前没发现该问题,因为每次都是通过触摸屏调出该输入法)汉王的手写软件肯定修改不了,首先想模拟一下鼠标的按下事件,用mous
自然的天意 嵌入式系统
急需codewarrior for hcs08 的破解版
谁有确解版的CodeWarriorforhcs08,能否给我发到邮箱里呢?yby227@163.com非常感谢急需codewarriorforhcs08的破解版
chunxilu1979 嵌入式系统
树莓派Cm3+有哪位坛友用过吗?请教下
gpio32和gpio33作为UART用是怎么用的?现在我在/dev里只找到一个串口serial0是GPIO14和15对应的串口。32和33对应的一直没找到,不知道怎么整出来。树莓派Cm3+有哪位坛友用过吗?请教下顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
yangxf1217 Linux与安卓
开关电容电路:从入门到精通
开关电容电路在现代微电子系统中的应用非常广泛。在MP3播放器、移动电话、数码相机、便携硬盘以及单片功率变换器等许多设备的设计中,开关电容电路技术都发挥了至关重要的作用。本书一经面世,就获得了业界的广泛称赞,被称为填补空白的力作。本书深入阐述了开关电容电路的各种特性,着重强调对实际工作非常重要的基础知识和最新技术进展,讲解中尽量避免繁琐的数学推导,并系统、详尽、直观地分析了许多经过工程验证的电路设计实例。本书在阐述开关电容电路理论的同时,还分析了许多经过工程验证的电路设计实例,力图通过对
arui1999 下载中心专版
比较下列可移动存储器的性能,并说说发展前景 急!!
软盘可读写光盘优盘(闪存)可移动硬盘从以下面比较读写速度比较容量耐用性价格等市场综合比较下列可移动存储器的性能,并说说发展前景急!!友情帮顶下。闪存应该是比较有前景的,目前还欠缺的是速度,用在小规模场合容量倒不是问题.读写速度:软盘优盘(闪存)可读写光盘可移动硬盘容量:软盘优盘(闪存)可读写光盘可移动硬盘耐用性:软盘可读写光盘优盘(闪存)可移动硬盘价格等:软盘
紫色宇宙 嵌入式系统
给大家整了一波行车记录仪的拆解、方案干货~
大家有没被行车记录仪的帖子刷屏了~没错,管管正给大家搬了一波关于行车记录仪拆解、DIY、方案干货,一次看遍才更爽~~拆解行车记录仪拆解凯富隆星光夜视行车记录仪,看看这个领域有多卷!4S店赠送的行车记录仪,拆解发现里面用了这颗芯片后视镜行车记录仪大家喜欢用吗?拆解一款9年前的凌度行车记录仪拆解揭秘领克360全景影像:用料扎实,每颗芯片都曾叱咤风云行车记录仪方案安霸A7L30行车记录仪电路(原理图+PCB源文件)基于多CPU和Lab
okhxyyo 汽车电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved