为了防止自己辛辛苦苦开发了产品被别人抄板仿制,我们使用了ATSHA204A的认证功能。在应用启动的时候,首先我们要验证PCBA上焊接的ATSHA204A芯片中存放的密钥是否匹配,如果不匹配将程序挂起;如果密钥匹配继续往下执行。如果没有ATSHA204A芯片,程序也会挂起。为了增强破解难度,在程序中重要功能调用前也都加入密钥验证操作。

ATSHA204A芯片里的数据本身是不可复制的,而我们的目标代码必须配合对应的芯片才能运行。即使“坏人”从存储器中读出目标代码也不能运行,从而达到防抄板仿制目的。

通过专用编程器,将16组密钥写入ATSHA204A芯片,并配置好相应权限。PCBA贴片前烧录好芯片,当然你也可以选择在线烧录。为了防泄密,最好由专人操作。密钥一旦设置就不会轻易变动,所以能看到密钥明文的人越少越安全。我的做法是采用某个目标文件中一段数据,16组密钥在源文件中不连续放置。这样即使你用二进制工具打开目标文件,密钥看起来也会像是某段程序。验证时只需指定组编号而不用密钥明文。

也许有人有疑惑,解释一下:

1、能否在I2C总线上截获密钥?
   ——在I2C总线上并没有传送密钥,而是传送根据秘钥和一组随机数计算出来的digest,因此在总线上截获密钥不可实现。
2、在目标代码中包含密钥,别人从存储器中读取目标文件后是否有可能得到密钥?
   ——目标文件中的确实存有密钥,但是在一个几十MB的二进制文件中寻找一组32字节的密钥,岂不是大海捞针?
3、是否有破解的可能?
   ——对于一些小单片机(51之类的),的确好破,反汇编后,跳过验证步骤即可。但是对于功能强大的MPU,就算你能反汇编,也得找出验证步骤在哪里。因此,只要密钥不泄露,要破解相当困难。

ATSHA204A加密芯片的使用相关推荐

  1. ATSHA204A加密芯片攻略——使用篇

    ATSHA204A加密芯片是ATMEL公司研发的一款高安全性的,功能丰富的加密IC,使用SHA-256算法进行加密操作,内置16*32字节的slot(EEPROM)可以存储用户数据和秘钥,唯一的9字节 ...

  2. atsha204a加密芯片使用攻略——配置篇

    大家好,这是接上一篇使用篇的博客,本篇文章主讲atsha204a加密芯片的配置方式,前面讲到,atsha204a加密芯片内部rom分三个区域,一个是config zone,一个是slot zone,还 ...

  3. ATSHA204A加密芯片之--MAC校验代码

    代码较多,先上传秘钥校验,借鉴了坛子里部分同学的代码 本文实现ATSHA204A 32字节随机数+16选1随机秘钥的MAC秘钥校验,如下是demo代码 static int atsha204_mac( ...

  4. 【加密芯片】加密芯片——ATSHA204A的使用

    闲扯一下 好久没写博客了,技术之路在于坚持,长期写博客,总结, 是对自己一个不错的锻炼,希望看到的博友能够坚持下去,一起互勉. 前言 最近由于产品需要,加班加点完成了这个项目的预研.加密芯片的目的,哪 ...

  5. atsha204a加密ic01

    ATSHA204A加密芯片是ATMEL公司研发的一款高安全性的,功能丰富的加密IC,使用SHA-256算法进行加密操作,内置16*32字节的slot(EEPROM)可以存储用户数据和秘钥,唯一的9字节 ...

  6. 加密芯片ATSHA204读序列号(Serial Number)

    近段时间一个项目使用了atsha204,硬件电路设计好后,需要设计一个程序来测试芯片是否正常工作,于是写了一个读Serial Number的程序. 本文参考了博文 <atsha204a加密芯片使 ...

  7. Arcgis for Js之加载wms服务

    概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...

  8. python websocket_python 模拟websocket通信

    以前,很多网站使用轮询实现推送技术.轮询是在特定的的时间间隔(比如1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给浏览器.轮询的缺点很明显,浏览器需要不断的向服务器发 ...

  9. 适合防抄板,耗材认证,核心算法授权,程序保护,数据传输加解密等应用的逻辑加密芯片和带安全内核加密芯片

    适合防抄板,耗材认证,核心算法授权,程序保护,数据传输加解密等应用的逻辑加密芯片和带安全内核加密芯片.有需求的朋友可以了解下: 1.品牌:MICROCHIP/ATMEL  国别:美国:代表型号:ATS ...

最新文章

  1. 字符设备驱动程序 2
  2. 备份一个万能网卡驱动
  3. R语言使用read.delim函数读取带分隔符的文本文件
  4. PHP中使用include、require、include_once、require_once的区别
  5. RMAN 备份与恢复 实例
  6. C和汇编混合编程--------函数调用后ebp、esp值问题
  7. python 生成器推导式
  8. 文件io(二)--unix环境高级编程笔记
  9. 原来我不懂printf
  10. Spring文件中的xsd文件
  11. flash游戏开发学习
  12. 龙卷风路径_【龙卷风的防范措施】龙卷风的易发地点_龙卷风如何分级 - 妈妈网百科...
  13. C++类模板 template class T详细使用方法
  14. 计算机科学内容基础,计算机科学的基础pdf
  15. Deepin 20社区版设置双屏显示
  16. 谷歌浏览器Adobe Flash player 已过期 解决办法
  17. 内网环境下docker安装PMM 并监控 PG与MySQL
  18. 完美复刻小米路由器Misstar Tools(MT工具箱)BY:蜜罐版
  19. v380云存储怎么查看_v380的云存储
  20. 雅虎问答将正式关站!

热门文章

  1. 深入理解MySQL索引之B+Tree
  2. AI智能外呼机器人源码外呼系统
  3. matlab根据经纬度测角度,经纬度之间的距离和角度算法
  4. VLOOKUP函数具体操作及注意事项
  5. 搭建单组4节点联盟链
  6. Vuex 3使用总结
  7. e297: write error in swap file
  8. 正弦稳态电路的物理量
  9. Django REST 框架详解 07 | 三大认证与权限六表
  10. 12c 2cpu oracle se_Linux 平台安装Oracle Database 12c