首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际检索单位 / 检索费 / 用于在安全环境中执行智能合约的方法和系统

用于在安全环境中执行智能合约的方法和系统

阅读:894发布:2022-01-20

专利汇可以提供用于在安全环境中执行智能合约的方法和系统专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种用于安全地执行程序( 智能合约 )的方法,所述方法在第一钱包 节点 (WN)(WN1)与第二钱包节点WN(WN2)之间实行。根据本发明,至少所述第二WN实施于处理器的包围区中,且所述WN可执行它们接收到的消息中 指定 的程序。所述方法包括以下步骤:a)从WN1向WN2传输预先消息;b1)响应于所述预先消息,在所述包围区中执行第一程序(WNRoT);b2)由所述包围区产生所述程序的真实性和执行完整性的证据;b3)将所述证据传输到WN1;c)由WN1验证所述证据;d)在成功验证之后,从WN1向WN2传输消息,所述消息既定触发给定程序在WN2中的执行;以及e)在WN2中执行所述程序。,下面是用于在安全环境中执行智能合约的方法和系统专利的具体信息内容。

1.一种用于在第一WN(WN1)与第二WN(WN2)之间实施的程序(智能合约)的安全执行的方法,至少所述第二WN是在处理器的包围区中实施,且所述WN能够执行在达到所述WN的消息中指定的程序,所述方法包括以下步骤:
a)由WN1向WN2发送预先消息;
b1)响应于此预先消息,在所述包围区中执行第一程序(WNRoT);
b2)由所述包围区产生所述第一程序的真实性和所述第一程序的执行的完整性的凭证;
b3)将所述凭证发送到WN1;
c)由WN1验证所述凭证;
d)在成功验证的情况下,由WN1向WN2发送消息,所述消息既定触发给定程序在WN2中的执行,以及
e)在WN2中执行所述程序。
2.根据权利要求1所述的方法,其中步骤b2)还包括产生临时标志,步骤b3)还包括将所述临时标志发送到WN1,且所述方法还在步骤d)之前包括在WN1处实施的以所述临时标志对待发送的所述消息进行加密的步骤,且在步骤e)之前包括在WN2处实施的对所述加密的消息进行解密的步骤。
3.根据权利要求1或2所述的方法,其中将在WN中执行的程序的指定是通过所述程序的内容的散列来执行。
4.根据权利要求1至3中任一项所述的方法,其中所述预先消息含有所述给定程序的指定,以便由WN2将所述程序预加载到工作存储器中。
5.根据权利要求1至4中任一项所述的方法,其中WN1也是处理器的包围区,且其中在WN2每一次接收到来自WN1的预先消息或消息时,WN2验证此预先消息或消息中存在已在WN1中执行且触发此预先消息或消息的发送的程序的执行的真实性和完整性的凭证。
6.根据权利要求1至5中任一项所述的方法,其还包括:
在步骤a)与c)之间,由WN2产生从WN2的秘密密钥且从所述给定程序的所述指定导出的一对公钥/私钥的步骤;
在步骤d)之前,将导出的公钥发送到WN1的步骤;
在步骤d)之前,在WN1中以所述导出的公钥对所述消息的数据部分以加密的步骤,以及在步骤d)之后,在WN2中以导出的私钥对所述数据部分进行解密的步骤。
7.根据权利要求6所述的依附于权利要求4的方法,其中所述对导出的密钥还从所述预先消息中含有的指定信息产生。
8.根据权利要求7所述的方法,其中将所述导出的公钥发送到WN1的步骤是在步骤b3)期间实施。
9.一种用于在第一WN(WN1)与第二WN(WN2)之间实施的交易程序的安全执行的方法,WN1和WN2各自是处理器或专用SoC的包围区,其中所述WN能够通过含有将在接收者WN中执行的程序的指定的交易消息来通信,且交换交易消息的一对WN在安全条件中执行同一程序。
10.一种用于保障节点(WN)网络的操作安全的方法,所述节点能够响应于接收到消息(WM)而执行程序(WP),所述节点是由处理器的包围区或由SoC实施且所述节点能够基于连接权重值而链接在一起,所述方法包括以下步骤:
对每一节点指派与其相关地具有连接权重的至少一个会签者节点;
对于每一节点,保持能够从所讨论的节点接收消息的节点的会签者节点列表,每一节点和其会签者节点形成一组镜像节点;
基于在发出者节点和/或接收者节点所属于的所述镜像节点方面的相干约束而验证或授权所述发出者节点与所述接收者节点之间的消息。
加权的闪电网
11.一种具有对等架构的交易系统,其在单位发出者节点与单位接收者节点之间实施计算单位转移交易,每一传入交易具有参考前一交易的输出的输入(或各自参考前一交易的输出的若干输入)且自身具有指定计算单位数目和接收者节点的至少一个新输出,每一交易能够通过插入在至少一些节点之间以分布式方式存储的链中响应于所述交易的至少一个签名的广播而被验证,至少一些节点还能够通过交易来交换计算单位而无需经由节点之间的支付通道的强制性广播,每一节点具有到拥有计算单位上限(C(i,j))的另一节点的通道(Ch(i,j)),所述计算单位能够通过此通道转移而不需要广播,且两个节点之间的计算单位的转移能够经由成对地具有支付通道的节点链来执行,其特征在于所述节点具有相对于其它节点的连接权重(W(i,j)),表示所述节点或与所述节点相关联的用户之间的信任度或接近度,且其特征在于所述系统包括基于所述节点相对于与其具有所述给定通道的节点的连接权重而在给定通道上调整给定节点的所述计算单位上限的构件。
12.根据权利要求11所述的系统,其中所述调整涉及与所述权重相关地升高所述上限。
13.根据权利要求11或12所述的系统,其中一个节点相对于另一节点的所述权重是基于两个节点的周围环境中的真实连接(IRL连接)或准真实连接的存在而确定。
制造者的权重
14.一种具有对等架构的交易系统,用于使用能够以分散型方式由制造者制造的硬件节点(SoC;包围区)执行安全交易,每一节点相对于另一节点具有信任度或接近度,所述信任度或接近度主要通过连接权重或通过两个节点之间共同的镜像节点数目来体现,其特征在于所述系统包括用于对每一制造者指派制造者权重且基于硬件节点的所述制造者的所述制造者权重而调整此硬件节点相对于另一节点(不一定是硬件节点)的所述信任度的构件。
15.根据权利要求14所述的系统,其特征在于所述制造者权重关联于由所讨论的所述制造者制造的硬件节点的数目。
16.根据权利要求14所述的系统,其特征在于所述制造者权重关联于在所述系统中且由所讨论的所述制造者制造的有效硬件节点的数目。
17.根据权利要求16所述的系统,其特征在于所述系统包括用于基于使用所述节点的交易的存在而确定硬件节点的活动的构件。
18.根据权利要求16所述的系统,其特征在于所述系统包括用于基于与其它节点的交互的存在且基于这些交互中涉及的节点的连接权重的值而确定硬件节点的活动的构件。
主体SoC和主体包围区
19.一种安全处理器(SoC;包围区),其特征在于所述安全处理器能够代管网络的多个WN,且其特征在于所述安全处理器包括具有加密的加密存储器管理单元(CMMU),能够确保程序的安全执行,其中:
所述CMMU中存储(或动态地重新产生)的是仅能够由所述CMMU访问的秘密程序加密密钥;
所述CMMU能够存储将在由所述CMMU借助于所述秘密密钥进行加密之后执行的至少一个程序,且能够产生所述或每一程序的散列从而使得所述加密的程序能够被找到;
所述处理器能够仅在所述CMMU的命令下执行程序;
网络节点之间的交互是专通过消息来执行,且所述消息是专门由所述CMMU接收/发出;
所述消息含有在所述处理器中代管的接收者WN的标识以及将由所述接收者WN执行的某一程序的通过其散列来识别的标识;
响应于接收到消息:
所述处理器作为接收者WN初始化,且所述CMMU(i)基于在所述消息中接收的所述程序的所述散列而访问将由此WN执行的所述加密的程序(具体来说经由PHT),(ii)对程序指令进行解密,且(iii)向所述处理器进行传输以执行关于所述接收的数据的解密的指令,所述处理器为每一代管的WN存储一对密钥,所述一对密钥既定用于借助于所述对密钥中的私钥对由所述WN产生的消息的内容进行签名。
20.根据权利要求19所述的处理器,其中至少一个代管的WN构成在一组镜像WN内的另一WN的会签者WN,此会签者WN的所述对密钥相同于所述组中的其它WN的所述对密钥。
21.根据权利要求19和20所述的处理器,其特征在于所述处理器能够彼此分开地存储处理器变量、WN变量和WP变量。
22.根据权利要求19至21中任一项所述的处理器,其特征在于所述处理器与SAM相关联,且其特征在于所述处理器变量包括能够由至少两个WN访问的与所述模块相关联的激活或传感器数据。
保护WN
23.一种具有对等架构的交易系统,其实施单位发出者节点与单位接收者节点之间的具有加密安全性的计算单位转移交易,每一传入交易具有参考前一交易的输出的输入(或各自参考前一交易的输出的若干输入)且自身具有指定计算单位数目和接收者节点的至少一个新输出,每一交易能够通过插入在至少一些节点之间以分布式方式存储的区块链中响应于所述交易的至少一个签名的广播而被验证,至少一些节点还能够通过交易来交换计算单位而无需强制性广播,每一节点能够与相对于另一节点的信任度或接近度的信息相关联,所述系统包括在尚未广播的交易的上游树链内能够确定关于在所述链中已产生最远上游交易的节点(GuardWNs)当中的至少一个节点相对于在所述链中已接收最远下游交易的节点的所述信任度或接近度的信息是否满足所确定准则的构件,以及能够在肯定的情况下接受所述最远下游交易的构件。
24.根据权利要求23所述的系统,其中所述信任度或接近度信息含有在所述链中已产生最远上游交易的所述节点当中的至少一个节点与在所述链中已接收最远下游交易的所述节点之间共同的镜像节点的数目。
25.根据权利要求23或24所述的系统,其中每一节点被设计成仅在以下情况下才作为GuardWN签署交易:所述交易的输出在所述交易将进行馈送的交易中需要所述节点的签名,以使得已产生最远上游交易的GuardWN控制将由所述最远下游交易进行馈送的交易(避免重复花费)。
26.根据权利要求23或24所述的系统,其中每一节点被设计成仅在以下情况下才作为GuardWN签署交易:所述交易的输出在所述交易将进行馈送的交易中需要所述节点的签名,以使得已产生最远上游交易的GuardWN在从自身开始的下游交易的整个下游树上进行控制(避免重复花费)。
27.根据权利要求25或26所述的系统,其中对GuardWN的签名的请求延伸到需要其签名的另一节点的每一附带节点(这两个节点是在对同一下游交易联合地进行馈送的两个交易的输出上所需的相应签名者GuardWNs)。
28.一种片上系统(WN),其能够接收消息(WM)以便在安全执行条件中执行程序(WP),在所述片上系统中存储有构成一对公钥/私钥中的私钥的秘密密钥(SK),所述片上系统包括:
在从另一片上系统接收到消息(WM1)时能够从所述秘密密钥SK和所接收的消息中含有的信息(WN,#WP)导出称为导出密钥的一对密钥(SKd,PKd)且将导出的公钥(PKd)发送到所述另一片上系统的构件,以及
在从所述另一片上系统接收到消息时能够以所述导出的私钥(SKd)对所述消息(WM2)的一部分进行解密的构件。
29.一种在处理器的安全单元(包围区)中执行的方法,其包括在从片上系统(SoC;WN)或另一处理器的安全单元(另一包围区)接收到消息(WM1)后进行以下步骤:
从所述包围区的秘密密钥SK且从所述消息中含有的信息(#WP)导出一对导出密钥(SKd,PKd),
将导出的公钥(PKd)发送到所述WN或另一包围区,
等待从所述WN或另一包围区接收额外消息(WM2),以及
在接收到所述额外消息(WM2)后,以导出的私钥(SKd)对所述消息(WM2)的另一部分进行解密。
30.根据权利要求29所述的方法,其中所述发送步骤还涉及在执行过程中发送程序(WNRoT)的执行的真实性和完整性的凭证。
31.根据权利要求29和30中任一项所述的方法,其包括在所述发送步骤之前且包括产生随机密钥的额外步骤,所述发送步骤包括将此随机密钥发送到所述WN或另一包围区,且其中所述解密步骤使用所述随机密钥。
32.一种在处理器的安全单元(包围区)中执行的方法,其包括在从片上系统(SoC;WN)或另一处理器的安全单元(另一包围区)接收到消息(WM1)后进行在不离开包围区的情况下实施的以下执行步骤:
产生随机密钥;
将所述随机密钥发送到所述WN或另一包围区,以及
等待从所述WN或另一包围区接收额外消息(WM2),以及
在接收到所述额外消息(WM2)后,以所述随机密钥对所述消息(WM2)的另一部分进行解密。
33.根据权利要求29至32中任一项所述的方法,其包括在接收到所述额外消息(WM2)之后的以下步骤:加载且执行对应于所述消息中含有的所述信息(#WP)的程序(WP),且采取所述另一解密部分作为输入。
34.根据权利要求33所述的方法,还包括在执行所述程序(WP)时产生针对WN或其它包围区限定的消息,所述消息含有所述信息(#WP)以及对应于所述信息(#WP)的所述程序(WP)的执行的凭证。
35.一种包括安全单元(包围区)的处理器,所述包围区包括:
秘密密钥(SK);
用于产生秘密密钥(SKd)的构件,所述秘密密钥是从所述秘密密钥和其它信息的组合导出;
用于经由对应关系表(PHT)加载对应于给定信息的程序且执行所述程序的构件,其特征在于所述包围区包括能够进行以下操作的构件:
在接收到消息(WM)后,所述消息的部分被加密且仅能够借助于所述导出密钥(SKd)来解密;
激活所述构件以便基于所接收的消息中含有的所述其它信息(#WP)产生此导出密钥(SKd);
加载对应于所述其它信息(#WP)的程序(WP)且对含有所接收的消息(WM)的输入数据执行所述程序,所述消息的所述加密部分已经借助于所述秘密导出密钥(SKd)而解密。
36.一种包括安全单元(包围区)的处理器,所述包围区包括:
秘密密钥(SK);
用于经由对应关系表(PHT)加载对应于给定信息的程序且执行所述程序的构件,其特征在于所述包围区包括能够在从WN或另一包围区接收到含有给定信息(#WP)的消息(WM1)时加载第一程序(WNRoT)且以安全方式执行所述第一程序的构件,此执行包括以下步骤:
a)向此WN或另一包围区发送请求,所述请求包括:
由所述包围区以其秘密密钥(SK)签署且认证此第一程序(WNRoT)处于执行过程中的凭证;
随机密钥;
b)经由对应关系表(PHT)加载对应于所述信息(#WP)的程序(WP),且等待对在步骤a)发送的所述请求的响应(WM2);
c)在接收到此响应(WM2),而此响应包括借助于所述随机密钥加密的至少一个部分(有效负载)时,对所述加密的部分(有效负载)进行解密,以及
d)在解密之后触发对含有接收的所述响应(WM2)的输入数据执行所述程序(WP)。
37.根据权利要求36所述的处理器,其中在步骤a)发送的所述请求还含有所述接收到的消息(WM1)的识别符。
38.根据权利要求36和37中任一项所述的处理器,其中在步骤a)发送的所述请求是以所述WN或另一包围区的公钥(PK1)进行加密。
39.根据权利要求36至38中任一项所述的处理器,其中所述程序(WP)的执行包括产生针对WN或另一包围区限定的消息,所述消息含有所述信息(#WP)以及对应于所述信息(#WP)的所述程序(WP)的执行的凭证。
40.根据权利要求36至39中任一项所述的处理器,其中从WN或从另一包围区接收的所述消息还含有由此WN或另一包围区对对应于所述信息(#WP)的所述程序(WP)的执行的凭证。
41.根据权利要求36至40中任一项所述的处理器,其中从所述WN或另一包围区接收的所述消息(WM1)是以加密状态接收,归功于所述处理器包围区的公钥(PK),且是以所述处理器包围区的秘密密钥(SK)解密。
42.根据权利要求36至41中任一项所述的处理器,其中所述包围区还包括能够在由另一包围区接收到含有认证所述第一程序(WNRoT)处于执行过程中的凭证的请求和随机密钥时产生且传回含有借助于所述随机密钥加密的至少一个部分(有效负载)的消息(WM2)的构件。
43.一种包括安全单元(包围区)的处理器,所述包围区包括:
主要的一对私钥/公钥(SK,PK)的秘密密钥(SK),以及
用于产生从所述主要秘密密钥(SK)和一些信息(#WP)的组合导出的一对私钥/公钥(SKd,PKd)的构件,以及
用于经由对应关系表(PHT)加载对应于一些给定信息的程序(WP)且执行所述程序的构件,
其特征在于所述包围区包括能够在从WN或另一包围区接收到含有一些给定信息(#WP)的消息(WM1)时加载第一程序(WNRoT)且以安全方式执行所述第一程序的构件,此执行包括以下步骤:
a)使用(产生或从存储器检索)从所述主要秘密密钥(SK)和所述接收的给定信息(#WP)导出的一对密钥(SKd,PKd);
b)向此WN或另一包围区发送请求,所述请求含有:
由所述包围区以其秘密密钥(SK)签署且认证此第一程序(WNRoT)处于执行过程中的凭证;
所述对导出密钥的公钥(PKd);
c)经由对应关系表(PHT)加载对应于所述信息(#WP)的程序(WP)且等待对在步骤b)发送的所述请求的响应(WM2),以及
d)在接收到此响应(WM2),而此响应包括借助于导出的公钥(PKd)加密的至少一个部分(有效负载)时,以导出的秘密密钥(SKd)对此加密的部分(有效负载)进行解密,且在解密之后触发对含有接收的响应的输入数据执行所述程序(WP)。
44.根据权利要求43所述的处理器,其中在步骤b)发送的所述请求还含有所述接收到的消息(WM1)的识别符。
45.一种包括安全单元(包围区)的处理器,所述包围区包括:
主要的一对私钥/公钥(SK,PK)的秘密密钥(SK),以及
用于产生随机密钥的构件;
用于经由对应关系表(PHT)加载对应于给定信息的程序(WP)且执行所述程序的构件,其特征在于所述包围区包括能够在从WN或另一包围区接收到含有给定信息(#WP)的消息(WM1)时加载第一程序(WNRoT)且以安全方式执行所述第一程序的构件,此执行包括以下步骤:
a)向此WN或另一包围区发送请求,所述请求含有:
由所述包围区以其秘密密钥(SK)签署且认证此第一程序(WNRoT)处于执行过程中的凭证;
所述随机密钥;
b)经由对应关系表(PHT)加载对应于所述信息(#WP)的程序(WP)且等待对在步骤a)发送的所述请求的响应(WM2),以及
c)在接收到此响应(WM2),而此响应包括借助于所述随机密钥加密的至少一个部分(有效负载)时,以所述随机密钥对此加密的部分(有效负载)进行解密,且在解密之后触发对含有接收的响应的输入数据执行所述程序(WP)。
46.根据权利要求43至45中任一项所述的处理器,其中在所述发送步骤发送的所述请求是以所述WN或另一包围区的公钥(PK1)进行加密。
47.根据权利要求43至46中任一项所述的处理器,其中从所述WN或另一包围区接收的所述消息(WM1)还含有从同一给定信息(#WP)导出的一对私钥/公钥(SK1d,PK1d)中的公钥(PK1d),且在所述发送步骤发送到WN或所述另一包围区的所述请求是以从所述WN或另一包围区导出的所述公钥(PK1d)进行加密。
48.根据权利要求43至47中任一项所述的处理器,其中所述程序(WP)的执行还包括产生针对WN或另一包围区限定的消息,所述消息含有所述信息(#WP)以及对应于所述信息(#WP)的所述程序(WP)的执行的凭证。
49.根据权利要求43至48中任一项所述的处理器,其中从所述WN或另一包围区接收的所述消息(WM1)还含有由所述WN或另一包围区对对应于所述信息(#WP)的所述程序(WP)的执行的凭证。
50.根据权利要求43至49中任一项所述的处理器,其中从所述WN或另一包围区接收的所述消息(WM1)是以加密状态接收,归功于所述包围区的公钥(PK),且是以所述包围区的秘密密钥(SK)解密。
51.根据权利要求43至50中任一项所述的处理器,其中所述包围区还包括能够在由另一包围区接收到含有认证所述第一程序(WNRoT)处于执行过程的凭证(WNRoTAtt)的请求和导出的所述对密钥中的所述公钥(PKd)后产生且传回含有借助于所述公钥(PKd)加密的至少一个部分(有效负载)的消息(WM2)的构件。
52.根据权利要求43至51中任一项所述的处理器,其中所述接收的请求还含有随机密钥和所述加密构件以便传回含有此密钥的消息(WM2)。
53.一种安全的片上系统(SoC),在所述片上系统中以仅能够由所述SoC访问的方式存储有SoC私钥,或所述SoC能够动态地重新产生此私钥,所述SoC能够通过消息与另一装置通信且能够响应于接收到消息而执行智能合约(WP),且能够存储将在安全处理条件中执行的至少一个智能合约,所述SoC还包括在所述系统与包括至少一个传感器和/或致动器的外部模块之间进行通信的构件,这些构件至少在系统侧上包括通信管理单元(CMU),以及保障所述通信安全从而能够至少防止一个模块被另一模块替换的构件,至少一个智能合约的执行能够从所述管理单元接收来自所述模块的传感器基准作为输入和/或向所述模块发出激活基准作为输出。
54.根据权利要求53所述的片上系统,其包括在智能合约的执行的背景下借助于所述私钥对从所述模块接收的传感器基准进行签署且将所述签署的基准发送到构成所述智能合约的一方的另一安全装置的构件。
55.根据权利要求53或54所述的片上系统,其包括从构成智能合约的一方的另一安全装置接收签署的激活指令以便验证所述签名且将所述指令应用于所述模块的构件。
56.根据权利要求53至55所述的片上系统,其中所述安全性构件包括学习所述SoC与所述模块之间的连接的至少一个永久性质的构件。
57.根据权利要求56所述的片上系统,其中所述学习构件能够存储所述连接处的所述性质,且所述安全构件能够周期性地比较当前性质与存储的性质。
58.根据权利要求56或57所述的系统,其中所述连接是有线的,且所述性质是阻抗性质。
59.根据权利要求56或57所述的系统,其中所述连接是无线的,且所述性质包括所述连接的时域和/或频域的至少一个特性。
60.根据权利要求59所述的系统,其中所述性质包括所述连接的时域和/或频域的特性的组合。
61.根据权利要求59至61中任一项所述的系统,其中所述模块包括形成RFID标记的部分。
62.根据权利要求59至61中任一项所述的系统,其中所述模块包括以防篡改方式固定到现成的传感器和/或致动器的标准无线通信标记。
63.根据权利要求62所述的系统,其中所述标记是RFID标签。
64.根据权利要求53至63中任一项所述的系统,其中所述安全性构件包括所述系统与所述模块之间的逻辑配对的构件。
65.根据权利要求64所述的系统,其中所述安全性构件包括验证配对的持久性的构件。
66.根据权利要求64和65所述的系统,其中所述验证配对的持久性的构件和/或所述通信构件包括将临时标志发送到所述模块且考虑所述临时标志而分析来自所述模块的响应。
67.根据权利要求53至66中任一项所述的系统,其包括用于来自所述模块/针对所述模块限定的来自所述传感器和/或致动器的数据的特定存储器,以及所述存储器的管理单元,所述管理单元能够在来自被授权访问这些数据的智能合约当中的智能合约的执行期间读取和/或写入数据到所述存储器中。
68.根据权利要求67所述的系统,其中所述存储器管理单元形成一般存储器管理单元(CMMU)的部分,所述一般存储器管理单元还包括对分别与不同智能合约相关联的智能合约(WP)存储器和数据(PSV)存储器的访问的管理单元。
69.根据权利要求68所述的系统,其中所述一般存储器管理单元还包括用于由消息(WM)中包含的交易接收的计算单位(标记)的存储器的管理单元,所述管理单元能够在来自被授权访问这些计算单位的智能合约当中的智能合约的执行期间读取和/或写入所述计算单位存储器中的数据。
70.根据权利要求68和69中任一项所述的系统,其中所述一般存储器管理单元(CMMMU)能够从到达所述系统的消息(WM)中含有的智能合约指定(#WP)加载智能合约(WP)用于执行。
71.根据权利要求53至70中任一项所述的系统,其中来自所述模块/针对所述模块限定的传感器和/或致动器数据是在智能合约的执行构件与所述通信管理单元之间在运行中传输。

说明书全文

用于在安全环境中执行智能合约的方法和系统

技术领域

[0001] 本发明涉及在能够基于消息而执行彼此之间的交易的通常为分散型的联网节点架构中有用的方法和系统。

背景技术

[0002] 此处应注意,以下说明的一些部分是英语,它们到法语的忠实翻译也将被视为形成说明的一部分。
[0003] 此外,将参考在申请人名下的申请案WO2016120826A2,该案的内容以引用的方式并入本文。
[0004] 分散型PGP信任模型已经是已知的(《信任网络(Web-of-Trust)》,1992),其使得对等点能够充当公钥的介绍人和验证人且提出数字身份的分散型验证度量,它关注于所讨论的对等点的电子邮件地址。也曾提出在无认证授权的情况下确立身份的其它方法(例如在1996年由Carl Ellison提出的那些方法)。此外,已知的方法当面临“中间人(Man-in-the-Middle,MitM)攻击”的险时使用“带外通道(out-of-band channel)”方法且要求使用可靠的终端来执行公钥的安全交换,具体来说为SafeSlinger方法[http://
www.netsec.ethz.ch/publications/papers/farb_safeslinger_mobicom2013.pdf],其被设计成优化例如在“密钥签署方”的群组中的每一个用户与所有其它用户交换密钥的情况。
[0005] 本发明首先旨在实现分散型识别,其简单且使用范围较宽,并直接满足实施当前在共识协议中使用的“智能合约”型可执行承诺的要求[https://en.wikipedia.org/wiki/Smart_contract],特别是在任何人都可以动态地加入和离开的无许可环境中以及不存在对共识节点的先验了解的情况,这通常受计算谜题支持[Dwork&Naor,1992:http://www.hashcash.org/papers/pvp.pdf;Back,2002:http://www.hashcash.org/papers/hashcash.pdf]以抵抗“女巫攻击(sybil attacks)”并且理论在于计算能的主要部分是由诚实参与者保持[Nakamoto,2008:https://bitcoin.org/bitcoin.pdf]。关于智能合约的现有技术平主要由以太坊(Ethereum)系统代表[https://github.com/ethereum/wiki/wiki/White-Paper]。
[0006] 并不存在安全性是基于受信任制造者的硬件的智能合约(无受信任的第三方)的已知实施方案。
[0007] 例如ARM处理器或更为新近的英特尔(Intel)处理器等处理器的新型架构使得能够使用“受信任执行环境”(Trusted Execution Environments,TEE),例如英特尔处理器的SGX包围区。然而,这些包围区当前只是针对基于链的较轻型协议而提出。举例来说,由英特尔提出的PoET协议仍是基于区块链的。

发明内容

[0008] 本发明的一个方面是实现此类安全环境的使用以便去掉区块链或使区块链为任选的。本发明更具体来说目标是硬件上的实施方案,其可供大量制造者使用,以便即使关于制造者自身也实现分散,并且还旨在提出减轻女巫攻击的分散型识别机制(当对手在网络内创建其控制的任何数目的新节点时)。
[0009] 本发明的另一方面是能够使钱包节点型实体和安全单元型实体(TEE)一起协作,具体来说是英特尔处理器的SGX型包围区(下文中,词语“包围区”将描述此包围区或大体上任何TEE)。
[0010] 归功于硬件,本发明的目标不仅是速度(区块链的共识是缓慢的)和成本(交易费用)的优点,而且还有稍后将论述的定性优点。区块链方法本质上涉及集中型但也大规模重复的数据结构。本发明所提出的真实分散避免了对当今的比特币(Bitcoin)和以太坊带来最高优先级挑战的“缩放”的需要。
[0011] 根据第一方面,提出一种在第一WN(WN1)与第二WN(WN2)实施的程序(智能合约)的安全执行的方法,至少所述第二WN实施于处理器的包围区中,且所述WN能够执行达到它们的消息中指定的程序,所述方法包括以下步骤:
[0012] a)由WN1向WN2发送预先消息;
[0013] b1)响应于此预先消息,在所述包围区中执行第一程序(WNRoT);
[0014] b2)由所述包围区产生所述第一程序的真实性和所述第一程序的执行的完整性的凭证;
[0015] b3)将所述凭证发送到WN1;
[0016] c)由WN1验证所述凭证;
[0017] d)在成功验证的情况下,由WN1向WN2发送消息,所述消息既定触发给定程序在WN2中的执行,以及
[0018] e)在WN2中执行所述程序。
[0019] 一些优选但是任选的方面如下:
[0020] *步骤b2)还包括产生临时标志,步骤b3)还包括将所述临时标志发送到WN1,且所述方法此外在步骤d)之前包括在WN1处实施的以所述临时标志加密待发送的消息的步骤,且在步骤e)之前包括在WN2处实施的对所述加密的消息进行解密的步骤;
[0021] *将在WN中执行的程序的指定是通过所述程序的内容的散列来执行;
[0022] *所述预先消息含有所述给定程序的指定,以便由WN2将所述程序预加载到工作存储器中;
[0023] *WN1也是处理器的包围区,其中在WN2每一次接收到来自WN1的预先消息或消息时,WN2验证此预先消息或消息中存在已在WN1中执行且触发此预先消息或消息的发送的程序的执行的真实性和完整性的凭证。
[0024] *所述方法还包括:
[0025] -在步骤a)与c)之间,由WN2产生从WN2的秘密密钥且从所述给定程序的所述指定导出的一对公钥/私钥的步骤;
[0026] -在步骤d)之前,将导出的公钥发送到WN1的步骤;
[0027] -在步骤d)之前,在WN1中以所述导出的公钥对所述消息的数据部分以加密的步骤,以及
[0028] -在步骤d)之后,在WN2中以导出的私钥对所述数据部分进行解密的步骤;
[0029] *所述对导出密钥还从所述预先消息中含有的指定信息产生;
[0030] *将导出的公钥发送到WN1的步骤是在步骤b3)期间实施。
[0031] 根据第二方面,提出一种用于在第一WN(WN1)与第二WN(WN2)之间实施的交易程序的安全执行的方法,WN1和WN2各自是处理器或专用SoC的包围区,其中所述WN能够通过含有将在接收者WN中执行的程序的指定的交易消息来通信,且交换交易消息的一对WN在安全条件中执行同一程序。
[0032] 根据第三方面,提出一种用于保障节点(WN)网络的操作安全的方法,所述节点能够响应于接收到消息(WM)而执行程序(WP),所述节点是由处理器的包围区或由SoC实施且所述节点能够基于连接权重值而链接在一起,所述方法包括以下步骤:
[0033] -对每一节点指派与其相关地具有连接权重的至少一个会签者节点;
[0034] -对于每一节点,保持能够从所讨论的节点接收消息的会签者节点的列表,每一节点和其会签者节点形成一组镜像节点;
[0035] -基于在发出者节点和/或接收者节点所属于的所述镜像节点处的相干约束而验证或授权所述发出者节点与所述接收者节点之间的消息。
[0036] 在另一领域(下文为加权的闪电网络),根据本发明的第四方面,提出一种具有对等架构的交易系统,其在单位发出者节点与单位接收者节点之间实施计算单位转移交易,每一传入交易具有参考前一交易的输出的输入(或各自参考前一交易的输出的若干输入)且自身具有指定计算单位数目和接收者节点的至少一个新输出,每一交易能够通过插入在至少一些节点之间以分布式方式存储的区块链中响应于所述交易的至少一个签名的广播而被验证,至少一些节点还能够通过交易来交换计算单位而无需经由节点之间的支付通道的强制性广播,每一节点具有到拥有计算单位上限(C(i,j))的另一节点的通道(Ch(i,j)),所述计算单位能够通过此通道转移而不需要广播,且两个节点之间的计算单位的转移能够经由成对地具有支付通道的节点链来执行,其特征在于所述节点具有相对于其它节点的连接权重(W(i,j)),表示所述节点或与所述节点相关联的用户之间的信任度或接近度,且其特征在于所述系统包括基于所述节点相对于与其具有所述给定通道的节点的连接权重而在给定通道上调整给定节点的所述计算单位上限的构件。
[0037] 一些优选但是任选的方面如下:
[0038] *所述调整涉及与所述权重相关地升高所述上限;
[0039] *一个节点相对于另一节点的所述权重是基于两个节点的周围环境中的真实连接(IRL连接)或准真实连接的存在而确定。
[0040] 根据第五方面(下文为制造者的权重),提出一种具有对等架构的交易系统,用于使用能够以分散型方式由制造者制造的硬件节点(SoC;包围区)执行安全交易,每一节点相对于另一节点具有信任度或接近度,所述信任度或接近度主要通过连接权重或通过两个节点之间共同的镜像节点数目来体现,
[0041] 其特征在于所述系统包括用于对每一制造者指派制造者权重且基于硬件节点的所述制造者的所述制造者权重而调整此硬件节点相对于另一节点(不一定是硬件节点)的所述信任度的构件。
[0042] 一些优选但是任选的方面如下:
[0043] *所述制造者权重关联于由所讨论的所述制造者制造的硬件节点的数目;
[0044] *所述制造者权重关联于在所述系统中且由所讨论的所述制造者制造的有效硬件节点的数目;
[0045] *所述系统包括用于基于使用所述节点的交易的存在而确定硬件节点的活动的构件;
[0046] *所述系统包括用于基于与其它节点的交互的存在且基于这些交互中涉及的节点的连接权重的值而确定硬件节点的活动的构件。
[0047] 根据第六方面(下文为主体SoC和主体包围区),提出一种安全处理器(SoC;包围区),其特征在于所述安全处理器能够代管网络的多个WN,且其特征在于所述安全处理器包括具有加密的加密存储器管理单元(CMMU),能够确保程序的安全执行,其中:
[0048] ●所述CMMU中存储(或动态地重新产生)的是仅能够由所述CMMU访问的秘密程序加密密钥;
[0049] ●所述CMMU能够存储将在由所述CMMU借助于所述秘密密钥进行加密之后执行的至少一个程序,且能够产生所述程序或每一程序的散列从而使得所述加密的程序能够被找到;
[0050] ●所述处理器能够仅在所述CMMU的命令下执行程序;
[0051] ●网络节点之间的交互是专通过消息来执行,且所述消息是专门由所述CMMU接收/发出;
[0052] ●所述消息含有在所述处理器中代管的接收者WN的标识以及将由所述接收者WN执行的某一程序的通过其散列来识别的标识;
[0053] ●响应于接收到消息:
[0054] 所述处理器作为接收者WN初始化,且所述CMMU(i)基于在所述消息中接收的所述程序的所述散列而访问将由此WN执行的所述加密的程序(具体来说经由PHT),(ii)对程序指令进行解密,且(iii)向所述处理器进行传输以执行关于所述接收的数据的解密的指令,[0055] 所述处理器为每一代管的WN存储一对密钥,所述一对密钥既定用于借助于所述对密钥中的私钥对由所述WN产生的消息的内容进行签名。
[0056] 一些优选但是任选的方面如下:
[0057] *至少一个代管的WN构成在一组镜像WN内的另一WN的会签者WN,此会签者WN的所述对密钥相同于所述组中的其它WN的所述对密钥;
[0058] *所述处理器能够彼此分开地存储处理器变量、WN变量和WP变量;
[0059] *所述处理器与SAM相关联,且所述处理器变量包括能够由至少两个WN访问的与所述模块相关联的激活或传感器数据。
[0060] 根据第七方面(下文为保护WN),提出一种具有对等架构的交易系统,其实施用于单位发出者节点与单位接收者节点之间的计算单位转移的具有加密安全性的交易,每一传入交易具有参考前一交易的输出的输入(或各自参考前一交易的输出的若干输入)且自身具有指定计算单位数目和接收者节点的至少一个新输出,每一交易能够通过插入在至少一些节点之间以分布式方式存储的区块链中响应于至少一个交易签名的广播而被验证,至少一些节点还能够通过交易来交换计算单位而无需强制性广播,每一节点与相对于另一节点的信任度或接近度的信息相关联是可能的,所述系统包括在尚未广播的交易的上游树链内能够确定关于在所述链中已产生最远上游交易的节点(GuardWNs)当中的至少一个节点相对于在所述链中已接收最远下游交易的节点的所述信任度或接近度的信息是否满足所确定准则的构件,以及在肯定的情况下接受所述最远下游交易的构件。
[0061] 一些优选但是任选的方面如下:
[0062] *所述信任度或接近度信息含有在所述链中已产生最远上游交易的所述节点当中的至少一个节点与在所述链中已接收最远下游交易的所述节点之间共同的镜像节点的数目;
[0063] *每一节点被设计成仅在以下情况下才作为GuardWN签署交易:所述交易的输出在所述交易将进行馈送的交易中需要所述节点的签名,以使得已产生在最远上游的最远上游交易的GuardWN控制将由最远下游交易进行馈送的交易(避免重复花费);
[0064] *每一节点被设计成仅在以下情况下才作为GuardWN签署交易:所述交易的输出在所述交易将进行馈送的交易中需要所述节点的签名,以使得已产生最远上游交易的GuardWN在从自身开始的下游交易的整个下游树上进行控制(避免重复花费);
[0065] *对GuardWN的签名的请求延伸到需要其签名的另一节点的每一附带节点(这两个节点是在对同一下游交易共同地进行馈送的两个交易的输出上所需的相应签名者GuardWNs)。
[0066] 根据另一方面,提出一种片上系统,其能够接收消息以便在安全执行条件中执行程序,在所述片上系统中存储有构成一对公钥/私钥中的私钥的秘密密钥(SK),所述片上系统包括:
[0067] -在从另一片上系统(WN或处理器的安全单元(包围区))接收到消息时能够从所述秘密密钥SK和所接收的消息中含有的信息导出称为导出密钥的新的一对密钥且将导出的公钥发送到所述另一WN或包围区的构件,以及
[0068] -在从所述另一WN或包围区接收到消息时能够以所述导出的私钥对所述消息的另一部分进行解密的构件。
[0069] 根据另一方面,提出一种在处理器的安全单元(包围区)中执行的方法,其包括在从片上系统或另一处理器的安全单元(另一包围区)接收到消息后进行在不离开包围区的情况下实施的以下执行步骤:
[0070] -从所述包围区的秘密密钥SK且从所述消息中含有的信息导出一对导出密钥,[0071] -将导出的公钥发送到所述WN或另一包围区,以及
[0072] -等待从所述WN或另一包围区接收到含有相同信息的额外消息,以及
[0073] -在接收到所述额外消息后,以导出的私钥对所述消息的另一部分进行解密。
[0074] 一些优选但是任选的方面如下:
[0075] *所述发送步骤还涉及在执行过程中发送程序的执行的真实性和完整性的凭证;
[0076] *所述方法包括在所述发送步骤之前且包括产生随机密钥的额外步骤,所述发送步骤包括将此随机密钥发送到所述WN或另一包围区,且其中所述解密步骤使用所述随机密钥。
[0077] 根据另一方面,提出一种在处理器的安全单元(包围区)中执行的方法,其包括在从片上系统或另一处理器的安全单元(另一包围区)接收到消息后进行在不离开包围区的情况下实施的以下执行步骤:
[0078] -产生随机密钥;
[0079] -将所述随机密钥发送到所述WN或另一包围区,以及
[0080] -等待从所述WN或另一包围区接收到含有相同信息的额外消息,以及
[0081] -在接收到所述额外消息后,以所述随机密钥对所述消息的另一部分进行解密。
[0082] 一些优选但是任选的方面如下:
[0083] *所述方法包括在接收到所述额外消息之后且不离开包围区的以下步骤:加载且执行对应于所述消息中含有的所述信息的程序,且采取所述另一解密部分作为输入;
[0084] *所述方法还包括在执行所述程序时产生针对WN或另一包围区限定的消息,所述消息含有所述信息以及对应于所述信息的所述程序的执行的凭证。
[0085] 根据另一方面,提出一种包括安全单元(包围区)的处理器,所述包围区包括:
[0086] -秘密密钥;
[0087] -用于产生秘密密钥的构件,所述秘密密钥是从所述秘密密钥和其它信息的组合导出;
[0088] -用于经由对应关系表加载对应于给定信息的程序且执行所述程序的构件,[0089] 其特征在于所述包围区还包括能够进行以下操作的构件:
[0090] -在接收到消息后,所述消息的部分被加密且仅能够借助于所述导出密钥来解密;
[0091] -激活所述构件以便基于所接收的消息中含有的所述其它信息产生此导出密钥;
[0092] -在不离开包围区的情况下加载对应于所述其它信息的程序且对含有所接收的消息的输入数据执行所述程序,所述消息的所述加密部分已经借助于所述秘密导出密钥而解密。
[0093] 根据本发明的另一方面,提出一种包括安全单元(包围区)的处理器,所述包围区包括:
[0094] -秘密密钥;
[0095] -用于经由对应关系表加载对应于给定信息的程序且执行所述程序的构件,[0096] 其特征在于所述包围区包括能够在从WN或另一包围区接收到含有给定信息的消息时加载第一程序且以安全方式执行所述第一程序的构件,此执行包括以下步骤:
[0097] a)向此WN或另一包围区发送请求,所述请求包括:
[0098] ●由所述包围区以其秘密密钥签署且认证此第一程序处于执行过程中的凭证;
[0099] ●随机密钥;
[0100] b)经由对应关系表加载对应于所述信息的程序,且等待对在步骤a)发送的所述请求的响应;
[0101] c)在接收到此响应,而此响应包括借助于所述随机密钥加密的至少一个部分(有效负载)时,对所述加密的部分(有效负载)进行解密,以及
[0102] d)在解密之后触发对含有接收的所述响应的输入数据执行所述程序。
[0103] 一些优选但是任选的方面如下:
[0104] *在步骤a)发送的所述请求还含有所述接收到的消息的识别符;
[0105] *在步骤a)发送的所述请求是以所述WN或另一包围区的公钥进行加密;
[0106] *所述程序的执行包括产生针对WN或另一包围区限定的消息,所述消息含有所述信息以及对应于所述信息的所述程序的执行的凭证;
[0107] *从WN或从另一包围区接收的所述消息还含有由此WN或另一包围区对对应于所述信息的所述程序的执行的凭证;
[0108] *从所述WN或另一包围区接收的所述消息是以加密状态接收,归功于所述处理器包围区的公钥,且是以所述处理器包围区的秘密密钥解密;
[0109] *所述包围区还包括能够在由另一包围区接收到含有认证所述第一程序(WNRoT)处于执行过程中的凭证的请求和随机密钥时产生且传回含有借助于所述随机密钥加密的至少一个部分(有效负载)的消息的构件。
[0110] 根据又一方面,提出一种包括安全单元(包围区)的处理器,所述包围区包括:
[0111] -主要的一对私钥/公钥的秘密密钥;
[0112] -用于产生从所述主要秘密密钥和一些信息的组合导出的一对私钥/公钥的构件,以及
[0113] -用于经由对应关系表加载对应于一些给定信息的程序且执行所述程序的构件,[0114] 其特征在于所述包围区包括能够在从WN或另一包围区接收到含有一些给定信息的消息时加载第一程序且以安全方式执行所述第一程序的构件,此执行包括以下步骤:
[0115] a)使用(产生或从存储器检索)从所述主要秘密密钥和所述接收的给定信息导出的一对密钥;
[0116] b)向此WN或另一包围区发送请求,所述请求含有:
[0117] ●由所述包围区以其秘密密钥签署且认证此第一程序处于执行过程中的凭证;
[0118] ●所述对导出密钥的公钥;
[0119] c)经由对应关系表加载对应于所述信息的程序且等待对在步骤b)发送的所述请求的响应,以及
[0120] d)在接收到此响应,而此响应包括借助于导出的公钥加密的至少一个部分(有效负载)时,以导出的秘密密钥对此加密的部分(有效负载)进行解密,且在解密之后触发对含有接收的响应的输入数据执行所述程序。(WP)。
[0121] 有利地但任选地,在步骤b)发送的所述请求还含有所述接收到的消息的识别符。
[0122] 根据另一方面,提出一种包括安全单元(包围区)的处理器,所述包围区包括:
[0123] -主要的一对私钥/公钥的秘密密钥;
[0124] -用于产生随机密钥的构件;
[0125] -用于经由对应关系表加载对应于给定信息的程序且执行所述程序的构件,[0126] 其特征在于所述包围区包括能够在从WN或另一包围区接收到含有给定信息的消息时加载第一程序且以安全方式执行所述第一程序的构件,此执行包括以下步骤:
[0127] a)向此WN或另一包围区发送请求,所述请求含有:
[0128] ●由所述包围区以其秘密密钥签署且认证此第一程序处于执行过程中的凭证;
[0129] ●随机密钥;
[0130] b)经由对应关系表加载对应于所述信息的程序且等待对在步骤a)发送的所述请求的响应,以及
[0131] c)在接收到此响应(WM2),而此响应包括借助于所述随机密钥加密的至少一个部分(有效负载)时,以所述随机密钥对此加密的部分(有效负载)进行解密,且在解密之后触发对含有接收的响应的输入数据执行所述程序(WP)。
[0132] 一些优选但是任选的方面如下:
[0133] *在发送步骤发送的所述请求是以所述WN或另一包围区的公钥进行加密;
[0134] *从所述WN或另一包围区接收的所述消息还含有从同一给定信息导出的公钥和一对私钥/公钥,且在所述发送步骤发送到WN或所述另一包围区的所述请求是以从所述WN或另一包围区导出的所述公钥进行加密;
[0135] *所述程序的执行还包括产生针对WN或另一包围区限定的消息,所述消息含有所述信息以及对应于所述信息的所述程序的执行的凭证;
[0136] *从WN或从另一包围区接收的所述消息还含有由所述WN或另一包围区对对应于所述信息的所述程序的执行的凭证;
[0137] *从所述WN或另一包围区接收的所述消息是以加密状态接收,归功于所述包围区的公钥,且是以所述包围区的秘密密钥解密;
[0138] *所述包围区还包括能够在由另一包围区接收到含有认证所述第一程序处于执行过程的凭证的请求和导出的所述对密钥中的所述公钥后产生且传回含有借助于所述公钥加密的至少一个部分(有效负载)的消息的构件;
[0139] *所述接收的请求还含有随机密钥和所述加密构件以便传回含有此密钥的消息。
[0140] 此外,实施智能合约的安全过程通常与实体世界完全断开联系。在此方面,使在过程中实施的处理单元与外部世界通信在原理上会带来可能的欺诈。
[0141] 本发明的一个方面旨在使得智能合约的执行能够与现实世界联系,如稍后将见到,同时保存此执行的安全性。
[0142] 为此目的,提出一种安全的片上系统(SoC),在所述片上系统中以仅能够由所述SoC访问的方式存储有SoC私钥,或所述SoC能够动态地重新产生此私钥,所述SoC能够通过消息与另一装置通信且能够响应于接收到消息而执行智能合约(WP),且能够存储将在安全处理条件中执行的至少一个智能合约,所述SoC还包括在所述系统与包括至少一个传感器和/或致动器的外部模块之间进行通信的构件,这些构件至少在系统侧上包括通信管理单元,以及保障所述通信安全从而能够至少防止一个模块被另一模块替换的构件,至少一个智能合约的执行能够从所述管理单元接收来自所述模块的传感器基准作为输入和/或向所述模块发出激活基准作为输出。
[0143] 一些优选但是非限制性的方面如下:
[0144] *所述系统包括在智能合约的执行的背景下借助于所述私钥对从所述模块接收的传感器基准进行签署且将所述签署的基准发送到构成所述智能合约的一方的另一安全装置的构件;
[0145] *所述系统包括从构成智能合约的一方的另一安全装置接收签署的激活指令以便验证所述签名且将所述指令应用于所述模块的构件;
[0146] *所述安全性构件包括学习所述SoC与所述模块之间的连接的至少一个永久性质的构件;
[0147] *所述学习构件能够存储所述连接处的所述性质,且所述安全构件能够周期性地比较当前性质与存储的性质;
[0148] *所述连接是有线的,且所述性质是阻抗性质;
[0149] *所述连接是无线的,且所述性质包括所述连接的时域和/或频域的至少一个特性;
[0150] *所述性质包括所述连接的时域和/或频域的特性的组合;
[0151] *所述模块包括形成RFID标记的部分;
[0152] *所述模块包括以防篡改方式固定到现成的传感器和/或致动器的标准无线通信标记;
[0153] *所述标记是RFID标签;
[0154] *所述安全性构件包括所述系统与所述模块之间的逻辑配对的构件;
[0155] *所述安全性构件包括验证配对的持久性的构件;
[0156] *所述验证配对的持久性的构件和/或所述通信构件包括将临时标志发送到所述模块且考虑所述临时标志而分析来自所述模块的响应;
[0157] *所述系统包括用于来自所述模块/针对所述模块限定的来自所述传感器和/或致动器的数据的特定存储器,以及所述存储器的管理单元,所述管理单元能够在来自被授权访问这些数据的智能合约当中的智能合约的执行期间读取和/或写入数据到所述存储器中;
[0158] *所述存储器管理单元形成一般存储器管理单元的部分,所述一般存储器管理单元还包括对分别与不同智能合约相关联的智能合约存储器和数据存储器的访问的管理单元;
[0159] *所述一般存储器管理单元还包括用于由消息中包含的交易接收的计算单位(标记)的存储器的管理单元,所述管理单元能够在来自被授权访问这些计算单位的智能合约当中的智能合约的执行期间读取和/或写入所述计算单位存储器中的数据;
[0160] *所述一般存储器管理单元能够从到达所述系统的消息中含有的智能合约指定加载智能合约用于执行;
[0161] *来自所述模块/针对所述模块限定的传感器和/或致动器数据是在智能合约的执行构件与所述通信管理单元之间在运行中传输。
[0162] 其它方面
[0163] 相对于上文所提到的定性优点,论文《为何多智能合约使用情况完全不可能(Why Many Smart Contract Use Cases Are Simply Impossible)》http://www.coindesk.com/three-smart-contract-misconceptions/]描述了以太坊关于与外部世界的交互的限制(特定来说参见“联系外部服务”:
[0164] “所提出的第一使用情况经常是响应于某个外部事件而改变其表现的智能合约。举例来说,基于给定月的降雨量而有条件地给付的农业保险单。
[0165] 想像的过程是这样的:智能合约一直等到预定时间、从外部服务获取天气报告,并基于接收到的数据以适当方式表现。
[0166] 这全部听起来足够简单,但也是不可能的。为什么?因为区块链是基于共识的系统,意味着其仅在处理每个交易和块之后每个节点到达相同状态的情况下才工作。
[0167] 在区块链上发生的任何事必须是完全确定性的,不存在差异蠕变的可能方式。在两个诚实节点关于链的状态不一致的时刻,整个系统变成无价值的。
[0168] 现在,回想由链上的每个节点独立地执行智能合约。因此,如果智能合约从外部源检索一些信息,那么此检索是由每一节点重复且单独地执行。但因为此源在区块链的外部,所以不保证每个节点将接收到相同回答。
[0169] 所述源可能将在来自不同节点的请求之间的时间中改变其响应,或可能将变为临时不可用。无论哪种方式,共识都被打破且整个区块链无用。因此,解决方法是什么?实际上,这是相当简单的。并非智能合约发起外部数据的检索,而是一个或多个受信任方(“预言机”)创建将所述数据嵌入于链中的交易。每个节点将具有此数据的相同副本,因此其可在智能合约计算中安全地使用。”(sic)
[0170] 首先通过允许“钱包节点”WN(参见WO2016120826A2)通过利用端到端TLS协议以安全方式直接访问任何https网站(因此限制对“预言机”智能合约的需要)来克服此缺陷。此访问可实施于能够冗余地访问数据源的多个“克隆WN”(是镜像节点的特定实施方案,参见“镜像WN”中的部分)上。关于所述源对两个请求之间的响应的修改的风险,克隆WN能够彼此协调,以便根据预先商定的规则(取决于配置参数)处理对相同请求的不同响应的情况(取决于例如采取大多数、平均等方法)--与以太坊节点访问网络相比引入了基本优点,因此避免了受信任第三方的调解。
[0171] 上文引用的论文接着提到需要向外界发出消息:
[0172] “关于智能合约在外部世界中引起事件来说,相似问题出现。举例来说,许多人喜欢调用行的API以便转移金钱的智能合约的想法。但如果每个节点在链中独立地执行代码,那么谁负责调用此API?
[0173] 如果答案是仅一个节点,那么如果所述特定节点故障则会发生什么,有意地还是非有意地?”
[0174] 通过允许可靠的协议的实施方案来克服此缺陷,由此预期向外部世界发出消息的节点的镜像节点中的仅一个发出此消息(参见下文的“WN向外部世界发出消息”部分)。(sic).
[0175] 在上文所提及的两个使用情况中,以太坊节点关于网络的固有限制与其分散目标背道而驰;参见上述文章:
[0176] “它们都要求受信任实体管理区块链与外部世界之间的交互。虽然这是技术上可能的,但这有损分散型系统的目标。”(sic).
[0177] 上文所提到的文章中描述的以太坊的另一显著限制是其固有的非保密性
[0178] “如果一个智能合约无法访问另一智能合约的数据,那么我们已经解决区块链保密性的问题?在智能合约中隐藏信息的话题有意义吗?不幸的是,答案是没有。
[0179] 因为即使一个智能合约无法读取另一智能合约的数据,所述数据仍存储在链中的每个单个节点上。对于每一区块链参与者,它是在所述参与者完全控制的系统的存储器或磁盘中。且没有什么事可以阻止他们从其自身的系统读取信息(只有当他们选择这样做时)。”
[0180] 通过由本发明提出的硬件架构实现的WN的盲性质(意味着“延伸到硬件的保密性”)克服了以太坊的此主要限制。
[0181] 以太坊智能合约被视为“加密‘盒’,其含有价值且仅在满足某些条件的情况下才解”[取自先前引用的以太坊白皮书的短语],而根据本发明的系统,智能合约被实施为在钱包节点网络的节点(WN)之间的钱包程序(WP)可执行合约且具有以下特性:
[0182] ●WN通过钱包消息(WM)进行交互;
[0183] ●每一WM指定接收者WN必须执行的WP以便对其进行处理;
[0184] ●WM能够含有从发出者WN到接收者WN的一个或多个“价值”转移交易;
[0185] ●将属于接收者WN(或至少将由接收者WN管理)的价值可通过产生其它交易而按其次序转移(在一般来说可不同于在向其转移价值的WM中指定的WP的WP的执行的背景下);
[0186] ●WN系统在每一WN中包括用于防止这些价值的重复花费的构件,以及
[0187] ●WN有利地包括用于对一个或多个被授权WP预先安排这些价值的消耗的构件。
[0188] 然而,所述“加密盒”可容易地建置到WN中。因此,本发明的系统组合合约的常规想法(“应该‘满足’或‘符合’的某物”)与以太坊的想法(“实际上,它们更类似于存在于以太坊执行环境内部的‘自主代理’,当通过消息或交易‘戳进(poke)’时始终执行一段特定代码,并且能够直接控制它们自己的以太币余额和它们自己的密钥/价值存储以跟踪永久变量”)[短语同样取自先前引用的以太坊白皮书]。
[0189] WN与以太坊节点相当:基于一对密钥的公钥确定的以太坊节点的地址类似于基于所讨论的WN的公钥确定的WN的地址。在WN中,智能合约是钱包程序可执行代码(通过其散列“#WP”识别),可从例如Solidity等语言编译的代码[http://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html(此处以引用的方式并入)]但具有改编而允许WN访问网络,以使得由WN产生的交易可以任何单位(而不仅仅是以太币)等来转移价值。
[0190] 而在以太坊中,合约的执行是在验证合约的大量(微小的)节点上执行,在WN的情况下,当执行合约(WP)时,其中已触发此执行的节点是执行合约的仅一个节点且具有其自身的永久状态变量。WN在此意义上表示更一般的模型,因为节点的永久变量是通用的,它们并不单独表示以太币余额且不一定是用于执行合约的所有节点的与合约相关联的变量(它们不一定是构成以太坊合约的密钥/价值存储的共享变量[参见先前引用的以太坊白皮书])。
[0191] WN通过硬件约束并且有利地通过冗余(用于更多的安全性)来保证执行的完整性,所述节点则是通过以同步方式存储、操纵和维持对所述虚拟节点特定的多个镜像节点实施的虚拟节点。
[0192] 在名称为“具体实施方式”的部分的开始参考图23的描述是有用的。
[0193] 此外,我们旨在通过以下方式使得在WN上执行智能合约(WP)成为可能:使用比特币区块链(或另一区块链),基于涉及的WN的指令在区块链中产生和插入仅一些交易,这提供的三重优点是在比特币中具有智能合约的能力,避免了其共识协议的缓慢,以及不用支付交易费用(对于未插入区块链中的交易)。“链外比特币交易”部分描述了使得价值单位(例如比特币或以太币)能够由不同类型的WP消耗的方法,即为基于比特币的系统赋予例如以太坊等系统的智能合约的能力的方法。
[0194] 比特币协议强加了逐块等待交易确认的需要,这取决于采用的方法当前会各自花费几秒到约十分钟,且限制了交易的量。以太坊以及在申请人名下的FR 3 018 377 A1中描述的方法实现了可执行合约的分散型执行。侧链技术基本上被设计成使得能够以比特币中设想的方式除外的方式管理承诺和交易,且能够按需求返回到原始比特币[https://blockstream.com/sidechains.pdf](本发明基本上已实现)。近年来,除这些系统之外,还已经针对以太坊提出例如“闪电网络”[https://lightning.network/lightning-network-paper.pdf]的“状态通道网络”以及《支付通道网络》[http://raiden.network/],以避免对每一交易使用区块链的需要。此方法涉及节点监视区块链以在并不反映当前状态的交易插入的情况下做出反应,以便矫正此问题,这需要实施锁定来保障观测时间窗,从而相当大地减慢过程。本发明通过保证从开始提供的WP的执行完整性来克服此难题,由WN产生的插入交易并不需要监视。
[0195] 此外,应注意,根据本发明提出的硬件确保了不会公开的处理,这是主要由安全环境提供的性质(称为“保密性”),所述安全环境例如新型英特尔处理器的安全“SGX”环境(包围区),且已知对用于上的处理的同态加密进行研究,这提供了执行完整性的保证以及经处理数据或甚至执行代码的不公开。然而,同态加密技术仍在研究阶段,且只有在受限制或特定情况下才起作用。
[0196] 将记住申请案WO2016/120826A2描述了集成到例如智能电话、物联网(IoT)的连接事物或甚至计算机等连接装置中或与其耦合的片上系统(SoC,称为“钱包节点”或“WN”,或甚至“实体”),从而提供执行完整性的保证以使得其不同部分之间的访问限制无法被更改或规避。基本上,WN的唯一可能执行是通过验证它的完整性以及接着执行对应于此消息中指定的散列的可执行钱包程序代码来对传入消息做出反应。参考此PCT申请,在当前文字中,“消息”意味着“钱包消息”,除非以其它方式明确陈述。
[0197] 取决于所属领域的技术人员视为兼容的组合,以上方面可以与之组合的其它方面的定义。
[0198] 根据另一个方面,提出一种在由通信的计算机处理单元实施的网络的节点之间建立连接权重的方法,每一节点与公钥和私钥相关联,给定节点能够将其公钥传送到另一节点,因此形成所述两个节点之间的所谓的真实连接(“IRL连接”),且每一节点还能够向另一节点传送从又一节点接收的公钥,因此形成所述另一节点与所述又一节点之间的所谓的间接连接,节点能够相对于其具有真实或间接连接的另一节点具有特定连接权重,所述方法包括为了确定第二节点相对于第一节点的连接权重而计算IRL连接到第二节点的第三节点的加权因数(影响、接近度)的确定组合。
[0199] 有利地但任选地:
[0200] *第二节点的连接权重影响第三节点的加权因数,且还包括在计算第二节点的连接权重之后更新第三节点的加权因数的值;
[0201] *所述方法迭代地实施直到收敛;
[0202] *在第一节点与另一节点之间建立所谓的真实连接(IRL连接)包括以下步骤:
[0203] 在实施第一节点的第一处理单元,做出对可通过接近读取来访问的随机基准(临时标志)进行加密的机器可读代码;
[0204] 在实施另一节点的另一处理单元,读取所述机器可读代码,提取所述随机基准且计算所述随机基准的散列;
[0205] 经由通信信道从所述另一处理单元向第一处理单元传输与所述另一节点相关联的公钥以及用其私钥执行的随机基准的(散列的)签名;
[0206] 在第一处理单元,借助于接收的公钥和用以产生机器可读代码的随机基准检查所述签名,且如果验证成功则保存所述公钥;
[0207] *在第一节点与另一节点之间建立所谓的真实连接(IRL连接)包括以下步骤:
[0208] 在实施第一节点的第一处理单元,产生通行短语且使其对所述第一处理单元的用户是可访问的;
[0209] 在实施另一节点的另一处理单元,输入所述通行短语,所述通行短语由第一处理单元的用户通过通信信道传送到另一处理单元的用户,这涉及所述两个用户之间的人动作;
[0210] 经由通信信道从所述另一处理单元向第一处理单元传输与所述另一节点相关联的公钥以及用其私钥实现的所输入短语的(散列的)签名;
[0211] 在第一处理单元,借助于接收的公钥和对第一处理单元的用户最初可访问的通行短语来验证所述签名,且如果验证成功则保存所述公钥;
[0212] *多个第二节点具有与第一节点的连接权重,并且其中确定第二节点相对于第一节点的连接权重还基于所述其它第二节点相对于第一节点的连接权重。
[0213] 根据另一方面,提出一种用于确定由通信的计算机处理单元实施的节点网络中的第一节点的影响的方法,一个公钥和一个私钥关联到每一节点,一个节点能够向另一节点传送其公钥,因此在这两个节点之间形成所谓的真实连接(IRL连接),且每一节点同等地能够向另一节点传送从又一节点接收的公钥,因此在所述另一节点与所述又一节点之间形成所谓的间接连接,所述方法包括:基于与给定节点具有真实连接的第二节点的数目且基于通过所述方法确定的连接权重的值来确定所述给定节点的影响因数,其中多个第二节点具有与第一节点的连接权重,且其中对于不同的第二节点,确定给定第二节点相对于第一节点的连接权重还基于所述其它第二节点相对于第一节点的连接权重。
[0214] 有利地但任选地:
[0215] *第二节点相对于第一节点的连接权重还基于具有与所述第二节点的真实连接的第三节点的相应影响因数值而确定;
[0216] *迭代地确定连接权重和影响因数的值,直到它们收敛成不再显著变化的值为止。
[0217] 根据另一方面,提出一种方法以便在由通信的计算机处理单元实施的网络的节点之间建立所谓的准真实连接,每一节点与公钥和私钥相关联,给定节点能够将其公钥传送到另一节点,因此在所述两个节点之间形成所谓的真实连接(IRL连接),且每一节点还能够向另一节点传送从又一节点接收的公钥,因此在所述另一节点与所述又一节点之间形成所谓的间接连接,每一节点能够相对于其具有真实或间接连接的另一节点具有特定连接权重,所述方法包括以下步骤:
[0218] 在要建立连接的第一节点和第二节点之间,从在第一节点与第二节点之间的相对于第一节点具有最高连接权重的那些中间节点当中选择多个中间节点;
[0219] 从第一节点向所选的中间节点传送既定传送到第二节点的随机基准(临时标志);
[0220] 经由节点之间的通信信道的一个或多个单独通信信道,从中间节点向第二节点冗余地传送所述随机码以及所述中间节点的公钥;
[0221] 在第二节点,响应于接收到冗余随机码,借助于第二节点的私钥产生随机码的签名,且分别向中间节点传回借助于中间节点的公钥加密的所述签名以及第二节点的私钥;
[0222] 在中间节点中的每一个处,验证从第二节点接收的随机码的签名,且如果成功则向第一节点传送借助于第一节点的公钥加密的第二节点的公钥,以及
[0223] 在第一节点,解密且存储第二节点的公钥;
[0224] 接着,第一节点和第二节点能够交换加密信息,其安全性与中间节点的连接权重相关。
[0225] 有利地但任选地:
[0226] *中间节点的选择还从相对于第二节点具有最高连接权重的那些中间节点当中做出;
[0227] *由第一节点和中间节点形成的节点集合通过实施以下步骤而联合地产生随机码:
[0228] 在所述集合的每一节点处产生随机码;
[0229] 在所述集合的节点之间交换所述随机码的散列,其中使用节点的相应密钥进行加密;
[0230] 在随机码在所述集合的所述节点之间时交换所述随机码,其中使用节点的相应密钥进行加密;
[0231] 在所述集合的每一节点处验证所述随机码在当前情况下对应于在前一步骤接收的它们的相应散列,以及
[0232] 通过在所述集合的每一节点处产生的随机码的预定组合产生既定传送到第二节点的最终随机码;
[0233] *所述单独通信信道是基于社交网络,且包括由第二节点在所述社交网络上公布所述随机码的签名和其公钥的步骤;
[0234] *所述方法还包括响应于从第二节点接收的随机码的签名的验证步骤的成功,指派第二节点相对于第一节点的连接权重的步骤;
[0235] *根据第一方面的方法用于包括具有根据第三方面建立的准真实连接的节点的网络中,且准真实连接被认为是所述方法意义上的真实连接,其中权重考虑到连接的准真实性质。
[0236] 根据另一个方面,提出一种用于保障节点网络的操作安全的方法,所述节点能够响应于接收到消息(WM)而执行程序(WP),所述节点能够根据通过根据第一方面的方法或通过根据第三方面的方法确定的不同连接权重而连接在一起,所述方法包括在接收者节点接收到消息(WM)时,将已发出此消息的节点的连接权重与接收者节点具有真实连接的其它节点的连接权重进行比较,且仅在发出者节点的连接权重等于或大于所述连接权重中的最小连接权重的情况下才接受所述消息。
[0237] 根据另一方面,提出一种用于保障节点网络的操作安全的方法,所述节点能够响应于接收到消息(WM)而执行程序(WP),所述节点能够根据具体来说通过根据第一方面的方法或通过根据第三方面的方法获得的不同连接权重而连接在一起,或响应于从第二节点接收的随机码的签名的验证步骤的成功,设想第二节点相对于第一节点的连接权重的分配步骤,所述方法包括以下步骤:
[0238] 基于连接权重值,向每一节点指派相对于其具有超过阈值的连接权重的至少一个会签者节点;
[0239] 在每一节点,保持能够从所讨论的节点接收消息(WM)的节点的会签者节点列表,每一节点和其会签者节点形成一组镜像节点;
[0240] 当消息必须由发出者节点发送到接收者节点时,触发由发出者节点的至少一些镜像节点将此消息发送到接收者节点的至少一些镜像节点;
[0241] 仅在已接收到发出消息的给定部分时才验证所述消息。
[0242] 有利地但任选地:
[0243] *消息发出到接收者节点的所有镜像节点;
[0244] *消息由发出者节点以及单独由发出者节点的会签者节点发出,所述会签者节点也是接收者节点的会签者;
[0245] *从第一节点发送到第二节点的消息仅在出现以下情况时才由第二节点验证:
[0246] 第一节点与第二节点的镜像节点的相应集合具有相交区,其元素的数目超过某一阈值且如果
[0247] 所述第二节点已(冗余地)通过属于此相交区的所述镜像节点的至少给定部分接收到此同一消息;
[0248] *在实施于包括根据第五方面的镜像节点的网络中的根据第一方面的方法中,节点仅在所讨论的节点连接权重至少等于与给定节点具有真实连接的节点的连接权重中的最小连接权重时才被视为所述给定节点的会签者。
[0249] 根据另一方面,提出一种用于保障节点网络的操作安全的系统,所述节点能够响应于接收到消息(WM)而执行程序(WP),所述节点能够根据不同连接权重彼此连接,所述系统能够:
[0250] 基于连接权重值,向每一节点指派相对于其具有超过阈值的连接权重的至少一个会签者节点;
[0251] 在每一节点,保持能够从所讨论的节点接收消息的节点的会签者节点列表,每一节点和其会签者节点形成一组镜像节点;
[0252] 当消息必须由发出者节点发送到接收者节点时,触发由发出者节点的至少一些镜像节点将此消息发送到接收者节点的至少一些镜像节点。
[0253] 有利地但任选地:
[0254] *接收到消息(WM)的节点仅在发出者和接收者节点的镜像节点的相应集合具有元素数目超过给定阈值的相交区且接收者节点已从属于此相交区的所述镜像节点的至少给定部分接收到此同一消息(冗余地)的情况下才验证所述消息。
[0255] 根据另一方面,提出一种用于保障节点网络的操作安全的系统,所述节点由能够响应于接收到消息(WM)而执行程序(WP)的片上系统形成,其特征在于所述系统组合了以下两个架构:
[0256] -在每一节点,基于传入消息中含有的这些程序的散列而访问加密程序的架构;
[0257] -在每一节点,用于确定会签者节点、从/向会签者节点复制消息且确定所接收消息的相同性质的架构。
[0258] 根据另一方面,提出一种用于保障包括一组联网装置的架构中的程序的安全执行的系统,其特征在于所述系统在至少一个装置中包括安全片上系统(SoC),所述安全片上系统中以仅对所述SoC可访问的方式存储有SoC私钥,或所述SoC能够动态地重新产生此私钥(PUF技术);
[0259] SoC能够仅通过消息与另一装置通信且能够仅响应于接收到消息而执行程序;
[0260] SoC能够存储将在由SoC加密之后执行的至少一个程序且产生使得能够检索加密程序的所述程序或每一程序的散列;
[0261] 所述装置还能够向SoC发送含有用于将执行的某一程序的输入数据的消息,以及所述程序的散列(#P2),SoC能够响应于此消息以安全方式(i)基于消息中接收的程序的散列(#P2)访问将执行的经编码程序,(ii)在运行中解密程序指令,且(iii)在运行中执行解密的指令。
[0262] 有利地但任选地:
[0263] *在通过SoC发出消息之前,SoC将处于执行过程中的程序的散列(#P1)以及借助于SoC的所述秘密私钥对此散列的签名插入在待发出消息中;
[0264] *在通过SoC发出消息之前,SoC将处于执行过程中的程序的散列(#P1)插入在待发出消息的主体中,SoC借助于SoC的秘密私钥对所述待发出消息的主体进行签名;
[0265] *SoC包括加密存储器管理单元(CMMU),其中存储或能够动态地重新产生(PUF技术)仅可由CMMU访问且从不公开的SoC的秘密密钥,且通过此CMMU执行以下动作:
[0266] -在存储之前对程序的所述加密;
[0267] -用于如此加密的程序的存储器地址分配(addr1...addr2范围);
[0268] -程序散列的所述产生,以及
[0269] -用于由SoC中含有的至少一个处理器单元在运行中执行的所述解密;
[0270] *CMMU逐个指令块进行加密和存储,且为所述处理器每次提供经解密指令的一个块以用于在运行中执行经解密指令;
[0271] *在通过SoC发出消息之前,CMMU将处于执行过程中的程序的散列(#P1)以及CMMU借助于SoC的所述秘密私钥对此散列的签名插入在待发出消息中;
[0272] *在通过SoC发出消息之前,CMMU将处于执行过程中的程序的散列(#P1)插入在待发出消息的主体中,CMMU借助于SoC的秘密私钥对所述待发出消息的主体进行签名;
[0273] *SoC能够发出针对处于执行过程中的程序(#P1)且针对将由接收者执行的程序具有相同散列(#P1=#P2)的消息,此程序(P1=P2)在所述消息的接收者是SoC的情况下是可执行承诺(智能合约)。
[0274] 根据另一方面,提出一种既定形成网络的钱包节点(WN)的片上系统,其包括能够确保至少一个SoC处理器对程序的盲执行的加密存储器管理单元(CMMU),其中:
[0275] ●在CMMU中以仅可由CMMU访问的方式存储(或动态地重新产生)私钥(秘密密钥)[0276] ●CMMU能够存储将在由CMMU加密之后执行的至少一个程序且产生使得能够检索加密程序的所述程序或每一程序的散列;
[0277] ●所述处理器能够仅在所述CMMU的命令下执行程序;
[0278] ●SoC与网络的另一节点之间的交互是通过消息单独进行且消息是由CMMU单独接收/发出;
[0279] ●消息含有通过其散列识别的将执行的某一程序的标识;
[0280] ●响应于接收到消息,CMMU(i)基于消息中接收的程序散列访问将执行的加密程序(具体来说经由PHT),(ii)解密程序指令,且(iii)向处理器传输以便对所述接收的数据执行解密的指令。
[0281] 有利地但任选地:
[0282] *所述或至少一个处理器能够经由CMMU访问且操纵(创建、更新、删除)与给定程序相关联的永久状态值(PSV),所述永久状态值也由CMMU加密且存储于存储器中并在运行中解密;
[0283] *将执行的所述程序和其永久状态值(PSV)存储于特定地址空间中,从而确保它们相对于其它程序的隔离;
[0284] *消息能够含有从发出者节点到接收者节点的一个或多个计算单位(UA)转移交易,由接收者节点接收的计算单位能够通过由所述接收者节点发出的消息中含有的交易重新转移;
[0285] *所述方法包含用于由交易接收的计算单位(标记)的存储器空间;
[0286] *所述方法能够在将发出的同一交易中组合不同标记的计算单位;
[0287] *CMMU包括对馈送所发出交易的标记进行中和的构件,以使得因此消耗的UA无法被另一交易消耗;
[0288] *CMMU包括控制不同程序对标记的使用的构件,以使得仅被授权程序可以馈送将从给定标记产生的交易;
[0289] *所述存储器在SoC中;
[0290] *所述存储器与SoC分开;
[0291] *可替代地在给定程序的超时过去后触发程序,且CMMU还能够在与程序的散列相关联的超时发生时:(i)基于此散列在存储器中访问加密的程序,(ii)对程序指令进行解密,且(iii)向处理器传输以便执行解密的指令;
[0292] *CMMU在存储器中逐个指令块执行所述加密和存储,且每次为所述处理器提供一个经解密块,用于在运行中执行;
[0293] *在发出消息之前,CMMU单元将处于执行过程中的程序的散列(#P1)以及CMMU借助于所述秘密私钥对此散列的签名插入在待发出消息中;
[0294] *在发出消息之前,CMMU将处于执行过程中的程序的散列(#P1)插入在待发出消息的主体中,CMMU借助于所述秘密私钥对所述待发出消息的主体进行签名;
[0295] *CMMU能够发出具有对处于执行过程中的程序(#P1)和将由接收者执行的程序(#P2)来说相同的散列(#P1=P#2)的消息,此程序(P1=P2)因此在所述消息的接收者也是SoC的情况下是可执行承诺(智能合约),其中在通过SoC发出消息之前,SoC将处于执行过程中的程序的散列(#P1)以及借助于SoC的所述秘密私钥对此散列的签名插入在待发出消息中;
[0296] *某些消息(WM)构成存储于系统中的标记转移消息,所述系统具有用于由交易接收的计算单位(标记)的存储器空间,且在接收者节点处对标记转移消息的验证是仅在相交区处在接收者节点的镜像节点集合与此标记原始转移来的上游节点中的每一个的镜像节点集合之间存在超出给定阈值的若干节点的情况下才执行。
[0297] 根据另一方面,提出一种具有对等架构的交易系统,其实施交易而使得能够在单位发出者节点与单位接收者节点之间转移计算单位,每一交易具有参考前一交易的输出的输入(或各自参考前一交易的输出的若干输入)且自身具有指定计算单位数目和接收者节点的至少一个新输出,通过在节点之间以分布式方式存储的区块链中插入交易的签名来验证每一交易是可能的,其特征在于交易中的至少一些是由能够确保所述交易的盲条件的节点执行,其特征在于所述系统包括用于处理满足盲条件的一组交易以便基于这些交易中涉及的计算单位量以及发出者节点和接收者节点的地址来简化此组交易的构件,以便产生较小的一组交易且在区块链中产生且存储仅所述较小组交易的交易的签名。
[0298] 根据另一方面,提出一种具有对等架构的交易系统,其实施交易而使得能够在单位发出者节点与单位接收者节点之间转移计算单位,每一交易具有参考前一交易的输出的输入(或各自参考前一交易的输出的若干输入)且自身具有指定计算单位数目和接收者节点的至少一个新输出,通过在节点之间以分布式方式存储的区块链中输入交易的签名来验证每一交易是可能的,其特征在于交易中的至少一些是由能够确保所述交易的盲条件的节点执行,其特征在于所述系统包括用于处理满足盲条件的一组交易以便基于这些交易中涉及的计算单位量以及发出者节点和接收者节点的地址来简化此组交易的构件,以便产生较小的一组交易且因此在区块链中产生且存储仅所述较小组交易的交易的签名中的一些,且仅基于所涉及节点的指令。
[0299] 根据另一方面,提出一种用于在与用户相关联且能够在彼此之间转移计算单位且能够在彼此之间通过消息进行通信的网络节点之间执行交易的方法,每一消息指定在接收到此消息的节点中将执行的WP,且用户能够广播含有一个或多个竞价准则的竞价元素且能够在网络上发起交易,所述方法包括以下步骤:
[0300] -由竞价节点向已发出对应竞价元素的用户的请求节点发送满足准则(或多个准则)且向所述节点承诺的供应竞价消息,且识别给定WP;
[0301] -由请求节点向竞价节点发送接受所述供应竞价的消息,识别同一给定WP;
[0302] -产生可由竞价节点访问的供应的存在或可用性的性能凭证,其能够由所述给定WP验证;
[0303] -在至少所述两个节点中的一个处由给定WP验证所述凭证,且
[0304] -如果验证成功,那么在转移计算单位的消息的请求节点处的产生构成针对供应的考虑且将此消息发送到竞价节点。
[0305] 根据另一有利方面,在根据第二方面且实施于包括具有依据根据第三方面的方法建立的准真实连接的节点的网络中的方法中,准真实连接被认为是所述方法意义上的真实连接,其中权重考虑到连接的准真实特征。附图说明
[0306] 此处描述的系统和方法的另外方面、目的和优点将从以下借助于实例给出且参考附图做出的详细描述中更清楚地显现,其中:
[0307] 图1a、1b和2a、2b呈现计算用户的周围环境的连接节点的连接权重的方法。
[0308] 图3a至3d以图解方式呈现消息在镜像节点之间的发送。
[0309] 图4示出在钱包节点中由两个WP对永久状态变量(标记)的使用。
[0310] 图5a和5b以图解方式呈现标记转移交易。
[0311] 图6以图解方式呈现镜像节点在一连串消息传输标记转移交易的情况下的表现。
[0312] 图7示出包括有效的可执行代码的散列集合的规范的消息。
[0313] 图8示出在钱包节点之间的接收确认的传播。
[0314] 图9以图解方式呈现通过抽象比特币交易在钱包节点之间进行的支付的实例。
[0315] 图10至15以图解方式呈现对应于图9的抽象交易的真实比特币交易。
[0316] 图16以图解方式呈现通过抽象比特币交易在钱包节点之间进行的支付的另一实例。
[0317] 图17至19以图解方式呈现对应于图16中的抽象交易的真实交易。
[0318] 图20以图解方式呈现用于保证可能变成无响应性的钱包节点的承诺的方法。
[0319] 图21以图解方式呈现包括接收可执行程序的CMMU的SoC。
[0320] 图22以图解方式呈现包括接收消息的CMMU的SoC,所述消息含有用于将执行的程序的输入数据。
[0321] 图23呈现钱包节点的通用架构。
[0322] 图24以框图形式呈现主体SoC以及相关联传感器和致动器模块的通用架构。
[0323] 图25以操作框图形式呈现其中主体SoC潜在地实施不同WN的方式以及不同类型的存储器。
[0324] 图26示出用于保障树链交易安全的功能。
[0325] 图27至29以图解方式呈现未强制性广播的树链交易和相关联的安全过程。

具体实施方式

[0326] 下文中,术语“用户”可取决于上下文而描述网络的特定节点,每一节点拥有一对密码密钥。此外,术语“用户”除了当明显提到人类用户时之外还可描述与他/她相关联的装置或程序。举例来说,类型“用户A向用户B发送此数据”的指示意味着“与用户A相关联的装置或程序将此数据发送到与用户B相关联的装置或程序”。最后,相对于给定装置或程序,术语“用户”在某些情况下可描述另一装置或程序。
[0327] 现在以下是此网络的一些方面的描述,其中节点是钱包节点(Wallet Node,WN),这些节点分别与用户U相关联且能够借助于钱包消息(Wallet Message,WM)彼此通信,从而实现影响WN所关联的用户U的不同类型的交易或承诺(通常为智能合约型)。
[0328] 这些WN构成图形的节点,其中WN之间的连接构成图形边缘。
[0329] WN可为不同类型(软或片上系统或包围区),且WN之间的连接可以用符号表示或被加权。WM无法由源WN发送到目的地WN,除非所讨论的两个WN之间的连接满足某一记号和/或加权。
[0330] 此网络的实例在申请人名下的申请案PCT WO2016120826A2中描述,该案的内容以引用的方式并入本文中。术语“实体”、“钱包节点”、“WN”或简单地“节点”用以描述此网络的节点,且此节点是通过其公钥或从其导出的地址来识别,可能使用术语“密钥”和“地址”来表示节点的识别符,反之亦然。
[0331] 图23示出WN的架构。参考此图,“准WM”是(传入)消息,这些消息未由WN传输,但在它们含有将在接收到消息后即刻执行的WP的散列的意义上其格式类似于WM。因此,举例来说,当用户发起交易(经由WN配对于的他的/其终端)时,他的/其“准WM”含有产生此交易的WP的散列(此信息由终端自动添加)。另一实例,当WP将“非轻型”(参见下文)处理操作外包到远程计算机时,结果是以含有将其外包的WP的散列的“准WM”形式返回到WP。
[0332] 有利的是,此架构设想处理器的处理操作是轻型的,且WM和非WM的放出是无阻塞的:
[0333] ●无阻塞:WN相对于WM的响应是涉及第一个WM的另一WM。并非等待对传输的“非WM”阻塞的“用户”或“网络”响应的WP的执行-“用户”是用户的终端(例如计算机)且“网络”表示远程装置(例如计算机)-这些消息是同步调用,其回呼被转换为准WM。
[0334] ●轻型:当WP必须执行不是轻型的处理操作时(例如,将大约一百行乘大约一百列的两个矩阵相乘),WP将其外包(通过非WM)到能够在安全环境(例如新型英特尔微处理器的SGX包围区)中执行处理操作且能够返回执行的真实性和完整性的凭证的计算机[https://software.intel.com/en-us/articles/intel-software-guard-extensions-remote attestation-end-to-end-example]。
[0335] 由WN传输的“HTTPS”消息的目的是使WN能够在端到端HTTPS协议中访问数据源(在“受信任”网站上)。为了做到这一点,WN负责TLS握手(可通过使用例如“mbed TLS”[https://tls.mbed.org/]的库来实施,其模块是松散配对的且能够使用其部分而不必包含整个库)且执行所有密码操作,从而将负责较低层(TCP)的输入/输出接口的任务留给其所配对的终端,以确保所述端到端数据的完整性。
[0336] 有利的是,如同“非轻型”处理操作(由非WM外包),HTTPS中被视为“阻塞”的消息被外包到能够返回执行的真实性和完整性的凭证的计算机(SGX包围区)。实际上,(在等于给定阈值的持续时间之后)证明是阻塞的所传输的HTTPS消息被自动取消和外包。
[0337] 消息是轻型且无阻塞的事实使得能够实施WN而不需要最近的芯片制造技术且使WN在大量的WN制造者的能力范围内(且减少其成本),因此关于制造者也趋于鼓励进行分散,这是本发明设想的目标之一。稍后将描述应用的类别(在章节“无受信任第三方的知识交易”中)。
[0338] 最后,图23示出WM能够以交易(tx)的形式传送值(标记),如稍后在章节“标记”、“CMMU-加密存储器管理单元”和“对CCC的改进”中描述。
[0339] 现将详细地描述基于此类WN的系统的一些方面和特性。
[0340] 分散型身份
[0341] 首先,将描述用于基于通过沿着图形中的不同路径经过而在WN用户之间的识别来对WN指派连接权重的方法,随后将描述使用所述连接权重的不同方法。
[0342] 带外通道上的通信
[0343] 为了以分散型方式识别自身,个体可以经由相应的智能终端直接交换其相应公钥且向彼此确认与其相关联的属性。在此步骤很重要的是保护自身免受中间人(MitM)攻击。用于两个个体交换其密钥而无MitM攻击风险的方法(可适合于n个个体的方法)的实例如下:
[0344] 1.第一用户(和他的终端,例如移动电话)接近另一用户且向他示出临时标志(可仅使用一次的随机数),以基于此临时标志在他的终端中产生的QR码的形式呈现。
[0345] 2.所述另一用户(在附近,借助于他的终端)将此QR码拍照,解译此QR码以重构此临时标志,计算其散列(散列意味着应用通常预定的密码散列函数的结果),且以明文向第一用户返回他自身的公钥和所述临时标志的(散列的)他的签名。(应注意,替代于QR码或除了QR码之外,秘密的通行短语可经口通信,这在另一用户不在附近的情况下可在电话上完成,且另一用户在他的终端中计算此通行短语的散列而不是临时标志的散列,随后连同他的密钥一起返回他的签名)。
[0346] 3.第一用户的终端关于所接收的密钥和临时标志(和/或通行短语)验证签名,并保存所述另一用户的(公开)密钥。
[0347] 4.假定他们的终端是可靠的(参见WO2016120826A2中的钱包节点的描述),所述两个用户现在可以彼此通信加密信息(任选地通过产生/使用常用的Diffie-Hellman对称密钥)-显然将通过第一用户传送他的公钥(借助于另一用户的公钥加密)来开始。这些通信还包含每一用户先前能够通过使用相同的方法或密钥接收的其它用户的密钥,所述相同的密钥又是由再其它用户通过相同方法传送到这些其它用户,等等。
[0348] 第一用户的节点称为“IRL连接”(IRL为“现实中(In Real Life)”)到已经通过上文描述的方法传送其密钥的所述其它用户中的每一个的节点,每一节点是通过其公钥(或从其导出的地址)来识别。
[0349] 假定(如上所提到)节点还向彼此传送并未IRL连接但经由一个或多个中间节点间接连接的节点的密钥,则每一节点可重构网络的部分,从而构成其“周围环境”,且使“连接权重”关联于周围环境的每一节点。
[0350] 现将描述用于由第一节点(N1,用户)确定构成其周围环境的节点(全部称为“第二节点”)的相应连接权重(相对于第一节点)的方法的若干实施例
[0351] 通过节点N1的周围环境中的8个IRL连接(或“真实连接”)的实例说明所述方法,所述周围环境包括六个节点(包含N1),因此将针对它们确定连接权重。连接是双向的,且实线表示IRL连接。
[0352] 这些方法是根据可有利地通过学习来精炼的配置参数(例如阈值或加权系数)来实施。
[0353] 应注意,以引用的方式并入本文中的申请案WO2016120826A2描述如何完成此类分散型识别过程,具体地说,基于通过其它用户辨识的用户属性以及基于WN图形。
[0354] 此类方法可组合到一起。
[0355] 通过提炼得到的连接权重
[0356] 方法由第一节点(N1)实施,所述第一节点(N1)使它的周围环境的每一节点与连接权重和影响因数(隐式地默认它们等于零)相关联。最初,第一节点具有等于1的影响因数(且所有其它节点隐式地具有空影响因数)。所述方法包括以下步骤:
[0357] 步骤1:每一第二节点的连接权重是与第二节点IRL连接(或IRL连接到第二节点)的节点(被称为“第三节点”)的影响因数加上其先前连接权重的经归一化的总和。接着,连接权重再次进行归一化(也就是说,除以2)。
[0358] 步骤2:每一第三节点的影响因数是与第三节点IRL连接的(第二)节点的连接权重的经归一化的总和。
[0359] 步骤3:从步骤1开始重复这一过程,直到收敛为止(也就是说,只要在步骤2中确定的最后一个连接权重与先前连接权重之间的差保持大于阈值就重复)。
[0360] 图1a呈现节点之间的IRL连接的实例。由所述方法产生的通过第一节点与第一节点的周围环境的节点相关联的连接权重在每一节点上指示。应注意,IRL连接的节点3的连接权重(等于0.15)小于未IRL连接的节点5的连接权重(0.21),这是因为未IRL连接的节点5经由节点1和6的集群间接连接。
[0361] 有利的是,第一节点(用户)将仅从连接权重大于或等于其IRL连接到的节点的连接权重中的最小连接权重的节点接受消息(WM)。换句话说,对于用户,来自连接权重小于IRL连接到第一节点的所有节点的连接权重的节点的消息(WM)不是有效的。因此,在图1a中的实例中,N1接受从其周围环境的除节点4(其连接权重0.12小于IRL连接到第一节点的所有节点,也就是节点1、3和6的连接权重)之外的任何节点到达的消息(WM)。
[0362] 应注意,WM的验证可实施有应用于连接权重(根据配置参数确定,如已经论述的)的系数。因此,来自连接权重乘以给定系数小于IRL连接到第一节点的所有节点的连接权重的节点的消息(WM)不是有效的。
[0363] 图1b呈现这些相同节点置于一组第二节点(第2节点)和第三节点(第3节点)中。第三节点的相应影响因数和第二节点的相应连接权重是关于在第一次迭代之后的值在括号中指示,且当它们收敛时,它们加下划线指示。
[0364] 最后,在此方法的步骤1中,(根据配置参数,具体地说根据周围环境的大小确定的)系数可在添加之前有利地应用于所述先前连接权重。
[0365] 作为接近度的连接权重
[0366] 根据此变化,第一节点(用户)基于通向其的中间节点的数目(且基于配置参数)对第二节点指派“连接权重”。
[0367] 例如,权重1与第一节点自身相关联;权重0.5与IRL连接到第一节点的节点相关联,且权重0.25与IRL连接到与第一节点IRL连接的节点的节点相关联,等等,在每次添加额外的中间节点后将它们除以2(如果那是参数)。
[0368] 通向同一节点的每一额外路径进一步增加了与此节点相关联的连接权重。例如,如果对于与当前连接权重0.25相关联的节点,另一路径贡献0.12,那么与此节点相关联的因数增加此额外贡献的一半(如果那是参数),即,0.25+0.12/2=0.31(额外贡献的一半加上最高贡献)。
[0369] 将连接权重归一化。图2a示出作为与节点N1的“接近度”的连接权重的实例,所述连接权重通过此节点而与它的周围环境的节点相关联。
[0370] 混合方法
[0371] 第一节点(用户)向第二节点指派“连接权重”,如下:
[0372] 在第一节点的周围环境中的节点当中
[0373] ●存在的IRL连接到第二节点的第三节点越多
[0374] ●且它们越接近第一节点,
[0375] 第一节点到第二节点的连接的权重越大
[0376] ●第三节点的影响还是IRL连接到第三节点的第二节点的连接权重的函数。
[0377] 如在“通过提炼得到的连接权重”方法的情况下,此环形定义需要通过连续精炼操作直到收敛(或准收敛,也就是说,直到额外迭代的增益变成可以忽略)的迭代方法,在所述方法中,给定节点又可扮演第二和第三节点的色。
[0378] 实施所述方法可包括以下步骤:
[0379] 步骤1:接近度因数(到第一节点的接近度)基于配置参数而与用户的周围环境的每一节点相关联,如先前部分“作为接近度的连接权重”中所描述。
[0380] 步骤2:连接权重与用户的周围环境的每一(第二)节点相关联,所述连接权重等于IRL连接到(第二)节点的(第三)节点的相应接近度的(经归一化的)总和。
[0381] 步骤3:影响因数与用户的周围环境的每一(第三)重新(相关联),所述影响因数等于用户的周围环境的(第二)节点的连接权重的总和。此因数是经归一化的。
[0382] 步骤4:新连接权重与用户的周围环境的每一(第二)节点相关联,所述新连接权重等于“影响*接近度”乘积的(IRL连接到第二节点的节点上的)经归一化的总和,[0383] “影响*接近度”乘积是经归一化的,也就是等于IRL连接到第二节点的用户的周围环境的(第三)节点的相应影响的经归一化的总和,所述影响通过(第三)节点到第一节点的相应接近度(或这些因数的另一组合,如下所述)进行加权。
[0384] 步骤5:只要在步骤4中确定的最后一个连接权重与先前连接权重之间的差保持大于阈值(基于配置参数),就从步骤3开始重复进行。
[0385] 基于连接权重待确定的6个节点的周围环境的相同实例,在图2a和2b中说明此方法。
[0386] 图2a表示用户的周围环境的节点,所述节点具有它们相对于第一节点(通过“2”标识)的相应接近度因数(在步骤1中计算),因数以斜体形式指示。
[0387] 图2b表示两个集合中的这些相同节点:第三节点(“第3节点”)的集合和第二节点(“第2节点”)的集合。此图指示(在括号中)每一第二节点的初始连接权重(在步骤2中相对于第一节点计算)(为IRL连接到第二节点的第三节点的相应接近度的总和)。初始影响因数(在步骤3的第一次执行中计算)在每一第三节点左边的括号中指示(此因数等于第三节点IRL连接到的节点的连接权重的总和)。在收敛之后的在步骤4计算的连接权重(相对于第一节点)通过加下划线指示(在第2节点中)。
[0388] 在此实例中,对于节点“4”具有值0.09的初始连接权重(在图2b中第二节点中在括号中指示)是通过将节点“3”和“5”的接近度因数(在图1a中指示)相加并随后将此加法的结果除以连接权重的总计以便将其归一化而获得(0.14+0.12)/2.76=0.09)。与节点“3”相关联的值0.09的初始影响因数(在图2b中第三节点中在括号中指示)是通过将节点“2”和“4”的初始连接权重(在图2a中第二节点中在括号中指示)相加并随后将此加法的结果除以影响因数的总计以便将其归一化而获得(0.18+0.09)/2.96=0.09)。在最后步骤中,通过将“影响*接近度”乘积相加(并通过对其进行归一化)获得连接权重。此处,方法在三个步骤中收敛以向与节点“3”相关联的最终影响因数(在图2b中在第三节点中通过加下划线指示)提供值0.1,并且向节点“4”的最终连接权重(在图2b中在第二节点中通过加下划线指示)提供值0.05。关于节点5的最终连接权重,方法收敛到值0.13,其等于节点3的值。
[0389] 最终,在最后变化中,在混合方法的步骤4中,用于计算连接权重的表达式的“影响*接近度”项可被类型“λ*影响+(1-λ)*接近度”的表达式代替,且λ系数通常可采用值0.5。有利的是,通过步骤5的每一次迭代,此系数增加,每一第三节点的接近度因数(到第一节点的接近度)因此逐渐为与其IRL连接的第二节点的到第一节点的连接的权重让路。
[0390] 可以组合用于确定连接权重的方法的各种实施例,例如上方呈现或在申请案WO2016120826A2中呈现的方法。有利的是,它们的结果可根据通过学习而精炼的系数进行加权。这些结果使得第一节点(用户)能够在此文本中呈现的不同方法的上下文中验证其它节点。
[0391] 冗余密钥通信
[0392] 如果冗余地使用多个节点,那么连接权重使得有可能使用类似于上文在“带外通道上的通信”部分中所描述的连接方法但是自动进行的连接方法。
[0393] 下文在第一节点(Alice)与第二节点(Bob)之间经由具有相对于第一节点的高连接权重的中间节点的密匙交换的实例中描述实施此方法的过程。对此实施方案,对应于这些节点的WN能够通过多个通道(例如SMS、电子邮件等)接收或发出消息。此方法包括以下步骤:
[0394] 1.Alice的WN在具有到Alice节点的最高连接权重且优选地具有(如果适用)到Bob节点的最高连接权重的中间节点当中选择N个中间节点(在本文中,选择三个中间节点(N=3),此数目根据配置参数确定,它特别地是这些连接权重的值的函数),并且以加密方式将待传送给Bob节点的临时标志传送给它们;
[0395] 2.所述中间节点的WN使用单独的且易于自动化的通道,例如SMS,以(冗余地)向Bob节点传送相同临时标志以及它们相应的公钥(如果它们使用彼此不同的通道则更好);
[0396] 3.Bob节点的WN检测这些临时标志的到达,并将它对此临时标志的签名以及它借助于此临时标志的公钥进行加密的公钥传回到所述中间节点;
[0397] 4.所述中间节点的WN通过具有此临时标志的Bob节点验证签名(通过利用它的公钥进行解密以及通过验证它的散列),并且在验证成功的情况下,将它们自己签署且利用Alice的公钥加密的Bob节点的密钥传送到Alice的WN;
[0398] 5.接着,Alice的WN保存Bob节点的密钥,并且可接着与此节点交换加密信息。
[0399] 由此交换的密钥可表示所述中间节点的连接权重越高,连接权重的数值越显著,就全部越安全的连接。与所述中间节点具有高连接权重且以足够数目存在的节点的连接被标记为“准真实”且确定连接权重的方法(例如上文描述的那些:“通过提炼得到的连接权重”、“作为接近度的连接权重”和“混合方法”)将其比作到最近系数的IRL连接。
[0400] 有利的是,在上述方法的步骤1中,不是Alice的WN个别地产生所述临时标志,而是与所述所选择的中间节点的WN联合地产生此临时标志。此互补方法也是自动的,并且包含以下步骤:
[0401] 1.通过所选择的N个节点的所述WN中的每一个以及通过Alice的WN产生临时标志(各自单独地产生临时标志并在步骤3之前一直保密);
[0402] 2.在这些WN之间(以加密方式)交换它们产生的所述相应临时标志的散列(同时他们自己仍然不公开临时标志);
[0403] 3.在这些WN之间(以加密方式)交换未经译码的临时标志,且每一接收者节点验证接收到的临时标志是否实际上对应于在步骤2中接收的相应散列;
[0404] 4.根据先前协定的共同规则(例如,简单的算术运算),通过组合它们产生的所述相应临时标志来产生最终临时标志(将传送给Bob的最终临时标志)。
[0405] 此外,在“冗余密钥通信”方法的步骤2中,中间节点并不会只向Bob节点传送相同的最终临时标志,而是还传送它们各自单独产生(如上文所描述)的相应临时标志;在步骤3中,Bob对接收到的这些临时标志的集合进行签署;这允许在步骤4中N个中间节点确定Bob实际上已接收到传送给他的全部N个临时标志。
[0406] 有利的是,在其中足够数目个中间节点的连接权重在两侧上为高(相对于Alice和相对于Bob)的情况下,第一节点(Alice)的WN直接从这些中间节点获得第二节点(Bob)的密钥。
[0407] 利用现有社交网络
[0408] 现将描述在社交网络上的“WN app”应用程序。此应用程序的用户“Alice”构成社交网络中的一个节点。此应用程序能够在多个通道(例如SMS、电子邮件等)上接收和发出消息。
[0409] 在安装之后,WN应用程序:
[0410] ●产生其私钥/公钥对(除非WN应用程序与稍后描述的硬WN配对(片上系统或包围区,在此情况下此密钥对已经存在);
[0411] ●存储由社交网络提供的直接连接的“朋友”节点的列表:
[0412] 朋友(Alice)
[0413] ●并确定(通过向朋友请求)哪些朋友已安装WN应用程序(以及邀请没有WN应用程序的朋友安装WN应用程序):
[0414] FriendsWN(Alice)
[0415] 就特定节点进行IRL连接并充当中间人来说,朋友的连接权重可根据上述方法确定、作为属性添加到所述朋友节点的列表,并且可从这一列表进行访问。因此,可通过例如以下的函数调用来检索具有大于给定阈值(此阈值是根据配置参数确定)的连接权重的朋友:
[0416] FriendsWNConnected(Alice)
[0417] 为了IRL连接到作为FriendsWN(Alice)的部分的朋友节点“Bob”,Alice可经由带外通道向他传送临时标志,Bob必须对这个临时标志进行签署并将其传回给Alice,如上文所描述。
[0418] 然而,可利用社交网络以便根据自动方法(仅仅通过扩展在“冗余密钥通信”部分中描述的方法)传送Bob节点的WN应用程序的密钥:
[0419] 1.Alice节点的WN应用程序在FriendsWNConnected(Alice)与FriendsWN(Bob)之间的相交区的元素当中选择具有到Alice节点的最高连接权重并且优选地还具有到Bob节点的最高连接权重的N个朋友(在本文中,N=3,此数值N是根据配置参数确定,其具体地说随这些连接权重的值变化),并以加密方式将待传送到Bob节点的WN应用程序的临时标志传送给它们;
[0420] 2.这些朋友的相应WN应用程序使用单独的且易于自动化的通道,例如SMS,以(冗余地)向Bob的WN应用程序传送此相同临时标志以及它们相应的公钥(如果这些朋友使用彼此不同的通道则更好);
[0421] 3.Bob的WN应用程序检测这些临时标志的到达,并在社交网络中(在它的墙上)公布它的公钥和它对此临时标志的签名--此外,任选地,Bob的WN应用程序将它对此临时标志的签名和它的公钥直接传回到Alice的所述三个朋友的WN应用程序,所述签名和公钥是借助于所述三个朋友的公钥加密;
[0422] 4.Alice的所述三个朋友的相应WN应用程序通过具有此临时标志的Bob的WN应用程序验证签名(通过利用它的密钥进行解密以及通过验证它的散列),并且在验证成功的情况下,将它们自己签署且利用Alice的公钥加密的Bob节点的密钥传送到Alice的WN应用程序(有利的是,此外,它们通过在Bob的墙上公布它们自己的签名来认证此密钥);
[0423] 5.接着,Alice的WN应用程序通过利用此密钥对Bob节点在其墙上公布的签名进行解密并通过验证临时标志的散列来验证(复查)Bob节点的密钥,保存Bob节点的密钥,接着可在验证成功的情况下,与Bob节点交换加密信息。
[0424] 此处同样地,与其中所述朋友具有高连接权重且数目足够的节点的连接标记为“准真实”,且用于确定连接权重的方法将它们比作到最近系数的IRL连接。
[0425] 有利的是,Bob在社交网络中公布的它的公钥始终可由作为朋友连接到Bob的至少所有节点访问。
[0426] 且此处再次有利的是,在上述方法的步骤1中,不是Alice的WN应用程序个别地产生所述临时标志,而是与所述所选择的朋友节点的WN应用程序联合地产生此临时标志。此互补方法与上方呈现的方法相同,除了此处的WN是WN应用程序之外。
[0427] 同样如上文所描述的,所述N个朋友还将向Bob(分别)传送不同临时标志,所述不同临时标志将产生最终临时标志,并且将允许所述N个朋友验证Bob确实已接收到它们传送给他的全部N个临时标志。
[0428] 最后,在其中足够数目个中间节点的连接权重在两侧上为高(相对于Alice和相对于Bob)的情况下,第一节点(Alice)的WN直接从这些中间节点获得第二节点(Bob)的密钥。因此,为了连接到“Bob”节点的WN应用程序,“Alice”节点可向他询问(通过WM)它具有高连接权重的朋友:
[0429] Friends WNConnected(Bob),
[0430] 并且采用具有它自己的高度连接的朋友的相交区:
[0431] FriendsWNConnected(Alice),
[0432] 并且如果此相交区不为空,那么从这一由选自具有最高连接权重的那些朋友的朋友组成的相交区的子集请求Bob的密钥。
[0433] 镜像WN
[0434] 有利的是,针对具有“镜像节点”的每一节点创建冗余,其中数据保持同步,并且其中一些执行镜像处理操作以便同时进行以下操作:
[0435] ●克服无响应性且
[0436] ●减轻篡改的风险。
[0437] 定义:
[0438] “节点”(钱包节点)现在是通过多个镜像节点实施的虚拟节点(用符号表示为VWNx,用于用户x的“虚拟钱包节点”),所述多个镜像节点包括:
[0439] ●对应于所述虚拟节点的真实钱包节点(RWN),以及
[0440] ●会签者钱包节点(CWN)的集合。
[0441] 在本发明的此方面中,两个节点(WN)可以仅通过在其相应节点上执行的智能合约连接(参见申请案PCT WO2016120826A2中描述的钱包程序(WP)智能合约):
[0442] ●如果它们各自与大于具有大于第二阈值(根据配置参数确定的阈值)的连接权重(关于这两个节点中的每一个)的共同镜像节点的第一给定阈值的数字相关联,且[0443] ●当两个节点通过执行智能合约(WP)而交互时,从一个节点发送到另一节点的消息(WM)仅在以下情况下有效:共同镜像节点的至少10%(或也根据配置参数确定的另一百分比,或也根据配置参数确定的给定数字)已经相同地执行此合约(“以镜像模式”)且已向另一节点传输相同消息(WM)。
[0444] 换句话说,接收到消息(WM)的节点仅在以下情况下验证此消息:发出者和接收者节点的镜像节点的相应集合具有相交区,其中的元素的数目大于第一给定阈值,且接收者节点已从属于此相交区的至少一个给定数目或一个给定分数(对应于第二阈值,也是根据配置参数)的所述镜像节点接收此相同消息(冗余地)。
[0445] 例如,Bob节点的真实WN应用程序将仅在它还从Bob节点和Alice节点的至少10%的共同镜像节点(它们也是例如WN应用程序)接收到(以Alice节点的名义)发出的这一消息的情况下才认为通过Alice节点的实际WN应用程序发送的WM是有效的。
[0446] 执行钱包程序的每一节点使其数据同步,即:程序状态变量(PSV)和节点状态变量(NSV),以及在其镜像节点的集合上的标记(下文描述),此集合包含与所述每一节点具有有效钱包程序的节点所共同的镜像节点的所有相应集合的并集。
[0447] 实行所述数据同步:
[0448] ●部分地通过(由钱包程序)发送WM,其触发在接收者节点上执行的(相同)钱包程序对数据(PSV、NSV和标记)的更新,且
[0449] ●对于未接收到它们的节点,直接通过数据更新通知WM来同步数据。
[0450] 每一节点使它的镜像节点列表与具有高于阈值的连接权重的节点同步,且所述数据同步相对于这些镜像节点列表实行。列表的同步通过对应的WM实行。
[0451] 图3a示出WM从给定VWN1到接收者VWN2的传播。镜像节点RWN1、CWN1各自存储VWN2的镜像节点的列表L2,以便能够针对所有发出者镜像节点和接收者镜像节点投送相同内容的WM。
[0452] 图3b以更精细的细节描述消息在镜像节点之间的发送。它示出了在共同会签者节点组中的集合当中,一方面Alice和Bob的节点之间的CWNAB,以及另一方面Bob和Carl的节点之间的CWNBC,这两个集合的并集(+真实Bob节点RWNB)是Bob节点的镜像节点的集合,其在任何WM WM发送到Bob节点之后同步。
[0453] 因此,Alice和Carl的节点各自不仅知道它们与Bob节点共同的相应镜像节点,还知道Bob节点的整个镜像节点集合(归功于上述镜像节点列表的同步)。
[0454] 图3b还示出在与用户(Alice)的交互之后由Alice节点产生的WM,其为待发送到Bob节点的WM。首先,WM的通知消息(用符号表示为PWM,即预钱包消息)由真实Alice节点RWNA发送到Alice的与Bob节点共同的镜像节点CWNAB(仅示出一个PWM以便不会使图复杂),且Alice的其它节点CWNXA接收数据同步消息(用符号表示为DSM,即数据同步消息]。接着,真实Alice节点RWNA和与Bob节点共同的所述会签者节点CWNAB中的每一个将所讨论的WM发送到Bob节点,也就是发送到真实Bob节点RWNB并发送到Bob节点的会签者节点(仅示出这些WM中的一些以免使附图复杂)。
[0455] 此处应注意,当此类WN将通过CWN发送到其自身时,它并未发出(此处,CWNAB并不向其自身发送WN)。
[0456] 图3c示出在真实节点RWNB出于某一原因而无响应性的情形中,经由DSM类型的消息使Bob的镜像节点的集合(RWNB、CWNAB、CWNBC)同步的尝试阶段。
[0457] 最终,图3d示出由节点VWNB发送到Carl节点VWNC的WM’,并非在真实Bob节点与其用户(Bob)的交互之后而是在从Alice节点接收的所述WM(由所执行WP的指令产生)之后产生的消息。在此情况下,实际上已从Alice节点接收到此消息的镜像节点能够产生用于Carl节点的所述消息(通过执行此WP)。然而,图3d示出真实Bob节点无响应性,且因此并不发出消息WM'(其在图中由“!”表示),以及尽管如此,Bob节点的其它镜像节点仍然向Carl节点VWNC发送此消息(这解决了无响应性的问题)。
[0458] 最后,再次,因为WM'不是在与用户交互之后(通过Bob节点)发出,而是通过响应于WM(从Alice节点接收)来执行智能WP合约(在此Bob节点上),接收到WM'的VWNC的镜像节点中的每一个将请求从10%(或根据配置参数确定的另一百分比)的与(Bob的)此节点共同的镜像节点CWNBC接收相同消息。Carl可因此预料到事实:所述消息确实已产生,且确实已由尚未更改的所讨论的智能WP合约产生(通过此方式解决了承诺保证问题)。
[0459] 现将描述镜像节点的选择过程。
[0460] 对于每一节点,镜像节点的连接权重各自大于或等于它的周围环境的IRL连接节点(或成准真实连接的节点)的最低连接权重。有利的是,系数可应用于它:每一镜像节点的连接权重在与它IRL连接的节点的连接权重当中必须大于或等于最低连接权重乘以系数(根据配置参数确定)(且对于成准真实连接的节点,大于或等于最低连接权重乘以另一系数)。
[0461] 在WM的发出者节点与接收者节点之间共同的所述镜像节点当中,其中至少一个(或根据配置参数的某一数目)是硬的WN(硬WN是如申请案PCT WO2016120826A2中和下文在“CMMU”部分中所描述的SoC,或者如“WN SoC和WN包围区的混合网络”、“WN SoC和身体包围区的混合网络”部分中所描述的包围区,或如“身体SoC和身体包围区的混合网络”部分中所描述的身体SoC),每一硬WN的公钥(对应于秘密私钥)由其制造者认证,且这些硬钱包可能由不同制造者产生--然而,在节点之间交换的消息仅在其制造者自身的节点是通过来自共同制造者的镜像节点链接的情况下有效(参见下文的描述)。
[0462] 在检测到与给定节点的镜像节点的冲突的情况下(在与节点相关联的镜像节点之间的同步期间,或在从所述给定节点的镜像节点接收到不兼容WM之后检测到的冲突等),检测到此冲突的节点报告与其相应制造者冲突的镜像节点的密钥的信息,且这些密钥随后由这些制造者撤销。随后,在其再循环之后,它们被更换。这根据以下步骤实施:
[0463] 与每一制造者相关联的是硬WN,所述硬WN表示制造者且它自身就是制造者(认证它自身的公钥);
[0464] 每一制造者节点IRL连接到每个其它制造者的节点,所述每个其它制造者通过在“带外通道上的通信”部分中描述的方法将它的密钥传送到所述每一制造者节点,其中的一些还将因此间接连接的其它制造者节点的密钥传送到所述每一制造者节点,它们各自由此构成所述每一制造者节点的周围环境,连接权重与周围环境的每一节点相关联,如上文所描述;
[0465] 对于将由其接收者节点验证的任何WM,一方面发出者节点的制造者节点以及另一方面接收者节点的制造者节点的镜像节点的相应集合必须具有相交区,其元素的数目大于给定阈值(这除了上方指定的两个条件之外还关于发出者和接收者节点的镜像节点)-所述相交区的镜像节点的数目有利地通过由这些制造者镜像节点的相应制造者制造的有效硬WN的数目进行加权(参见下文的“制造者权重”);
[0466] 在冲突(在同步(通过DSM)期间,或在从相同发出者节点的镜像节点接收到不兼容WM后,等等)的情况下,冲突的镜像节点的密钥的信息通过发送消息(WM)来传送到它们相应制造者的节点(并且,如果它们不同,那么传送到它们相应的镜像节点);
[0467] 制造者节点(也就是其镜像)在撤销列表中记录冲突的镜像节点的密钥;
[0468] 作为硬WN的冲突的镜像节点被其相应制造者代替;
[0469] 如果解决了冲突,那么所述同步(DSM)和/或在必要时因为其冲突而被暂停的WM分别被恢复/重新发送;
[0470] 如果冲突持续,那么大部分硬WN被视为合法的,且不同于它们的镜像节点失效且在黑名单上。
[0471] 在黑名单上的节点的信息立即传送到用户的周围环境中的节点,并且从那些节点传送到它们自己的周围环境中的节点,等等(且方法可为复杂的,这取决于拜占庭(byzantine)共识协议领域的现有技术水平和进展)。
[0472] 制造者的权重:如先前陈述,有利地取决于所讨论的制造者的有效WN的数目对制造者节点进行加权。在此上下文中,制造者节点具有低于某一阈值(取决于配置参数)的制造者权重的制造者的硬WN被视为软WN。
[0473] 此外,针对硬WN包围区的制造者将遵循的规则(参见“WN SoC和WN包围区的混合网络”部分和后续部分)可与用于SoC的制造者的规则不同地配置。
[0474] 确定给定制造者的有效WN的数目的可能的方法可在于浏览区块链且通过直接或间接参考制造者的凭证(制造者的签名,参见别处)对交易中涉及的节点的数目进行计数。更一般化地,可以考虑与其它节点的交互的存在以及这些交互中涉及的节点的连接权重的值。
[0475] 应注意,类似于以太坊的“气体”(参见《以太坊:安全分散型一般化交易分类账(Ethereum:A secure decentralized generalised transaction ledger)》,EIP-150修订,Dr.Gavin Wood-附录G.费用安排表-http://paper.gavwood.com/)的成本令牌可以用于通过镜像控制处理操作,所述成本令牌使得有可能识别合约执行的操作(计算、存储、对存储器的访问等)之间的相对成本。
[0476] WN向外界发出消息
[0477] 为了向外界(也就是向不是WN的实体)发送消息,作为硬WN的每一镜像WN向其它硬镜像WN(如果适用)提出它自己发出所讨论的消息,且第一个发出的获胜。所述方法包括以下步骤:
[0478] ●第一硬镜像WN向其它硬镜像WN(如果适用)提出发出所讨论的消息,所述提议在先前协定的持续时间(根据配置参数)之后到期;
[0479] ●当此类提议被硬镜像WN接收到时,如果此提议先于接收到或发出(对于所述所讨论的消息)的另一提议,那么它被批准;否则它被拒绝;
[0480] ●当批准的数目大于已响应的硬镜像WN的数目的一半时,指派此提议,接着实际发出所讨论的消息,且通知其它硬镜像WN所讨论的消息实际已被发出。
[0481] 视情况而定,发出所讨论的消息的需要可直接关闭或在来自接收者的回复到达时关闭。此外,所属领域技术人员还将能够利用涉及拜占庭共识协议的现有技术。
[0482] 标记
[0483] 此处再次参考在申请人名下的文献WO2016120826A2中详细描述的钱包节点(WN)的概念。WO2016120826A2的图7示出从节点“WN 1”到节点“WN2”的10个计算单位(UA)的支付。这些10个UA从WN1的余额减去且添加到WN2的余额,这些余额是这些WN上的永久状态变量(PSV)。
[0484] 参看图4,接着将考虑所述UA余额不是在WN中执行的某一特定WP的PSV,而是无论执行其的WP如何都可由WN使用的数据,称为标记(或价值标记)。以标记形式由WP供应的UA因此属于WN,且可供另一WP在相同WN上使用--它们是整体考虑的WN的永久状态变量。
[0485] 考虑一个实例,接收从节点WN1支付的消息WM1的用户WN2在节点WN1实行出售之后执行支付钱包程序WP1,然后通过执行保险钱包程序WP2支付保险金。因此,在图4中呈现的实例中,10个UA借助于通过执行WP1发出的消息WM1(此消息包括散列#WP1)而从WN1转移到WN2,且这10个UA由WN2通过执行向节点WN3发送消息WM2(包括散列#WP2)的WP2来支付以支付保险金。
[0486] 为了给出具体实例,原始来自在比特币区块链中插入且确认n次的比特币交易的比特币单位(BTC)(如下文所解释,在此情况下,受益人WN的秘密私钥是对应于比特币地址的私钥)现将被视为标记UA,而这不是限制,因为相同机制可用于任何类型的UA,具体来说例如在礼品卡中由WN无中生有所产生的UA。确切地说,申请WO2016120826A2描述由所有者钱包节点(Owner Wallet Node,OWN)产生的标记的某些用途,所述标记在变换链或供应链(不然就是商业链)的背景下由查看者钱包节点(Viewer Wallet Node,VWN)认证的属性且从一个OWN转移到另一OWN,从而反映它们表示的产品例项(实际或不重要的产品)在现实世界中在这些OWN钱包节点的用户之间转移的事实。
[0487] 此类标记可在交易中重组(也就是合并或分解)以产生其它标记。举例来说,参考图5a,在给定交易(tx1)中,构成交易的输入的10个UA的标记和3个UA的标记可重组成三个标记,构成交易的输出,此处为5个UA的标记、6个UA的标记和2个UA的标记,全部UA被保存(所讨论的UA尚未在图中示出,其可为例如BTC--比特币交易是涉及标记转移的交易的特定情况)。这些交易将被称为“标记转移交易”。在图5b中示出标记转移交易的另一实例,其示出10个鱼(10个不同标记)的情况,它们各自具有以欧元为单位的不同价值,变换(例如,切割)成具有100欧元价值的鱼箱(箱具有标签为“tg87”的个别标记)中,此交易tx2由具有10个鱼的所有者OWN产生。
[0488] 应注意,标记从一个OWN转移到另一OWN的特定情况,即使没有进行合并或分解,也将在本文中一直通过此类重组交易表示,这是出于实施的简单性目的。(标记转移交易的处理的实施方案将稍后在“CMMU”部分中描述)。
[0489] 参考图6,现将描述使用镜像节点(上文描述)以便减轻一连串标记转移WM中的重复花费(double-spending)风险的方法,此方法使得有可能特定实施链外比特币交易(区块链的使用变成任选的)。此图示出通过Carl节点发送到Y节点(图中只示出其与Carl节点共同的会签者节点“CWNCY”)的用符号“WMCY/tgx”表示的消息。此消息WMCY/tgx传输交易,所述交易的先前交易(在一连串标记的“tgx”链中)是通过消息WMXA/tgx、WMAB/tgx和WMBC/tgx预先传输。此图旨在示出Carl节点保证具有一个或特定数目个与所有上游节点共同的镜像节点,其中的一个(或一些)是硬WN,此处所述上游节点包含Alice节点(这在图中示出为:“CWNCY=CWNXA”)。
[0490] 要记得,比特币交易相当于通过对向至少一个新所有者分配它们的先前交易的至少一个输出进行签名(利用私钥)来转移BTC,其比特币地址是从它的公钥导出。此处,我们考虑了WN的秘密私钥是对应于比特币地址的私钥(也就是WN从它的秘密私钥产生比特币地址)的情况。因此,WN能够产生比特币交易,所述比特币交易的输入(或其输入中的一个)与上游交易(例如,所述WN的用户能够访问其输出,因为所述交易在区块链中公布,并且在所述WN中将它作为输入输入到它的终端中)的输出(其意在用于所述比特币交易)连接,并且(任选地)能够宣布(广播)所述交易,以使得它插入在区块链中。这应理解成意味着存在实际且正确形成的比特币交易,其由所述WN产生,但是下面(在“比特币链外交易”部分中)详细说明了不将它插入区块链中的优势。
[0491] 由WN花费的BTC可以来源于从一个或多个节点转移BTC到一个或多个其它节点的一连串链外交易(形成树),且目的是减轻产生这些交易的这些节点中的任一个上的重复花费的风险。这是通过以下额外条件来实现(其添加到上文关于WM的发出者和接收者节点的镜像节点指定的条件):对于转移给定标记(例如0.5BTC)以由其接收者节点验证的WM,接收者节点的镜像节点的集合必须具有相交区,其元素的数目大于给定阈值,此标记发源于的(标记转移交易的)上游树的节点中的每一个的镜像节点的集合,且其中的至少一个(或某一数目的节点)必须是硬WN。WN对所述方法的执行的实施方案因此包含通过上游树从下游传递到上游从而递送标记转移交易以及镜像节点的相交区的所述条件的验证(还参见下文的“GuardWN、GuardTx和GuardedTx”部分,其描述去除对镜的需要的方法,不同之处在于上游最远的交易)。
[0492] 有利的是,每一标记包含上游标记转移交易的树的信息,每一交易指示产生其的WN的地址(这些WN称为“上游WN”),其使得标记转移WM的接收者WN能够直接验证所有上游节点的至少一个镜像(或某一数目)是否出现在其周围环境中,是否是其自身的镜像节点的部分且是硬WN,且对于未被此情况涵盖的每一上游WN,其镜中的作为硬WN的一个的连接权重是否将使得其能够作为镜像节点的部分(在与其周围环境的节点的新连接的可能交换之后)。因此,更精确地说,与每一标记相关联的是所有上游标记(也就是说在上游树中出现的那些,在通向所讨论的标记的一连串标记转移交易的所有链中),具有产生其的所有者节点的地址以及(如果适用)其后续所有者(OWN)中的每一个的地址,以及其镜像节点的地址,这使得传输标记转移交易的WM的每一接收者节点能够直接验证其自身的镜像节点与这些所有者中的每一个的镜像节点的所述地址之间所需的相交区,以及至少一个(或根据配置参数的一些)是硬WN的事实,且在必要时启动对具有高连接权重的节点的搜索以便关联新的镜像节点。
[0493] 知识交易
[0494] WN将处理操作外包到受信任计算机(能够传回执行的真实性和完整性的凭证,例如具有带SGX包围区的英特尔微处理器的计算机)的能力使得有可能直接且比智能合约的现有技术水平更简单地实施不具有受信任第三方的知识交易:
[0495] 例如,假设用户U1(具有带公钥K1的钱包节点WN1)正在寻找向它出售秘密(S1)的另一用户U2(WN2,K2),U2知道所述秘密(S1)但U1不知道,但是U1出于某一原因知道散列H(S1),且U1准备好为所提供的这一服务支付当前在WN1和U1的(标记的)余额中可用的金额$R1(R表示报酬)。
[0496] 更精确地说,来自具有密钥K的WN的此类购买竞价包括元素集合{H(S);$R;$P;T[;params]},其在这一具有此WN的签名SigK({H(S);$R;$P;T[;params]})的此交易中宣布,其中$P是同意在时间T供应的供应者在他没有这样做时必须支付的罚款(同样参看下文的“使用情形”)。随后,项{H(S);$R;$P;T[;params]}也被称作“竞价元素”。
[0497] 本质上,这是所述方法如何工作的方式:
[0498] 1.U1使得钱包程序(WP1)可用并广播钱包程序(WP1),从而使得有可能发出三种类型的消息(已通过抽象方式仅指示基本元素;我们将在下文看到WM的精确组成部分):
[0499] ●WMBid:WM(Sig,#WP1),其传送用于服务“Sig”的服务出售声明(对应于WN对竞价元素的签名,如上文所描述),其消息接收方是Sig的签名者且在由后者接受的情况下,提交其发出者(提供所讨论的服务的一方)在给定时间T内未供应而应支付金额$P的罚款;
[0500] ●WMAccept:WM(WMBid,#WP1),其响应于给定WMBid而传送对所讨论的服务出售的接受,并提交其发出者在接收WMS消息后支付金额$R(在所讨论的竞价元素中指定),所述消息包括其散列对应于H(S)的秘密(在所讨论的竞价元素中指定);以及
[0501] ●WMS:WM(WMAccept,S,#WP1),其响应于给定WMAccept消息而传送秘密S,并在接收者WN上触发其验证(相对于在先前消息中在所讨论的竞价元素中指定的H(S)),并且在此验证成功的情况下,触发在接收者WN上产生通过接收者WN的最终WM发送到此WMS消息的发出者的支付金额$R(同样在竞价元素中指定)的交易。
[0502] 此外,在接收到WMAccept消息时,WP1能够将处理操作(此处处理以便通过蛮力搜索秘密S)外包到能够传回执行的真实性和完整性的凭证的受信任计算机,所述凭证将由WP1在发出WMS消息之前自动验证。
[0503] 1.U1宣布它的竞价{H(S1);$R1;$P1;T1[;params1]},它利用它的签名Sig1({H(S1);$R1;$P1;T1[;params1]})广播。
[0504] 此处是使用情形:
[0505] 假设WN2的用户U2尚不知道此秘密S,还假设参数params1包含所要秘密的字符的最大数目的指示,所述数目指示受信任计算机将能够通过在合理时间内的蛮力搜索来找出所要秘密。接着,U2决定使它的钱包节点WN2向U1的钱包节点WN1发送消息:
[0506] WMBid2:WM(Sig1,#WP1)
[0507] 作为服务出售,随后(由于U1接受此服务出售)WN1以消息对其进行答复:
[0508] WMAccept1:WM(WMBid2,#WP1)
[0509] 作为接受,从而(自动地或在用户U2命令后,其可例如选择要外包的受信任计算机)触发所讨论的到受信任计算机的外包。随后,当结果--对应于H(S1)的所要秘密S1--由此受信任计算机传回时,WN2自动发送消息:
[0510] WMS2:WM(WMAccept1,S1,#WP1)
[0511] 其向WN1传送所要秘密S1,并且在接收此消息并验证所接收的秘密的散列与H(S1)的对应关系后,WN1产生$R到WN2的支付交易,并(通过WM)将其发送到WN2。
[0512] 应注意,竞价元素还可表示销售竞价,且所述方法的处理使得成为可能通过竞价和反竞价迭代进行协商,竞价元素能够在这些迭代中演变,且接着,消息基本如下(如果一个人认为第一消息,此处为WMBid,通过供应者发送的话):
[0513] ●WMBid:WM(Sig,{H(S);$R;$P;T[;params]},WP1),其相对于“Sig”传送反竞价{H(S);$R;$P;T[;params]},所述消息的接收方是Sig的签名者,且在“相同地”被后者接受的情况下,提交其发出者(提供所讨论的服务的WN)在给定时间T内未供应而支付给定金额$P的罚款;
[0514] ●WMAccept:WM(WMBid or WMNewBid,{H(S);$R;$P;T[;params]},#WP1),其响应于给定消息WMBid或WMNewBid而传送反竞价;在{H(S);$R;$P;T[;params]}与后者的竞价元素相同的情况下,此消息WMAccept提交其发出者在接收到包括其散列对应于H(S)的所述秘密的WMS消息后支付给定金额$SR;并且,在出售相同竞价元素的消息WMNewBid在(先前协定的)时限内到达的情况下,此WMAccept消息直接提交其发出者在接收到包括其散列对应于H(S)的秘密的WMS消息后支付给定金额$R;
[0515] ●WMNewBid:WM(WMAccept,{H(S);$R;$P;T[;params]},WP1),其响应于给定WMAccept竞价传送反竞价{H(S);$R;;T[;params]},且其接收方是此WMAccept消息的发出者;在{H(S);$R;$P;T[;params]}与此给定WMAccept消息的竞价元素相同的情况下,此WMNewBid消息直接提交其发出者(出售所讨论的服务的一方)在给定时间T内未供应而支付金额$P的罚款(无需等待新的WMAccept接受消息);
[0516] ●WMS:WM(WMAccept,S,#WP1),其响应于给定WMAccept消息而传送秘密S且在接收WN上触发它的验证,并且在此验证成功的情况下,触发产生通过最终WM从接收WN发送到此WMS消息的发出者的支付金额$R的交易。
[0517] 此方法的变化形式在于移动到所述受信任计算机,以及所供应的验证结果的任务,并且所述受信任计算机提供充当证据的(针对此验证执行的处理操作的真实性和完整性的)凭证。
[0518] 因此,在供应结果S1而不是简单的消息“WMS2:WM(WMAccept1,S1,#WP1)”时,WN2传回消息:
[0519] WMA2:WM(WMAccept1,S1,A2,#WP1)
[0520] 其中A2是在所述受信任计算机中实行的此成功验证的所述凭证,且接着,WN1在产生向WN2支付$R的交易之前不必执行此验证。
[0521] 作为变化形式且为了提供额外的安全性,传回凭证A2,同时不立即供应结果S1,并且此结果在WN1传回支付交易(含有支付交易的WM)之后供应(其为至少部分,接着通过在接收结果S1之后发送最终交易来完成支付--还应注意,在结果可能被分割的情况下,数个支付-分割迭代可彼此接续,直到供应完成为止)。
[0522] 传送此凭证(A2)的事实涵盖较宽应用领域,事实上所述验证可以有时由长且代价高的处理操作(与仅涉及供应的结果S1的散列对应于在开始指定的H(S1)的验证的上述实例相比)或简单地并不必在钱包节点中实行的处理操作组成,钱包节点既定为此目的仅管理节点之间的协议且必须保持可用(在性能上)。
[0523] 最终,可产生问题解决拍卖交易,从而确保例如提供较好报价(更完整和/或更快速和/或...)的供应者成交。此报价可不仅由对给定问题的解决方案组成,而且由对所提供解决方案的验证(例如在软件测试部门中)的处理操作组成。
[0524] WN将处理操作外包到受信任计算机的可能性因此扩展了WN网络的能力,WN网络使得有可能在交换中利用中立的第三方进行分配,每一WN可由多个制造者以低成本使用可访问且相对普通的技术产生,确切地说,归功于允许WN仅处理关于交换的处理操作(交换条件、支付等)的这一外包可能性。
[0525] 盲代理
[0526] 钱包节点使得可能实施处理操作而无需公开这些操作中的处理数据或执行的代码。
[0527] 考虑“客户端”装置和“盲代理”(或“代理”),客户端基于其发送到代理的数据“I”(作为输入)在代理上运行可执行代码“P”(作为程序)。
[0528] 针对此可执行代码P采用的执行模型是有限状态机,其执行是通过接收传入消息触发且能够发出传出消息。因此,它对传入消息的接收使得产生0到n个传出消息以及0到m个状态改变(永久状态)。
[0529] 与代理相关联的是一对公钥/私钥,代理的公钥(“K2”)已经预先认证,呈可以某一公钥“K”(代表SoC制造者)解密的签名的形式,以便保证代理的“盲”性质且包含执行完整性保证(称为“散列锁定执行”)。
[0530] 首先考虑以下用于产生盲代理的方法。在下文,符号“§”用于加密;后面可接着数字(P1)的字母“P”用于程序;后面可接着数字(K1)的字母“K”用于密钥,所述密钥在产生加密(例如在§KP中)的情况下是公钥,且在密钥用于产生签名(例如,在signK(X)中)的情况下是私钥。此盲代理方法如下:
[0531] 提供代理到客户端:
[0532] 1.提供(代表代理制造者)凭证公钥(K)(可通过客户端访问)
[0533] 2.产生代理的公钥(K2)
[0534] 3.利用signK(K2)认证K2(即,可使用K解密)
[0535] 4.代理向客户端发送K2(且{K2,signK(K2)}可通过客户端访问)
[0536] 客户端向代理提供可执行代码(P):
[0537] 5.客户端使用K2加密P(§K2P)并向代理发送§K2P
[0538] 6.代理在表格PHT(程序散列表)中解密§K2P、散列P(#P)并存储与#P相关联的§K2P[0539] 7.客户端散列P(#P)
[0540] 对于每一执行请求:
[0541] 8.客户端使用K2加密I+#P(§K2input+#P)(或§K2input+#P+K1,其中K1是客户端的公钥)
[0542] 9.客户端向代理发送§K2input+#P和K1(或§K2input+#P+K1),以及临时标志(nonce)(或发送§K2input+#P+K1+nonce)
[0543] 10.代理(“盲”)解密§K2(input+#P…)以及§K2P(使用#P从PHT获取§K2P)[0544] 11.代理(盲)运行具有I的P(在运行中进行解密)(一旦解密的话)、使用K1加密结果(§K1output)并向客户端传回临时标志和§K1output(或所有在一起加密)以及signK2(nonce,§K1output…),其中代理的所有者无法看到I、P或这些结果
[0545] 12.客户端解密结果并通过利用K2对它们的签名进行解密来检查它们。
[0546] 如上文所提及,有利的是,在步骤8中,并不是仅仅利用密钥K2代理对I+#P进行加密,客户端还加密I+#P+K1(§K2input+#P+K1),并且在步骤9中,客户端通过发送§K2input+#P+K1传送它的公钥K1。接着,代理将结果传回到客户端(在它的地址处可为#K1),同时不公开K1。根据另一选择方案,临时标志还可为加密消息的主体(§K2input+#P+K1+nonce)的部分,并且在通过代理传回到客户端的消息中,它也以加密形式出现(§K1output+nonce)。为简单和清晰起见,下文不重复所属领域的技术人员将容易地知道如何实施的这些选项。重要的是不公开#P的事实,以使得用户或代理的所有者无法建立它与客户端之间的关系。
[0547] 在一个可能实施方案(自然还可考虑其它实施方案)中,从客户端到代理的消息包括:
[0548] 消息:§K2input+#P,K1,nonce
[0549] 并且(从代理到客户端的)回复包括:
[0550] 消息:nonce,§K1output,[K2,]signK2(nonce,§K1output),
[0551] (或简单地
[0552] 消息:signK2(nonce,§K1output)
[0553] 在临时标志和§k1output可通过借助K2对signK2(nonce,§K1output)进行解密来获得的情况下;但是,在下面,签名被视为由散列的加密组成)
[0554] 临时标志使得有利地可能使传出消息对应于传入消息且
[0555] K2和signK2(nonce,§K1output)使得客户端有可能验证处理操作已经实际上由具有此密钥K2(已认证)的代理执行。
[0556] 为了客户端能够验证凭证代理(以)的处理操作的保证“盲”性质(以及执行的完整性--此处应理解,“盲”纳入了散列锁定执行完整性signK2(nonce,§K1output)签署此操作的结果),
[0557] ●预先将signK(K2)传送到客户端且客户端将其存储,和/或有利地
[0558] ●signK(K2)包含在每一回复消息中,如下:
[0559] 消息:nonce,§K1output,[K2,]signK2(nonce,§K1output),signK(K2)
[0560] 存在一个人想要相同客户端为具有盲性质或执行的完整性性质的实体的情况,并且,为了保证这一点,一个人还想要(i)从客户端到代理的消息由客户端签名(signK1(nonce,§K2input+#P)),以及(ii)认证客户端的密钥K1(signK(K1)):
[0561] 消息:§K2input+#P,nonce,K1,signK1(§K2input+#P,nonce),signK(K1)[0562] (此处,#P是可供客户端或代理使用的可执行代码的散列)。
[0563] 其中P是由客户端使用的可执行代码的情况的有用性是显而易见的,举例来说,在电子护照的验证的情况下,参考申请案PCT No.WO2016/120826A2的图6:客户端执行护照验证程序的执行完整性的保证,其可执行代码散列是#P1--意味着保证此护照的存在:
[0564] 消息:§K2input+#P1,nonce,K1,signK1(§K2input+#P1,nonce),signK(K1)。
[0565] 一个人可随后设想用于从客户端到代理的消息的统一格式(此处以非限制性方式呈现,因为其它方法是可能的)且从代理传回到客户端,如下:
[0566] 消息:nonce1,§K2(data+#P1+#P2),nonce2,K1,SignK1(nonce1,§K2(data+#P1+#P2),nonce2),signK(K1)。
[0567] 在具有此统一格式的消息M中:
[0568] ●M被视为传出消息(从其发出者的视角),nonce1再生(如果适用)在上游消息中接收的nonce2,其触发产生此消息M的处理操作;
[0569] ●M被视为传入消息(从其接收方的视角),nonce2表示将在处理操作过程期间响应于接收到此消息M而由所述接收方发出的(或每一)传出消息的nonce1;
[0570] ●#P1是由此消息M的发出者执行的可执行代码的散列;
[0571] ●#P2是在接收到此消息M后实行处理操作所需要的可执行代码的散列。
[0572] 因此,可理解nonce2标识所讨论的消息(M),而nonce1是所接收的触发产生此消息M的处理的传入消息的识别符。
[0573] 常规地,此消息包括具体来说指示消息的类型的标头,这在随后的文字中是隐式的。
[0574] 视情况而定,将省略这些自变量中的一些,以便对不同使用情况应用此格式。举例来说,对于上文描述的盲代理方法(其中从客户端到代理的消息包括:
[0575] 消息:§K2input+#P,K1,nonce
[0576] 并且(从代理到客户端的)回复包括
[0577] 消息:nonce,§K1output,K2,signK2(nonce,§K1output),signK(K2)),
[0578] 根据统一格式,从客户端到代理的消息包括以下自变量:
[0579] 消息:_,§K2(data+_+#P2),nonce2,K1,_,_
[0580] 且回复包括以下自变量:
[0581] 消息:nonce1,§K2(data+#P1+_),_,K1,SignK1(nonce1,§K2(data+#P1+_),_),signK(K1)。
[0582] 有利的是,更完整的消息格式另外包括自变量#spec,其含有(如果适用)联系#P1和#P2,也就是限制#P1后的有效#P2的集合的约束的规范的散列:
[0583] 消息:nonce1,§K2(data+#P1+#P2),#spec,nonce2,K1,SignK1(nonce1,§K2(data+#P1+#P2),#spec,nonce2),signK(K1)。
[0584] 在一个实施例中,此规范“spec”可以是有效的可执行代码的集合(#P1、#P2等)。在另一实施例中,参考图11,对于给定其散列的每一可执行代码(#P1),在此规范中供应有效的可执行代码的所有散列(#P2…)(其它实施例是可能的)。
[0585] 在对于给定消息,需要将通过消息的接收方执行的可执行代码(全文)与通过消息的发出者执行的可执行代码相同的情况下,也就是在相同#P从所接收的传入消息传播到所产生的(每一)传出消息的情况下,优选的是,消息的格式为以下格式(并且在下文可使用或参考此特定统一格式选择方案,但是这不具有限制性):
[0586] 消息:nonce1,§K2data+#P,nonce2,K1,SignK1(nonce1,§K2data+#P,nonce2),signK(K1)
[0587] 实施钱包节点的原理的其余部分
[0588] 参考WO2016120826A2的图5,在SoC内存在包括通用处理器的微控制器,例如具备内部存储器的使用RISC-V架构)的处理器。只有这个处理器可以访问提供加密功能的“签名”部分,特别是通过SoC的签名的功能性,“签名”部分又独自能够访问含有芯片的秘密密钥(Secret Key)的部分。秘密密钥部分在图中的括号中示出,因为在某一实施方案选项中,秘密密钥不被存储,而是动态地重新产生。钱包程序部分存储加密可执行代码(§P)以及它们相应的散列。微控制器以安全方式随传入消息中包含的散列(#P)(或经由I/O的输入)而变将这些可执行代码中的一个或另一个加载到其存储器中。可执行代码能够在非易失性存储器中操控仅可由微控制器访问的永久状态变量。在WO2016120826A2中,永久状态变量子系统使得所述永久状态变量(PSV)可以访问以仅用于执行这些变量属于的特定相应WP。这些状态变量可由此仅(专门地)由它们相应的WP访问/处置。(在本文的文字中,PSV意味着程序状态变量--属于程序的永久变量--与作为属于WN的变量的标记和节点状态变量(Node State Variable,NSV)相反)。在加电和上电复位时,存储于检查/加载部分中的可执行代码是在微控制器中将加载且执行的第一个可执行代码,且散列可随后与钱包程序部分中可用的WP(重新)相关联。当WM到达(经由I/O)时,此检查/加载部分的代码验证完整性和真实性(发出此WM的WN的公钥用于解密此发出WN的签名并验证消息的完整性;验证表示制造者的认证签名的密钥,并且接着将它认证的公钥验证为WN的密钥,从而使得有可能确认所述WM的真实性),对应于所述散列(如果适用)的WP在钱包程序部分中选择并加载以供执行。通过所述钱包程序的WM的发出(如果适用)通过签名部分的中间人进行,其在进行签名之前的准备过程中验证插入在WM中的散列。应注意,在可能的实施方案变化中,为了将WM发出到接收WN,发出WN的签名子系统在执行过程(也就是说当前加载WP的执行过程)中通过(如果适用)借助于接收WN的公钥传输的数据来产生(或验证)WP的加密,且将其包含于所述WM中以在所述WM的签名发出之前(且在接收后,接收WN一旦已经解密则加载此WP用于执行)发出,因此保证同一WP在接收WN中重新执行。有利的是,WP可组织成各种版本;在一个实施例中,在WM中提供的先前WP版本的散列伴随所述WM,并且对于存储在芯片中的每一状态变量,最后处置它的WP版本的散列与它相关联。因此,WP的状态变量可由WP自身更新,即使它的版本在演变。
[0589] 在下文,考虑WP,其在WM内借助于特定传输WP从一个WN转移到另一WN(参看下文的可执行代码“PP”)。
[0590] 正如已经提到的,对应于所述秘密私钥的公钥由所述片上系统WN的制造者“认证”。此凭证是签名(它是表示制造者的实体的对应于WN的所述秘密密钥的公钥的签名),其签名密钥(也就是表示制造者的公钥)在同一制造者的所有(或至少多个)片上系统WN之间共享。所述凭证是自动产生的,无论产生方法如何:其中所述秘密密钥雕刻于芯片中例如TPM或芯片卡中的方法,其中所述秘密密钥以安全方式存储的方法,其中所述秘密密钥是根据物理不可克隆功能(Physically Unclonable Function,PUF)技术在芯片中自动产生的方法,所述PUF技术在[P.S.Ravikanth,《物理单向功能(Physical one-way functions)》,博士毕业论文,MIT,2001]和[Pappu等,《物理单向功能(Physical one-way functions)》,Science,297(5589):2026-2030,2002]中介绍(具体来说在Smartfusion2 SoC FPGA和来自制造商Microsemi的其它芯片中实施的技术),或者根据类似于后者的技术。发出WM的WN的所述公钥的真实性(具体地说,借助于此WN的秘密密钥实行的签名的真实性)由接收此WM的WN在它接收所述凭证时自动验证。有利的是,系统在WM中自动包含所述凭证。
[0591] 常规地,逻辑集成在SoC中,称为机内自测试(Built-In Self Test,BIST),其通常用于测试SoC的秘密密钥。根据发明性方面,此相同逻辑BIST将用于在进行此测试时,也就是在其产生时,自动产生制造者的签名(凭证),制造者的私钥使得此签名自身有可能为秘密的。因此,在进行所述测试时,如果秘密密钥(私钥)是可操作的并且使得有可能从其推导出对应的公钥,那么公钥的凭证请求借助于表示制造者的私钥而被传输到签名装置。从其所得的签名(如果适用)有利地记录于SoC中。
[0592] CMMU-加密存储器管理单元
[0593] 接下来,将描述“盲SoC”,其确保“盲”的性质能够实施在盲代理部分的开始呈现的方法和具有给定格式的消息,其中钱包节点的特定功能性(例如“检查/加载”和“签名”的那些)已经基本上囊封于特定单元中以提供更多安全性。
[0594] 盲SoC具有秘密私钥。盲SoC可通过消息与另一装置通信,且可响应于接收到消息而执行程序(如图23中所示)。此外,盲SoC可存储已经接收到的待执行程序,所述程序以加密方式接收和/或在通过盲SoC加密之后,并且盲SoC可产生每一程序的散列,此散列使得有可能再次借助于程序散列表(PHT)找出加密程序。装置(客户端)可向盲SoC发送含有用于某一待执行程序(P2)的输入数据的消息,以及所述程序的散列(#P2)。响应于此类消息,盲SoC(i)基于在消息中接收到的程序的散列(#P2)而访问待执行程序,(ii)在运行中解密程序,以及(iii)在运行中执行经解密指令。
[0595] 有利的是,在发出消息之前,盲SoC在消息中将处于执行过程中的程序的散列(#P1)插入在待发出消息的主体中,盲SoC借助于它的秘密密钥对所述待发出消息的主体进行签名。当消息的用于处于执行过程中的程序的散列(#P1)与将由此消息的接收方执行的程序的散列相同(#P1=#P2)时,在所述消息的接收方提供此程序P2的执行的完整性的保证的情况下,所述程序(P1=P2)是“可执行承诺”(智能合约)。(并且,如果针对处于执行过程中的程序发出的散列(#P1)不同于将由提供此程序(P2)的执行的完整性的保证的接收方执行的程序的散列(#P2),但是借助于对这些程序(P1、P2...,如参考图7已经描述)来说共同的规范保证对应关系,那么这些程序表示“可执行承诺”(智能合约)。
[0596] 盲SoC包括CMMU(加密存储器管理单元)单元,其存储--或能够动态地重新产生(通过上文提出的PUF技术)--盲SoC的所述秘密密钥(其可仅由从不公开它的CMMU访问),并且通过此CMMU实行以下操作:
[0597] -程序在存储之前的所述加密,
[0598] -其中将存储由此加密的程序的存储器中的空间的分配(addr1……addr2范围),此所分配空间还允许存储与此程序连接的永久状态变量,并确保程序相对于彼此的隔离,[0599] -程序的散列的所述产生,以及
[0600] -用于在运行中供包含在盲SoC中的至少一个处理器单元执行的所述解密,[0601] -在本描述的下文中描述的其它处理操作。
[0602] 图21以图解方式呈现通过CMMU接收含有将在存储器(MEMORY)中载入的程序的消息的步骤。应注意,存储器可在SoC的外部或不在SoC的外部,且其包括为并不属于给定程序但是共享的变量保留的空间,所述变量例如上文描述的标记。编号的步骤表示以下步骤:
[0603] 1)接收含有待加载到存储器中的程序的消息
[0604] 2)待加载的所述程序进行加密,并且所述程序的散列在加密之前确定,在存储器中预留可含有此加密程序和其也将进行加密的永久状态变量的空间,并存储所述加密程序,所述散列随后使得有可能经由表格(PHT)再次找出所述程序。
[0605] 有利的是,CMMU针对每一指令块实行加密程序的所述存储,并每次(向所述处理器)提供单个经解密指令块(以供处理器对块含有的指令的执行)。应注意,微服务架构[https://martinfowler.com/articles/microservices.html]或无服务架构[https://martinfowler.com/articles/serverless.html]可形成不可分的块部分,因为功能是细粒度的。
[0606] 因此,用于将程序(可执行代码)加载到盲SoC中的方法有利地包括以下步骤。在盲SoC接收到含有P和#PP(呈加密形式§K2P+#PP…)的消息后,PP是程序加载程序,且P是待加载可执行代码的内容,CMMU:
[0607] 1.解密§K2P…并计算待加载程序的散列(#P);
[0608] 2.创建从{#P+盲SoC的秘密密钥}推导出的对称密钥(PK);
[0609] 3.以此对称密钥(§PKPi)加密此可执行代码的指令块;
[0610] 4.在存储器中为这些块§PKPi以及未来的由此程序处置的永久状态变量分配存储器空间(addr1……addr2),并在其中记录这些块§PKPi;
[0611] 5.在程序散列表(PHT)中插入含有#P、addr1、addr2的信息。
[0612] 当含有用于某一待执行程序(P)的输入数据的消息和此程序的散列(#P)被盲SoC接收时,它的CMMU:
[0613] 1.从在消息中且经由PHT表格接收到的程序的散列#P访问存储在存储器中为其预留的空间(addr1……addr2)中的待执行加密程序的块§PKP;
[0614] 2.在运行中解密P的指令块并将它们传输到处理器单元;
[0615] 3.处理器单元在运行中对输入数据执行经解密指令,CMMU在addr1..addr2中隔离地存储链接到P的永久状态变量,且产生的消息包含#P且由CMMU签署。
[0616] 因此,在盲SoC发出消息之前,CMMU在待发出消息中插入处于执行过程中的程序的散列(#P)以及CMMU借助于秘密密钥对此散列进行的签名(或在它利用秘密密钥对其进行签名的待发出消息的主体中插入程序的所述散列),在#P=#P1=#P2的情况下(或根据参考图7的以上描述,在程序根据规范分组的情况下)且如果接收实体还保证它们的执行的完整性,那么这使得有可能在本发明的意义上将此类程序用作可执行承诺(智能合约)。
[0617] 图22概略地呈现表示系统的不同部分(处理器,CMMU,存储器)之间的这些步骤的交互:
[0618] 1)通过CMMU接收含有待执行程序的输入数据以及所述程序的散列的消息;
[0619] 2)基于所述散列,CMMU在PHT中定位所述加密程序,且将所述加密程序加载到其高速缓存中并进行解密(逐块);
[0620] 3)CMMU在运行中向处理器传输经解密程序(每次一个块)以供执行;
[0621] 4)如果适用,那么处理器请求访问已经产生的永久状态变量(PSV和/或标记)或创建/更新它们并要求它们存储,或删除它们,且
[0622] 5)CMMU访问且解密/加密及存储所述永久状态变量;
[0623] 6)如果适用,则处理器准备待发出的消息,以及
[0624] 7)CMMU在待发出消息中插入正在执行的所述程序的散列以及它借助于秘密密钥的签名,并发出所述消息。
[0625] 有利的是,CMMU能够在接收WM期间,针对接收到的每一标记转移交易,验证所需要的上文描述的镜像节点集合的相交区。
[0626] 参考图23,WM可由盲SoC发出(由WP的执行产生)或作为来自用户或另一装置的输入而接收(“准WM”消息),且在两种情况下它们包括此程序的散列#WP。
[0627] 图23呈现作为输入的标记转移WM,其传达交易(tx1),此交易在存储器中在标记处发起由此新交易贡献的标记的插入,如先前描述,每一标记含有表示一连串(树)上游交易的数据,每一交易与产生其的上游WN的地址和其镜像WN的地址相关联。为了验证或不验证消息,CMMU利用此信息验证它的镜像节点和镜像WN的所述地址之间的所要相交区,以及至少一个(或一些,取决于配置参数)是硬WN的事实。此图还示出作为输出的标记转移WM,其在WP的指令后传达由CMMU产生的交易(tx2),CMMU中和(使其不可消耗)由此产生交易消耗的标记(以避免重复花费)且产生作为其输出的新标记,相应的上游交易树与它们相关联(基于它们上游的树)。
[0628] 此外,CMMU管理下文在“链外比特币交易”部分中描述的交易的简化:简化包括替换尚未通过替换的新(或最少的可能)交易插入在区块链中的至少两个先验WN间交易,CMMU确保当前余额通过这些替换保持不变(此机制是通用的,标记转移交易比比特币交易更通用)。
[0629] 图23还示出由主管握手和加密操作的CMMU产生的https请求,使得与它连接的终端扮演输入/输出接口的角色(在TCP级),以确保端到端的数据的完整性(访问的位点是受信任位点)。
[0630] CMMU还负责盲SoC对非WM消息的管理和签名(作为输出,如图23中所示和上文在“WN向外界发出消息”部分中描述)。
[0631] 参考图24,CMMU管理来自由不同WP共享的SAM的传感器的数据(这在下文中“钱包节点与实体世界之间的交互”部分中描述)。
[0632] 对标记的约束
[0633] CMMU包含使得有可能约束WP对标记的使用的机制。因此,标记可保留供WP或链接的WP使用(参见图7),以便防止标记的计算单位被未经授权的WP花费。
[0634] 因此,WP能够向CMMU指示保留标记以供它使用,且CMMU向此标记指派指示存储器中的这一保留的标签。
[0635] 此标签可在所述程序的发起时移除,因此使得标记能够由其它WP再使用。
[0636] 在WP尝试产生通过其中此WP未被授权的标记馈送的交易的情况下,CMMU禁止操作,并且此标记的UA可不被消费掉(因为此类交易无法进行)。此架构允许WN保留针对既定由分别保留UA的WP执行的某些类型操作通过标记具体化的UA,且因此基于为此目的阻挡的UA而实施承诺,例如WO2016/120826A2中描述的CCC。
[0637] 对CCC的改进
[0638] 一般框架的回顾
[0639] 一般框架是一组节点,它们是CCC承诺的受益人,并且可自己向其它节点提供相同类型的CCC承诺,所述其它节点向又其它节点提供等等,节点和CCC承诺由此形成“联网保险”网络。
[0640] 保险费和最大潜在摊款
[0641] 已向第二节点提供某一类型的CCC承诺的第一节点根据此承诺在它的CCC余额(所预留的UA标记的总和)中添加(通常在时间上错开)“保险费”(类似于保险金),以便涵盖这些第二节点的集合,并且向每一第二节点指定指示此第二节点被保险费涵盖的金额的阈值,所述阈值被称为“最大潜在摊款”。在由第一节点覆盖的第二节点中的一个发生灾难之后:作为由此第二节点发出的“保险费凭单”(参看下文的定义)的交换,第一节点从它的CCC余额中向此第二节点转移一定金额的UA(参看“UA转移交易”)。此转移的金额取决于第一节点的CCC余额,且它在针对此特定第二节点指定的最大潜在摊款的金额范围内。
[0642] 保险费凭单
[0643] 由第二节点发出的“保险费凭单”是“给持有者”的债务确认书,其作为在执行CCC承诺时被此第二节点接收到的摊款的支付发出,即在发生灾难之后,从作为此CCC承诺的提供者的第一节点接收到的摊款。此债务可根据此CCC承诺(通常在时间上错开)在为第二节点提供的保险费金额限制内由第二节点收回,并且与此接收到的摊款成比例(适用于多个接收到的摊款)。在以下意义上保险费凭单可支付“给持有者”:只要其相应债务金额尚未支付完(也就是说只要仍存在待接收的UA),它们就表示特定金额的长期价值,具有某一“以UA为单位的即时价值”且可从一个节点转移(参见“UA转移交易”)到另一节点。保险费凭单的“以UA为单位的即时价值”被定义为它针对所提供的不同项表示的金额总和减去在这些项的持续时间内相应的利息金额的总和。保险费凭单的第一持有者是在执行CCC承诺时补偿发出此保险费凭单的第二受灾节点的第一节点。应注意,第二受灾节点在“仅在受灾情况下使用”模式中将摊款转移到第一节点:由此由第一节点接收到的保险费凭单的即时价值添加到CCC余额(其预留用于为灾害支付)中,并且它无法由经授权WP花费(即使部分地),除非是根据此CCC承诺补偿灾难。
[0644] 并行保险费凭单
[0645] 所述第二受灾节点还向所述第一节点转移其自身从其过去在同一CCC的上下文中补偿的下游节点接收的所有保险费凭单,且仍然处于“仅在受灾情况下使用”模式,但是此处处于“并行”模式(也就是复制和同步),并且针对它们相应价值的一半(或在CCC中给定的某一比例)。每一保险费凭单可因此同时在数个节点上复制,可仅用于在受灾的情况下,并且仅在所讨论的CCC的上下文中支付(它的即时价值的全部或部分),通过保险费凭单的支付在它所定位的所有节点上(包含在补偿灾难的第一节点上,第一节点是支付的起点且付款首先转移到第一节点)同时(通过同步)消费。为了实现这一目的,通过保险费凭单的每一灾难支付(如果适用)由支付节点向其中它同样进行转移的其它并行节点报告,并且当价值下降到零时,在这一组这些节点上删除灾难支付。
[0646] 发送消息
[0647] 现在,将描述实施例,根据所述实施例,包含nonce2(且通过nonce2标识)的发出消息在接收到由此消息的接收方传回的且如上文所描述的包含所述nonce2的接收确认(ack)消息后被视为已经由它的发出者“发送”,也就是说,作为自变量nonce1的值。
[0648] 所述消息在针对给定可执行代码固定的一定时间之后到期,在所述时间之后,它通常重新发出达一定次数(参看下文的“在无响应性的情况下保证承诺”部分)。
[0649] 接收确认因此具有以下形式:
[0650] 消息:nonce1:receivednonce2,§K2(data:ack(receivednonce2)+#P),nonce2,K1,signK1(nonce1:receivednonce2,§K2(data:ack(receivednonce2)+#P),nonce2),signK(K1))
[0651] 此外,参考图8,当发送
[0652] ●通过第一发出者(WN1)到接收WN2的第一消息(WM1)处于从发送WM1(其通常针对当前可执行代码为固定的)开始的给定时长内,接着发送
[0653] ●通过WN2到另一接收者(WN3)的第二消息(WM2),标注为“ack(WM2))”(图8中的括号中)的消息,传播由WN2从WN3接收到“ack(WM2)”的确认,是由WN2发送到第一发出者(WN1)。
[0654] 为了说明此方法,参考图8,消息WM1具有以下形式:
[0655] 从WN1到WN2的WM1:nonce1,§K2data+#P,nonce2:N1,K1,signK1(nonce1,§K2data+#P,nonce2:N1),signK(K1)
[0656] 且它的接收确认(确认来自WM1的此发送)具有以下形式:
[0657] 从WN2到WN1的ack(WM1):nonce1:N1,§K2data:ack(N1)+#P,nonce2,K1,signK1(nonce1:N1,§K2data:ack(N1)+#P,nonce2),signK(K1)
[0658] 在通过nonce2标识的第一消息“N1”之后,从WN2发送到WN3的图12的消息WM2具有以下形式:
[0659] 从WN2到WN3的WM2:nonce1,§K2data+#P,nonce2:N2,K1,signK1(nonce1,§K2data+#P,nonce2:N2),signK(K1)
[0660] 在接收确定由WN3传回的WM2的接收确认后,接收确认具有以下形式:
[0661] 从WN3到WN2的ack(WM2):nonce1:N2,§K2data:ack(N2)+#P,nonce2,K1,signK1(nonce1:N2,§K2data:ack(N2)+#P,nonce2),signK(K1)
[0662] 条件是此接收确认在从WM1发送开始的给定时长内到达WN2,如图12中所示,WN2在具有以下形式的消息“(ack(WM2))”中将它传播到WN1:
[0663] 从WN2到WN1的(ack(WM2)):nonce1:N1,§K2data:{(ack(N2),payload)}+#P,nonce2,K1,signK1(nonce1:N2,§K2data:{(ack(N2),payload)}+#P,nonce2),signK(K1)[0664] payload是取决于所讨论的可执行代码的内容,例如WM2的内容。
[0665] 在高达给定最大深度(通常此深度对于给定可执行代码是固定的)的较长消息链的情况下实行相同方法。例如,且参考图8,此链包括
[0666] ●从第一发出者(WN1)到第二发出者(WN2)的第一消息(WM1),
[0667] ●后跟着(在给定时长内)从第二到第三(WN3)的消息(WM2),随后
[0668] ●后跟着(在从发送WM1开始的给定时长内)从第三到第四(WN4)的消息(WM3),[0669] 从第四(WN4)接收的接收确认还逐渐传播直到第一发出者(WN1),到达由WN2发送到WN1的消息“((ack(WM3))”且含有信息:“{(ack(N2),payload1),(ack(N3),payload2)}”,其对应于如下一系列交换消息:
[0670] 从WN2到WN1的((ack(WM3))):nonce1:N1,§K2data:{(ack(N2),payload1),(ack(N3),payload2)}+#P,nonce2,K1,signK1(nonce1:N2,§K2data:{(ack(N2),payload1),(ack(N3),payload2)}+#P,nonce2),signK(K1)
[0671] payload1和payload2取决于所讨论的可执行代码且例如是WM2和WM3的相应内容。优选地,出于隐私的原因,任选地在变换之后仅传送有效地通信的部分。
[0672] 接收确认的这一传播的优势将见于以下方法中。
[0673] 链外比特币交易
[0674] 现在,下文描述了基于WN以使转移价值单位的交易具体化(串行化)的方法,其方式为使得能够例如在区块链中记录它们。在下文描述的实施方案中,所讨论的价值单位是BTC,且产生比特币交易(有效的且可直接插入到比特币区块链中)--但不一定必须将其插入区块链,同时提供与它们已插入的情况相同的保证。(相同方法可基于区块链换位到其它协议)。
[0675] 我们现将考虑WN的秘密私钥是对应于比特币地址的私钥(也就是WN从它的秘密私钥产生比特币地址)的情况。WN因此能够产生比特币交易,其输入(或其输入中的一个)连接到上游交易(举例来说,所述WN的用户能够访问所述上游交易,原因在于其在区块链中公开且作为进入其终端的输入而进入所述WN的事实)的输出(既定用于所述输入),且(任选地)能够广播所述比特币交易以使得其插入区块链中。
[0676] 图9示出具有三个钱包节点(“WN1”、“WN2”和“WN3”)的实例,其中首先WN1的用户(或第三方)创建交付给WN1的传入比特币交易(“Tx1”)(具有对WN1给出10个BTC的输出),且常规地广播此交易,所述交易随后插入区块链中,这具有的效果是向WN1的用户保证仅WN1可花费在Tx1中可供其使用的10个BTC。(应注意,即使Tx1独立于WN1而创建,也提供手段以使得向WN1通知所述交易和/或在其插入区块链中之后验证/检测所述交易,等待或不等待某一数目的块确认,且关于此新条目更新其永久状态变量)。
[0677] 这三个长竖直线表示这些钱包节点的随着时间推移的演变(从上到下)。因此,跟随Tx1,在此图中可见WN之间的若干交易的序列(Tx2、Tx3等),以及其它传入交易(来自非WN地址,交付给WN1、WN2或WN3,例如作为交付给WN2的传入交易的Tx4)和传出交易(来自WN1、WN2或WN3,交付给非WN地址,例如Tx7),其中每当可行时,由新交易替换至少两个先验WN间交易,以使得优选地在两个给定WN之间保留仅一个(或尽可能少)非广播交易,被替换的那些交易被删除(这意味着它们至少被如此标记且视为它们已删除)且当前余额保持不被这些替换改变。一般来说,方法包括利用交易未被广播(下文为“非广播”)的事实,通过更新交易来简化一组交易。
[0678] 当产生将BTC从WN1转移到WN2的交易(例如Tx2)时,交易由WN1签名(常规比特币交易签名)并通过消息传送到WN2。创建(或交易的更新或取消,条件是它是非广播的)通过发送消息来确认(在先前部分的意义上)。
[0679] 在图9中,每一交易抽象地由放置在箭头上的方框(方块)表示。此方框内部的数字表示从用户的视角的转移金额。所述传入和传出交易(也就是非WN之间的交易的交易)由比WN间交易大的方框表示。所述余额以斜体表示(沿着长竖直线,在它们的右侧。WN间交易的所述删除是在表示此交易的箭头的尖端处通过短斜线示出。所述替换交易(例如Tx6)借助于双线箭头以不同方式表示,并且当它们自己被删除(如在Tx8的情况下)时,同样通过短斜线示出。
[0680] 因此,图9在左上示出其余额在之前仅为0的WN1上的10个BTC的入账(Tx1)。通过此交易,它的余额由此变成10(以斜体示出)。这10个BTC(通过Tx2)转移到WN2,WN1的余额再次变成0,且WN2的余额从0变成10。接着,WN2(通过Tx3)将5个BTC转移到WN3(它由此还剩余5个)。随后将10个BTC从非WN地址转移到WN2(通过插入区块链中的交易Tx4),WN2的余额因此从5变为15。WN2将4个BTC转移到WN3(Tx5),两侧上的余额因此从5变为15。WN2将4个BTC转移到WN3(Tx5),两侧上的余额因此分别变为(15-4=)11和(5+4=)9。
[0681] 现在存在两个从WN2到WN3的非广播交易(Tx3和Tx5),并且它们可被转移它们总和的交易(Tx6,转移5+4=9个BTC)替换。由此删除Tx3和Tx5,这在图9中通过表示这些交易的箭头上的短斜线示出。
[0682] WN3通过广播的交易Tx7向非WN第三方转移1个BTC。因此,馈送它(在此情况下,仅Tx6和Tx4,如下文描述的图11中所示)整个交易链同样是广播的(插入在区块链中以使得Tx7也可插入),并且它们可因此不被删除--因此它们不再是可替换的。
[0683] WN2将5个BTC转移到WN1(Tx8)。接着,因为这些WN之间还存在交易Tx2,所以这两个交易(Tx2和Tx8)用从WN1到WN2的Tx9替换,因为它们处于相反方向,所以Tx9转移它们的差(10-5=5个BTC)。由此删除Tx2和Tx8。
[0684] 此替换交易Tx9在产生Tx12之后删除其自身(均为非广播的),从而产生替换交易Tx13。(图9示出用户所感知的这一替换,而下文描述的图12和13示出在比特币级的这一替换的细节)。
[0685] Tx10和Tx15在WN1和WN3之间产生,具有相同值,且处于相反方向,均是非广播的,且因此可简单地抵消掉,也就是说可被删除而不产生替换交易。(再一次地,有趣的是,在图13和14中看到这在比特币级的细节)。
[0686] 处于相同方向(从WN3到WN2)的Tx11和Tx16是非广播的,产生转移它们的总和且自身可替换同时保持非广播的替换交易Tx17(图14和13中示出比特币级的细节)。
[0687] 另一方面,传出交易Tx18(广播)造成馈送它且此后无法再删除的交易链的广播,在此情况下为Tx13(参看图15)。
[0688] 在图9中所示的比特币交易是“抽象”的,因为它们呈现出从用户的视角来看的转移金额,但是没有在比特币意义上示出这些交易的输入和输出。图10到15示出对应于图9的抽象交易的实际交易(通过明确地提供它们的输入和输出)。
[0689] 其产生方法是基于如下事实:对应于WN中可用的余额(图中斜体的数字)始终存在至少交付给此WN的输出(可用金额)(这些输出的总计等于此余额),可以组合此类输出以便将它们连接到由所述WN产生的交易的输入,并且在过冲的情况下通过额外输出(或作为交易费用)将过剩量(称为“找零”)返回到所述WN。至于涉及到替换/删除的实施,即使在待删除交易(例如,Tx10,参看图13)的输出在相同操作中连接到不应被删除的交易(Tx11)的输入的情况下,后者也可自动更新以便连接到可从另一交易(Tx13)获得的输出。
[0690] 在图10到15中,交易的输入和输出展示为短水平箭头,且它们的连接展示为细弯曲虚线(交易的标记为“WN1”的输出连接到后一交易的同样标记为“WN1”的输入,以此类推)。
[0691] 在这些图中隐含的是,交易的创建包括在先前部分意义上发送消息。例如,通过WN2产生Tx3导致通过WN2发送向WN3指示的消息,并且此交易实际上仅在WN3传回接收确认后创建(同样参看“在无响应性的情况下保证承诺”部分)。
[0692] 图10示出真实交易Tx1到Tx5,其对应于具有与图9中相同的标记的抽象交易。其中可见,虽然根据图9,Tx3转移仅5个BTC到WN3,但其输入从Tx2取得10个BTC(由于Tx2仅具有交付给W2的10个BTC的输出的事实)且传回5个BTC到WN2,另外还有交付给WN3的5个BTC的输出。
[0693] 图10中的交易Tx3和Tx5在图11中用WN2产生的交易Tx6替换(所述替换通知被发送到WN3)。为了实行此替换,WN2可将Tx6连接到Tx2或传入交易Tx4。传入交易Tx4是优选的,因为上游的供应交易链更短(或通过应用更复杂的探试法)。实际上,这个图表示从一开始广播的传出交易Tx7,并且另一方面,如果Tx6连接到Tx2,那么Tx2也必须已经广播过,且随后不可被替换,如图12中所示。
[0694] 图12示出用Tx9替换Tx2和Tx8的结果,以及通过WN1进行(到WN3)的交易Tx10、通过WN3进行(到WN2)的Tx11和再次通过WN1进行(但是到WN2)的Tx12的产生。
[0695] 图13示出在产生Tx12之后Tx13对替换交易Tx9的替换。实际上,如图9(和图12)中所示,这两个交易的累积效应是从WN1向WN2提供5+4=9个BTC。此替换具有更新Tx10的输入以及它的现连接到新交易Tx13的第二输出的效果。在此图中,还看到交易Tx14到Tx16的产生。
[0696] Tx15的产生具有抵消Tx10的效果的效果,实际上,它在相反方向上转移了1个BTC。图14示出这一抵消的结果,其导致Tx11的输入和输出的更新。
[0697] 最后,在图15中,Tx11和Tx16被Tx17替换,Tx17将它的输入连接到Tx7的输出。此图还示出WN1产生通过Tx13馈送的传出交易Tx18,这使得Tx13广播且因此不可删除。
[0698] 在上文(以及申请PCT WO2016/120826A2中),已经描述WN的执行完整性保证和盲性质,根据这一描述,在接收到WM后,WN必然在把所有其它数据除外的所提供输入数据上执行在此WM中指示的把所有其它指令除外的特定WP,并且通过在输入数据、它们的处理、状态变量和处理结果不具有不连续性的同时确保不可访问性,仅发出(如果适用)相对于这些输入数据和永久状态变量在所述WP中提供的WM。
[0699] 上文对于比特币交易(可插入也可不插入在区块链中)的产生和处理所述的操作利用这些属性来保护所述删除/替换的安全。因此,例如,通过WN1产生替换交易Tx6(参考图9和11)并不存在WN2(或它的用户或所有者)不删除Tx6替换的交易Tx2的风险。事实上:
[0700] ●只要WN2不广播Tx2以插入在区块链中(例如,在用户发出命令之后),用户就无法看到Tx2的内容(此内容包括WN1对此支付的签名,并且如果不是为了盲性质,WN2的用户可在之后通过其它手段复制和广播);
[0701] ●WN2在删除WN2中的Tx2之后(或当Tx2标记为处于“已删除”模式时)不考虑广播命令;
[0702] ●当Tx2的内容已经向用户公开(在广播之后)时,在本发明方法的意义上,它不能再被删除/替换。
[0703] 应注意,可产生所有不同可能的比特币交易类型。交易通过WM传送到具有在这些交易的输出上指定或针对这些输出指定的地址的WN。所需的签名可由WM传送。例如,需要m个签名中的n个(多重签名)的交易可由WN产生,并由WM传送到m个潜在的签名者,其中的一些将传回它们的签名。因此微支付的交易[https://en.bitcoin.it/wiki/Contract#Example_7:_Rapidly-adjusted_.28micro.29payments_to_a_pre-determined_party]以及支付通道和此类通道中的支付的建立,具体来说根据闪电(Lightning)网络协议[https://lightning.network/lightning-network-paper.pdf],可以由WN产生且根据此处描述的方法进行简化。
[0704] 不必在区块链中插入交易的事实存在优势,具体地说,存在以下优势:(1)瞬时确认,(2)无付费,以及(3)理论上无限制的可能交易量。
[0705] 在哪些情况下确实需要将交易插入在区块链中呢?
[0706] -传入交易(来自非WN地址)必须预先一定插入区块链中以便防止重复花费。因此,WN不考虑(或确认)传入交易,直到它在区块链中可见为止。
[0707] -传出交易仅任选地广播,从而(几乎)不存在WN重复花费的风险(利用现有技术水平的片上系统篡改(“tampering”)的风险较低,特别是在存在镜像WN的情况下--参看上文镜像WN的描述)。实际上,传出交易在将要花费意图用于非WN地址的至少一个输出时插入在区块链中。它的内容变得可访问,如上游交易那样,并且这些交易不再是可删除的。
[0708] -WN间交易有利地可不广播,但关于其广播不存在限制(在任何时间)。广播交易(出于使它插入在区块链中的目的)将不替换,因为它无法删除,但是其它交易仍然具有上述优势,除了它们馈送它的情况之外(优势在广播交易+馈送它的上游交易链本地丢失)。
[0709] 已经发现,所产生的WN间比特币交易在接收到接收确认(从它们相应的受惠人)后确认,并且在一些情况下,两个给定WN之间的两个交易在它们均未广播时得以简化(被单个交易替换或简单地抵消掉)。现在参考图16到19,将描述一种用于简化(包含通过替换或简单的抵消)多于两个WN之间的多个交易的方法。此方法使用上文所描述的传播接收确认的方法,它们的有效负载(同样在上文描述)传播在非直接邻近的WN之间转移的BTC的信息。
[0710] 图16到19再次采用图9到15的实例,除了在图16到19中,交易Tx7在交易Tx13已经确认(由WN1产生)之后(通过WN3)产生。(应注意,相同方法已经利用在图9到15中示出的实例加以描述,但是认为Tx7在Tx13已经确认之前未广播。)
[0711] 归功于WN3对Tx6的9个BTC以及交易Tx9和Tx12的同样总共9个BTC的接收确认通过WN2到WN1的传播(在WN1从WN2接收到接收确认后)被确认,WN1用直接从WN1向WN3转移9个BTC的单个交易Tx19替换这三个交易。
[0712] 在实施方案变化形式(这一变化形式在图16到19中示出)中,首先,均是从WN1到WN2的Tx9(5个BTC)和Tx12(4个BTC)被Tx13(9个BTC,从WN1到WN2)替换,接着Tx13和Tx6(9个BTC,从WN2到WN3)被从WN1到WN3的Tx19(9个BTC)替换。
[0713] 为了呈现所产生的实际比特币交易,图17重复图13,但是没有同样产生Tx7和之后交易。图18示出交易Tx19(9个BTC,从WN1到WN3),其替换图17中示出的交易Tx13(9个BTC,从WN1到WN2)和Tx6(9个BTC,从WN2到WN3,其从Tx4获得10个BTC并使自身具有1个BTC的零钱)。最后,如图19中所示,本实例的所有九个WN间交易已经简化以形成一组仅两个交易(Tx19和Tx17)。
[0714] 应理解,此方法也可用于简化具有多于三个WN(不限于此数目)的网络中的WN间交易路线。
[0715] 还应注意,可以用当广播交易时对交易费用支付的查看来替换交易。
[0716] 所讨论的计算单位(BTC)有利地以标记形式实施,并且所述比特币交易是标记转移交易,其UA是BTC(如上文所描述)。
[0717] 因此,不同类型的WP(智能合约)消费标记的UA的可能性(如果它们被授权这么做的话)(参看标记和CCC的描述)使得有可能提供具有例如以太坊的系统的智能合约的效力的基于比特币的系统。
[0718] WN SoC和WN包围区的混合网络
[0719] 作为提醒,申请案PCT第WO2016/120826A2号描述一种片上系统(WN SoC),其中作为具备处理器的装置对消息接收的反应,包括不可修改指令的第一程序(此处称为“WNRoT”,即“信任的钱包节点根(Wallet Node Root of Trust)”)将可执行代码加载到此片上系统中,所述可执行代码的散列对应于所述接收到的消息中包含的给定散列。由此相对于这一接收到的消息预先确定遵循此可执行代码的在所述装置中的执行。保证所述对应关系,使得在所述片上系统的不同部分之间存在适当访问限制且无法更改。因此,通过消息的发出者施加的可执行代码是任意的,且能够更新状态变量(只有具有这些状态变量的可执行代码能够修改它们)并产生又其它消息,所述又其它消息自身将这一相同散列代码传播到又其它此类装置。
[0720] 系统因此使得有可能保证所述可执行代码表示的可执行承诺(钱包程序或智能合约)。举例来说,此PCT申请的图7示出从节点“WN 1”到另一节点“WN 2”的10个计算单位(UA)的支付,在这两个节点中的每一个上单独地执行(具有不同输入消息且在不同永久状态变量上,在此情况下这些变量是UA余额)的相同钱包程序从WN 1的余额减去10个UA且将10个UA添加到WN 2的余额,WM指示此支付已从WN 1发送到WN 2。
[0721] 此保证仅存在,然而,只要所述装置保持响应性(有效,接通)--提升的限制归功于上文描述的镜像WN(还参见下文“在无响应性的情况下保证承诺”部分)--然而应注意,例如上文所提到的支付WP等一些智能合约可以甚至在无响应性约束的情况下起作用:即使支付的接收者无响应性,在涉及传回WM的实施方案中,视为已经被支付的WN(此处WN 2)一旦其再次变成响应性就将接收支付的金额且相应地增加其余额。
[0722] 此保证是由于以下事实:(i)接收到消息的装置根据此消息强加的智能合约而做出反应,以及(ii)此消息自身是确切地在相同智能合约的情境中产生,因为其由相同可执行代码产生。此装置在具有秘密私钥(可仅通过签名子系统“签名”访问:参看此PCT申请的图5)的片上系统中实施,并且能够:
[0723] *作为对含有散列(#WP)的消息(WM)的接收的反应,从任意可执行代码(钱包程序)的子系统加载WP任意可执行代码用于执行,所述可执行代码的内容的散列对应于所述消息(WM)中含有的所述散列(#WP);
[0724] *在待发出消息(WM)的签名之前,使得签名子系统(Sign)产生或验证当前载入的任意可执行代码的散列(#WP)以包含在所述消息中(在任选的利用待传输的其它数据对此散列的加密之后),由此保证相同散列从接收到的消息重新传播到发出消息(或,有利地且如已经描述的,WN交换包含待执行的不同WP的不同散列的WM,但是其对应关系借助于包含在WM中的待执行WP的普通具体说明保证)。
[0725] 并且,在“CMMU”部分中,此处已看见WN SoC的另一实施例,其中基本上属于WN的功能(对应于检查/加载、签名等部分的功能性)已经囊封于称为加密存储器管理单元的单元中。
[0726] 现在,将描述实现WN SoC类型实体与此处称为“包围区”的安全单元类型实体之间的协作的方法,其体现上方参考的WN的原理,具体来说如下的原理:在每一节点处WP程序被加密,且所讨论的节点基于传入消息(WM)中含有的这些程序的散列(#WP)以安全方式访问这些加密的程序。下文,术语“包围区”是以受信任执行环境(Trusted Execution Environment)(“TEE”)的一般意义来理解,且不限于英特尔处理器的SGX包围区。
[0727] 术语“包围区”因此可无差别地指代包围区自身以及能够产生此包围区的安全环境。
[0728] 因此,WM可由WN片上系统或包围区发送且由WN片上系统或包围区接收。现将描述用于这些交换的协议。
[0729] 应当记住,根据上文描述的格式选项,来自WN SoC的任何消息具有以下形式:
[0730] 消息:nonce1,§PK2data…,nonce2,PK1,SignSK1(nonce1,§PK2data…,nonce2),signSK(PK1)
[0731] 其中
[0732] ●SK1/PK1是消息的发出者的私钥/公钥对,
[0733] ●SK2/PK2是消息的接收者的私钥/公钥对,且
[0734] ●SK是表示或批准制造者的信任授权方的私钥,认证发出者的公钥PK1,[0735] ●§PK2data…是消息的内容(有效负载),此内容以PK2加密,
[0736] ●nonce2识别所讨论的消息,且nonce1是所接收传入消息的识别符,其触发带来此消息的处理操作,且
[0737] ●签名signSK(PK1)(称为“凭证”)认为已经由消息的接收者通过用表示或批准制造者的信任授权方的公钥PK对其进行解密而验证,此验证的目的是确保消息来自WN SoC。
[0738] 此处考虑,在接收到来自包围区的任何消息时:
[0739] ●凭证(信任授权方的签名signSK(PK1))指示涉及包围区,且
[0740] ●§PK2data…包含执行的程序的真实性和此执行的完整性的凭证。
[0741] 包围区此处其特征在于具有以下性质:
[0742] ●“隔离”:包围区隔离其数据和处理操作,且在任何时间其执行状态(或执行堆叠)从操作系统不可见;
[0743] ●“秘密密钥”:包围区具有只有它可访问的秘密私钥;
[0744] ●“远程认证”:包围区能够提供其执行的程序(具体来说所述第一WNRoT程序或执行的钱包程序)执行的真实性和完整性的凭证;
[0745] ●“认证”:包围区或含有包围区的处理器由表示或批准处理器制造者的信任授权方(提供其公钥的签名或包围区地址的签名的授权方)认证;以及
[0746] ●“通用”:包括首先加载到包围区中的不可修改指令的所述第一程序--例如在WN协议的情况下的WNRoT--可选自多个第一程序(对应于使用的协议)。
[0747] 关于以上性质中的最后一个(“通用”),由于所述第一程序可选自多个程序,因此所认证包围区的地址(或公钥)不足以保证其表现为WN(如迄今为止WN SoC的情况);还必需确保所述选择的程序是“WNRoT”。
[0748] 因此,为了WM可从WN1节点发送到WN2节点,WN2此处是包围区(其凭证已由WN1验证),钱包节点之间的通信的协议(WN协议)包括以下步骤:
[0749] 1.WN1通过预先消息向WN2宣布待发送到WN2的WM的存在;
[0750] 2.WN2产生用于WNRoT的(程序的真实性和其当前执行的完整性的)凭证,且将其传回到WN1;
[0751] 3.WN1验证接收的凭证且(如果验证成功)将WM发送到WN2。
[0752] 此处,假定这三个步骤在保持专用于协议执行的此例项的同一包围区中发生,且能够专门接收预期消息,那么包围区保证WNRoT的真实性和完整性,也就是说,包围区保证表现为WN。
[0753] 在不保证此排他性表现的情况下(或为了在确保此表现的情况下增加安全性),随后在步骤2,WN2产生临时标志(新产生的仅使用一次的随机数)且将其和凭证一起发送,且在步骤3,WN1以此接收的临时标志加密其发送到WN2的WM的内容。更精确地说,涉及的步骤如下:
[0754] 1.WN1通过预先消息向WN2宣布待发送到WN2的WM的存在;
[0755] 2.WN2产生用于WNRoT的(程序的真实性和其当前执行的完整性的)凭证以及临时标志,且将凭证和临时标志传回到WN1;
[0756] 3.WN1验证接收的凭证,以接收的临时标志加密WN的内容且将其发送到WN2。
[0757] 在某一实施方案中,在步骤3发送的WM含有散列#WP(如上文在WM的呈现中所描述),且WN2可随后:
[0758] ●加载对应WP(经由程序散列表-PHT)且
[0759] ●对在步骤3接收(且如果适用,WN2已经用临时标志密钥解密)的WM中含有的数据执行所述WP。
[0760] 作为变化,有利的是,在步骤1,WN1发送#WP并且在步骤2,WN2加载WP(因此使用将在步骤3接收的WM的等待时间)。更精确地说,涉及的步骤如下:
[0761] 1.WN1将#WP传输到WN2;
[0762] 2.WN2产生用于WNRoT的凭证(和临时标志),将凭证(和临时标志)传回到WN1且加载WP;
[0763] 3.WN1验证接收的凭证,随后(以接收的临时标志加密WM的内容且)将WM发送到WN2;
[0764] 4.WN2(解密WM中含有的数据且)对WM的(经解密)数据执行WP。
[0765] 在WN1是包围区的情况下,也就是说,所接收消息的发出者的密钥PK1的凭证(即,信任授权方的签名signSK(PK1),其可包含于接收到的消息中或可在别处访问)指示WN1是包围区,在验证此凭证之后,WN2验证在步骤1或3接收的消息(在§PK2data…中)包含所执行程序的真实性和此执行的完整性的凭证。
[0766] 如先前描述,在WN的接收者是WN SoC的情况下,WM可直接采取以下形式:
[0767] 消息:nonce1,§PK2data+#WP,nonce2,PK1,SignSK1(nonce1,§PK2data+#WP,nonce2),signSK(PK1)
[0768] 其与用于将WM发送到包围区的协议相比具有一个步骤而不是三个步骤的优点,以及减少的漏洞区域。
[0769] 有利的是,如果由于接收的消息,包围区能够从主秘密密钥(密封密钥)且从给定WP的散列#WP动态地(再)产生导出密钥“SKd,PKd”(私用/公开,私钥仅可由包围区访问),那么除#WP外的WM的数据(或有效负载)借助于秘密导出密钥SKd加密,且因此仅可由用于给定WP的专用(初始化)包围区解密。
[0770] 恢复统一格式,以PK2的加密此处被以PKd2的加密替换,不同之处在于仍以PK2加密的#WP。
[0771] 消息:nonce1,[§PKd2data,]§PK2#WP,nonce2,PK1,SignSK1(nonce1,[§PKd2data,]§PK2#WP,nonce2),signSK(PK1)
[0772] 在接收到消息时,接收者WN可如第一步骤那样至少以其私钥SK2解密#WP,从其导出一对密钥SKd2、PKd2(如果这尚未完成),且将PKd2传送到发出者(如果这尚未完成)。
[0773] 如果此消息的接收者是WN SoC,那么如果发出者知道PKd2则在单个消息中执行交换,且如果不知道则以额外交互执行交换以便将PKd2传送到发出者。
[0774] 如先前陈述,如果此消息的接收者是包围区,那么WN协议(上文详述)涉及WN2向WN1发送WNRoT的执行和完整性的凭证(WN1自动要求此条件),然后WN1将消息的数据内容传输到WN2。因此,方法如下:在接收到含有#WP的消息(WM1)后,包围区传回用于WNRoT的凭证且等待额外消息(WM2)以便知道数据,且(经由程序散列表PHT)加载对应于#WP的WP,随后尽快对数据执行所述WP;最后,有利地可从WN2发送随机加密密钥到WN1以便加强安全性,因为WN1以此密钥加密数据。
[0775] 本发明利用以下事实:包围区涉及两级协议(因为WN1在传送消息的数据内容之前必须验证WNRoT)且导出的密钥也需要两级协议(因为必须首先基于含有#WP的传入消息动态地重新配置包围区),且在以下四个步骤中组合这些相应两个级:
[0776] 1.WN1将#WP传输到WN2(在消息WM1中):
[0777] 消息:nonce1,§PK2#WP,nonce2,PK1,SignSK1(nonce1,§PK2#WP,nonce2),signSK(PK1)[0778] 2.WN2产生用于WNRoT的凭证(和任选地临时标志,下文未示出),将凭证和导出的密钥PKd2(以及如果适用,所述临时标志)传回到WN1且加载WP:
[0779] 消息:nonce2,§PK1PKd2+WNRoT,nonce3,PK1,SignSK1(nonce2,§PK1PKd2+WNRoT,nonce3),signSK(PK2)
[0780] 3.WN1验证接收的凭证,随后将消息(WM2)发送到WN2(如果适用,在以所述接收的临时标志加密此消息的内容之后);
[0781] 消息:nonce3,§PKd2data,nonce4,PK1,SignSK1(nonce3,§PKd2data,nonce4),signSK(PK1)
[0782] 4.WN2以SKd2(以及如果适用,所述临时标志)解密WM2中含有的数据§PKd2data,且对经解密数据执行WP。
[0783] 有利的是,且如先前描述,在步骤2,动态地(再)导出密钥对SKd2、PKd2(在步骤1从WN1接收#WP后),因此避免使用包围区的主密钥SK的需要。
[0784] 镜像包围区
[0785] 关于具体来说在“镜像WN”和“标记”部分中描述的对镜像节点的约束,“硬WN”可由SoC或由包围区形成。
[0786] 钱包节点与实体世界之间的交互
[0787] 将记住,申请案WO2016120826A2描述了与能够从“所有者钱包节点”(OWN)关联的实体转移到另一OWN关联的另一实体的产品例项相关联的“标记”的概念,标记在此情况下是由初始OWN产生。
[0788] 因此,当标记从第n个OWN转移到第n+1个OWN时,(通过WN的设计)保证第n个OWN将不再保持标记。
[0789] 一个OWN与下一OWN之间的这些“标记”转移的交易在上文的“标记”和“CMMU”部分中详细地描述。
[0790] 实际上,初始OWN将随机产生的标记数字指派给新标记,且因为没有其它初始OWN将一直对另一标记给予此相同数字,所以标记数字是唯一的。
[0791] 为了说明标记的使用,首先假设给定标记表示具有以下特性的椅子:
[0792] -序列号(由椅子的制造者给定)已在其制造期间以实际上不可更改的方式附连于椅子下方,至少在无可见更改的情况下不可更改(如果你看椅子下方),
[0793] -初始OWN与椅子的制造者相关联,
[0794] -初始OWN使椅子的序列号关联于标记数字。
[0795] 在此实例中,标记可有利地由RFID标记实施(胶合于椅子下方),所述RFID标记存储例如标记数字、相关联序列号以及初始OWN的识别符(以及稍后当前OWN的识别符)。
[0796] 应注意,作为变化,标记可以通过写着此相同信息的纸标签实施,或者标记可能未具体实施但可通过椅子下方标注的序列号来识别;事实上,实施标记不是必要的,因为标记数据从一个OWN传输到下一OWN。
[0797] 现将描述一个实施例,其中通过标记识别的对象(产品实例)与WN相关联,所述WN能够经由一个或多个传感器和/或一个或多个致动器与所讨论的对象的外部实体世界交互。下文中,此WN称为“主体SoC”或“BS”--事实上,所讨论的WN是由所述主体SoC(或由“主体包围区”)“代管”,如稍后描述,但为简单起见我们此处将考虑其中BS代管仅一个WN的特定情况,且如此部分中稍微松散地描述,这两个单独实体,即主体SoC(作为硬件和软件实体)和WN(作为软件实体)合并在一起。
[0798] 因此采取表示住宅的正门锁的标记的实例。此处再次,制造者产生清楚地雕刻在锁上且实际上不可更改的序列号,且使序列号与标记数字(由表示制造者的其初始OWN产生)相关联。
[0799] 在此实例中,制造者将有利地使此锁与BS关联,所述BS将不可更改地嵌入锁中且连接到能够指示锁的当前状态(此处在基本实施例中为“打开”或“关闭”)的状态传感器,且连接到例如电学接触器等致动器,所述致动器选择性地按次序对电磁体供电以锁定或解锁门。
[0800] 锁的BS能够将锁的当前状态传输(通过WM)到其OWN(通常与住宅的看管人相关联)且OWN可借助于发送到BS的WM而操作电力开关以改变此状态(即,打开或关闭门)。
[0801] 在另一OWN相关联的租户租赁此住宅的情况下,BS的控制从看管人的OWN转移(通过标记转移交易-参见上文)到租户的OWN,随后当租约结束时自动重新转移(通过反向交易)到看管人的OWN。
[0802] 有利的是,看管人的OWN可在对看管人提出的过程期间验证(例如通过自动字符-读取/辨识方式)关联于此锁的BS中的锁对象的序列号确实事实上对应于雕刻在锁上的序列号。
[0803] BS的一个目标是为涉及的OWN提供相关联对象的当前状态,以便能够信任所述对象且以可靠的方式作用于此对象。
[0804] 为此目的,根据一个可能架构,如此处所描述的BS与传感器和/或致动器模块(或与包括若干传感器和/或致动器的模块)物理上分开,且在这两者之间提供安全的通信方式。
[0805] 图24示出与传感器/致动器模块(SAM)相关联的SoC的架构。
[0806] BS与SAM之间的连接是借助于专用无线连接实现。优选地,此通道配备有检测WN与检测器或传感器之间的通信的中断或更改的构件,其能够揭露传感器或检测器是否已经被篡改、更换、更改等。
[0807] 传感器可为任何类别:能够执行物理和/或化学测量,能够揭露实体世界的元件的二元状态(打开/关闭等)。
[0808] 专用无线连接可在BS侧和SAM侧上并入有与无线通信元件(WCE)相关联的通信管理单元(CMU)。
[0809] BS与传感器的电路之间的连接的安全性可包含若干方面。
[0810] a)保障物理层安全
[0811] 这可基于在BS与电路之间产生的电接触,或基于无线连接。在第一实例中,保障物理层安全可通过在BS处确定传感器/致动器电路的静态或动态阻抗特性来实现。例如通过施加电学脉冲而获得的波形所体现的电路的阻抗特性存储在第一连接处且规则地进行验证。响应的改变指示电路已被移动、更改或甚至更换。
[0812] 在无线连接(电磁、光学、声学、...)的情况下,在时域中或在频域中的连接的表现的分析也可存储在第一连接处,使得有可能验证电路尚未被移动、更改或更换。
[0813] 应理解,这些检验是与在BS与电路之间交换的消息的内容无关地执行。
[0814] BS与电路之间的物理连接因此被学会。
[0815] b)保障交换安全
[0816] 取决于传感器/致动器电路是否具有或不具有处理构件,可根据不同方法保障交换安全。
[0817] 在第一情况中,由传感器供应的值(通常为模拟)可形成概率测试的对象(可能值的范围),或可利用由BS发送到致动器的命令信号(以类似于物理层测试的方式)以便验证电路的特性阻抗。
[0818] 在第二情况中,可以例如通过周期性地或连续地从BS发出信号到此电路且通过验证响应是否匹配于期望响应来使交换安全。更改的检测可以是传感器和/或检测器模块的取代、移动或操作条件的改变的检测,例如通过WN与传感器或检测器的电路之间的通信中的预期信号的变化来检测。
[0819] 除上文描述的学习过程之外或作为其替换,BS与SAM之间的关联是通过BS与SAM之间的初始配对过程来实现,随后执行验证关联的持久性的过程。
[0820] 在可能形式的配对中,在BS中提供的通信管理单元致使自动地或在包含配对功能的WP的执行的背景下经由相关联WCE元件向SAM发送配对信号,并且在SAM对此信号的特定处理之后,存储响应。这可以是含有SAM的唯一ID的响应,和/或产生于由BS发送的ID的变换的ID,从PUF不可仿制功能(见上文)导出的ID等。
[0821] BS与模块之间的关联的持久性可例如通过以下方式实现:经由CMU和WCE从BS向模块周期性地发送对特定一条信息进行编码的信号(频率取决于应用而广泛变化,其范围可例如从每微秒到每天)且验证接收到的响应(其可有利地包括可变分量以便避免通过监听的欺诈)。
[0822] 在BS和SAM配对时,由SAM传感器传递且将传输到BS的信号和/或在BS中产生且将传输到SAM的命令信号可以通过适当协议从一个元件传输到另一元件,能够实施任何适当的安全解决方案(数据的编码或加密,具体来说处理同一BS具有与若干SAM的连接的情况的寻址机制等)。
[0823] 此外,可以利用此相同传输来验证SAM占用关于BS的固定位置(例如通过使用传播时间的“距离限界”的过程)。
[0824] 取决于所选架构,与配对、连接的持久性以及数据传送有联系的处理操作可以在属于CMU的专用处理器中或BS的另一处理构件中实施。
[0825] 此外,来自SAM的传感器的数据存储于感测/动作状态变量存储器中,所述存储器由不同WP共享且由与CMMU相关联或不相关联(此处与CMMU相关联且表示为CMMU-S/A)的适当存储器管理单元管理。
[0826] 应理解,取决于物理层的性质以及BS与电路之间的交换协议的性质,CMU可采取极不同的形式。在物理层的验证的情况下,在BS侧上的CMU可包括简单模拟电子电路,其递送逻辑信号,所述逻辑信号揭露连接相对于在第一次连接时建立的连接是否已更改。
[0827] 相比之下,在更复杂实施例中,在BS侧和电路侧上的CMU可包括连接到无线连接的操作电路(调制、放大、天线或其它发射器)的专用微控制器。
[0828] 优选地,实施标准协议以使得满足此标准的不同类型的SAM可连接到同一BS。
[0829] 还设想BS可经由同一WCE或通过若干WCE与各自具有其自己的功能的若干SAM通信。
[0830] 优选地,SAM的无线传输/接收部分以安全方式(嵌入于树脂中等)与将执行的物理功能(传感器、致动器)物理上集成,以便限制关于实体世界的欺诈风险。
[0831] BS与SAM之间的无线通信可通过任何已知技术来实现,具体来说磁性电容式、电磁(包含光学)、声学(声波)等技术。
[0832] 取决于情况,WCE将是板、线圈或天线、电磁辐射源、压电式或等效元件等。
[0833] 取决于所选技术,CMU将包括适当的调制和放大电路。
[0834] 在近场通信(NFC)的情况下,在特定实施例中,有可能基于已添加现成的NFC标记(或其它RFID标记)的现成的传感器或致动器产生SAM,与NFC标记的交换协议实现上文描述的配对和持久性。在此特定情况中未通过NFC标记保障安全的致动信号或所捕获信号的传输在此情况下是通过有线或无线的特定额外接口来管理。
[0835] 根据另一实施例,使用配备有用于传感器和致动器的有线输入/输出引脚的可编程NFC模块。这些全部被囊封,在适用的情况下具有电池,以便实现物理完整性。
[0836] 在这最后两个实施例中,安全性的重要方面是传感器/NFC标记单元关于BS未移动。此安全特征可以特别有利的方式实施,方法是分析BS与标记之间的无线传输的时域的一个或多个参数(脉冲的持续时间、脉冲滞后、脉冲的波分量的振幅、脉冲降落时间等)。
[0837] 此安全特征可通过分析传输的频域的一个或多个参数(频谱值)来进一步增强。
[0838] 主体包围区和WN SoC混合网络
[0839] 现将描述实现以下各项之间的协作的方法:
[0840] ●WN片上系统类型实体(如第WO2016/120826A2号PCT申请和上文此文字中所描述)和
[0841] ●所谓的“主体包围区”,其能够执行WP且访问输入/输出和存储器构件,例如上文描述的WN包围区,但另外:
[0842] ○各自能够代管在接收到消息后动态地初始化的多个WN(真实WN或会签者WN),[0843] ○能够在不同代管的WN之间共享WP,
[0844] ○能够处置
[0845] ■不仅在每一代管的WN处的数据(例如标记)和在代管的WN的每一WP处的数据(PSV),
[0846] ■而且在主体包围区处的数据,
[0847] ○能够通过传感器和致动器(SAM)连接到现实世界,且
[0848] ○能够存储传感器和致动器的数据且选择性地在不同代管的WN和代管的WN的不同WP之间共享所述数据。
[0849] 由主体包围区代管的每一WN的私钥/公钥(SK/PK)对是由代管其的第一主体包围区产生(盲产生,无需将其揭露),随后有利的是,传输到代管其会签者的主体包围区(也盲产生,私钥SK仍为秘密),此产生使代管的WN能够接收借助于其公钥PK加密的消息内容(有效负载)(替代地,代管的WN可接收以导出密钥加密的内容--参见下文使用一对导出密钥“SKd,PKd”的方法)。
[0850] 上文在“WN SoC和WN包围区混合网络”部分中描述的WN包围区此处视为包含仅一个WN的主体包围区的特定情况。
[0851] 在“WN SoC和WN包围区混合网络”部分中描述的方法在此处继续,然而,在WN协议(为了从节点WN1发送WM到节点WN2)中,在接收者节点WN2在主体包围区(下文称为“主体2”)中代管的情况下,还传输WN2的地址(从其公钥导出),以便使主体2能够关于WN2(且不仅关于#WP)初始化。因此,举例来说,在“WN SoC和WN包围区混合网络”部分中描述的第一变化如下修改(消息在此处概略地示出以指示方法,这不会构成限制):
[0852] 1.WN1将#WP以及WN2的地址传输到代管WN2的主体包围区Body2
[0853] 消息:nonce1,§PKBody2WN2+#WP,nonce2,PK1,SignSK1(nonce1,§PKBody2WN2+#WP,nonce2),signSK(PK1)
[0854] 2.Body2产生与WNRoT的执行相关的凭证,传回此凭证到WN1,针对WN2初始化且加载WP
[0855] 消息:nonce2,§PK1att(WNRoT),nonce3,PK2,SignSKBody2(nonce2,§PK1att(WNRoT),nonce3),signSK(PK1)
[0856] 3.WN1验证接收的凭证,随后向Body2发送以WN2的公钥PK2加密的数据内容[0857] 消息:nonce3,§PKBody2§PK2data,nonce4,PK1,SignSK1(nonce3,§PKBody2§PK2data,nonce4),signSK(PK1)
[0858] 4.WN2解密数据且对数据执行WP。
[0859] 还采用与“WN SoC和WN包围区混合网络”部分中描述的方法相同的方法,有利的是,在由于接收的消息的缘故包围区能够基于主秘密密钥(密封密钥)和消息中指定的接收消息的钱包节点(和任选地如果期望不使用WN的秘密密钥的优点则为散列#WP)的WN2地址动态地产生导出密钥“SKd/PKd”(私用/公开,私钥仅可由包围区访问)的情况下,[0860] 消息的数据(或有效负载),即除接收者节点的地址WN2外的数据(和将执行的WP的识别#WP)是借助于秘密导出密钥Skd加密,且因此可仅由用于给定钱包节点WN2(和给定WP)的专用包围区解密。
[0861] 回到统一格式,以PK2进行的加密因此被以PKd2进行的加密代替,不同之处在于仍以PK2加密的WN2(和#WP)。
[0862] 消息:nonce1,[§PKd2data+#WP,]§PK2WN2,nonce2,PK1,SignSK1(nonce1,[§PKd2data+#WP,]§PK2WN2,nonce2),signSK(PK1)
[0863] (or
[0864] 消息:nonce1,[§PKd2data,]§PK2WN2+#WP,nonce2,PK1,SignSK1(nonce1,[§PKd2data,]§PK2WN2+#WP,nonce2),signSK(PK1))
[0865] 在接收到消息后,接收者WN可最初至少以其私钥SK2解密WN2(或WN2+#WP),从其导出一对密钥SKd2、PKd2(如果这尚未完成),且将PKd2传送到发出者(如果这尚未传送)。
[0866] 如果此消息的接收者是WN SoC,那么如果发出者知道PKd2则在单个消息中完成交换,且如果不知道则以一个额外交互完成交换以便将PKd2传送到发出者。
[0867] 如上所陈述,如果此消息的接收者是主体包围区,那么协议(下方详细说明)涉及WN2向WN1发送WNRoT的执行和完整性的凭证(这是WN1自动要求的条件),然后WN1将消息的数据内容传输到WN2。因此采用以下方法:在接收到含有WN2(+#WP)的消息(WM1)后,包围区针对WN2初始化,传回用于WNRoT的凭证且等待额外消息(WM2)以知道数据,且(经由程序散列表-PHT)加载对应于#WP的程序WP,随后尽快对数据执行所述程序。
[0868] 本发明利用以下事实:包围区使用两级协议(因为WN1在传送消息的数据内容之前必须验证WNRoT)且导出的密钥也需要两级协议,因为必须首先基于含有WN2(+#WP)的传入消息重新配置主体包围区),且在以下四个步骤中组合这两个相应级:
[0869] 1.WN1将WN2+#WP传输到Body2(在消息WM1中):
[0870] 消息:nonce1,§PKBody2WN2+#WP,nonce2,PK1,SignSK1(nonce1,§PKBody2WN2+#WP,nonce2),signSK(PK1)
[0871] 2.Body2验证签名,解密§PKBody2WN2+#WP,从WN2检索PKd2,产生用于WNRoT的凭证,向WN1传回凭证和导出的密钥PKd2,初始化WN2且加载WP:
[0872] 消息:nonce2,§PK1PKd2+att(WNRoT),nonce3,PK1,SignSK1(nonce2,§PK1PKd2+att(WNRoT),nonce3),signSK(PK2)
[0873] 3.WN1验证签名和所接收凭证,随后将消息(WM2)发送到WN2而传输数据:
[0874] 消息:nonce3,§PKd2data,nonce4,PK1,SignSK1(nonce3,§PKd2data,nonce4),signSK(PK1)
[0875] 4.WN2以SKd2解密WM2中含有的数据§PKd2data且对经解密数据执行WP。
[0876] 有利地且如上所陈述,在步骤2,(在步骤1从WN1接收WN2(+#WP)后)(重新)动态地导出密钥对SKd2、PKd2,且随后可能避免使用包围区的主密钥SK。
[0877] 主体SoC
[0878] 不同于主体包围区,主体SoC是专用的(专用于WN的处理操作,具有标记和传感器):它们不是通用的。
[0879] “CMMU-加密存储器管理单元”部分描述CMMU。此处,在接收到既定用于给定WN(在消息中指定-参见上文传输§PKBody2WN2+#WP的消息的说明)的消息后,CMMU相对于属于接收者WN的NSV和标记初始化,以及相对于用于消息中指示的#WP的PSV初始化。图22是系统的不同部分(处理器、CMMU、存储器)之间的交互的图解展示:
[0880] 1)CMMU接收含有将执行的程序的输入数据以及接收者WN的地址和所述程序的散列的消息;
[0881] 2)CMMU在PHT表中基于所述散列而定位所述加密的程序,将所述加密的程序加载到其高速缓存中并解密(逐块);并且,CMMU相对于能够在存储器中访问的数据(即:NSV、标记、PSV等)初始化;
[0882] 3)CMMU在运行中向处理器传输经解密程序(每次一个块)以供执行;
[0883] 4)如果适用,则处理器请求访问所述先前产生的数据或创建/更新数据且请求存储数据或删除数据,且
[0884] 5)CMMU访问和解密/加密且存储所述数据;
[0885] 6)如果适用,则处理器准备待发出的消息,以及
[0886] 7)CMMU借助于秘密密钥在其中插入在执行过程中所述程序的散列和其签名,且发出消息。
[0887] 参考图23,主体SoC的CMMU能够通过以下方式接收发出的WM
[0888] ●通过执行WP程序,或
[0889] ●通过用户在主体SoC连接到的终端上,或甚至通过另一装置(“准WM”消息),[0890] 在两种情况下消息含有接收者WN的地址以及在此WN的情境内将执行的程序的散列#WP。
[0891] 在接收到WM后且对于接收的每一标记转移交易(参见下文“GuardWN、GuardTx和GuardedTx”部分),主体SoC的CMMU有利地能够验证上文描述的镜像节点集合的所需相交区。
[0892] 最后,参考图25,CMMU管理来自SAM的传感器的数据,这些数据可能由不同WN且由WN的不同WP共享。下方的图是硬WN(主体包围区或SoC)的图解展示且示出其独立地管理其传感器/致动器数据的事实,这些数据由不同代管的真实WN共享(且这些数据传输到其镜像)。
[0893] 镜像主体SoC和主体包围区
[0894] 关于“镜像WN”和“标记”部分中具体描述的镜像节点的约束,“硬WN”现在可如下形成
[0895] ●通过主体SoC,
[0896] ●或通过主体包围区,
[0897] 并且,鉴于此上文描述,能够响应于接收到WM消息而执行WP程序的节点网络的安全有利地包括以下两个架构的组合:
[0898] -在每一主体SoC或包围区节点处,对WP进行加密,且所讨论的节点(分别其CMMU或其根程序WNRoT)基于传入消息中含有的这些程序的散列(#WP)访问这些加密的程序,[0899] -在每一主体SoC或包围区节点处,架构确定会签者节点(主体SoC或包围区),从/向会签者节点复制消息,并确定接收的消息的相同字符。
[0900] 更精确地说,关于第二架构,在主体SoC和主体包围区节点的网络中,节点能够对彼此指派不同连接权重,在每一节点处:
[0901] ●基于连接权重值,将至少一个会签者节点指派到所讨论的节点,与其相关地具有大于阈值的连接权重,
[0902] ●将能够从所讨论的节点接收消息的节点保持为会签者节点的列表,每一节点和其会签者节点形成一组镜像节点,且
[0903] 当消息必须由发出者节点发送到接收者节点时,此消息由发出者节点的镜像节点中的至少一些(冗余地)发送到接收者节点的镜像节点中的至少一些,且接收者节点仅在以下情况时才验证消息:
[0904] ●发出者和接收者节点的镜像节点的相应集合具有相交区,所述相交区的元素的数目超过给定阈值且
[0905] ●接收者节点已(冗余地)从属于此相交区的所述镜像节点的至少一个给定部分接收到这一相同消息。
[0906] 此外,当所讨论的消息含有(价值单位的)标记转移交易时,接收者节点仅在以下情况下验证消息(如下所述):所讨论的标记的guardWN和接收者节点中的至少一些的镜像节点的相应集合具有相交区,所述相交区的元素数目(作为主体SoC或包围区)超过给定阈值。
[0907] 现将描述由guardWN保障主体SoC和主体包围区节点安全的方法。
[0908] GuardWN、GuardTx和GuardedTx
[0909] 本发明的此方面确保对于在WM中传输到接收者WN的交易(对于例如BTC等标记的转移),此交易上游的树(uptree)的仅一些叶子足以具有与所述接收者WN共同的某一数目的镜像节点以便所述接收者WN接受此WM。
[0910] 定义(一些是提醒或对定义的添加):
[0911] 价值标记(或“标记”):表示某一类型的计算单位的特定金额的数据(例如某一BTC金额)。“uptree”关联到标记。
[0912] 交易(或“tx”):从至少一个上游WN到至少一个下游WN的标记的转移(不同之处在于无中生有地产生且并不具有上游的“产生交易”)。传入标记来自上游交易(不同之处在于产生交易),且传出标记既定用于受益人WN(或其它类型的签名者),其可具体来说是多重签名(“n-of-m多重签名”)。交易因此具有分别与其输入和其输出相关联的标记,与输入相关联的标记的总和等于与输出相关联的标记的总和(不同之处在于产生交易)。此处考虑如同比特币中,每一输入指代上游交易的一个且仅一个输出。
[0913] 产生交易:不具有输入的交易。
[0914] Uptree(或“上游树”,或甚至“出处树”):包括所考虑给定交易和为后面交易进行馈送的交易的组合物(具有树状结构);其根节点是所述考虑的给定交易的树,且其中对于树的每一节点,节点的上游交易(也就是说输出对此节点的输入进行馈送的交易)是其子级节点。上游树的叶子(最远上游交易)称为“guardTxs”。
[0915] Dtree(或“下游树”,或甚至“分布树”):包括所考虑给定交易和由后面交易进行馈送的交易的组合物(具有树状结构);其根节点是所述考虑的给定节点的树,且其中对于树的每一节点,节点的下游交易(也就是说输入由此节点的输出进行馈送的交易)是其子级节点。
[0916] GuardTx(或“传入交易”):(由其受益人和下游受益人)视为在区块链中插入/确认或无中生有地产生的交易(产生交易)所馈送的交易。产生guardTx的WN称为“guardWN”。guardTx的下游树包括称为“受保护交易”的交易。
[0917] GuardWN:已经产生考虑的guardTx的WN(下游树的每一交易,包含guardTx自身,具有其作为与所有输出相关联的签名者-因此对它们给出“guardedTxs”的名称)。据称guardWN“保护”guardTx和此guardTx的下游树的guardedTxs。
[0918] 由给定guardWN保护的交易:所述给定guardWN是在所有输出上的签名者的交易。
[0919] GuardedTx:其交易:
[0920] ●签名者(在输入上)中的至少一个是guardWN;
[0921] ●每一输出(可能存在一个或多个输出)与以下各项相关联:
[0922] ○仅所述guardWN,
[0923] ○或其签名者中的一个是所述guardWN的多重签名,
[0924] ●所述guardWN保证下游交易(由这些输出馈送)也是受所述guardWN保护的guardedTxs。
[0925] 应理解,通过此模型,如果guardWN受信任,那么其下游树的所有交易受信任。
[0926] 因此提出传输给定交易的WM的接收者WN仅在其具有与保护此交易的guardWNs共同的镜像节点(主体SoC或包围区)的情况下直接接受交易。如果不是,那么接收者WN可以将上游树的交易任选地插入区块链中(在其为了简化的替代和交易费用的添加之后,如上文所描述)或使用支付通道(在例如闪电网络等协议上)。
[0927] 图26示出具有五个交易tx1到tx5的上游树的简化实例,以及已产生交易tx2的GuardWN-WN2和产生最远下游交易tx5的WN-WN5之间共同的镜像(WNx)的存在。在此实例中,WN5可接受tx4,前提是其具有与GuardWNs WN1、WN2和WN3(或与其中的仅一些,前提是已经做出附带签名者的添加,参见下文的描述)共同的某一数目(取决于配置参数)的WNx镜像(主体SoC或包围区)。
[0928] 图27示出分别由WN“1”、“2”、“3”和“4”产生的交易tx1、tx2、tx3和tx4。此处tx1和tx2是guardWNs。其输出上的数字表示在这些输出所馈送的输入上需要其相应签名的WN。因此,Tx1的第一输出需要WN 3的签名以及guardWN 1的签名,等等。
[0929] 此处,作为guardedTxs的tx3和tx4必须在其相应输出上再现在它们所馈送的后续交易的输入上需要签名1和2的事实。因此所需的guardWNs的签名逐步地向下游传播--举例来说,tx3要求tx4由guardWNs 1和2签署,且guardWNs 1和2(以及为了较大可靠性而冗余的其“硬WN”镜像)将仅在此要求逐步地再传播到后续交易等等的情况下签署tx4。来自每一guardWN的整个下游树因此保障安全。
[0930] 添加附带签名者的方法
[0931] 根据本发明的此方面的方法,在产生输入是由不同guardWNs所保护的上游交易馈送的guardedTx时,此guardedTx的所有输出被产生为多重签名,所述多重签名的签署者包含这些不同guardWNs(附带WN)。
[0932] 在适用的情况下,有利的是组合上游树的分支以便为下游WN提供“或(OR)”选项而不是guardWNs的“与(AND)”条件(由此必须具有共同的镜像节点)。
[0933] “附带guardWNs”的定义:这些是作为共同地对同一下游交易进行馈送的交易的输出所要求的相应guardWN签名者的节点。
[0934] 因此有利的是将附带guardWNs添加到所需的签名者。更精确地:
[0935] 在输入是由受不同(附带)guardWNs保护的上游交易馈送的guardedTx的产生后,所述交易被受所有这些不同guardWNs(在两侧上完成)保护(在所有其输出上)的交易替换,且此过程逐步地向上游继续,直到上游树的叶子(guardTxs)。
[0936] 参考先前的图,guardWNs 1和2(按照定义)是附带的,原因在于它们对同一交易(tx3)进行馈送。
[0937] 图28示出应用先前图的实例的(通过替换所讨论的上游交易而添加附带签名者的)方法的结果。将见到在由tx2馈送的输入上现在还需要guardWN 2的签名(以粗体示出)。
[0938] 由于所讨论的替换在所讨论的交易(tx1和tx2)的所有输出上添加对附带guardWNs的签名的所述请求,因此tx1的第二输出现在还需要guardWN 2的签名,且因为现在1和2联合地控制tx1的下游树,所以WN将不需要具有与1且与2共同的镜像,而是具有与1或与2共同的镜像。(显然,此方法无法应用太多次,但用以减少需要成镜像形式的guardWNs的数目。)
[0939] 支付通道的可变上限
[0940] 作为“多跳层2网络(关于比特币、以太坊等)”通道的支付通道是已知的,其中当前最成功的是闪电网络[https://lightning.network/lightning-network-paper.pdf],这是通过使用多重签名算子、“CheckLockTimeVerify”、“CheckSequenceVerify”以及针对一组交易的先前版本的实际上失效而交换秘密的极有独创性的方法来实施。如“链外比特币交易”部分中先前描述,此类链外交易可由WN产生,优点是它们将不被揭露(盲),整个方法提供较大信任,如果WN被篡改则区块链充当最后的手段。
[0941] 图29是节点通过经由节点之间的支付通道的强制性非广播交易而交换计算单位的图解展示,每一节点具有到拥有计算单位的上限(C(i,j))的另一节点的通道(Ch(i,j)),计算单位可通过此通道转移而不需要广播。两个节点之间的计算单位的转移可经由成对地具有支付通道的一连串节点执行。节点具有关于其它节点的连接权重(W(i,j)),表示节点或与节点相关联的用户之间的信任度或接近度。在给定通道上的给定节点的计算单位的上限(当设置通道时做出的寄存)在此处取决于所述节点关于其具有所述给定通道的节点的连接权重而调整(增加)。一个节点关于另一节点的权重通常是基于节点的周围环境内的真实(IRL)连接或准真实连接的存在而确定。
[0942] 显然,本发明不限于上文描述的实施例和方面。此外,本领域技术人员通过其一般知识将了解如何组合所有实施例和其它方面从而能够提供特定优点。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈