一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用物理不可克隆函数产生计算装置的身份的制作方法

2021-11-10 02:10:00 来源:中国专利 TAG:

使用物理不可克隆函数产生计算装置的身份
1.相关申请案
2.本技术案要求2019年3月25日申请的且名称为“使用物理不可克隆函数产生计算装置的身份(generating an identity for a computing device using a physical unclonable function)”的美国专利申请案序列号16/363,204的优先权,其整个公开内容由此以引用的方式并入本文中。
3.本技术涉及由皮萨萨莱(pisasale)等人在2018年05月03日申请的名称为“噪声环境中的密钥产生及安全存储(key generation and secure storage in a noisy environment)”的美国非临时申请案序列号15/970,660,所述申请案的全部内容以引用的方式并入,如同在本文中完全阐述。
4.本技术涉及由蒙德罗(mondello)等人在2017年12月22日申请的名称为“使用消息认证码的物理不可克隆函数(physical unclonable function using message authentication code)”的美国非临时申请案序列号15/853,498,所述非临时申请案的全部内容以引用的方式并入,如同在本文中完全阐述。
5.本技术涉及由蒙德罗(mondello)等人在2018年4月27日申请的名称为“使用单调计数器的秘密密钥的安全分布(secure distribution of secret key using amonotonic counter)”的美国非临时申请案序列号15/965,731,所述非临时申请案的全部内容以引用的方式并入,如同在本文中完全阐述。
技术领域
6.本文所公开的至少一些实施例通常涉及计算装置的身份,且更具体地说但不限于使用物理不可克隆函数产生计算装置的身份。


背景技术:

7.物理不可克隆函数(puf)提供例如可充当例如微处理器的半导体装置的唯一身份的数字值。举例来说,puf是基于在半导体制造期间自然地发生且准许在另外相同的半导体芯片之间进行区分的物理变化。
8.puf通常在密码术中使用。puf可为例如体现于物理结构中的物理实体。puf通常实施于集成电路中,且通常用于具有高安全需求的应用中。举例来说,puf可用作唯一且不可篡改的装置标识符。puf还可用于安全密钥产生,且用作随机性的来源。
9.在与装置标识相关一个实例中,iot平台为由微软提供的云服务的集合。iot平台支持装置身份合成引擎(dice)及许多不同种类的硬件安全模块(hsm)。dice为用于装置标识和认证的受信任计算组(tcg)处的即将来临的标准,其使得制造商能够使用硅栅来建立位于硬件中的装置标识。hsm用于确保装置身份且提供高级功能性,例如基于硬件的装置认证和零触摸配置(zero touch provisioning)。
10.dice提供可缩放安全性框架,其使用hsm占据面积来锚定信任以用于构建安全性解决方案,例如验证、安全启动和远程认证。dice可用于表征iot装置的约束计算的当前环
境,且提供对更传统的安全框架标准的替代,例如受信任计算组(tcg)和受信任平台模块(tpm)。iot平台具有对来自一些硅供应商的hsm中的dice的hsm支持。
11.在与信任服务相关的一个实例中,鲁棒物联网(riot)是用于将信任服务提供到计算装置的架构。信任服务包含装置身份、认证及数据完整性。riot架构可用于在已经由恶意软件破解的装置中远程地重新建立信任。并且,可以低成本在甚至极小的装置上提供riot服务。
12.改进安全性技术已经产生对领域中的产品的更频繁的软件更新的需要。然而,这些更新必须在无需人工介入的情况下管理和验证。riot可以用于解决这些技术问题。
13.riot提供用于许多安全情境的加密操作和密钥管理的基础。认证、完整性验证和数据保护需要用以加密和解密的加密密钥,以及用以散列和签名数据的机制。大多数联网装置还使用密码术以确保与其它装置的通信。
14.由riot提供的加密服务包含装置身份、数据保护及认证。关于装置身份,装置通常通过证实加密密钥的拥有而认证其自身。如果提取和克隆与装置相关的密钥,那么装置可为假冒的。
15.关于数据保护,装置通常使用密码术来加密和完整保护本地存储的数据。如果加密密钥仅可由授权代码访问,那么未经授权的软件不能够解密或修改所述数据。
16.关于认证,装置有时需要报告其正在运行的代码和其安全配置。举例来说,认证用于证实装置正在运行最新代码。
17.如果仅在软件中管理密钥,那么软件组件中的错误可导致密钥泄漏。对于纯软件系统,在密钥泄漏之后恢复信任的主要方式在于安装经更新的软件且为装置提供新密钥。这对于服务器和移动装置是费时的,且在装置物理上不可访问时是不可能的。
18.用以确保远程重新供应的一些方法使用基于硬件的安全性。软件级攻击可允许黑客使用受硬件保护的密钥但不提取所述密钥,因此受硬件保护的密钥是用于被破解系统的重新供应的有用构建块。受信任平台模块或tpm是为密钥提供硬件保护的安全模块的实例,且还允许装置报告(证明)其正在运行的软件。因此,被破解的配备tpm的装置可以安全地发布新密钥,并且可以提供认证报告。
19.tpm在计算平台上广泛可用(例如,使用soc集成且处理器模式隔离的固件tpm)。然而,tpm通常为不可行的。举例来说,小iot装置不能够在不显著增加成本及电力需要的情况下支持tpm。
20.riot可用于为小计算装置提供装置安全性,但其还可应用于任何处理器或计算机系统。如果riot内核之外的软件组件被破解,那么riot提供安全修补和重新供应。riot还将不同的方法用于加密密钥保护。由riot框架使用的最受保护的加密密钥仅可在启动期间简单地获得。
附图说明
21.在附图的图中借助于实例而非限制说明实施例,在附图中,相似的参考标号指示类似的元件。
22.图1展示根据一个实施例的验证计算装置的身份的主机装置。
23.图2展示根据一个实施例的具有身份组件及验证组件的实例计算系统。
24.图3展示根据一个实施例的车辆的实例计算装置。
25.图4展示根据一个实施例的与车辆的实例计算装置通信的实例主机装置。
26.图5a展示根据一个实施例的产生主机装置的标识符、证书及密钥的应用程序板。
27.图5b展示根据一个实施例的使用层分段启动的实例计算系统。
28.图6展示根据一个实施例的使用非对称生成器产生标识符、证书及密钥的实例计算装置。
29.注意
30.图7展示根据一个实施例的使用解密操作验证计算装置的身份的验证组件。
31.图8展示根据一个实施例的用以验证证书的实例过程的框图。
32.图9展示根据一个实施例的使用标识符、证书及密钥验证计算装置的身份的方法。
33.图10展示根据一个实施例的用于从消息认证码(mac)的输出产生唯一密钥的系统,所述消息认证码从物理不可克隆函数(puf)装置接收输入。
34.图11展示根据一个实施例的用于从mac的输出产生唯一密钥的系统,所述mac从由选择器模块选择的一或多个puf装置接收输入。
35.图12展示根据一个实施例的用于从mac的输出产生唯一密钥的系统,所述mac接收来自一或多个puf装置的输入及来自单调计数器的输入(和/或来自如nonce、时间戳等的另一新鲜度机制的输入)。
36.图13展示根据一个实施例的从使用由一或多个puf提供的一或多个输入值的mac产生输出的方法。
37.图14展示根据一个实施例的用于从mac的输出产生根密钥的系统,所述mac接收来自一或多个puf装置的输入及来自单调计数器的输入(和/或来自如nonce、时间戳等另一新鲜度机制的输入),且添加额外mac以产生会话密钥。
38.图15展示根据一个实施例的用于将混淆密钥存储在非易失性存储器中的计算装置。
39.图16展示根据一个实施例的在混淆处理过程期间产生的中间密钥的实例。
40.图17展示根据一个实施例的在图16的混淆处理过程期间产生的另一中间密钥的实例。
41.图18展示根据一个实施例的用于在非易失性存储器中产生并存储混淆密钥的方法。
42.图19展示根据一个实施例的用于基于密钥注入产生初始密钥、混淆初始密钥且将混淆密钥存储在非易失性存储器中的计算装置。
43.图20展示根据一个实施例的用于使用物理不可克隆函数(puf)产生身份的计算装置。
44.图21展示根据一个实施例的发送由系统的单调计数器提供的初始值以用于确定是否已发生对系统的篡改的系统。
45.图22展示根据一个实施例的用于使用物理不可克隆函数(puf)产生计算装置的身份的方法。
具体实施方式
46.本文中的至少一些实施例涉及一或多个计算装置的身份的验证。在各种实施例中,主机装置通过将消息发送到计算装置而验证计算装置的身份。计算装置使用所述消息来产生发送到主机装置的标识符、证书及密钥。主机装置使用所产生的标识符、证书及密钥来验证计算装置的身份。
47.其它实施例涉及使用物理不可克隆函数(puf)产生计算装置的身份。在下文描述的各种实施例中,在主机装置如上文所描述验证身份之前,上文计算装置可使用至少一个puf产生其自身身份。在下文标题为“使用puf产生计算装置的身份(generating an identity for a computing device using a puf)”的章节中描述关于使用一或多个puf产生身份的各种实施例。
48.在与身份的验证相关的一些实例中,计算装置可为快闪存储器装置。在一些实例中,利用快闪存储器以在计算系统(例如,自主车辆的应用程序控制器)中添加强安全能力水平。
49.快闪存储器在众多计算机系统中使用。当今存在各种类型的快闪存储器,包含串行nor、并行nor、串行nand、并行nand、e.mmc、ufs等。这些插口跨越各种行业和应用而用于大部分嵌入式系统中。
50.举例来说,串行nor在例如医疗装置、工厂自动化板、汽车ecu、智能表和因特网网关等大量应用中使用。给定芯片组架构(处理器、控制器或soc)、操作系统和跨越这些应用使用的供应链的分集,快闪存储器为这些系统中的公分母构建块。
51.当今的计算机系统弹性的特征通常在于信任根的位置集成到装置中,且由其提供的安全功能的解决方案利用。对于关于信任根的更多信息,参见在特种出版物800

164中的国家技术研究所(the national institute of technology,nist)产生的定义。现有行业使用系统级的信任根的不同实施方案,使用硬件和软件能力的混合,产生方法的碎片化的技术问题和混淆安全性等级。选项的此复杂阵列还遭受如何防御其中存储有关键代码和数据的非易失性存储器的关键限制。
52.现有方法依赖于处理器和其它安全元件(例如,硬件安全模块(hsm))以将关键安全服务提供到其系统。这已在许多系统中在最低等级的启动下产生安全间隙,其中离散快闪存储器组件存储系统

关键代码和数据。闪存已变为许多黑客建立可从较高层级代码掩蔽其自身且抵抗去除的高级持续性威胁(apt)的目标。在许多这些情况下,快闪存储器用新的恶意代码重新成像或重写,这会破坏所述装置的完整性。
53.与身份的验证相关的本公开的各种实施例提供针对以上技术问题的技术解决方案。在一些实施例中,计算装置将基于硬件的信任根集成到快闪存储器装置中,从而实现iot装置的强加密身份和健康管理。通过存储器内移动基本安全原语,保护容纳于存储器自身内的代码及数据的完整性变成更简单。此方法可显著增强系统级安全性,同时最小化实施方案的复杂性和成本。
54.在一个实施例中,新iot装置管理能力利用快闪存储器,方法是使用快闪存储器和相关联软件实现由iot云进行的装置配置入网(onboarding)和管理。在一个例子中,解决方案提供加密身份,所述加密身份变成用于关键装置供应服务(例如,azure iot集线器装置供应服务(dps))的基础。在一个实例中,此dps连同经启用存储器可
实现装置至正确iot集线器的零接触配置以及其它服务。
55.在一些实施例中,为了实施以上能力,使用装置身份合成引擎(dice)(dice为来自受信任计算组(tcg)的即将来临的标准)。在一个实例中,经启用存储器仅准许受信任硬件获得对microsoft azure iot云的存取。在一个实例中,iot装置的健康及身份在存储器中经验证,其中通常存储关键代码。每一iot装置的唯一身份现在可在新层级处提供端对端装置完整性,在启动过程处开始。这可实现额外功能性,如基于硬件的装置认证和供应以及必要时管理装置的补救。
56.在一个实施例中,方法包含:通过计算装置(例如,串行nor快闪存储器装置)从主机装置(例如,cpu、gpu、fpga或车辆的应用程序控制器)接收消息;通过计算装置产生标识符(例如,公共标识符id
l1 public)、证书(例如,id
l1 certificate)及密钥(例如,k
l1
public),其中标识符与计算装置的身份相关联,且证书使用消息而产生;及通过计算装置将标识符、证书及密钥发送到主机装置,其中主机装置经配置以使用标识符、证书及密钥验证计算装置的身份。
57.在一些实施例中,以上计算装置(例如,快闪存储器装置)集成dice

riot功能性,其用于产生上文所描述且由主机装置使用以验证计算装置的身份的标识符、证书和密钥。在一个实例中,计算装置存储充当原语密钥的装置秘密,dice

riot协议的层之间的识别步骤的序列是基于所述原语密钥。在一个实例中,dice

riot功能性的层l0及l1使用硬件和/或软件在计算装置中实施。在一个实例中,层l0仅以硬件实施。
58.图1展示根据一个实施例的验证计算装置141的身份的主机装置151。主机装置151将消息发送至计算装置141。在一个实施例中,主机装置151包含新鲜度机制(未展示),其产生供用于将消息发送到计算装置141以避免重放攻击的新鲜度。在一个实例中,发送到计算装置141的每一消息包含由单调计数器产生的新鲜度。
59.在一个实例中,消息为空串、常规已知串(例如,主机装置151的制造商或操作员已知的字母数字串),或可为另一值(例如,分配给计算装置的身份值)。在一个实例中,消息为装置的唯一身份(uid)。
60.响应于接收到消息,计算装置141产生标识符、证书及密钥。标识符与计算装置141的身份相关联。计算装置141包含控制身份组件147的操作和/或计算装置141的其它功能的一或多个处理器143。
61.标识符、证书及密钥由身份组件147产生且基于装置秘密149。在一个实例中,装置秘密149为存储在计算装置141的存储器中的唯一装置秘密(uds)。在一个实例中,身份组件147使用uds作为用于实施dice

riot协议的原语密钥。标识符、证书及密钥从dice

riot协议的层l1输出(参见例如图6)。在一个实施例中,层l1的身份对应于计算装置141自身、计算装置141的制造商、包含计算装置141作为组件的事物的制造商和/或存储在计算装置141的存储器中的应用程序或其它软件的身份。在一个实例中,应用程序身份(例如,id号)用于移动电话、tv、stb等,对于所述移动电话、tv、stb等,字符及数字的唯一组合用于识别事物。
62.在一个实例中,层l1的身份为ascii串。举例来说,身份可为与事物名称串连的制造商名称(例如,lg|tv_model_123_year_2018等)。在一个实例中,身份可以十六进制形式表示(例如,53 61 6d 73 75 6e 67 20 7c 20 54 56 5f 6d 6f 64 65 6c 5f 31 32 33 5f 79 65 61 72 5f 32 30 31 38)。
63.在一个实施例中,制造商可针对正生产的一类或一组物品使用uds。在其它实施例中,每一物品可具有其自身的唯一uds。举例来说,tv的uds可为uds=0x12234

4444,且膝上型计算机的uds可为uds=0xaabb

00322。
64.在一个实施例中,装置秘密149为由计算装置141存储在存储器145中的秘密密钥。身份组件147使用秘密密钥作为到消息认证码(mac)的输入以产生衍生秘密。在一个实例中,衍生秘密为dice

riot协议中的融合衍生秘密(fds)。
65.在一个实例中,存储器145包含存储用于启动计算装置141的初始启动代码的只读存储器(rom)。fds为在启动操作期间由处理器143提供到初始启动代码的密钥。在一个实例中,rom对应于dice

riot协议的层l0。
66.主机装置151使用标识符、证书及密钥作为到验证组件153的输入,所述验证组件153验证计算装置141的身份。在一个实施例中,验证组件153使用标识符来执行至少一个解密操作以提供结果。将结果与密钥进行比较以确定计算机装置141的身份是否有效。如果是,那么主机装置151使用从计算装置141接收的密钥执行与计算装置141的进一步通信。举例来说,一旦主机装置151验证“三重”(标识符、证书和密钥),则密钥可用于认证在计算装置141与主机装置151之间交换的任何其它信息。
67.在一个实施例中,将数字标识分配给大量“事物”(例如,根据物联网)。在一个实例中,所述事物是物理物体,例如车辆或存在于车辆内部的物理物品。在一个实例中,事物为人或动物。举例来说,每个人或动物可被分配唯一数字标识符。
68.在一些情况下,产品的制造商希望可将每一产品证实为真。目前,通过仅从受信任卖方购买事物,或从具有确保所购买的事物为真的某种法律证书的其它人购买事物来解决此问题。然而,在偷窃事物的情况下,如果事物不具有电子身份,那么难以阻断或定位事物,使得不会不恰当地使用事物。在一个实例中,定位是基于当事物尝试与公共基础设施交互时的身份。在一个实例中,阻断是基于不能证实想要使用公共基础设施的事物的身份。
69.在一个实施例中,计算装置141使用身份组件147实施dice

riot协议,以便使唯一签名与对应于计算装置141的信任链相关联。计算装置141建立层l0及l1。信任链通过建立层l2…
的主机装置151继续。在一个实例中,可将唯一标识符分配给任何经定义环境(例如,由地理参数定义的信任区)中的每一物件、人及动物。
70.在一个实施例中,计算装置141为期望被分配身份的事物中的组件。举例来说,事物可为包含计算装置141的自主车辆。举例来说,计算装置141可为由车辆的应用程序控制器使用的快闪存储器。
71.当制造计算装置141时,制造商可将uds注入到存储器145中。在一个实例中,uds可经商定且与将使用计算装置141执行额外制造操作的客户共享。在另一实例中,uds可由原始制造商随机产生,且接着使用安全基础设施(例如,经由例如因特网的网络)传达到客户。
72.在一个实例中,客户可为并入有计算装置141的车辆的制造商。在许多情况下,车辆制造商希望改变uds,使得其为计算装置141的卖方未知的。在这些情况下,客户可使用由主机装置151提供到计算装置141的经认证替换命令来替换uds。
73.在一些实施例中,客户可将客户不可变的信息注入到计算装置141的存储器145中。在一个实例中,不可变的信息用于产生唯一fds,且并不单独用作微分器。客户不可变信息用于区分由客户制造的各种物件。举例来说,客户不可变信息可为字母和/或数字的组
合,以定义原语信息(例如,以下信息中的一些或全部的组合:日期、时间、批次位置、晶片位置、晶片中的x、y方位等)。
74.举例来说,在许多情况下,不可变的信息还包含来自由用户(例如,从制造商接收装置的客户)执行的加密特征配置的数据。此配置或设置可以仅通过使用认证命令(需要了解待执行的密钥的命令)完成。用户具有密钥的知识(例如,基于经由来自制造商的安全基础设施提供)。不可变信息表示计算装置的加密身份的形式,其不同于装置的唯一id(uid)。在一个实例中,将加密配置包含于一组不可变信息中为用户提供可用于自行定制不可变信息的工具。
75.在一个实施例中,计算装置141包含产生新鲜度的新鲜度机制。新鲜度可具备发送到主机装置151时的标识符、证书和密钥。新鲜度还可与主机装置151的其它通信一起使用。
76.在一个实施例中,计算装置141为应用程序板上的组件。应用程序板上的另一组件(未展示)可使用装置秘密149的知识(例如,所注入的uds的知识)验证计算装置141的身份。组件请求计算装置141使用消息认证码产生输出以便证实拥有uds。举例来说,消息认证码可如下:hmac(uds,“应用程序板消息|新鲜度”)
77.在另一实施例中,fds还可用作证实装置的拥有(例如,秘密密钥的知识)的准则。fds以此方式衍生自uds:fds=hmac

sha256[uds,sha256(“l
1”的身份)]
[0078]
因此,消息认证码可如下:hmac(fds,“应用程序板消息|新鲜度”)
[0079]
图2展示根据一个实施例的具有身份组件107及验证组件109的实例计算系统。主机系统101经由总线103与存储器系统105通信。存储器系统105的处理装置111具有对非易失性存储器121的存储器区111、113
……
119的读取/写入存取。在一个实例中,主机系统101还从易失性存储器123读取数据并且将数据写入到易失性存储器123。在一个实例中,身份组件107支持dice

riot协议的层l0和l1。在一个实例中,非易失性存储器121存储启动代码。
[0080]
验证组件109用于验证存储器系统105的身份。验证组件109响应于从主机系统101接收到主机消息而使用包含由身份组件107产生的标识符证书及密钥的三重,例如如上文所描述。
[0081]
身份组件107为图1的身份组件147的实例。验证组件109为图1的验证组件153的实例。
[0082]
存储器系统105包含密钥存储区157及密钥生成器159。在一个实例中,密钥存储区157可存储根密钥、会话密钥、uds(dice

riot)和/或用于由存储器系统105进行加密操作的其它密钥。
[0083]
在一个实例中,密钥生成器159产生发送到主机系统101以供用于由验证组件109验证的公钥。将公钥作为还包含标识符和证书的三重的部分发送,如上文所描述。
[0084]
存储器系统105包含新鲜度生成器155。在一个实例中,新鲜度生成器155可用于经认证命令。在一个实例中,可使用多个新鲜度生成器155。在一个实例中,新鲜度生成器155可供主机系统101使用。
[0085]
在一个实例中,处理装置111和存储器区111、113
……
119在同一芯片或裸片上。在一些实施例中,存储器区存储供主机系统101和/或处理装置111在机器学习处理期间使用的数据和/或在主机系统101上或处理装置111上执行的软件处理程序所产生的其它数据。
[0086]
计算系统可包含存储器系统105中的写入组件,所述写入组件选择用于记录来自
主机系统101的新数据的存储器区111(例如,快闪存储器的记录段)。计算系统100可进一步包含主机系统101中的写入组件,所述写入组件与存储器系统105中的写入组件107协调以至少促进存储器区111的选择。
[0087]
在一个实例中,易失性存储器123用作主机系统101的处理装置(未展示)的系统存储器。在一个实施例中,主机系统101的处理程序选择存储器区以用于写入数据。在一个实例中,主机系统101可部分地基于来自传感器和/或在自主车辆上执行的软件处理程序的数据而选择存储器区。在一个实例中,前述数据由主机系统101提供到选择存储器区的处理装置111。
[0088]
在一些实施例中,主机系统101或处理装置111包含身份组件107和/或验证组件109的至少一部分。在其它实施例中,或以组合方式,处理装置111和/或主机系统101中的处理装置包含身份组件107和/或验证组件109的至少一部分。举例来说,处理装置111和/或主机系统101的处理装置可包含实施身份组件107和/或验证组件109的逻辑电路。举例来说,主机系统101的控制器或处理装置(例如,cpu、fpga或gpu)可经配置以执行存储于存储器中的用于进行本文所描述的身份组件107和/或验证组件109的操作的指令。
[0089]
在一些实施例中,身份组件107实施于安置于存储器系统105中的集成电路芯片中。在其它实施例中,主机系统101中的验证组件109是主机系统101的操作系统、装置驱动器或应用程序的部分。
[0090]
存储器系统105的实例是经由存储器总线连接到中央处理单元(cpu)的存储器模块。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so

dimm)、非易失性双列直插式存储器模块(nvdimm)等。在一些实施例中,存储器系统可以是提供存储器功能和存储装置功能两者的混合存储器/存储系统。一般来说,主机系统可利用包含一或多个存储器区的存储器系统。主机系统可提供待存储于存储器系统处的数据,且可请求待从存储器系统检索的数据。在一个实例中,主机可存取包含易失性和非易失性存储器的各种类型的存储器。
[0091]
主机系统101可为计算装置,例如车辆中的控制器、网络服务器、移动装置、蜂窝式电话、嵌入式系统(例如,具有片上系统(soc)和内部或外部存储器的嵌入式系统),或包含存储器和处理装置的任何计算装置。主机系统101可包含或耦合到存储器系统105,使得主机系统101可从存储器系统105读取数据或将数据写入到存储器系统105。主机系统101可经由物理主机接口耦合到存储器系统105。如本文中所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行连接的scsi(sas)、双数据速率(ddr)存储器总线等。物理主机接口可用于在主机系统101与存储器系统105之间发射数据。物理主机接口可提供用于在存储器系统105与主机系统101之间传递控制、地址、数据和其它信号的接口。
[0092]
图2将存储器系统105作为实例进行说明。一般来说,主机系统101可经由相同通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器系统。
[0093]
主机系统101可包含处理装置和控制器。主机系统101的处理装置可例如为微处理器、中央处理单元(cpu)、处理器的处理核心、执行单元等。在一些情况下,主机系统的控制
器可称为存储器控制器、存储器管理单元和/或起始器。在一个实例中,控制器控制在主机系统101与存储器系统105之间经由总线103的通信。这些通信包含发送用于如上文所描述验证存储器系统105的身份的主机消息。
[0094]
主机系统101的控制器可与存储器系统105的控制器通信以执行例如在非易失性存储器121的存储器区处读取数据、写入数据或擦除数据的操作。在一些情况下,控制器集成于处理装置111的同一封装内。在其它实情况下,控制器与处理装置111的封装分开。控制器和/或处理装置可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器、高速缓存存储器或其组合。控制器和/或处理装置可以是微控制器、专用逻辑电路(例如现场可编程门阵列(fpga)、专用集成电路(asic)等)或另一合适的处理器。
[0095]
在一个实施例中,存储器区111、113
……
119可包含不同类型的非易失性存储器组件的任何组合。此外,存储器区的存储器单元可分组为存储器页或数据块,其可指用以存储数据的单元。在一些实施例中,易失性存储器123可为但不限于随机存取存储器(ram)、动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
[0096]
在一个实施例中,存储器系统105的一或多个控制器可与存储器区域111、113
……
119通信以执行操作,例如读取数据、写入数据或擦除数据。每一控制器可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。每一控制器可以是微控制器、专用逻辑电路(例如现场可编程门阵列(fpga)、专用集成电路(asic)等)或另一合适的处理器。控制器可包含经配置以执行存储在本地存储器中的指令的处理装置(处理器)。在一个实例中,控制器的本地存储器包含经配置以存储用于执行控制存储器系统105的操作(包含操控存储器系统105与主机系统101之间的通信)的各种处理程序、操作、逻辑流程和例程的指令的嵌入式存储器。在一些实施例中,本地存储器可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器还可包含用于存储微码的只读存储器(rom)。
[0097]
一般来说,存储器系统105的控制器可从主机系统101和/或处理装置111接收命令或操作并且可将所述命令或操作转换成基于针对存储器区的数据写入计数器而实现存储器区的选择的指令或适当命令。控制器还可负责其它操作,例如耗损均衡、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作和在与存储器区相关联的逻辑块地址与物理块地址之间的地址转换。控制器可进一步包含主机接口电路以经由物理主机接口与主机系统101通信。主机接口电路可将从主机系统接收到的命令转换成命令指令以存取存储器区中的一或多个,以及将与存储器区相关联的响应转换成用于主机系统101的信息。
[0098]
存储器系统105还可包含未说明的额外电路或组件。在一些实施例中,存储器系统105可包含可从一或多个控制器接收地址且对地址进行解码以存取存储器区的高速缓存或缓冲器(例如,dram或sram)和地址电路(例如,行解码器和列解码器)。
[0099]
在一些实施例中,主机系统101或存储器系统105中的控制器和/或处理装置111包含身份组件107和/或验证组件109的至少一部分。举例来说,控制器和/或处理装置111可包含实施身份组件107和/或验证组件109的逻辑电路。举例来说,处理装置(处理器)可经配置以执行存储于存储器中的指令以用于进行提供对如本文中所描述的身份组件107的存储器区的读取/写入存取的操作。在一些实施例中,验证组件109是操作系统、装置驱动器或应用程序的部分。
[0100]
图3展示根据一个实施例的车辆100的实例计算装置。举例来说,车辆100可为自主车辆、非自主车辆、应急车辆、服务车辆等。
[0101]
车辆100包含车辆计算装置110,例如车载计算机。车辆计算装置110为图1的主机装置151的实例。在另一实例中,车辆计算装置110为图2的主机系统101的实例,且存储器160为存储器系统105的实例。
[0102]
车辆计算装置110包含耦合到车辆通信组件130的处理器120,所述车辆通信组件130为例如读取器、写入器和/或能够执行下文描述的功能的其它计算装置,其耦合到(或包含)天线140。车辆通信组件130包含耦合到例如非易失性快闪存储器的存储器160的处理器150,但实施例不限于此种类的存储器装置。
[0103]
在一个实例中,存储器160适于存储与车辆(例如,驾驶员、乘客和所载运货物)相关的所有信息,其方式为使得车辆100能够在接近检查点时通过使用通信接口(例如所谓的dice

riot协议)提供此信息,如下文所描述。
[0104]
在一个实例中,车辆信息(例如车辆id/车牌号)已经存储于车辆存储器160中,且车辆100能够例如通过通信组件130并且通过使用已知dice

riot协议或类似协议,识别乘客的电子id和/或载运的行李箱、货物等等的id,并且随后将此信息存储于存储器160中。在一个实例中,电子id、运输的行李箱及货物集装箱配备有无线应答器、nfc、蓝牙、rfid、非接触式传感器、磁条等等,且通信组件130可使用读取器和/或电磁场从这类远程来源获取需要的信息。
[0105]
在一个实例中,所有乘客id和/或载运的行李箱、货物等的id配备有能够与通信组件交换数据的电子装置。那些电子装置可为有源或无源元件,在某种意义上,其可为有源的,原因是其由电力供电,或可被外部电源激活和供电,所述外部电源仅当电气装置在其附近时才提供所需的电力供应。
[0106]
租赁车辆或自主车辆可使用读取器和/或电磁场来获取车辆内部或附近的信息,或作为替代方案,可甚至从远程来源接收信息,例如当租赁车辆的驾驶员由于先前预约而已经得知租赁系统时。当驾驶员到达以提车时,可实时地进行另一检查。
[0107]
类似地,关于车辆100所载运的所运输行李箱及货物(以及关于乘客)的所有信息可维持为总是最新的。为此,归因于与行李箱及货物相关联或乘客(未展示)所拥有的无线应答器,乘客的电子id和/或所载运的行李箱和货物的id实时地更新。
[0108]
在一个实例中,车辆通信组件130与附近来源(例如,货物应答器等)之间的通信经由dice

riot协议发生。
[0109]
在一个实例中,车辆计算装置110可控制车辆100的操作参数,例如转向及速度。举例来说,控制器(未展示)可耦合到转向控制系统170和速度控制系统180。此外,车辆计算装置110可耦合到信息系统190。信息系统190可经配置以显示消息,例如路线信息或检查点安全消息,且可显示视觉警告和/或输出可听警告。通信组件130可从额外计算装置,例如从外部计算装置(未展示)接收信息。
[0110]
图4展示根据一个实施例的具有与车辆300的实例计算装置通信的主机装置350的实例系统390。计算装置包含无源通信组件310,例如短程通信装置(例如,nfc标签)。通信组件310可处于车辆300中,所述车辆300可如图3中针对车辆100所展示进行配置,且除了可如车辆通信组件130配置的通信组件310之外还包含车辆100的组件。通信组件310包含芯片
320(例如,实施车辆300的cpu或应用程序控制器),所述芯片320具有存储关于车辆300的信息(例如车辆id、驾驶员/乘客信息、所载运的货物信息等)的非易失性存储组件330。通信组件310可以包含天线340。
[0111]
主机装置350为例如有源通信装置(例如,其包含电源),其可从通信组件310接收信息和/或向通信组件310发射信息。在一些实例中,主机装置350可包含读取器(例如nfc读取器),例如收费读取器,或其它组件。主机装置350可为邻近检查点(例如,在信任区的边界处)或通常邻近受限存取区域而布置(例如,嵌入)的外部装置。在一些实施例中,主机装置350还可由警察携带以供用作便携式装置。
[0112]
主机装置350可包含处理器360、例如非易失性存储器的存储器370和天线380。存储器370可包含允许主机装置350与通信组件310通信的nfc协议。举例来说,主机装置350及通信组件310可使用nfc协议通信,例如在约13.56兆赫兹下且根据iso/iec 18000

3国际标准通信。可使用使用rfid标签的其它方法。
[0113]
主机装置350还可与服务器或其它计算装置通信(例如,经由无线网络与中央操作中心通信)。举例来说,主机装置350可以无线方式耦合或硬接线到服务器或通信中心。在一些实例中,主机装置350可以经由wifi或经由因特网与操作中心通信。当车辆300将天线340引入到天线380的通信距离内时,主机装置350可为通信组件310供能。在一些实例中,主机装置350可从操作中心接收实时信息,且可将所述信息发射到车辆300。在一些实施例中,通信组件310可具有其自身的电池。
[0114]
在一个实施例中,主机装置350适于从车辆300读取信息/将信息发送到车辆300,所述车辆300配备有经配置以允许信息交换的通信组件310(例如,有源装置)。
[0115]
再次参考图3,车辆100的车辆通信组件130可在内部活动以拾取关于乘客id、所运输行李箱和/或货物的实时相关信息(例如,当配备有上文关于图4所论述的对应无线通信组件时)。车辆的计算装置可检测数米(例如,2到3米)的空间范围内的信息,使得可获取对应于乘客、行李箱及货物的所有数据。在一个实例中,这在车辆接近特定近程内的外部通信组件(例如,充当主机装置的服务器或其它计算装置)时发生,使得通信可开始和/或变得加强。通信距离为例如2到3米。
[0116]
在一个实施例中,车辆通信组件130可在与外部实体和/或与内部实体通信时对数据进行加密。在一些情况下,关于所运输的行李箱、货物或甚至乘客的数据可为机密的或包含机密信息(例如,乘客或机密文档或危险材料的正常状态)。在此情况下,需要将存储在与车辆计算装置相关联的存储器部分中的信息和数据保持为经加密数据。
[0117]
在下文论述的各种实施例中,论述用于内部车辆计算装置与外部实体(例如,充当主机装置的服务器)之间的加密和解密通信的方法。在一个实例中,此方法可甚至在内部车辆计算装置与相关联于车辆上搭载的乘客、行李箱和货物的电子组件之间应用。
[0118]
在一个实例中,车辆通信组件130将车辆公钥发送到外部通信组件(例如,充当主机装置151),且外部通信组件将外部公钥发送到车辆通信组件130。这些公钥(车辆和外部)可用于对发送到每个相应通信组件的数据进行加密,且验证每个通信组件的身份以及交换确认和其它信息。作为实例,如下文进一步描述,车辆通信组件130可以使用所接收的外部公钥对数据进行加密,并将经加密数据发送到外部通信组件。同样,外部通信组件可使用所接收的车辆公钥对数据进行加密,并将经加密数据发送到车辆通信组件130。由车辆100发
送的数据可包含轿车信息、乘客信息、货物信息等。信息可任选地用数字签名发送以验证车辆100的身份。此外,信息可提供到车辆100且显示于车辆100的仪表板上,或发送到与车辆100相关联的计算装置(例如,用户装置或监测车辆的中央服务器)的电子邮件。可基于车辆的标识、vin号等连同车辆数字签名一起辨识车辆。
[0119]
在一个实例中,在车辆与外部实体之间交换的数据可具有由对方使用的新鲜度。作为实例,由车辆发送到外部实体以指示相同指令的数据可以在每个特定时间范围或针对所发送的特定量数据而改变。这可防止黑客拦截先前发送的数据中所含有的机密信息且再次发送相同数据以产生相同结果。如果数据被稍微修改但仍指示相同的指令,黑客可能会在稍后的时间点发送相同的信息,但由于接收方期望修改后的数据执行相同的指令,因此不会执行相同的指令。
[0120]
车辆100与外部实体(例如,计算系统或装置)(未展示)之间交换的数据可以使用如下文所描述的多个加密和/或解密方法来执行。数据的安全可确保防止未授权活动干扰车辆100和外部实体的操作。
[0121]
图5a展示根据一个实施例的产生包含发送到主机装置的标识符、证书及密钥的三重的应用程序板。主机装置使用三重来验证应用程序板的身份。应用程序板为图1的计算装置141的实例。主机装置为图1的主机装置151的实例。
[0122]
在一个实施例中,应用程序板和主机包含通信组件,所述通信组件使用装置标识组合引擎(dice)

鲁棒物联网(riot)协议执行用于通信(例如,关于信息和数据)的加密和/或解密操作。在一个实例中,dice

riot协议应用于车辆通信组件与外部通信组件之间的通信,以及应用于在车辆通信组件与各种无线电子装置之间的车辆环境内部的通信,所述无线电子装置与乘客id、行李箱、货物等中的每一者相关联
[0123]
图5b展示根据一个实施例的使用层而分段启动的实例计算系统。系统包含根据本公开的实施例的外部通信组件430'及车辆通信组件430”。当车辆靠近外部实体或在其附近时,车辆的相关联的车辆通信组件430”可以例如使用传感器(例如,射频识别传感器或rfid等)如上文所描述与外部实体交换数据。
[0124]
在其它实施例中,组件430'可为位于车辆中的应用程序板,且组件430”可为也位于车辆中的主机装置,其使用dice

riot协议来验证组件430'的身份(例如,如上文关于图1所论述)。
[0125]
在一个实施例中,dice

riot协议由计算装置使用以使用层而分段启动,其中每一层认证及加载后续层且在每一层处提供越来越复杂的运行时间服务。因此,一个层可以由前一层服务并服务于下一层,从而创建构建在较低层之上并服务于较高阶层的层的互连网络。替代地,可使用其它协议代替dice

riot协议。
[0126]
在通信协议的一个实例实施方案中,通信协议的安全性是基于秘密值,所述秘密值是在制造期间(或还在稍后)设置的装置秘密(例如,uds)。装置秘密uds存在于其所供应的装置内(例如,作为图1的装置秘密149而存储)。
[0127]
装置秘密uds可在启动时间由第一阶段基于rom的启动加载程序访问。系统随后提供一种机制,使装置秘密直到下一启动循环才可访问,且只有启动加载程序(例如启动层)才能访问装置秘密uds。因此,在这种方法中,启动以开始于装置秘密uds的特定架构分层。
[0128]
如图5b所说明,层0l0和层1l1在外部通信组件430'内。层0l0可将融合衍生秘密fds
密钥提供到层1l1。fds密钥可基于层1l1的代码的身份和其它安全相关数据。特定协议(例如鲁棒物联网(riot)核心协议)可使用fds来验证其加载的层1l1的代码。在实例中,特定协议可包含装置标识组合引擎(dice)和/或riot核心协议。作为实例,fds可包含层1l1固件图像本身、以加密方式识别经授权层1l1固件的清单、在安全启动实施方案的上下文中签署的固件的固件版本号,和/或装置的安全关键配置设置。装置秘密uds可用于创建fds,并存储在外部通信组件的存储器中。因此,层0l0从不显示实际的装置秘密uds,而是向引导链中的下一层提供衍生密钥(例如fds密钥)。
[0129]
如箭头410'所示,外部通信组件430'适于将数据发射到车辆通信组件430”。所发射数据可包含公共的外部标识、证书(例如,外部标识证书)和/或外部公钥,如将结合图6说明。车辆通信组件430”的层2l2可接收所发射数据,在操作系统os例如在第一应用程序app1和第二应用程序app2上的操作中执行所述数据。
[0130]
同样地,如箭头410”所示,车辆通信组件430”可发射数据,包含公共的车辆标识、证书(例如,车辆标识证书)和/或车辆公钥。作为实例,在验证之后(例如,在验证证书之后),车辆通信组件430”可发送车辆标识号vin以用于车辆的进一步认证、识别和/或验证。
[0131]
如图5b及图6中所示,在实例操作中,外部通信组件430'可读取装置秘密ds,将层1l1的身份散列,并且执行以下计算:
[0132]
fds=kdf[uds,散列(“不可变信息”)]
[0133]
其中kdf是加密单向密钥导出函数(例如,hmac

sha256)。在以上计算中,散列可以是任何加密原语,例如sha256、md5、sha3等。
[0134]
在至少一个实例中,车辆可使用匿名登录或经认证登录中的任一者进行通信。经认证登录可以允许车辆获得在匿名模式下通信时可能无法访问的额外信息。在至少一个实例中,认证可包含提供车辆标识号vin和/或认证信息,例如公钥的交换,如下文将描述。在匿名及认证模式中的任一个中,外部实体(例如,信任区的边界处的检查点警察)可与车辆通信以将与外部实体相关联的外部公钥提供到车辆。
[0135]
图6展示根据一个实施例的使用非对称生成器产生标识符、证书及密钥的实例计算装置。在一个实施例中,计算装置实施确定参数的过程(例如,在外部装置的层l1内,或在替代实施例中,内部计算装置的层l1内)。
[0136]
在一个实施例中,确定包含随后被发送(如箭头510'所示)到车辆通信组件(例如,图5b中的参考标号430”)的层2l2的外部公共标识、外部证书和外部公钥的参数。图6的箭头510'和510”分别对应于图5b的箭头410'和410”。并且,图6中的层对应于图5b的层。
[0137]
在另一实施例中,通过模式(数据)合并531将来自主机装置的消息(“主机消息”)与外部公钥合并以提供用于加密的合并数据。合并数据为到加密器530的输入。在一个实例中,主机消息与外部公钥串连。所产生的参数包含发送到主机装置且用于验证计算装置的身份的三重。举例来说,外部公共标识、外部证书和外部公钥由主机装置的验证组件使用以验证身份。在一个实例中,主机装置为图1的主机装置151。
[0138]
如图6所展示,来自层0l0的fds被发送到层1l1,且由非对称id生成器520使用以产生公共标识idlkpublic和私用标识idlkprivate。在缩写“idlkpublic”中,“lk”指示通用层k(在此实例中,层1l1),且“public”指示公开共享标识。公共标识idlkpublic通过向右侧延伸且延伸到外部通信组件的层1l1之外的箭头而被说明为共享。所产生的私用标识
idlkprivate用作输入到加密器530中的密钥。加密器530可为例如用于对数据进行加密的任何处理器、计算装置等。
[0139]
外部通信组件的层1l1可包含非对称密钥生成器540。在至少一个实例中,随机数生成器rnd可任选地将随机数输入到非对称密钥生成器540中。非对称密钥生成器540可产生与外部通信组件(例如图5b中的外部通信组件430')相关联的公钥klkpublic(称为外部公钥)和私钥klkprivate(称为外部私钥)。
[0140]
外部公钥klkpublic可以是到加密器530中的输入(作为“数据”)。如上文所提及,在一些实施例中,先前作为身份验证过程的部分从主机装置接收的主机消息与klkpublic合并以将合并数据作为输入数据提供到加密器530。
[0141]
加密器530可使用外部私用标识idlkprivate和外部公钥klkpublic的输入来产生结果k'。外部私钥klkprivate和结果k'可输入到额外加密器550中,从而产生输出k”。输出k”为发射到层2l2(或替代地,发射到验证身份的主机装置)的外部证书idl1certificate。外部证书idl1certificate可能够验证和/或认证从装置发送的数据的来源。作为实例,从外部通信组件发送的数据可以通过验证证书而与外部通信组件的身份相关联,如将结合图7进一步描述。此外,外部公钥kl1public key可发射到层2l2。因此,外部通信组件的公共标识idl1public、证书idl1certificate和外部公钥kl1public key可发射到车辆通信组件的层2l2。
[0142]
图7展示根据一个实施例的使用解密操作验证计算装置的身份的验证组件。验证组件包含解密器730、750。验证组件实施根据本公开的实施例的验证证书的过程。
[0143]
在图7的所说明实例中,从外部通信组件(例如,从图5b中的外部通信组件430'的层1l1)提供公钥kl1public、证书idl1certificate和公共标识idl1public。
[0144]
证书idl1certificate和外部公钥kl1public的数据可以用作到解密器730中的输入。解密器730可为用以对数据进行解密的任何处理器、计算装置等。证书idl1certificate和外部公钥kl1public的解密的结果可连同公共标识idl1public一起用作到解密器750中的输入,从而产生输出。如在框760处所说明,外部公钥kl1public和来自解密器750的输出可指示证书是否经验证,从而产生是或否作为输出。私钥与单层相关联,且特定证书可仅由特定层产生。
[0145]
响应于证书已验证(例如,认证之后),从已验证装置接收的数据可被接受、解密和/或处理。响应于所述证书未被验证,从已验证装置接收的数据可被舍弃、去除和/或忽略。以此方式,可检测和避免发送不法数据的未授权装置。作为实例,可识别发送待处理的数据的黑客且不处理黑客数据。
[0146]
在替代实施例中,从图1的计算装置141或从图2的存储器系统105提供公共密钥kl1public、证书idl1certificate及公共标识idl1public。此三重由计算装置141响应于从主机装置接收到主机消息而产生。在将idl1certificate作为输入提供到解密器730之前,通过模式(数据)合并731合并idl1certificate及来自主机装置的消息(“主机消息”)。在一个实例中,合并为数据的串接。合并数据作为输入提供到解密器730。验证过程接着如上文所描述以其它方式进行。
[0147]
图8展示根据一个实施例的用以验证证书的实例过程的框图。在装置发送可被验证以避免后续否认(repudiation)的数据的情况下,可产生签名且与数据一起发送。举例来
说,第一装置可作出对第二装置的请求,且一旦第二装置执行所述请求,则第一装置可指示第一装置从未作出此类请求。抗否认方法,例如使用签名,可避免第一装置的否认,且确保第二装置可在无后续困难的情况下执行请求的任务。
[0148]
车辆计算装置810”(例如,图3中的车辆计算装置110或图1的计算装置141)可将数据dat”发送到外部计算装置810'(或一般来说发送到任何其它计算装置)。车辆计算装置810”可使用车辆私钥klkprivate产生签名sk。可将签名sk发射到外部计算装置810'。外部计算装置810'可使用数据dat'和先前接收到的公钥klkpublic(例如,车辆公钥)来验证。以此方式,签名验证通过使用私钥加密签名且使用公钥解密签名而操作。以此方式,用于每个装置的独特签名可保持对发送所述签名的装置来说是私用的,同时允许接收装置能够解密签名以用于验证。这与数据的加密/解密形成对比,所述数据由发送装置使用接收装置的公钥加密且由接收装置使用接收器的私钥解密。在至少一个实例中,车辆可通过使用内部密码术过程(例如,椭圆曲线数字签名(ecdsa)或类似过程)来验证数字签名。
[0149]
归因于证书以及公钥的交换和验证,装置能够以安全方式彼此通信。当车辆接近外部实体(例如信任区边界、边界安全实体或通常电子控制的主机装置)时,相应通信装置(其具有图7中展示的验证相应证书的能力)彼此交换证书以及通信。在认证之后(例如,在从外部实体接收/验证证书和公钥之后),车辆因此能够传达与其相关且存储在其存储器中的所有所需信息,例如,车牌号/id、vin、保险号码、驾驶员信息(id、边界过渡的最终权限)、乘客信息、运输货物信息等。随后,在检查所接收信息之后,外部实体将过渡请求的结果传达到车辆,此信息可能使用接收器的公钥加密。可使用上文描述的dice

riot协议加密/解密所交换消息/信息。在一些实施例中,所谓的不可变信息(例如,车牌号/id、vin、保险号码)不加密,而对其它信息进行加密。换句话说,在交换的消息中,可存在未加密数据以及经加密数据:因此,信息可经加密或未经加密或是混合的。随后通过使用证书/公钥验证消息的内容是有效的来确保消息的正确性。
[0150]
图9展示根据一个实施例的使用标识符、证书及密钥验证计算装置的身份的方法。举例来说,图9的方法可在图1到7的系统中实施。
[0151]
图9的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,图9的方法至少部分地由图1的身份组件147及验证组件153执行。
[0152]
虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可以在各种实施例中省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程是可能的。
[0153]
在框921处,从主机装置接收消息。举例来说,计算装置141从主机装置151接收消息(例如,“主机消息”或“主机消息|新鲜度”)。
[0154]
在框923处,产生标识符、证书及密钥(例如,公钥k
l1
public)。标识符与计算装置的身份相关联。证书使用来自主机装置的消息(例如,“主机消息”)而被产生。在一个实施例中,在加密之前合并消息与公钥。此加密使用私用标识符id
l1
private作为密钥。私用标识符id
l1
private与公共标识符id
l1
public相关联(例如,由非对称id生成器520产生的相关联
对)。
[0155]
在一个实例中,身份组件147产生标识符、证书和密钥以提供三重。在一个实例中,基于dice

riot协议产生三重。在一个实例中,如图6中所说明产生三重。
[0156]
在一个实例中,使用dice

riot协议,每一层(l
k
)将按键及证书的集合提供到下一层(l
k 1
),且每一证书可由接收层验证。如下计算融合衍生秘密fds:
[0157]
fds=hmac

sha256[uds,sha256(“l1的身份”)]
[0158]
在一个实例中,dice

riot架构中的层1l1使用由主机装置发送的主机消息产生证书。层1如下计算两个相关联密钥对:
[0159]
(id
lk public
,id
lk private
)和(kl
k public
,kl
k private
)
[0160]
层1还如下计算两个签名:
[0161]
k'=加密(id
lk private
,kl
k public
|主机消息)
[0162]
k”=加密(kl
k private
,k')
[0163]
从以上处理,层1如下提供三重:
[0164][0165]
更一般来说,每一层如下提供三重:
[0166]
k
lk
=对于每一k=1:n,{密钥及证书的集合}
[0167]
使用相应三重,每一层能够向下一层证实其身份。
[0168]
在一个实例中,层2对应于应用程序固件,且后续层对应于主机装置的操作系统和/或应用程序。
[0169]
在框925处,将所产生的标识符、证书及密钥发送到主机装置。主机装置使用标识符、证书及密钥来验证计算装置的身份。在一个实例中,主机装置151从计算装置141接收标识符、证书及密钥。主机装置151使用验证组件153来验证计算装置的身份。
[0170]
在一个实例中,验证组件153执行作为验证过程的部分的解密操作。解密包含在使用从计算装置141接收的密钥解密之前将来自主机的消息与证书合并。在一个实例中,如图7中所说明执行计算装置的身份的验证。
[0171]
在一个实例中,如下执行解密操作:
[0172]
使用kl
1 public
对(id
l1
certificate)进行解密以提供k'
[0173]
使用id
l1 public
对k'进行解密以提供结果
[0174]
将结果与kl
1 public
进行比较。如果结果等于kl
1 public
,那么身份经验证。在一个实例中,验证应用程序板身份。
[0175]
在一个实施例中,证实人或动物的身份。类似于如上文所描述的验证计算装置141的身份来执行人的身份的验证。在一个实例中,计算装置141集成到人的护照中。已经发布护照的国家的公共管理部门可以使用对于一类文档特定的uds(例如,驾照、护照、id卡等)。举例来说,对于意大利,西西里,墨西拿,护照局(italy,sicily,messina,passport office),uds=0x12234

4444。对于德国,巴伐利亚,慕尼黑,护照局(germany,bavaria,munich,passport office),uds=0xaabb

00322
[0176]
在关于护照的一个实例中,l1的身份为如下的ascii串:
[0177]
国家|文档类型|等(例如,“意大利,西西里,墨西拿,护照局”)
[0178]
可通过每个国家的公共管理来确定分配的“粒度”。
[0179]
图9的方法的各种实施例提供各种优点。举例来说,可在不使用第三方密钥基础设施(例如,pki=公钥基础设施)的情况下将事物识别并证明为由特定工厂生产。归因于重放受保护而防止中间攻击中的恶意或黑客。方法可用于事物的大批量生产。
[0180]
此外,在硬件层级(例如,组件外部的层0的不可存取性)下保护客户uds。uds无法由任何人读取,但其可以被替换(例如,仅客户可以通过使用安全协议来进行替换)。安全协议的实例包含基于经认证、重放受保护命令和/或基于秘密共享算法的安全协议,所述算法如迪菲赫尔曼(diffie hellman)(例如,ecdh椭圆曲线迪菲赫尔曼)。在一个实例中,通过使用安全基础设施将uds传达到客户(并非终端用户)。uds可由客户定制。
[0181]
另外,组件辨识可在不存在因特网或其它网络连接的情况下工作。并且,方法可用于容易地检查以下各者的身份:信任区边界(例如,国界、内部检查点等)处的事物、动物和人。
[0182]
在一个实例中,对uds的了解准许主机装置安全地替换uds。举例来说,可在以下情况下进行替换:主机希望改变事物的身份,或主机希望其它任何人(包含原始制造商)不知道事物的身份。
[0183]
在另一实例中,替换命令由主机装置使用。举例来说,主机装置可将替换uds命令发送到计算装置。替换命令包含现有uds和待归于计算装置的新uds。在一个实例中,替换命令具有包含如下散列值的字段:散列(现有uds|新uds)。
[0184]
在另一实例中,使用具有如下字段的经认证重放保护命令:replace_command|新鲜度|签名
[0185]
其中签名=mac[秘密密钥,replace_command|新鲜度|散列(现有uds|新uds)]
[0186]
秘密密钥为额外密钥,且为用于存在于装置上的认证命令的密钥。举例来说,秘密密钥可为如下文所描述的会话密钥(参见例如图12)。
[0187]
在一个实施例中,方法包括:通过计算装置(例如,计算装置141)从主机装置(例如,主机装置151)接收消息;通过计算装置产生标识符、证书及密钥,其中标识符与计算装置的身份相关联,且证书使用所述消息而被产生;及通过计算装置将标识符、证书及密钥发送到主机装置,其中主机装置经配置以使用标识符、证书及密钥来验证计算装置的身份。
[0188]
在一个实施例中,验证计算装置的身份包括将消息与证书串接以提供第一数据。
[0189]
在一个实施例中,验证计算装置的身份进一步包括使用密钥对第一数据进行解密以提供第二数据。
[0190]
在一个实施例中,验证计算装置的身份进一步包括使用标识符对第二数据进行解密以提供结果,及将所述结果与密钥进行比较。
[0191]
在一个实施例中,标识符为公共标识符,且计算装置存储秘密密钥,所述方法进一步包括:使用秘密密钥作为到消息认证码的输入以产生衍生秘密;其中使用衍生秘密作为到非对称生成器的输入来产生公共标识符。
[0192]
在一个实施例中,标识符为第一公共标识符,且计算装置存储用于产生第一公共标识符的第一装置秘密,所述方法进一步包括:从主机装置接收替换命令;响应于接收到所述替换命令,用第二装置秘密替换第一装置秘密;及将使用第二装置秘密产生的第二公共标识符发送到主机装置。
[0193]
在一个实施例中,密钥为公钥,且产生证书包含将消息与公钥串接以提供用于加
密的数据输入。
[0194]
在一个实施例中,标识符为公共标识符,且第一非对称生成器产生公共标识符及私用标识符作为相关联对;密钥为公钥,且第二非对称生成器产生公钥及私钥作为相关联对;且产生证书包括:将消息与公钥串接以提供第一数据;使用私用标识符对第一数据进行加密以提供第二数据;及使用私钥对第二数据进行加密以提供证书。
[0195]
在一个实施例中,密钥为公钥,所述方法进一步包括产生随机数作为到非对称密钥生成器的输入,其中使用非对称密钥生成器产生公钥及相关联私钥。
[0196]
在一个实施例中,使用物理不可克隆函数(puf)产生随机数。
[0197]
在一个实施例中,系统包括:至少一处理器;及含有指令的存储器,所述指令经配置以指导所述至少一个处理器进行以下操作:将消息发送到计算装置;从计算装置接收标识符、证书及密钥,其中所述标识符与计算装置的身份相关联,且所述证书由计算装置使用消息而产生;及使用标识符、证书及密钥验证计算装置的身份。
[0198]
在一个实施例中,验证计算装置的身份包括:将消息与证书串接以提供第一数据;使用密钥对第一数据进行解密以提供第二数据;使用标识符对第二数据进行解密以提供结果;及将结果与密钥进行比较。
[0199]
在一个实施例中,标识符为第一公共标识符,计算装置存储用于产生第一公共标识符的第一装置秘密,且所述指令进一步经配置以指导所述至少一个处理器进行以下操作:将替换命令发送到计算装置,所述替换命令致使计算装置用第二装置秘密替换第一装置秘密,及从计算装置接收使用第二装置秘密产生的第二公共标识符。
[0200]
在一个实施例中,计算装置经配置以使用第二装置秘密到作为提供衍生秘密的消息认证码的输入,且使用衍生秘密来产生第二公共标识符。
[0201]
在一个实施例中,替换命令包含具有基于第一装置秘密的值的字段。
[0202]
在一个实施例中,系统进一步包括经配置以产生新鲜度的新鲜度机制,其中发送到计算装置的消息包含新鲜度。
[0203]
在一个实施例中,计算装置的身份包含字母数字串。
[0204]
在一个实施例中,非暂时性计算机存储媒体存储指令,所述指令当在计算装置上执行时致使计算装置至少进行以下操作:从主机装置接收消息;产生标识符、证书及密钥,其中标识符对应于计算装置的身份,且证书使用所述消息而被产生;及将标识符、证书及密钥发送到主机装置以供用于验证计算装置的身份。
[0205]
在一个实施例中,标识符为与私用标识符相关联的公共标识符,密钥为与私钥相关联的公钥,且产生证书包括:将消息与公钥串接以提供第一数据;使用私用标识符对第一数据进行加密以提供第二数据;及使用私钥对第二数据进行加密以提供证书。
[0206]
在一个实施例中,验证计算装置的身份包括使用标识符来执行解密操作以提供结果,及将所述结果与密钥进行比较。
[0207]
使用物理不可克隆函数(puf)产生值
[0208]
下文所公开的至少一些实施例提供用于使用物理不可克隆函数(puf)产生值的改进架构。在一些实施例中,puf值自身可用作装置秘密,或用于产生装置秘密。在一个实例中,puf值用作与如上文所描述(例如,参见图5a及图5b)的dice

riot协议一起使用的唯一装置秘密(uds)。在一个实例中,由puf产生的值用作到消息认证码(mac)的输入。来自mac的
输出用作uds。
[0209]
在一些实施例中,puf值或从puf值产生的值可用作随机数(例如,特定于装置的随机数)。在一个实例中,当经由上文所描述的非对称密钥生成器(例如,参见图6)产生相关联公钥及私钥时,将随机数(例如,rnd)用作输入。
[0210]
一般来说,以下架构通过将从一或多个puf提供的输入馈送到消息认证码(mac)中而产生输出。来自mac的输出提供改进puf(例如,例如,上文的uds)。
[0211]
一般来说,半导体芯片制造商面临密钥注入的问题,这是例如从半导体芯片提供的每一芯片或裸片的唯一秘密密钥的编程。期望在安全环境中执行密钥注入以避免泄漏或揭露注入到芯片中的秘密密钥。还期望确保密钥在生产芯片之后无法被攻击或读回。在一些情况下,例如,通过第三方基础设施证明或执行密钥注入程序。
[0212]
芯片制造商期望减少包含加密能力的芯片的生产成本。芯片制造商还期望简化生产流程同时维持所制造芯片的恒定水平的安全性能。然而,密钥注入是更昂贵的生产步骤中的一个。
[0213]
芯片制造商还面临当用作伪随机数生成器时改进puf的均一性的问题。在一些情况下,由于puf所提供的种子值基于的现象,此问题可包含裸片之间的交叉相关。
[0214]
puf是基于不可预测的物理现象,例如,芯片上寄生效应、芯片上路径延迟等,这对于每一裸片是唯一的。这些现象例如用于提供伪随机数生成器的种子值。
[0215]
生产线中所选择的两个不同芯片必须具有不同puf值。每一芯片中产生的puf值在装置的寿命期间不得改变。如果两个芯片具有类似密钥(例如,其间存在低汉明距离),那么有可能使用一个芯片的密钥来猜测另一芯片的密钥(例如,原像黑客攻击)。
[0216]
使用下文所描述的改进puf架构可通过提供适合于在每一芯片或裸片上提供puf的功能的输出值而向以上问题中的一或多者提供解决方案。下文的改进puf架构使用puf,这使得每一芯片或裸片能够在芯片或裸片的每一上电处自动产生唯一安全密钥。安全密钥不需要存储在非易失性存储器中,非易失性存储器可被攻击或以其它方式被破解。
[0217]
改进的puf架构进一步使用mac来产生改进的puf输出(例如,唯一密钥)以供例如集成到半导体芯片中的加密函数或过程使用。mac的使用可例如增加在不同芯片上产生的密钥之间的汉明距离。
[0218]
在本文所公开的至少一些实施例中,提供使用来自mac的输出的改进puf架构作为产生种子或其它值的方式。因此,改进的puf架构提供例如执行密钥注入的方式,所述密钥注入降低制造成本且改进最终芯片上puf操作的可靠性和/或均一性。
[0219]
在一个实施例中,方法包含:通过至少一个puf提供至少一个值;及基于mac产生第一输出,其中mac使用由至少一个puf提供的至少一个值作为用于产生第一输出的输入。
[0220]
在一个实施例中,系统包含:至少一个puf装置;消息认证码mac模块,其经配置以基于由至少一个puf装置提供的至少一个值接收第一输入;至少一个处理器;及含有指令的存储器,所述指令经配置以指导所述至少一个处理器基于第一输入而从mac模块产生第一输出。在各种实施例中,可使用硬件和/或软件实施mac模块。
[0221]
在一个实施例中,系统进一步包含选择器模块,所述选择器模块用于选择puf装置中的一或多者以用于将值提供到mac模块。举例来说,从若干puf装置提供的值可链接且作为输入提供到mac模块。在各种实施例中,可使用硬件和/或软件实施选择器模块。
[0222]
图10展示根据一个实施例的用于从消息认证码(mac)123的输出产生唯一密钥125的系统,所述消息认证码123从物理不可克隆函数(puf)装置121接收输入。系统提供用于从消息认证码(mac)模块123的输出产生唯一密钥125(或其它值)的puf架构111。mac模块123接收从物理不可克隆函数(puf)装置121获得的输入值。
[0223]
图10中的puf装置121可为例如各种不同的已知类型的puf中的任一者。mac模块123提供例如单向函数,例如sha1、sha2、md5、crc、tiger等。
[0224]
架构111可例如改进在芯片之间产生的puf值或代码的汉明距离。mac函数是不可预测的(例如,仅具有提供到mac函数的单个位差的输入序列提供两个完全不同的输出结果)。因此,在仅具有对输出的了解时,无法辨识或确定到mac函数的输入。架构111还可例如改进puf作为伪随机数生成器的均一性。
[0225]
在一个实例中,puf架构111产生的值(例如,唯一密钥125或另一值)可为具有n位的数字,其中n取决于实施于包含puf架构111的芯片(例如,存储器装置103或另一装置)上的加密算法。在一个实例中,芯片实施使用hmac

ha256的加密函数,在此情况下,来自mac模块123的输出具有256位的大小n。来自mac模块123的输出的使用提供适用作密钥的输出值的消息长度(而不需要进一步压缩或填补)。
[0226]
puf架构111实施于例如所说明存储器装置103的装置中,或可实施于例如在由晶片制造生产线提供的多个半导体芯片中实施的集成电路等其它类型的计算装置中。
[0227]
在一个实施例中,mac模块123与加密模块127协作和/或集成到加密模块127中或作为加密模块127的部分,例如,其可提供用于存储器装置103的加密函数。举例来说,归因于由存储器装置103用于其它加密目的的mac,mac模块123的输出可适合于用作密钥。
[0228]
puf架构111、加密模块127和/或存储器装置103的其它功能的操作可由控制器107控制。控制器107可包含例如一或多个微处理器。
[0229]
在图10中,主机101可经由通信通道与存储器装置103通信。主机101可为具有一或多个中央处理单元(cpu)的计算机,计算机外围装置(例如,存储器装置103)可以经由互连件附接到所述计算机,所述互连件例如计算机总线(例如,外围组件互连(pci)、扩展pci(pci

x)、pci高速(pcie))、通信部分和/或计算机网络。
[0230]
在一个实施例中,唯一密钥125用作uds以为存储器装置103提供身份。控制器107在dice

riot架构中实施层0l0及层1l1。响应于经由主机接口105从主机101接收到主机消息,加密模块127执行处理以产生三重,如上文所描述。主机101使用三重来验证存储器装置103的身份。存储器装置103为计算装置141的实例。
[0231]
出于示范性说明的目的,可注意到通常存在两个技术问题。第一问题是向主机证实板的身份。问题可通过使用公共三重和非对称密码术来处置,如例如上文针对dice

riot所论述。此方法是安全且巧妙的,但在一些情况下,可能太昂贵/费时而无法由电路板自身直接使用。第二问题为向板证实板上的存储器的身份(例如,以避免未授权存储器替换)(这例如在每一上电之后执行)。可使用上文的公共三重和非对称密码术来解决第二问题。然而,仅基于mac函数的较轻安全性机制对于处置第二问题通常是足够的。
[0232]
存储器装置103可用于例如将主机101的数据存储在非易失性存储媒体109中。通常,存储器装置的实例包含硬盘驱动器(hdd)、固态驱动器(ssd)、快闪存储器、动态随机存取存储器、磁带、网络附接存储装置等。存储器装置103具有使用通信信道来实施与主机101
的通信的主机接口105。例如,在一个实施例中,主机101与存储器装置103之间的通信信道为外围组件互连高速(pci高速或pcie)总线;并且主机101与存储器装置103使用nvme协议(非易失性存储器主机控制器接口规范(nvmhcl),也称为nvm高速(nvme))彼此通信。
[0233]
在一些实施方案中,主机101与存储器装置103之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个人局域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前代或未来代的移动网络链接);并且主机101和存储器装置103可经配置以使用数据存储管理和使用与nvme协议中的命令类似的命令来彼此通信。
[0234]
控制器107可运行固件104来执行响应于来自主机101的通信的操作和/或其它操作。一般来说,固件是一种类型的计算机程序,其提供对工程化计算装置的控制、监测和数据操纵。在图10中,固件104控制控制器107在操作存储器装置103时的操作,例如puf架构111的操作,如下文进一步论述。
[0235]
存储器装置103具有非易失性存储媒体109,例如涂布于硬盘上的磁性材料,和/或集成电路中的存储器单元。存储媒体109是非易失性的,因为不需要电力来维持存储在非易失性存储媒体109中的数据/信息,可在非易失性存储媒体109断电然后再次通电之后检索到所述数据/信息。可使用各种存储器/存储技术(例如基于nand门的快闪存储器、相变存储器(pcm)、磁存储器(mram)、电阻式随机存取存储器和3d xpoint)来实施存储器单元,使得存储媒体109是非易失性的,且可在没有电力的情况下将其中存储的数据保留数天、数月和/或数年。
[0236]
存储器装置103包含用于存储运行时间数据的易失性动态随机存取存储器(dram)106及由控制器107使用的指令,以改进控制器107的计算性能和/或提供用于在主机101与非易失性存储媒体109之间传送的数据的缓冲器。dram 106是易失性的,因为它需要电力来维持其中存储的数据/信息,当电力中断时,所述数据/信息立即或快速丢失。
[0237]
易失性dram 106通常具有比非易失性存储媒体109少的时延,但会在失去电力时快速丢失其数据。因此,有利的是,使用易失性dram 106来临时存储在其当前计算任务中用于控制器107的指令和数据以改进性能。在一些情况下,易失性dram 106被在一些应用中使用比dram少的电力的易失性静态随机存取存储器(sram)替换。当非易失性存储媒体109具有与易失性dram 106类似的数据存取性能(例如,在时延、读取/写入速度方面)时,可以除去易失性dram 106;并且控制器107可以通过针对指令和数据对非易失性存储媒体109进行操作而不是对易失性dram 106进行操作来执行计算。
[0238]
举例来说,交叉点存储和存储器装置(例如,3d xpoint存储器)具有与易失性dram106相当的数据存取性能。交叉点存储器装置使用无晶体管存储器元件,所述无晶体管存储器元件中的每一者具有在一起堆叠成列的存储器单元和选择器。存储器元件列经由两个垂直线材层连接,其中一个层处于存储器元件列上方,且另一层处于存储器元件列下方。可个别地在两个层中的每一层上的一个线材的交叉点处选择每一存储器元件。交叉点存储器装置是快速且非易失性的,且可用作通用存储器池以用于处理和存储。
[0239]
在一些情况下,控制器107具有处理器内高速缓存存储器,其数据存取性能优于易失性dram 106和/或非易失性存储媒体109。因此,在控制器107的计算操作期间,在当前计算任务中使用的指令及数据的部分高速缓存于控制器107的处理器内高速缓存存储器中。在一些情况下,控制器107具有多个处理器,各自具有其自身的处理器内高速缓存存储器。
[0240]
任选地,控制器107使用存储器装置103中组织的数据和/或指令来执行数据密集的存储器内处理。例如,响应于来自主机101的请求,控制器107对存储在存储器装置103中的数据集执行实时分析,并且将减小的数据集传达到主机101作为响应。例如,在一些应用中,存储器装置103连接到实时传感器以存储传感器输入;并且控制器107的处理器经配置以基于传感器输入执行机器学习和/或模式辨识,以支持至少部分地经由存储器装置103和/或主机101实施的人工智能(ai)系统。
[0241]
在一些实施方案中,控制器107的处理器在计算机芯片制造中与存储器(例如,106或109)集成,以实现存储器中处理,且因此克服了冯
·
诺依曼(von neumann)瓶颈,其因根据冯
·
诺依曼架构单独配置的处理器和存储器之间的数据移动的时延所致的吞吐量限制而限制了计算性能。处理和存储器的集成增加了处理速度和存储器传送速率,且减小了时延和功耗。
[0242]
存储器装置103可用于各种计算系统,例如云计算系统、边缘计算系统、雾计算系统和/或独立计算机。在云计算系统中,远程计算机服务器连接于网络中以存储、管理和处理数据。边缘计算系统通过在接近数据源的计算机网络边缘处执行数据处理来优化云计算,且因此减少与集中式服务器和/或数据存储的数据通信。雾计算系统使用一或多个终端用户装置或近用户边缘装置来存储数据,且因此减少或消除了在集中式数据仓库中存储数据的需求。
[0243]
本文所公开的至少一些实施例可使用由控制器107(例如,固件104)执行的计算机指令实施。在一些情况下,硬件电路可用于实施固件104的至少一些功能。固件104可最初存储在非易失性存储媒体109或另一非易失性装置中,且加载到易失性dram 106和/或处理器内高速缓存存储器中以由控制器107执行。
[0244]
举例来说,固件104可经配置以在操作puf架构时使用下文所论述的技术。然而,下文所论述的技术不限于在图10的计算机系统和/或上文所论述的实例中使用。
[0245]
在一些实施方案中,mac模块123的输出可用于提供例如根密钥或种子值。在其它实施方案中,输出可用于产生一或多个会话密钥。
[0246]
在一个实施例中,来自mac模块123的输出可发射到另一计算装置。举例来说,唯一密钥125可经由主机接口105发射到主机101。
[0247]
图11展示根据一个实施例的用于从mac 123的输出产生唯一密钥125的系统,所述mac 123从由选择器模块204选择的一或多个puf装置接收输入。根据一个实施例,系统使用与图10的架构111类似但包含多个puf装置202及选择器模块204的puf架构从mac模块123的输出产生唯一密钥125。mac模块123从由选择器模块204选择的一或多个puf装置202接收输入。在一个实例中,puf装置202包含puf装置121。
[0248]
puf装置202可例如相同或不同(例如,基于不同随机物理现象)。在一个实施例中,选择器模块204充当智能puf选择块或电路以选择puf装置202中的一或多者,从所述puf装置202获得值以将其作为输入提供到mac模块123。
[0249]
在一个实施例中,选择器模块204至少部分地基于来自测试puf装置202的结果而选择puf装置202。举例来说,选择器模块204可测试每一puf装置202的可重复性。如果任何puf装置202未通过测试,那么选择器模块204防止失败装置将输入值提供到mac模块123。在一个实例中,可临时地或无限期地排除失败装置。
[0250]
在一些实施方案中,选择器模块204准许在生产期间和/或在所属领域中使用期间测试每一芯片的puf功能性(例如,通过检查由每一puf装置202提供的值的可重复性)。如果由给定puf装置提供的两个或更多个值不同,那么puf装置被确定为失败的且被排除用作到mac模块123的输入。
[0251]
在一个实施例中,选择器模块204用于同时将多个puf装置202用作来源以用于计算来自mac模块123的改进puf输出。举例来说,选择器模块204可将来自第一puf装置的值与来自第二puf装置的值链接以作为输入提供到mac模块123。在一些实施方案中,此架构准许获得归因于其对若干不同物理现象的相依性的鲁棒puf输出。
[0252]
图12展示根据一个实施例的用于从mac的输出产生唯一密钥的系统,所述mac接收来自一或多个puf装置的输入及来自单调计数器302的输入(和/或来自如nonce、时间戳等的另一新鲜度机制的输入)。根据一个实施例,系统从mac模块123的输出产生唯一密钥125。图12中所说明的puf架构类似于图11中所说明的puf架构,不同之处在于包含单调计数器302以将值提供到选择器模块204。在不同实施例中,可使用硬件和/或软件实施单调计数器302。
[0253]
mac模块123接收来自一或多个puf装置202的输入及来自单调计数器302的输入。在一个实例中,从puf装置202和单调计数器302获得的值经链接且接着作为输入提供到mac模块123。在一些实施方案中,单调计数器302为仅在请求时递增其值的非易失性计数器。在一些实施例中,单调计数器302在芯片的每一上电循环之后递增。
[0254]
在一些实施方案中,图12的puf架构可用于提供在应用程序中在半导体芯片与其它组件之间安全地共享密钥的方式,例如公钥机制。
[0255]
在一些实施方案中,单调计数器302在puf的每一计算之前递增,这确保mac模块123的输入在每一循环处不同,且因此所提供的输出(和/或输出的模式)不同。在一些实例中,此方法可用于产生会话密钥,其中每一会话密钥不同。
[0256]
在一些实施例中,选择器模块204可选择性地包含或拒绝单调计数器302(或如nonce、时间戳的其它新鲜度机制)将计数器值作为输入提供到mac模块123。
[0257]
在一些实施例中,单调计数器302还由加密模块127使用。在一些实施例中,包含单调计数器的puf架构可用作会话密钥生成器以保证每一循环处的不同密钥。在一些实施方案中,以此方式保护所产生的会话密钥:会话密钥=mac[一或多个puf|mtc或其它新鲜度]
[0258]
在其它实施例中,如下使用机制:
[0259]
会话密钥=mac
key_based
[root_key,mtc或其它新鲜度机制]
[0260]
其中:root_key=从上文的mac模块123提供的输出值,或存在于芯片上的任何其它种类的密钥。
[0261]
上文的mac
key_based
函数为例如基于秘密密钥的mac算法。举例来说,密码术中可存在两种类型的mac算法:
[0262]
1.基于秘密密钥的算法,类似于例如hmac家族(hmac

sha256是基于密钥的)。
[0263]
2.不基于秘密密钥的算法,例如类似于sha256(独立的sha不是基于密钥的)。
[0264]
应注意,基于密钥的mac可通过将密钥设置为已知值(例如0x000

0xffff等
……
)而变换成不基于密钥的mac。
[0265]
图13展示根据一个实施例的从使用由一或多个puf提供的一或多个输入值的mac
产生输出的方法。举例来说,图13的方法可在图10的存储器装置103中实施。
[0266]
图13的方法包含在框411处,通过至少一个puf提供一或多个值(例如,提供来自puf装置202中的一或多者的值)。
[0267]
在框413处,可测试puf中的一或多者的可重复性,例如如上文所描述。此测试为任选的。
[0268]
在框415处,如果在框413处已执行测试,且已确定puf装置未能通过测试,那么拒绝失败puf装置将输入提供到mac。此拒绝可例如通过选择器模块204执行,如上文所论述。
[0269]
在框417处,从单调计数器(例如,单调计数器302)提供值。单调计数器在puf架构中的使用为任选的。
[0270]
在框419处,从mac产生输出,所述mac使用由puf提供的一或多个值(和任选地来自单调计数器的至少一个值)作为到mac的输入。
[0271]
现在下文针对在计算装置中实施的方法描述各种其它实施例,所述方法包含:通过至少一个物理不可克隆函数(puf)提供至少一个值;及基于消息认证码(mac)产生第一输出,其中mac使用由至少一个puf提供的至少一个值作为用于产生第一输出的输入。
[0272]
在一个实施例中,计算装置为第一计算装置,且所述方法进一步包括将第一输出发射到第二计算装置,其中第一输出为第一计算装置的唯一标识符。
[0273]
在一个实施例中,提供至少一个值包括从第一puf选择第一值及从第二puf选择第二值。
[0274]
在一个实施例中,所述方法进一步包括:从单调计数器提供值;其中产生第一输出进一步包括使用来自单调计数器的值作为到mac的额外以用于产生第一输出。
[0275]
在一个实施例中,所述方法进一步包括:基于由mac提供的相应输出产生多个会话密钥,其中单调计数器提供用作到mac的输入的值;及在产生会话密钥中的每一者之后递增单调计数器。
[0276]
在一个实施例中,所述方法进一步包括:测试至少一个puf中的第一puf的可重复性;及基于确定第一puf未能通过测试,在产生第一输出时拒绝第一puf将任何输入提供到mac。
[0277]
在一个实施例中,测试包括将由第一puf提供的两个或更多个值进行比较。
[0278]
在一个实施例中,计算装置为存储器装置,且存储器装置包括经配置以存储使用mac产生的输出值的非易失性存储媒体。
[0279]
在一个实施例中,所述方法进一步包括通过至少一个处理器执行至少一个加密函数,其中执行至少一个加密函数包括使用使用mac产生的输出值。
[0280]
在一个实施例中,非暂时性计算机存储媒体存储指令,所述指令当在存储器装置(例如,存储器装置103)上执行时致使存储器装置执行方法,所述方法包括:通过至少一个物理不可克隆函数(puf)提供至少一个值;及基于消息认证码(mac)产生第一输出,其中mac使用由至少一个puf提供的至少一个值作为用于产生第一输出的输入。
[0281]
在下文所描述的各种其它实施例中,可对系统执行图4的方法,所述系统包含:至少一个物理不可克隆函数(puf)装置;消息认证码(mac)模块,其经配置以基于由所述至少一个puf装置提供的至少一个值而接收第一输入;至少一个处理器;及存储器,其含有经配置以指导所述至少一个处理器基于所述第一输入而产生来自所述mac模块的第一输出的指
令。
[0282]
在一个实施例中,mac模块包含电路。在一个实施例中,来自mac模块的第一输出为识别裸片的密钥。在一个实施例中,来自mac模块的第一输出为根密钥,且所述指令进一步经配置以指导所述至少一个处理器使用来自mac模块的输出产生会话密钥。
[0283]
在一个实施例中,系统为半导体芯片(例如,从半导体晶片获得的若干芯片中的一个芯片)的部分,来自mac模块的第一输出为识别芯片的唯一值,且所述指令进一步经配置以指导所述至少一个处理器将所述唯一值发射到计算装置。
[0284]
在一个实施例中,至少一个puf装置包括多个puf装置(例如,puf装置202),且所述系统进一步包括经配置以选择提供至少一个值的至少一个puf装置的选择器模块。
[0285]
在一个实施例中,选择器模块进一步经配置以通过链接来自第一puf装置的第一值与来自第二puf装置的第二值而产生用于mac模块的第一输入。
[0286]
在一个实施例中,所述系统进一步包括经配置以提供计数器值的单调计数器,且所述指令进一步经配置以指导所述至少一个处理器通过将计数器值与由至少一个puf装置提供的至少一个值链接而产生第一输入。
[0287]
在一个实施例中,系统进一步包括经配置以选择提供至少一个值的至少一个puf装置的选择器模块,其中通过所述选择器模块执行将计数器值与由至少一个puf装置提供的至少一个值链接。
[0288]
在一个实施例中,单调计数器进一步经配置以在产生第一输入之后递增计数器值以提供经递增值;且所述指令进一步经配置以指导所述至少一个处理器基于经递增值及由至少一个puf装置提供的至少一个新值而产生来自mac模块的第二输出。
[0289]
图14展示根据一个实施例的用于从mac的输出产生根密钥的系统,所述mac接收来自一或多个puf装置的输入及来自单调计数器的输入(和/或来自如nonce、时间戳等另一新鲜度机制的输入),且添加额外mac以产生会话密钥。
[0290]
在一个实施例中,根据一个实施例,系统从mac的输出产生根密钥,所述mac接收来自一或多个puf装置202的输入及来自单调计数器302的输入(和/或来自如nonce、时间戳等另一新鲜度机制的输入),且添加额外mac模块504以使用根密钥输入产生会话密钥。在此实施例中,mac模块123提供根密钥502作为来自mac模块123的输出。根密钥502为到mac模块504的输入,其可使用mac函数,例如会话密钥=mac
key_based
[root_key,mtc或其它新鲜度机制],其在上文描述。此基于密钥的函数中的根密钥输入可为根密钥502,如所说明。
[0291]
此外,在一个实施例中,单调计数器302可将输入提供到mac模块504。在其它实施例中,可将不同单调计数器或来自芯片的其它值作为输入提供到mac模块504而不是使用单调计数器302。在一些情况下,单调计数器302将计数器值提供到mac模块504,但不提供到选择器模块204。在其它情况下,计数器值可提供到两个mac模块,或从两个模块排除。
[0292]
密钥产生及安全存储
[0293]
如上文所提及,puf可用于安全密钥产生。下文论述的各种实施例涉及使用至少一个puf产生初始密钥,应用处理以增加初始密钥的混淆,且将最终的混淆密钥存储在非易失性存储器中。最终的混淆密钥和/或用于产生最终混淆密钥的中间密钥可与另一计算装置共享且用于与另一计算装置的安全通信(例如,基于共享密钥使用对称密码的消息传递)。在一些实施例中,针对待在汽车应用(例如,自主车辆中的控制器)中使用的计算装置进行
安全密钥产生。
[0294]
在替代实施例中,以不需要使用以上至少一个puf的其它方式产生初始密钥。在一个实施例中,可通过使用所注入密钥产生初始密钥。举例来说,归因于在工厂或其它安全环境中注入,初始密钥存在于芯片中。在此情况下,通过将混淆处理应用于所注入密钥来执行应用处理以增加初始密钥的混淆。
[0295]
汽车环境呈现在密钥产生阶段期间引入“噪声”的技术问题。下文的各种实施例通过使用一种方法来提供此问题的技术解决方案,所述方法通过将混淆密钥存储在非易失性存储器区域内部而减弱或避免归因于此感应噪声的密钥变化。
[0296]
汽车环境可以各种方式影响密钥产生。举例来说,发动机通电可致使到计算装置的应用电力下降,从而导致以错误方式产生密钥。温度极值也可影响产生密钥的电路。例如来自电力线的磁场等其它源可造成符号间干扰或串扰,从而使得主机辨识不出装置。
[0297]
相比之下,如果密钥在安全环境中产生且存储于存储器中,那么其将不受噪声影响。取决于用于在计算装置产品的终端用户/客户之间传播密钥的策略,安全环境可例如直接安装在轿车中、测试环境中或(例如,制造产生密钥的计算装置的)工厂中。
[0298]
在一个实例中,如车辆中所使用的adas或其它计算系统经受电源变化。这可例如在打开车辆、制动、为发动机提供动力等期间发生。
[0299]
如下文所论述产生和存储密钥的各种实施例提供基本上独立于外部因素(例如,电源变化、温度和噪声的其它外部源)的优点。举例来说,在一些实施例中的另一优点在于对于每一循环,密钥向量的产生是相同的。
[0300]
当存储密钥时,在一些实施例中提供的另一优点在于密钥基本上不受(例如,黑客可能在适当位置计划的)硬件攻击的影响。举例来说,一个此类攻击是对装置的通电电流的监测,以便将电流变化与相关联于密钥的位相关联。其它攻击可使用例如电压测量(例如,vdd电源电压)。一些攻击可使用例如温度变化来干扰装置的操作。
[0301]
在一些实施例中,可使用如上文针对图10到14所描述的方法和/或架构产生初始密钥。举例来说,puf用于针对存储密钥的计算装置的每一通电循环产生密钥。在替代实施例中,其它方法可用于产生初始密钥。
[0302]
在一个示范性方法中,如上文所论述,密钥注入使用至少一个puf和mac算法(例如,sha256)来产生与其它装置(例如,来自位于晶片上的邻近裸片)显著不同的装置的密钥。mac密码术算法提供增加由puf产生的位的熵的益处。
[0303]
在一个实施例中,在对密钥执行预处理之后将所产生的密钥(例如,如从puf且接着mac算法提供的初始密钥)存储在装置的非易失性区域中以便减弱或避免黑客攻击,且还改进所存储的密钥的可靠性。在一个实施例中,在存储密钥之后,可停用产生密钥的电路。预处理在本文中通常被称作混淆处理。在一个例子中,电路和/或其它逻辑用于在装置上实施混淆处理。在一个实例中,所存储的密钥可由装置读取,因为密钥与外部噪声源无关。内部机制用于读取装置的任何数据。
[0304]
在各种实施例中,如本文所描述存储密钥会增加对噪声的容限。并且,这使得黑客难以例如使用电力监测或其它黑客方法读取所存储的密钥。
[0305]
本文中的至少一些实施例使用puf和加密算法(例如,hmac

ha256)来使密钥产生不依赖于可另外致使密钥从装置的一个通电到下一通电不同的外部因素(例如,温度或电
压)。如果此发生,那么主机能够与装置交换消息可能是一个问题。各种实施例通过将所存储的密钥放置在存储器中以使得其不受外部因素影响而使密钥产生更鲁棒。
[0306]
在一个实施例中,密钥在装置上产生一次且存储在装置的非易失性存储器中。在一个实例中,可在将复位应用于sram之前使用sram的内容产生密钥。使用从puf输出的伪随机值产生作为puf的函数的密钥。在电器或其它装置的复位之前读取sram的内容。如可能需要,还可在其它时间经由命令序列重新产生密钥。在一个实例中,如上文所描述,所产生的密钥在dice

riot协议中用作uds。在一个实例中,命令序列使用替换命令来用新uds替换先前产生的uds,如上文所描述。
[0307]
在一个实施例中,密钥产生与由装置实施的密码术无关。所产生的密钥与主机共享。此实施例以避免攻击者猜测密钥且在内部使用密钥的方式存储密钥和/或读取装置中的密钥,例如通过分析装置在密钥使用期间吸收的电流的形状。
[0308]
另外,举例来说,在非对称密码术中,所产生的密钥变成为系统的秘密密钥的可变口令。所述密钥不与其它者共享。对于公钥密码术,密钥用于产生对应公钥。
[0309]
在各种实施例中,使用所注入密钥或使用一或多个puf产生初始密钥(例如,以提供初始密钥puf0)。初始密钥随后经历混淆处理的一或多个步骤以提供中间密钥(例如,puf1、puf2
……
puf5),如下文所描述。来自此处理的输出(例如puf5)是存储在装置的非易失性存储器中的混淆密钥。当使用所注入密钥时,类似如下文针对puf0的非限制性实例所描述,将混淆处理应用于所注入密钥。
[0310]
在一个实施例中,如上文所提及,对于初始注入密钥的情况,如下使用机制:
[0311]
会话密钥=mac
key_based
[root_key,mtc或其它新鲜度机制]
[0312]
其中:root_key=存在于芯片上的任何其它种类的密钥(例如,密钥可为在工厂或其它安全环境中注入芯片中的初始密钥)
[0313]
在一个实施例中,在装置的第一次上电时,特殊序列唤醒装置的至少一个电路(例如,读取电路)并且验证电路是否恰当地执行。装置接着产生初始密钥puf0,如上文所提及。此密钥可经存储或进一步处理以使得其对于安全存储更鲁棒,如下文所描述。
[0314]
通过将puf0与预定位序列(例如,其它人已知的序列)串接以产生puf1来产生中间密钥puf1。在一个实施例中,puf1用于验证装置正确地读取密钥且确保噪声(例如电源中的波动)不影响所产生的密钥的能力。
[0315]
产生下一中间密钥puf2。puf1与反转位模式交错(例如,通过反转puf1的位形成,且在本文中有时被称作puf1条)以产生puf2。
[0316]
在一个实施例中,puf2具有相同位数0及1。这使得装置电流的形状对于任何密钥(例如,存储在装置上的任何密钥)基本上相同。这通过在装置读取密钥时查看装置电流的形状来降低攻击者猜测密钥值的可能性。
[0317]
产生下一中间密钥puf3。puf2的位与伪随机位交错以形成puf3。这进一步有助于混淆密钥。在一个实施例中,通过使用散列函数从puf1或puf2导出伪随机位。举例来说,将这些导出的位添加到puf2以形成puf3。
[0318]
产生下一中间密钥puf4。错误校正码(ecc)由装置的内部电路产生(例如,在编程期间)。将ecc的位添加到puf3以产生puf4。在一个实施例中,ecc位帮助提防可由例如装置耐久性极限、x射线及粒子引起的非易失性存储器(例如,nvram)老化的影响。非易失性存储
器老化还可例如通过可引起位翻转的位于nv单元中的电子的数目的增加而引起。
[0319]
产生下一中间密钥puf5。puf5是puf4的若干副本的串接。具有存在于puf5中的多个puf4副本的冗余通过增加能够在稍后时间正确地读取密钥的可能性而进一步增加鲁棒性。在一个实施例中,puf5的若干副本存储在各种非易失性存储器存储区中,以进一步增加鲁棒性。举例来说,即使puf5在所述区中的一者中损坏,也可从所述区中的其它区读取puf5,且因此可提取正确密钥。
[0320]
在一个实施例中,puf1或puf3是与主机共享以用于对称加密的密钥,或用于针对非对称密码术产生公钥。在一个实施例中,puf4和puf5不与终端用户或主机共享。
[0321]
以上方法为模块化的,因为不需要puf2、puf3、puf4和/或puf5来产生混淆密钥。替代地,在各种实施例中,前述混淆处理步骤中的一或多者可应用于初始密钥,且进一步可改变排序。举例来说,对于已知不具有vdd电压供应降的系统,可减少混淆步骤的数目。
[0322]
在一个实施例中,当存储混淆密钥时,位模式将在非易失性存储媒体周围物理地扩散(例如,在不同的行和列中)。举例来说,装置能够同时读取位且防止发生多位错误。
[0323]
图15展示根据一个实施例的用于将混淆密钥635存储于非易失性存储器(例如,非易失性存储媒体109)中的计算装置603。计算装置603是图1的计算装置141的实例。在一个实例中,混淆密钥用作uds。(注释)举例来说,混淆将熵添加到密钥的位,以避免黑客了解密钥的值的可能尝试。装置始终能够通过去除用作混淆的所添加位而提取密钥。在一个实例中,共同黑客攻击由以下组成:通过用统计工具处理在某一特定时间帧内由装置吸收的电流分布而猜测在装置内部产生/详细描述的秘密密钥。混淆以值得考虑的方式减轻此问题。
[0324]
基于由至少一个物理不可克隆函数装置121提供的值产生初始密钥625。基于初始密钥625产生混淆密钥635。在产生之后,混淆密钥635存储在非易失性存储媒体109中。
[0325]
在一个实施例中,消息认证码(mac)123使用来自puf装置121的值作为输入且提供初始密钥625作为输出。在一个实施例中,混淆处理模块630用于对初始密钥625执行处理,以便提供例如如上文所论述的混淆密钥635(例如,puf5)。
[0326]
在一个实施例中,混淆密钥635安全地分布到另一计算装置,如由蒙德罗等人在2018年4月27日申请的名称为“使用单调计数器的秘密密钥的安全分布(secure distribution of secret key using a monotonic counter)”的相关美国非临时申请案序列号15/965,731中所描述,所述申请案的全部内容以引用的方式并入,如同在本文中完全阐述。在其它实施例中,初始密钥625和/或来自本文所描述的混淆处理的中间密钥中的任何一或多者可以相同或类似的方式安全地分布。任选地,终端用户/客户使用前述方法读取初始密钥(例如puf0)、中间密钥和/或最终混淆密钥(例如puf5)的值。举例来说,终端用户可通过装置验证密钥的内部产生的恰当执行,和/或监视密钥产生的统计质量。
[0327]
图16展示根据一个实施例的在混淆过程期间由混淆处理模块630产生的中间密钥(puf2)的实例。如上文所提及,puf1的位经反转以提供反转位702。位702与如所说明的puf1的位交错。举例来说,所说明密钥中的每第二位为交错反转位702。
[0328]
图17展示根据一个实施例的在图16的混淆过程期间产生的另一中间密钥(puf3)的实例(puf3在此实例中是基于puf2)。如上文所提及,puf2的位进一步与伪随机位802交错。如所说明,位802与puf2交错。举例来说,所说明密钥中的每第三位为交错的伪随机位802。
[0329]
图18展示根据一个实施例的用于在非易失性存储器(例如,非易失性存储媒体109)中产生并存储混淆密钥(例如,混淆密钥635)的方法。在一个实例中,图2的存储器系统105将混淆密钥存储于非易失性存储器121。
[0330]
在框911中,基于由至少一个物理不可克隆函数(puf)提供的值产生初始密钥。
[0331]
在其它实施例中,在框911中,通过密钥注入产生初始密钥。举例来说,初始密钥可简单地为在制造期间注入芯片中的值。
[0332]
在框913中,基于初始密钥产生混淆密钥。举例来说,所产生的混淆密钥为puf3或puf5。
[0333]
在框915中,将混淆密钥存储于计算装置的非易失性存储器中。举例来说,混淆密钥存储于nand快闪存储器或eeprom中。
[0334]
在一个实施例中,方法包含:使用密钥注入产生初始密钥;基于初始密钥产生混淆密钥;及将混淆密钥存储于非易失性存储器中。举例来说,初始密钥可为在制造时在密钥注入过程期间注入的密钥。
[0335]
在一个实施例中,方法包括:产生由密钥注入提供的初始密钥或基于由至少一个物理不可克隆函数(puf)提供的值产生初始密钥;基于初始密钥产生混淆密钥;及将混淆密钥存储于计算装置的非易失性存储器中。
[0336]
在一个实施例中,产生初始密钥包括使用来自puf的值(或,例如芯片上的另一值)作为到消息认证码(mac)的输入以产生初始密钥。
[0337]
在一个实施例中,混淆密钥存储在用户可寻址存储器空间外部的非易失性存储器中。
[0338]
在一个实施例中,产生混淆密钥包括将初始密钥与预定位模式串接。
[0339]
在一个实施例中,将初始密钥与预定位模式串接提供第一密钥(例如,puf1);且产生混淆密钥进一步包括使第一密钥与反转的位模式交错,其中反转位模式通过反转第一密钥的位而提供。
[0340]
在一个实施例中,将第一密钥与反转位模式交错提供第二密钥(例如,puf2);产生混淆密钥进一步包括使第二密钥与伪随机位交错。
[0341]
在一个实施例中,所述方法进一步包括使用散列函数从第一密钥或第二密钥导出伪随机位。
[0342]
在一个实施例中,使第二密钥与伪随机位交错提供第三密钥(例如,puf3);且产生混淆密钥进一步包括将第三密钥与错误校正码位串接。
[0343]
在一个实施例中,计算装置为第一计算装置,所述方法进一步包括与第二计算装置共享初始密钥、第一密钥或第三密钥中的至少一者,且从第二计算装置接收使用初始密钥、第一密钥或第三密钥中的共享的至少一者加密的消息。
[0344]
在一个实施例中,将第三密钥与错误校正码位串接提供第四密钥(例如,puf4);且产生混淆密钥进一步包括将第四密钥与第四密钥的一或多个副本串接。
[0345]
在一个实施例中,将第四密钥与第四密钥的一或多个副本串接提供第五密钥(例如,puf5);且存储混淆密钥包括将第五密钥的第一副本存储在非易失性存储器的行或块中的至少一者上,所述行或块与存储第五密钥的第二副本的行或块不同。
[0346]
在一个实施例中,系统包括:至少一个物理不可克隆函数(puf)装置(例如,puf装
置121),其经配置以提供第一值;非易失性存储器(例如,非易失性存储媒体109),其经配置以存储混淆密钥(例如,密钥635);至少一个处理器;及存储器,其含有经配置以指导所述至少一个处理器进行以下操作的指令:基于由至少一个puf装置提供的第一值产生初始密钥;基于初始密钥产生混淆密钥;及将混淆密钥存储于非易失性存储器中。
[0347]
在一个实施例中,系统进一步包括消息认证码(mac)模块(例如,mac 123),所述消息认证码模块经配置以接收由至少一个puf装置提供的值,其中产生初始密钥包括使用第一值作为到mac模块的输入以产生初始密钥。
[0348]
在一个实施例中,产生混淆密钥包括以下中的至少一个:将密钥与预定位模式串接;使第一密钥与第一密钥的反转位模式交错;使密钥与伪随机位交错;将密钥与错误校正码位串接;或将第二密钥与第二密钥的一或多个副本串接。
[0349]
在一个实施例中,所存储的混淆密钥具有相等数目的零位及一位。
[0350]
在一个实施例中,产生混淆密钥包括将初始密钥与第一位模式串接。
[0351]
在一个实施例中,将初始密钥与第一位模式串接提供第一密钥;且产生混淆密钥进一步包括使第一密钥与第二位模式交错。
[0352]
在一个实施例中,产生混淆密钥进一步包括使密钥与伪随机位交错。
[0353]
在一个实施例中,产生混淆密钥进一步包括将密钥与错误校正码位串接。
[0354]
在一个实施例中,非暂时性计算机存储媒体存储指令,所述指令当在计算装置上执行时致使计算装置执行方法,所述方法包括:使用至少一个物理不可克隆函数(puf)产生初始密钥;基于初始密钥产生混淆密钥;及将混淆密钥存储于非易失性存储器中。
[0355]
图19展示根据一个实施例的用于基于密钥注入1010产生初始密钥625、混淆初始密钥且将混淆密钥存储在非易失性存储器中的计算装置1003。
[0356]
在一个实施例中,通过使用注入密钥1010产生初始密钥625。举例来说,初始密钥625通过在制造或其它组装或测试期间注入工厂或其它安全环境中而存在于芯片中。在一个实例中,初始密钥625用作计算装置1003的初始uds。混淆还可应用于uds。uds为dice

riot开始使用以产生密钥及证书的安全产生的秘密。通过将混淆处理(经由模块630)应用于所注入密钥(例如来自密钥注入1010的值)来执行应用处理以增大初始密钥的混淆。在其它实施例中,混淆处理可应用于可存储于或以其它方式存在于芯片或裸片上的任何其它值。
[0357]
密钥产生及安全存储的变化
[0358]
现在下文描述各种额外非限制性实施例。在一个实施例中,在系统板的第一上电之后(或在所述第一上电期间),激活特殊序列以接通含有加密引擎(例如,加密模块127)的装置。序列进一步唤醒内部puf且验证其功能性,接着puf产生初始值puf0,例如如上文所描述。puf0值由芯片上算法(例如,由混淆处理模块630)处理且在非易失性阵列的特殊区中(在用户可寻址空间外)写入。在替代实施例中,代替puf0值,由类似如下文所描述的芯片上算法处理所注入密钥,以提供用于存储的混淆密钥。
[0359]
在一个实施例中,执行混淆处理以防止vdd(电压)和/或温度故障黑客攻击。此处理包含将puf0与众所周知的模式(例如,其含有固定量的0/1位)串接。在装置(例如,芯片)的寿命期间,当puf值被内部读取时,这些位准许确定读取电路是否能够恰当地辨别0/1位。举例来说,puf1=puf0||010101
……
01
[0360]
接下来,以上处理的结果(例如,puf1)进一步以虚拟位体现(例如,以避免icc黑客分析)。具体来说,例如,puf1的位与puf1的反转版本(即,puf1条,其通过反转puf1的每一位而形成)交错。举例来说,puf2=puf1交错puf1条。
[0361]
在一个实施例中,交错的规则取决于存在于芯片/装置上的列解码器(例如,nv非易失性阵列)的种类。所述装置确保在puf值(来自非易失性阵列)的每一读取处,读取电路处理(在单次发射中)来自puf1和puf1条的相同数目的位。这确保在0和1的值下读取相同数目的位,这提供电源电流(idd)中的规则形状。
[0362]
接下来,puf2的位进一步与伪随机位交错。在一个实例中,交错取决于非易失性阵列列解码器结构。在一个实施例中,输出具有用特定数目个伪随机位填充的相同数目个puf2位(例如,以便混淆可存在于puf2模式中的最终残余相关)。
[0363]
在一个实施例中,可通过使用散列函数从puf1或puf2导出伪随机位。还可使用其它替代方法。
[0364]
在一个实施例中,任选地,为了减少或防止归因于非易失性老化的位损失,puf3的位与错误校正码(ecc)位串接。在一个实施例中,puf4的位任选地复制一次或多次(其还扩展ecc能力)。举例来说,可在nand存储器上实施前述内容。在一个实例中,puf5=puf4||puf4||
……
||puf4
[0365]
在一个实施例中,puf5的值可在非易失性存储器阵列的不同行和或块上写入两次或多于两次。
[0366]
作为上述混淆处理的结果,例如,一旦最终puf值写入到非易失性阵列块中,就可在减弱的密钥可靠性或不关心密钥可靠性(例如,归因于噪声或电荷损失)的情况下使用所述值,或通过idd分析推断其值或通过vdd故障攻击迫使其值的任何尝试。
[0367]
在一个实施例中,一旦完成混淆处理,就可停用puf电路。在一个实施例中,在停用之后,puf装置可提供装置上内部使用的值以用于其它目的(例如,使用非易失性阵列内部的标准读取操作)。
[0368]
在一个实施例中,当从puf3提取密钥时,密钥位不同于随机位。举例来说,存储密钥的装置的内部逻辑了解从puf5返回到先前或原始puf(例如,puf3)所需的位置和方法。
[0369]
在一个实施例中,提取密钥的装置已知密钥位的位位置。举例来说,取决于设计选择,装置的内部逻辑可接收中间puf或最终密钥puf5中的一个。随后,按相反次序应用一或多个操作将获得原始puf。举例来说,从puf1到puf5的处理步骤经执行以按黑客将必须进行以下两者的方式存储混淆puf:读取内容(例如,密钥位),且还知道经应用以便返回的操作且确定原始密钥。
[0370]
使用puf产生计算装置的身份
[0371]
现在下文描述与使用物理不可克隆函数(puf)产生计算装置的身份相关的各种实施例。以下描述的一般性不受上文描述的各种实施例的限制。
[0372]
在先前方法中,计算装置的制造商有必要与购买计算装置的客户共享一或多个秘密密钥以便建立计算装置的身份。然而,由于需要用于与客户共享密钥的繁琐、复杂且昂贵的安全信道和基础设施,秘密密钥的共享造成技术问题。此外,需要人员服务来实施密钥共享。此外,前述安全需求可增加安全措施可由黑客或其它未授权的人破解的风险。
[0373]
下文论述的本公开的各种实施例提供对以上技术问题的技术解决方案。在不同实
施例中,计算装置使用一或多个puf产生身份。在一个实例中,身份为uds。
[0374]
在一个实施例中,以自动方式(例如,基于预定事件的经调度时间或发生,响应于此,计算装置将使用puf自我产生uds)分配计算装置的身份的产生。通过使用puf分配身份,可以减少身份分配的复杂度和费用。
[0375]
在计算装置产生身份之后,其可用于产生标识符、证书和密钥的三重。在一个实施例中,响应于从主机装置接收到消息而产生所述三重。主机装置可使用所产生的标识符、证书及密钥来验证计算装置的身份。在验证身份之后,可以使用密钥执行主机装置与计算装置的进一步安全通信。
[0376]
在一些实施例中,计算装置响应于从主机装置接收到命令而产生身份。举例来说,命令可为由计算装置认证的安全替换命令。在产生身份之后,计算装置将确认消息发送到主机装置以确认产生替换身份。在一个实例中,替换身份是存储在非易失性存储器中并且替换先前存储的uds(例如,由计算装置的原始制造商分配的uds)的新uds。
[0377]
在一个实施例中,身份为存储于计算装置的存储器中的装置秘密(例如,如dice

riot协议中所使用的uds,例如上文所论述)。通过计算装置的一或多个puf提供至少一个值。计算装置使用密钥衍生函数(kdf)产生装置秘密。由一或多个puf提供的值为到kdf的输入。kdf的输出提供装置秘密。将kdf的输出作为装置秘密存储在计算装置的存储器中。
[0378]
在一个实例中,kdf为散列。在一个实例中,kdf为消息认证码。
[0379]
在一个实施例中,计算装置存储用于与主机装置通信的秘密密钥,并且kdf是消息认证码(mac)。由一或多个puf提供的至少一个值是到mac的第一输入,且秘密密钥用作到mac的第二输入。
[0380]
在一些实例中,计算装置可为快闪存储器装置。举例来说,可使用串行nor。
[0381]
图20展示根据一个实施例的如用于使用物理不可克隆函数(puf)2005产生身份(例如,计算装置141的uds)的计算装置141。更确切地说,由puf 2005提供值。此值作为输入提供到密钥衍生函数(kdf)2007。来自kdf的输出被存储为装置秘密149。
[0382]
在一个实施例中,装置秘密149为如dice

riot协议所使用的uds。类似如上文所描述,uds可用作产生用于发送到主机装置151的三重的基础。此三重包含可由主机装置151用于与计算装置141进行安全通信的公钥。
[0383]
在一个实施例中,响应于经由主机接口2009从主机装置151接收到命令而执行装置秘密的产生。在一个实例中,命令是替换命令。在一个实例中,命令伴有使用秘密密钥由主机装置151签署的签名。在产生装置秘密之后,经由主机接口2009将确认消息发送到主机装置151。
[0384]
在一个实施例中,计算装置141存储秘密密钥2013。举例来说,秘密密钥2013可与主机装置151共享。在一个实例中,主机装置151使用秘密密钥2013来签署用替换命令发送的签名。
[0385]
在一个实施例中,kdf 2007为消息认证码。在产生装置秘密时,秘密密钥2013用作到kdf 2007的密钥输入。来自puf 2005的值用作到kdf 2007的数据输入。
[0386]
在使用单调计数器2003的计算装置141中实施新鲜度机制。单调计数器2003可提供用作与主机装置151的安全通信中的新鲜度的值。
[0387]
唯一标识符(uid)2001存储在计算装置141的存储器中。举例来说,在工厂处注入
uid 2001。
[0388]
在一个实施例中,计算装置141用众所周知的uds(例如,普通的uds=0x00000
……
000或类似者)传递到客户。客户在其工厂中使用主机装置151以请求计算装置141自我产生新的uds(例如,uds_puf)。此步骤可通过使用认证命令来完成。仅知道秘密密钥2013的客户或主机装置能够执行此操作(例如,秘密密钥2013可更通常用于管理由计算装置141支持的认证命令集)。
[0389]
一旦产生uds_puf,就使用所述uds_puf来替换原始(普通)uds。所述替换通过使用认证命令而发生。外部主机装置(客户)可读取uds_puf。
[0390]
所产生的uds_puf可用于实施dice

riot协议。举例来说,可使用uds_puf计算fds,类似如上文针对身份组件147及身份组件107所描述。在一个实例中,fds=hmac

sha256[uds,sha256(“l1的身份”)]。
[0391]
另外,可使用uds_puf产生包含标识符、证书和密钥的三重(例如,k
l1
),类似如上文针对图1所描述。主机装置将密钥(例如,k
l1
public)用于与计算装置141的受信任通信。
[0392]
在一个实施例中,以上身份产生机制可由计算装置(例如,包含处理器的应用程序板)在应用程序板的第一次使用时自动执行,或在现场一旦发生经调度或预定事件(例如,如由客户调度/确定且作为计算装置的配置(例如,更新等)而存储在存储器145中)即执行。
[0393]
在一个实施例中,如下执行自我身份产生:配置器主机装置(例如,具有软件的膝上型计算机)连接到耦合到自主车辆总线(例如,使用安全空中接口等)的计算装置。主机装置使用认证命令来请求计算装置自我产生uds(例如,uds
puf
)。认证是基于秘密密钥2013(例如,秘密密钥可由制造商注入且用安全基础设施提供到客户)。
[0394]
认证命令执行通过经认证响应(例如,如图20中所说明的“确认”)而确认。在uds
puf
产生结束时,通知主机装置关于通过使用安全协议(例如,通过使用由单调计数器2003提供的新鲜度经由安全有线和/或无线网络发送)产生的uds
puf

[0395]
在一个实施例中,主机接口2009是支持认证和重放受保护命令的命令接口。在一个实施例中,认证是基于秘密密钥(例如,秘密密钥2013)且使用mac算法(例如,hmac)。在一个实例中,从主机装置151接收包含基于命令操作码、命令参数和新鲜度的签名的身份产生命令。在一个实例中,签名=mac(操作码|参数|新鲜度,秘密密钥)。
[0396]
在一个实施例中,计算装置141提供包含签名的身份产生确认。在一个实例中,签名=mac(命令结果|新鲜度,秘密密钥)。
[0397]
在一个实施例中,秘密密钥2013在工厂中注入。在一个实例中,秘密密钥可为对称的(例如,基于hmac

sha256)。在另一实例中,秘密密钥可使用非对称方案(例如,ecdsa)。
[0398]
可使用各种选项产生装置秘密149(例如,uds
puf
)。举例来说,一旦通过使用恰当认证和重放受保护命令激活产生流程,就根据如下选择的命令选项产生uds
puf

[0399]
选项#1:读取来自puf模式的至少一个值(有时被称作“puf raw”)(有时还被表示为uds
raw
),且将其提供到kdf 2007(密钥衍生函数)(例如,sha256)。此过程的结果为最终密钥。因此:uds
puf
=kdf(uds
raw
)
[0400]
选项#2:读取puf raw模式(uds
raw
)且将uds
puf
计算为:uds
puf
=kdf(uds
raw
|uid),其中uid为分配给所有装置的公共唯一id(在一些情况下,uid还可分配给非安全装置)。在一个实施例中,uid 2001用作到kdf的输入。
[0401]
选项#3:读取puf raw模式(uds
raw
),且将uds
puf
计算为:uds
puf
=kdf(uds
raw
|uid|hash(用户模式)),其中通过请求自我身份产生的主机在命令有效载荷中提供用户模式。
[0402]
选项#4:读取puf raw模式(uds
raw
),且将uds
puf
计算为:uds
puf
=kdf(uds
raw
|uid|hash(用户模式)|新鲜度),其中新鲜度为例如命令有效载荷中提供的新鲜度。
[0403]
更一般来说,uds被计算为uds
puf
=kdf[(由主机装置提供的信息|装置中存在的信息)]。kdf函数可用作使用秘密密钥的简单hash函数(例如,sha256),或mac函数(例如,hmac

sha256)。
[0404]
在一个实例中,当mac函数用作kdf时,所使用的秘密密钥为用于提供认证命令的相同密钥。可使用如下选项中的一者产生装置秘密(例如,uds):
[0405]
选项#5:uds
puf
=mac[secret_key,(uds
raw
)]
[0406]
选项#6:uds
puf
=mac[secret_key,(uds
raw
|uid)]
[0407]
选项#7:uds
puf
=mac[secret_key,(uds
raw
|uid|hash(用户模式))]
[0408]
选项#8:uds
puf
=mac[secret_key,(uds
raw
|uid|hash(用户模式)|新鲜度)]
[0409]
更一般来说,uds
puf
=mac[secret_key,(由主机提供的信息|装置中存在的信息)]
[0410]
如上文所提及,uds
puf
可在产生之后传达到主机装置151。在一个实施例中,主机装置151可直接读取uds
puf
。uds
puf
可只读取预定次数(例如,仅一次或几次)。在一个实例中,可使用如下文针对图21所描述的过程。在按预定次数读取uds
puf
之后,永久地停用读取机制。举例来说,此方法可在安全环境中使用(例如,当使用计算装置141组装计算系统或其它产品时在客户的工厂中使用)。
[0411]
在一个实例中,通过计算装置141使用从主机装置151接收的公钥来加密uds
puf
,且随后将uds
puf
发送到主机装置151。在此程序之后,永久地停用uds
puf
读取机制。
[0412]
在另一实施例中,计算装置141包含混淆处理模块2011。混淆处理模块2011为图15的混淆处理模块630或图19的混淆处理模块630的实例。
[0413]
在一个实施例中,uds
puf
用主机公钥加密且传达到主机装置;主机装置使用其对应的秘密密钥来对其进行解密。在特定通信设置阶段期间将主机公钥传达到计算装置141。在一个实施例中,可以通过直接读取操作通过使用认证命令完成uds
puf
的共享,并且在预定次数的读取(例如,通常仅一次)之后,永远停用此类读取操作。计算装置141将uds密钥存储于防篡改区域中。在uds密钥也用于内部(计算装置)使用的每一使用下,混淆机制用于避免信息泄漏(例如,通过避免黑客猜测所存储的uds密钥的任何机会,例如通过黑客分析电流或电压波形)。举例来说,所使用的混淆机制可如上文针对图15、18、19所描述。
[0414]
在一个实施例中,计算装置141在将加密的装置秘密发送到主机装置151之前混淆装置秘密。
[0415]
图21展示根据一个实施例的发送由系统的单调计数器提供的初始值以用于确定是否已发生对系统的篡改的系统。在一个实例中,系统为图20的计算装置141。
[0416]
在一些实施例中,系统将秘密密钥用于与其它装置(例如,主机装置151)的安全通信。产生秘密密钥并将其存储于系统上(例如,通过在系统板的初始组装之后的工厂处的密钥注入)。系统的单调计数器用于提供初始值。
[0417]
在另一实施例中,秘密密钥为与dice

riot协议一起使用的uds。响应于来自主机装置(例如,主机装置151)的命令而产生秘密密钥。
[0418]
在一个实施例中,通过电子通信将初始值发送到物理系统的既定接收方(例如,接收方将在物理系统物理上运输到接收方的位置之后接收物理系统)。在接收到系统之后,接收方从单调计数器读取输出值。接收方(例如,使用较早接收到初始值的接收方的计算装置或服务器)比较初始值与输出值以确定是否已发生对系统的篡改。在一个实例中,篡改为入侵者在其物理运输期间访问系统的秘密密钥的未授权尝试。
[0419]
在一个实施例中,秘密密钥可例如使用真实rng(随机数生成器)或puf产生,或在类似工厂的安全环境中预先注入系统(存储器)中。
[0420]
在一个实施例中,所产生的密钥与单调计数器的初始值相关联。所述初始值由所述系统的接收方使用以确定是否已进行未授权的访问所存储的密钥的尝试。在一个实施例中,密钥注入过程可使用来自物理不可克隆函数(puf)的输出以针对存储密钥的计算装置的每一通电循环产生密钥。
[0421]
更确切地说,图21展示根据一个实施例的发送由单调计数器355提供的初始值以用于确定是否已发生对系统351的篡改的系统351。举例来说,可以确定系统351是否已经由在系统351的物理运输期间寻求对所存储的密钥的未授权访问的黑客篡改。在一个实例中,系统351为包含非易失性存储器306、处理器304、单调计数器355和电源318的系统板。
[0422]
在处理器304的控制下产生一或多个密钥314。非易失性存储器306用于存储所产生的密钥。非易失性存储器306为例如非易失性存储器装置(例如,3d交叉点存储区)。
[0423]
单调计数器355经初始化以提供初始值。此初始值与所存储的密钥314相关联。初始值通过处理器304经由外部接口312发送到另一计算装置。举例来说,可将初始值发送到接收器的服务器,系统351将在制造及密钥注入完成之后运送到所述接收器。
[0424]
当系统351由接收器接收时,接收器的计算装置确定初始值。举例来说,计算装置可将在如上文所描述发送时所接收的初始值存储于存储器中。计算装置从单调计数器355读取输出值。将此输出值与初始值相比较以确定是否已对系统351进行篡改。
[0425]
在一个实施例中,接收器的计算装置确定已发生的使得单调计数器355递增的事件的数目。举例来说,来自单调计数器355的输出值可经配置以在系统351的每一通电操作上递增(例如,如通过监测电源318检测到)。来自单调计数器355的输出值可另外和/或替代地经配置以在执行对所存储的密钥314的读取访问的每次尝试时递增。
[0426]
通过例如跟踪致使单调计数器递增的已知事件的数目,可基于已知事件的此数目而调整从发送器接收的初始值。接着,将调整后的初始值与从单调计数器355读取的输出值进行比较。如果值匹配,那么未发生篡改。如果所述值不匹配,那么计算装置确定已检测到篡改。
[0427]
响应于确定已检测到篡改,可停用系统351的一或多个功能。在一个实施例中,处理器304从接收器的计算装置接收包含已检测到篡改的指示的通信。响应于接收到所述通信,处理器304停用系统351的至少一个功能。在一个实例中,所停用的功能为对所存储的密钥314的读取访问。
[0428]
在一个实施例中,系统351可经配置以使得从单调计数器355输出的计数器值无法超过预定最大值。举例来说,当从单调计数器355读取每一计数器值时,确定计数器值是否超过预定最大值。如果计数器值超过预定最大值,那么可永久地停用对所存储的密钥314的读取访问(例如,在处理器304的控制下)。
[0429]
在一个实施例中,系统351体现在半导体裸片上。在另一实施例中,系统351形成于系统板上。应用程序存储于系统存储器353中且由处理器304执行。应用程序的执行发生在系统351的通电之后。举例来说,系统351的接收器可在确定未发生对系统的篡改之后执行应用程序。
[0430]
在一个实施例中,使用来自一或多个物理不可克隆函数(puf)的输出值产生密钥314。举例来说,针对系统351的每一通电循环产生密钥。在另一实例中,密钥314为响应于来自主机装置的经由外部接口312接收的替换命令而产生的uds。
[0431]
在一个实施例中,系统351为存储密钥314的控制器。外部接口312用于将初始值从单调计数器355发送到处于与控制器相同的系统板上的外部非易失性存储器装置(未展示)。外部非易失性存储器装置通过从单调计数器355读取输出值且将输出值与从系统351接收的初始值相比较来确定是否已发生篡改。
[0432]
在一个实施例中,系统存储器353包含易失性存储器308和/或非易失性存储器306。加密模块316用于使用密钥314(例如,对称密钥)经由外部接口312执行用于安全通信的加密操作。
[0433]
现在在各种另外的实施例中描述建立秘密密钥共享。通过参与通信的动作者之间的密钥共享来设置安全通信信道。在受信任平台模块板中使用的组件通常不具有足够的处理能力来实施例如公钥密码术等方案。
[0434]
在一个实施例中,装置/板制造商与oem/最终顾客之间共享一或多个秘密密钥。并且,可按需要在所属领域中的同一板中的不同装置之间共享密钥。如上文所论述,在安全装置内部使用一或多个单调计数器。
[0435]
在一个实例中,在装置离开工厂或制造商测试线之前,取决于装置能力和用户需要,在装置内部注入一或多个秘密密钥(例如,如下的一或多个秘密密钥:具有k=1
……
n的secret_key
k
)。
[0436]
取决于装置能力及用户需要,初始化一或多个单调计数器(n(n≥1)不同mtc

mtc
k
=0)。单调计数器(mtc)经配置以每当发生系统/装置的通电时递增输出值,且每当所存储的秘密密钥(尝试)待读取时递增输出值。
[0437]
每一mtc
k
的值可为公共的且与客户共享(例如,作为mtc
k
)。命令序列(例如,如系统设计者所任意确定)用于从装置读取密钥,且命令序列可为公共的(例如,方法的强度并不基于读取协议的安全性)。
[0438]
在一个实施例中,不需要针对每一秘密密钥使用专用mtc。这可取决于所使用的安全服务的类型而变化。举例来说,一些密钥可一起读取,且其仅需要单个mtc。
[0439]
在一个实施例中,在系统到达接收器(例如,客户/用户)位置之后,执行若干操作。接收器的计算装置首先确定单调计数器355的初始值。举例来说,检索mtc
k
=(mtc0)
k
的值(例如,在装置离开工厂的时刻写入和发送的初始值)。针对每一mtc或相关联密钥,mtc
k
值可不同。
[0440]
随后,接收器客户/用户对系统351供电。第一所解决的操作为mtc
k
值的读取。如果每一mtc
k
值与预期(所接收)初始值[例如mtc
k
=(mtc0 1)
k
]匹配,那么将装置确定为在物理运送或其它传送期间尚未通电,且系统351被终端用户/客户视为可靠的(且未被篡改)。
[0441]
如果一或多个值不匹配,那么已发生篡改。举例来说,未经授权的人使装置通电且
尝试读取所存储的密钥。如果已发生篡改,那么丢弃装置且将篡改的指示传达到发送方(例如,传送公司)以避免另外的技术安全问题。
[0442]
在另一实施例中,通过系统351的接收器执行多个读取操作。举例来说,装置离开工厂且到达客户/oem。客户读取一或多个密钥并且相关mtc
k
递增一。如果mtc
j
递增超过硅工厂(发送器)预设的值(mtc
j max
),那么永久地停用密钥(secret_key
j
)的读取。
[0443]
在此实例中,mtc
j max
为对于每一mtc由发送器及客户同意的预定最大值。此方法允许可检查或执行在读取mtc值之后/之前的密钥读取的一或多个尝试。这准许(例如)发现任何未经授权的访问且同时还确保oem/客户在停用之前执行密钥的读取若干次。
[0444]
如果在读取过程期间,一或多个mtc具有未预期的值(例如,初始值和读取值在针对已知读取和通电操作的数目的调整之后并不匹配),那么丢弃装置。在一个实施例中,一旦读取所有密钥,就清除相关mtc
k
且可将其重新用于其它目的(例如,如由系统设计者配置和所要的加密处理功能等)。
[0445]
在另一实例中,监测装置/板使用。此实例使用已经存在于安全装置上(例如,存在以供密码模块316使用)的单调计数器。在装置离开硅工厂之前,在测试生产线上执行以下操作:初始化m(m≥1)不同mtc

mtc
k
=0。
[0446]
此类mtc计数器在装置的每一上电处递增。可将每一计数器初始化为零(或按需要初始化为另一初始值)。
[0447]
接收器终端用户可使用所接收的mtc
k
值以获得关于系统351的各种信息,例如,检测组件/板的未授权使用,确定组件已经去焊接且在板外部使用以侵入所述组件,基于客户的服务实施费用机制的电力循环计数,装置板保修策略和电力损耗。
[0448]
在一个实施例中,实施所述费用机制涉及使值与特定使用相关联。可将应用程序提供到客户,且客户必须支付费用以解锁特定使用。
[0449]
在一个实施例中,秘密密钥在同一系统板上的不同装置之间共享(例如,在由终端用户使用时在字段中共享)。通过同一板上的组件之间(例如,处理器之间)的交换而共享密钥。
[0450]
在一个实施例中,通过将一或多个单调计数器(mtck)的初始值设置为零来初始化一或多个单调计数器(mtck)中的每一者。在一个实例中,当设置mtck=0时,mtck为由数字k指示的与特定密钥相关联的计数器。mtck=0指示计数器的初始值为零。每一k指示计数器数目中的一者,其对应于存储于装置中的内部密钥的数目。每一计数器的值存储在装置的非易失性存储器区域中。
[0451]
在一个实施例中,检测装置的通电(有时也被称作上电)。装置包含测量电源的值的内部电路。当电源超过某一阈值时,电路触发内部信号以指示通电事件的存在(检测)。此信号可致使单调计数器的递增。
[0452]
在一个实施例中,检测读取秘密密钥的尝试。每当检测到电力时(如上所述)递增计数器(mtck),并且另外每当装置接口辨识出读取密钥的命令序列时递增计数器(mtck)。知道初始mtck值,当进行装置的运送时,准许装置的最终接收器(例如,终端用户/客户)知道装置(和计数器)状态。因此,如果在运送期间,存在对装置进行供电和/或读取的尝试,那么这产生存储在每一mtck中的计数器值的变化。
[0453]
在一个实施例中,命令序列用于从装置读取密钥。举例来说,装置具有外部接口,
其接受来自其它计算组件或装置的命令。密钥可用于读取直到达到最大计数器值为止。在一个实例中,装置在接口处具有序列:命令(例如,0x9b) 变量参数(0x34) 签名。装置理解将读取密钥且在输出处提供密钥。
[0454]
在一个实施例中,在装置的测试(例如,在初始工厂处)之后,每个密钥的mtck将具有来自初始化的初始值。因此,例如,如果k=3,那么:mtc0=20d,mtc1=25d,mtc2=10。将值mtc0、mtc1、mtc2发送/发射到客户,作为一组初始值。当装置由客户接收时,客户使用命令序列来读取所述值。客户(例如,使用计算装置)随后确定装置在运送期间是否被破解。在一个实例中,使用上文所描述的命令序列读取单调计数器值。
[0455]
在一个实施例中,预设预定最大计数器值。举例来说,可基于客户程序选择预设的最大值。举例来说,假设客户想要读取密钥10次。并且,假设mtck仅在电力接通时递增,且假设存在两个计数器mtc0(仅与通电相关联)及mtc1(仅与密钥读取命令程序相关联)。在工厂测试之后,基于监测mtc0和mtc1值,发现:mtc0=30,mtc1=25。在一个实例中,针对mtc0将内部阈值设置为40且针对mtc1将内部阈值设置为35。
[0456]
在一个实施例中,与密钥相关联的mtc随着上电及读取密钥的尝试而递增。每当两个事件中的一者发生时,mtc递增。
[0457]
在一个实施例中,在最终读取所存储的密钥之后清除单调计数器(且任选地可重新用于对装置的其它处理)。系统设计者可以按需要配置这一点。最终读取例如当不再需要mtc计数的目的时作为恶意事件的检测器。这释放计数器作为资源,其可用于其它目的,或计数器可保持计数。
[0458]
在一个实施例中,单调计数器可用于获得各种类型的信息,例如经去焊接的组件、实施费用机制、实施保修等。计数器可用于监测不同类型的发生,因为计数器值的递增可被外部触发。
[0459]
在一个实施例中,提供多个密钥读取选项。在一个实例中,对于mtc值的初始化(对于与密钥相关联的mtck),设置最大阈值以允许由组件和/或最终用户的接收器读取每一密钥。多个读取选项允许根据读取特定密钥的尝试的最大数目而改变阈值(对于每一密钥可不同)。
[0460]
在一个实施例中,不同类型装置可使用以上方法。举例来说,cpu或mcu通常具有不可由外部访问存取的内部硬件安全模块。在一个实例中,需要具有存储在装置或组件中的相同密钥(例如,当使用对称密钥方法时)以便正确地操作。在此情况下,cpu/mcu从密钥到授权实体、装置或组件的分布/共享获益。此共享允许读取密钥(例如,此共享对应于mtck阈值中的值的编程)。
[0461]
在一个实施例中,以上方法用于客户固件注入。举例来说,以上方法允许在装置(例如,应用程序固件)内部存储关键内容且在不安全的环境中实施装置的移动(而不损害固件/装置的完整性)。在一个实例中,对于固件注入,在运输期间的mtck计数器值的非预期变化用作指示已发生固件损害的索引。
[0462]
图22展示根据一个实施例的用于使用物理不可克隆函数(puf)产生计算装置的身份的方法。举例来说,图22的方法可在图20的系统中实施。
[0463]
图22的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或
执行的指令)或其组合。在一些实施例中,至少部分地通过图20的处理器143执行图22的方法。
[0464]
虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改所述过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可以在各种实施例中省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
[0465]
在框2211处,通过至少一个物理不可克隆函数(puf)提供至少一个值。举例来说,puf 2005提供值作为输出。
[0466]
在框2213处,使用密钥衍生函数(kdf)产生装置秘密。由至少一个puf提供的至少一个值用作到kdf的输入。举例来说,来自puf 2005的输出用作到kdf 2007的输入。
[0467]
在框2215处,存储所产生的装置秘密。举例来说,kdf 2007产生存储为装置秘密149的输出。
[0468]
在一个实施例中,方法包括:通过计算装置产生装置秘密(例如,存储为装置秘密149的uds),所述产生包括:通过至少一个物理不可克隆函数(puf)提供至少一个值;及使用密钥衍生函数(例如,kdf 2007)产生装置秘密,其中由至少一个puf提供的至少一个值为到kdf的输入;以及将所产生的装置秘密存储于计算装置的存储器中。
[0469]
在一个实施例中,存储所产生的装置秘密包括用所产生的装置秘密替换先前存储在存储器中的装置秘密。
[0470]
在一个实施例中,kdf为散列或消息认证码。
[0471]
在一个实施例中,所述方法进一步包括存储用于与主机装置通信的秘密密钥,其中kdf为消息认证码(mac),由至少一个puf提供的至少一个值为到mac的第一输入,且秘密密钥为到mac的第二输入。
[0472]
在一个实施例中,响应于事件而产生装置秘密,且所述事件为通过计算装置从主机装置接收命令。
[0473]
在一个实施例中,所述方法进一步包括从主机装置接收主机公钥,使用主机公钥对所产生的装置秘密进行加密,及将经加密的装置秘密发送到主机装置。
[0474]
在一个实施例中,所述方法进一步包括在将经加密的装置秘密发送到主机装置之后,永久地停用对存储器中的装置秘密的读取访问。
[0475]
在一个实施例中,所述方法进一步包括在将经加密的装置秘密发送到主机装置之前混淆装置秘密。
[0476]
在一个实施例中,所述方法进一步包括通过所述计算装置将秘密密钥(例如,秘密密钥2013)存储在存储器中,其中所述命令通过所述计算装置使用消息认证码(mac)来认证,且所述秘密密钥用作到所述mac的输入。
[0477]
在一个实施例中,主机装置发送用于认证命令的签名,所述签名使用mac来产生,且由主机装置产生的新鲜度用作到mac的输入。
[0478]
在一个实施例中,新鲜度为到kdf的额外输入。
[0479]
在一个实施例中,主机装置向用户模式提供命令,且其中用户模式的散列为到kdf的额外输入。
[0480]
在一个实施例中,所述方法进一步包括在产生装置秘密之前通过计算装置认证命
令。
[0481]
在一个实施例中,所述方法进一步包括存储计算装置的唯一标识符,其中所述唯一标识符为到kdf的额外输入。
[0482]
在一个实施例中,响应于事件而产生装置秘密,且所述事件为通过计算装置检测计算系统的使用。
[0483]
在一个实施例中,使用是由计算系统执行应用程序。在一个实施例中,使用为启动加载过程的初始化。
[0484]
在一个实施例中,根据技术方案1所述的方法,其中响应于事件而产生装置秘密,且所述事件为经时间调度的事件。
[0485]
在一个实施例中,系统包括:至少一个处理器;及
[0486]
存储器,其含有经配置以指导所述至少一个处理器进行以下操作的指令:产生装置秘密,所述产生包括:通过至少一个物理不可克隆函数(puf)提供至少一个值;及使用密钥衍生函数(kdf)产生装置秘密,其中由至少一个puf提供的至少一个值为到kdf的输入;以及将所产生的装置秘密存储于计算装置的存储器中。
[0487]
在一个实施例中,所述指令进一步经配置以指导所述至少一个处理器进行以下操作:从主机装置接收替换命令;及将使用所产生的装置秘密产生的公共标识符发送到主机装置;其中响应于接收到所述替换命令而产生装置秘密;其中存储所产生的装置秘密包括用所产生的装置秘密替换先前存储的装置秘密。
[0488]
在一个实施例中,非暂时性计算机存储媒体存储指令,所述指令当在计算装置上执行时致使所述计算装置至少进行以下操作:通过至少一个物理不可克隆函数(puf)提供至少一个值;使用密钥衍生函数(kdf)产生装置秘密,其中由至少一个puf提供的至少一个值为到kdf的输入;及将所产生的装置秘密存储于存储器中。
[0489]
结束语
[0490]
非暂时性计算机存储媒体可用于存储固件104的指令,或用于存储处理器143或处理装置111的指令。当指令由例如存储器装置103或计算装置603的控制器107执行时,所述指令致使控制器107执行上文所论述的方法中的任一者。
[0491]
在本说明书中,各种功能和操作可被描述为由计算机指令执行或由计算机指令引起以简化描述。然而,所属领域的技术人员将认识到,此类表达的意图是所述功能源自由一或多个控制器或处理器(例如微处理器)执行计算机指令。替代地或组合地,所述功能和操作可使用具有或不具有软件指令的专用电路实施,例如使用专用集成电路(asic)或现场可编程门阵列(fpga)来实施。可使用无软件指令的硬接线电路系统或结合软件指令实施实施例。因此,技术不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
[0492]
虽然一些实施例可以在功能全面的计算机和计算机系统中实施,但是各种实施例能够分布为多种形式的计算产品,且能够不论实际上用于实现分布的机器或计算机可读媒体的特定类型如何都适用。
[0493]
所公开的至少一些方面可至少部分体现于软件中。也就是说,技术可以响应于其处理器(例如微处理器或微控制器)在计算机系统或其它数据处理系统中实施,从而执行包含在存储器(例如rom、易失性ram、非易失性存储器、高速缓存或远程存储装置)中的指令序
列。
[0494]
经执行以实施实施例的例程可实施为操作系统或具体应用程序、组件、程序、物件、模块或被称作“计算机程序”的指令序列的部分。计算机程序通常在各种时间在计算机中的各种存储器和存储装置中包括一或多个指令集,且所述指令集在由计算机中的一或多个处理器读取和执行时使所述计算机执行对进行涉及各个方面的要素来说必要的操作。
[0495]
可以使用有形的非暂时性计算机存储媒体存储软件和数据,所述软件和数据在由数据处理系统执行时使所述系统执行各种方法。可执行软件和数据可存储于包含例如rom、易失性ram、非易失性存储器和/或高速缓存的各种地点中。此软件和/或数据的部分可存储在这些存储装置中的任一个中。此外,数据和指令可从集中式服务器或对等网络获得。数据和指令的不同部分可在不同时间和在不同通信会话或相同通信会话中从不同集中式服务器和/或对等网络获得。可在执行应用程序之前获得全部数据和指令。替代地,可动态地、及时地在需要执行时获得数据和指令的部分。因此,并不要求数据和指令在特定时刻全部处于机器可读媒体上。
[0496]
计算机可读存储媒体的实例包含但不限于可记录和不可记录类型的媒体,例如易失性和非易失性存储器装置、只读存储器(rom)、随机存取存储器(ram)、快闪存储器装置、软性和其它可装卸式磁盘、磁盘存储媒体和光学存储媒体(例如,光盘只读存储器(cd rom)、数字通用光盘(dvd)等)以及其它媒体。指令可体现在暂时性媒体中,例如电学、光学、声学或其它形式的传播信号,例如载波、红外信号、数字信号等。暂时性媒体通常用于发射指令,但不被视为能够存储所述指令。
[0497]
在各种实施例中,硬接线电路系统可与软件指令组合使用以实施技术。因此,技术既不限于硬件电路系统和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
[0498]
尽管图中的一些以特定次序说明数个操作,但可重新排序不依赖于次序的操作,且可组合或分解其它操作。虽然具体提及了一些重新排序或其它分组,但是其它重新排序或分组对于所属领域的技术人员来说是显而易见的,因此不提供详尽的替代方案列表。此外,应认识到,阶段可以硬件、固件、软件或其任何组合实施。
[0499]
以上描述和图式是说明性的,且不应理解为限制性的。描述许多特定细节以提供透彻理解。然而,在某些情况下,不描述众所周知的或常规的细节以免混淆描述。本公开中对一个或一实施例的参考未必参考同一实施例;并且此类参考意味着至少一个。
[0500]
在前述说明书中,已参考本公开的具体示例性实施例描述了本公开。将显而易见的是,可在不脱离所附权利要求书中阐述的更广精神和范围的情况下对其进行各种修改。因此,说明书和图式应被视为说明性的而非限制性的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献