引言
现代嵌入式软件系统越来越复杂,开发成本很高,且都是基于控制器外加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区域进行写入操作。
引言
现代嵌入式软件系统越来越复杂,开发成本很高,且都是基于控制器外加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区域进行写入操作。
举报