STM32软件加密

2023-11-06

摘要:

知识产权的保护,如何让自已辛勤的劳动成果不被别人抄袭,采用有效的手段对IC加密是值得每一个设计者关注的问题。

当然,有人说,没有解不了密的IC,的确,解密是一项技术,只要有人类在不断的研究,它就有破解的一天;但是加密后的IC会增加破解的难度与破解成本,当破解的成本大于收益时,自然就会使破解者望而却步。

STM32芯片这两年销量很好,它的性能和价格都很不错,但如何对STM32进行加密呢,本人结合自已使用STM32 MCU一年多的经验,总结一下我对它加密的理解与方法。

关键字: STM32 加密 读保护

加密,最基本的方法是置读保护,这样可以防止外部工具非法访问,在STM32官网发布的 串口ISP软件中有置读保护和加密选项,选择一个就可以了,这样外部工具就无法对FLASH进行读写操作,但我要重新烧写FLASH怎么办?只能清读保护,而清读保护后,芯片内部会自动擦除FLASH全部内容。

还有人说,置读保护还不够安全,说要采用芯片内的唯一ID来加密,在程序里识别芯片的ID,如果ID不对,则程序不运行,当然,这样安全性又要更高一些,但每个芯片的ID不一样,因此对应的程序也应该不一样,那如何处理呢?有网友说:采购的时候,产品同批生产的ID号应该是连续的,可以通过判别ID的范围;还有网友说,在烧录工具里做一个算法,读取芯片ID,再修改相应的二进制文件。当然还会有很多种方法,这里不展开讨论。

以上介绍的只是一种情况,在实际的应用中还会发生第二种情况。

我们知道,STM32的内部FLASH是用户可编程的,也就是说它支持IAP,而IAP中的APP代码一般是需要开放的,那么只有保证BOOT的代码安全,才能确保不被破解。

前面提到,当IC置读保护后,外部工具不能访问内部FLASH,但CPU可以访问,破解者完全可以自已编写一段代码通过BOOT下载到IC 运行,然后在程序中读出你的BOOT代码。

只能加以限制,使别人的代码运行不了,才能保证BOOT不被读出。

常用的方法是采用加密算法,如AES;流程如下:

APP代码加密,下载时,在BOOT中解密,这样,只有通过正确加密的APP代码才能正常的运行,因此加密的算法就成了你的密钥,而这个是你独有的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32软件加密 的相关文章

  • 嵌入式开发—浅析DMA

    文章目录 1 什么是DMA 2 DMA有什么用 3 怎么用DMA 3 1 常规的DMA配置 3 2 回绕传输 3 3 DMA中断 4 DMA的拓展应用 1 什么是DMA DMA全程Direct Memory Access 即直接存储器访问
  • STM32开发笔记(二)——动态模块加载和ELFLoader

    STM32开发笔记 二 动态模块加载和ELFLoader 小狼 http blog csdn net xiaolangyangyang 动态模块加载的好处 动态模块加载的好处很多 例如 当你升级一个系统的时候 可以只升级一个模块 而不必升级
  • STM32开发——串口通讯(第2篇)——WIFI(Esp8266)

    目录 1 ESP8266 作为设备 2 ESP8266作为服务器 注意 1 在中断中一般不直接在中断服务函数里处理数据 而是在收到数据后直接丢给队列 再处理数据 2 在中断服务函数里尽量减少使用延时函数及打印函数 1 ESP8266 作为设
  • [嵌入式开发模块]DS3231时钟芯片 驱动程序

    刚刚写完DS3231时钟芯片的驱动程序 这里开源出来供大家使用 需要的自取 先简单介绍下这个芯片 然后直接给驱动代码以及示例代码 DS3231简介 简介 DS3231是一款低成本 高精度I2C实时时钟 RTC 具有集成的温补晶体振荡器 TC
  • 掌握GDB调试工具,轻松排除bug!

    一 什么是GDB gdb是GNU debugger的缩写 是编程调试工具 GDB官网 https www gnu org software gdb GDB适用的编程语言 Ada C C objective c Pascal 等 GDB的工作
  • 使用 Simulink 进行 STM32 编程

    目录 介绍 所需材料 步骤 1 在MATLAB中设置STM32 MAT软件路径 步骤 2 在STM32CubeMX中创建一个项目 步骤 3 配置时钟和 GPIO 引脚 步骤 4 项目经理并生成代码 步骤 5 在 Simulink 中创建模型
  • 基于STM32的多功能心电信号监测系统设计

    1 系统总体方案设计 系统由STM32F103微处理器模块 ADS1292R心电采集模块 LMT70体表温度传感器模块 ESP8266无线WiFi模块 MMA955L加速度计模块 系统电源 PC服务端等组成 STM32F103作为主控制器实
  • ROS开发日记(1)——ROS基础知识

    ROS 即开源机器人操作系统 1 官方定义 ROS是面向机器人的开源的元操作系统 meta operating system 1 它能够提供类似传统操作系统的诸多功能 如硬件抽象 底层设备控制 常用功能实现 进程间消息传递和程序包管理等 此
  • STM32软件加密

    摘要 知识产权的保护 如何让自已辛勤的劳动成果不被别人抄袭 采用有效的手段对IC加密是值得每一个设计者关注的问题 当然 有人说 没有解不了密的IC 的确 解密是一项技术 只要有人类在不断的研究 它就有破解的一天 但是加密后的IC会增加破解的
  • 趣谈操作系统原理,存储管理之页式、段式、段页式存储

    一 概述 非连续分配管理方式允许一个程序分散地装入到不相邻的内存分区 根据分区的大小是否固定分为分页式存储管理方式和分段式存储管理方式 分页存储管理方式中 又根据运行作业时是否要把作业的所有页面都装入内存才能运行分为基本分页式存储管理方式和
  • 【面试】嵌入式软件与非嵌入式软件、设备驱动与裸机驱动开发区别

    嵌入式软件开发与非嵌入式软件开发区别 设备驱动开发与裸机驱动开发区别 嵌入式开发与传统单片机开发区别 如果面试遇到这样的问题 三个问题的答案一致 答 我认为嵌入式软件与非嵌入式软件 设备驱动开发与裸机驱动开发 嵌入式开发与传统单片机开发 的
  • 软件架构及几种典型框架

    什么是软件架构 什么是软件框架 很多时候 我们常常会混用架构和框架这两个词 实际上 广义上的架构和框架在概念上有很大的不同 架构给人的感觉 包容上更大 所以实际上架构是包含了框架的概念的 广义的架构应为一个系统的架构 不仅仅涉及软件中的技巧
  • x86架构芯片启动过程分析

    1 上电启动顺序 上电自检 读取ROM里的bios程序 bios程序会进行硬件检测 比如 内存 硬盘 显卡等 bios完成自检后 需要选择引导设备 比如设备上有U盘 SSD eMMC 机械硬盘 bios需要知道从哪个启动介质去启动计算机 b
  • lv4 嵌入式开发-4 标准IO的读写(二进制方式)

    目录 1 标准I O 按对象读写 2 标准I O 小结 3 标准I O 思考和练习 文本文件和二进制的区别 存储的格式不同 文本文件只能存储文本 除了文本都是二进制文件 补充计算机内码概念 文本符号在计算机内部的编码 计算机内部只能存储数字
  • 深入浅出PID控制算法(三)————增量式与位置式PID算法的C语言实现与电机控制经验总结

    前文对PID算法离散化和增量式PID算法原理进行来探索 之后又使用Matlab进行了仿真实验 对PID三个参数又有了更深入的认识 接下来我们来使用C语言进行PID算法实现 并且结合控制电机的项目来深入学习 1 PID 算法C 语言原代码 先
  • 树莓派+OpenCV+Arduino实现二维码与颜色识别检测及物料抓取总结

    1 系统总体设计和分析 系统总体分为硬件设计和软件设计 硬件设计就是基于树莓派2代B型和Arduino的硬件基础平台搭建 能够适应小型 灵活的现实需求 并为软件设计提供可观的计算能力承载和算法改进空间 软件设计就是在嵌入式Arduino上构
  • Arduino对57步进电机的控制

    最近实验室的智能车从大车路线改到了小车路线 于是笔者也跟着学习一些新的知识 大车的控制可以使用标准的CAN协议 很多方便的指令都能够通过CAN来传输给ECU并得到相应的反馈 然而对于最近接触的电动小白车 控制策略只能使用物理机械去控制 因此
  • 关于Keil不识别系统头文件core_cm3.h的问题

    之前遇到一次这个问题 解决了 之后又遇到一次就忘了之前是怎么解决的了 所以记录一下 所有不识别系统头文件的问题都可以用这种方式解决 找到你工程目录下的头文件 我以core cm3 h为例 这个头文件在STM32 LIBRARY CMSIS
  • Ubuntu—vi编辑器的使用一

    vi编辑器 vi是Linux中最基本的编辑器 但vi编辑器在系统管理 服务器配置工作中永远都是无可替代的 vi编辑器的使用 vi有以下三种模式 命令行模式 用户在用vi编辑文件时 最初进入的是该模式 可以进行复制 粘贴等操作 插入模式 进行
  • 一文搞懂Linux内核页框回收(Page Frame Reclamation)

    页替换策略 Page Replacement Policy 每当讨论页替换策略 提及最多的就是基于LRU Least Recently Used 的算法 但严格来说这是不对的因为这些lists并不是严格按照LRU的顺序来维护的 在Linux

随机推荐

  • 手把手教你制作Jlink-OB调试器(含原理图、PCB、外壳、固件)

    前言 好久没更新博客和公众号了 感谢大家还没取关哈 好吧 我承认是我太懒了 今天分享一个福利 趁着前段时间嘉立创和捷配打价格战 一天之内 多次降价 看着真是热闹 捷配降到最低3元一款 而嘉立创降到最低5元一款 都是顺丰包邮 不过嘉立创免颜色
  • springboot之事务aop

    项目结构 实现 pom
  • JAVA中Scanner类中,next()与nextLine()的异同

    在运用Scanner做语句解析的时候在next 与nextLine 之间小小的困惑了一下 下面是我的调试分享 next public static void main String args Scanner scanner new Scan
  • 抖音新秒注销,无需等7天的方法,机不可失马上和谐

    抖音注销账号新方法 快速安全 不再需要等待7天 立即与谐同步 随着社交媒体的普及和用户需求的变化 有些人可能希望注销自己在抖音上的账号 然而 传统的注销流程通常需要等待7天的冷静期 让很多用户感到不便和焦虑 今天 我将为大家介绍一种全新的方
  • 升级到Android Studio 3.2.1 ,报 org.gradle.internal.exceptions.LocationAwareException

    最近收到AS版本的推送就果断更新了 更新以后 打开自己最近的项目 报如下错误 No route to host connect failed Caused by org gradle internal exceptions Location
  • Python 我编码遇到的错误

    ValueError invalid literal for int with base 10 0 000 Traceback most recent call last File
  • Hadoop环境搭建(主机名、Ip地址、映射及网络配置)

    一 在安装的虚拟机上修改主机名地址 1 显示当前主机名命令 hostname 2 修改主机名命令 方法 输入 vi etc hostname 方法 输入 hostnamectl set hostname 进入后在编辑模式下 删除原来的主机名
  • java操作excel获取每列的信息并按照学号-姓名格式创建文件夹

    1 导入Maven依赖
  • 数据库连接工具类

    数据库连接 概述 一 jdbc 实验环境搭建 二 Druid连接数据库 实验环境搭建 三 Maven连接数据库 实验环境搭建 四 mybatis连接数据库 实验环境搭建 五 Spring连接数据库 六 SSM 概述 什么是JDBC Java
  • 前端实现Jest单元测试

    介绍 最近在学一些关于工程化的内容 里面正好提到了jest单元测试 首先简单理解一下什么是单元测试 举个例子 小明同学偶然发现海海同学做的组件库不错 想学习一下 于是就拉了代码 不过在看代码的过程中发现有的代码有更优性能的方法 但是呢他自己
  • ctf.show web web1-web10

    ctf show web web1 web10笔记 记录一些web的知识点 本人刚开始学习web很多资料都是借鉴大佬的 许多复现的过程都是大同小异的 写的菜了请大佬们下手轻点 web1 一道简单的入门题 打开环境发现只有一串英文 flag在
  • 唯一索引比普通索引快吗?运行原理是什么?

    推荐阅读 项目实战 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画 AI讲话 翻译 GPU点亮AI想象空间 资源分享 史上最全文档AI绘画stab
  • 从源码角度深入分析iScroll中的scrollToElement方法

    问题1 官方解释 scrollToElement el time offsetX offsetY easing You re gonna like this Sit tight The only mandatory parameter is
  • cocos2d-x-2.2.4 (四) 将MyGame在Android上跑起来

    继续上一篇 我接着在MyGame工程干活 这次要将MyGame运行在Android设备上 要将cocos2dx的项目在Android上跑起来需要NDK和eclipse NDK用来编译cocos2dx的cpp文件 将其打包成动态库文件 例如l
  • 数字信号处理技术(二)变分模态分解(VMD)-Python代码

    本文仅对变分模态分解 VMD 的原理简单介绍和重点介绍模型的应用 1 VMD原理 变分模态分解 VMD 的原理在此不做详细介绍 推荐两个不错的解释参考连接 变分模态分解原理步骤 和VMD算法的介绍 官方源码 2 VMD应用实战 2 1 简介
  • AngularJS系列之JavaScript函数和对象

    转载请注明来源 http blog csdn net caoshiying viewmode contents 这篇文章针对的是有2年以上编程经验的朋友们参考的 作参考资料之用 不从基础讲起 在ES6之前 JavaScript没有class
  • Mybatis 入门

    1 Mybatis 项目构建 新建数据库 CREATE DATABASE mybatis USE mybatis DROP TABLE IF EXISTS user CREATE TABLE user id INT 20 NOT NULL
  • 多元共进|拓宽知识边界,持续增长技能

    在开放且迅速迭代的技术生态中 开发者面临着无限的机遇 与此同时 开发者的知识储备和技能水平也被赋予了更高的期待 2023 Google 开发者大会与开发者们共享了技术新知 也同步提供持续更新的学习资源 包括可以上手实践的课程和练习 加深开发
  • python+opencv+numpy入门

    一 简介 python是一门编程语言 由于其可以调用很多科学计算包 如numpy scipy matplotlib等而功能强大 numpy是python可调用的科学计算包 主要用于矩阵运算 它是python的数值计算扩展 这种工具可用来存储
  • STM32软件加密

    摘要 知识产权的保护 如何让自已辛勤的劳动成果不被别人抄袭 采用有效的手段对IC加密是值得每一个设计者关注的问题 当然 有人说 没有解不了密的IC 的确 解密是一项技术 只要有人类在不断的研究 它就有破解的一天 但是加密后的IC会增加破解的