赞
踩
为了防止自己辛辛苦苦开发了产品被别人抄板仿制,我们使用了ATSHA204A的认证功能。在应用启动的时候,首先我们要验证PCBA上焊接的ATSHA204A芯片中存放的密钥是否匹配,如果不匹配将程序挂起;如果密钥匹配继续往下执行。如果没有ATSHA204A芯片,程序也会挂起。为了增强破解难度,在程序中重要功能调用前也都加入密钥验证操作。
ATSHA204A芯片里的数据本身是不可复制的,而我们的目标代码必须配合对应的芯片才能运行。即使“坏人”从存储器中读出目标代码也不能运行,从而达到防抄板仿制目的。
通过专用编程器,将16组密钥写入ATSHA204A芯片,并配置好相应权限。PCBA贴片前烧录好芯片,当然你也可以选择在线烧录。为了防泄密,最好由专人操作。密钥一旦设置就不会轻易变动,所以能看到密钥明文的人越少越安全。我的做法是采用某个目标文件中一段数据,16组密钥在源文件中不连续放置。这样即使你用二进制工具打开目标文件,密钥看起来也会像是某段程序。验证时只需指定组编号而不用密钥明文。
也许有人有疑惑,解释一下:
1、能否在I2C总线上截获密钥?
——在I2C总线上并没有传送密钥,而是传送根据秘钥和一组随机数计算出来的digest,因此在总线上截获密钥不可实现。
2、在目标代码中包含密钥,别人从存储器中读取目标文件后是否有可能得到密钥?
——目标文件中的确实存有密钥,但是在一个几十MB的二进制文件中寻找一组32字节的密钥,岂不是大海捞针?
3、是否有破解的可能?
——对于一些小单片机(51之类的),的确好破,反汇编后,跳过验证步骤即可。但是对于功能强大的MPU,就算你能反汇编,也得找出验证步骤在哪里。因此,只要密钥不泄露,要破解相当困难。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。