深入解析Atmel AT88SC118 CryptoCompanion芯片:安全与性能的完美融合
在电子设计领域,安全与性能始终是工程师们追求的两大核心目标。Atmel AT88SC118 CryptoCompanion芯片,作为一款专为CryptoRF和CryptoMemory产品设计的芯片,凭借其卓越的安全特性和出色的性能表现,成为了众多工程师的首选。今天,我们就来深入解析这款芯片,探索其背后的技术奥秘。
一、产品概述
Atmel AT88SC118是与CryptoRF(CRF)和CryptoMemory(CM)芯片配套使用的伴侣芯片,在文档中有时也被称为CMC或CryptoMemory Companion芯片。它广泛采用了SHA - 1哈希算法,能够安全地实现主机算法、存储主机密钥,并验证主机固件摘要,为系统提供了强大的安全保障。
1.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) 值,为系统提供了更高的安全性。
1.2 CryptoCompanion的优势
与将算法和密钥存储在标准闪存系统内存中相比,使用AT88SC118芯片具有诸多优势:
- 保护核心密钥:将用于与CRF进行认证和通信的核心密钥存储在EEPROM中,避免了密钥的泄露。
- 灵活的系统实现:支持多个密钥和策略,适用于系统中不同CRF位置的需求,同时提供多种制造商设置选项。
- 硬件加密引擎:采用硬件加密引擎,避免了通过反编译系统操作代码来披露算法的风险。
- 强大的安全保护:通过全面的硬件安全实现,使攻击者难以获取存储在芯片中的密钥。
- 随机数生成:具备高质量的随机数生成器,避免了所有加密操作中的意外重放问题。
- 易于使用:无需大量编程,也不需要了解安全算法或协议,能够快速推向市场。
1.3 CryptoCompanion的安全特性
AT88SC118芯片具备一系列强大的安全特性,包括:
- 内部EEPROM加密:采用强内部EEPROM加密方案,确保数据的安全性。
- 动态加密SRAM数据:对内部SRAM数据进行动态加密,防止数据被窃取。
- 可编程上电惩罚:通过设置可编程上电惩罚,增加攻击者的攻击难度。
- 升级攻击惩罚:对攻击行为进行升级惩罚,进一步提高安全性。
- 认证超时:设置认证超时机制,防止长时间的认证过程被攻击。
- 防撕裂计数器和RNG种子:采用防撕裂计数器和RNG种子,增强系统的安全性。
- 安全个性化:支持安全个性化设置,满足不同用户的需求。
- 命令使用限制:限制命令的使用,防止穷举攻击。
- 内部时钟方案:采用高安全内部时钟方案,确保系统的稳定性。
- 电压检测和数据完整性验证:具备过压和欠压检测以及内部数据完整性验证功能,保障系统的正常运行。
1.4 封装、引脚和I/O
1.4.1 引脚描述
AT88SC118的引脚包括电源和接地引脚(VCC和GND)、2 - 线接口数据引脚(SDA)、时钟引脚(SCL)、复位引脚(RST)和电源管理引脚(PDN)。电源电压范围为2.7 - 3.6V,供电电流小于5mA。在使用时,需要注意电源的上电和下电要求,以及引脚的电气特性。
1.4.2 封装
AT88SC118采用8引脚SOIC封装,引脚排列清晰,方便工程师进行设计和布局。
1.4.3 连接图
芯片通过2 - 线接口(TWI)与系统进行通信,连接图展示了芯片与微处理器之间的连接方式,为工程师提供了清晰的设计参考。
1.4.4 环境要求
AT88SC118能够在工业温度范围(- 40°C至85°C)内正常工作,ESD防护等级为2KV(人体模型),具有较高的可靠性。
1.4.5 TWI输入/输出操作
AT88SC118通过2 - 线接口(TWI)与系统进行通信,作为从设备,不支持时钟拉伸。系统处理器需要正确格式化命令并处理芯片的输出。在通信过程中,需要注意设备地址、命令、数据大小等参数的设置,以及命令的输入和输出格式。
1.5 内存架构
AT88SC118的4Kb(512字节)EEPROM被组织成多个部分,每个部分具有不同的访问限制。
- 内存锁定:在出厂时,某些位置由Atmel预加载数据,其他数据位置未知。系统制造商需要在初始化完成后执行Lock命令,限制对内存的访问。
- 安全个性化:用户可以选择购买Lock[1:0]为10的芯片版本,在个性化过程中,Atmel会在晶圆测试时将传输密钥写入EEPROM中的EncKey位置,确保秘密信息的安全。
- 制造ID(MfrID):包含15字节的唯一晶圆制造信息,可作为芯片的序列号,由Atmel在晶圆测试时写入,用户无法修改。
- 密码:P0 - P15是用于启用CRF中各种区域读写的密码,密码配置字节包含加密、连接等属性,锁定后无法直接读取或写入。
- 非易失性计数器:芯片实现了四个计数器,每个计数器最大可递增到640万,无法重置或递减,可通过ReadCounter和IncrementCounter命令进行读取和递增操作。
- RNGSeed:EEPROM中的RNGSeed位置在Atmel制造时用外部高质量硬件随机数生成器生成的16字节随机数初始化,可在芯片解锁时读取和写入。
- 只读内存和读写内存:锁定后,只读内存区域可读取但不能写入,读写内存区域具有一般的读写权限。
- 秘密信息:F0 - F15是用于生成 (G_{C}) 值的秘密信息,锁定后无法直接读取或写入。
1.6 安全特性
1.6.1 环境检测器
芯片包含过压和欠压检测器以及POR检测器,可防止未知的启动状态。内部生成的操作时钟独立于SDA和SCL,并过滤引脚的毛刺,同时在内存块上覆盖金属混淆图案,提高安全性。
1.6.2 复位保护和电源延迟
EEPROM中的复位保护寄存器(RstProt)在电源施加前通常为1,复位时芯片将其写入0并启动计数器。如果在复位或上电时保护寄存器已经为0,芯片将进入电源延迟状态,在此期间不接受或确认任何命令。
1.6.3 复位锁定
某些条件会导致芯片锁定,直到复位引脚被断言或电源循环。例如,在Startup/ChallengeResponse未运行之前尝试执行其他命令,或ChallengeResponse运行失败等情况。
1.6.4 安全延迟
当某些操作未成功完成时,芯片将进入临时安全延迟状态,在此期间不接受任何命令。延迟时间会根据失败次数加倍,最大延迟为32s。
1.6.5 命令顺序
芯片在解锁和锁定状态下的命令执行顺序有所不同。解锁时,没有安全延迟,部分命令可直接执行;锁定时,需要按照特定的顺序执行命令,如Startup、ChallengeResponse等,否则芯片将锁定。
二、CMC ↔ CRF认证
AT88SC118支持CRF芯片的相互认证序列,确保共享密钥不会在芯片总线上暴露。认证和加密序列包括多个步骤,涉及到密码、随机数、挑战和响应等参数的交换和验证。
三、命令描述
3.1 VerifyFlash命令
系统向芯片发送基于外部非易失性程序存储状态的信息,芯片根据Mode位的不同设置,执行不同的验证操作。如果验证失败,芯片将设置状态寄存器为RstLocked错误代码,并在下次复位或电源循环之前不接受任何命令。
3.2 Startup命令
芯片重置所有内部状态,生成20字节的随机数作为挑战发送给系统,并计算对系统挑战的响应。该命令每个复位或电源循环只能运行一次。
3.3 ChallengeResponse命令
系统向芯片发送20字节的挑战响应,芯片计算SHA1(SysChallenge, SystemSecret)并与响应进行比较。如果不正确,芯片将锁定直到下次复位或电源移除。
3.4 Auth_1命令
将CRF的可访问信息加载到芯片中,计算 (C^{A}) 和SA的值,为CRF芯片的认证序列做准备。执行该命令后,下一个命令必须是Auth_2。
3.5 Auth_2命令
接收CRF认证命令的输出,验证CRF芯片是否知道G。如果输入的 (Ci^{A}) 值不正确,芯片将锁定一段时间。
3.6 EncryptPassword命令
使用当前加密引擎状态计算要发送给CRF的加密密码,可在认证序列完成后随时运行。
3.7 Encryption_1命令
生成用于后续数据加密的中间值,类似于Auth_1命令,但使用S代替G,输入C替换为芯片寄存器C,并生成新的随机数 (Q^{E}) 。执行该命令后,下一个命令必须是Encryption_2。
3.8 Encryption_2命令
接收CRF的加密响应,并与Encryption_1计算的值进行比较。如果输入的 (Ci^{E}) 值不正确,芯片将锁定并设置错误代码为AuthFail。
3.9 GrindBytes命令
将可变数量的字节通过芯片的加密引擎,并将输出返回给系统,用于保持芯片与CRF芯片的加密引擎同步,以及数据的加密和解密。
3.10 GetRandom命令
芯片使用内部高质量随机数生成器生成20字节的随机数,可用于系统的各种操作。
3.11 IncrementCounter命令
将指定计数器的值加1。
3.12 ReadCounter命令
返回指定计数器的32位当前状态。
3.13 WriteMemory命令
将数据写入指定地址及其后续的读写内存空间,锁定前后的写入范围有所不同。
3.14 WriteMemoryEncrypted命令
使用加密算法将16字节的数据写入EEPROM,锁定后无法运行该命令。
3.15 ReadMemory命令
读取指定地址及其后续的EEPROM内容,锁定后只能读取只读和读写内存空间。
3.16 ReadMemoryDigest命令
读取指定32字节的EEPROM块,计算其SHA - 1摘要并返回给用户,用于验证芯片个性化是否正确。
3.17 ReadManufacturingID命令
读取EEPROM中的ManufacturingID和Lock Byte,无论芯片是否锁定都可以执行。
3.18 Lock命令
锁定芯片的当前内存值,锁定后无法解锁。
3.19 Clear命令
清除当前认证状态,清空C和S寄存器,为新的认证做准备。
3.20 Crunch命令
将8字节的随机数通过芯片的crunch引擎,并将输出返回给系统,用于确保芯片与实际的CRF芯片通信。
四、命令执行时间
文档中列出了各种命令的标称执行时间,但实际执行时间会因内部振荡器的变化而有所不同。设计时应使用标准握手机制,而不是依赖具体的执行时间。
五、AC和DC特性
详细介绍了芯片的直流和交流特性,包括电源电压、电流、输入输出电压和电流等参数,为工程师在电路设计时提供了重要的参考依据。
六、运输密钥
某些操作模式需要使用密钥进行自定义配置,对于生产订单,Atmel会在工厂编程客户提供的密钥值;对于通用和样品订单,提供了一个运输密钥。
七、订购代码
提供了不同订购代码的详细信息,包括内存锁定状态、封装、电压范围和温度范围等,方便工程师根据需求选择合适的芯片。
八、封装图纸
展示了8S1 - 8引脚JEDEC SOIC封装的图纸,包括尺寸、公差等信息,为芯片的布局和焊接提供了参考。
九、命令流程图
通过命令输入、输出和状态的流程图,清晰地展示了芯片与主机之间的通信过程,帮助工程师更好地理解和实现芯片的功能。
十、总结
Atmel AT88SC118 CryptoCompanion芯片以其强大的安全特性、灵活的系统实现和丰富的功能,为电子工程师在设计安全系统时提供了一个优秀的选择。在实际应用中,工程师需要深入了解芯片的各项特性和命令,合理设计电路和程序,以确保系统的安全和稳定运行。你在使用这款芯片的过程中遇到过哪些问题呢?欢迎在评论区分享你的经验和见解。
-
安全特性
+关注
关注
0文章
7浏览量
4849
发布评论请先 登录
深入解析Atmel AT88SC118 CryptoCompanion芯片:安全与性能的完美融合
评论