Atmel加密认证芯片的应用实例
作者 贝能国际
本文引用地址:http://www.amcfsurvey.com/article/201806/382310.htm摘要:介绍了基于Atmel加密认证芯片的应用实例。
大概所有工程师最痛恨的莫过于自己的产品被山寨,自己的代码无法被保护,成为网上公开资源。也或者服务器被黑客攻击,无法正常运营,造成恶劣影响甚至安全隐患。有没有办法来阻止上述现象的发生或者减少类似事情发生呢?
有!从加密学的角度来讲有三个层次:数据加密、数据完整性和身份认证。三者之中哪一个最重要呢?身份认证,如果对方不是我要通讯的目标,干脆拒绝与之沟通,是不是更安全?
Atmel公司提供的身份加密认证分两种,一种是非对称加密算法,如ATECC508A。这一类产品功能强大,每个器件都可以有一对自己的公私钥,两两不同,适用于做网络云端的身份认证。另一种是对称加密算法,如ATSHA204A, 该器件适合用作产品防拷贝、软件IP核保护、或配件防伪,防止赝品的应用风险。
1 ATSHA204A功能特点
ATSHA204A具有以下功能特点:支持SHA-256算法;内置16*32字节的slot(EEPROM),存储用户数据和秘钥;唯一的9字节序列号;512 bits的OTP区用于保存固定信息;两种通信方式支持单总线和I2C;2.0~5.5 V供电;休眠<150 nA;片上主动屏蔽层;所有存储器内部加密;内部状态一致性检查;电源篡改保护;温度锁定;内部时钟产生;没有封装或晶粒识别;设计目的是防御多种攻击,如图1所示。
2 功能简介
加密认证芯片内部有三个区域: Configuration、Data和OTP。关键性能如下所示:
1)与芯片的通讯,都是基于“命令”来进行;
2)Configuration和Data区一旦锁定,没有办法解锁,锁定的方法是通过lock命令;
3)Configuration区在未锁定的时候,可以使用write 命令来写操作,但0x00-0x03地址不能写,序列号和版本号出厂固定。0x15地址不能用write命令来写;
4)在Configuration锁定前,Data和OTP区既不能写也不能读。而在Configuration锁定后,Data区锁定前,Data区只能写不能读,在Data区锁定后,是否可读写由Configuration中的配置来决定。
5)配置区与秘钥存储区有严格的对应关系,秘钥区的使用需要遵守配置区的配置参数,不匹配的话会导致命令执行失败。
3 配置应用
配置有两种方法:一是利用上位机配置软件,配合烧写器工具进行配置,如图2所示。
这种方式可视化,界面直观好理解。同时提供多种插件验证工具,使用便捷。但需要配合硬件的工具来实现。
另一种方法,使用MCU程序配置。优点是可以在电路板上操作,不需要额外的工具。相对繁琐的是,需要一个单独的配置程序在MCU上运行一下,完成配置功能后,才能再烧写用户的应用程序。以上两种方法各有利弊,需要权衡使用。不管采用哪种方式,对秘钥的保护是至关重要的,尤其是对称加密认证的方式,一旦泄露,防护功能就会形同虚设。
具体到产品应用时,可以所有产品都用同一个秘钥,这样秘钥管理简单,但风险相对较高。也可以每个产品都用不同的秘钥,只是秘钥管理相对麻烦。也可以巧妙的利用芯片本身的唯一序列号,配合根秘钥来派生不同的秘钥,将这个派生秘钥用于产品,这样既方便管理,又不至于使所有产品都用一个秘钥。如图3所示即为一种典型的利用派生秘钥做加密认证的应用。
4 软件实现
Microchip公司官方提供开源软件包,版本为Cryptoauthlib-20171117。该软件包支持ATECC608A。下载时邮箱注册即可。
CryptoAuthLib分三个部分,它们是库的主要接口,分别为atcab、atcah和atcac。
1)atcab是ATCA设备的主要接口。这部分包含所有的初始化,芯片配置和设置。
2) atcah提供在ATCA设备上执行的命令,这些命令支持高级调试和MCU的模拟。
3)atcac提供对在软件中实现的加密命令的访问。
5 对称加密认证实例
对称身份验证是一个挑战/响应过程,主机设备挑战远程设备,例如附件(如电池)或可消耗设备(墨盒),以确保真实可信。被挑战的设备对预期的结果作出反应。该方法要求主机和远程设备共享相同的密钥。开发人员面临的问题是如何安全地将这些秘密嵌入到主机和远程设备中,解决方案是使用一个安全的硬件密钥存储设备,来包含主机和远程设备中的共享密钥和惟一序列号。这个实验室我们将使用ATECC508A来实现,如图4、图5和图6所示。
在本实验室中,将模拟一个包含以下内容的系统:
1)主机装置,包含一个微控制器和一个安全的硬件加密授权设备,ECC508A。
2)远程设备,只包含一个安全的硬件加密授权设备,在ECC508A(无微控制器)。
主机和远程设备的ECC508A都需要配置共享密钥,所有ECC508都包含一个惟一的序列号。
配置共享密钥:
芯片在使用前需要进行配置,配置的内容包括,对配置区进行写操作,内容是设置秘钥槽的使用和访问权限,之后对配置区进行锁定。锁定配置区后才可以写数据区,对数据区的操作就是写秘钥槽,这时数据区为只读,通过返回值判断写入是否成功。
注意事项:
第一步,MCU从主机端ATECC508读取序列号,由它生产一个随机数;
第二步,MCU切换到与从机ATECC508A通讯,读取序列号,再由从机ATECC508A利用自己的序列号,刚才生产的随机数和保存在它里面的秘钥进行硬件哈希运算,运算结果发给主机MCU;
第三步,MCU重新切换回与主机ATECC508的通讯,把刚刚得到的哈希运算结果,随机数和序列号给它。由它再根据自己保存的秘钥和随机数、序列号一起来验证从机端计算完的结果是否和自己计算的一致,来最终判定是否验证通过。
6 结论
Atmel的加密认证芯片本身具有一系列的防护措施,在增加成本不多的前提下,可以给客户带来极高的安全价值体验。在配件防伪和防抄板方面表现优异,使得产品仿制变得难度更高,可以更好的保护产品,避免不必要的损失。
本文来源于《电子产品世界》2018年第7期第79页,欢迎您写论文时引用,并注明出处。
评论