首页> 中国专利> 用于导出密钥层次结构的加密ASIC

用于导出密钥层次结构的加密ASIC

摘要

一种用于经由导出的密钥层次结构来创建信息流、与信息流进行交互以及识别信息流的加密ASIC、方法和计算机程序产品。具有经编程的启用变换的加密电路的用户可以处理预定输入消息以获得指示特定信息流(例如,区块链)的身份的预定输出消息。该用户还可以处理其它输入消息,例如用于验证区块链,但在没有变换密钥的情况下无法复制经编程的启用变换的加密电路。在层次结构的中间级别,具有变换密钥的用户可以复制经编程的启用变换的加密电路,以及处理输入消息并识别信息流。但是,只有知晓用户密码短语的用户才能创建信息流,例如区块链,变换密钥可以在电路制造过程中或在其之后从用户密码短语导出。

著录项

  • 公开/公告号CN112654992A

    专利类型发明专利

  • 公开/公告日2021-04-13

    原文格式PDF

  • 申请/专利权人 布洛克钱恩阿西克斯公司;

    申请/专利号CN201980043296.6

  • 发明设计人 E·L·罗德里格斯德卡斯特罗;

    申请日2019-03-28

  • 分类号G06F21/76(20060101);G06F21/72(20060101);H04L9/16(20060101);H04L9/06(20060101);H04L9/12(20060101);

  • 代理机构72002 永新专利商标代理有限公司;

  • 代理人贾丽萍

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:35:20

说明书

要求优先权

本申请要求享受于2018年5月9日递交的标题为“CRYPTOGRAPHIC ASIC FORDERIVATIVE KEY HIERARCHY”、序列号为No.15/975,539的美国申请的优先权,该美国申请要求于2018年4月25日递交的标题为“Cryptographic ASIC For Derivative KeyHierarchy”、序列号为No.62/662,544的共同转让的美国临时申请的优先权利益,在此通过引用的方式将上述每个美国申请的完整内容并入本文。本申请也通过主题与2016年1月15日递交的序列号为No.14/997,113的共同转让的美国申请相关,在此通过引用的方式将该美国申请的完整内容并入本文。

技术领域

所公开的技术一般涉及集成电路的设计,并且更具体地说,一些实施例涉及加密集成电路的设计。

背景技术

专用集成电路(ASIC)是为特定目的或应用而设计和制造的集成电路。与较慢的、更通用的解决方案(例如在通用处理器或现场可编程门阵列(FPGA)上运行的软件解决方案)相比,ASIC提供了更快的计算速度。顾名思义,ASIC通常设计为仅执行一个特定的应用,从而造成在灵活性和计算速度之间的权衡。ASIC在与密码相关的领域中日益重要,例如工作量证明系统、数字版权管理系统以及通常具有严格的速度和效率要求的其它应用。

附图说明

在附图中,相同的附图标记可以描述不同视图中的相同组件,附图不一定是按比例绘制的。具有不同字母后缀的相同数字可表示相同组件的不同实例。附图通过示例而非限制的方式大体上示出了本文档中讨论的各种实施例。

图1示出了根据实施例的,实现为独立集成电路的包含启用变换的散列核心的启用变换的加密电路的框图。

图2示出了根据实施例的启用变换的散列核心的框图。

图3示出了根据实施例的信息层次结构的框图。

图4示出了根据实施例的信息层次结构的管理方法的流程图。

图5示出了根据实施例的内部编程集成电路的功能图。

图6示出了根据实施例的用于信息流管理的定制设备编程过程的流程图。

图7示出了具有很少或没有内部通信安全性的常规自主产品。

图8示出了根据实施例的具有安全的芯片间通信的自主产品。

图9更详细地示出了根据实施例的自主产品处理器。

图10示出了根据实施例的具有安全的芯片间通信和非易失性存储器的集成电路。

图11示出了根据实施例的安全的芯片间通信方法的流程图。

图12示出了根据实施例的用于计算密码安全以及可验证的唯一处理器标识符的方法的流程图。

图13示出了根据实施例的用于验证加密集成电路的变换完整性的方法的流程图。

图14示出了根据实施例的可以执行本文描述的功能的计算组件。

具体实施方式

本文公开的技术的实施例涉及用于与密码相关的应用的专用集成电路的设计、制造、编程和使用。更具体地,本文公开的技术的各种实施例涉及具有体现为结合到集成电路的高速数据路径中的电路的一个或几个可编程变换函数的ASIC。通过将变换函数编码为数据路径电路,本文公开的技术的实施例使ASIC能够实现用户选择的非常广泛范围的工作量证明计算中的任何一种。基于工作量证明的加密验证过程可以包括但不限于在区块链技术新兴领域中经常使用的加密网络交易验证系统。

在示例中,一种用于管理信息流上的操作的加密集成电路可以包括:第一单向函数(OWF)电路块,其生成输入消息的散列,可编程变换函数电路块,其是通过变换密钥定制的并且将散列变换为经变换的散列;以及第二OWF电路块,其生成经变换的散列的第二散列作为输出结果。加密集成电路可以通过执行使用户能够识别信息流、处理来自信息流的输入消息或创建信息流的操作来控制信息流知识层次结构。

在另一示例中,一种用于管理信息流上的操作的加密方法可以包括:通过对输入消息进行散列来处理来自信息流的输入消息,执行对散列的定制式变换,以及将经变换的哈希散列进行散列为输出结果,变换是基于变换密钥而定制的,以及使得能够基于从其导出变换密钥的用户密码短语来创建信息流。

在另一示例中,一种非暂时性计算机可读存储介质可以包含指令,当该指令由处理器执行时,该指令使计算机执行用于管理信息流上的操作的加密操作。该操作可以包括:通过对输入消息进行散列来处理来自信息流的输入消息,执行对散列的定制式变换,以及将经变换的散列进行散列为输出结果,变换是基于变换密钥而定制的;以及使得能够基于从其导出变换密钥的用户密码短语来创建信息流。

在示例中,一种用于管理信息流上的操作的加密集成电路可以包括:变换密钥生成器,其从用户密码短语的临时副本导出变换密钥;以及一次性可编程(OTP)存储器,其使用来自外部电路的编程脉冲来以隔离方式存储变换密钥。该电路还可以包括:第一单向函数(OWF)电路块,其生成输入消息的散列;可编程变换函数电路块,其是通过变换密钥定制的并且将散列变换为经变换的散列;以及第二OWF电路块,其生成经变换的散列的第二散列作为输出结果,其中,这些操作包括:识别信息流;将来自信息流的输入消息处理为输出结果;和/或创建信息流。

在另一示例中,一种用于管理信息流上的操作的加密方法可以包括:从用户密码短语的临时副本中导出变换密钥,以及使用来自外部电路的编程脉冲,将变换密钥以隔离方式存储在一次性可编程存储器中。该方法还可以包括:通过对输入消息进行散列来处理来自信息流的输入消息,执行对散列的定制式变换,以及将经变换的散列进行散列为输出结果,变换是基于变换密钥而定制的;以及使得能够基于从其导出变换密钥的用户密码短语来创建信息流。

在另一示例中,一种用于管理信息流上的操作的系统可以包括:用于从用户密码短语的临时副本中导出变换密钥的单元,以及用于使用来自外部电路的编程脉冲,将变换密钥以隔离方式存储在一次性可编程存储器中的单元。该系统还可以包括:用于通过对输入消息进行散列来处理来自信息流的输入消息,执行对散列的定制式变换,以及将经变换的散列进行散列为输出结果的单元,该变换是基于变换密钥而定制的;以及用于使得能够基于从其导出变换密钥的用户密码短语来创建信息流的单元。

在示例中,一种用于管理信息流上的操作的加密集成电路可以包括:变换密钥生成器,其从用户密码短语的临时副本导出变换密钥;以及一次性可编程存储器,其使用来自内部电路的编程脉冲来以隔离方式存储变换密钥。该电路还可以包括:第一单向函数(OWF)电路块,其生成输入消息的散列;可编程变换函数电路块,其是通过变换密钥定制的并且将散列变换为经变换的散列;以及第二OWF电路块,其生成经变换的散列的第二散列作为输出结果,其中,这些操作包括:识别信息流;将来自信息流的输入消息处理为输出结果;和/或创建信息流。

在另一示例中,一种用于管理信息流上的操作的加密方法可以包括:从用户密码短语的临时副本中导出变换密钥,以及使用来自内部电路的编程脉冲,将变换密钥以隔离方式存储在一次性可编程存储器中。该方法还可以包括:通过对输入消息进行散列来处理来自信息流的输入消息,执行对散列的定制式变换,以及将经变换的散列进行散列为输出结果,其中变换是基于变换密钥而定制的;以及使得能够基于从其导出变换密钥的用户密码短语来创建信息流。

在另一示例中,一种用于管理信息流上的操作的系统可以包括:用于从用户密码短语的临时副本中导出变换密钥的单元,以及用于使用来自内部电路的编程脉冲,将变换密钥以隔离方式存储在一次性可编程存储器中的单元。该系统还可以包括:用于通过对输入消息进行散列来处理来自信息流的输入消息,执行对散列的定制式变换,以及将经变换的散列进行散列为输出结果的单元,其中该变换是基于变换密钥而定制的;以及用于使得能够基于从其导出变换密钥的用户密码短语来创建信息流的单元。

在示例中,一种用于自主地存储上下文数据的集成电路可以包括:由内部编程电路编程用于以隔离方式存储上下文数据的一次性可编程存储器电路块,以及用于控制上下文数据的检索的安全通信电路块。

在另一示例中,用于在集成电路中自主地存储上下文数据的加密方法可以包括:将上下文数据以隔离方式存储在由内部编程电路编程的一次性可编程存储器电路块中,以及利用安全通信电路块控制上下文数据的检索。

在另一示例中,一种用于自主地存储上下文数据的系统可以包括:用于将上下文数据以隔离方式存储在由内部编程电路编程的一次性可编程存储器电路块中的单元,以及用于利用安全通信电路块来控制上下文数据的检索的单元。

在示例中,一种用于管理信息流上的操作的加密集成电路可以包括:一次性可编程存储器,其被配置为以隔离方式存储由晶圆厂为集成电路的每个实例限定的唯一配置密钥,以及变换散列生成器,其被配置为:使用配置密钥从询问消息中针对集成电路的每个实例导出唯一的电路标识符。

在另一示例中,一种用于管理信息流上的操作的加密方法可以包括:在集成电路中的一次性可编程存储器中以隔离方式存储由晶圆厂为集成电路的每个实例限定的唯一配置密钥,以及使用配置密钥从询问消息中针对集成电路的每个实例导出唯一的电路标识符。

在另一示例中,一种用于管理信息流上的操作的系统可以包括:用于在一次性可编程存储器电路块中以隔离方式存储由晶圆厂为集成电路的每个实例限定的唯一配置密钥的单元,以及用于使用配置密钥从询问消息中针对集成电路的每个实例导出唯一的电路标识符的单元。

在示例中,一种用于验证用于管理信息流上的操作的电路有效性的加密集成电路可以包括:一次性可编程存储器,其被配置为以隔离方式存储由晶圆厂和用户之一为集成电路的每个实例限定的唯一内部标识符值;变换散列生成器,其被配置为根据预定的输入消息针对集成电路的每个实例计算内部标识符值;以及比较器,其通过将存储的内部标识符值与计算出的内部标识符值进行匹配来确定电路有效性。

在另一示例中,一种用于验证用于管理信息流上的操作的电路有效性的加密方法可以包括:在集成电路中的一次性可编程存储器中以隔离方式存储由晶圆厂和用户之一为集成电路的每个实例限定的唯一内部标识符值,根据预定的输入消息针对集成电路的每个实例计算内部标识符值;以及通过将存储的内部标识符值与计算出的内部标识符值进行匹配来确定电路有效性。

在另一示例中,一种用于验证用于管理信息流上的操作的电路有效性的系统可以包括:用于在集成电路中的一次性可编程存储器中以隔离方式存储由晶圆厂和用户之一为集成电路的每个实例限定的唯一内部标识符值的单元;用于根据预定的输入消息针对集成电路的每个实例计算内部标识符值的单元;以及用于通过将存储的内部标识符值与计算出的内部标识符值进行匹配来确定电路有效性的单元。

图1示出了根据实施例的、被实现为独立集成电路的包含启用变换的哈希核心的启用变换的加密电路100的框图。在上文通过引用并入的专利申请中更详细地描述了这种电路和变型,但是此处提供了简要描述。

启用变换的加密电路100包括集成电路102,该集成电路102包含编程和配置接口104、启用变换的散列核心106和配置密钥108。配置密钥108可以由一串二进制数字组成,并且也可以被称为变换密钥或转换密钥。在一些实施例中,可以从配置密钥108中导出变换密钥。

两个示例性用户110和112可以访问集成电路102,其中第一用户110访问编程和配置接口104,第二用户112访问启用变换的散列核心106。第二用户112可以使用散列核心用户接口(未示出)。在各种实施例中,可以将配置和编程接口104以及散列核心用户接口的一些或全部功能组合为单个配置、编程和散列核心用户接口,而在其它实施例中,可以在两个以上的接口之间划分这些功能。

一般的操作模式是第一用户110可以使用编程和配置接口104来配置集成电路102的操作的各种参数并且将一个或多个配置密钥108编程为启用变换的散列核心106中的可编程的变换函数或一些函数,其中它们可以被实现为数据路径电路。注意,在最严格的意义上,配置密钥108不是常规的加密密钥,而是关于如何激活所选择的变换函数(例如将原始输入数据变换为经变换的输入数据)的定制化描述。

第二用户112可以简单地键入输入值或事务或消息,它们直接被传送到将计算和输出相应散列值的启用变换的散列核心106。对于给定的输入消息和配置密钥104,启用变换的加密电路100的实例的任何用户都应能够计算同一相应散列值。输入消息可以包括例如来自区块链的交易块头部,该交易块头部可以受到进一步的操作。注意,可以由第二用户执行对输入消息的处理以产生相应散列值,而无需知晓编程到可编程的启用变换的散列核心106中的配置密钥或一些配置密钥。

由于在程序化变换和所涉及的加密算法的某些数学特性之间建立了交互(特别是,如前所述,它们作为易于执行但难以还原的OWF的性质),因此综合效果是产生包含在由电路计算出的最终值中的比特的系统性变换。该变换不容易被解密,不容易与噪音区分开,并且对于缺乏对编程到变换函数中的密钥或一些密钥的全部先验知识的一方来说,也不容易复制。然而,这种变换是完全一致的,并且可以由具有密钥的先验知识,或者即使在缺乏密钥知识的情况下能够在计算中访问使用这些密钥的手段的一方(例如,拥有先前经编程的ASIC的一方,该ASIC在其数据路径电路中体现了所述密钥)容易地复制,并因此可以被验证。

在一些实施例中,每个用户可以是人,而在其它实施例中,每个用户可以是自动化过程,例如钱包软件、挖掘软件或其它种类的自动化过程。在某些实施例中,第二用户112也可以访问如上所述的集成电路102的各个操作方面的配置。在某些实施例中,可能存在用于整个集成电路102的各个操作方面的配置的单个接口,具有密钥的编程以及基于由用户提供的数据来计算的最终启用变换的散列值的获得。在其它实施例中,那些功能中的一些或全部功能可以是分开的。在某些实施例中,集成电路102可以是较大的计算系统(例如挖掘系统、硬件钱包、安全令牌或加密狗等等)的一部分。在一些实施例中,集成电路102的各种实施方式可以是纳入了包含本文描述的技术的其它实施方式的一个或多个这样的集成电路的系统的一部分。

在一些实施例中,集成电路102的各种实施方式可以物理地集成到与本文描述的技术的其它实施例相同的半导体材料(例如硅)中。在一些这样的实施例中,集成电路102可以另外被进一步连接到本文描述的技术的其它实施例。例如,在各种情况下,集成电路102可以具有对启用变换的散列核心106中的可编程变换函数或一些函数的共享访问,就像在同一集成电路102之内的其它电路一样。在各种其它实施例中,启用变换的加密电路100可以物理地集成到与执行不同任务的另一集成电路(例如微处理器、网络处理器、片上系统等等)相同的半导体材料中。在某些实施例中,启用变换的散列核心106可通过一次性可编程电路元件(例如微熔丝)将配置密钥108体现为电路,而在某些实施例中,可以使用可重写电路元件(例如非易失性随机存取存储器(RAM)),并且在其它实施例中可以使用其它方法。

图2示出了根据实施例的启用变换的散列核心106的框图。该图描绘了在获得最终的启用变换的散列值时针对第二用户112执行的操作。输入消息202或事务可被提供给启用变换的散列核心106,并通过第一单向函数(OWF)实现或散列块204传递。输入消息202可以例如是候选交易块头部(例如来自区块链)。

通常,散列块可以被配置为执行由适用的散列算法定义的数学运算的电路集合。一种广泛使用的散列算法是安全散列算法(SHA),其第二版本现在用作标准散列算法,通常用于长度为256比特的输入消息(在本文中被称为SHA-256)。然而,由于可以使用任何OWF,因此本公开内容不限于此。

第一散列块204的输出是输入消息202的散列206。散列(有时被称为消息摘要)可用作原始消息内容的一种加密描述。散列对于各种加密目的而言是方便的,因为它们可以从输入消息中容易地计算出来,但是在计算上难以转化用于确定原始输入消息。由于这个原因,散列算法有时被称为陷门函数。

散列206然后可以由可调节或可定制地可编程的变换函数208来处理,该变换函数也可以在电路中被实现为变换块。一旦被编程,变换块内的电路就可以对提供给它的数据实现特定的编程变换,从而反映出提供给它的配置密钥108。因此,无论变换块接收到的数据的内容如何,电路应用的变换将直接且始终如一地影响电路进一步沿数据路径计算出的最终值。

可编程变换函数208可以生成输入消息202的经变换的散列210。变换函数可以非常简单,例如在一个实施例中对比特进行反转,或者在另一实施例中对比特进行转置或交换,或者它们的组合。因此,变换函数的编程可以定制馈入变换函数的数据所受到的处理。配置密钥108可以控制可编程变换函数208的特定编程。例如,根据各种实施例,配置密钥108可以简单地是一串二进制数字,其表示输入数据的哪些相应比特将由可编程变换函数208进行反转、转置或进行这两者。即,在一个实施例中,配置密钥108的每个特定比特可以确定输入数据的每个相应特定比特是没有经过变换被直接传递还是经过了变换。

原始输入消息202的经变换的散列210然后可以由第二OWF实施方式或散列块212处理。在一些实施例中,第二散列块212可以实现与第一散列块204相同的加密操作。在其它实施例中,第二散列块212可以实现与第一散列块204不同的加密操作。

每个OWF实施方式都通过其不可逆的特性来保护提供给它的数据。从概念上讲,提交给OWF的输入数据将保存在加密“阴影”中,以通过运算的不可行性防止其从散列结果中被发现。因此,一方可能会看“下游”并看到应用于输入的散列操作的结果,但无法切实地看“上游”并看到提供给散列操作的原始输入。因此,启用变换的散列核心106的输出214是原始输入消息202的经变换散列的散列。

用户密码短语302和基于用户密码短语302计算变换密钥306的计算过程的知识使得能够容易地计算变换密钥306。但是,关于变换密钥306以及基于用户密码短语302进行计算的过程的知识不能使得容易地计算用户密码短语302。因此,在这样的实施例中,用户密码短语302的知识隐含了变换密钥306的知识,但是变换密钥306的知识并不隐含用户密码短语302的知识。需要用户密码短语302的知识来配置变换函数208,从而配置集成电路102以用户密码短语302描述的特定方式执行。

总而言之,原始输入消息202或交易可以由第一OWF 204保护,由针对每个配置密钥108定制编程的变换函数208进行变换,并且经散列变换的原始输入消息210和变换函数208的定制可以再次由第二OWF 212有效地保护。

本发明人已经意识到,除其它因素外,对启用变换的加密电路100进行安全编程能够实现多种优点。例如,可以经由存储配置数据而不提供对该数据的外部可见性或可访问性的启用变换的加密电路100来定义和加密保护新颖的信息层次结构。信息层次结构可以启用加密管理方法,该加密管理方法使得能够创建要处理的信息流、提供对要处理的信息流的有用的处理,并允许对要处理的信息流进行简单识别。信息流可以包括例如区块链。

本文公开的技术的某些实施例允许用户通过向第三方提供变换密钥的知识因此使得他们可以通过(例如但不限于)运行在通用微处理器、为此目的而编程的FPGA上的软件或通过其它方式来验证此类工作证明,使第三方能够容易地验证由启用变换的集成电路产生的工作证明。但是变换密钥的知识无法使第三方能够对集成电路的额外副本进行编程以便以与由使用用户密码短语被编程的集成电路实例计算的方式相同的方式来计算经变换修改的工作证明。所描述的电路已被设计为执行此类验证,同时不透露有关所验证的经变换散列值生成时涉及的精确数学运算的信息。

此外,所描述的系统还可以应用于除区块链技术领域以外的领域。在这样的其它领域,该系统可用于创建其它安全的基于硬件的产品。

图3示出了根据实施例的信息层次结构300的框图。在信息层次结构300的最高级别,编程用户可以提供控制信息流管理方法各方面的用户密码短语302。该用户可以包括例如图1的第一用户110,在一个实施例中,其可以经由编程和配置接口104来提供用户密码短语302。用户密码短语302可以在制造启用变换的加密电路100期间或之后提供。

用户密码短语302可以包括一串二进制数字,或者可以是人类用户更容易记住但仍然易于转换为一串二进制数字的文本字符串。用户密码短语302的保密性可以使任何其它方都无法创建被管理的信息流。用户密码短语302还可以使得能够控制在信息层次结构300中执行的所有其它操作,例如,信息流的处理以及信息流的标识。

启用变换的加密电路100可以接收用户密码短语302并执行片上变换密钥生成处理304以产生变换密钥306。在一个实施例中,变换密钥306与配置密钥108相同,尽管本公开内容也包含其中变换密钥306是从配置密钥108导出的实施例。如将要描述的,片上变换密钥生成304处理而不是单独的片外实现可以增强安全性。

变换密钥生成304处理可以包括:将OWF应用于用户密码短语302至少一次。在一个实施例中,变换密钥生成304处理包括单向函数向用户密码短语302的两个顺序应用。变换密钥生成304处理可以例如包括SHA-256向用户密码短语302的两个顺序应用,尽管本公开内容不限于此。

OWF的使用可以使从变换密钥306导出用户密码短语302在计算上不可行。即,用户密码短语302在OWF的上游,因此密码是安全的。因此,图3表示变换密钥306仅经由虚线通过陷门函数向下进行。

变换密钥306可以使得经由先前在图2中描述的启用变换的散列操作308来实现信息流的定制化处理,该操作可以由图1的启用变换的散列核心106来执行。因此,其它用户(例如第二用户112)可以将输入消息如先前所描述的处理为经变换的散列,如果他们知晓变换密钥306或具有启用了变换的加密电路100的实例,该实例在内部存储了变换密钥306而没有提供外部访问或可见性。但是,仅知晓变换密钥306并不能实现信息流的所有权(例如创建或复制),因为这需要用户密码短语302。因此,图3表示输出值214仅经由虚线通过陷门函数向下进行。

因此,在一个实施例中,用户密码短语302使得能够创建区块链,而变换密钥306使得不知晓用户密码短语302的其它人仍然能够处理和验证输入消息202,例如区块链头部。此外,如果已知可编程变换函数208的形式,则知晓变换密钥306使得能够创建用于处理输入消息202的任意数量的启用变换的加密电路100。

可编程变换函数208的表达可以在许多情况下公开,或者可以保持模糊。实施例的密码强度不依赖于可编程变换函数208的保密性。控制可编程变换函数208的定制的变换密钥306也可以保持秘密或公开。然而,该选择取决于第二用户112打算能够在仅利用原始编程电路的情况下还是也利用复制或“克隆”电路来处理信息流。例如,在一些情况下,仅给定组的成员(例如政府或公司或其它第二用户集合112)预期具有处理私有信息流的能力,因此变换密钥306可以是仅与此类预期方共享的秘密。在其它情况下,意图可以是任何人都能够处理公共信息流而无需共享秘密,因此可以将变换密钥306公开。

已经被编程为包含变换密钥306的启用变换的加密电路100可以通过对特定的预定测试输入消息202进行处理来确定特定的预定输出值214。特定的预定测试输入消息202可以例如是给定长度的众所周知的或标准化的字符串。在各种实施例中,特定的预定输入消息可以是全0或全1,或者是人类用户容易记住并容易转换为例如一串二进制数的特定文本串。

特定的预定输出值214可以是输入消息202源自的给定信息流的唯一标识符。因此,既不知晓用户密码短语302也不知晓变换密钥306的第二用户112仍可以使用经编程的启用变换的加密电路100的实例来识别给定的信息流。这样的第二用户112可以处理消息,但是不能制作已经被编程为不可访问和不可见地包含变换密钥306的启用变换的加密电路100的副本。在某些使用场景下,在既不直接知晓用户密码短语302也不直接知晓变换密钥306的情况下即可识别信息流的能力可能特别有利。

例如,在一个实施例中,信息流是区块链,并且预定输出值214是唯一地标识区块链的ChainID。将来,可能会存在大量不同的区块链,因此,通过ChainID,具有经编程的启用变换的加密电路100的任何第二用户112都可以将输入消息202源自的区块链与所有其它区块链加以区分。

因此,ChainID是信息层次结构300的最低导出级别。ChainID不能够创建区块链(这需要知晓用户密码短语302),并且本身无法启用复制经编程的启用变换的加密电路100的函数(这需要第二用户112知晓变换密钥306,变换密钥306可能是经编程的启用变换的加密电路100无法访问或不可见的)。但是,ChainID函数确实能够容易地识别区块链。

因此,信息层次结构300可以使创建区块链、与之交互并对其进行识别的能力分开。例如,仅知晓变换密钥306但不知晓用户密码短语302的人不能创建区块链,但可以识别和验证区块链。这种验证可以是工作证明系统的基础,例如比特币挖掘,尽管本公开内容不限于此。

图4示出了根据实施例的信息层次结构的管理方法400的流程图。示出了方法400,其从上述最受限制到最不受限制的受控操作进行布置。

在402处,方法400最初可以确定用户是否知晓用户密码短语302。如果知晓,则在404处,可以向用户授予对信息层次结构300的完全控制,因此,该用户等同于如上所述的第一用户110。例如,可以向这种用户提供创建新的唯一信息流(诸如区块链)的能力。例如,用户可以通过定制对变换函数的编程以及使用启用变换的加密电路100创建区块链块头部来继续创建信息流。头部可以包括字段,该字段指示将用于相应消息内容的特定验证方法。

如果用户不知晓用户密码短语302,则方法400可以进行到406。在406处,该方法可以确定用户是否知晓变换密钥306。如果知晓,则可以在408处向用户授予对启用变换的加密电路100的其它实例或副本进行编程的进一步特权。编程可以在制造过程中或在其之后进行。

如果用户不知晓变换密钥306,则方法400可以进行到410。在410处,方法400可以确定用户是否至少具有经编程的启用变换的加密电路100以处理已经根据本公开内容中描述的技术而创建的信息流。如果是这样,则在412处,方法400可以处理预定的测试输入消息202以产生用作ChainID的预定输出值214。ChainID可以指示输入消息源自的特定信息流,例如区块链。该操作是可选的。

在414处,方法400可以使得能够处理来自信息流的其它输入消息。在一个实施例中,信息流是区块链,并且处理包括:通过计算定制变换的散列以进行后续比较来对区块链进行验证。如果用户不具有经编程的启用变换的加密电路100,则用户不能处理或识别已经根据本公开内容中描述的技术而创建的信息流。

除其它事项外,本发明人已经意识到,特定电路可以有利地确保启用变换的加密电路100的编程的安全。这样的特定电路可以使第一用户110能够向启用变换的加密电路100提供用户密码短语302的副本,用户密码短语用于生成用于加密电路100的唯一配置密钥108。类似地,在变换密钥306与配置密钥108不相同的那些情况下,电路能够从配置密钥108导出变换密钥306。

在任一种情况下,以隔离方式(例如以既不可从外部访问也无法从外部可见的方式)将变换密钥306存储在电路中用于使得能够实施前文描述的信息层次结构300的一部分。即,如果第一用户110在变换密钥306的生成期间或之后知晓变换密钥306,则该用户可以复制实现用于处理输入消息202的特定定制的启用变换的散列的电路(或可执行指令)。相反,如果第二用户112不知晓变换密钥306,而仅能够访问以隔离方式不可见地存储变换密钥306的电路,则该第二用户112可以处理输入消息,但是可能无法复制该电路。即,变换密钥306的不可见、不可访问和不可擦除的隔离存储防止了电路被“克隆”。输入消息202的处理可以包括:识别给定的信息流,以及例如通过电路或可执行指令,如前所述从信息流验证消息。

对信息层次结构300进行管理的基于硬件的实施不仅可以使不同的用户能够被授予信息层次结构300的不同级别的控制,还可以限制变换密钥306的可用性。例如,如果具有用户密码短语302的第一用户110想要生成变换密钥306,这并不一定意味着第一用户110想要实际知晓变换密钥306,或者甚至是知晓如何从用户密码短语302导出变换密钥306。第一用户110可能根本不想要能够确定变换密钥306。

相反,第一用户110可能只是希望创建仅生成并在内部安全存储(即以隔离方式存储)变换密钥306的硬件,以便能够由例如第二用户112进行输入消息处理和信息流识别。因此,控制了整个信息层次结构300的第一用户110甚至可能不需要知晓从用户密码短语302生成变换密钥306的特定方法。

类似地,特定电路可以更好地保护用户密码短语302,使得能够对整个信息层次结构300进行完全控制。即,第一用户110可以将用户密码短语302提供给启用变换的加密电路100,但是一旦配置密钥108和/或变换密钥306的导出已完成,该电路100就可以删除用户密码短语302,并且密钥值或多个值以不可消除和不可访问的方式存储在电路100之内。

先前通过引用并入的专利申请提供了关于可以在电路中存储信息的各种一次性可编程存储器技术的进一步细节。这些技术可以包括但不限于例如微熔丝、反熔丝、非易失性随机存取存储器,包括但不限于闪存或其它类型的非易失性存储器。通常,经由外部物理检查来确定这种存储器的每个元件的状态在意图上是非常困难或不可行的。

先前描述的定制式变换的消息散列过程的基于软件的实施方式也在本公开内容的范围内。但是,基于硬件的实施方式在操作期间可以更加免受监视。这样的监视的不期望的后果可以包括例如最终发现用户密码短语302、变换密钥306以及变换密钥生成304方法。

因此,基于用户密码短语302的保密性,硬件实现方式可以更好地的提供对信息流(例如,区块链)的受限创建的实施。基于变换密钥306的可用性,硬件实施方式还可以更好地提供对复制定制式变换的散列电路的受限能力的实施。因此,本公开内容提供了一种新颖的自包含内部编程电路方法,用于信息层次结构300的基于硬件的实施。

图5示出了根据实施例的内部编程集成电路102的功能图。集成电路102充当概念性的“店主”,该店主从商店的前台柜台处的顾客(例如,第一用户110)接收指令,然后执行顾客所要求的各种任务,但是在“幕后”或隔离于顾客视野之外进行。

在这种情况下,集成电路102可以经由前述的编程和配置接口104从第一用户110接收用户密码短语302的副本。编程和配置接口104可以充当“黑匣子”,其接受某些输入,但是仅输出确认并且不回送所提供的输入。即,编程和配置接口104不允许访问集成电路102的隔离的内部操作或对其不可见。

集成电路102然后可以根据嵌入在其电路中的变换密钥生成304方法来生成变换密钥306。在一些实施例中,第一用户110可能知晓变换密钥生成304方法,或者在其它实施例中,第一用户110可能不知晓变换密钥生成304方法。注意,变换密钥306可以与配置密钥108相同,或者可以如前所述从配置密钥108中导出。

集成电路102然后可以用不可消除和隐藏的方式存储所生成的变换密钥306,并删除其用户密码短语302的副本。在一个实施例中,变换密钥306存储在一次性可编程存储器502中,该可编程存储器可以包括微熔丝或反熔丝或各种类型的非易失性存储器的阵列。微熔丝通常是短路的,直到它们被有效地“吹”开(例如,使其变得不导电),通常是通过施加特定幅度和持续时间的电压脉冲来实现。相比之下,反熔丝通常是开路的,直到它们被有效地“燃烧”闭合(例如,使其导电),通常通过再次施加特定幅度和持续时间的电压脉冲来实现。这些状态更改可能不会导致容易看到的物理更改。

集成电路102可以向第一用户110提供确认504,以例如表示下列各项中的至少一项:用户密码短语302的接收、用户密码短语302的删除以及将变换密钥306存储到存储器502中的成功完成。因此,概念上的店主在以隔离方式定制了内部编程的集成电路102之后(例如,编程过程对任何顾客都是不可访问或不可见的)有效地将内部编程的集成电路102提供给顾客(例如,第一用户110)。

所提供的方法向第一用户110提供了以下优点:即仅在有限的时间内信任对用户密码短语302的硬件实现方式,因为一旦变换密钥306已经在内部生成并存储,则硬件实现方式将不存储用户密码短语302。此外,第一用户110知晓硬件实现方式相对安全地不受攻击。即,黑客可能能够拆解集成电路120以尝试确定变换密钥生成方法和可编程变换函数,但是系统的安全性不依赖于对任一个的知晓。

克隆集成电路102所需的实际变换密钥306(从现在删除的用户密码短语302生成并存储在一次性可编程存储器502中)的恢复经由物理检查通常是不可行的。此外,黑客可能必须在每次入侵尝试时破坏编程集成电路102的新副本,这将很快变得成本高昂。

利用当前的半导体制造工艺,对于生产小于28nm特征尺寸的逻辑器件的工艺,目前尚不能将闪存与逻辑电路集成到同一集成电路中。因此,使用微熔丝或反熔丝可能是有利的,因为它们不受此工艺限制。可以用导致非常有限的性能开销的方式将微熔丝和反熔丝二者放置在集成电路内的数据路径电路中,从而保留了ASIC在速度和效率方面优于其它类型解决方案的优势。

根据各种实施例,一次性可编程存储器502的编程可以在集成电路102的制造期间执行,或者可以随后执行。该特征使得能够制造可以由第一用户110编程的“空白”或非定制的集成电路102,而无需制造商的任何授信。外部电路(未与集成电路102集成)可以被设计为生成并施加具有预定幅度和持续时间的编程电压脉冲,以便将数据存储到存储器502的元件中。在一些情况下,这样的编程电压高于逻辑电源电压,因此在一些实施例中,外部电路可以生成这样的电压,并且在被集成电路102触发施加这样的电压时将其施加。

集成电路102可以例如逐步通过要被编程的存储器502中的元件的索引阵列。当目标存储器元件已经电连接到从集成电路102的外部接收编程电压脉冲的外部引脚时,集成电路102可以向外部电路发信号。因此,即使在编程期间,传输密钥306在外部也不可见;在这样的实施例中,仅可以观察到一组内部触发的外部生成的编程脉冲。此外,可以改变这种触发信号的定时,以模糊这种观察。类似地,实际上未编程任何存储器元件的电压脉冲可被触发以进一步模糊编程过程。

图6示出了根据实施例的用于信息流管理的定制设备编程过程600的流程图。在602处,当编程用户(例如,第一用户110)将用户密码短语302的副本提供给编程和配置接口104时,该过程可以开始。编程和配置接口104可以提供其已经接收到用户密码短语302的确认,但是不回送用户密码短语的副本。

在604处,该过程可以确认用户密码短语的接收。在606处,该过程可以将用户密码短语302的副本传送到变换密钥生成器304。在608处,该过程可以利用变换密钥生成器304来生成变换密钥306。在一些实施例中,变换密钥生成器304通过将多个散列操作(例如,SHA-256散列函数的两次应用)顺序地应用于用户密码短语302来生成变换密钥306,但是本公开内容不限于此。在一些实施例中,配置密钥108是从用户密码短语302导出的,而变换密钥306是从配置密钥108导出的,但再一次的,本公开内容不限于此。

在610处,该过程可以删除用户密码短语302的副本。这确保了用户密码短语302无法被可以拆解实施信息流管理约束的设备的黑客恢复。删除可以由编程和配置接口104确认。

在612处,该过程可以将变换密钥306以不可消除和不可访问的方式存储到一次性可编程存储器502中。保持变换密钥306的保密性可以防止实施信息流管理约束的设备的复制。在614处,编程和配置接口104可以向编程用户110提供对定制编程过程已经成功完成的确认。

除其它事项外,本发明人已经意识到,可以改进特定电路,该特定电路可以有利地确保启用变换的加密电路100以隔离方式进行变换编程的安全。代替需要外部电路来提供用于改变一次性可编程存储器502的元件的状态的编程脉冲,在一些实施例中,ASIC可以替代地独自处理存储器502的所有编程任务。即,与将变换密钥306保持隐藏在存储器502中有关的所有永久性片上存储任务可以由执行前述各种密码功能的同一集成电路102来执行。

在实施例中,自主自编程集成电路102可以具有其自己的内部电路,用于将状态永久记录到永久片上存储单元中。例如,内部升压电荷泵电路可以与逻辑电路一起集成在同一半导体芯片上,以产生改变存储器502元件状态所需的电压。内部定时器电路也可以集成在同一半导体芯片上,以在预定的指定时间内将升压电压施加到所选择的存储器502元件。适用的升压和定时器电路是本领域普通技术人员所熟悉的。

仅这样的集成电路102就可以完全实现先前描述的概念性“店主”,其仅接受来自编程用户(例如,第一用户110)的用户密码短语。该实施例相对于先前描述的实施例提供了几个优点。

首先,将不需要在自编程集成电路102和用于存储器管理的任何外部(非通用集成)电路之间协调操作。具体而言,将不需要提供将从集成电路102外部的任何外部电路接收编程电压脉冲的外部引脚,也无需提供向任何外部电路提供触发信号的外部引脚。因此,可以减少集成电路102的引脚数量,从而降低电路成本和复杂度。

其次,在该实施例中不必公开编程电压脉冲幅度和持续时间的细节。如果公开的话,这样的细节可以使黑客能够推断出在集成电路102中使用了什么类型的一次性可编程存储器502元件。该信息可以有助于协助黑客入侵尝试。因此,本文描述的自主自编程集成电路102可以比其它可编程集成电路更安全。

最后,由于在该实施例中存储器编程不需要外部电路,因此整体系统的可靠性可以增加,因为集成电路102在其编程期间被损坏的可能性较小。对于在制造期间不对集成电路102进行编程但是替代地稍后可能在不太受控的环境中进行编程的实施例,该方面可能是特别有利的。

在用户对比制造商或供应商执行一次性可编程存储器502元件的编程的情况下,实际上可能归因于用户的电路故障可以代之以归咎于制造商或供应商。在这种情况下,用户可能返回集成电路102以进行退款,错误地声称这是到货即损。处理此类产品退货可能造成重大费用,并可能不必要地使制造商或供应商的声誉受到威胁。使用自主自编程可能会完全绕开此问题。

除其它事项外,本发明人已经意识到,可以自主地确保启用变换的加密电路100以隔离方式进行变换编程的安全的特定电路在各种各样的不同使用场景中可以证明是有效的。例如,在一个实施例中,自主自编程集成电路102可以将关于其制造后的历史的各种数据永久记录到一次性可编程存储器502中。集成电路102可以记录在其中将过大的电压施加到其一个或多个引脚的实例。

集成电路102还可以将与可靠性有关的其它数据记录到存储器502,包括但不限于最大感测的工作温度以及检测到的可能与黑客入侵尝试有关的损坏的指示。不管集成电路是否由外部电路编程,都可能发生此类事件,但是当涉及外部电路时,此类事件的可能性可能更大。因此,即使将集成电路102设计为使用内部电路对其变换密钥306进行编程,集成电路102可以使用内部电路来存储此类事件的索引。

如果集成电路102被退货(例如退给供应商或制造商以进行退款),则可以从一次性可编程存储器502中检索与制造后的历史有关的存储数据。例如,如果该数据表明在制造后未发生异常事件或与可靠性相关的情况,则该数据可以支持提供退款或更换的决定。相反,该数据可能表明制造后确实发生了异常且可能造成损坏的事件或状况。如果这些事件或状况很可能是由于用户的行为而造成的(例如可以由事件或状况的数量和/或模式所确定),则可以拒绝退款或更换请求。在一个实施例中,一次性可编程存储器502元件的数量可能是有限的,因此数据可以简单地指示满足一些预定阈值资格的事件计数。

通常,自主内部编程和将密码变换密钥隔离存储到一次性可编程存储器中的特征与历史电路上下文信息的存储相结合,可以有利地解决许多通信安全问题。例如,“重置重放”攻击可能涉及反复地重置系统的电源并继续进行先前的攻击,先前的攻击原本在被攻击的系统对攻击尝试的次数进行了计数并采取了对策以防止进一步攻击的情况下可能会被终止。例如,这样的对策可以包括删除存储在非易失性存储器中的数据,在一段时间内忽略所有将来的访问尝试,或者甚至是激活内部自毁机制以使其自身完全不可操作。如果受攻击的系统不“记得”先前受到攻击,则其安全性要比记得受到攻击并且可以相应地做出响应的系统更低。

因此,在一个实施例中,包括多个彼此通信的集成电路的产品可以使用能够管理其自己的芯片间通信安全的集成电路102。例如,集成电路102可以在第一次被激活时(例如,在制造它的晶圆厂处)将上下文信息存储到其一次性可编程存储器502中,并且可以随后将各种上下文信息存储到其一次性可编程存储器502中,从而此后即使在断电并重新启动时也可以记住其历史。上下文信息可以超出可能导致损坏的事件或状况的索引,例如包括与通信安全有关的加密数据。

在另一个实施例中,在集成电路102的第一次激活时可以根本没有存储任何上下文信息。而是集成电路102上搭载的基于真实噪声的随机数生成器可以生成多个密码密钥,这些密钥随后被用于确保芯片间通信的安全。因此,可以管理给定产品内的集成电路102之间的芯片间通信,就像管理不信任网络上的未知方之间的通信一样。

图7示出了具有很少或没有内部通信安全性的常规自主产品700。产品700可以包括平板电脑、移动电话、便携式计算机或基于芯片上系统(SOC)或处理器702的任何其它类型的设备。处理器702可以与其它组件一起安装在印刷电路板704上,并且可以与外部用户和过程(例如本地用户706、本地连接的过程708以及可以连接到远程数据库712的远程连接的过程710)交互。

各种接口可以处理处理器702与其它各方之间的通信,例如本地用户接口714、本地连接的过程接口716以及远程连接的过程接口718。远程通信芯片720可以处理远程连接的过程接口718与处理器702之间的数据传输。各种过程722可以由处理器702执行。

例如,大容量非电压存储设备724(诸如闪存集成电路)也可以驻留在印刷电路板704上,并与处理器702交换数据。其它集成电路726和728也可以安装在印刷电路板704上,并与处理器702交换数据。为了简单起见,本说明书中的术语“闪存”可以指任何可重新编程的非易失性存储器技术,并且不一定限于闪存器本身。

用于敏感数据的本地小容量闪存设备730也可以驻留在印刷电路板704上。通信链路732可以在小容量非易失性存储设备730和处理器702之间传输数据。如所指出的,非易失性存储设备730可以包括闪存器。

在一些常规实例中,可以在通向敏感数据闪存设备730的通信链路732的任一侧上采用某种形式的相对轻量级的加密。在一些情况下,处理器702的仅某些部分(有时被称为“安全区”或安全“沙盒”)可以为了敏感数据而访问闪存设备730。这种通信安全方法从根本上来说是有缺陷的,并且容易受到前文描述的“重置重放”攻击。提供了一种改进的方法,该方法使用了先前描述的启用变换的加密电路和一次性可编程存储器。

图8示出了根据实施例的具有安全的芯片间通信的自主产品800。该产品类似于常规产品700,但是增加了新颖的特征以显著提高通信安全性。处理器802可以包括第一安全通信电路块824,其可以作为所有片上通信826与过程822的中介,并且可以作为所有片外通信828与单独的集成电路830的中介,以实现敏感数据的安全非易失性存储。第一安全通信电路块824可以具有对其自己的一次性可编程存储器的排他性读/写访问,并且可以包括用于其编程的内部电路。

与本地小容量闪存设备730不同,集成电路830不仅可以在同一半导体芯片上包括非易失性存储块832,而且可以包括第二安全通信电路块834。第二安全通信电路块834可以作为所有片上通信与非易失性存储块832的中介,以及所有片外通信828与第一安全通信电路块824的中介。第二安全通信电路块834可以具有对其自己的一次性可编程存储器的排他性读/写访问,并且可以包括用于其编程的内部电路。

图9更详细地示出了根据实施例的自主产品处理器802。片上通信826可以包括从片上过程822到第一安全通信电路块824的消息902,以及从第一安全通信电路块824到片上过程822的消息904。第一安全通信电路块824中的传入通信电路块910可以处理片上通信826。

片外通信828可以包括从集成电路830内部的第一安全通信电路块824到第二安全通信电路块834的消息906,以及从第二安全通信电路块834到第一安全通信电路块824的消息908。第一安全通信电路块824中的传出通信电路块912可以处理片外通信828。

控制单元914可以包括协调第一安全通信块824的操作的电路。散列块916可以计算应用于输入的单向函数的结果。熔丝块918可以将数据存储到一次性可编程存储器中,该一次性可编程存储器可以包括微熔丝、反熔丝或其它非易失性存储器元件。如前所述,熔丝块918可以使用内部电路来生成编程脉冲。存储器块920可以存储用于管理通信安全性的数据。如将要描述的,与伪随机数相反,随机数生成器(RNG)922可以生成随机数。

图10更详细地示出了根据实施例的集成电路830。第二安全通信电路块834和非易失性存储块832之间的通信836可以包括从第二安全通信电路块834到非易失性存储块832的消息1024,以及从非易失性存储块832到第二安全通信电路块834的消息1026。

第二安全通信电路块834中的传入通信电路块1010可以处理片上通信836。第二安全通信电路块834中的传出通信电路块1012可以处理片外通信828。

控制单元1014可以包括协调第二安全通信电路块834的操作的电路,并且可以类似于第一安全通信块824的控制单元914。散列块1016、熔丝块1018、存储器块1020和随机数生成器1022也可以类似于它们在第一安全通信块824中的对应部分。

在图8-图10的实施例中,基于存储在安全通信块824和834的一次性可编程存储器中的加密密钥来用加密的方式保护处理器802和外部存储832之间的通信。可用于防止重置重放攻击的其它与安全有关的信息也可以存储在一次性可编程存储器中,因此在电源重置期间不会被清除。可以使用内部电路将数据存储在一次性可编程存储器中,因此一次性可编程存储器元件不可能通过外部手段被入侵。一次性可编程存储器中存储的数据以及单向函数中使用的数据对在处理器和外部非易失性存储单元之间传递的消息进行编码和验证。因此,与图7的产品700不同,处理器和外部非易失性存储单元之间的通信不能被简单地监视或用伪造的消息来代替。

尽管如果逻辑器件的尺寸小于28nm,则逻辑电路和闪存器目前不能集成在同一半导体芯片上,但是微熔丝和反熔丝可以集成在闪存器芯片上。因此,安全通信电路块能够既包括尺寸小于28nm的逻辑电路又包括具有微熔丝和/或反熔丝的一次性可编程存储元件。

图11示出了根据实施例的安全的芯片间通信方法1100的流程图。该方法可以由图8-图10中描述的电路来实现。尽管此处针对组装在单个印刷电路板上的单个产品中的不同集成电路进行了描述,但是该方法在此方面不受限制,并且可以应用于通过网络交互的完全不同的产品中的集成电路。

在1102处,该方法可以开始于安全通信电路块中的随机数生成器,例如,诸如第一安全通信电路块824中的RNG 922。与伪随机数生成器不同,伪随机数生成器生成看起来是随机的但实际上可由特定算法再现地预定的数字,示例性RNG针对该方法可以生成确实尽可能随机的数字。在一个实施例中,RNG可以放大来自电子设备(例如反向偏置二极管)的噪声,并将这种放大的噪声馈送到逻辑电路中以产生基本上随机的比特流。

RNG可以将此比特流收集到预定大小的寄存器中,以产生随机二进制数串。该寄存器可以例如驻留在存储器块920中。RNG还可以通过如前所述的单向函数或散列算法将该随机二进制数串放入,以进一步将随机二进制数串混杂成二进制形式且具有给定长度的输出随机数。单向函数可以例如在散列块916中实现。如果由于某种原因RNG输出全为0或全为1的二进制数串,则这种散列可能是有利的,这在某些情况下可以证明在加密上很弱。

由RNG生成的输出随机数可用于各种各样的与加密有关的目的。如前所述,输出随机数可以包括用于控制信息流的用户密码短语。输出随机数还可以包括只使用一次的数(nonce)或任意的单次使用的数,用于通过排除重放攻击的可能性来在通信方之间创建安全的通信会话。输出随机数也可以用作密码密钥。输出随机数也可以用作盐,其连接到用于各种目的的其它输出随机数上。

在1104处,例如,该方法可以将由RNG生成的输出随机数存储到安全通信电路块(例如熔丝块918)的一次性可编程存储器中。可以使用生成编程脉冲的内部电路将输出随机数编程到一次性可编程存储器元件中。因此,所存储的随机数可能在外部不可见或不可访问,但是仅可由例如相应的安全通信电路块(例如第一安全通信块824)使用。

在1106处,该方法可以向例如另一个安全通信电路块(例如第二安全通信块834)发送输出随机数中的至少一个。更一般而言,可以将输出随机数发送到任意数量的其它安全通信电路块,其它安全通信电路块可以包括例如其它产品中的那些电路。在1108处,该方法可以将发送的随机数存储到其它安全通信电路块的相应的一次性可编程存储器中。

在1110处,在一个实施例中,第一集成电路(例如第一安全通信电路块824)可以生成两个随机的公钥-私钥对集合。然后,第一集成电路可以使用其内部编程电路将私钥之一和两个公钥编程到其一次性可编程存储器中。然后,第一集成电路可以将另一个私钥和两个公钥发送到第二集成电路,例如第二安全通信电路块834。然后,第二集成电路可以使用其内部编程电路将其已接收的私钥和其已接收的两个公钥编程到其一次性可编程存储器中。

在第一集成电路和第二集成电路之间已经建立了信任之后,第一集成电路和第二集成电路之间的所有后续通信可以利用公钥-私钥函数来进行安全通信。上下文信息(例如,密码密钥)的初始存储和交换可以在制造特定产品800的工厂进行。例如,当首先利用其各种集成电路填充印刷电路板时,处理器可以触发该方法,并且安全的非易失性存储集成电路可以做出响应。然而,上下文信息的初始存储和交换也可以在以后发生,例如当新用户首次使用产品时。

在1112处,在另一个实施例中,该方法可以使用对称密钥来代替先前描述的公钥-私钥对。在另一个实施例中,该方法可以使用私钥-公钥对来交换随机生成的短期对称密钥(如当前在HTTPS协议中所做的那样),以便在不安全的网络上创建安全信道。因此,该方法是操作1110和1112的组合。

在1114处,在另一个实施例中,第一集成电路(例如第一安全通信电路块824)可以将授权请求连同随机数一起发送到第二集成电路(例如第二安全通信电路块834)作为初始质询。第二集成电路可以用初始质询、初始质询的经变换修改的散列以及作为第二质询的新的随机数来进行响应。第一集成电路可以用它从第二集成电路接收到的所有数据,加上第二质询的经变换修改的散列来进行响应。

在该示例中,初始质询以明文形式发送,但这无妨,因为双方都将使用该数字的经变换修改的散列作为分组密码。如先前所描述的,当首先用各种集成电路填充印刷电路板时,可以发生该安全通信初始化过程。在一个示例中,安全通信的初始建立可以经由直接布线发生,而随后的通信可以经由无线手段(包括光学手段)进行。此后也可以进行初始化。

尽管仅根据两个安全通信电路块进行了描述,但是该方法不限于此。该方法可以建立任何数量的集成电路的安全网络。在一个示例中,该方法可以将一个集成电路视为始终发起安全通信方法的主设备,并且可以将其它集成电路视为响应该发起请求但不发起此类请求的从设备,但是在这方面本公开内容不限于此。此外,该方法还可以在网络中构建产品的安全网络,例如,每个产品可能以前已经保护了其自己的内部网络。

所描述的安全通信方法可以使得能够处理信息流,该信息流可以包括区块链。

除其它事项外,本发明人已经认识到,经变换的散列计算器可以为每个ASIC实例创建唯一的通过密码定义且可验证的处理器标识符或“CpuID”。CpuID能够可靠地确定信息流或消息的特定硬件始发者。这与如前所述的ChainID用于可靠地表示特定信息流或网络目的地的示例性使用形成对比。

图12示出了根据实施例的用于计算密码安全以及可验证的唯一处理器标识符的方法1200的流程图。在一个示例中,ASIC可以处理256比特的预定输入消息202以产生散列206,然后通过可调整的或可定制编程的变换函数208来处理散列206,该变换函数208如前所述使用配置密钥108来生成经变换的散列210。ASIC可以通过第二散列块212来处理经变换的散列210,以产生输入消息214的经变换的散列的散列,其可以用作CpuID。

在本实施例中,区别在于在1202处,配置密钥108可以基于例如制造日期、晶圆批号、晶圆编号,晶圆上每个裸片的x和y(行/列)的坐标或索引,或者由晶圆厂在用户密码短语中提供的其它数据。在1204处,ASIC可以利用变换密钥生成器来生成变换密钥,并且如先前所描述的那样删除用户密码短语。在1206处,可以由制造ASIC的晶圆厂以隔离方式将每个ASIC的配置密钥108或从其导出的变换密钥存储到ASIC中的一次性可编程存储器中。

因此,每个ASIC实例可以仅通过处理预定输入消息202来在需要时在1208处生成唯一的CpuID。CpuID使得能够跨越不受信任的网络安全地和远程地标识给定的ASIC实例。预定输入消息202可以是公知的并且被广泛使用或者甚至是标准化的“标识自己”询问命令串,或者是定制的质询消息。

尽管所描述的ASIC可以用于高速地处理信息流,但是当其主要的感兴趣的功能是管理安全数据时,简化且因此便宜的版本可能就足够了。即,CpuID计算硬件可以是先前描述的更通用的经变换修改的OWF硬件的简化的相对较慢的版本。对于高速计算,它可能不需要在主数据路径中实现,从而实际上可以用作在密码方面非常安全的内部加密狗。也就是说,在1210处,ASIC可以计算CpuID以处理传入的消息,例如询问以证明其具有有效变换块,或者可以在传出消息中使用CpuID以识别哪个ASIC实例发起了该传出消息。

建立新信息流(例如区块链)的特定ASIC可被视为信息流的“作者”。类似地,可以将创建新消息(例如区块链条目)的特定ASIC标识为条目的“作者”。例如,用于处理区块链的ASIC可以被直接标识为执行工作的处理器,该工作是工作证明系统的基础。这不同于目前与比特币相关的做法,即识别声称已完成工作的人。

结果,在1212处,该特征使得能够监视哪些ASIC正在挖掘给定的区块链,以便例如支付由承包商向其发放处理器以执行针对该承包商的规定工作的合同矿工。类似地,如果未知人员正在使用未经授权的ASIC挖掘区块链,则可以经由CpuID特征进行入侵检测。由于没有传递用户密码短语,因此除非单向函数失败,否则不可能创建区块链的虚假克隆副本。这种可能性极不可能发生,因为单向函数始终会丢弃一些信息,并且只会留下一些看上去嘈杂但可验证的残留物。

CpuID计算器在消费电子产品中可能很有用。例如,可以在例如电话中使用ASIC,以便制造商或经销商可以出于跟踪目的将变换块刻录到每个此类设备中。此类设备可以链接到网络中的其它设备或帐户;例如,电话可以安全且可验证地链接到音乐分发系统中的许可证(许可证本身可以由特定的ChainID标识)。这种硬件级别的内部安全性可以实现许多不同的用途,本质上,在1214处,提供对存储卡或网络位置上的文件的系统管理员类型访问特权控制(例如,读/写/复制/删除)。例如,此特征对于由软件制造商/供应商(例如提供操作系统或防病毒程序的软件制造商/供应商)安全地管理许可的软件更新很有用。

除其它事项外,本发明人已经意识到,经变换的散列计算器可以用于验证密码ASIC的给定实例仍然有效,并且可以适当地处理输入消息。即,可以使用一些简单的计算和比较来验证ASIC的变换完整性。因此,为此目的,本公开内容提供了一种加密ASIC和方法,用于由晶圆厂或用户将唯一的内部标识符自主地以隔离方式存储到ASIC中的一次性可编程存储器中。唯一内部标识符可以包括前文描述的CpuID,或者用户密码短语、变换密钥或配置密钥,或者是正确处理输入消息所必需的这些值的各种组合。

图13示出了根据实施例的用于验证加密集成电路的变换完整性的方法1300的流程图。当上电时,在1302处,ASIC根据预定输入计算唯一内部标识符的值,并且在1304处,将计算出的标识符值与所存储的内部标识符值进行比较。计算出的内部标识符值与所存储的内部标识符值之间的匹配表示所存储的内部标识符值是有效的,因为偶然地计算出正确的值就密码方面来说是不可行的。在这种情况下,在1306处,验证ASIC变换完整性,并且可以进行正常操作。

但是,不匹配表示所存储的内部标识符值无效或尚未存储,因为尚未对ASIC进行编程。在后一种情况下,在1308处,ASIC可以发出一条错误消息,指示其需要被编程,并且正常操作将被暂停以允许进行此类编程。然而,由于一次性可编程存储器组件自然老化,或者因为所存储的内部标识符值已被改变(可能是由于静电放电造成的损坏或黑客未经授权的访问尝试),因此在1310处也可能发生不匹配。在任何一种情况下,不匹配表示ASIC将无法正确地处理输入消息,因此需要可用的纠正步骤。

通常,应禁用被证明无法正确地计算给定变换值的经编程的ASIC,以使其无法初始化也不会错误地处理消息,并且应提供错误消息。但是,本发明人已经认识到,所存储的内部标识符值的单个副本与计算出的内部标识符值匹配的失败并不一定会使ASIC遭受这一结果。在一个实施例中,在1312处,ASIC可以代之以将计算出的内部标识符值与所存储的内部标识符值的另一副本或多个副本进行比较,并且忽略所存储的内部标识符的不可靠副本。

在1314处,ASIC还可以在投票方案中比较所存储的标识符的多个副本,以确定它们的有效性。例如,如果三个所存储的标识符值中的两个与计算出的标识符值彼此匹配,则以下是合理的指示:即与计算出的标识符值不匹配的第三存储的标识符值是无效的并且应该被忽略。该特征可以帮助使购买者确信:只要存储的内部标识符值的经确认的良好副本在其一次性可编程存储单元中是可用的,ASIC就将会很有用。因此,可以将ASIC的经确认的有效寿命延长到远远超过所存储的内部标识符的单个副本的使用寿命。当存储的内部标识符的最后确认的良好副本不存在时,ASIC可以在启动时返回错误值,这表明ASIC被无可救药地损坏了,从而停止启动过程。

如本文中所使用的,术语“集合”可以指代元素的任何集合,无论是有限的还是无限的。术语“子集”可以指元素的任何集合,其中元素取自父集;子集可以是整个父集。术语“适当的子集”指的是与父集相比包含较少元素的子集。术语“序列”可以指有序集合或子集。术语“小于”、“小于或等于”、“大于”和“大于或等于”在本文中可用于描述有序集合或序列的各种对象或成员之间的关系;这些术语将被理解为是指适用于正被排序的对象的任何适当的排序关系。

术语“工具”可用于指代被配置为执行所阐述功能的任何装置。例如,工具可以包括一个或多个组件的集合,并且还可以包括硬件、软件或它们的组合。因此,例如,工具可以是一个或多个软件组件、硬件组件、软件/硬件组件或其任何组合或排列的集合。作为另一个示例,工具可以是在其上运行软件或在其中实现硬件的计算设备或其它设备。

如本文中所使用的,术语“组件”可以描述可以根据本文所公开的技术的一个或多个实施例执行的给定功能单元。如本文中所使用的,组件可以利用任何形式的硬件、软件或其组合来实现。例如,可以实现一个或多个处理器、控制器、ASIC、可编程逻辑阵列(PLA)、可编程阵列逻辑(PAL)、复杂可编程逻辑器件(CPLD)、FPGA、逻辑组件、软件例程或其它机制来组成组件。可以使用传统的手动方法来设计或者可以使用各种工具(例如计算机辅助设计(CAD)程序、硬件描述语言(例如VHDL或AHDL)或者PLD编程语言)以电子的方式来设计、捕捉、模拟或归档硬件逻辑单元,硬件逻辑单元包括与实现本文先前所述功能的全部或部分的可编程逻辑器件(PLD)一起使用的可编程逻辑单元。硬件逻辑单元也可以由存储指令的非暂时性计算机可读介质生成,指令在由处理器执行时在电子设计自动化(EDA)软件中管理半导体组件、单元、组件库或单元库的参数,以生成集成电路的可制造设计。在实现中,本文描述的各种组件可以被实现为分立的组件,或者所描述的功能和特征可以在一个或多个组件之间部分或全部共享。换句话说,对于本领域的普通技术人员来说,在阅读本说明书之后将显而易见的是,本文描述的各种特征和功能可以在任何给定的应用中实现,并且可以用各种组合和排列的形式在一个或多个单独的或共享的组件中实现。即使功能的各种特征或元素可以被单独描述或要求保护为单独的组件,本领域的普通技术人员将理解的是,这些特征和功能可以在一个或多个通用软件和硬件元件之间共享,并且这种描述不应要求或意指使用单独的硬件或软件组件来实现这样的特征或功能。

在使用软件全部或部分地实现该技术的组件或一些组件的情况下,在一个实施例中,这些软件元素可以被实现为与能够执行针对其描述的功能的计算或处理组件一起操作。一个这样的示例计算组件如图14所示。根据该示例计算组件1400描述了各种实施例。在阅读本说明书之后,对于相关领域的技术人员而言,如何使用其它计算组件或架构来实现该技术将变得显而易见。

图14示出了根据实施例的可以执行本文描述的功能的计算组件。计算组件1400可以表示例如在桌面式计算机、膝上型计算机和笔记本计算机、手持式计算设备(个人数字助理(PDA)、智能电话、蜂窝电话、掌上电脑等)、大型机、超级计算机、工作站或服务器,或者对于给定的应用或环境来说可能是理想的或适当的任何其它类型的专用计算设备中发现的计算或处理能力。计算组件1400也可以表示嵌入在给定设备内或以其它方式由给定设备可用的计算能力。例如,可能在其它电子设备中找到计算组件,这些电子设备例如是,诸如数码相机、导航系统、蜂窝电话、便携式计算设备、调制解调器、路由器、无线应用协议(WAP)、终端以及可能包括某种形式的处理能力的其它电子设备。

计算组件1400可以包括例如一个或多个处理器、控制器、控制组件或其它处理设备,例如处理器1404。例如,可以使用诸如微处理器、控制器或其它控制逻辑单元之类的专用处理引擎来实现处理器1404。在所示出的示例中,处理器1404连接到总线1402,尽管任何通信介质都可以用来促进与计算组件1400的其它组件的交互或进行外部通信。

计算组件1400还可能包括一个或多个存储器组件,在本文中被简称为主存储器1408。例如,随机存取存储器(RAM)或其它动态存储器可用于存储将由处理器1404执行的信息和指令。主存储器1408还可用于在将由处理器1404执行的指令的执行期间存储临时变量或其它中间信息。计算组件1400可能同样包括耦合至总线1402的只读存储器(ROM)或其它静态存储设备,用于存储用于处理器1404的静态信息和指令。

计算组件1400还可包括一种或多种各种形式的信息存储机制1410,其可以包括例如介质驱动器1412和存储单元接口1420。介质驱动器1412可以包括驱动器或用于支持固定或可移动存储介质1414的其它机制。例如,可以提供硬盘驱动器、软盘驱动器、磁带驱动器、光盘驱动器、光碟(CD)或数字多功能盘(DVD)驱动器(只读或读/写)或者其它可移动或固定介质驱动器。因此,存储介质1414可以包括例如硬盘、软盘、磁带、盒式磁带、光盘、CD或DVD,或者由介质驱动器1412读取、写入或访问的其它固定或可移动介质。如这些示例所示,存储介质1414可以包括其中存储有计算机软件或数据的计算机可用存储介质。

在替代实施例中,信息存储机制1410可以包括用于允许将计算机程序或其它指令或数据加载到计算组件1400中的其它类似手段。这样的手段可以包括例如固定或可移动存储单元1422和接口1420。这种存储单元1422和接口1420的示例可以包括程序盒和盒接口、可移动存储器(例如,闪存器或其它可移动存储器组件)和存储器插槽、个人计算机存储卡国际协会(PCMCIA)插槽和卡、其它固定或可移动存储单元1422和接口1420,它们允许软件和数据从存储单元1422传输到计算组件1400。

计算组件1400还可以包括通信接口1424。通信接口1424可以用于允许软件和数据在计算组件1400和外部设备之间传输。通信接口1424的示例可以包括调制解调器或软调制解调器、网络接口(例如以太网、网络接口卡、WiMedia、IEEE 802.XX或其它接口)、通信端口(例如,诸如USB端口、IR端口、RS232端口、

在该文件中,术语“计算机程序介质”和“计算机可用介质”通常用于指代例如存储器1408、存储单元1420、介质1414和信道1428之类的介质。这些和其它各种形式的计算机程序介质或计算机可用介质可涉及将一个或多个指令的一个或多个序列传送到处理设备用于执行。包含在介质上的此类指令通常被称为“计算机程序代码”或“计算机程序产品”(可以用计算机程序或其它群组的形式进行成组)。当执行时,这样的指令可以使计算组件1400能够执行本文所讨论的公开技术的特征或功能。

尽管上文已经描述了所公开的技术的各种实施例,但是应当理解,它们仅以示例的方式给出,而不是限制性的。同样,各种图可以描绘用于所公开技术的示例架构或其它配置,其被完成以帮助理解可以被包括在所公开技术中的特征和功能。所公开的技术不限于所示出的示例架构或配置,而是可以使用各种替代架构和配置来实现期望的特征。实际上,对于本领域的技术人员将显而易见的是,可以如何实现替代的功能、逻辑或物理划分和配置以实现本文公开的技术的期望特征。另外,可以将本文描述的名称以外的许多不同的组成部件名称应用于各种分区。另外,对于流程图、操作说明和方法权利要求,除非上下文另外指出,否则本文中呈现的步骤的顺序不应强制要求所实现的各种实施例以相同的顺序执行所列举的功能。

尽管以上根据各种示例性实施例和实施方式描述了所公开的技术,但应当理解的是,在一个或多个单独实施例中描述的各个特征、方面和功能的适用性不限于描述它们所使用的特定实施例,而是替代地可以单独或以各种组合的形式将其应用于所公开技术的一个或多个其它实施例,无论是否描述了这样的实施例以及是否将这样的特征呈现为所描述的实施例的一部分。因此,本文所公开的技术的广度和范围不应受到任何上述示例性实施例的限制。

除非另有明确说明,否则本文档中使用的术语和短语及其变体应解释为开放的而非限制性的。作为前述内容的示例:术语“包括”应被解读为意指“包括但不限于”等;术语“示例”用于提供所讨论项目的示例性实例,而不是其详尽或限制性的列表;术语“一”或“一个”应被解读为意指“至少一个”、“一个或多个”等;并且诸如“常规”、“传统”、“正常”、“标准”、“已知”之类的形容词和类似含义的术语不应被解释为将所描述的项限制为给定的时间段或限制为在给定的时间可用的项,而是应替代地被解读为涵盖现在或将来任何时候都可获得或可知的常规、传统、正常或标准的技术。同样地,在本文档提及对本领域普通技术人员而言显而易见或已知的技术的情况下,此类技术涵盖现在或将来任何时候对于本领域技术人员而言显而易见或已知的技术。

在一些情况下,出现宽泛的单词和短语(例如“一个或多个”,“至少”,“但不限于”或其它类似的短语)不应被解读为意指在可能没有这种扩大范围的用语的情况下意图或要求使用狭义的情况。术语“组件”的使用并不意味着所描述或所要求保护的组件或作为组件的一部分的功能全都配置在通用的包中。实际上,组件的任何或所有各种组件,无论是控制逻辑单元还是其它组件,都可以组合在单个包中或分别维护,并且可以进一步分布在多个组或包中或跨越多个位置。

另外,根据示例性框图、流程图和其它图示描述了本文阐述的各种实施例。在阅读本文档之后,对于本领域的普通技术人员将变得显而易见的是,可以在不限于所示出的示例的情况下实现所示出的实施例及其各种替代方案。例如,框图及其随附的描述不应被解释为强制要求特定的架构或配置。

提供了本公开内容的摘要以使得读者能够快速认定技术公开内容的本质。基于其将不会被用来解释或限制权利要求的范围或含义的理解来提交摘要。此外,在前文的具体实施方式中,可以看到:出于精简本公开内容的目的,在单个实施例中将各个特征组合在一起。本公开内容的方法不应该被解释为反映了以下意图,即:所要求保护的实施例需要比明确陈述于每一项权利要求中的更多的特征。而是如同后面的权利要求所反映的,发明主题在于少于单个所公开的实施例的所有特征。因此在每项权利要求自身作为单独实施例的前提下,在此将后面的权利要求并入具体实施方式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号