一些安全IC被设计为用作应用处理器的配套IC。Maxim MAXQ1061/MAXQ1062系列和可信计算组®™定义的可信平台模块 (TPM) 就是这样的配套芯片。物联网中的安全目标涉及设备和服务器身份验证、敏感数据保护、通信的机密性和完整性(例如 TLS 协议)、设备完整性和知识产权保护。
在更具体的例子中,物联网节点设备需要具有安全的引导加载程序和安全固件更新,通过TLS连接将传感器数据发送到服务器,并将敏感数据存储在闪存中。MAXQ1061/MAXQ1062专为小型嵌入式系统设计,器件应用处理器资源要求小,使用方便。本应用笔记从多个方面表明,使用MAXQ1061/MAXQ1062比使用基于TPM标准的芯片更简单、更高效。
介绍
从历史上看,基于可信计算组的芯片™(TCG) 定义的可信平台模块 (TPM) 标准是防篡改、离散、加密协处理器,已在大多数消费者个人计算机和服务器中实施。基于TPM标准的芯片中的安全概念是多年前设计的,旨在通过网络交换数据的计算机之间实现信任,并保护用户的静态数据免遭丢失或盗窃。基于 TPM 标准的芯片是防篡改、安全的加密处理器,旨在执行加密操作并安全地存储少量数据,包括密钥。
基于 TPM 标准的专用硬件 IP 也可以在现有组件上实施,也可以作为利用现有 CPU 的可信执行环境(例如英特尔 TXT 或 Arm 信任区)的固件实施。本应用笔记仅考虑基于TPM标准的分立芯片,因为建议在防篡改方面具有更高的安全级别。®®®
基于 TPM 标准的芯片设计目的很简单,但它们也可以支持非常复杂的安全策略的实施,这些策略定义了谁可以在何时做什么。这种复杂性,由计算机应用程序中所需的各种场景证明,使TPM标准的学习曲线非常僵硬。由于这种复杂性,验证系统的安全性要困难得多。尽管基于TPM标准的芯片也用于嵌入式系统,但它们的初始设计和平台资源要求使其难以集成到物联网中常见的简单系统中。
MAXQ1061/MAXQ1062由Maxim Integrated根据内部、客户和公共加密模块规范的要求创建,特别适用于简单的嵌入式连接设备。MAXQ1061/MAXQ1062设计用于为低成本嵌入式系统提供高安全性证书、密钥和数据安全存储以及安全加密基元。这些器件可用于将设备集成到公钥基础设施中、设备和服务器身份验证、数据的机密性和完整性以及设备完整性。MAXQ1061/MAXQ1062提供了一组严格的40个命令,以实现这些目的,避免不必要的复杂性。简单的访问控制策略和功能集以比基于 TPM 标准的芯片简单得多的方式回答与 IoT 设备相关的大多数安全方案。
MAXQ1061/MAXQ1062提供的加密算法符合标准(如NIST、ANSI、BSI)。MAXQ1061/MAXQ1062也是防篡改IC,采用最先进的防黑客对策。
在本应用笔记中,我们列举了相关物联网器件的特性和用例,并比较了它们与MAXQ1061/MAXQ1062以及基于TPM标准的芯片的实现。虽然,并非基于TPM标准的芯片提供的所有无限可能性都将暴露出来。
定义
本应用笔记中使用以下术语:
主机:主处理器,例如运行设备的 CPU 或 SoC
服务器:设备连接到的远程计算机
安全IC:MAXQ1061/MAXQ1062或基于TPM标准的芯片
图1.MAXQ1061/MAXQ1062的集成示例。
MAXQ1061/MAXQ1062通过SPI或I2C总线连接到主机处理器。或者,主机处理器可以控制MAXQ1061/MAXQ1062的RESET输入和看门狗输入(WDI)。MAXQ1061/MAXQ1062还可以连接到器件级篡改检测机制(如开关)。最后,MAXQ1061/MAXQ1062可以控制主机处理器的RESET输入。
请记住,安全IC的行为就像从属设备。它们通过命令总线从主机处理器接收命令,处理命令,并返回答案。这些芯片不会自发发送任何东西,也不会主动读取外部记忆等。
安全IC的用途
安全IC或安全元件的目的是提高密钥存储的安全性,并提供可抵抗故障注入和侧信道攻击的安全加密实现。此外,安全IC允许与平台上运行的其他软件严格隔离,因为唯一的交互通道是命令总线,这大大减少了攻击面以及敏感功能和数据暴露给主机处理器的软件。此外,要找到现成的纯软件、能够抵抗攻击的加密算法的实现并不容易(甚至更不容易自己开发它们),除非主机处理器已经具有集成的加密专用硬件块,并且芯片供应商提供了这样的加密例程。
设备可以使用安全 IC 来支持仅靠软件无法实现的数据保护和安全方案。例如,软件无法可靠地报告系统启动过程中是否存在恶意软件。安全IC和主机处理器之间的紧密集成使启动过程更清晰,更容易评估安全性。通过启动设备的受信任软件进行可靠的测量和报告,可以评估设备完整性。
将安全IC作为器件的一部分实现可提供硬件信任根,这意味着它始终以受信任的方式运行。例如,存储在安全IC中的私钥确实不能离开IC,或者存储在其中的证书不能被篡改。
最后但并非最不重要的一点是,安全IC将主机处理器从安全功能所需的存储器占用空间和计算资源中卸载出来,这在具有小型主机处理器的设备中特别有用,例如Arm Cortex-M0微控制器(通常为128K闪存,16K RAM,40MHz)。®
主要特性比较
包
MAXQ1061/MAXQ1062和基于TPM标准的芯片采用类似的封装。封装尺寸在大多数嵌入式设备中变得至关重要,由于器件外形尺寸受到更多限制,PCB尺寸会变得更小。
MAXQ1061/MAXQ1062采用紧凑型TSSOP14 6.4x4.9封装。
图2.MAXQ1061/MAXQ1062封装
大多数基于 TPM 标准的芯片采用 TSSOP28 或 VQFN 5x5 封装。
电源和消耗
待机模式下的低功耗是电池供电设备的关键优势。MAXQ1061/MAXQ1062的典型待机电流为25μA,远低于基于TPM标准的芯片,后者的电流典型值超过100μA,通常高达300μA。MAXQ1061/MAXQ1062的启动时间为30ms,不用时可以完全断电,但在需要时仍能非常快速地提供。
在工作模式下,基于TPM标准和MAXQ1061/MAXQ1062的芯片具有约25mA的有源电源电流。MAXQ3/MAXQ3和大多数基于TPM标准的芯片的电源电压为1061.1062V。一些基于 TPM 标准的芯片提供 1.8V。
内部存储大小
安全IC的内部非易失性存储对于存储敏感数据(如机密数据、秘密或私钥)以及必须保留以防止修改的数据(如证书)至关重要。
MAXQ1061/MAXQ1062具有内部非易失性防篡改存储器,用于存储敏感数据。MAXQ1061/MAXQ1062具有足够的内部存储器,可用于存储X.509证书、ECDSA密钥对或其它密钥或任意数据等适用于嵌入式系统的大多数用例。此内部存储被组织为由用户定义的访问控制控制的简单文件系统。有关更多详细信息,请参阅使用访问控制设计安全策略部分。
基于TPM标准的芯片还具有内部,防篡改,非易失性存储。除其他外,此存储允许存储加密其他子密钥的根密钥,而子密钥可以反过来加密其他孙密钥。基于 TPM 标准的芯片可以处理大型密钥存储。除根密钥外,密钥通常根据 TPM 标准存储在芯片外部,并在需要时重新注入并解密到芯片中。主机端软件处理此操作。子密钥一旦加载到芯片中就会解密,然后使用,最终被丢弃,但长期密钥保留在外部加密存储中。此功能在PC平台中非常有用,其中许多应用程序可能希望出于各种目的保留大量密钥,但通常与物联网设备无关。
通信协议
MAXQ1061/MAXQ1062提供I2C 和适合大多数嵌入式设计的 SPI 接口。基于TPM标准的芯片还提供SPI接口和其他面向计算机的接口,如LPC或SMBUS(接近I2LPC接口专用于PC架构,几乎不适用于嵌入式系统。
主机端支持软件
符合 TPM 标准的主机端软件庞大而复杂,并且学习曲线很僵硬,互联网上可用的编程资源很少。该软件专用于具有操作系统(如Linux或Windows)的大型系统。符合 TPM 标准的主机端软件具有以下主要组件:®®
TCG 软件堆栈 (TSS)。该软件需要大型系统,例如Linux或Windows。通常,符合TPM标准的软件隐藏在高级工具(如Microsoft Crypto Provider或PKCS#11引擎)后面。虽然它处理了符合 TPM 标准的低级通信的奇怪和复杂性,但 TSS 的规范仍然庞大而复杂。®
符合 TPM 标准的驱动程序。此驱动程序是 TSS 所在的较低级别的组件。此驱动程序的 API 非常复杂,并且处于非常低的级别,这使得在复杂的用例中实现变得更加困难。虽然Windows和Linux中的TPM标准集成是开箱即用的,但将其移植到裸机平台上并不容易,甚至可能是不可能的。
功能接口。在现有层之上,TPM 标准还提出了一个功能API,具有更简单、更集成的使用,仅限于最常见的场景,并提供大约 45 个 API 函数。但是,安全策略定义仍然很复杂。
表 1 显示了我们在 Linux 2 位目标上的 TSS (TSS64) 上的实验结果。
文本(字节) | 静态数据(字节)* | 文件名 |
146344 | 4972 | ./src/tss2-sys/.libs/libtss2-sys.so |
253071 | 2140 | ./src/tss2-mu/.libs/libtss2-mu.so |
16214 | 928 | ./src/tss2-tcti/.libs/libtss2-tcti-device.so |
20019 | 960 | ./src/tss2-tcti/.libs/libtss2-tcti-mssim.so |
600190 | 6640 | ./src/tss2-esys/.libs/libtss2-esys.so |
* 此处不考虑动态分配的内存。 |
表 1 中的代码大小不适合通常小于 256KB 的众多小型嵌入式设备 代码存储器和 64KB 内存。
另一方面,MAXQ1061/MAXQ1062需要非常简单的软件,适用于最小的 微控制器。主机端软件在源代码中提供,允许自定义。这是一个图书馆 C语言提供直接映射到MAXQ1061/MAXQ1062命令集的功能。由于 这组减少的命令,复杂的用例可以用一个相当直接的方式实现,使用简单的 程序。通信协议和总线级命令格式的几率被库隐藏, 它公开了一个清晰、易于使用的 C 语言程序员界面。该软件依赖于标准SPI或I2C 平台的驱动程序。集成商可能必须开发一个简约的“胶水”层来链接 MAXQ1061/MAXQ1062主机库到微控制器的驱动API。
MAXQ1061/MAXQ1062主机库通常使用约6KB代码和4KB内存,可用于任何 小型处理器,如Arm Cortex-M0。在此库之上,提供了自定义的 TLS 客户端堆栈, 例如用于任何类型的微控制器的mbedTLS(例如,Cortex-M0,类似于高端的微控制器) 微控制器)和OpenSSL,用于运行嵌入式Linux或Windows的大型微控制器。TLS 客户端 堆栈利用MAXQ1061/MAXQ1062 TLS功能。®
安全 IC 用例
本节列出了基于TPM标准和MAXQ1061/MAXQ1062的芯片可以实现的用例。
卸载主机-处理器加密函数
安全 IC 将主处理器从敏感的加密操作中卸载出来。各IC系列支持的低级加密算法的比较如表2所示。
低级加密功能 | 基于 TPM 标准的芯片 | 最大Q1061/最大Q1062 |
标准加密算法 | 是的 | 是的 |
AES | AES-256 在 TPM 2.0 标准中是可选的 | ECB, CBC, CCM 128/192/256 ECB/GCM 128, 快速 |
随机数生成器 | SP800-90A, AIS31PTG2 | 专为 SP800-90A SHA256DRBG 设计 |
密钥生成 | RSA, ECDSA | 幼儿发展局 |
安全哈希算法 | SHA-1, 256 | SHA-1, 256, 384, 512 |
RSA 签名 | 2048 位 | 不 |
RSA 加密 | 2048 位 | 不 |
ECDSA签名 | 美国国家情报研究院 P-256® | NIST P-256, 384, 521脑池 256, 384, 512 |
人权捍卫人权委员会 | 与ECDSA相同的曲线 | 与ECDSA相同的曲线 |
HMAC | SHA-256 | SHA-256, 384, 512 |
基于 AES 的 MAC | 不 | 快速 AES-CBC-MAC、AES-CMAC AES-GMAC,在专用 SPI 接口上提供 128 位密钥 |
TLS 1.2 PRF | 不 | 基于 SHA-256 |
* 此随机数生成器标准的设计尚未通过认证。 |
快速 AES 引擎
MAXQ1061/MAXQ1062通过SPI提供快速AES引擎,用于AES ECB和AES GCM加密,具有128位密钥。加密速度高达10MBps。此引擎将主处理器从某些对称加密任务中卸载出来。此外,它避免将AES密钥导出到主处理器,在主处理器中,密钥可能会被诸如侧信道攻击之类的攻击暴露和泄露,其中密钥是通过功耗或电磁辐射分析来检索的。通过使用板载快速AES引擎,密钥安全地存储在MAXQ1061/MAXQ1062中。
基于 TPM 标准的芯片没有这种高速对称加密引擎,当主机处理器不够快或忙于其他重要任务时,这通常很有用。
RSA vs ECDSA
与基于TPM标准的芯片不同,MAXQ1061/MAXQ1062不支持RSA。但是,RSA越来越不推荐使用,因为与ECDSA相比,长密钥和数字签名可能长达数千位,而ECDSA的密钥和签名只有几百位长。
TLS 1.2
基于 TPM 标准的芯片没有处理 TLS 协议的特定功能。它们可以用作基本的加密引擎和长期密钥存储,由某些TLS软件堆栈(如wolfSSL)利用,以执行原子操作,如证书生成,签名验证,AES加密或解密,HMAC签名或验证,或TLS握手和记录处理所需的ECDH。有了这样的芯片,TLS会话密钥是在主机处理器中计算的,这更容易被黑客攻击。®
MAXQ1061/MAXQ1062可以处理从握手到安全应用数据交换的完整TLS 1.2会话,同时将TLS会话密钥保留在易失性存储器内部。TLS 记录层在通过 TLS 交换应用程序数据时使用,并使用协商密钥应用加密和签名。该TLS记录层可完全由MAXQ1061/MAXQ1062处理,允许从握手阶段获得的TLS会话密钥在芯片内保持安全,绝不会暴露在芯片外。MAXQ1061/MAXQ1062与提供的TLS软件堆栈(即mbedTLS、OpenSSL)捆绑在一起,是一种交钥匙解决方案,为设计人员提供连接器件的安全通信。
基于 TPM 2.0 标准的芯片 | 最大Q1061/最大Q1062 | |
TLS 1.2 PRF | 不 | 是的 |
保护会话密钥 | 不 | 是的 |
完全握手 | 不 | 是的 |
TLS 1.2 记录处理 | 不 | 是的 |
外部存储器加密
外部内存加密需要一个对称密钥来加密/解密磁盘数据。对称(例如 AES)是 出于速度原因需要。安全 IC 必须将磁盘加密/解密密钥保存为已加密并释放 仅当 CPU 已启动到安全状态时,它才会发送到主 CPU。
对于基于 TPM 标准的芯片,使用 PCR 值确定安全状态 (有关平台配置寄存器的详细信息,请参阅安全启动部分),这些寄存器在引导过程中会更新。然后,TPM 标准芯片将密钥释放给主机处理器,主机处理器自行执行磁盘加密/解密,因为芯片对于此类操作来说太慢了。当传输到主机处理器时,密钥可能会暴露,并且不再受益于基于 TPM 标准的芯片保护。主机处理器上的侧信道攻击(请参阅 TLS 1.2 部分)或软件攻击可能会泄露密钥,并且整个系统可能会受到损害。
MAXQ1061/MAXQ1062只需使用其安全启动功能和保存磁盘解密密钥的内部存储器对象即可实现此行为。当平台安全启动后,MAXQ1061/MAXQ1062可以选择将密钥传输到外部AES-SPI引擎,并对外部存储器进行高速加密/解密,而不是将密钥传输到主机处理器。此功能允许在不暴露解密密钥的情况下高速解密外部存储器。还可以选择将密钥传输到主机处理器。
设备识别和认证,尤其适用于设备反克隆
基于公钥的标识和身份验证依赖于真正唯一标识符的存在和 每个设备中唯一的密钥对。
MAXQ1061/MAXQ1062可以存储唯一的ECDSA密钥对,这些密钥由内部非易失性存储器中的1061个私钥和一个公钥组成。还会存储公钥的证书,用于设备身份验证。根据要求,MAXQ1062/MAXQ1061可以使用私钥对从对等方收到的质询进行签名,并通过发回该质询和证书的签名来证明其身份,该身份存储在证书中。认证对等方可以使用证书颁发机构(CA)验证来自MAXQ1062/MAXQ1061的证书,然后使用该证书中的MAXQ1062/MAXQ1061公钥验证质询的签名。成功后,对包含MAXQ1062/MAXQ<>的器件进行识别和认证。
证书固定
将证书颁发机构 (CA) 证书存储在设备标准微控制器上的软件保管库中存在风险。如果攻击者可以修改软件并获取对证书存储的访问权限,则攻击者可以插入恶意证书,从而使设备将恶意远程服务器识别为真实服务器。
MAXQ1061/MAXQ1062可以将CA证书存储在内部存储器中,防止任何人修改它们。此外,MAXQ1061/MAXQ1062在将证书加载到存储器之前验证证书的真实性。只有 CA 签名的证书才能导入芯片,因此无法使用流氓证书。导入后,这些证书还可以通过某些安全条件进行控制,以进一步限制使用。
图3.使用父证书进行子证书验证。
如图 3 所示,子证书签名请求 (1) 使用自己的 CA 私有签名密钥 (2) 发送到发出子证书的证书颁发机构 (CA)。由于内部存储器中已经存在证书颁发机构的根证书,因此新生成的子证书在MAXQ1061/MAXQ1062上得到验证,然后记录到MAXQ1061/MAXQ1062非易失性存储器中。注意,证书颁发机构的根证书(与CA私有签名密钥匹配)必须在设备个性化期间由受信任实体预加载,该可信实体必须拥有MAXQ1061/MAXQ1062私钥才能导入。
主机处理器的监视器
当主机处理器受到外部监控时,可以提高设备的整体可靠性和安全性。
使用MAXQ1061/MAXQ1062,可以通过看门狗机制监测主机处理器的行为。在这种机制中,主机处理器必须在截止时间之前定期置位MAXQ1061/MAXQ1062的输入引脚。如果超过截止时间,MAXQ1061/MAXQ1062置位主机处理器的RESET信号并复位内部安全环境。这允许设备退出死锁或停止主机处理器的异常行为。
当发生某些安全错误时,如MAXQ1061/MAXQ1062与主机之间的安全通道出现故障或TAMPER引脚发生篡改事件,或者MAXQ1061/MAXQ1062重新启动时,MAXQ1061/MAXQ1062也可以触发主机处理器的RESET信号。此功能可确保平台在出现任何问题时保持安全状态(重新启动)。
基于 TPM 标准的芯片不支持此类功能。
内部安全存储
MAXQ1061/MAXQ1062和基于TPM标准的芯片既可以直接将少量数据存储在具有访问控制的内部存储器中,也可以存储数据加密/解密密钥,并在满足某些条件时将其释放给主机处理器。在后者的情况下,主机处理器负责使用安全IC释放的密钥对数据存储的数据进行加密/解密。两款安全IC的内部存储器空间有限,因此将此用例的数据限制在几千字节到几十千字节之间。
管理
使用MAXQ1061/MAXQ1062时,管理员必须使用私钥进行身份验证。MAXQ1061/MAXQ1062设计用于无人值守设备,因此私钥应远程存储,管理应远程完成,或者在制造过程中完成。这是连接设备的首选方案。始终限制为管理员的唯一操作是在文件系统中创建对象。创建的对象可以分配不同的访问权限(想想Linux的chmod命令)。可以限制对某些对象的某些操作的访问权限,并且仅授予管理员。有关详细信息,请参阅使用访问控制设计安全策略部分。
基于 TPM 标准的芯片管理不太适合物联网设备。可以由 TPM 芯片所有者进行管理。基于 TPM 标准的芯片所有权是通过设置密码建立的。在PC上,此密码由操作系统生成,并且很长且很复杂。密码存储在远程数据库(例如,Active Directory)上或由PC用户写下。拥有基于 TPM 标准的芯片允许执行各种操作,例如密钥生成和芯片重置。请注意,基于 TPM 标准的芯片可以在没有任何密码的情况下清除,但此操作需要物理存在(即断言物理存在 I/O)。
如果有人打开设备机箱并断言存在引脚,TPM 状态功能会将基于 TPM 标准的芯片公开到本地重置。MAXQ1061/MAXQ1062更安全,因为始终需要动态认证。管理员可能无法完全访问MAXQ1061/MAXQ1062的所有资产,这造成了更加严格的安全策略。
安全通道
安全通道旨在保护安全 IC 和发送对等体之间传输的命令和响应。对等方可以是本地主机处理器,也可以是远程实体。安全通道提供传输中的命令和数据的机密性、完整性和真实性。
基于TPM标准的芯片可以结合授权会话执行加密/解密会话。授权会话要求对整个命令以及响应使用 HMAC,以保证命令结束响应的完整性。此外,加密/解密会话使用基于 AES 的算法来确保命令和响应的机密性。换句话说,基于 TPM 标准的芯片和与芯片通信的对等方(本地主机处理器或远程对等方)共享相同的加密密钥和 HMAC 密钥。此机制是授权功能的一部分。
MAXQ1061/MAXQ1062也支持这种机制。打开安全通道只需要从随机数和共享密钥派生,MAXQ1061/MAXQ1062与对等方共享密钥。生成的派生会话密钥用于对双向数据进行加密和签名。加密使用 AES-CBC,签名使用 AES-CBC-MAC。MAXQ1061/MAXQ1062除响应外,还对命令、参数和数据进行完全加密,使得无法猜测传输到MAXQ1061/MAXQ1062的命令。命令和响应以加密方式相互链接,因此无法在序列中交换、删除、插入或重放命令。
在MAXQ1061/MAXQ1062上,成功启动安全通道可以解锁物体并允许明确定义的操作。
安全启动
为了值得信赖,嵌入式设备的主机处理器必须运行设备批准的经过验证的固件 制造者。MAXQ1061/MAXQ1062和基于TPM标准的芯片提供基于以下特性的安全自举机制: 假设如图 4 所示。
图4.安全启动。
步 | 描述 |
1 |
主机处理器必须始终引导位于非易失性存储器 (A) 中的相同初始固件。 此步骤基于以下假设: 此固件的位置定义一次,无法更改 初始固件存储在主机处理器的内部闪存中,不能 轻松重新编程 主机处理器必须提供一种机制来使这些假设成立。可以存储初始固件 放入可以通过非常严格的访问控制进行更新的闪存中,此外,还可以使用主机处理器 始终在此内部闪存上启动。此内存是信任的静态根。 |
2 | 初始固件在主机处理器中执行,并使用安全 IC 执行自我验证。 |
3 | 读取固件。早期固件使用安全 IC 验证下一阶段固件。 |
4 |
为安全 IC 提供应用固件。 初始固件将下一级固件(即应用固件)发送到安全IC。 |
5 |
如果固件验证成功,则修改安全 IC 内部状态。 初始固件使用安全IC验证下一阶段固件。如果验证成功,安全 IC 中影响访问控制的某些安全条件可能会更改。例如,私钥可用于对数据进行签名。 |
MAXQ1061/MAXQ1062与基于TPM标准的芯片的安全启动技术细节不同。基于TPM标准的芯片通过测量平台来验证平台完整性(即固件和重要数据完整性)。测量意味着在平台配置寄存器(PCR)中对散列运算结果进行散列和累积。主机处理器执行的早期固件使用基于TPM标准的芯片进行自我验证,然后验证后续启动阶段固件(例如,BIOS 到磁盘 MBR 到 U-Boot 引导加载程序到 Linux 内核)。每个认证阶段负责通过将二进制代码输入芯片的PCR来检查下一个级别。
为了增加复杂性,基于TPM标准的芯片具有多个PCR,可用于各种目的。根据现有的策略,如果PCR值与先前记录的参考值匹配,则可以解锁TPM标准芯片中的某些内部对象。请注意,基于TPM标准的芯片还可以验证存储在PCR中的哈希的数字签名,并将PCR值与参考值进行比较。
MAXQ1061/MAXQ1062提供简单安全的自举机制,仅支持一个内部哈希寄存器,并要求签名验证。若要使用此机制,主机处理器将启动位于固有受信任的不可变内存中的初始固件。该初始固件向MAXQ1061/MAXQ1062馈送必须启动的应用二进制代码和MAXQ1061/MAXQ1062哈希,并将该代码累积到内部哈希寄存器中。在该过程结束时,初始固件向MAXQ1061/MAXQ1062提供应用程序的签名。MAXQ1061/MAXQ1062使用公钥验证签名是否与内部哈希寄存器匹配。成功的验证可解锁部分MAXQ1061/MAXQ1062内部对象以供进一步使用。此类对象可以是身份验证机制中使用的私钥,该机制可以向网络对等方证明已成功执行安全启动序列。
MAXQ1061/MAXQ1062提供与基于TPM标准的芯片一样安全的平台完整性验证,但具有更简单但可配置的安全策略。MAXQ1061/MAXQ1062快速AES引擎还提供基于TPM标准的芯片所不具备的替代固件同步验证和解密。
安全更新
安全固件更新比安全启动更相关。两个安全IC都可以实现安全更新。使用MAXQ1061/MAXQ1062,实现起来非常简单。MAXQ1061/MAXQ1062使用公共验证密钥进行初始化,用于验证新固件映像的数字签名。此外,当进行上述验证时,可以呈现解密密钥,从而允许解密固件。随着高价值算法变得司空见惯,即使在简单的嵌入式设备中也是如此,因此更需要固件加密。因此,需要保护算法免受长期存储的提取、传输过程中的窃听和逆向工程。
由于SPI总线上的AES快速引擎处理GCM模式,MAXQ1061/MAXQ1062可以实现固件的快速解密和认证(高达10Mbps)。MAXQ1061/MAXQ1062提供非对称或基于对称的安全启动。
基于TPM标准的芯片也可以使用快速解密和身份验证执行安全更新,但不支持同时进行快速身份验证和解密。
使用访问控制设计安全策略
MAXQ1061/MAXQ1062的安全策略相当简单。对于MAXQ1061/MAXQ1062的每个生命周期状态,访问控制列表定义了允许某些操作所需的安全条件。
如表 5 所示,每个空单元格根据对象/命令和当前启用的安全条件定义允许或不允许的内容。为每个生命周期状态定义相同的访问控制矩阵(不同或不同)。
安全条件 | ||||
V 项 | 没有 | 主机 | 安全启动 | 管理 |
对象 | ||||
命令 |
MAXQ1061/MAXQ1062内部存储器中的对象具有可在创建时定义的访问条件。对象访问条件定义了对对象执行每个可能的操作所需的安全条件(例如,读取:需要主机条件,写入:从不允许,使用密钥:需要安全启动)。
命令访问条件是预定义的,不能更改,但大多数命令必须使用主机条件的可能性除外。这将强制所有命令通过与主机处理器的安全通道发送。
MAXQ1061/MAXQ1062的安全条件如下:
成功打开安全通道时,将验证条件 HOST(处理器)。
条件 ADMIN 通过成功的管理员身份验证命令执行进行身份验证。
条件安全引导通过成功的验证引导命令执行进行身份验证,这意味着主机 固件的数字签名已成功验证。
注意:可以同时启用多个安全条件。
解释整个TPM标准安全策略概念是压倒性的,因为它非常复杂。有关详细信息,请阅读“TPM 2.0 实用指南:在新的安全时代使用新的可信平台模块”一书,并参阅 TCG 规范。基于TPM标准的芯片尽管更加复杂,但具有与MAXQ1061/MAXQ1062相同的安全条件。
基本上,有三种可能的角色:USER、ADMIN 和 DUP。 USER 用于实体的正常使用,ADMIN 角色用于系统管理任务,而 DUP(一个重点狭窄的角色)是 TPM2_Duplicate 命令允许的唯一角色。
所需的授权类型由两个属性确定:userWithAuth 和 adminWithPolicy。这些属性可以显式设置(例如在对象创建对象时),也可以通过其他方式为基于 TPM 标准的芯片处理的某些类型的实体确定。
对于基于TPM标准的芯片,三种授权类型如下:
密码。命令的发送方发送一个简单的密码,用于授权执行命令。
哼。密码用作 HMAC 密钥的基础。HMAC 是通过命令计算的,以保证命令的完整性,并且命令由知道密码的人发送(不泄露密码)。随机数用于避免在发送两次完全相同的命令时获得两倍相同的 HMAC 值,这也称为重放攻击保护。
策略会话。策略通过包括某些状态的值(例如,PCR值,命令序列,对象值,时间值),定义非常复杂的方案,甚至强制要求特定的命令序列,非常精细地定义何时授权操作。
总体而言,MAXQ1061/MAXQ1062安全策略使用灵活,同时更易于理解和实现。
生命周期状态
MAXQ1061/MAXQ1062基于严格的单调生命周期计数器,具有三种主要的生命周期状态。每个状态提供不同的访问控制策略。名为“终止”的第四个状态可用于完全和永久地停用部件,从而停用设备。转换到此状态仅限于管理员,但如果需要,也可以永久禁用。仅当管理员发送专用命令时,才会在状态之间进行转换。这在设备的制造和个性化过程中非常有用,以授予或拒绝对某些对象的访问,具体取决于制造步骤。
基于TPM标准的芯片可以双向发展。建立所有权时,将启用基于 TPM 标准的芯片。当所有者发送擦除命令时,芯片将被擦除。尽管必须断言存在 I/O,但无法阻止基于 TPM 标准的擦除芯片,在某些情况下这可能是一个安全问题。
单调计数器
TPM 标准具有仅递增的 64 位计数器。计数器可用于构建复杂的安全策略。例如,复杂的安全策略要求密钥在使用一定次数后过期。MAXQ1061/MAXQ1062具有32位计数器,有两种类型:仅递增和仅递减。与基于TPM标准的芯片相反,MAXQ1061/MAXQ1062计数器没有特别的副作用。
时间管理
基于 TPM 标准的芯片具有集成计时器,用于安全时间戳和某些锁定、密钥或证书的过期。当基于 TPM 标准的芯片断电时,计时器停止运行。为了克服这一限制,芯片有一个引导计数器,每次芯片引导时都会递增。否则,定时器可以在每次复位后安全地同步到外部时钟源。TPM 标准提供使用当前时间和启动计数器值进行签名或将数据绑定到计时器的功能。例如,可以签署当前时间戳和证明操作已执行的票证,以证明该操作是在某个时间执行的(即签署合同)。另一个示例是制作仅在下次重新启动之前可用的密钥。MAXQ1061/MAXQ1062没有时间或重启计数器,但通过计算来自主机微控制器的RTC输入的数字签名,MAXQ1061/MAXQ1062可用于提供安全的时间戳。由于TPM标准要求外部时钟同步,因此MAXQ1061/MAXQ1062的约束与基于TPM标准的芯片的约束相似。
备份/还原和密钥迁移
与基于TPM标准的芯片不同,MAXQ1061/MAXQ1062不能导出密钥或私钥,只能导出公钥或证书。但是,可以导入密钥或公钥对,并且导入期间的密钥加密只能使用安全通道。基于 TPM 标准的芯片可以导入/导出使用传输密钥加密的密钥。当用户需要将数据迁移到另一台计算机上以备更换时,这种类型的密钥备份/还原机制在计算机上很有用。在嵌入式设备上,这可能不是很有用。因此,MAXQ1061/MAXQ1062功能就足够了。
MAXQ1061/MAXQ1062 个性化和配置服务
MAXQ1061/MAXQ1062最主要的应用之一是启用离线公钥基础设施。设备必须预先预配证书颁发机构证书,以便能够对其他对等方进行身份验证,或者由其他人进行身份验证,同时无法访问联机证书服务器。看 信任您的数字 请参阅信任您的数字。
基于 TPM 标准的芯片随附一对称为认可密钥 (EK) 对的密钥,该密钥对每个 IC 都是唯一的。EK对由芯片制造商认证的公钥(Ekpub)和私钥(Ekpriv)组成。EK对的目的是验证芯片是否真实。在制造过程中, EK对在芯片内部生成。Ekpriv 永远不会离开芯片存储器,但 Ekpub 被读出,然后由制造商认证,生成的证书被加载回芯片的非易失性存储器存储中。交付后,客户可以使用 Ekpub 证书验证芯片的 Ekpriv 计算的数字签名,从而验证芯片的真实性。制造商的根证书可在线获得,以便客户可以在使用芯片Ekpub证书验证签名之前验证其真实性。请注意,客户可以替换初始 EK 对,以避免追溯到制造商。虽然基于 TPM 标准的芯片制造商可能会提供个性化服务,但通常由客户来执行整个芯片的配置。
默认情况下,MAXQ1061/MAXQ1062 IC附带默认管理员认证公钥和默认导入密钥。但是,根据要求,MAXQ1061/MAXQ1062 IC可以附带一些预先个性化的对象,包括额外的管理员公钥和密钥导入公钥、额外的密钥和证书对或任何其他类型的对象。这种个性化服务使客户能够避免在其制造设施中处理密钥和证书或生成证书的负担。相反,MAXQ1061/MAXQ1062 IC安装在PCB上,提供自举最终器件所需的所有信息。MAXQ1061/MAXQ1062可以寄送给客户,内部存储器中已有一对独特的密钥,密钥就地生成,私钥永远不会离开内部存储器。Maxim的制造工厂也可以使用硬件安全模块(HSM)生成公钥证书。证书颁发机构可以来自Maxim、客户或第三方。
MAXQ1061/MAXQ1062在密钥和证书配置方面提供了充分的灵活性,因为没有预定义的密钥或对象角色。
安全IC的安全限制
MAXQ1061/MAXQ1062可以克服双芯片设计的固有局限性。固有限制如下:
入侵者篡改主机处理器和安全 IC 之间的通信链路的能力。
入侵者能够替换初始固件并跳过安全启动阶段,但仍向安全 IC 提供正版固件,以访问由安全启动条件锁定的资产。例如,请参阅 Ledger 地址 中间人攻击威胁数百万个硬件钱包。
基于TPM标准的芯片完全无法抵御此类攻击,因为它们依赖于只有远程攻击才能进行的假设。
MAXQ1061/MAXQ1062通过使用篡改输入引脚来监视器件外壳的完整性,从而减轻攻击。一旦打开外壳,就可以从MAXQ1061/MAXQ1062内部安全存储器中擦除重要资产,然后阻止器件以不安全的固件或状态连接到网络。
但是,在系统级别实施篡改检测需要添加开关和/或特殊的篡改敏感工件。另外,应为MAXQ1061/MAXQ1062增加一个永久电源,以便能够主动擦除相关资产。此设计实现的额外成本可能是值得的。
MAXQ1061/MAXQ1062未实现的特性
由于芯片的初始设计基于TPM标准,芯片可以实现许多面向PC的用例,这些用例在小型嵌入式设备中并不特别相关。
PKCS#11 或 Microsoft CAPI 引擎。这些加密服务提供商可以利用基本的 TPM 标准功能,为上层软件层提供更安全的加密密钥存储和算法。与 TCG 软件堆栈相比,服务提供商支持的功能更少。MAXQ1061/MAXQ1062可以在这样的引擎中实现,但并不是真正为此目的而设计的。
基于 TPM 标准的芯片提供数字版权管理和软件许可证验证。以数字版权管理为例,当视频在 30 天的有限时间内购买时,视频解密密钥将在 30 天后过期。软件许可证验证可以通过验证平台的身份与许可证中注册的身份匹配以及验证许可证是否未过期来实现。
远程匿名证明。虽然这在涉及用户的事务中可能很重要,但此操作在不泄露其标识的情况下证明了平台的安全属性(如平台完整性)。删除匿名证明使用MAXQ1061/MAXQ1062中未实现的特定算法(DAA)。这种先进的概念功能强大但很复杂,在嵌入式应用程序中可能没有那么有用,因为简单的数字签名方案就足够了。
密码管理器。与磁盘加密用例类似,密码管理器在释放密码存储解密密钥之前需要证明平台的完整性。它还需要输入密码钱包的所有者主密码短语或成功匹配的指纹。在物联网的背景下,缺少密码管理器并不被视为真正的限制,因为密码很少使用。
结论
即使支持的加密算法变体列表存在一些差异,这通常也不是客户的决策因素,除非存在非常具体的加密要求。TPM标准和基于TPM标准的芯片使用和理解非常复杂,需要相对较大的主机端软件堆栈。此外,目前还不清楚TPM兼容芯片的制造商是否愿意提供个性化服务,例如在每个芯片中预加载唯一证书。
MAXQ1061/MAXQ1062完全适合物联网安全场景和要求。除非必须满足有关访问控制策略或认证的特殊要求,否则MAXQ1061/MAXQ1062始终是比基于TPM标准的芯片更好的选择,这要归功于安全概念的简单性、平台安全性的可验证性、更少的命令集、独特的功能,如主机处理器看门狗和复位控制, 设备机箱篡改检测功能和集成的 TLS 协议处理。MAXQ1061/MAXQ1062易于实现,对主机处理器存储器占用空间要求小。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !