基于ATSHA204的密钥认证系统设计

发布者:boczsy2018最新更新时间:2020-03-11 来源: 21ic关键字:ATSHA204  密钥认证系统  ATmega128 手机看文章 扫描二维码
随时随地手机看文章

简介:当前电子系统的设计成本越来越高,PCB抄板却变得容易,Flash中的程序也容易被拷贝出来,整个电子产品系统被克隆的几率变得越来越大。针对这种现象,设计了一种基于Atmel公司ATSHA204的嵌入式密钥认证系统。首先对ATSHA204进行简单的介绍,然后阐述了其中的关键算法SHA-256,并进行了软件测试,最后使用ATmega128平台对SD卡进行读取,验证了整个认证系统。


摘要:当前电子系统的设计成本越来越高,PCB抄板却变得容易,Flash中的程序也容易被拷贝出来,整个电子产品系统被克隆的几率变得越来越大。针对这种现象,设计了一种基于Atmel公司ATSHA204的嵌入式密钥认证系统。首先对ATSHA204进行简单的介绍,然后阐述了其中的关键算法SHA-256,并进行了软件测试,最后使用ATmega128平台对SD卡进行读取,验证了整个认证系统。


引言


现代嵌入式软件系统越来越复杂,开发成本很高,且都是基于控制器外加Flash存储芯片的设计方案,上电即从存储芯片读取程序运行,放在Flash中的程序容易被拷贝,PCB电路板也很容易被复制。为了更好地保护好产品免遭克隆,保护程序设计者的知识产权免受侵害,有必要在系统中使用密钥认证技术。


目前在芯片加密方面主要有使用专用密钥认证芯片,如Atmel AT88系列;其次就是使用不可破解的芯片,如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。

基于ATSHA204的密钥认证系统设计

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所示。


基于ATSHA204的密钥认证系统设计

4.2 软件设计


系统运行原理图如图2所示,在ATmega128平台上面,通过程序的方式实现SHA-256算法,同时,将challenge(消息摘要)发送到ATSHA204 ATSHA204计算好之后,发回response,再在ATmega128平台上面实现对比,如果匹配成功,则程序继续运行,如果失败,则程序终止运行,从而实现加密的目的。通信方式采用基础的I2C通信。整个程序包括两部分:认证程序没计和SHA-256程序设计。下面分别描述。

基于ATSHA204的密钥认证系统设计

4.2.1 MAC(消息认证)程序设计


MAC认证程序使用上面提及的标准的TWI读写函数接口,通过发送0x00信号使SDA保持一段时间的低电平信号,以wakeup加密芯片、chal lenge数组中的格式和response数组的大小详见datasheet。基本函数流程如下:

基于ATSHA204的密钥认证系统设计

4.2.2 ATmega128平台SHA-256计算程序


SHA-256计算程序需要和ATSHA204芯片上面的哈希算法保持一致,因此需要移植Atmel公司提供的算法,移植之后的主程序如下:

基于ATSHA204的密钥认证系统设计

函数形参中的message指针指向一个88字节的输入数组,len的值本设计中赋值88,digest指针指向返回的response数组。


4.3 功能测试


为了测试系统的可行性,验证哈希计算结果,本设计采用将哈希计算结果输出到串口端的方法来测试整个程序在ATmega128平台上面的运行。在实际系统运行时,为了保证高强度加密,消息摘要应该采用随机数,但为了测试方便,暂时采用固定不变的摘要信息。

基于ATSHA204的密钥认证系统设计

通过串口接收到的主机计算的结果(digest)和ATSHA204发送回来的结果截图如图3所示。图中前32字节为SHA-256计算所得的digest,后面为device发回来的count(1字节)+response(32字节)+crc(2字节),可以看出中间的32字节和SHA-256计算所得相同,因此便可认证成功。反之,如果芯片中的密钥数据不是用户定义的。那么返回的response和SHA-256计算的不同,则认证不成功,从而实现了程序加密。



基于ATSHA204的密钥认证系统设计





5 测试


为了更好地验证加密系统的可靠性与可行性,在测试认证基本功能之后,将其嵌入到一个实际系统中,对加密性能进行测试。基于已有的ATmega128硬件平台,选取SD卡文件系统读取程序作为测试,系统的运行流程如图4所示。

基于ATSHA204的密钥认证系统设计

本系统采用开源的Fatfs文件系统作为SD卡的文件系统,SD卡与ATmega128的通信方式采用传统的SPI方式,SD卡中存放已经转换好的单色分辨率为128×64的位图bin文件,认证部分只作为一个具有返回值的子函数,根据返回值确定是否成功。


如果成功,则程序继续执行;如果不成功,延时1 s再次启动加密芯片进行认证。如果成功,则视同认证成功;如果还是不成功,则通过液晶显示屏提示不成功,使用assert语句终止程序。


测试中采用置换不同配置的加密芯片来测试加密的可靠性,认证成功和失败时的情况分别如图5和图6所示。

基于ATSHA204的密钥认证系统设计

结语


本文主要介绍了Atmel公司最新加密芯片ATSHA204的原理和使用方法,初步对其中使用到的加密算法SHA-256进行了简单介绍,最后在ATmega128平台使用I2C总线接口模块,利用中断方式实现SD卡的数据发送与接收,并通过MAC方式实现了认证,并详细描述了程序流程,解析了部分程序语句。本设计具有很强的实用性,ATSHA204是目前广泛使用的加密芯片,是Atmel公司加密芯片的典型产品,本设计对于指导实际应用具有参考意义。

关键字:ATSHA204  密钥认证系统  ATmega128 引用地址:基于ATSHA204的密钥认证系统设计

上一篇:基于AVR单片机的列车临时限速手持巡检设备
下一篇:任务12:中断与定时器

推荐阅读最新更新时间:2024-11-13 00:29

ATmega128(SPI通信)
//atmega128的SPI应用示例程序,采用SPI接口的DAC芯片TLC5615,连续进行电压转换 //DAC为TI公司的10位串行电压型输出的DAC芯片TLC5615,SPI接口连接方式 //驱通过SPI接口,动DAC芯片,使其完成000-FFC(TLC5615后两位的值一直为0)输出的转换 //LED指示灯DS3对应从暗到亮,表示电压逐渐增大 //编译环境 AVR Studio 4.17/AVR GCC //系统时钟7.3728MHZ,设置熔丝位为外部高频石英晶体振荡,启动时间4.1ms //*******************************************************************
[单片机]
ATMEGA128 PWM输出系列例程
1、定时器0,快速PWM模式 快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率,而比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为: PWM频率 = 系统时钟频率/(分频系数*(1+计数器上限值)) 快速PWM模式适合要求输出PWM频率较高,但频率固定,占空比调节精度要求不高的应用。 #include #include #define uint unsigned int #define uchar unsigned char volatile uchar num; void pwm0_init(void) { DDRB=0X
[单片机]
ATmega128 状态寄存器
状态寄存器包含了最近执行的算术指令的结果信息。这些信息可以用来改变程序流程以 实现条件操作。状态寄存器的内容只有在ALU 运算结束后才会更新。这样,在多数情况 下就不需要专门的比较指令了,从而使系统运行更快速,代码效率更高。 在进入中断例程时状态寄存器不会自动保存;中断返回时也不会自动恢复。这些工作需 要软件来处理。 AVR 中断寄存器 – SREG – 定义如下: • Bit 7 – I: 全局中断使能 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果I 清零,则不论单独中断标志置位与否,都不会产生中断。任意一个中断发生后I 清零,而执行RETI指令后置位以使能中断。I 也可以通过SEI 和CLI
[单片机]
<font color='red'>ATmega128</font> 状态寄存器
基于ATmega128程控直流功率放大电路的设计方案
简介:本文结合现在一般放大器的设计方案及存在的问题,论述了程控宽带直流功率放大器各单元电路的详细设计方法,提出大动态范围、低失真的程控宽带直流放大器的设计方案和实现方法。测试结果表明:该方案较好地解决了增益、直流宽带、功率等放大器关键参数的矛盾,实测的系统各项指标均达到设计要求。 0) 引言 本文实现程控主要是采用可编程增益运放芯片AD603,微控制器选用AVR单片机增强型系列ATmega128单片机,直流功率放大选用集成运放THS3092来完成。具有动态范围大、低失真、可预置、程控性好、人机界面友好、操作简单方便等优势。该功率放大器系统增益调节范围为0~60dB,步进间距为1dB,频带为DC~10 MHz,输出电压有效值
[单片机]
基于<font color='red'>ATmega128</font>程控直流功率放大电路的设计方案
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved