电子说
在电子设计领域,安全与性能始终是工程师们追求的两大核心目标。Atmel AT88SC118 CryptoCompanion芯片,作为一款专为CryptoRF和CryptoMemory产品设计的芯片,凭借其卓越的安全特性和出色的性能表现,成为了众多工程师的首选。今天,我们就来深入解析这款芯片,探索其背后的技术奥秘。
Atmel AT88SC118是与CryptoRF(CRF)和CryptoMemory(CM)芯片配套使用的伴侣芯片,在文档中有时也被称为CMC或CryptoMemory Companion芯片。它广泛采用了SHA - 1哈希算法,能够安全地实现主机算法、存储主机密钥,并验证主机固件摘要,为系统提供了强大的安全保障。
CRF芯片包含一些秘密信息,主机系统需要知道或推导出这些信息才能与CRF建立信任链接并进行通信。AT88SC118以隐蔽的方式将这些秘密存储在非易失性存储器中,并具备执行CRF数据手册中指定的认证、密码和加密/解密功能的所有电路,从而确保秘密信息不会被泄露。
具体来说,每个CRF芯片都有一个序列号(ID)和认证密钥 (G{1}) 存储在EEPROM中,ID可自由读取,而 (G{1}) 无法读取且每个标签都是唯一的。AT88SC118的EEPROM中包含一组公共密钥 ((F{n})) ,它将 (F{n}) 与ID和 (K{ID}) 结合计算出一个预期与CRF芯片中的 (G) 值相匹配的值,即 (G = SHA - 1(F{n}, ID, K_{ID})) 。此外,主机系统还可以通过生成一个数字 ((KID)) 来进一步多样化 (G) 值,为系统提供了更高的安全性。
与将算法和密钥存储在标准闪存系统内存中相比,使用AT88SC118芯片具有诸多优势:
AT88SC118芯片具备一系列强大的安全特性,包括:
AT88SC118的引脚包括电源和接地引脚(VCC和GND)、2 - 线接口数据引脚(SDA)、时钟引脚(SCL)、复位引脚(RST)和电源管理引脚(PDN)。电源电压范围为2.7 - 3.6V,供电电流小于5mA。在使用时,需要注意电源的上电和下电要求,以及引脚的电气特性。
AT88SC118采用8引脚SOIC封装,引脚排列清晰,方便工程师进行设计和布局。
芯片通过2 - 线接口(TWI)与系统进行通信,连接图展示了芯片与微处理器之间的连接方式,为工程师提供了清晰的设计参考。
AT88SC118能够在工业温度范围(- 40°C至85°C)内正常工作,ESD防护等级为2KV(人体模型),具有较高的可靠性。
AT88SC118通过2 - 线接口(TWI)与系统进行通信,作为从设备,不支持时钟拉伸。系统处理器需要正确格式化命令并处理芯片的输出。在通信过程中,需要注意设备地址、命令、数据大小等参数的设置,以及命令的输入和输出格式。
AT88SC118的4Kb(512字节)EEPROM被组织成多个部分,每个部分具有不同的访问限制。
芯片包含过压和欠压检测器以及POR检测器,可防止未知的启动状态。内部生成的操作时钟独立于SDA和SCL,并过滤引脚的毛刺,同时在内存块上覆盖金属混淆图案,提高安全性。
EEPROM中的复位保护寄存器(RstProt)在电源施加前通常为1,复位时芯片将其写入0并启动计数器。如果在复位或上电时保护寄存器已经为0,芯片将进入电源延迟状态,在此期间不接受或确认任何命令。
某些条件会导致芯片锁定,直到复位引脚被断言或电源循环。例如,在Startup/ChallengeResponse未运行之前尝试执行其他命令,或ChallengeResponse运行失败等情况。
当某些操作未成功完成时,芯片将进入临时安全延迟状态,在此期间不接受任何命令。延迟时间会根据失败次数加倍,最大延迟为32s。
芯片在解锁和锁定状态下的命令执行顺序有所不同。解锁时,没有安全延迟,部分命令可直接执行;锁定时,需要按照特定的顺序执行命令,如Startup、ChallengeResponse等,否则芯片将锁定。
AT88SC118支持CRF芯片的相互认证序列,确保共享密钥不会在芯片总线上暴露。认证和加密序列包括多个步骤,涉及到密码、随机数、挑战和响应等参数的交换和验证。
系统向芯片发送基于外部非易失性程序存储状态的信息,芯片根据Mode位的不同设置,执行不同的验证操作。如果验证失败,芯片将设置状态寄存器为RstLocked错误代码,并在下次复位或电源循环之前不接受任何命令。
芯片重置所有内部状态,生成20字节的随机数作为挑战发送给系统,并计算对系统挑战的响应。该命令每个复位或电源循环只能运行一次。
系统向芯片发送20字节的挑战响应,芯片计算SHA1(SysChallenge, SystemSecret)并与响应进行比较。如果不正确,芯片将锁定直到下次复位或电源移除。
将CRF的可访问信息加载到芯片中,计算 (C^{A}) 和SA的值,为CRF芯片的认证序列做准备。执行该命令后,下一个命令必须是Auth_2。
接收CRF认证命令的输出,验证CRF芯片是否知道G。如果输入的 (Ci^{A}) 值不正确,芯片将锁定一段时间。
使用当前加密引擎状态计算要发送给CRF的加密密码,可在认证序列完成后随时运行。
生成用于后续数据加密的中间值,类似于Auth_1命令,但使用S代替G,输入C替换为芯片寄存器C,并生成新的随机数 (Q^{E}) 。执行该命令后,下一个命令必须是Encryption_2。
接收CRF的加密响应,并与Encryption_1计算的值进行比较。如果输入的 (Ci^{E}) 值不正确,芯片将锁定并设置错误代码为AuthFail。
将可变数量的字节通过芯片的加密引擎,并将输出返回给系统,用于保持芯片与CRF芯片的加密引擎同步,以及数据的加密和解密。
芯片使用内部高质量随机数生成器生成20字节的随机数,可用于系统的各种操作。
将指定计数器的值加1。
返回指定计数器的32位当前状态。
将数据写入指定地址及其后续的读写内存空间,锁定前后的写入范围有所不同。
使用加密算法将16字节的数据写入EEPROM,锁定后无法运行该命令。
读取指定地址及其后续的EEPROM内容,锁定后只能读取只读和读写内存空间。
读取指定32字节的EEPROM块,计算其SHA - 1摘要并返回给用户,用于验证芯片个性化是否正确。
读取EEPROM中的ManufacturingID和Lock Byte,无论芯片是否锁定都可以执行。
锁定芯片的当前内存值,锁定后无法解锁。
清除当前认证状态,清空C和S寄存器,为新的认证做准备。
将8字节的随机数通过芯片的crunch引擎,并将输出返回给系统,用于确保芯片与实际的CRF芯片通信。
文档中列出了各种命令的标称执行时间,但实际执行时间会因内部振荡器的变化而有所不同。设计时应使用标准握手机制,而不是依赖具体的执行时间。
详细介绍了芯片的直流和交流特性,包括电源电压、电流、输入输出电压和电流等参数,为工程师在电路设计时提供了重要的参考依据。
某些操作模式需要使用密钥进行自定义配置,对于生产订单,Atmel会在工厂编程客户提供的密钥值;对于通用和样品订单,提供了一个运输密钥。
提供了不同订购代码的详细信息,包括内存锁定状态、封装、电压范围和温度范围等,方便工程师根据需求选择合适的芯片。
展示了8S1 - 8引脚JEDEC SOIC封装的图纸,包括尺寸、公差等信息,为芯片的布局和焊接提供了参考。
通过命令输入、输出和状态的流程图,清晰地展示了芯片与主机之间的通信过程,帮助工程师更好地理解和实现芯片的功能。
Atmel AT88SC118 CryptoCompanion芯片以其强大的安全特性、灵活的系统实现和丰富的功能,为电子工程师在设计安全系统时提供了一个优秀的选择。在实际应用中,工程师需要深入了解芯片的各项特性和命令,合理设计电路和程序,以确保系统的安全和稳定运行。你在使用这款芯片的过程中遇到过哪些问题呢?欢迎在评论区分享你的经验和见解。
全部0条评论
快来发表一下你的评论吧 !