历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2020年03月11日 | 基于ATSHA204的密钥认证系统设计

2020-03-11 来源:21ic

简介:当前电子系统的设计成本越来越高,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公司加密芯片的典型产品,本设计对于指导实际应用具有参考意义。

推荐阅读

史海拾趣

Fairview Microwave Inc公司的发展小趣事

Fairview Microwave Inc公司成立于1992年,最初只是一个由几位工程师组成的小团队,他们致力于开发高质量的射频和微波组件。在当时,微波技术正逐渐在通信、雷达和卫星通信等领域得到广泛应用,但市场上缺乏高性能、可靠的组件供应商。Fairview Microwave看到了这个市场空白,决定从适配器、连接器和衰减器等基础组件入手,凭借精湛的技术和不断的创新,逐渐在行业内树立了良好的口碑。

DBS Microwave Inc公司的发展小趣事

DBS Microwave始终将产品质量放在首位。公司建立了一套严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的质量控制。此外,公司还注重员工的培训和技能提升,确保每一位员工都能够熟练掌握生产技能和质量要求。这些措施使得DBS Microwave的产品质量得到了客户的高度认可。

ADDtek公司的发展小趣事

DBS Microwave始终将产品质量放在首位。公司建立了一套严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的质量控制。此外,公司还注重员工的培训和技能提升,确保每一位员工都能够熟练掌握生产技能和质量要求。这些措施使得DBS Microwave的产品质量得到了客户的高度认可。

Chyao Shiunn Electronic Industrial Ltd公司的发展小趣事

为了进一步扩大业务范围,Chyao Shiunn开始实施全球化战略。公司积极寻求与国际知名企业的合作机会,通过技术合作、合资经营等方式拓展海外市场。同时,公司还加强了对海外市场的调研和分析,根据市场需求调整产品策略和生产计划。这些举措使得公司的业务遍布全球多个国家和地区,实现了合作共赢的局面。

Ava Electronics Corp公司的发展小趣事

在市场竞争日益激烈的情况下,AVA电子意识到单打独斗已经难以应对市场的挑战。于是,公司开始寻求与上下游企业的合作,通过产业链整合实现协同发展。AVA电子与供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和质量保障;同时,公司还与多家销售渠道商建立了战略合作关系,共同开拓市场。这种产业链整合的模式不仅降低了公司的运营成本,也提高了公司的市场竞争力。

DZUS公司的发展小趣事

随着公司实力的增强,DZUS公司开始拓展国际市场。通过参加国际展览、与海外客户建立合作关系等方式,公司逐渐打开了国际市场的大门。同时,公司还针对不同国家和地区的市场需求,推出了定制化的产品和服务。这些举措使DZUS公司的品牌知名度和市场份额不断提升。

问答坊 | AI 解惑

飞利浦车灯 闪亮广州国际照明展

近日,飞利浦汽车照明在广州国际照明展上,展示了其最新技术成果及研究方向。   作为汽车照明的全球领袖,飞利浦的一举一动都让人关注。在这次展会上,飞利浦全方位的展示了其所驾驭汽车照明领域的各项技术,除了汽车头灯以外,产品系列涵盖了汽 ...…

查看全部问答>

成品LED摇摇棒电路图

1.这是一款浙江地区生产的摇摇棒成品电路图,根据实物绘出,单片机型号打磨掉了。 此款产品附带软件,可以在电脑上很方便的更改文字或者图片(COM口),10来元的产品,还算超值。 …

查看全部问答>

哪个片内AD转换的电压数值跳动很大?

本信息来自合作QQ群:AVR单片机学习与交流群(17727270) 群管理员在坛子里的ID:铜河   哪个片内AD转换的电压数值跳动很大,怎么处理下…

查看全部问答>

wince 软件分辨率问题,各位帮忙,谢谢

开发了一款软件,可是开发的时候模拟器的分辨率是640X480的,但最后公司拿来的硬件分辨率是320x240的,软件运行后只显示一个角,怎么办呢?…

查看全部问答>

执行到oeminit done就停止了。

遇到的问题,我加入一个驱动,执行到oeminit done就死了。 之后恢复到原来没有加入驱动之前的,仍然不行。重新编译也不行,重新安装wince,不行。 重新安装windows,不行。太奇怪了。哪位朋友了解的话,能否回复介绍一下?谢谢了。…

查看全部问答>

基于CAN控制电机转速——只用两个按键就可以实现电机的正反转

经过一段时间的学习,终于把CAN基本的东西给搞定,还有许多东西还要去学,在此先发一部分这段时间的学习内容,希望高手拍砖,让讨论抵御这大冷的冬天!! 在刚开始申请板子的时候是想采用232通信来完成电机的控制,但是拿到板子后发现该板子有好多 ...…

查看全部问答>

关于12864液晶显示

本帖最后由 paulhyde 于 2014-9-15 09:05 编辑 我的12864液晶屏不知道怎么的当显示“学”“电”时候就会出现一块黑点,字也显示不出来,求大侠赐教啊,其他的字都能正常显示,目前就发现这两个字显示不出来,就一块黑的。  …

查看全部问答>

数字PFC 控制方法----之 占空比

以前想了想,下午推导半天,开始想着占空比肯定与正弦波的相位有关,但是推导过后发现,占空的式中没有正弦波的影子。不知道是对是错,请大家指出。 注,推导适用于断续及临界模式。     [ 本帖最后由 dontium 于 2012-3-24 23:5 ...…

查看全部问答>

资深DSP软件工程师招聘

美国某知名上市公司招聘资深DSP软件工程师,工作地点在上海,要求有TI DSP音频算法经验以及TI OMAP和双核SoC软件开发经验,如有Linux的研发经验更好,年薪15-25W,如有兴趣,可以加qq447801729,或者msn帐号anqingqianjing2008@hotmail.com。…

查看全部问答>