OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9644|回复: 7

STM32加密方式

[复制链接]

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
发表于 2015-8-26 14:24:12 | 显示全部楼层 |阅读模式
5金钱
利用芯片的ID加密有哪些思路啊?这种利用ID的方式已经被破解!
现在还有那些加密方式啊,现在破解力量哼强大!!!
请大神们支招啊!

最佳答案

查看完整内容[请看2#楼]

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

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-10-19
在线时间
1 小时
发表于 2015-8-26 14:24:13 | 显示全部楼层

STM32加密方案

本帖最后由 jfm365 于 2016-10-19 14:16 编辑

STM32 加 密 方 案 参考
   目前市场上很多嵌入式产品方案都是可以破解复制的,主要是因为方案主芯片不具备防破解的功能,这就导致开发者投入大量精力、财力开发的新产品一上市就被别人复制,到市场上的只能以价格竞争,最后工厂复制的产品反而价格更有优势,因为他们的开发投入几乎可以忽略不计。
   所以针对这种主芯片可以被破解的产品方案,开发者需要在开发时在产品方案中使用加密芯片并设计合理的加密方案。开发者首先需要选定性价比高的加密芯片,然后再设计加密方案。
   市面上加密芯片一般有两种:一种是传统的逻辑加密芯片,可配数据与主芯片做相互认证起到简单的加密功能;另一种是智能卡内核的可编程CPU加密芯片,可以将主芯片部分核心的算法、功能代码以及核心数据放入加密芯片。
   本方案选用具有智能卡内核的加密芯片SMEC98SP来举例实现使用STM32作为主芯片的产品的加密方案。SMEC98SP提供2K Bytes RAM、24K Bytes CODE,8K Bytes Data,用户可根据自己的需要来编程设计SEMC98SP与STM32配合的加密方案。下表为SEMC98SP与STM32配的的各种加密功能说明,具体可参见SMEC98SP评估板(STM32)源代码。
  
功能说明
  
STM32
I2C协议
SMEC98SP
外部认证
  
(加密芯片对SMT32认证)
  
(可选)
①发送取随机数指令
取随机数指令
  
―――――――→
②产生随机数A
③用外部认证密钥加密A得到密文A’,发送外部认证指令
返回随机数(A)
  
←―――――――
外部认证指令(A’)
  
―――――――→
④校验A’并返回状态码
⑤获取状态码
  
成功,继续执行
  
失败,错误处理
返回状态码
  
←―――――――
内部认证
  
(SMT32对加密芯片认证)
  
(可选)
①     生随机数B,并
  
发送内部认证指令
内部认证指令(B)
  
―――――――→
②用内部认证密钥加密B得到
  
密文B’并返回给SMT32
③用内部认证密钥校验B’
  
校验正确,继续执行
  
校验失败,错误处理
返回内部认证数据(B’)
  
←―――――――
密文校验PIN
  
(可选)
①发送取随机数指令
取随机数指令
  
―――――――→
②产生随机数C
③由加密密钥加密C得
  
到加密过程密钥C’
返回随机数(C)
  
←―――――――
④使用加密过程密钥C’加密
  
PIN得到PIN的密文PIN’
Verify PIN (PIN’)
  
―――――――→
⑤由加密密钥加密C得到
  
加密过程密钥C’
⑥使用加密过程密钥C’解密
  
PIN’得到明文PIN
⑧获取状态码
  
校验正确,继续执行
  
校验失败,错误处理
返回状态码
  
←―――――――
⑦校验PIN,并返回校验状态
密文读数据
  
(可选)
①     产生随机数D1,
  
并发送D1和取随机数指令
取随机数指令(D1)
  
―――――――→
②产生随机数D2,并由D1⊕D2生成新的随机数D3
返回随机数(D2)
  
←―――――――
③发送密文读取数据指令
密文读数据指令
  
―――――――→
④读取数据内容,得到
  
明文数据Data
⑥由D1⊕D2生成新的随机数D3
⑤由数据加密密钥加密随机数D3得到过程密钥D3’,使用过程密钥D3’对读取的数据Data加密得到数据密文数据Data’和状态码
由数据加密密钥加密随机数D3
  
得到过程密钥D3’
返回密文数据(Data’)
  
←―――――――
⑦使用过程密钥D3’解密密文数据Data’得到明文数据Data
密文写数据
  
(可选)
①发送取随机数指令
取随机数指令
  
―――――――→
  
返回随机数(E)
  
←―――――――
②产生随机数E
③由数据加密密钥加密随机数E得到过程密钥E’ ,使用过程密钥E’加密数据Data 得到密文数据Data’并发送密文写数据指令
密文写数据指令(Data’)
  
―――――――→
④由数据加密密钥加密随机数E得到过程密钥E’,使用过程密钥E’解密Data’得到文件明文数据Data
⑥获取并处理状态码
返回状态码
  
←―――――――
⑤更新数据Data
SMT32调用加密芯片内关键算法和功能函数
  
(必选)
①调用用户自定义代码功能
  
客户自定义调用指令(XX)
  
―――――――→
  
返回功能数据(YY)和状态码
②客户自由定义函数接口
④获取处理状态码和返回数据(YY)
←―――――――
③执行自定义函数并返回结果
注:
①  STM32与SMEC98SP间的I2C协议指令接口规则开发者自定义。
②  上述加解密密钥均为对称DES或3DES密钥,每一对密钥开发者须在开发时分别在STM32和SMEC98SP上同时存储相同的值。
③  上述随机数都是8字节随机数,加解密算法采用DES或3DES。客户也可以根据自身需要设计或使用其他加解密算法。
④  SMEC98SP随机数发生器产生的随机数是真随机数,这样可以保证关键数据在通讯时每次都是随机数参与的,每次通讯的数据密文都是不一样的,可有效防止破解者在I2C通道上的数据监听分析。
⑤  DES或3DES加解密数据块必须为8字节整数倍,加密原始数据不是8的整数倍的按开发者自己定义补足8的整数倍,对于密文读写数据建议按LV结构补,比如:
l  原始数据为1122334455,补数后的数据为0511223344558000;
l  原始数据为11223344556677,补数后的数据为0711223344556677
l  原始数据为1122334455667788,补数后的数据为08112233445566778880000000000000
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-26 19:42:43 | 显示全部楼层
未必是破解,如果你没有什么非常牛逼的算法,别人按你的功能,请个工程师山寨一下,是很简单的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-26 19:42:51 | 显示全部楼层
比破解成本低多了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

80

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-1-23
在线时间
10 小时
 楼主| 发表于 2015-8-27 15:07:08 | 显示全部楼层
哦,那一般有些什么重要的算法或者加密实战的例子么
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-27 22:45:49 | 显示全部楼层
回复【5楼】zhangyi3312:
---------------------------------
ST宣讲会讲过。基本就是利用唯一ID,判断ID,然后加密,设计软件陷阱之类的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

145

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
469
金钱
469
注册时间
2015-5-14
在线时间
65 小时
发表于 2017-12-28 14:38:27 | 显示全部楼层
赞同站长的意见,一站见血、、、、
回复

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-5-30
在线时间
36 小时
发表于 2020-4-15 09:59:40 | 显示全部楼层
1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可

2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区(stm8为EE区),程序运行时去验证程序区数据是否正确

3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用

4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。//QQ9272078
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 05:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表