买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】包括电路编码变换函数的加密ASIC_布洛克钱恩阿西克斯有限责任公司_201780006769.6 

申请/专利权人:布洛克钱恩阿西克斯有限责任公司

申请日:2017-01-13

公开(公告)日:2020-03-03

公开(公告)号:CN108885675B

主分类号:G06F21/72(20060101)

分类号:G06F21/72(20060101);H04L9/12(20060101);H04L9/16(20060101)

优先权:["20160115 US 14/997,113"]

专利状态码:有效-专利权人的姓名或者名称、地址的变更

法律状态:2020.03.27#专利权人的姓名或者名称、地址的变更;2020.03.03#授权;2019.02.01#实质审查的生效;2018.11.23#公开

摘要:提供了用于在加密工作证明系统中使用的启用变换的集成电路。启用变换的集成电路包括嵌在启用变换的集成电路的加密数据路径内的其它电路部件当中的变换块。变换块可以在集成电路的制造之后的时间被配置以具体化为多个数学变换函数中的任一个的电路,因而使用户能够系统性地修改由集成电路执行的加密操作的结果,同时保持专用集成电路的高性能和效率特性。本文公开的技术的实施例在工作证明验证系统例如私有区块链系统、公共区块链系统、数字版权管理、安全令牌和其它加密相关领域内的专用集成电路的部署中提供到此为止不可达到的水平的灵活性。

主权项:1.一种加密集成电路,包括:可编程变换块,其包括集成到所述加密集成电路的数据路径电路中的电子电路,并且所述可编程变换块在制造所述加密集成电路之后是能够被编程的,以对作为从所述可编程变换块的上游的数据路径电路接收到的区块链交易块首部的输入数据执行变换操作,并且将经变换的输入数据传递到所述可编程变换块的下游的数据路径电路;编程电路,其将所述可编程变换块和配置接口通信地耦合,以根据用户输入通过所述配置接口对所述可编程变换块编程,使得根据配置密钥来配置所述可编程变换块;散列块,其被配置为将散列算法应用于所述经变换的输入数据以输出经散列的经变换的输入数据,所述散列算法是根据由工作证明协议规定的加密标准而确定的;以及额外的电路,其对所述经散列的经变换的输入数据进行处理,以产生至少一个候选区块链交易块首部,所述至少一个候选区块链交易块首部在被验证时选择性地授权正交区块链创建和区块链交易验证中的至少一个。

全文数据:包括电路编码变换函数的加密ASIC技术领域[0001]所公开的技术总体上涉及集成电子电路的设计,并且更具体地一些实施例涉及加密集成电路的设计。背景技术[0002]专用集成电路ASIC是被设计和构建成服务于特定的目的或应用的集成电路。与较慢的、更一般化的解决方案例如在通用处理器或现场可编程门阵列FPGA上运行的软件解决方案相比较,ASIC提供快速的计算速度。如名称所暗示的,ASIC通常被设计成只执行一个特定的应用,从而导致在灵活性和计算速度之间的折衷。ASIC在加密相关的领域例如工作证明系统、数字版权管理系统和通常具有严格的速度和效率要求的其它应用)中的重要性增加。附图说明[0003]根据一个或多个各种实施例,参考下面的附图详细描述了本文公开的技术。附图仅为了说明的目的而被提供且仅描绘所公开的技术的一般或示例性实施例。这些附图被提供来便于读者对所公开的技术的理解,且不应被认为是对其广度、范围或可应用性的限制。应注意,为了说明的清楚和容易,这些附图不一定按比例绘制。[0004]图1示出了示例性加密处理系统,本文公开的技术的实施例可以在该加密处理系统内实施。[0005]图2示出了根据本文公开的技术的实施例的并包含位于沿着集成电路数据路径的点之一处的可编程变换块的示例性启用变换的集成电路,集成电路数据路径被设想为本文公开的技术的部分。[0006]图3示出了根据本文公开的技术的实施例的并包含位于沿着集成电路数据路径的不同点处的可编程变换块的示例性启用变换的集成电路,集成电路数据路径被设想为本文公开的技术的部分。[0007]图4示出了根据本文公开的技术的实施例的并包含都位于沿着集成电路数据路径的点处的两个可编程变换块的示例性启用变换的集成电路,集成电路数据路径被设想为本文公开的技术的部分。[0008]图5A示出了根据本文公开的技术的实施例的在对变换函数进行编码之前的示例性可编程变换块配置。[0009]图5B示出了根据本文公开的技术的实施例的根据二进制密钥进行编码的示例性可编程变换块。[0010]图6示出了根据本文公开的技术的实施例的示例性函数编码过程。[0011]图7示出了根据本文公开的技术的实施例的实施具有多个加密处理核心的加密集成电路的基本加密处理系统的方框图。[0012]图8示出了根据本文公开的技术的实施例的具有多个加密处理核心的示例性启用变换的集成电路。[0013]图9示出了根据本文公开的技术的实施例的具有多个加密处理核心的另一示例性启用变换的集成电路,每个加密处理核心包括有可编程变换块。[0014]图10示出了根据本文公开的技术的实施例的示例性双重目的启用变换的集成电路。[0015]图11示出了可以在实施所公开的技术的实施例的各种特征时使用的示例性计算部件。[0016]图12示出了包含一个启用变换的加密散列核心和一个配置密钥的启用变换的加密结果验证器的示例。[0017]图13示出了包含两个单独的启用变换的加密散列核心和两个单独的配置密钥的启用变换的加密结果验证器的示例。[0018]附图并不旨在是穷举性的或将本发明限制为所公开的精确形式。应理解,本发明可以在有修改和变更的情况下实践,并且所公开的技术仅由权利要求及其等效形式限制。具体实施方式[0019]根据所公开的技术的各种实施例,提供了集成电路以用于在基于工作证明的加密验证过程中使用,包括但不限于常常在区块链技术的新兴领域中使用的加密网络交易验证系统。集成电路包括实施加密函数通常是难以反转的加密单向函数OWF,例如安全散列算法)的电路的一个或多个块。由一个或多个用户选择并被具体化为数据路径电路的块的一个或多个变换函数被放置在集成电路数据路径上在实施上面所述的加密函数的电路的至少一个块之前的一点处。实施变换函数的电路的每个块可以由用户通过提供配置密钥例如由一串二进制数字组成的密钥来编程。这样的密钥接着被具体化为变换块内的数据路径电路。[0020]在这样的编程之后,变换块内的电路将实现特定编程变换,特定编程变换反映沿着集成电路数据路径由用户对它从在其之前的电路接收的数据编程的密钥,并且将所变换的数据沿着数据路径传递到另一电路上。因此且不考虑由变换块接收的数据的内容,其应用的变换将直接且一致地影响由电路进一步沿着数据路径计算的最终值,包括实施上面所述的加密函数的电路的一个或多个块或块。[0021]由于变换与所涉及的加密算法的数学特性的交互作用,特别是它们的作为难以恢复的OWF的性质此处以及在本文档中的其它点处,术语例如“难”和“易”可以在计算复杂性理论、特别是多项式时间理论的意义上被理解),组合的效果是产生被包含在由电路计算的最终值中的位的系统性变换,其不容易被译解,不容易与噪声区分开,并且不容易由缺乏用户的一个或多个密钥的完全先验知识的一方复制,但然而是完全一致的并且能够由具有密钥的先验知识或甚至在缺乏它们的知识时对在计算中利用它们的手段的访问的一方例如拥有被编程为将密钥具体化在其数据路径电路内的ASIC的一方容易复制且因而可验证。[0022]常常在区块链技术的领域中使用的在工作证明计算内应用上述内容使在其部署的灵活性中的极大扩展成为可能。特别地,其使用户能够实际上创建几乎无限数量的正交区块链。任何这样的区块链可以是完全不同的并与任何其它区块链分离,因为其由对工作证明问题的唯一组的有效解决方案表征,然而所有这样的区块链关于每个块对前一块的加密参考在内部是完全一致的,并且完全可以展示给访问被配置为在给定区块链的加密框架内操作的ASIC的任一方。[0023]因此,本文所述的技术的各种实施例使专用于区块链操作的网络交易验证的新一代ASIC的创建成为可能,区块链操作能够验证在几乎无限数量的不同和完全正交的公共或私人区块链上的交易。这样的区块链可以在彼此的紧邻区域中并在多个或相同的网络上安全地操作。[0024]另外,提供本文所述的技术的各种实施方式,其描述各种方法以将一个或多个变换函数密钥具体化为集成电路内的数据路径电路,以便导致非常有限的性能开销,因而保持ASIC从速度和效率方面来说优于其它类型的解决方案的核心优点。[0025]此外,提供各种方法以进一步保护被具体化为集成电路内的数据路径电路的一个或多个密钥。这样的方法没有限制地包括:防止经由集成电路的输入和输出的分析来发现一个或多个密钥的各种方法;在用户可以对变换函数编程的配置接口和将变换具体化为电路的一个或多个块之间的连接电路中使用一个或多个锁定熔丝;使用多部分密钥;使用多个变换函数;使用只可以在集成电路的制造过程期间被访问的变换函数;以及其它等等。[0026]根据结合附图理解的下面的具体实施方式中,所公开的技术的其它特征和方面将变得明显,附图通过示例的方式示出了根据所公开的技术的实施例的特征。[0027]工作证明验证系统是在解决复杂的计算问题时不是为了所得出的答案的任何内在值而是为了这样的答案的证明价值而预测的一类验证系统,假定在产生这样的结果时扩展相当大量的计算工作。因此名称。工作证明验证系统具有遍及各种现代计算系统没有限制地包括:用于制止拒绝服务(SoS网络攻击的系统;用于防止不需要的商业电子邮件spam的系统;以及用于其它应用的系统)的应用。[0028]工作证明验证在其操作中的一个这样的其它使用是作为区块链技术的新兴领域的基础的加密网络交易验证过程。区块链技术包括使分散的不可信交易系统成为可能的各种基础技术,例如支持加密货币的那些技术,最广为人知的加密货币是比特币。[0029]作为提供上下文本文所述的技术的一些实施方式可以在该上下文内操作)的一种手段,在进入每个图示的描述内之前简要讨论区块链系统如何操作是有用的。[0030]区块链是时间顺序的不可编辑的记录的列表,其识别从初始交易块其可以被称为起源块的时间开始到目前的系统内的所有过去的交易。包含涉及在网络内出现但不被包括在以前附加到区块链的任何交易块中的一个或几个有效的交易的详细信息的交易块连续附加到区块链的末端。[0031]每个交易块由一个或几个独特的块首部识别,块首部包含对被包括在交易块内的所有交易的引用以及其它相关信息。作为示例,对并入到交易块内的各种交易的引用可以借助于Merkle-Damgtod结构或通过其它手段并入到交易块首部内。[0032]交易块首部和被包含在它们内的信息是区块链的主要组织原理。例如并且除了其它项目以外,交易块首部可以包含对区块链中的紧接着前面的有效交易块的交易块首部的加密可验证的引用。因此这样的引用将所有邻近的块加密地链接在一起,每个交易块链接到每个交易块。这导致所有块以与一组物理链链接将每个块连接到来自物理链的前一块非常相同的方式组织成块的单个不间断的链或区块链。[0033]如前所述的,哪个交易块附加到区块链的末端可以通过工作证明系统来识别。还如前所述的,这样的工作证明系统可以基于加密OWF。OWF有时被称为加密散列操作。在区块链技术的领域内,它们有时可以被称为散列操作。[0034]在区块链技术的领域内,通常在交易块首部上而不是在交易本身上执行工作证明验证过程。为了这个原因,虽然工作证明过程被执行,一个交易块可以由很多交易块首部引用,即使最终它们中的压倒性的多数将被丢弃。因此任何组的交易由大量交易块首部提及是完全正常的,所有交易块首部根据协议正确地被构造且所有交易块首部包含真实和准确的信息,然而所有交易块首部彼此之间有细微不同。[0035]这样的交易块首部有时被称为候选交易块首部。对于多个候选交易块首部而言是大的是完全正常的,特别是如果尚性能ASIC被涉及的情况下。例如,单个尚性能ASIC可以每秒组装、散列、评估和丢弃几千亿候选交易块首部。[0036]通常,候选交易块首部将接受一个或几个散列操作,并且因而产生的散列值将为了有效性而与某个预先存在的标准相比较。在比特币的情况下,所使用的特定散列操作碰巧是安全散列算法SHA的第2版本的256比特版本的两个随后的应用,如由国家技术标准研究所NIST所定义的。这有时被称为SHA-256,并且它的两个连续应用有时被称为双SHA-256。为了简单,其有时也可以被称为双SHA。然而,值得注意的是,这仅仅是碰巧在比特币的情况下使用的特定算法;其它区块链可以并确实使用其它算法。类似地,本文所述的技术的各种实施例可以使用在区块链技术的领域内的各种不同算法,而其它实施例适用于于除了区块链技术以外的领域。[0037]如在工作证明验证系统的其它使用中常见的,候选结果与有效性标准的比较确定进一步的处理。如果候选交易块首部未能通过有效性标准,则其被丢弃且系统继续移动到处理下一候选交易块首部。如果候选交易块首部通过有效性标准,则其被认为是有效交易块首部。[0038]当找到有效交易块首部时,执行一系列其它操作。在区块链技术的领域内,这样的操作通常在有效交易块首部附加到区块链的末端时连同其引用的交易块一起达到极点。也可能出现其它操作,例如将报酬分配到首先报告有效交易块首部的发现的一方。随后,对新的有效交易块首部的搜索重新开始并且该过程重复。[0039]上文通常描述区块链技术的领域的某些方面,特别是与区块链的性质、用于将新交易块附加到其的过程、交易块首部的作用和组成、工作证明过程的操作以及其它等等有关的一些方面。然而,存在未描述的区块链技术的很多其它方面。作为示例且没有限制地,上文不描述可以被特征化为这个过程的另一半的东西,也就是说,产生交易的过程,其与分组和处理交易的过程相反。通常,更详细描述的区块链技术的方面是与本文所述的技术最有密切关系的技术和在这个领域中使用的加密集成电路内的它的一些应用,而通常由在通用微处理器上运行的软件执行的或在其它情况下与本文所述的技术较没有密切关系的方面较不详细地描述或根本不被描述。[0040]支持区块链的所有方面的操作的管理原理由常常被称为区块链协议的协议限定。这包括在上面更详细描述的那些方面。相反,区块链协议被设计为满足区块链被设计服务于的特定应用的特定需要,如由协议设计者或设计者解释的。这样的要求可以从一种情况到另一情况完全不同,并且因此不是所有区块链协议都需要是相同的。实际上,一些区块链协议可以明显改变。[0041]管理作为比特币的基础的区块链的操作的区块链协议有时简单地被称为比特币协议。比特币协议是在术语的狭窄意义上的有潜力的工作;我们现在称为区块链技术的大部分如果不是全部是基于从一个程度到另一程度的比特币协议的衍生工作。[0042]每个区块链由区块链网络维持,区块链网络在区块链技术的领域中有时简单地被称为网络。本质上,区块链网络的定义是直接的;硬件和软件的集合通过实施由协议限定的策略来维持区块链。实际上,区块链网络可能是复杂的。它们是永久或间歇地连接到网络的各种设备的分布式异构组合,其运行由各种人在不同的时间写的不同软件,执行不同的操作并在可信系统内一起工作。一些区块链网络可能是扩展的,并且采用明显先进的技术,包括复杂的加密ASIC。[0043]通常,用于解决在区块链系统中涉及的在计算上密集的工作证明计算的技术已在近年来快速发展。例如在比特币交易的情况下,最初利用在通用处理器上运行的软件应用来进行在发现有效交易块首部时涉及的工作证明过程。然而,速度和效率在工作证明系统包括在区块链系统的上下文内使用的那些系统)中是最重要的。因此,比特币挖掘操作移向专用硬件解决方案包括ASICJSIC提供从精细级速度产生的速度和效率的深远增加,计算可以以该精细级速度来进行。如名称暗示的,ASIC被设计和制造成执行一个特定的应用,在这种情况下是在实施特定的加密协议时涉及的数学操作。[0044]比特币网络的成功证明了区块链技术的安全性质。因此,在其它相关领域中使用区块链已随着时间获得兴趣。然而,ASIC被设计为狭窄地匹配协议的特定元件,它们将在该协议内被实施,特别是描述由协议限定的工作证明系统的细节的协议的元件。对于比特币网络,每个ASIC被设计为在极大速度下组装块首部,如由比特币协议描述的,使它们受到安全散列算法SHA-256协议的256比特版本的两个连续实例,并最后通过比较它与预先确定的有效性测试来检查因而产生的256位二进制散列的有效性,有效性测试在比特币协议的情况下被具体化为难度水平,如前面讨论的。[0045]这限制灵活性和使区块链技术在比特币网络本身或从一个程度到另一程度基于它的或在它上“链接”的网络之外激增的机会,因为高性能工作证明实施方式通常需要ASIC的使用,并且当代ASIC只能够实施一个高度特定的工作证明系统。而且,由于工作证明过程的性质,依赖于由比特币为其本身的工作证明过程使用的同一工作证明系统的任何私有区块链可能容易受到第三方干扰,第三方使用被设计为解决由比特币协议限定的工作证明系统的在市场上可买到的设备。[0046]本文公开的技术的实施例目的在于加密相关应用的专用集成电路的设计、制造和利用。更特别地,本文所述的技术的各种实施例涉及具有被具体化为并入到集成电路的高速数据路径内的电路的一个或几个可编程变换函数的ASIC。通过将变换函数编码为数据路径电路,本文所公开的技术的实施例使ASIC能够实施如由用户选择的各种工作证明系统中的任一个。[0047]这进而使区块链系统能够安全地操作,甚至在特别设计为解决在区块链交易的加密网络交易验证中涉及的工作证明计算的大量其它ASIC包括但不限于在其它情况下可能威胁未并入本文公开的技术的基于区块链的系统的安全性或整体性的比特币挖掘ASIC存在的情况下。[0048]因此,本文所述的技术的实施例使为提供当前难以想象的水平的灵活性和安全性的区块链应用特别设计的整个新一代ASIC的创建成为可能。此外,本文所述的技术的实施方式进一步允许这样的灵活性被实现,以处理性能中的几乎可忽略的成本作为回报。[0049]在详细讨论本公开的技术的实施例之前,讨论围绕在由利用为这个应用设计的ASIC的系统进行的区块链交易的网络交易验证中涉及的工作证明操作的处理的总工作流是有帮助的。[0050]图1示出了通常用于区块链应用和并入为这个应用设计的集成电路103的一般类型的加密网络交易验证系统100的示例,本文公开的技术的实施例可以在该应用内实施。[0051]为了便于讨论,将关于比特币协议和支持比特币区块链的网络描述示例性加密处理系统100的元件和总操作。尽管以这种方式进行描述,阅读本公开的普通技术人员将认识至IJ,示例性加密网络交易验证系统100适用于除了比特币网络以外的使用。[0052]其它应用的示例可以包括用于除了一般与比特币相关联的那些应用以外的应用的私有和公共区块链两者。除了与区块链技术可用于的比特币相关联的那些应用以外的应用的一些示例没有限制地包括:银行间结算系统;数字版权管理系统;物理特性版权注册系统;智能特性注册系统;库存控制系统;履行系统;包装跟踪系统;薪金名册系统;安全识别系统;基金使用跟踪和透明系统;通常会计系统;通常支付系统;通常注册系统;通常金融系统;以及其它等等。[0053]示例性加密网络交易验证系统100包括集成电路103。在各种实施例中,集成电路103可以包括一个或多个处理部件,包括配置接口104、交易块首部调帧器105、缓冲器106、加密散列核心107、评估器111和决策引擎112。在一些实施例中,一个或多个部件可以组合到单个集成电路中,如图1中所示的,其中在集成电路103内表示的所有部件在物理上都是同一集成电路的部分也就是说,都被精巧地制作在同一片硅内)。在其它实施例中,它们中的一些可以由硅的不同片精巧地制作并借助于连接电路组合在一起。关于示例性加密处理系统100详细讨论了每个部件。[0054]用户101可以通过配置接口104来配置一个或多个集成电路参数。可以由用户101配置的集成电路参数的非限制性示例包括:初始化;内部时钟速度;或与其它联网系统的通信的模式;以及其它。在一些实施例中,用户101可以是经由终端与集成电路103通信的人。在其它实施例中,用户101可以是在系统或网络上运行的自动过程。在各种实施例中,配置接口104也可由用户101使用来监控集成电路103的操作特性。可被监控并提供给用户101的操作特性的非限制性示例可以包括:电流活动;操作温度;操作电压;或故障状态;连同其它。[0055]由交易块首部调帧器105使用由调帧器本身产生的数据和从交易和系统数据102b得到的数据的组合来组装随后由集成电路103处理的每个候选交易块首部。在各种实施例中,交易和系统数据l〇2b由现有过程、挖掘软件102a编译。在很多情况下,挖掘软件102a是在通用处理器上运行并经由到公共互联网的连接与区块链网络的其余部分通信的一件软件,其利用该软件来编译交易和系统数据l〇2b。[0056]区块链系统的总架构的某些品质,特别是在系统的不同方面之间的良好设计的区分提供在集成电路103的操作和关于挖掘软件102a的操作的细节之间的有效隔离。作为结果,关于挖掘软件的操作的大部分细节包括它在物理上存在于哪里、它使用什么过程来与网络的其余部分通信、它使用什么过程来将网络数据编译成交易和系统数据l〇2b以及其它等等对集成电路103的操作是透明的。类似地,挖掘软件102a连接到的网络是否碰巧是比特币网络或负责不同区块链的维护的不同网络对集成电路103和本文所述的技术的各种实施例也是透明的。[0057]交易和系统数据102b可以包括例如:系统日期和时间;协议版本;表示被包括在交易块中的这组单独交易的Merkle-结构;附加到区块链的最近块的唯一标识符;以及其它。当接收到交易和系统数据l〇2b时,交易块首部调帧器105对其进行进一步精心制作,以便产生一个或多个候选交易块首部。[0058]在各种实施例中,交易块首部调帧器105可以解析交易和系统数据102b并向它添加某些其它元件例如顺序计数器),以便产生一系列交易块首部,其都有效地被形成且都适当地表示同一集合的交易,但都稍微不同于彼此。[0059]在各种实施例中,交易块首部调帧器105可以产生交易块交易块首部其全部准确地表示如从交易和系统数据102b接收的交易块但都稍微不同于彼此)的速率可能很快,在每秒几十亿或几千亿单独候选交易块首部的范围内。根据实施方式,缓冲器106可以存储所创建的候选交易块首部,候选交易块首部等待由散列核心107进行处理。[0060]每个集成电路103可以包含一个或多个散列核心或其它加密处理核心。为了简单,示出了包括单个散列核心107的示例性加密处理系统100。在各种实施例中,可以实施多个并行的散列或其它加密处理核心,如图7所示。散列核心107包括一个或多个散列块。在图1所示的示例中,散列核心107包括两个散列块108、110。散列块可以被配置为执行由可应用的散列标准定义的数学操作的一组电路。在各种实施例中,散列核心107可以具体化公共散列标准,例如安全散列算法(SHA。在一些实施例中,可以使用SHA的256位版本例如SHA-256。在其它实施例中,散列核心107可以包括单个散列块。各种实施例可以包括多于两个散列块。[0061]在图1的所示实施例中,每个散列块108、110被设计为根据SHA-256标准来执行一序列数学操作。散列核心107根据所实施的交易标准来处理每个候选交易块首部。在一些实施例中,第一散列块108可以接受由交易块首部调帧器105产生的候选交易块首部作为输入,并使它们受到由标准散列算法定义的数学操作。第一散列块108为它从交易块首部调帧器105接收的每个候选交易块首部输出第一散列值109。每个第一散列值109与充当一种类型的“数字签名”的给定候选交易块首部相关。在各种实施例中,第一散列值109可以进一步由第二散列块110处理。这是双重散列操作例如在比特币网络内利用的操作的表示。在一些实施例中,第二散列块110可以实施与第一散列块108相同的加密操作。在各种实施例中,第二散列块110可以实施与第一加密散列块108不同的加密操作。[0062]散列核心107的输出与预先存在的标准相比较以用于识别有效块。在各种实施例中,散列核心107的输出可以是来自第二散列块110的输出。集成电路103的评估器111为每个候选交易块首部采用由散列核心107输出的最终散列值,并检查以查看所处理的输出是否满足预先确定的有效性标准。在比特币网络的特定情况下,有效性标准由由最终散列输出产生的256位数字的数值可能未超过的某个数值常常被称为难度水平表示,如果它被考虑为有效的。因此如果数值或最终散列超过难度水平任何数量,候选交易块首部未通过有效性测试,并且如果它不超过难度水平,则它通过有效性测试。在除了与比特币网络相关联的区块链系统以外的区块链系统中,一些实施例可以采用用于确定有效性的相同标准,而其它实施例可以使用用于确定有效性的不同标准。[0063]如果评估器111确定最终散列值不满足有效性标准,则决策引擎112可以丢弃与由评估器111评估的经处理的输出相关联的候选交易块首部。如果评估器111确定最终散列值不满足有效性标准,则决策引擎112将在外部经由传输到成功报告接收方113a的成功报告113b来报告那个事实。成功报告113b连同与其相关的其它信息(例如与其和其它项目相关的交易块首部一起是系统作为整体被设计为产生的加密工作证明。[0064]在各种实施例中,成功报告接收方113b可以与挖掘软件102a相同。在其它实施例中,成功报告接收方113b可以是与挖掘软件102a不同的过程。当接收到成功报告113b时,成功报告接收方113b可以采用多个随后的动作。在各种实施例中,这样的动作通常涉及有效交易块首部的发现到网络的其余部分的通信,并且通常在新交易块附加到区块链的末端和交易的下一有效块的搜索开始的情况下达到极点。在比特币网络的特定情况下,这样的动作可以此外包括其它方面,例如将报酬分配到第三方以报告新的有效交易块首部的发现以及其它等等。[0065]然而且如对关于挖掘软件102a的操作的在先描述的情况,值得注意的是,成功报告接收方113b的确切性质和关于它在成功报告113a的接收之后可以或可以不采取什么动作的细节对本文所述的技术的各种实施例是透明的。类似地,成功报告接收方113b是否与和作为比特币的基础的区块链的维护相关的网络或与不同区块链的维护相关的网络通信对本文所述的技术的一些实施例是透明的。[0066]针对关于示例性实施方式所述的区块链技术的基本工作流,将关于图1的示例性加密处理系统100来讨论本文所公开的技术的实施例。为了便于讨论,将关于比特币和与其相关的区块链实施方式来讨论实施例。然而如上面讨论的,阅读这个描述的本领域中的普通技术人员将认识到,本文所述的实施例可以应用于很多其它相关领域。[0067]图2示出了根据本文公开的技术的实施例的示例性启用变换的集成电路203。示例性启用变换的集成电路203在加密处理系统200内实施,类似于关于图1所述的系统100。启用变换的集成电路203可以包括配置接口204、交易块首部调帧器205、缓冲器206、加密处理核心207、评估器211和决策引擎212,类似于上面关于图1的集成电路103所讨论的部件。[0068]如前面讨论的,本文公开的技术的实施例安排被具体化为在集成电路203的加密数据路径内的电路的变换函数。在图2中所示的示例中,启用变换的集成电路203的加密处理核心207包括两个散列块208、210和可编程变换块215。散列块208、210可以被实施为包括散列或其它加密函数例如电路以根据SHA-256标准执行散列过程。[0069]在所示示例中,可编程变换块215是电子电路的块,其被特别设计为适合于直接集成到高性能加密集成电路的线速度数据路径内,但然而保持能够被编程为在集成电路数据路径上对它从在它之前的电路接收的输入数据执行大范围的可能的数学变换操作中的任一个,并在集成电路数据路径上以全线速度将因而产生的已变换数据输出到在它之后的电路。[0070]在一些实施例例如图2所示的实施例)中,可编程变换块215集成到加密处理核心207的数据路径中。ASIC在这个示例中被配置为使得在加密处理核心207内的所有部件都沿着单个高速数据路径布置,在数据路径的任一端处有单个输入点和单个输出点,并且没有对在包括加密处理核心207的部件之间移动的信号的外部访问。[0071]可编程变换块215集成到加密处理核心207中的高速数据路径内允许加密处理核心207在线速度下操作,并且因此当与不包括可编程信息块215的加密处理核心比较时,电路作为整体遭受性能的非常小的降级。这通过将变换函数具体化为数据路径电路(即,可编程变换块215以将在下面更详细公开的方式来实现。[0072]类似地,将在加密处理核心207内的电路布置到统一数据路径中保护配置密钥214关于图5A、5B和6更详细地讨论不被检测。加密处理核心207包含在任一端处的单个输入点和单个输出点,且没有对在包括加密处理核心207的部件之间移动的信号的外部访问。因此,通过比较由沿着数据路径布置的不同部件产生的输入和输出来保护加密处理核心207内的电路例如可编程变换块215不受可编程变换块215内具体化的配置密钥214的披露或发现。[0073]在图2中所示的示例性实施例的特定情况下,加密处理核心207内的数据路径被布置成使得由加密处理核心207处理的所有数据的单个输入点是第一散列块208。从那里,数据例如交易块首部沿着它采用的数据路径继续前进,通过可编程变换块215并接着通过第二散列块210。第二散列块210是单个输出点,且随后数据离开加密处理核心207并继续前进到评估器211。将可编程变换块215放置在至少一个散列块之前(在这个示例中,在散列块210之前经由分析技术来保护在可编程变换块215中具体化的配置密钥214的发现。例如,这样的放置通过被已知在受到特定组的加密过程例如双SHA-256散列时产生某个结果的数据的插入并接着比较由启用变换的加密处理核心207产生的结果以推断配置密钥214来保护配置密钥214的发现。[0074]在如将在下面关于图3更详细讨论的其它实施例中,可编程变换块215可以放置在第一散列块208之前,使得加密处理核心207的单个输入点是可编程变换块215。[0075]在各种实施例中,可编程变换块215可以在启用变换的集成电路203的制造之后的时间被编程以由于它在集成电路203的数据路径上的位置而对以线速度流经它的数据一致地执行各种可能的数学变换中的任一个。[0076]在一些实施例中,机制(可编程变换块215能够通过该机制接受并保持这样的编程可以是经由一种类型的非易失性只读存储器NVRAM,包括但不限于闪存或其它类型的非易失性存储器。在各种实施例中,配置可编程变换块215的手段可以是经由一次性可编程OTP电路部件,包括但不限于微型熔丝或其它类型的OTP电路布局。通常在集成电路制造的简单方面例如在制造期间将制造信息写到集成电路上或补救在测试期间识别的有故障的存储器组时利用微型熔丝。为了便于讨论,将参考包括微型熔丝的可编程变换块215来讨论本公开的技术,微型熔丝将关于图5和6更详细地被讨论。[0077]启用变换的集成电路203的各种实施例可以借助于配置密钥214来使配置可编程变换块215成为可能。在各种实施例中,配置密钥214可以由通过配置接口204动作的用户201编码到可编程变换块215内。在这样的实施例中,本文公开的技术设想为了将配置密钥214编码到可编程变换块215内的目的而潜在地承担用户201的作用的几个不同方。这样的方可以包括例如:在工厂处由IC制造商;由一个或几个最终用户;或由上述项的某种组合。[0078]在用户201是单个方的一些实施例中,用户201可以提供配置密钥214,其规定什么变换应被应用于包括由可编程变换块215接收的数据的每个位。例如,在为256位系统设计可编程变换块215的情况下,用户201可输入规定可编程变换块215将什么变换(如果有的话应用于所接收的数据的所有256位的配置密钥214。因此,那一方将有对可编程变换块215能够被配置为使用256位密钥来执行的2~256个数学操作中的任一个编程的自由。[0079]类似地且继续上面的256位示例,在用户201包括一方或多方的实施例中,可编程变换块215的配置可以由一个或多个用户201中的每个执行,每个用户贡献配置密钥214的一部分。这样的方案有时可以被称为多密钥方案,且因而产生的密钥有时可以被称为多部分密钥。在一些实施例中,一个或多个用户201中的每个可配置可编程变换块215可将什么变换如果有的话应用于它接收的数据的位的子集,而在其它实施例中,一个或多个用户中的每个可贡献部分密钥,其随后以不允许任一个用户确定可编程变换块215可以将什么变换如果有的话应用于它接收的数据的任一个或多个特定位的方式被处理成密钥。[0080]在本文所述的技术的各种实施例(其中可编程变换块215放置在实施加密OWF例如第二散列块210,其实现图示中的标准加密算法的电路的至少一个块前面)中,可编程变换块215和所涉及的加密算法的某些数学特性的交互作用的组合效应、特别是作为难以恢复在这里术语“难”和“易”可以在计算复杂度理论、特别是多项式时间理论的意义上被理解)的OWF的它们的性质产生某些特定的结果。特别地,组合效应是,甚至由可编程变换块215引起的轻微变化例如单一位变化也将导致在由散列核心207计算的最终值中包含的位的大规模变换,其不容易被译解,不容易与噪声区分开,并且不容易由缺乏配置密钥214的完全的先验知识和可编程变换块215的设计的特定方面的一方可以复制,但然而是完全一致的且由具有这样的知识或对在计算中利用它们的手段的访问同时缺乏它们的知识的一方例如拥有同一ASIC或并入本文所述的技术并被编程到在它的数据路径电路内的同一配置密钥214的另一ASIC的一方可容易复制和因而可验证。[0081]在先前段落中概述的本文所述的技术的应用的效果在区块链技术的领域内有用处,区块链技术使跨越多个不同领域的各种创新和有价值的应用成为可能。这样的应用在前面被简要说明且将不在下面进一步讨论。[0082]在一些实施例中,可编程变换块215可以被配置为使最终用户能够对各种变换方案例如调换在某些特定位的输入和输出内的位置同时保持其它位不变的调换方案编程。在各种实施例中,可编程变换块215可以被配置为执行直接位反转变换方案,其中一些位反转而其它位保持不变。[0083]为了便于讨论,将关于直接位反转变换方案讨论本公开的技术,其中256位配置密钥204借助于下面的代码来确定什么变换将应用于由可编程变换块215接收的256位中的每个:在包含“0”的值的256位配置密钥将以一种方式例如保持不变被处理的位置处接收的位,而在256位配置密钥包含“Γ的值的位置处接收的位将以不同的方式(例如反转被处理。在描述中关于图5A、5B和6更详细讨论了这样的变换。[0084]在由第二散列块210产生最终散列值之后,由图2中的评估器211和决策引擎212执行的评估过程类似于关于图1所述的过程。在该过程中的第一步骤是评估器211将确定由特定交易块首部产生的最终散列值是否满足有效性标准。[0085]如果最终散列值不满足有效性标准如在大部分情况下通常是情况是这样),最终散列值和产生它的交易块首部都将被丢弃。如果最终散列值满足有效性标准,则最终散列值和产生最终散列值的交易块首部将传递到决策引擎212。在接收到成功的指示之后,决策引擎212可以接着向成功报告接收方213a发出成功报告213b。此外且也关于图1讨论的,成功报告接收方213a可以或可以不与挖掘软件202a相同。[0086]不同的是,可编程变换块215的包含物、其由用户使用某个配置密钥214随后编程的、以及因而产生的经变换数据与第二散列核心210的交互作用可以引起最终散列值的变化,其由散列核心203为由交易块首部调帧器205产生并传递到评估器211的一个或多于一个交易块首部。此外且如前面讨论的,这样的变化具有某些独特和有用的数学特性。假定评估器的任务是比较从散列核心203接收的散列值与某个预定有效性标准以及在那个基础上评估散列值是否通过或未通过有效性测试,由此可见,由评估器211接收的散列值的变化可以导致评估器关于所接收的散列值的有效性或非有效性做出的变化。[0087]进一步假定在发现以满足有效性标准的散列值的形式的工作证明时预测工作证明系统的操作,此外假定加密网络交易验证系统的操作在工作证明系统上被预测,此外假定在加密网络交易验证系统上预测通过将新块附加到区块链的末端来构造区块链,以及此外假定由变换函数引入的变换是完全一致的且容易可以复制,即使它们在外部观察者看来与噪声不可区别,则由此可见,如果在整个区块链网络中一致地被施加,在配置密钥241中的然而轻微的变化将导致区块链系统的操作的系统性变化。[0088]因此,本文公开的技术的某些实施例允许多个正交区块链的创建,每个正交区块链根据每个用户201选择来应用于可编程变换块215的配置密钥214将有效性分配到完全不同的一组交易块首部。[0089]在各种实施例中,可以有一个或几个零配置密钥214值,其如果被编程到可编程变换块215中则将使可编程变换块215不造成在穿过它的信息中的变化,并且因此使可编程变换块215的存在不造成最终散列值的变化,其由加密处理核心207为从交易块首部调帧器205接收的每个交易首部块计算并继续传递到评估器211。在一些实施例中,零配置密钥可以由与配置密钥的长度相同的长度的一串零表示,配置密钥在某些实施例中在长度上可以是256位。[0090]在并入一个或几个零密钥的各种实施例中,使用零密钥对可编程变换函数编程的总体效应使得被评估器考虑为有效的这组交易块首部散列将不改变,使来自加密处理核心的输出变得与关于图1讨论的来自散列核心107的输出在功能上相同。也就是说,并入本文所述的技术并用零密钥编程的启用变换的集成电路将在产生与未并入本文所述的技术的集成电路时表现得好,且因此适合于在相同的工作系统的上下文内执行工作证明计算,包括但不限于比特币交易的加密网络交易验证也被称为比特币挖掘)。本文所述的技术的这个方面具有商业应用,因为它使并入本公开所述的技术的实施例的集成电路的使用能够对挖掘比特币的目的是有用的以及对各种其它应用是有用的。[0091]在这样的实施例中以及在未并入零配置密钥的数字的其它实施例中,具有不同于零配置密钥的配置密钥214的可编程变换块215的编程将引起最终散列值的变化,其由加密处理核心207为由交易块首部调帧器205产生的每个候选交易首部块计算并继续传递到评估器211。这又引起所有候选交易块首部的什么子集被评估器211认为是有效的且因此进一步传递到决策块212的变化,其然后以成功报告213b的形式在集成电路203的外部被传递。[0092]此外且如上所述,由于可编程变换函数215与OWF的某些数学函数例如大部分标准现代加密散列函数的交互作用,在加密散列函数的输入中的任何变化包括单个数字)引起不容易与噪声区分开的因而产生的散列值的大规模变化。[0093]如上面提到的,在一些实施例中,可编程变换块215可以放置在第一散列块之前,使得加密处理核心的单个输入点是可编程变换块。在图3中示出此的一个这样的示例。现在参考图3,在这个示例性布置中,由可编程变换块315具体化的变换函数在任何散列操作由散列块308、310应用之前应用于交易块首部。虽然位于图3的示例性实施例中的不同位置上,在数据路径内的可编程变换块315的位置仍然满足它放置在至少一个散列块之前在那种情况下,它放置在第一散列块308和第二散列块310前面的条件。因此,由图3所示的实施例在功能上类似于图2所示的实施例,并经由分析技术提供相同的基本性质一一例如关于它产生的结果的特性和关于它提供的保护以不被具体化在可编程变换块315内的配置密钥314发现,如上所述。[0094]在一些实施例中,单个集成电路可以并入多于一个可编程变换块215。图4示出了这样的示例性启用变换的集成电路400。在这样的情况下,实施例被实施为给多于一个用户提供对整个配置密钥编程的能力。[0095]这样的实施例实施与级联密码和多签名方案共享相同的特性但与这两者不同的过程。特别地,级联密码涉及密码的连续应用的使用,也就是说,对数据加密使得它在稍后的时间可以被译解、即再次变得易读的过程。如在图4中所示的本文所述的技术的各种实施例并入类似的级联概念,即连续地应用加密操作但不涉及任何种类的密码的使用。更确切地,它们涉及连续应用变换和OWF例如加密散列过程KOWF不同于密码连同其它方面,因为它们的定义特性是它们是不可译的而不是可破译的。类似地,如在图4中所示的本文所述的技术的各种实施例在它们的最终产品中是一串字符,其表示什么可以被认为是应用于数字文档的多个数字签名。然而,任何种类的数字签名的定义特性是它们可以由不同于签名者的一方或保持签名者的密钥的一方生效。那不是本文所述的技术的各种实施例的情况,实施例在那个上下文中可以被认为是可以只由签名者验证的签名。此外,多签名方案常常设计成使得每个签名不同于其它签名,并可以单独地被验证。那再次不是本文所述的技术的各种实施例的情况,实施例特别设计成使得没有一个原始签名者能够在其他签名者不存在的情况下使签名生效。[0096]因此,本文所述的技术的各种实施例不同于级联密码、数字多签名方案和其它存在的加密技术。虽然由于它的新颖性而缺乏公共名称,这样的系统可以被描述为多密钥级联变换的单向函数系统。[0097]在一些实施例中,其中被具体化为在至少第二散列块410中的电路的加密散列算法可以是已证明的标准加密散列算法,没有限制地包括:在它各种实施方式中的SHA-2;在它的各种实施方式中的KeccakSHA-3;在它的各种实施方式中的Skein;在它们的各种实施方式中的Gr0stl;在它的各种实施方式中的JH;以及其它等等,或是非标准散列算法,其尽管是非标准的,但仍然是难以反转的OWF其中术语“难”在多项式时间理论的意义上被理解)。在这样的实施例中,如在图4中所示的本文所述的技术使安全多密钥变换的单向函数系统的实施方式成为可能,如前所述。[0098]在一些实施例中,第一可编程变换块418和第二可编程变换块415可以由在长度上是256位的第一配置密钥417和第二配置密钥417编程,而在其它实施例中,一个或两个配置密钥可以具有不同的长度,这取决于实施方式的细节。[0099]在也如在图4中所示的、本文所述的技术的各种实施例中,可以被称为主要权威的第一方可以使用配置接口404来将可以被称为主要密钥的第一配置密钥417编程到第一变换块418内,第一变换块418可以被称为主要变换。单独地,可以被称为次要权威的第二方可以使用配置接口404来将可以被称为次要密钥的第二配置密钥414编程到第二可编程变换块415内,第二可编程变换块415可以被称为次要变换。[0100]在也由图4所示的、本文所述的某些实施例中,主要权威和次要权威中的一个或两个可以由几个不同的方组成。在一些这样的实施例中,主要方作为整体可以将主要密钥编程为多部分密钥,而次要方作为整体可以将次要密钥编程为多部分密钥。在其它实施例中,任一或两个密钥都可以由主要和次要方联合地配置为多部分密钥。在某些实施例中,由主要方、次要方或这两者编程的密钥可以是零密钥。在其它实施例中,第一和第二可编程变换块418、415可以由用户401通过配置接口404输入的单个配置密钥编程。[0101]在未在图4中所示的、本文所述的技术的其它实施例中,过程可以通常是类似的,除了由主要权威使用的配置接口可以不同于由次要权威使用的配置接口以外。在一些这样的实施例中,由主要权威使用的配置接口可以被创建为以在集成电路的制造过程期间是可访问的但在因而产生的完成的部分中是不可访问的,而由次要权威使用的配置接口可以被构成为在制造过程期间和在因而产生的完成的部分中都是可访问的。在本文所述的其它实施例中,每个配置接口的相对可访问性或不可访问性都可以不同地被构成。[0102]在本文所述但未在图4中示出的技术的一些实施例中,该过程可以通常类似于在图4中所示的过程,除了设计可以并入多于两个散列循环或多于两个可编程变换函数或这两者以外。[0103]图5A示出根据本文公开的技术的实施例的在被编码之前的示例性可编程变换块515的配置。可编程变换块515包括定义由配置密钥514在图5B中示出)表示的变换函数的几组可编程电路。在各种实施例中,可编程变换块515可以被配置为使多个变换操作之一成为可能,由此,输入数据的一个或多个位例如lal、lbl等用输入数据的另一位调换以产生修改的输出数据例如5aI、5b1等)。在其它实施例中,可编程变换块515可以被配置为使多个直接位反转或位翻转操作之一成为可能,由此,输入数据的一个或多个位翻转以产生修改的输出数据。[0104]可以实施利用如本文所述的直接位反转变换方案的各种实施例以利用下面的事实:256位二进制配置密钥提供简洁的手段来使对由可编程变换函数215提供的全部密钥空间的访问成为可能。也就是说,256位是使用户能够规定在256个不同变换当中的哪个将由可编程变换函数215对第一散列值209执行所必须的最小长度。使用直接位反转变换方案也可以使最小数量的新电路元件的使用能够将变换函数具体化为数据路径电路。这是重要的,因为变换函数被具体化为数据路径电路的事实意味着放置在数据路径上的任何额外电路将在线速度下操作并导致启用变换的集成电路203作为整体的性能的总体降级。[0105]在各种实施例中,可编程变换块215的配置可以将少至单个NOT门添加到启用变换的集成电路的数据路径电路。通过比较,每个散列块可以根据它们的设计的细节来包含大约4,000个门。因此,可编程变换块515可以将非常适度的128个门(假设256位密钥添加到以前包含大约8,000个门(假设双SHA-256散列过程的加密数据路径。因此,在各种实施例中由可编程变换块515引入的性能的降级可能是非常有限的,到这种程度,使得实际上其它因素使性能的差异不显著到难以准确地量化隔离的程度。[0106]直接位反转变换方案也可以提供简单的手段以通过简单地将256位配置中的所有值设置为零来禁用可编程变换块215的所有效应。这样的密钥可以被称为零密钥。这的一个结果是它简化了配置启用变换的集成电路203的过程,使得它以与不并入可编程变换函数215的可以比较的集成电路的方式不可区分的方式操作。此的实际结果是,并入本文所述的技术的集成电路可以容易配置为以与标准比特币挖掘ASIC相同的方式操作,且可以用于挖掘比特币而没有特别的难度不包括和除了能够以由不并入本文所述的技术的比特币挖掘ASIC可复制的方式操作以外)。[0107]为了便于讨论,将针对直接位反转配置来讨论图5B和6。[0108]在图5B中示出了可编程变换块的编码。示例性可编程变换块520被示为根据配置密钥514来编码。为了指示具体化在可编程变换块520内的配置密钥514,阴影框用于指示微型熔丝被禁用(阻止数据流经禁用的微型熔丝)。例如,在所示示例中,当微型熔丝3a2被禁用时,输入位la2流经未改变的可编程变换块520。当微型熔丝2b2被禁用时,输入位lb2在它流经可编程变换块520时由位翻转器4b2反转。[0109]图6示出了根据本文公开的技术的实施例的示例性函数编码过程。阶段1表示在未编码状态中的可编程变换块15,其类似于图5A的可编程变换块515。如所示的,为六位消息配置可编程变换块15。在其它实施例中,可以为任何长度例如256位长度的输入串配置可编程变换块15。[0110]在阶段2,可编程变换块15被编码,具体化如由用户提供的配置密钥14。如所示的,配置密钥14包括串“011000”。根据配置密钥14来禁用相应的微型熔丝,如由在可编程变换块15内的阴影框所示的。在阶段3,可以在可编程变换块15的编码之后禁用锁定熔丝,保护配置密钥14不被发现。锁定熔丝16可以布置在编程电路上,可编程变换块15可以由用户通过编程电路来编程。通过禁用锁定熔丝16,包括编程变换块15的加密处理核心返回到具有单个输入点和单个输出点,从而提供上面关于图2详细讨论的保护的类型。[0111]在各种实施例中,多个加密处理核心可以并行地被包括在同一集成电路内。图7是包括多个加密处理核心的基本加密处理系统700的方框图。集成电路703和相应的过程和部件类似于上面关于图1的基本系统设计讨论的那些。由交易块首部调帧器705产生的交易块首部可以按规定路线被发送到并行的多个加密处理核心707、708、709、710内。以这种方式,多个交易块首部可以并行地处理,从而增加系统的总速度。[0112]在实施多个加密处理核心的情况下,一些实施例可以实施可编程变换块以如上所讨论的提供产生独特区块链的能力。图8示出了根据本文公开的技术的实施例的具有多个加密处理核心的启用变换的集成电路803。启用变换的集成电路803类似于关于图7讨论的基本集成电路703。可编程变换块815放置在启用变换的集成电路803的数据路径电路内。虽然被描绘为在加密处理核心807、808、809、810之外,可编程变换块815实际上位于加密处理核心807、808、809、810的两个散列块之间。为了便于观看,在各种实施例中,可编程变换块815被示为在外部以说明同一配置密钥814可以具体化在加密处理核心807、808、809、810的每个内。在其它实施例中,每个加密处理核心可以具有它自己的编程电路,如图9所示。以这种方式,一个或多个用户901可以对一个或多个配置密钥914、91你、914:、9141编程。[0113]在各种实施例中,集成电路可以包括额外的非加密过程。图10示出了根据本文公开的技术的实施例的在处理系统1000内实施的示例性双重目的集成电路1006。双重目的集成电路1006包括加密部分,其包括加密处理核心1004。可以用与上面关于图2所述的加密处理核心207相似的方式配置加密处理核心1004。在图10中,用户1001可以经由通过配置接口1002输入的加密密钥1003来配置加密处理核心1004的可编程变换块。[0114]双重目的集成电路1006的通用目的部分1007可以包括为一般目的而设计的部件,例如设计成执行多种额外的功能(例如图形、音频、通信处理等)的中央处理单元或片上系统(SoC处理器。在一些实施例中备用的存储器单元也可以被包括在通用部分1007中以使换出有故障的存储器部件成为可能。在一些实施例中,通用部分1007可以具有其自身的接口1009,用户1008可以通过该接口1009配置通用部分1007的部件。此外在一些实施例中,用户1008可以将系统信息1010写到通用部分1007的永久存储器内。在各种实施例中,配置接口1002和接口1009可以是单组电路,且用户1001和用户1008可以是同一实体。双向通信链路1005可以将加密处理核心1004连接到通用部分1007,使CPU或SoC能够发送任务以由加密处理核心1004执行,并接收计算的结果。集成电路1006可以与本地资源1011和外部资源1012交互作用。内部资源1011可以是但不限于用户1001或1008、本地存储器或在本地与双重目的集成电路1006—起运行的软件应用。外部资源1012可以包括外部存储器或网络内的其它节点,集成电路1006连接在其它节点上。[0115]偶尔地,双重目的集成电路1006可以例如通过不安全的无线或有线连接而连接到在不可信网络中的其它节点。在一些实施例中,通用部分1007可以被配置为进行几个过程,其设计成根据本文提出的技术通过不可信网络安全地识别包含变换块的集成电路。串发生器1013可以访问由用户1008写到集成电路1006内的系统信息1010,并组合这样的系统信息1010与交易信息,例如关于图1讨论的交易和系统数据l〇2b。串发生器1013可以接着将数据发送到消息发生器1014。[0116]消息发生器1014可以通过双向通信链路1005将数据发送到加密处理核心1004。以这种方式,可以处理数据以产生变换编码串,加密处理核心1004可以将该变换编码串发送回到消息发生器1014。消息发生器1014可以接着产生网络消息1015。网络消息1015可以包括由串发生器1013输出的初始数据。在各种实施例中,额外的信息可以被包括在网络消息1015中,包括但不限于:系统日期和时间;以前接收的外部消息;或变换编码串;连同其它。网络消息1015然后被发送到IO部件1016。在各种实施例中,IO部件1016可以包括本地通信协议、外部通信协议或其组合。[0117]现在参考图12,示出了什么可以被称为启用变换的加密结果验证器的图示。该图示示出了本文所述的技术的实施方式,其中集成电路1203包含编程和配置接口1204、启用变换的散列核心1205和配置密钥1206。两个用户1201、1202访问集成电路,用户1201访问编程和配置接口1204,而用户1202访问启用变换的散列核心。[0118]如可以从图中看到的,在图12中所示的电路通常比在前面的图中所示的电路简单。在一些实施例中,在图12中所示的电路此外也是较低功率消耗和较低性能电路,一些实施例在前面的图中示出。在某些实施例中,这个电路的总目的是使由本文公开的技术的一些实施例例如在前面的图中所示的一些实施例产生的结果的验证成为可能。一般操作模式是用户11201可以使用编程和配置接口1204,以便都配置集成电路的操作的各种参数,例如时钟速度、外部通信和其它等等,并将一个或几个配置密钥1204编程到在启用变换的散列核心1205内的一个或多个可编程函数内,其中它们将被具体化为数据路径电路。在一些实施方式中,某些事物例如编程被执行的方式、机制一个或多个加密密钥1204通过该机制被具体化为数据路径电路)、用于保护它编程到可编程变换函数内的密钥的机制和其它事物通常以与它们在由前面的图所示的一些其它实施方式中被执行的方式通常类似的方式被执行。[0119]在一些实施方式中,在启用变换的散列核心1205内的可编程变换块的编程之后,用户2可以简单地输入一些输入值,其接着作为输入数据直接被传送到启用变换的散列核心1205,随后当完成计算时,启用变换的散列核心1205接着将所计算的最终散列值返回给用户2。如果本文所述的技术的实施方式在启用变换的散列核心1205中通常与在以前执行这样的操作的不同启用变换的电路中相同,输入数据例如交易块首部在这两种情况下是相同的,且被编程到这两者内的一个或多个配置密钥在这两种情况下也是相同的,则由两个集成电路计算的最终散列值也将是相同的。因此,可以验证某些项的有效性,这些项可以例如包括来自区块链的交易块首部、其它交易块首部、其它候选交易块首部等。此外通过使用电路例如在图12中所示的电路的一些实施例,这样的验证可以被执行而用户2不需要知道被编程到可编程变换块内的一个或多个密钥。[0120]在一些实施例中,用户可以是人,而在其它实施例中,用户可以是自动过程,例如钱包软件、挖掘软件或其它种类的自动过程。在某些实施例中,用户2也可以访问如上所述的集成电路的各种操作方面的配置。在某些实施例中,可以有用于作为整体配置集成电路的各种操作方面、密钥的编程和得到基于由用户提供的数据而计算的最终启用变换的散列值的单个接口,而在其它实施例中,那些功能中的一些或全部可以是分开的。在某些实施例中,由图12示出的集成电路可以是较大的计算系统的部分,例如挖掘系统、硬件钱包、安全令牌或保护锁或其它等等。在一些实施例中,[0121]图12中所示的集成电路的各种实施方式可以是并入包含本文所述的技术的其它实施方式例如在前面的图中所示的一些实施方式的一个或多个集成电路的系统的部分。[0122]在某些实施例中,图12中所示的集成电路的各种实施方式可以物理地集成到与本文所述的技术的其它实施例相同的硅中。在一些这样的实施例中,图12所示的集成电路可以此外进一步连接到本文所述的技术的其它实施例。例如,在各种这样的情况下,图12所示的集成电路可以以可类似于多个不同的散列核心如何访问单个变换函数的方式与在同一集成电路内的其它电路共享地访问可编程变换块,如在图8和9中所示的。在各种其它实施例中,图12所示的电路可以与执行不同的任务的另一集成电路例如微处理器、网络处理器、片上系统以及其它等物理地集成到同一硅内。在某些实施例中,可编程变换块可以借助于一次性可编程电路元件例如微型熔丝将配置密钥具体化为电路,而在某些实施例中,可以使用可重写电路元件,例如nvRAM,并且在其它实施例中,可以使用其它方法。[0123]现在转到图13,提供了示出与图12中的集成电路总体上类似但并入两个单独的启用变换的散列核心1305、1309的集成电路1303的图示,每个启用变换的散列核心由不同的配置密钥1306、1307编程。此外,在图13中提供的图示也显示3个用户1301、1302和1308,每个用户访问编程和配置接口1304、第一启用变换的散列核心1305和第二启用变换的散列核心1309〇[0124]图13中所示的集成电路的操作方法和总目的类似于图12中所示的集成电路的操作方法和总目的,但在一些实施例中图13所示的集成电路可以用于保持多个密钥而不是仅仅一个密钥。在一些实施例中,配置例如在图13中提供的配置可以用于将两个单独的密钥维持在单个启用变换的加密结果验证器内。在其它实施例中,多于两个配置密钥1306、1307以及在一些这样的实施例中多于两个启用变换的加密核心可以被包含。如在附随图12的描述中所述的,各种实施例可以在哪些不同的用户访问由集成电路支持的哪些功能、什么方法用于将配置密钥编程到一个或多个可编程变换函数内、所述电路可以集成到不同类型的硬件内以及其它等方面设想不同的变形。[0125]在这个文档中,明确的参考只由某些加密散列算法、特别是安全散列算法系列SHA-2的第二迭代和特别地在256位版本内构成。然而,本文所述的技术完全可以应用于其它加密散列算法,没有限制地包括:在它的各种实施方式中的SHA-2;在它的各种实施方式中的KeccakSHA-3;在它的各种实施方式中的Skein;在它们的各种实施方式中的Gresth在它的各种实施方式中的JH;以及其它等等。[0126]如本文使用的,术语“集合”可以指元件的任何集合,不管是有限的还是无限的。术语“子集”可以指元件的任何集合,其中元件取自父集合;子集可以是整个父集合。术语“真子集”指包含比父集合少的元件的子集。术语“序列”可以指有序集合或子集。术语“小于”、“小于或等于”、“大于”和“大于或等于”可以在本文用于描述在各种物体或有序集合或序列的成员之间的关系;这些术语将被理解为指可以应用于被排序的物体的任何适当的排序关系。[0127]术语“工具”可以用于指被配置为执行所列举的功能的任何装置。例如,工具可以包括一个或多个部件的集合,且也可以由硬件、软件或其组合组成。因此,例如工具可以是一个或多个软件部件、硬件部件、软件硬件部件或其任何组合或置换的集合。作为另一示例,工具可以是计算设备或其它器具,软件在计算设备或其它器具上运行或在计算设备或其它器具中实施。[0128]如在本文使用的,术语“部件”可以描述可根据本文公开的技术的一个或多个实施例执行的给定功能单元。如在本文使用的,可以利用任何形式的硬件、软件或其组合来实施部件。例如,可以实施一个或多个处理器、控制器、431:、?1^、?41^工?0、??64、逻辑部件、软件例程或其它机构以构成部件。在实施方式中,本文所述的各种部件可以被实施为分立的部件,或所述功能和特征可以在一个或多个部件当中部分地或全部被共享。换句话说,如在阅读了这个描述之后将对本领域中的普通技术人员明显的,本文所述的各种特征和功能可以在任何给定应用中实施,并可以在一个组合和置换中在一个或多个单独或共享的部件中实施。即使功能的各种特征或元件可以单独地被描述或主张为单独的部件,本领域中的普通技术人员将理解,这些特征和功能可以在一个或多个公共软件和硬件元件当中被共享,且这样的描述不应要求或暗示单独的硬件或软件部件用于实施这样的特征或功能。[0129]在使用软件全部或部分地实施部件或技术的部件的情况下,在一个实施例中,这些软件元件可以被实施以与能够执行关于其所述的功能的计算或处理部件一起操作。在图11中示出一个这样的示例性计算部件。从这个示例性计算部件1100方面描述了各种实施例。在阅读了这个描述之后,如何使用其它计算部件或架构来实施该技术将对相关领域中的技术人员将变得明显。[0130]现在参考图11,计算部件1100可以代表例如存在于桌上型计算机、膝上型计算机和笔记本计算机;手持计算设备PDA、智能电话、蜂窝电话、掌上型计算机等);大型计算机、超级计算机、工作站或服务器;或如可以对给定应用或环境合乎需要或适合的任何其它类型的专用或通用计算设备中的计算或处理能力。计算部件1100也可以代表嵌在给定设备内或否则给定设备可以采用的计算能力。例如,计算部件可以存在于其它电子设备例如数字摄像机、导航系统、蜂窝电话、便携式计算设备、调制解调器、路由器、WAP、终端和可能包括某种形式的处理能力的其它电子设备中。[0131]计算部件1100可以包括例如一个或多个处理器、控制器、控制部件或其它处理设备,例如处理器1104。可以使用通用或专用处理引擎例如微处理器、控制器或其它控制逻辑来实施处理器1104。在所示示例中,处理器1104连接到总线1102,虽然任何通信调制解调器可用于便于与计算部件1100的其它部件的交互作用或在外部进行通信。[0132]计算部件1100还可以包括一个或多个存储器部件,其在本文被简单地称为主存储器1108。例如优选地,随机存取存储器RAM或其它动态存储器可以用于存储信息和指令以由处理器1104执行。主存储器1108也可以用于在由处理器1104执行指令期间存储临时变量或其它中间信息。计算部件1100可以同样包括只读存储器(“ROM”)或耦合到总线1102用于为处理器1104存储静态信息和指令的其它静态存储设备.[0133]计算部件1100也可以包括信息存储机构1110的一个或多个各种形式,其可以包括例如介质驱动器1112和存储单元接口1120。介质驱动器1112可以包括驱动器或其它机构以支持固定或可移动存储介质1114。例如,可以提供硬盘驱动器、软盘驱动器、磁带驱动器、光盘驱动器、CD或DVD驱动器Φ或RW或其它可移动或固定介质驱动器。因此,存储介质1114可以包括例如硬盘驱动器、软盘驱动器、磁带、磁带盒、光盘、CD或DVD或由介质驱动器1112读取或写入或访问的其它固定或可移动介质。如这些示例示出的,存储介质1114可以包括计算机可用存储介质,其具有存储在其中的计算机软件或数据。[0134]在可选的实施例中,信息存储机构1110可以包括用于允许部件程序或其它指令或数据加载到计算机部件1100内的其它类似仪器。这样的仪器可以包括例如固定或可移动存储单元1122和接口1120。这样的存储单元1122和接口1120的示例可以包括程序盒和盒式接口、可移动存储器例如闪存或其它可移动存储部件和存储器插槽、PCMCIA插槽和卡以及允许软件和数据从存储单元1122转移到计算部件1100的其它固定或可移动存储单元1122和接口1120。[0135]计算部件1100还可以包括通信接口1124。通信接口114可以用于允许软件和数据在计算部件1100和外部设备之间转移。通信接口1124的示例可以包括调制解调器或软调制解调器、IEEE802.XX、网络接口(例如以太网、网络接口卡、WiMedia或其它接口)、通信端口例如USB端口、IR端口、RS232端口Bluetooth®接口或其它端口)或其它通信接口。经由通信接口1124转移的软件和数据可以一般在信号上执行,信号可以是能够由给定通信接口1124交换的电子、电磁其包括光学)或其它信号。这些信号可以经由通道1128被提供到通信接口1124。这个通道1128可携带信号,且可以使用有线或无线通信介质来实施。通道的一些示例可以包括电话线、蜂窝线、RF链路、光学链路、网络接口、局域或广域网和其它有线或无线通信通道。[0136]在这个文档中,术语“计算机程序介质”和“计算机可用介质”用于通常指介质,例如存储器1108、存储单元1120、介质1114和通道1128。计算机程序介质或计算机可用介质的这些和其它形式可以涉及将一个或多个指令的一个或多个序列传送到处理设备用于执行。具体化在介质上的这样的指令通常被称为“计算机程序代码”或“计算机程序产品”(其在计算机程序或其它分组的形式中被分组)。当被执行时,这样的指令可以使计算部件1100能够执行如本文讨论的所公开的技术的特征或功能。[0137]虽然描述了所公开的技术的各种实施例,应理解,它们仅作为示例而不是限制被提出。同样,各种图可以描绘示例性架构或所公开的技术的其它配置,其被完成以帮助理解可以被包括在所公开的技术中的特征和功能。所公开的技术不限于所示的示例性架构或配置,但期望特征可以使用各种可选的架构和配置来实施。实际上,可以如何实施可选的功能、逻辑或物理划分和配置以实施本文公开的技术的期望特征对本领域中的技术人员将明显。此外,除了在本文描绘的那些名称以外的多个不同的构成部件名称可以应用于各种分区。此外,关于流程图、操作描述和方法权利要求,步骤在本文被呈现的顺序不应要求各种实施例被实施来以相同的顺序执行所列举的功能,除非上下文指示相反的情况。[0138]尽管上面从各种示例性实施例和实施方式方面描述了所公开的技术,应理解,在一个或多个单独的实施例中描述的各种特征、方面和功能在它们的可应用性方面不限于特定的实施例它们使用该特定的实施例来描述),但替代地可以单独地或在各种组合中应用于所公开的技术的其它实施例中的一个或多个,不管这样的实施例是否被描述以及这样的特征是否被呈现为所述实施例的一部分。因此,在本文公开的技术的广度和范围不应由上面所述的示例性实施例中的任一个限制。[0139]除非另外明确地规定,在这个文档中使用的术语和短语及其变形应被解释为开放式的,与限制性相反。作为前述内容的示例:术语“包括”应被理解为意指“包括但不限于”等;术语“示例”用于提供在讨论中的项目的示例性实例,不是其无遗漏的或限制性列表;术语“一”或“一个”应被理解为意指“至少一个”、“一个或多个”等;以及形容词例如“常规”、“传统”、“正常”、“标准”、“已知”和类似含义的术语不应被解释为将所述项目限制到给定的时间段或到给定时间为止可用的项目,但替代地应被理解为包括可在未来的任何时间可用的或已知的常规、传统、正常或标准技术。同样,在本文档提到将对本领域中的普通技术人员明显或已知的技术的情况下,这样的技术包括现在或在未来的任何时间对技术人员明显或已知的那些技术。[0140]在一些实例中的加宽词和短语例如“一个或多个”、“至少”、“但不限于”或其它类似短语的存在不应被理解为意指在这样的加宽短语可能缺乏的实例中预期或需要较窄的情况。术语“部件”的使用并不暗示部件或被描述或主张为部件的部分的功能都在公共封装中被配置。实际上,一个部件的各种部件中的任一个或全部一一不管是控制逻辑或其它部件一一都可以被组合在单个封装中或单独地被维持并可以进一步分布在多个分组或封装中或跨越多个位置。[0141]此外,从示例性方框图、流程图和其它图示方面描述了在本文阐述的各种实施例。如在阅读了本文档之后将对本领域中的普通技术人员变得明显的,所示实施例及其各种可选形式可以被实施而不限制到所示示例。例如,方框图及其附随的描述不应被解释为要求特定的架构或配置。

权利要求:1.一种加密集成电路,包括:变换块,其包括集成到所述加密集成电路的数据路径电路中的一组电子电路,并且所述变换块在制造所述集成电路之后的时间是能够被编程的以对从所述变换块之前的数据路径电路接收到的数据执行变换操作;编程电路,其将所述变换块和配置接口通信地耦合;其中,所述集成电路在加密电路内实施,并且用户能够通过所述配置接口对所述变换块编程,使得根据配置密钥来配置所述变换块。2.根据权利要求1所述的加密集成电路,其中,所述变换块包括能够由所述用户编程的配置密钥,并且被配置为能够与沿着所述集成电路加密数据路径的其它电路相同的速度进行操作的数据路径电路。3.根据权利要求2所述的加密集成电路,所述数据路径电路还包括散列块,所述散列块被配置为应用根据由工作证明协议规定的加密标准而确定的散列算法。4.根据权利要求2所述的加密集成电路,还包括永久且不能消除的机构以将由所述用户输入的所述密钥具体化为所述集成电路数据路径上的物理电路。5.根据权利要求2所述的加密集成电路,还包括非永久机构以将由所述用户输入的所述密钥具体化为所述集成电路数据路径上的物理电路。6.根据权利要求2所述的加密集成电路,其中,所述变换块被配置为实施直接位反转方案。7.根据权利要求2所述的加密集成电路,其中,所述变换块能够被配置为实施位调换方案。8.根据权利要求2所述的加密集成电路,所述集成电路被设计和制造为实施安全散列算法。9.根据权利要求1所述的加密集成电路,所述数据路径电路还包括第一散列块和第二散列块,所述第一散列块被配置为应用根据由工作证明协议规定的加密标准而确定的第一散列算法,并且所述第二散列块被配置为随后应用根据由工作证明协议规定的加密标准而确定的第二散列算法。10.根据权利要求9所述的加密集成电路,所述变换块位于所述第一散列块之前,使得所述变换块的输出是所述第一散列块的输入。11.根据权利要求9所述的加密集成电路,所述变换块位于所述第一散列块和所述第二散列块之间,使得所述第一变换块的输出是所述变换块的输入并且所述变换块的输出是所述第二散列块的输入。12.根据权利要求9所述的加密集成电路,还包括第二变换块。13.根据权利要求1所述的加密集成电路,所述数据路径电路包括多个加密核心,所述多个加密核心中的每个加密核心包括第一散列块。14.根据权利要求13所述的加密集成电路,所述多个加密核心中的每个加密核心包括变换块。15.根据权利要求1所述的加密集成电路,所述数据路径电路包括多个加密核心,所述多个加密核心中的每个加密核心包括顺序地连接的两个散列块,使得来自第一散列块的输出是直接到达第二散列块的输入或者在通过额外的电路块之后到达第二散列块的输入。16.根据权利要求15所述的加密集成电路,所述第一变换块位于所述第一散列块之前,使得所述变换块的输出是所述第一散列块的输入,并且所述第二变换块位于所述第二散列块之前,使得来自所述第一散列核心的输出是所述第二变换块的输入,并且使得来自所述第二变换块的输出是所述第二散列块的输入。17.根据权利要求15所述的加密集成电路,两个变换块位于所述第一散列块之前,使得来自两个变换块的组合输出是所述第一散列块的输入。18.根据权利要求15所述的加密集成电路,两个变换块位于所述第一散列块之后,使得来自所述第一散列块的输出是所述变换块的输入,并且所述两个变换块位于所述第二散列块之前,使得来自两个变换块的组合输出是所述第二散列块的输入。19.根据权利要求15所述的加密集成电路,其中,第一变换块由所述多个加密核心中的每个加密核心共享,并且第二变换块由所述多个加密核心中的每个加密核心共享。20.根据权利要求1所述的加密集成电路,还包括设置在所述编程电路内的锁定熔丝,其中,当所述锁定熔丝被禁用时所述变换块是不能够被访问的。

百度查询: 布洛克钱恩阿西克斯有限责任公司 包括电路编码变换函数的加密ASIC

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。