一种基于ATSHA204的密钥认证系统设计
系列密码散列函数。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所示。
![](../img/eep/emb/emb-44708zqcevxcfft0.jpg)
?
4.2 软件设计
系统运行原理图如图2所示,在ATmega128平台上面,通过程序的方式实现SHA-256算法,同时,将challenge(消息摘要)发送到ATSHA204 ATSHA204计算好之后,发回response,再在ATmega128平台上面实现对比,如果匹配成功,则程序继续运行,如果失败,则程序终止运行,从而实现加密的目的。通信方式采用基础的I2C通信。整个程序包括两部分:认证程序没计和SHA-256程序设计。下面分别描述。
?
![](../img/eep/emb/emb-44709cdouvwmatvh.jpg)
?
4.2.1 MAC(消息认证)程序设计
MAC认证程序使用上面提及的标准的TWI读写函数接口,通过发送0x00信号使SDA保持一段时间的低电平信号,以wakeup加密芯片、chal lenge数组中的格式和response数组的大小详见datasheet。基本函数流程如下:
?
![](../img/eep/emb/emb-44710en5hcx1fxs3.jpg)
?
4.2.2 ATmega128平台SHA-256计算程序
SHA-256计算程序需要和ATSHA204芯片上面的哈希算法保持一致,因此需要移植Atmel公司提供的算法,移植之后的主程序如下:
?
![](../img/eep/emb/emb-44711vvyinnrjcgz.jpg)
?
函数形参中的message指针指向一个88字节的输入数组,len的值本设计中赋值88,digest指针指向返回的response数组。
4.3 功能测试
为了测试系统的可行性,验证哈希计算结果,本设计采用将哈希计算结果输出到串口端的方法来测试整个程序在ATmega128平台上面的运行。在实际系统运行时,为了保证高强度加密,消息摘要应该采用随机数,但为了测试方便,暂时采用固定不变的摘要信息。
?
![](../img/eep/emb/emb-44712nm33ga5copw.jpg)
?
通过串口接收到的主机计算的结果(digest)和ATSHA204发送回来的结果截图如图3所示。图中前32字节为SHA-256计算所得的digest,后面为device发回来的count(1字节)+response(32字节)+crc(2字节),可以看出中间的32字节和SHA-256计算所得相同,因此便可认证成功。反之,如果芯片中的密钥数据不是用户定义的。那么返回的response和SHA-256计算的不同,则认证不成功,从而实现了程序加密。
?
![](../img/eep/emb/emb-44713bp3fgn04eko.jpg)
?
5 测试
为了更好地验证加密系统的可靠性与可行性,在测试认证基本功能之后,将其嵌入到一个实际系统中,对加密性能进行测试。基于已有的ATmega128硬件平台,选取SD卡文件系统读取程序作为测试,系统的运行流程如图4所示。
?
![](../img/eep/emb/emb-447144meogrf01i5.jpg)
?
本系统采用开源的Fatfs文件系统作为SD卡的文件系统,SD卡与ATmega128的通信方式采用传统的SPI方式,SD卡中存放已经转换好的单色分辨率为128×64的位图bin文件,认证部分只作为一个具有返回值的子函数,根据返回值确定是否成功。
如果成功,则程序继续执行;如果不成功,延时1 s再次启动加密芯片进行认证。如果成功,则视同认证成功;如果还是不成功,则通过液晶显示屏提示不成功,使用assert语句终止程序。
测试中采用置换不同配置的加密芯片来测试加密的可靠性,认证成功和失败时的情况分别如图5和图6所示。
?
![](../img/eep/emb/emb-44715ms45qurq01s.jpg)
?
结语
本文主要介绍了Atmel公司最新加密芯片ATSHA204的原理和使用方法,初步对其中使用到的加密算法SHA-256进行了简单介绍,最后在ATmega128平台使用I2C总线接口模块,利用中断方式实现SD卡的数据发送与接收,并通过MAC方式实现了认证,并详细描述了程序流程,解析了部分程序语句。本设计具有很强的实用性,ATSHA204是目前广泛使用的加密芯片,是Atmel公司加密芯片的典型产品,本设计对于指导实际应用具有参考意义。
- Arduino是什么?(07-07)
- 单片机课程设计-ATMEL51系列单片机编程器(12-01)
- ATMEL的ISP下载线(12-01)
- Atmel和STC的51单片机通用ISP下载线制作(11-29)
- ATMEL9263 800*600屏驱动问题(11-22)
- MSP430与ATMEL 93C46通讯子程序(11-13)