STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计

SMEC88ST SDK开发包下载

        目前市场上很多嵌入式产品方案都是可以破解复制的,主要是因为方案主芯片不具备防破解的功能,这就导致开发者投入大量精力、财力开发的新产品一上市就被别人复制,到市场上的只能以价格竞争,最后工厂复制的产品反而价格更有优势,因为他们的开发投入几乎可以忽略不计。         所以针对这种主芯片可以被破解的产品方案,开发者需要在开发时在产品方案中使用加密芯片并设计合理的加密方案。开发者首先需要选定性价比高的加密芯片,然后再设计加密方案。

        市面上加密芯片一般有两种:一种是传统的逻辑加密芯片,可配数据与主芯片做相互认证起到简单的加密功能;另一种是智能卡内核的可编程CPU加密芯片,除了具有逻辑加密芯片的功能外,还可以将主芯片部分核心的算法、功能代码以及核心数据放入加密芯片,开发者设计的加密方案更加灵活、安全、可靠。

        本方案选用具有智能卡32位内核的加密芯片SMEC88ST来举例实现使用STM32作为主芯片的产品的加密方案。SMEC88ST提供5K Bytes SRAM、128K Bytes CODE,32K Bytes Data,用户可根据自己的需要来编程设计SEMC88ST与STM32配合的加密方案。下表为SEMC88ST与STM32配的的各种加密功能说明,具体可参见SMEC88ST SDK开发包。

注:

① STM32与SMEC88ST间的I2C协议指令接口规则开发者自定义。

② 上述加解密密钥均为对称DES或3DES密钥,每一对密钥开发者须在开发时分别在STM32和SMEC88ST上同时存储相同的值。

③ 上述随机数都是8字节随机数,加解密算法采用DES或3DES。客户也可以根据自身需要设计或使用其他加解密算法。

④ SMEC88ST随机数发生器产生的随机数是真随机数,这样可以保证关键数据在通讯时每次都是随机数参与的,每次通讯的数据密文都是不一样的,可有效防止破解者在I2C通道上的数据监听分析。

⑤ DES或3DES加解密数据块必须为8字节整数倍,加密原始数据不是8的整数倍的按开发者自己定义补足8的整数倍,对于密文读写数据建议按LV结构补,比如:

原始数据为1122334455,补数后的数据为0511223344558000;

原始数据为11223344556677,补数后的数据为0711223344556677

原始数据为1122334455667788,补数后的数据为08112233445566778880000000000000

STM32配合SMEC88ST加密方案编程时增加加密方案可靠度小技巧:

① 访问STM32 ID和随机数因子时,尽量不要使用常量直接访问目的地址,可以使用一个假地址再通过变量异或、加减或其他算法来得到目的地址,以防止破解者轻易找到这个地址来窜改、固定ID和随机数。程序里确保每次产生的随机数只能使用一次,使用后随机数失效,下次要使用随机数必须重新产生。程序对收到的外设发来的随机数做缓存,如果随机数有重复,做一些特殊处理,防反复跟踪解析。

② STM32程序秘钥值尽量不要连续存放在一个常量或变量数组里,尽量分开存放,使用前通过一些算法计算再组成正确的秘钥值。

③ 主MCU程序做完整性校验,完整性校验绑定UID,防止STM32程序被破解者破解得到后通过窜改来跟踪、分析、破解加密方案。

④ 设计加密方案时尽量不要使用判断正确就继续执行错误就报错这种简单的判断逻辑,可以设计成错误后继续执行,只是在后续执行过程中在不特定的地方出不特定的错误。

⑤ 加密方案里使用的一些校验算法、加解密算法等,尽量不是用标准算法,可以使用这些算法的变异算法。

⑥使用可编程的加密芯片,把主芯片的部分功能代码放入加密芯片里运行,这样才能达到最高安全级别的方案保护,千万不要低估黑客的反汇编能力! (可参考笔者另一篇文章 《浅谈加密芯片的一种破解方法和对应加密方案改进设计》)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/498643.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springcloud各个组件介绍

Spring Cloud 是一系列框架的集合,它基于 Spring Boot 提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和集群状态)中快速构建一些常见模式的工具。下面是对 Sprin…

AAAI 2025论文分享┆一种接近全监督的无训练文档信息抽取方法:SAIL(文中附代码链接)

本推文详细介绍了一篇上海交通大学乐心怡老师课题组被人工智能顶级会议AAAI 2025录用的的最新论文《SAIL: Sample-Centric In-Context Learning for Document Information Extraction》。论文的第一作者为张金钰。该论文提出了一种无需训练的、以样本为中心的、基于上下文学习的…

基于JSP的健身俱乐部会员管理系统的设计与实现【源码+文档+部署讲解】

基于JSP的健身俱乐部会员管理系统的设计与实现 摘 要 目前我国虽然己经开发出了应用计算机操作的健身俱乐部管理系统,但管理软件,管理方法和管理思想三者往往相脱节。造成我国健身俱乐部信息管理系统极端化的缺陷。在国外健身俱乐部已经有了一整套涉猎了…

2024 年度总结

时光荏苒,2024 年即将画上句号,回顾这一年的写博历程,有付出、有收获、有成长,也有诸多值得回味与反思的瞬间。 一、内容创作 主题涉猎:这一年,我致力于探索多样化的主题,以满足不同读者群体的…

SonarQube相关的maven配置及使用

一、maven 全局配置 <settings><pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups><profiles><profile><id>sonar</id><activation><activeByDefault>true</acti…

Python用K-Means均值聚类、LRFMC模型对航空公司客户数据价值可视化分析指标应用|数据分享...

全文链接&#xff1a;https://tecdat.cn/?p38708 分析师&#xff1a;Yuling Fang 信息时代的来临使得企业营销焦点从产品中心转向客户中心&#xff0c;客户关系管理成为企业的核心问题&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 客户关系管理的关键是客…

委外加工业务如何调整原材料的消耗-MIGO A11-后续调整

业务背景&#xff1a;用户反馈委外加工业务回收后&#xff0c;产品已经销售&#xff0c;但委外加工结算时要对原材料消耗时行调整。如果没有销售&#xff0c;准备采用收货冲销后重新收货&#xff0c;但现在已经是2024年最后一天了。。。销售业务已经做完。不可能再冲销。其实这…

工作中常用Vim的命令

Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 0. ctags -R 1.认识 Vim的几种工作模式 2.高频使用命令 2.1 修改文件 2.2 关于行号 2.3 删除多行&#xff0c;删除部分 2.4 复制粘贴 2.5 光标移动 2.…

2、redis的持久化

redis的持久化 在redist当中&#xff0c;高可用的技术包括持久化&#xff0c;主从复制&#xff0c;哨兵模式&#xff0c;集群。 持久化是最简单的高可用的方法&#xff0c;作用就是备份数据。即将数据保存到硬盘&#xff0c;防止进程退出导致数据丢失。 redis持久化方式&…

QT----------常用界面组件的使用

一、QComboBox 类 主要功能&#xff1a;提供一个下拉列表&#xff0c;用户可以从中选择一个或多个选项。 #include <QApplication> #include <QComboBox> #include <QVBoxLayout> #include <QWidget> #include <QMessageBox>int main(int argc…

【GridView渐进全解】第四部分GridView分页进阶

目录 一、启用分页 二、修改GridView分页模板 1.进入控件模板修改视图&#xff1a; 2.进入页码模板&#xff08;PagerTemplate&#xff09;视图 3.添加导航按钮控件 4.修改导航控件属性 三、输入页号跳转 1.进入页码模板视图 2.添加文本框及按钮控件 3.编写代码 【接…

单词统计详解---pyhton

有一个.txt的文本文件&#xff0c;对齐单词进行统计&#xff0c;并显示单词重复做多的10个单词 思路&#xff1a; 1将文本文件进行逐行处理&#xff0c;并进行空格分割处理 2新建一个字典&#xff0c;使用get方法将单词一次添加到字典中&#xff0c;并用sorted方法进行排序。…

大数据技术(六)—— Hbase集群安装

目录 一、Hbase安装 1、准备工作 1.1、安装rsync 1.2、编辑脚本 1.3、测试 2、安装Hadoop 3、安装zookeeper 3.1、下载最新稳定版 3.2、安装配置ZK 4、安装Hbase 4.1、解压文件 4.2、hbase-env.sh 4.3、backup-masters 4.4、配置hbase-site.xml 4.5、regionserv…

K8s集群平滑升级(Smooth Upgrade of K8S Cluster)

简介&#xff1a; Kubernetes ‌ &#xff08;简称K8s&#xff09;是一个开源的容器编排和管理平台&#xff0c;由Google开发并维护。它最初是为了解决谷歌内部大规模容器管理的问题而设计的&#xff0c;后来在2014年开源&#xff0c;成为云原生技术的核心组成部分。‌‌1 K8…

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中的应用前景

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中具有广泛的应用前景。如有滤波、导航方面的代码定制需求,可通过文末卡片联系作者获得帮助 文章目录 结合LSTM和UKF的背景结合LSTM和UKF的优势应用实例研究现状MATLAB代码示例结论结合LSTM和…

Spring源码下载与测试

引言 下载了Spring源码想阅读阅读&#xff0c;发现用的是Gradle&#xff0c;原来实习的时候公司用的也是Gradle&#xff0c;但不怎么会用&#xff0c;感觉相比于Maven&#xff0c;Gradle更适合非常大型的项目&#xff0c;因为他的jar包下载的是真快 下载 由于Spring6开始就强…

【HarmonyOS之旅】ArkTS语法(三) -> 渲染控制

目录 1 -> 条件渲染 2 -> 循环渲染 3 -> 数据懒加载 3.1 -> IDataSource类型说明 3.2 -> DataChangeListener类型说明 ArkTS也提供了渲染控制的能力。条件渲染可根据应用的不同状态&#xff0c;渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据&…

再见2024,你好2025

再见2024&#xff0c;你好2025 1月2月3月4月5~10月11~12月一些收获读书跑步工作 为了让这篇博客不那么平淡&#xff0c;一句话可以总结为&#xff1a;平平无奇的琐碎&#xff0c;没有亮点成果。 也可以数字化概述&#xff1a;涨了1万粉&#xff0c;赚了10万&#xff0c;跑步300…

阴阳师の新手如何速刷5个SP/SSR?!(急速育成)

目标&#xff1a;攒5个SP/SSR式神&#xff0c;参与急速育成&#xff0c;省四个黑蛋&#xff08;想要快速升级技能而且经常上场的式神在攒够5个式神前先不升级&#xff09;【理论上组成&#xff1a;10蓝40蓝预约召唤福利20修行or抽卡】 关键点&#xff1a;蓝票&#xff0c;新手…

Kerberos用户认证-数据安全-简单了解-230403

hadoop安全模式官方文档&#xff1a;https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html kerberos是什么 kerberos是计算机网络认证协议&#xff0c;用来在非安全网络中&#xff0c;对个人通信以安全的手段进行身份认证。 概念&#…