一种基于ATSHA204的密钥认证系统设计
摘要:当前电子系统的设计成本越来越高,PCB抄板却变得容易,Flash中的程序也容易被拷贝出来,整个电子产品系统被克隆的几率变得越来越大。针对这种现象,设计了一种基于Atmel公司ATSHA204的嵌入式密钥认证系统。首先对ATSHA204进行简单的介绍,然后阐述了其中的关键算法SHA-256,并进行了软件测试,最后使用ATmega128平台对SD卡进行读取,验证了整个认证系统。
本文引用地址://m.amcfsurvey.com/article/245795.htm引言
现代嵌入式软件系统越来越复杂,开发成本很高,且都是基于控制器外加Flash存储芯片的设计方案,上电即从存储芯片读取程序运行,放在Flash中的程序容易被拷贝,PCB电路板也很容易被复制。为了更好地保护好产品免遭克隆,保护程序设计者的知识产权免受侵害,有必要在系统中使用密钥认证技术。
目前在芯片加密方面主要有使用专用密钥认证芯片,如AtmelAT88系列;其次就是使用不可破解的芯片,如EPLDEPM7128、Actel公司的CPLD;或使用MASK(掩膜)IC,一般来说MASK IC要比可编程芯片难破解。
本文介绍的ATSHA204是Atmel公司推出的一款专用加密芯片,采用SHA-256公钥算法,具有体积小、功耗低、安全性高等一系列特点,价格也较低,使用范围广泛。
1 ATSHA204加密芯片简介
1.1 主要特性
ATSHA204包含一个可以用来存储密钥数据和关键字的EEPROM阵列,不同阵列区域的访问方式不同,通过合理配置,可以在实现认证的同时防止密钥被读取。该芯片能有防范各种物理攻击的机制,能阻止在主机和芯片间传输数据时受到的逻辑攻击。每个ATSHA204出厂时都具有一个唯一的9字节的序列号,兼容标准I2C总线通信时序,也可通过单线通信的方式。
1.2 认证流程
为了简化编程,ATSHA204支持标准的摘要一答应协议,主机发送一个256位的摘要信息(challenage)到ATSHA204芯片,芯片将摘要信息和存储在芯片内的秘钥一起通过哈希算法计算出一个响应,然后发回到主机。主机只发送摘要信息到设备上面,避免了通过总线时序观察到秘钥数据的可能性。主机控制器也通过相关的公钥算法计算出响应,与设备发送回来的响应对比,实现认证。
1.3 芯片组成
ATSHA204加密芯片内部包含Static RAM和EEPRO,RAM主要用来存储输入命令以及输出结果,EEPROM总大小为4.5 Kb,包含数据区、配置区以及OTP(一次性编程)区域。
数据(data)区:数据区的总大小是512 Kb,包含16个通用的容量为32字节的数据槽。这些数据槽可用来存储秘钥、校准数据以及型号信息。每个数据槽可通过配置区配置成只读、可读写、不可访问三种方式。
配置(config)区:配置区的大小为88字节,配置区包含芯片的序列号、ID信息以及每个数据槽的访问权限信息。
一次性编程(OTP)区:大小为64字节,在锁定OTP区域之前,可以通过写命令对OTP区域进行写入操作。
2 ATSHA204加密芯片配置方法
ATSHA204有两种与主机通信的方式,可以通过UART或者I2C总线接口进行通信,本没讣采用带有I2C总线接口的芯片。如果主机I/O口在45~85 ms的时间内没有发出时序,则ATSHA204芯片会进入休眠状态,因此在使用前都应当对芯片进行唤醒操作。
①配置config区域。config区域的配置是整个芯片配置的核心,分为对数据槽的配置和对OTP区域的配置。ATSHA204配置区包含对16个数据槽(data slot)的配置,配置的主要目的是对16个数据槽的访问进行限制,每个数据槽的配置项为16位,控制着对应的数据槽的访问和使用,本设计中对16个数据槽统一配置如表1所列,每个数据项的配置值为0x8080。
![](http://m.amcfsurvey.com/editerupload/201404/44fd78771535b13a110b246b6a245f32.jpg)
OTP区域配置项对应在config区域中的第4个block中的第3个字节,有两种配置模式:0xAA(Read-onlymode),当OTP区域被锁定时,禁止写入;0x00(Legacymode),当OTP区域被锁定时,禁止写入,32字节读也被禁止。本设计中为了保密没计,配置为0x00。
②使用LOCK命令锁定config区域。
③配置data区域。data区域的配置使用标准的write名字将数据写入其中即可,本设计采用32字节一次性写入的方式,每个data slot可以写入不同的数据,写入data slot中的数据将参与后续的MAC运算,因此对于每组写入data slot中的数据必须谨记。
④写OTP区域。OTP区域属于一次性编程区域,一次性写入之后便不可更改,因此应当谨慎操作,OTP中存放的秘钥也将作为SHA-256输入,在使用MAC方式认证时,只需用到OTP区域中的前11字节,因此只需对前11字节进行写入数据操作即可。
⑤使用LOCK命令锁定数据区和OTP区域。
3 SHA-256认证算法与MAC
3.1 SHA-256算法
SHA(Securc Hash Algorithm,安全散列算法)是美国国家安全局(NSA)设计、美国国家标准与技术研究院(NIST)发布的一系列密码散列函数。SHA-256是NIST发布了额外的SHA变体,具有256位的信息摘要长度。该算法的简要处理流程包括以下几步:消息填充→附加消息长度→初始化缓存→迭代压缩→得出哈希结果(digest)。
3.2 MAC
MAC(消息鉴别码)实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证。ATSHA204中的MAC命令使用SHA-256哈希算法,以88字节的信息量作为输入,并产生一个32字节的报文摘要,以供认证和鉴别。
4 基于ATmega128平台的实现
4.1 硬件设计
本设计采用8引脚SOIC封装的ATSHA204,其中4个引脚是无效的,其他4个引脚对应VCC、GND、一个同步时钟信号SCL、一个数据信号SDA SCL和SDA分别接到ATmege128的SDL和SDA上,使用ATmege128自带的I2C总线接口与ATSHA204进行通信。接线示意图如图1所示。
评论