您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 系统密钥 >

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

发布时间:2019-06-12 18:55 来源:未知 编辑:admin

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

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

  目前在芯片加密方面主要有使用专用密钥认证芯片,如Atmel AT88系列;其次就是使用不可破解的芯片,如EPLDEPM7128、Actel公司的CPLD;或使用MASK(掩膜)IC,一般来说MASK IC要比可编程芯片难破解。

  本文介绍的ATSHA204是Atmel公司推出的一款专用加密芯片,采用SHA-256公钥算法,具有体积小、功耗低、安全性高等一系列特点,价格也较低,使用范围广泛。

  ATSHA204包含一个可以用来存储密钥数据和关键字的EEPROM阵列,不同阵列区域的访问方式不同,通过合理配置,可以在实现认证的同时防止密钥被读取。该芯片能有防范各种物理攻击的机制,能阻止在主机和芯片间传输数据时受到的逻辑攻击。每个ATSHA204出厂时都具有一个唯一的9字节的序列号,兼容标准I2C总线通信时序,也可通过单线 认证流程

  为了简化编程,ATSHA204支持标准的摘要一答应协议,主机发送一个256位的摘要信息(challenage)到ATSHA204芯片,芯片将摘要信息和存储在芯片内的秘钥一起通过哈希算法计算出一个响应,然后发回到主机。主机只发送摘要信息到设备上面,避免了通过总线时序观察到秘钥数据的可能性。主机控制器也通过相关的公钥算法计算出响应,与设备发送回来的响应对比,实现认证。

  ATSHA204加密芯片内部包含Static RAM和EEPRO,RAM主要用来存储输入命令以及输出结果,EEPROM总大小为4.5 Kb,包含数据区、配置区以及OTP(一次性编程)区域。

  I2C总线接口的芯片。如果主机I/O口在45~85 ms的时间内没有发出时序,则ATSHA204芯片会进入休眠状态,因此在使用前都应当对芯片进行唤醒操作。①配置config区域。config区域的配置是整个芯片配置的核心,分为对数据槽的配置和对OTP区域的配置。ATSHA204配置区包含对16个数据槽(data slot)的配置,配置的主要目的是对16个数据槽的访问进行限制,每个数据槽的配置项为16位,控制着对应的数据槽的访问和使用,本设计中对16个数据槽统一配置如表1所列,每个数据项的配置值为0x8080。

  SHA(Securc Hash Algorithm,安全散列算法)是美国国家安全局(NSA)设计、美国国家标准与技术研究院(NIST)发布的一系列密码散列函数。SHA-256是NIST发布了额外的SHA变体,具有256位的信息摘要长度。该算法的简要处理流程包括以下几步:消息填充附加消息长度初始化缓存迭代压缩得出哈希结果(digest)。

  MAC(消息鉴别码)实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证。ATSHA204中的MAC命令使用SHA-256哈希算法,以88字节的信息量作为输入,并产生一个32字节的报文摘要,以供认证和鉴别。

  本设计采用8引脚SOIC封装的ATSHA204,其中4个引脚是无效的,其他4个引脚对应VCC、GND、一个同步时钟信号SCL、一个数据信号SDA SCL和SDA分别接到ATmege128的SDL和SDA上,使用ATmege128自带的I2C总线 软件设计

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

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

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

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

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

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

  本系统采用开源的Fatfs文件系统作为SD卡的文件系统,SD卡与ATmega128的通信方式采用传统的SPI方式,SD卡中存放已经转换好的单色分辨率为128×64的位图bin文件,认证部分只作为一个具有返回值的子函数,根据返回值确定是否成功。如果成功,则程序继续执行;如果不成功,延时1 s再次启动加密芯片进行认证。如果成功,则视同认证成功;如果还是不成功,则通过液晶显示屏提示不成功,使用assert语句终止程序。

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

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

http://ohmemories.com/xitongmiyue/239.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有