加密存储芯片AT88SC1616的原理和应用技术简介
置区进行合理的配置和使用,对访问用户分区的权限进行有效的控制。
在对配置区进行合理配置的同时,要将从证所需的三组重要的参数写入到配置区相应的寄存器中。这三组数分别是:Ci(Cryptograms)认证所需的随机数,Nc(Identification Number)芯片序列号,Gc(Secret Seeds)由用户自定义的F1算法得出的秘密种子。
初始化时,首先要向第七组写密码区中写入配置区的写入密码。只有正确写入该密码后用户才可以获得对整个配置区的写入权力,这个密码由芯片供应商提供。正确写入密码后就可以根据要求对芯片的各个寄存器进行配置,最后还要根据用户需要,按照SEC、PER、CMA、FAB的顺序依次向熔断位写入0进行熔断处理。注意,芯片一旦被写熔断后就无法再对配置区的信息进行更改。
(2)认证
整个认证过程是一个双向认证的过程,流程如图4所示。
用户系统的MCU首先从芯片中读出Nc和Ci,根据自定义的F1(Nc,Ks)算法算出Gc,同时利用芯片内部的F2(Gc,Ci,Q0)算法算出Q1,并向芯片发送初始化认证参数Q1和Q0,其中,Q0是CPU方给出的随机数。芯片内部则利用自己的F2逻辑算出Ci+1=F2(Gc,Ci,Q0),同时得出Q2=F2(Gc,Q1)。芯片收到校验认证命令后,判断是否Ci+1=Q1,如是,则有Ci+2=F2(Gc,Ci+1),且用Ci+2更新Ci,芯片中的认证通过;同时更新芯片内部同组的SK(Session Encryption Key)的值。CPU方接收芯片中更新的Ci后,判断是否等于Q2,如果通过,则认证全部通过。
上面说的过程是认证模式,如果想进入加密难证模式的话,需要再次利用认证成功时返回更新的SK值,用它取代Gc,Ci再作为参数;利用F2函数,芯片和MCU方再计算一次并比较,判断相等后才进入加密认证模式。
上面提到的F2算法,是芯片内部的控制逻辑利用Gc、Ci、Q0三个参数初始化的一个DES算法的变种。这个算法是所有加密解密、完整性认证与信息认证的关键。
![](../img/eep/emb/emb-46487fq2x4q2r5fx.jpg)
(3)访问用户区
认证(加密)成功后就可以发送命令选择用户分区进行数据的读写访问了,如果各个分区还有读或写的密码限制,则还需要向访问 的分区写入密码进行校验,通过这一步后才能真正完全访问用户分区。此时如果多个用户分区使用相同的安全等级和密码,则可以将这多个用户区进行合并。需要说明的是,认证一旦成功后,芯片内部的加密机就立即开始启动,MCU对芯片的任何操作都需要根据芯片加密机内部算法进行计算,以保持与它的同步。特别是向用户分区发送一次写入命令和数据后,要紧接着发送一次MCU方计算的加密机结果,与芯片内部加密机计算的结果进行校验。芯片只有接收到正确的校验和后才能将数据写入到相应的地址内,否则数据写不到目的地址,同时芯片会返回错误信息。
3 芯片功能实现
3.1 硬件电路
由于AT88SC1616加密芯片采用两线的I2C总线通信方式,因此与微处理器的硬件接口相对容易。图5是AT88SC1616与AVR单片机Atmegal128相连的硬件接口电路。由于Atmegal 128内部带有I2C接口,因此它可与AT88SC1616直接相连。在其它嵌入式系统中,AT88SC1616与其它微处理器的接口同样简单,只要与相应的I2C接口引脚直接相连即可。如系统的MCU没有专用I2C接口引脚,可使用一般的I/O引脚(GPIO)与AT88SC1616的时钟线和数据线相连,采用I2C模拟方式就可以正常工作。但无论是否进行I2C的模拟,其总线上一定要保证符合I2C总线要求的上拉电阻,以保证其时序的正确无误。
3.2 软件实现
AT88SC1616采用两线的I2C通信方式,其控制时序比较简单,本文不再多述。这里重点讲述一下芯片使用工作过程。
AT88SC1616的初始化流程如图6所示。按照写入配置区密码、区分访问方式和读写密码、安全限制和认证参数、熔断处理的顺序,以I2C的通信方式向芯片内部各寄存器地址发送命令和数据。由于AT88SC1616内部有一内存测试区(memory test)不受安全和密码限制,因此为保证I2C读写时序的正确性,可先向该区进行读写测试,然后再向芯片正确写入各种命令。
用户认证流程如图7所示。无论系统MCU是采用本身I2C接口,还是使用普通I/O口进行I2C模拟,软件的实现都遵循如前所述的总线时序。需要注意的是,在启动I2C START信号前,SCL一定要首先发送4个脉冲来启动通信,否则发送的数据和命令不会被芯片正确接收。这一点与普通I2C器件有所不同,一定要得到重视。
访问用户分区的流程如图8所示。可先向用户分区写入数据后再读出以进行校验。编程时要注意,认证一旦成功,MCU所有对芯片的操作都要加上对内部加密机的计算,对芯片发送命令和数据后要紧接着发送校验和,以和芯片内部的加密机进行校验,校验和不正确芯片会
Atmel AT88SC1616 EEPROM 相关文章:
- Arduino是什么?(07-07)
- 单片机课程设计-ATMEL51系列单片机编程器(12-01)
- ATMEL的ISP下载线(12-01)
- Atmel和STC的51单片机通用ISP下载线制作(11-29)
- ATMEL9263 800*600屏驱动问题(11-22)
- MSP430与ATMEL 93C46通讯子程序(11-13)