ATSHA204A加密芯片的使用
为了防止自己辛辛苦苦开发了产品被别人抄板仿制,我们使用了ATSHA204A的认证功能。在应用启动的时候,首先我们要验证PCBA上焊接的ATSHA204A芯片中存放的密钥是否匹配,如果不匹配将程序挂起;如果密钥匹配继续往下执行。如果没有ATSHA204A芯片,程序也会挂起。为了增强破解难度,在程序中重要功能调用前也都加入密钥验证操作。
ATSHA204A芯片里的数据本身是不可复制的,而我们的目标代码必须配合对应的芯片才能运行。即使“坏人”从存储器中读出目标代码也不能运行,从而达到防抄板仿制目的。
通过专用编程器,将16组密钥写入ATSHA204A芯片,并配置好相应权限。PCBA贴片前烧录好芯片,当然你也可以选择在线烧录。为了防泄密,最好由专人操作。密钥一旦设置就不会轻易变动,所以能看到密钥明文的人越少越安全。我的做法是采用某个目标文件中一段数据,16组密钥在源文件中不连续放置。这样即使你用二进制工具打开目标文件,密钥看起来也会像是某段程序。验证时只需指定组编号而不用密钥明文。
也许有人有疑惑,解释一下:
1、能否在I2C总线上截获密钥?
——在I2C总线上并没有传送密钥,而是传送根据秘钥和一组随机数计算出来的digest,因此在总线上截获密钥不可实现。
2、在目标代码中包含密钥,别人从存储器中读取目标文件后是否有可能得到密钥?
——目标文件中的确实存有密钥,但是在一个几十MB的二进制文件中寻找一组32字节的密钥,岂不是大海捞针?
3、是否有破解的可能?
——对于一些小单片机(51之类的),的确好破,反汇编后,跳过验证步骤即可。但是对于功能强大的MPU,就算你能反汇编,也得找出验证步骤在哪里。因此,只要密钥不泄露,要破解相当困难。
ATSHA204A加密芯片的使用相关推荐
- ATSHA204A加密芯片攻略——使用篇
ATSHA204A加密芯片是ATMEL公司研发的一款高安全性的,功能丰富的加密IC,使用SHA-256算法进行加密操作,内置16*32字节的slot(EEPROM)可以存储用户数据和秘钥,唯一的9字节 ...
- atsha204a加密芯片使用攻略——配置篇
大家好,这是接上一篇使用篇的博客,本篇文章主讲atsha204a加密芯片的配置方式,前面讲到,atsha204a加密芯片内部rom分三个区域,一个是config zone,一个是slot zone,还 ...
- ATSHA204A加密芯片之--MAC校验代码
代码较多,先上传秘钥校验,借鉴了坛子里部分同学的代码 本文实现ATSHA204A 32字节随机数+16选1随机秘钥的MAC秘钥校验,如下是demo代码 static int atsha204_mac( ...
- 【加密芯片】加密芯片——ATSHA204A的使用
闲扯一下 好久没写博客了,技术之路在于坚持,长期写博客,总结, 是对自己一个不错的锻炼,希望看到的博友能够坚持下去,一起互勉. 前言 最近由于产品需要,加班加点完成了这个项目的预研.加密芯片的目的,哪 ...
- atsha204a加密ic01
ATSHA204A加密芯片是ATMEL公司研发的一款高安全性的,功能丰富的加密IC,使用SHA-256算法进行加密操作,内置16*32字节的slot(EEPROM)可以存储用户数据和秘钥,唯一的9字节 ...
- 加密芯片ATSHA204读序列号(Serial Number)
近段时间一个项目使用了atsha204,硬件电路设计好后,需要设计一个程序来测试芯片是否正常工作,于是写了一个读Serial Number的程序. 本文参考了博文 <atsha204a加密芯片使 ...
- Arcgis for Js之加载wms服务
概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...
- python websocket_python 模拟websocket通信
以前,很多网站使用轮询实现推送技术.轮询是在特定的的时间间隔(比如1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给浏览器.轮询的缺点很明显,浏览器需要不断的向服务器发 ...
- 适合防抄板,耗材认证,核心算法授权,程序保护,数据传输加解密等应用的逻辑加密芯片和带安全内核加密芯片
适合防抄板,耗材认证,核心算法授权,程序保护,数据传输加解密等应用的逻辑加密芯片和带安全内核加密芯片.有需求的朋友可以了解下: 1.品牌:MICROCHIP/ATMEL 国别:美国:代表型号:ATS ...
最新文章
- 字符设备驱动程序 2
- 备份一个万能网卡驱动
- R语言使用read.delim函数读取带分隔符的文本文件
- PHP中使用include、require、include_once、require_once的区别
- RMAN 备份与恢复 实例
- C和汇编混合编程--------函数调用后ebp、esp值问题
- python 生成器推导式
- 文件io(二)--unix环境高级编程笔记
- 原来我不懂printf
- Spring文件中的xsd文件
- flash游戏开发学习
- 龙卷风路径_【龙卷风的防范措施】龙卷风的易发地点_龙卷风如何分级 - 妈妈网百科...
- C++类模板 template class T详细使用方法
- 计算机科学内容基础,计算机科学的基础pdf
- Deepin 20社区版设置双屏显示
- 谷歌浏览器Adobe Flash player 已过期 解决办法
- 内网环境下docker安装PMM 并监控 PG与MySQL
- 完美复刻小米路由器Misstar Tools(MT工具箱)BY:蜜罐版
- v380云存储怎么查看_v380的云存储
- 雅虎问答将正式关站!