摘要:当时电子体系的规划本钱越来越高,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。
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引脚SO%&&&&&%封装的ATSHA204,其间4个引脚是无效的,其他4个引脚对应VCC、GND、一个同步时钟信号SCL、一个数据信号SDA SCL和SDA别离接到ATmege128的SDL和SDA上,运用ATmege128自带的I2C总线接口与ATSHA204进行通讯。接线示意图如图1所示。
4.2 软件规划
体系运转原理图如图2所示,在ATmega128渠道上面,经过程序的办法完成SHA-256算法,一同,将challenge(音讯摘要)发送到ATSHA204 ATSHA204核算好之后,发回response,再在ATmega128渠道上面完成比照,假如匹配成功,则程序持续运转,假如失利,则程序停止运转,然后完成加密的意图。通讯办法选用根底的I2C通讯。整个程序包含两部分:认证程序没计和SHA-256程序规划。下面别离描绘。
4.2.1 MAC(音讯认证)程序规划
MAC认证程序运用上面提及的规范的TWI读写函数接口,经过发送0x00信号使SDA坚持一段时间的低电平信号,以wakeup加密芯片、chal lenge数组中的格局和response数组的巨细详见datasheet。根本函数流程如下:
4.2.2 ATmega128渠道SHA-256核算程序
SHA-256核算程序需求和ATSHA204芯片上面的哈希算法坚持一致,因而需求移植Atmel公司供给的算法,移植之后的主程序如下:
函数形参中的message指针指向一个88字节的输入数组,len的值本规划中赋值88,digest指针指向回来的response数组。
4.3 功用测验
为了测验体系的可行性,验证哈希核算成果,本规划选用将哈希核算成果输出到串口端的办法来测验整个程序在ATmega128渠道上面的运转。在实践体系运转时,为了确保高强度加密,音讯摘要应该选用随机数,但为了测验便利,暂时选用固定不变的摘要信息。
经过串口接纳到的主机核算的成果(digest)和ATSHA204发送回来的成果截图如图3所示。图中前32字节为SHA-256核算所得的digest,后边为device发回来的count(1字节)+response(32字节)+crc(2字节),能够看出中心的32字节和SHA-256核算所得相同,因而便可认证成功。反之,假如芯片中的密钥数据不是用户界说的。那么回来的response和SHA-256核算的不同,则认证不成功,然后完成了程序加密。
5 测验
为了更好地验证加密体系的可靠性与可行性,在测验认证根本功用之后,将其嵌入到一个实践体系中,对加密功能进行测验。依据已有的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公司加密芯片的典型产品,本规划关于辅导实践使用具有参阅含义。