改进的计算装置

阅读:743发布:2020-05-13

专利汇可以提供改进的计算装置专利检索,专利查询,专利分析的服务。并且公开了一种计算/ 数据处理 设备,包括:多个计算单元,每个计算单元包括计算资源;计算设备包括至少三个计算单元,每个计算单元包括计算资源/相同的计算资源;每个计算单元还包括计算单元 访问 管理器,每个计算单元访问管理器适于响应于至少一个 请求 来控制对相应计算单元的计算资源的访问;其中,如果多数计算单元对至少一个请求提供相同的响应,则计算单元访问管理器仅允许对至少一个请求的响应;并且其中,计算设备包括设置在芯片上的片上网络和/或包括集成芯片IC或 微处理器 。该IC有利地包括现场可编程 门 阵列(FPGA)设备。在优选 实施例 中,单元访问管理器基于令牌来控制对计算资源的访问。该令牌包括:指向相应计算资源的 指针 、与该计算资源有关的权限集以及该计算资源的数字表示。,下面是改进的计算装置专利的具体信息内容。

1.一种计算和/或数据处理设备,包括:
多个计算单元,每个计算单元包括计算资源;
所述计算设备包括至少三个计算单元,每个计算单元包括计算资源/相同的计算资源;
每个计算单元还包括计算单元访问管理器,每个计算单元访问管理器适于响应于至少一个请求来控制对相应计算单元的计算资源的访问;其中
如果多数计算单元对所述至少一个请求提供相同的响应,则所述计算单元访问管理器仅允许对所述至少一个请求的响应;并且其中
所述计算设备包括设置在芯片上的片上网络和/或包括集成芯片IC或微处理器
2.根据权利要求1所述的计算和/或数据处理设备,其中,如果未提供多数投票,则所述计算单元访问管理器适于提供失配响应(投票)的恢复或对失配响应(投票)提供恢复。
3.根据权利要求1或2所述的计算和/或数据处理设备,其中,将多数响应(投票)应用于所述计算单元访问管理器的重新配置。
4.根据权利要求1至3中任一项所述的计算和/或数据处理设备,其中,每个计算单元包括微处理器核。
5.根据前述权利要求中任一项所述的计算和/或数据处理设备,其中,所述集成芯片包括现场可编程阵列FPGA设备。
6.根据前述权利要求中任一项所述的计算和/或数据处理设备,其中,所述请求/每个请求包括外部请求或内部请求。
7.根据前述权利要求中任一项所述的计算和/或数据处理设备,其中,所述计算设备包括至少一个调节器。
8.根据权利要求7所述的计算和/或数据处理设备,其中,所述调节器/每个调节器包括缓冲区,例如用于从其他计算单元接收消息,以及用于发送包括对所述请求/每个请求的响应的消息。
9.根据权利要求8所述的计算和/或数据处理设备,其中,所述缓冲区是单子缓冲区,其中可选地,所述子缓冲区包括比较器或者单匹配或多匹配、内容可寻址的存储器,所述存储器可选地用于允许对多数响应或结果的识别。
10.根据前述权利要求中任一项所述的计算和/或数据处理设备,其中:
所述单元访问管理器/每个单元访问管理器基于令牌来控制对所述计算资源/相应的计算资源的访问;并且可选地
所述令牌包括指向所述计算资源/相应的计算资源的指针、与所述计算资源有关的权限的集、以及所述计算资源/相应的计算资源的数字表示。
11.根据权利要求10所述的计算和/或数据处理设备,其中,提供所述计算资源的数字表示允许所述计算单元访问管理器控制访问所述计算资源或特定资源,例如直接控制访问所述计算资源或特定资源,可选地在不影响整个链的情况下,使得能够根据需要创建和销毁独立的链,或者引导和重新引导单元。
12.根据权利要求10或11所述的计算和/或数据处理设备,其中,存在至少三个计算单元,并且通过投票来比较来自每个计算单元的结果,使得可选地能够在多数投票之后通过创建一/所述令牌来允许访问。
13.一种计算和/或数据处理装置,包括至少一个根据权利要求1至12中任一项所述的计算设备。
14.一种计算和/或数据处理系统,包括至少一个根据权利要求1至12中任一项所述的计算和/或数据处理设备,或至少一个根据权利要求13所述的计算和/或数据处理装置。
15.根据权利要求14所述的计算和/或数据处理系统,其中,所述计算系统包括局域网LAN或广域网WAN。
16.一种控制方法,例如控制对计算和/或数据处理设备的至少一个计算资源的访问,所述设备包括:
多个计算单元,每个计算单元都包括计算资源;
所述设备包括至少三个计算单元,每个计算单元包括相同的计算资源;
每个计算单元还包括计算单元访问管理器,所述计算单元访问管理器适于响应于至少一个请求来控制对相应计算单元的计算资源的访问;其中
所述设备包括设置在芯片上的片上网络和/或包括集成芯片(IC)或微处理器;
所述方法包括:
如果多数耦合单元对所述至少一个请求提供相同的响应,则所述计算单元访问管理器允许或仅允许对所述至少一个请求的响应。
17.根据权利要求16所述的控制方法,例如控制对计算和/或数据处理设备的至少一个计算资源的访问,其中,所述方法包括以下步骤:
如果未提供多数投票,则所述计算单元访问管理器提供失配响应(投票)的恢复或对失配响应(投票)提供恢复。
18.根据权利要求16或17所述的控制方法,例如控制对计算和/或数据处理设备的至少一个计算资源的访问,其中,所述方法包括以下步骤:
将多数响应(投票)应用于所述计算单元访问管理器的重新配置。
19.根据权利要求16至18中任一项所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,仅f+1个耦合单元活动地参与,其中多达f个耦合单元在其响应中产生分歧;如果所有f+1个活动耦合单元都向所述至少一个请求提供相同的响应,则所述计算访问管理器允许或仅允许对至少一个请求的响应。
20.根据权利要求19所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,在多达f个耦合单元在其响应中发生分歧的情况下,所述计算访问管理器允许从f+1个活动的耦合单元改变为2f+1个活动的耦合单元,如果所述2f+1个耦合单元中的至少f+
1个耦合单元对所述至少一个请求提供相同的响应,则所述计算访问管理器允许或仅允许对所述至少一个请求的响应。
21.根据权利要求19和20所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,动态调整数量f以及因此的活动的耦合单元,以反映耦合单元发生故障或受损以及因此在其对所述至少一个请求的响应中产生分歧的险,其中,在无错误操作中,所述耦合单元的数量为f+1,在错误情况下,所述耦合单元的数量为2f+1。
22.根据权利要求19所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,所述f+1个活动的耦合单元的响应中的分歧使所述计算访问管理器挂起对所述至少一个请求的响应,使得每个耦合单元的响应能够被其他耦合单元读取,而其他耦合单元不能够更改所述每个耦合单元的投票,至少同意/不同意对所述至少一个请求的一个响应变得可见。
23.根据权利要求22所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,耦合单元能够响应所述计算访问管理器以重复投票,只有多数耦合单元请求这种重复,所述计算访问管理器才重复投票。
24.根据权利要求22所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,耦合单元能够响应所述计算访问管理器,以重复检查多数耦合单元是否已经对所述至少一个请求提供了相同的响应。
25.根据权利要求22至24所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,所述f+1个活动的耦合单元中的任何一个动耦合单元都能够触发所涉及的耦合单元中的错误恢复,使得通过响应所述计算访问管理器,所有涉及的耦合单元读取、分析和解决所述错误情况。
26.根据权利要求22至25所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,将发现为分歧的副本复活为健康状态,所述方法包括步骤/每个步骤涉及所述至少一个请求,如果多数耦合单元对所述至少一个请求提供相同的响应,则所述计算访问管理器允许或仅允许对所述至少一个请求的响应。
27.根据权利要求26所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,所述耦合单元执行复活过程,而所述副本没有被发现在其投票中发生分歧。
28.根据权利要求27所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,在复活步骤中产生了分歧的情况下,所述计算访问管理器允许待复活的耦合单元继续处于复活之前的状态下。
29.根据权利要求28所述的控制方法,例如控制对计算设备的至少一个计算资源的访问,其中,耦合单元能够投票以从重复投票中排除/包括耦合单元,如果多数耦合单元投票以排除该副本,则所述计算访问管理器不考虑耦合单元的投票,在多数已投票以包括该副本之后,所述计算访问管理器再次考虑该副本的投票。
30.一种用于存储计算机可读指令的计算机可读存储介质,所述计算机可读指令适于实现根据权利要求16至29中任一项所述的方法的步骤。
31.一种包括软件代码的计算机程序或计算机程序产品,所述软件代码适于执行根据权利要求16至29中任一项所述的方法的步骤。
32.一种计算和/或数据处理设备,包括:
多个计算单元,每个计算单元包括计算资源;
每个计算单元还包括单元访问管理器,所述单元访问管理器响应于请求来控制对所述计算资源的访问;其中,
所述单元访问管理器/每个单元访问管理器基于令牌来控制对所述计算资源/相应的计算资源的访问;并且
所述令牌/每个令牌包括指向所述计算资源/相应的计算资源的指针、与所述计算资源有关的权限集以及所述计算资源/相应的计算资源的数字表示或标签。
33.根据权利要求32所述的计算和/或数据处理设备,其中,所述数字表示是对提供所述计算资源/相应的计算资源的软件的编码。
34.根据权利要求32所述的计算和/或数据处理设备,其中,所述设备包括设置在芯片上的片上网络和/或包括集成芯片IC或微处理器。
35.根据权利要求32至34中任一项所述的计算和/或数据处理设备,其中,所述集成芯片包括现场可编程门阵列FPGA设备。
36.根据权利要求32至35中任一项所述的计算和/或数据处理设备,其中,每个计算单元包括微处理器的核。
37.根据权利要求32至36中任一项所述的计算和/或数据处理设备,其中,所述请求/每个请求包括外部请求或内部请求。
38.根据权利要求32至36中任一项所述的计算和/或数据处理设备,其中,提供所述计算资源的数字表示允许所述单元控制访问所述计算资源或特定资源,例如直接控制访问所述计算资源或特定资源,可选地在不影响整个链的情况下,使得能够根据需要创建和销毁独立的链,和/或根据要求引导和重新引导单元。
39.一种计算和/或数据处理装置,包括至少一个根据权利要求32至38中任一项所述的计算设备。
40.一种计算和/或数据处理系统,包括至少一个根据权利要求32至38中任一项所述的计算和/或数据处理设备,或至少一个根据权利要求39所述的计算和/或数据处理装置。
41.根据权利要求40所述的计算和/或数据处理系统,其中,所述计算系统包括局域网LAN或广域网WAN。
42.一种控制方法,例如控制对至少一个计算和/或数据处理设备,或至少一个计算和/或数据处理设备的至少一个计算和/或数据处理资源的访问,所述至少一个计算设备包括:
多个计算单元,每个计算单元包括计算资源;
每个计算单元还包括计算单元访问管理器,所述计算单元访问管理器适于响应于至少一个请求来控制对相应的计算单元的计算资源的访问,所述方法包括:
基于令牌来控制对计算资源的访问,其中,所述令牌包括指向所述计算资源的指针、与所述计算资源/相应的计算资源有关的权限的集、和/或所述计算资源/相应的计算资源的数字表示。
43.根据权利要求42所述的控制方法,例如控制对至少一个计算和/或数据处理设备,或至少一个计算和/或数据处理设备的至少一个计算资源的访问,其中,所述计算资源/相应的计算资源是对软件的编码的数字表示或标签。
44.根据权利要求42或43所述的控制方法,例如控制对至少一个计算和/或数据处理设备,或至少一个计算和/或数据处理设备的至少一个计算和/或数据处理资源的访问,其中,所述方法还包括生成令牌的步骤。
45.一种用于存储计算机可读指令的计算机可读存储介质,所述计算机可读指令适于实现根据权利要求42或43中任一项所述的方法的步骤。
46.一种包括软件代码的计算机程序或计算机程序产品,所述软件代码适于执行根据权利要求42或43中任一项所述的方法的步骤。

说明书全文

改进的计算装置

技术领域

[0001] 本发明涉及一种计算机或数据处理设备、一种计算机或数据处理装置/系统,以及涉及一种操作计算或数据处理装置/系统的方法。
[0002] 更一般地,本发明涉及安全性、可靠性和/或故障和/或入侵容忍。更具体地但非排他地,本发明涉及:
[0003] 用于以下方面的安全且可靠的架构、中间件:诸如、电信或能源之类的大规模系统和关键信息基础设施的弹性;诸如电子生物生态系统以及其他个人或商业数据之类的高敏感数据的隐私和完整性;诸如互联和自主驾驶汽车或飞机之类的实时联网嵌入式系统的适应性和安全性。

背景技术

[0004] 计算机和计算资源容易受到攻击,已经开发了各种技术来检测和避免此类攻击。例如,已知的是重复进行算法执行并比较结果(例如Paxos、PBFT、MinBFT)。仅在多数副本同意的情况下,才允许使用这种执行的结果来检测和避免攻击。然而,这些仅限于算法(即软件),并且对检测所有情况下的基于硬件的入侵(例如,针对管理程序的攻击)无济于事。期望能够在计算系统中的所有抽象级别上进行检测和规避。
[0005] “能”是用于准予或限制对实现基于能力的安全性的计算系统中的计算资源进行访问的令牌。能力包括指针和权限集。指针包括指向对象以及管控对该对象的访问的相关权限的值。然而,这样做的缺点是,一旦生成并分派了能力,就无法检查其真实性。
[0006] 当考虑多个基于硬件的处理核时,这是一个特殊的问题。使用传统系统,将能力与处理子单元相关联的唯一方法是生成信任链,信任链从可信“核”(可以是可信平台模或TPM)开始,以生成能力。这些信任链难于管理和处理,而且在第一“链接”处(即,在生成第一能力时,其可能会包括整个系统)会造成单点失效。
[0007] 在本文中,发明人将参考以下内容:
[0008] 1.TPM Main Specification Version 1.2,Rev.116 ed.,Trusted Computing Group,March 2011。
[0009] 2.R.M.Needham and R.D.H.Wilkes,“Domains of protection and the management of processes,”The Computer Journal,vol.17,no.2,1974。
[0010] 3.N.Asmussen, and G.Fettweis,“M3:A hardware/operating-system co-design to tame heterogeneous manycores,”in Architectural  Support  for  Programming Languages  and Operating 
Systems.Atlanta,GA,USA:ACM,April 2016。
[0011] 4.A.S.Tanenbaum and M.F.Kaashoek,“The amoeba microkernel,”in Distributed Open Systems,1994,pp.11–30。
[0012] 5.J.Woodruff,R.N.Watson,D.Chisnall,S.W.Moore,J.Anderson,B.Davis,B.Laurie,P.G.Neumann,R.Norton,and M.Roe,“The cheri capability model:Revisiting risc in an age of risk,”in Proceeding of the 41st Annual International Symposium on Computer Architecuture,ISCA’14.Piscataway,NJ,USA:
IEEE Press,2014,pp.457–468。
[0013] 6.O.S.Hofmann,S.Kim,A.M.Dunn,M.Z.Lee,and E.Witchel,“Inktag:Secure applications on an untrusted operating system,”SIGPLAN Not.,vol.48,no.4,pp.265–278,Mar.2013。
[0014] 7.I.Corp., 64and IA-32 Architectures Software Developer’s Manual,325462nd ed.,Dec 2016。
[0015] 8.V.Costan and S.Devadas,“Intel SGX explained,”Massachusetts Institute of Technology,Tech.Rep.,2016。
[0016] 9.M.Castro and B.Liskov,“Practical byzantine fault tolerance,”in 3rd Symposium on Operating Systems Design and Implementation.New Orleans,USA:ACM,Feb.1999。
[0017] 10.G.S.Veronese,M.Correia,A.N.Bessani,L.C.Lung,and P.Verissimo,“Efficient byzantine fault-tolerance,”IEEE Trans.Comput.,vol.62,no.1,pp.16–30,Jan.2013。
[0018] 11.P.Sousa,A.N.Bessani,M.Correia,N.F.Neves,and P.Verissimo“, Highly available intrusion-tolerant services with proactive-reactive recovery,”IEEE Trans.Parallel Distrib.Syst.,vol.21,no.4,pp.452–465,Apr.2010。
[0019] 12.R.Kapitza,J.Behl,C.Cachin,T.Distler,S.Kuhnle,S.V.Mohammadi,W.-Preikschat,and K.Stengel“, Cheapbft:Resource-efficient byzantine thfault tolerance,”in Proceedings of the 7  ACM European Conference on Computer Systems,ser.EuroSys’12.New York,NY,USA:ACM,2012,pp.295–308。
[0020] 13.C.Chai,J.Fischer,M.Phan,and J.Silberman,“Apparatus for detecting multiple hits in a camram memory array,”Nov 2004,US Patent 6,816,396。
[0021] 14.P.Sousa,N.F.Neves,and P.Veríssimo,“Proactive resilience through architectural hybridization,”in Proceedings of the 2006 ACM symposium on Applied computing.ACM,2006,pp.686–690。
[0022] 15.Miltos D.Grammatikakis等人:“security in MPScCs:A NoC Firewall and an Evaluation Framework”,IEEE Transactions on Computer Aided Design of Integrated Circuits and Systems.,vol.34,no.8,1August2015(2015-08-01),pages 1344-1357,XP055411865,US ISSN:0278-0070,DOI:10.1109/TCAD.2015.2448684。
[0023] 16.JP H08 212093 A(Toshiba Corp)20August 1996(1996-08-20)。
[0024] 17.Lemay Michael et all:“Network-on-Chip Firewall:Countering Defective and Malicious System-on-Chip Hardware”,27 August 2015(2015-08-07),Network and Parallel Computing;[Lecture notes in Computer Science;lect.notes computer],Springer International Publishing,CHAM,pages(s)404–426,XP047366467,ISSN:0302-9743,ISBN:978-3-642-17571-8。
[0025] 本发明的至少一个方面的至少一个实施例的目的是消除或至少减轻现有技术中的一个或多个问题和/或缺点。
[0026] 本发明的至少一个方面的至少一个实施例的目的是提供有利地影响计算设备或计算机装置的操作方式(例如,关于处理和/或控制数据传送的安全性)的处理。因此,本发明具有在计算/计算机设备/装置上实现的技术特征。

发明内容

[0027] 第一发明
[0028] 根据本发明的第一方面,提供了一种计算设备(和/或数据处理设备)。
[0029] (计算)设备可以包括多个计算单元。每个计算单元可以包括计算资源。
[0030] (计算)设备可以包括至少三个计算单元。每个计算单元可以包括计算资源/相同的计算资源。
[0031] 每个计算单元可以包括计算单元访问管理器。每个计算单元访问管理器可以适于响应于至少一个请求来控制对相应计算单元的计算资源的访问。
[0032] 如果多数计算单元对至少一个请求提供相同的响应,则计算单元访问管理器可以允许或仅允许对至少一个请求的响应。
[0033] 该计算设备可以包括片上网络,可以设置在芯片上,和/或可以包括集成芯片(IC)或微处理器
[0034] 根据优选的实现方式,计算(和/或数据处理)设备可以包括包含以下组成的计算(和/或数据处理)设备:
[0035] 多个计算单元,每个计算单元都包括计算资源;
[0036] 计算设备包括至少三个计算单元,每个计算单元包括一定/相同的计算资源;
[0037] 每个计算单元还包括计算单元访问管理器,每个计算单元访问管理器适于响应于至少一个请求来控制对相应计算单元的计算资源的访问;其中
[0038] 如果多数计算单元对至少一个请求提供相同的响应,则计算单元访问管理器仅允许(例如在使用中)对至少一个请求的响应;并且其中
[0039] 所述计算设备包括片上网络,设置在芯片上,和/或包括集成芯片(IC)或微处理器。
[0040] 有利的方面是,如果没有提供多数投票,则计算单元访问管理器可以适于提供失配响应(投票)的恢复或对基于失配响应(投票)的恢复。计算单元访问管理器可以提供恢复手段或布置。
[0041] 有利的方面是,多数响应(投票)可以应用于计算单元访问管理器的重新配置。可以提供一种应用/重新配置手段或布置。
[0042] 集成芯片可以包括现场可编程阵列(FPGA)设备。
[0043] 每个计算单元可以包括微处理器核。
[0044] 请求/每个请求可以包括外部请求或内部请求。
[0045] 本文中的“片上网络”是指处于晶体管级的网络,其允许消息在微处理器的子区域之间传递。
[0046] 计算设备可以包括至少一个调节器。
[0047] 调节器/每个调节器可以包括缓冲区,例如用于从其他计算单元接收消息,以及用于发送包括对请求/每个请求的响应的消息。
[0048] 在一个实施例中,缓冲区可以是“单子缓冲区”,其可以具有减小空间的优点。在另一个实施例中,子缓冲区可以包括比较器,或者可以使用单匹配或多匹配的内容可寻址的存储器以允许对多数响应或结果进行识别。
[0049] 单元访问管理器/每个单元访问管理器可以基于令牌来控制对相应计算资源的访问。
[0050] 令牌可以包括指向相应计算资源的指针,与计算资源有关的权限集以及相应计算资源的数字表示。
[0051] 提供(计算)资源的数字表示可以允许单元访问管理器对访问进行控制,例如直接控制对计算资源或特定资源的访问,而不影响整个链,从而可以根据需要创建和销毁独立的链,或根据需要引导和重新引导单元。
[0052] 可以存在至少三个计算单元,并且可以通过投票来比较来自每个计算单元的结果,从而可以在多数投票之后,通过创建令牌来允许进行选择性地访问。
[0053] 根据本发明的第二方面,提供了一种计算(和/或数据处理)装置,其包括至少一个根据本发明的第一方面的计算设备。
[0054] 根据本发明的第三方面,提供了一种计算系统,其包括至少一个包含至少一个根据本发明的第一方面的计算设备或至少一个根据本发明的第二方面的计算装置的计算系统。
[0055] 计算系统可以包括局域网(LAN)或广域网(WAN)。
[0056] 根据本发明的第四方面,提供了一种控制方法,例如控制对计算设备的至少一个计算资源的访问。
[0057] 计算设备可以包括多个计算单元。每个计算单元可以包括计算资源。
[0058] 计算设备可以包括至少三个计算单元。每个计算单元可以包括计算资源/相同的计算资源。
[0059] 每个计算单元(还)可以包括计算单元访问管理器,其可以适于针对至少一个请求来控制对相应计算单元的计算资源的访问。
[0060] 计算设备可以包括片上网络,可以设置在芯片上和/或可以包括集成芯片(IC)或微处理器。
[0061] 方法可以包括:
[0062] 如果多数耦合单元对至少一个请求提供相同的响应,则计算访问管理器仅允许对至少一个请求的响应。
[0063] 以下方法步骤可以应用于上文的第四方面或下文的第十方面。
[0064] 在下文中,对于本发明的任何方面或实施例,令N为自然数的集合,使得:
[0065] 1在N中;
[0066] 如果k在N中,则后继者(即k+1)在N中。
[0067] 进一步地在下文中,f是自然数,f+1是后继者,并且f是描述可容忍的故障副本的数量的系统参数。
[0068] 方法可以包括以下步骤:如果没有提供多数投票,则计算单元访问管理器提供对失配响应(投票)的恢复或基于失配响应(投票)的恢复。
[0069] 方法可以包括以下步骤:将多数响应(投票)应用于计算单元访问管理器的重新配置。
[0070] 在第一实现方式中,其中只有f+1个耦合单元可以活动地参与,其中多达f个耦合单元可以在其响应中产生分歧,如果所有f+1个活动的耦合单元对至少一个请求提供相同的响应,则计算访问管理器可以允许或仅允许对至少一个请求的响应。
[0071] 如果在多达f个耦合单元在其响应中产生分歧的情况下,计算访问管理器可以允许从f+1个活动的耦合单元改变为2f+1个活动的耦合单元,如果2f+1个耦合单元中至少有f+1个对至少一个请求提供了相同的响应,则计算访问管理器可以允许或仅允许对至少一个请求的响应。
[0072] 可以动态调整数量f以及因此的活动的耦合单元,以反映耦合单元发生故障或受损以及因此在其对至少一个请求的响应中产生分歧的险,其中,在无错误操作中,耦合单元的数量为f+1,在错误情况下,所述耦合单元的数量为2f+1。
[0073] f+1个活动的耦合单元的响应中的分歧使计算访问管理器挂起对至少一个请求的响应,使得每个耦合单元的响应能够被其他耦合单元读取,而其他耦合单元不能够更改每个耦合单元的投票。至少同意/不同意对至少一个请求的一个响应变得可见
[0074] 耦合单元能够响应计算访问管理器以重复投票,只有多数耦合单元请求这种重复,计算访问管理器才重复投票。
[0075] 耦合单元可以响应计算访问管理器,以重复检查多数耦合单元是否已经对至少一个请求提供了相同的响应。
[0076] f+1个活动的耦合单元中的任何一个耦合单元都能够触发所涉及的耦合单元中的错误恢复,使得通过响应计算访问管理器,所有涉及的耦合单元读取、分析和解决错误情况。
[0077] 将发现为分歧的副本复活为健康状态,所述方法包括:步骤/每个步骤涉及所述至少一个请求,如果多数耦合单元对所述至少一个请求提供相同的响应,则所述计算访问管理器允许或仅允许对所述至少一个请求的响应。
[0078] 耦合单元执行复活过程,而所述副本没有被发现在其投票中产生分歧。
[0079] 在复活步骤中产生了分歧的情况下,所述计算访问管理器允许待复活的耦合单元继续处于复活之前的状态下。
[0080] 耦合单元能够投票以从重复投票中排除/包括耦合单元。如果多数耦合单元投票以排除该副本,则所述计算访问管理器不考虑耦合单元的投票。在多数已投票以包括该副本之后,所述计算访问管理器再次考虑该副本的投票。
[0081] 根据本发明的第五方面,一种用于存储计算机可读指令的计算机可读存储介质,所述计算机可读指令适于实现根据本发明第四方面的方法的步骤。
[0082] 根据本发明的第六方面,提供了包括软件代码计算机程序或计算机程序产品,其适于执行本发明的第四方面的方法的步骤。
[0083] 第二发明
[0084] 根据本发明的第七方面,提供了一种计算(和/或数据处理)设备。
[0085] (计算)设备可以包括多个计算单元。每个计算单元可以包括计算资源。每个计算单元还包括单元访问管理器。所述单元访问管理器响应于请求来控制对所述计算资源的访问。
[0086] 单元访问管理器/每个单元访问管理器基于令牌来控制对所述计算资源/相应的计算资源的访问。
[0087] 令牌/每个令牌包括指向所述计算资源/相应的计算资源的指针、与所述计算资源有关的权限集。
[0088] 计算资源/相应的计算资源的数字表示或标签。
[0089] 该数字表示是对提供所述计算资源/相应的计算资源的软件的编码。
[0090] 该计算设备可以包括设置在芯片上的片上网络和/或包括集成芯片IC或微处理器。
[0091] 集成芯片可以包括现场可编程门阵列(FPGA)设备。
[0092] 每个计算单元可以包括微处理器的核。
[0093] 请求/每个请求包括外部请求或内部请求。
[0094] 提供所述计算资源的数字表示允许所述单元控制访问,例如直接控制访问,所述计算资源或特定资源可选地不影响整个链。
[0095] 可以能够根据需要创建和销毁独立的链(例如,引导和重新引导单元)。
[0096] 第七方面的单元访问管理器可以与本发明第一方面的单元访问管理器相同(例如,可以存在至少三个单元,并且通过投票比较结果)。在这种情况下,可以按照定义通过创建令牌在多数投票后允许访问。这样可以起到确保仅由可信实体访问计算单元的作用。
[0097] 根据本发明的第八方面,提供了一种计算(和/或数据处理)设备,其包括至少一个根据本发明的第七方面的计算设备。
[0098] 根据本发明的第九方面,提供了一种计算系统,其包括至少一个根据本发明的第七方面的计算设备或至少一个根据本发明的第八方面的计算设备。
[0099] 该计算系统可以包括局域网(LAN)或广域网(WAN)。
[0100] 根据本发明的第十方面,提供了一种控制例如控制对至少一个计算设备或至少一个计算设备的至少一个计算资源的访问的方法。
[0101] 至少一个计算设备可以包括多个计算单元。每个计算单元可以包括计算资源。每个计算单元可以(进一步)包括计算单元访问管理器,其可以适于响应于至少一个请求来控制对相应计算单元的计算资源的访问。
[0102] 该方法可以包括基于令牌来控制对计算资源的访问。令牌可以包括指向计算资源的指针,与该/相应的计算资源有关的一组权限和/或该/相应的计算资源的数字表示。
[0103] 该/相应的计算资源可以是/相应的数字表示或标签,其可以是软件的编码(以软件编码)。
[0104] 该方法还可以包括生成令牌的步骤。
[0105] 根据本发明的第十一方面,提供了一种用于存储计算机可读指令的计算机可读存储介质,该计算机可读指令适于实施本发明的第十方面的方法的步骤。
[0106] 根据本发明的第十二方面,提供了一种计算机程序(产品),其包括适于执行本发明的第十方面的方法的步骤的软件代码。
[0107] 本发明的任何方面的其他可选的,优选的和/或有益的特征可以从下文公开的实施例中得出,并且特别地但非排他地从下文标题为“本发明的实施例的有益特征”的部分中得出。
[0108] 还应当理解,前述方面中的任何方面的任何特征可以被考虑或彼此组合。
[0109] 尽管非排他性地,本发明可以优选地应用于多核微处理器。附图说明
[0110] 现在将参考附图、仅通过示例的方式来描述本发明的实施例,这些附图是:
[0111] 图1是示出本发明的特征和实施例的相互依存的有向无环图;
[0112] 图2是示出在不依赖于未提及装置的情况下本发明的特征和实施例的依存的有向无环图;
[0113] 图3是示出权利要求依存的简化或最小版本的有向无环图;
[0114] 图4是架构概览;
[0115] 图5是块(tile)的示例,Mon位于块到片上网络的互连处;
[0116] 图6是多核系统;
[0117] 图7是众核系统;
[0118] 图8是能力调用;
[0119] 图9是启用Mon的众核系统中安全区(enclave)的构造;
[0120] 图10是Mon硬件能力单元;能力(表示为黑点)指代块中的的资源R,或者在具有重新配置能力的情况下的Mon重新配置接口;这些指针由虚线表示;块通过向Mon发出调用命令来调用能力;
[0121] 图11是用于直接访问的资源的特权和认证令牌检查;
[0122] 图12是基于Mon的访问控制(直接访问)的序列图;
[0123] 图13是用于经投票的资源访问的特权和认证令牌检查;
[0124] 图14是用于经投票的访问检查的序列图;
[0125] 图15是基于Mon的访问控制(直接访问和经投票的访问,参见文本)的伪代码;
[0126] 图16是用于经投票的Mon重新配置操作的特权和认证令牌检查;
[0127] 图17是指针格式;
[0128] 图18是Mon投票器V1:n=2f+1个消息缓冲区存储每个副本的消息;
[0129] 图19是利用Mon投票器(V1)进行的投票操作;
[0130] 图20是Mon投票器的多缓冲区变体;
[0131] 图21是用于f+1个匹配投票的投票器V2示例缓冲区分配;
[0132] 图22是用于f+1个匹配投票Ai和一个失配投票Bj的投票器V2示例缓冲区分配,其中A区块和B区块的到达交错;
[0133] 图23是Mon投票器的单个缓冲区变体;
[0134] 图24是用于f+1个匹配投票的投票器V3示例到达矩阵;
[0135] 图25是用于失配投票的投票器V3示例到达矩阵;
[0136] 图26是监管副本(supervisor replica)的Mon中的重新配置投票器能力的设置;
[0137] 图27是用于应用级投票的投票器设置;
[0138] 图28是利用反射共识(reflective consensus)进行挂起后的恢复;
[0139] 图29是利用反射共识进行挂起后的恢复(直到结束前不久第二故障副本都保持静默(silent));
[0140] 图30是利用监管进行恢复;
[0141] 图31是故障/健康副本的主动/被动复活;
[0142] 图32是被动复活序列图;
[0143] 图33是被动复活序列图;
[0144] 图34(a)是示出现有技术的示意图;
[0145] 图34(b)是示出现有技术中的问题的示意图;
[0146] 图34(c)是示出根据现有技术的解决方案的示意图;
[0147] 图34(d)是示出根据本发明的解决方案的示意图;
[0148] 图34(e)是进一步示出本发明的示意图;
[0149] 图35(a)和(b)是示出防火墙和Mon之间的差异的示意图;
[0150] 图36(a)和(b)是示出根据现有技术的投票器布置的示意图;
[0151] 图36(c)是示出根据本发明的投票器布置的示意图;
[0152] 图37是可以实现本发明的多种方式的图示;
[0153] 图38是根据本发明的访问管理器的图示;
[0154] 图39是如果多数计算单元对至少一个请求提供相同的响应,访问管理器如何仅允许对至少一个请求的响应的图示;以及
[0155] 图40是具体化在局域网/广域网(LAN/WAN)中的本发明的实施例的图示。

具体实施方式

[0156] 1发明背景
[0157] 除此之外,本发明涉及安全系统的构建,其在被称为“安全区(envave)”的更可信的执行环境旁边,为多个功能丰富而庞大、复杂并因此容易出错和易受攻击的操作系统(OS)创造便利。在功能丰富的OS中,发明人确认了一种管理OS,该管理OS在平台引导时首先启动,该管理OS的职责是启动和管理安全区以及应用和其他隔离的丰富OS的资源。也就是说,平台以不可信的方式引导,并且稍后必须建立对安全区和在其中执行的代码的信任。
[0158] 尽管许多系统(包括Intel SGX、ARM Trustzone和若干研究活动)共享这种一般的设想,但是所有已知的解决方案都至关重要地依赖于核执行操作系统和安全区代码以传达所需的安全性保证的处理器核的正确性。在存在复杂威胁的情况下,此声明的涵盖范围令人怀疑。与这些以前的方法不同,我们平台的安全性保证不依赖于单个处理器核的正确执行,而是产生于一组核中的多数无分歧执行,而少数无分歧执行可能是受损的。
[0159] 本发明提供了一种在下文中被称为“Mon”的设备或装置,以及一种容忍最低操作系统层(例如,微内核、管理程序或启用安全区的内核)中的故障和入侵的方法。Intel SGX通过微代码中类似于管理程序的实现方式来提供安全区,其确保管理OS无法访问安全区存储器或通过加密手段对安全区存储器进行适当保护。在本发明公开中,发明人假设安全区实现在最低OS层之上,而不管该层是以微代码实现还是它是启用inktag的软件管理程序。
[0160] 传统意义上,处于该低监管级的软件可以访问所有应用中的所有信息,并且它可以任意提升其特权(例如,通过操纵页表,该页表控制对存储器映射对象的访问)。因此,除了解决完整性之外,本发明的实施例还试图防止少数受损的内核副本泄漏信息或执行敏感的特权提升操作。
[0161] 本发明通过提供在运行时恢复那些失效或受损的低级组件的方法,进一步扩展了上述保证,以便沿时间线保护上述多数正确核免受高级持续威胁。
[0162] 2本发明实施例的特征
[0163] 参考图1至图3,以示意图的形式示出了本发明实施例的各种特征的相互依存,通过参考下文给出的描述将更加充分地理解这种相互依存。
[0164] 为了确保只有多数同意的副本可以执行敏感操作,本发明提供了以下硬件组件:
[0165] A.1:装置—Mon—位于分块架构(tiled architecture)中每个块的块到芯片上网络的互连处。Mon包括:
[0166] a)具有若干能力寄存器(capability register)的硬件能力执行单元,其扩展有用于存储和检查Mon ID寄存器中的和存储在以前能力寄存器中的能力中的认证令牌的逻辑。认证令牌通过将其绑定到软件子系统的标签或“签名”,以重要的方式增强了传统意义上的能力。
[0167] b)至少一个重新配置投票器(reconfiguration voter),硬连线到Mon重新配置接口,并且能够重新配置每个Mon单元的基本特征。重新配置作为对被检测为受损或失效的副本实现错误恢复的一般方法来执行。然而,此类敏感组件既不能自己重新配置,也不能单独由其他Mon副本重新配置。相反,重新配置投票器仅对提供相同重新配置指令的多数健康副本敏感。
[0168] c)配备有能力寄存器集合的至少一个消息投票器(message voter),以保持引用与Mon关联的块中的资源的能力。监管副本和应用级服务器副本在响应客户端请求时使用消息投票器。对这些响应进行投票确保响应被多数健康副本确认。此外,投票防止内核和这些共享服务器可访问但客户端一定不知道的信息泄漏。投票确保了在向客户端透露信息之前的多数同意。
[0169] d)接口,经认证的引导单元(例如,TCG的可信平台模块),可以使用该接口安装在与Mon关联的块上引导的子系统的充分唯一的标识符(例如,安全哈希(secure hash))。
[0170] Mon的作用是,以块的粒度来创建跨系统的计算和存储器资源的故障遏制域,并保护映射到块的子系统免受软件和硬件级的意外故障和损害。因此,如果不同的子系统及其副本位于不同的块上,则可以使用故障和入侵容忍技术来实现这些目标。这在本发明所预想的目标多核或众核架构中很容易实现。
[0171] A.2:一种系统架构,包括至少一个经认证的引导单元、任意种类和拓扑的片上网络(NoC)和至少2f+1个任意种类的块,其中f是应该容忍的同时受损的块的数量。在相关的情况中,发明人用故障或受损副本的数量f对图中所示的示例配置进行注释。块通过位于每个块的块到NoC接口处的Mon连接到NoC。在本发明的一个实例中,通过值得信赖的硬件组件提供创建安全区所需的功能,其可以以分布式方式实现。在另一实例中,在最低操作系统模式下执行的能力内核提供此功能。为了简化以下描述,发明人将硬件能力内核和软件能力内核两者都称为监管。
[0172] 以下方法建立所需的安全性和可靠性属性:
[0173] M.1:认证令牌:一种用于在能力调用期间增强子系统真实性的方法(参考A.1.a和A.1.d);利用认证令牌增强的能力不仅控制对资源(块、容器等)的访问,还控制对其中加载的具体子系统的访问;该创新防止由于陈旧的或传统的能力而导致的对块访问的滥用,还能够实现模块化众核系统的安全重新配置;
[0174] M.2:投票屏蔽:一种用于在访问控制和保密性方面在监管级上保护敏感投票操作中涉及的信息的方法(参考A.1.b和A.1.c)。该方法确保了:(a)从投票的信息和其他副作用仍维持对目标块的隐藏,直到多数副本同意透露该信息的意义上讲,投票是保密的;以及(b)只有在多数监管副本达成共识的情况下,特权提升才可行;
[0175] M.3:定额弹性(Quorum elasticity):一种用于在运行时动态无缝地调整工作副本数量的方法(参见A.1.b和A.1.c)。定额弹性是一种在所有副本同意(正常情况)时/在副本不同意(错误情况)时改变参与投票的副本数量的方法。该系统具有目标最大恢复能力,该目标最大恢复能力等于期望容忍的故障数量fmax。反过来,这意味着需要为投票器和其他结构提供资源来支持nmax=2fmax+1副本。然而,在运行时,可以仅使用这些资源的子集,来将监管和应用级的副本集两者调整为某个非最大威胁级别,以容忍f
[0176] M.4:反射共识(Reflective consensus):一种当错误发生且在涉及若干块的操作中检测到错误时允许对这些相同块的安全重新配置进行决策的方法(参考A.1.b和A.1.c)。由于该决策将在出现故障或受损块时实现,因此仅在多数正确块中达成共识的决策才能实施,以便确保遏制错误和/或避免单点失效。也就是说,在检测到一个或多个块集合中的错误时,块集合将关于必要的重新配置动作的共识反映到它们自己的结构上。该方法的一种具体用途是,当块托管某个组件的副本时,通过让多数正确的副本对其自己的重新配置进行一致投票,由此使复制的组件能够安全的重新配置和/或自我修复。在本发明中,该方法提供了一种通过将共识结果反映到投票副本自身结构的目标一致的重新配置上(例如,以增加投票定额),来从上述挂起的投票中恢复的方式。
[0177] M.5:可重新启动的投票:一种尝试以最小副本定额或投票结构来执行投票计算的方法,该最小副本定额或投票结构仍可确保安全的进度(例如,f+1个副本),从而产生最小的可靠的错误检测(与至少一个正确副本的投票分歧)。该方法递归地诉诸于M.3,以便在任何必要时确定定额调整;该方法递归地诉诸于M.4,以便将该重新配置反射性地执行到副本上。任何分歧或遗漏将投票挂起,并引发异常。对异常的处理试图用足够的资源(例如2f+1个副本)来重新配置系统,以继续进行到计算的最后,然后重新开始或重新启动投票,目的是允许实现允许执行错误恢复或掩蔽,从而获得否决任何少数投票的多数正确副本的一致投票和/或故障诊断,确定有故障副本并可能采取恢复措施。
[0178] M.6:反射复活:一种用于复活块的方法,其需要重新配置相关副本。该方法递归地诉诸于M.5,以便对导致副本重新配置的操作进行投票。在发生投票失效的情况下,该方法递归地诉诸于M.4,以便将定额重新配置反射性地执行到副本上。恢复的部分需要修复失效或受损的副本,其分别根据是否已识别出故障而以被动和/或主动模式实现。由于是以分散的方式并在存在故障且可能是隐秘组件的情况下进行的,所以为确保所需的投票步骤的顺序正确终止(其中每个投票步骤可以被故障副本挂起),用于被动和主动复活的协议基于可重新启动的投票。
[0179] 3现有技术
[0180] 以下是对本发明上下文中的现有技术的说明:
[0181] 3.1块架构
[0182] 参考图4和图5。发明人想到将扩展的硬件能力单元Mon(A.1)应用在块架构中。出于本发明公开的目的,块是位于片上互连中相同逻辑位置并且共享公共网络接口的计算和存储资源的任何组合。图5示出了块的示例。Mon位于块到片上网络的互连处。
[0183] 发明人对计算块进行了区分,其包含以下各项的任何组合:普通通用处理器核、包括图形处理单元的特殊类型加速器、高速缓存、紧密耦合的存储器以及访问存储器映射的IO设备(MMIO)所需的接口。应用和管理OS在计算块上运行。在提出的架构(A.2)中,应用或管理OS的线程必须调用位于块(其在这些块上执行)上的Mon中的能力,以便访问其他块的资源。
[0184] 存储器块处于非活动状态,因为它们不运行调用能力的线程。其包含片上存储器、与这些存储器相关联(例如,用于计算纠错码ECC)的逻辑、用于访问片外存储装置的接口和MMIO接口的任何组合。计算块上的应用将存储器块的存储装置用作附加的、计算块外部资源,它们通过调用能力对其进行访问。
[0185] 图6示出了小型多核系统和发明人为获得架构所提出的扩展(A.2)的示例。三个块(例如,包括具有本地指令和数据高速缓存的单个核)连接到片外存储器和其他资源,发明人将其接口也组织成块。互连网络的示例包括总线,例如ARM AMBA、交叉开关矩阵或片上网络。本发明的装置(A.1)—Mon—介于每个块的网络连接之间。为证明监管和安全区的引导过程,能够执行认证引导的单元(例如TPM[参考文献1])连接到网络。
[0186] 图7示出了大规模众核系统的示例。块通过任意拓扑和种类的片上网络进行连接。这里示出的是网状互连。本发明不限制所使用的片上网络的类型。特别是,Mon允许块在多个部分中发送消息,发明人将其称为区块。在递送消息时,消息区块可以采用从源到目的地块的任意路由,并且它们可以按任意次序到达目的地,可以在将编码为较小单元并通过多个路由递送的区块信息重新组合之后。在下文的第6.4节中,发明人描述了,如果网络传达了附加的保证(例如,如果消息按次序到达),则装置的简化成为可能。图6中的认证引导单元的作用是初始化监管副本的Mon。
[0187] CAP[参考文献2]和M3微内核[参考文献3]已经提出了在块到NoC的互连处定位诸如Mon之类的硬件能力单元。这些系统中的可信内核以及该内核在其上执行的核形成单点失效。也就是说,内核中的软件故障或核中的硬件故障可能允许对手损害整个系统。相反,Mon不是单点失效。本发明认为Mon(重新)配置是敏感操作,并且确保了对Mon投票器设置的任何改变和能力的创建由监管副本的多数非分歧投票产生,这些副本中的少数可以受到损害或发生故障。
[0188] 3.2基于能力的系统
[0189] 只能通过调用线程块的Mon中的调用能力来访问块外部资源的要求将发明的架构转变为基于能力的系统。
[0190] 在基于能力的系统中,拥有具有足够权限的能力对访问能力指向的资源是必要且充分的。能力c=(ptr,perm,l)是不可伪造的令牌,该不可伪造的令牌由指向资源r的指针ptr、访问权限集R和可选的标签l组成。能力的所有者可以对引用的资源r执行操作op,假设perm包含授权op的访问权限。例如,为了修改能力c引用的存储器区域,该能力的集合c.perm必须包含写许可(即w∈c.perm)。标签l是应用提供的值,其存储在能力中,并在调用能力以执行操作时作为附加参数传递给资源。
[0191] 在该工作中,发明人关心的能力指代块的资源(例如,该块的存储器中的区域)。然而,借助标签l,也可以将这些低级资源转换为较高级的资源。例如,将存储器区域用作文件系统操作的邮箱缓冲区,并将标签用作对文件的引用。标签l的其他已知用途包括:存储用户ID或类似值,作为在(文件)服务器中实现的访问控制策略的参考。
[0192] 图8示出了该示例。
[0193] 能力执行是在应用调用其能力之一时检查访问权限并转发指针ptr的过程。执行可以通过验证资源实现者中受密码保护的能力(如在Amoeba[参考文献4]中),通过检查监管中的能力表(如在Keykos、Eros和L4系列微内核中),以及通过硬件能力单元(如CAP[参考文献2]、Cheri[参考文献5]和M3微内核[参考文献3])来进行。本发明通过提供硬件能力单元Mon(装置A.1)来应用后一种方案。除了在调用块的Mon处检查特权perm并转发指针ptr和c的标签l,发明人还引入了第二特殊标签—认证令牌auth(M.1)—以验证实现硬件和软件的资源的身份。如果可以肯定地确认操作的身份,则仅将操作及其参数转发给该实现块。否则,如果目标应用不再控制该块,则该操作将被丢弃,并向调用者报告错误(参见5.0.2节中的方法M.2和M.9)。
[0194] 文献讨论了在能力单元中调用能力的各种接口。例如,CAP[参考文献2]提供了显式接口,从而识别能力寄存器并调用存储在其中的能力。另外,Cheri[参考文献5]提供了隐式接口来支持传统应用,其中部分物理地址被解释为能力寄存器标识符。Mon采用两种方案。另外,Mon采用M3微内核和数据传送单元(DTU)的方案,通过将使用能力的接口与重新配置Mon的接口进行区分。与其中单个内核能够对能力执行单元进行重新配置的DTU不同,Mon使此类重新配置符合多数投票,以容忍这些内核中的少数受到损害。
[0195] 文献还讨论了通过从更强大的能力派生而在硬件中创建能力的选择方案。例如,给定存储器区域[a,d]的能力c并且具有权限perm,Cheri[参考文献5]允许从c得出区域ptr'=[b,c]的存储器能力c'并且具有权限perm’,其中 and另外,Cheri将存储器位置标记为能力或数据存储装置,从而防止对前者的读写访问。备选地,可以使用软件能力内核来控制能力的创建,并防止混淆数据的能力,反之亦然。Mon支持两种变体,但确保敏感能力创建操作符合多数同意。
[0196] 3.3能力内核、管理操作系统和安全区
[0197] 图9示出了发明人旨在利用启用Mon的多核或众核系统(A.2)构建的创新系统的类型。管理OS负责所有块和平台资源,发明人假设的所有块和平台资源按块进行组织。与往常一样,管理OS(例如Linux)针对这些资源实现资源管理策略,并且可以运行应用程序。然而,它也可以启动更值得信赖的执行环境—安全区(此处为A和B)—以运行应用的关键安全部分。该构造使得安全区无需就其从中受益的安全属性信任管理OS。
[0198] 存在若干已知的方式来实现这种架构:
[0199] ·通过在启用了Inktag的管理程序之上实现安全区:管理程序的实例在每个核上和在每个块中的特权监管模式下运行,并实现称为Inktag的用户级或内核级组件[参考6]。通过在该安全区运行时抢占管理OS对安全区存储器的访问,Inktag确保了管理OS仅以加密形式看到安全区状态,并确保了在控制转移到安全区时维持该状态的完整性。
[0200] ·通过在硬件中支持安全区:Intel SGX第37章[参考文献8]以微码形式提供了类似于管理程序的实现,并提供了一种特殊的处理器模式来执行安全区;或者
[0201] ·通过在专用块上执行安全区:M3微内核[参考文献3]允许通过DTU对核进行隔离,这能够构建如图9所示的安全区。
[0202] 本发明人提出的解决方案采用了M3的方式构建安全区,通过分派专用块来防止软件或硬件错误以及防止攻击传播到在其他块上执行的安全区中。然而,与基于单个必要可信的能力内核的M3不同,发明人想到创建复制的能力内核,使得即使少数内核副本受损也不会违反安全区的安全属性。由于传统意义上的最低软件层(即以最高特权的处理器模式执行的内核)控制着所有平台资源,因此发明人引入了值得信赖的能力执行单元Mon(A.1),以防止内核直接访问所有这些资源。相反,发明人应用并扩展了Byzantine故障和入侵容忍技术,从而使包括创建准许内核访问所有平台资源的能力在内的所有敏感操作都符合多数投票。
[0203] 本发明为创建值得信赖的监管而面临的挑战在于:(i)通过利用块经由NoC的紧密耦合来最小化复制内核执行所需的资源;以及(ii)使内核能够从少数受损内核副本来恢复自身。
[0204] 系统的动态特性带来了进一步的挑战。假设子系统B在其块的低级资源的帮助下提供了高级资源r(例如文件),并且A具有对此高级资源的能力c。然后,为了让A信任r,需要知道B仍控制着其能力所引用的块。但是管理OS可以将块重新定位到不同的子系统,包括模仿B违反A的完整性和保密性的受损子系统C。验证令牌(本发明的方法M.1)通过将能力的有效性链接到控制块的子系统来解决此问题。在没有这样的机制的情况下,在C取得对B的块的控制权之前,必须可靠地撤消能力c以及(更一般地)B的所有能力。然而,在没有认证令牌的情况下,这意味着要么跟踪所有能力并遍历复杂的数据结构以找到能力的所有复制者并使它们无效,要么为能力配备租约,并防止管理OS从诸如B之类的子系统撤销块。前者的复杂性是基于能力内核的系统很少支持硬件撤销的原因之一。后者对管理OS中实现的资源管理策略有重要影响。认证令牌(M.1)通过将引用块的能力链接到它所属的软件世代来解决当前系统的该问题。
[0205] 3.4 Byzantine故障和入侵容忍
[0206] 系统中的故障组件可以悄悄地崩溃,或者故障组件可以表现出任意(即Byzantine)行为,其他组件可以将其解释为输入。诸如PBFT[参考文献12]或MinBFT[参考文献12]之类的Byzantine容错(BFT)协议通过防止将少数响应解释为有效应答来允许这种行为。
[0207] 令f为系统应容忍的、同时存在故障/受损组件的可配置数量,然后BFT协议确保至少f+1个副本中的多数最终会对要处理的请求和对该请求的响应达成一致。为此,在不存在或存在防止某个故障行为的值得信赖的组件时,BFT协议分别需要数量为n=3f+1或n=2f+1个副本。例如,MinBFT中的值得信赖的USIG允许副本验证次序连续且单调的消息。为此,通用序列和身份生成器(USIG)将消息的哈希以及受密码保护的计数器值署名并返回,该计数器值针对每个消息递增。
[0208] 在本发明(监管弹性)的上下文中应用现有技术的BFT协议是不可行的,因为前者是在松散耦合,特别是独立失效的节点(例如,经由互联网连接的服务器)的假设下构建的。因此,其意味着期望的延迟和故障独立性在现有技术的多核和众核环境中不容易得到满足。现有技术的BFT协议的成本在于计算步骤的复杂性、需要交换的消息数量以及n个活动副本所需的能量。在本发明中,发明人利用片上网络中块的紧密耦合来创建使BFT在芯片级可行的新型协议(M.2、M.3和M.6),目的在于避免这些成本。因为片上网络延迟至少要小六个数量级,所以在这种低级别下,云环境中可容忍的协议步骤将不再容忍。相反,监管级的BFT协议必须非常快。除了成本之外,现代多核或众核系统中核的紧密耦合还违反了独立失效和受损假设。然而,该假设是BFT协议的基本要求。例如,通过Mon(A.1),发明人以块的粒度引入了故障独立性,显而易见的一点是引入了多样性。内省和包含Mon中的值得信赖的投票器通过通过复活进行激活或自我重新配置来确保对管理员副本进行可靠的重新配置。
[0209] 3.5重新配置
[0210] 可靠的系统通常依靠重新配置来实现故障容忍或改进故障容忍效率。已得到一些关注的故障和入侵容忍方面的特殊情况是主动和被动复活各种副本,以及增量地调整副本定额。
[0211] 在存在持续攻击的情况下,需要进行复活和多样化,以防止在成功损害f个副本之后的资源耗尽。复活对副本进行修复,而多样化则防止共模(common-mode)故障,从而确保攻击者无法对若干副本进行并行攻击,或者无法从先前成功的攻击中受益。因此,只要协议修复副本比攻击者损害副本快,则系统就将在连续和/或持续的攻击中幸免。现有技术的BFT协议需要n=3f+1+2k个副本,以防止在复活k个副本时资源耗尽,在具有值得信赖的组件时,需要n=2f+1+k个副本[参考文献11]。
[0212] 其他现有技术的故障和入侵容忍系统通过需要根据感知到的威胁或发生的实际错误来增加副本数量的若干模式进行操作。然而,这些机制通常涉及更高级的软件(任务、服务器),无缝地执行模式改变和确保完美的错误检测和故障遏制,这些机制非常精巧,并且通常需要对OS的较低级别的信任,以在出现故障时正确地执行前者。
[0213] 发明人在下文中详述的本发明的Mon装置和方法(M.2、M.5、M.4、M.6)通过确保完美的错误检测、状态保护和故障遏制,从而消除了从系统的最低级直到任务和服务器的单点失效,同时确保了在仅n=2f+1个副本的情况下的绝对安全的被动或主动复活。此外,其允许在从minQ=f+1到maxQ=2f+1的范围内无缝地改变活动副本的定额,例如在检测到故障或受损副本妨碍达成共识时。
[0214] 尽管CMOS缩放产生大量可用的计算资源,但是减少所需副本的定额,并在大部分系统活动期间保持这些副本非活动,有助于系统设计者满足能耗和散热要求,特别是在恶劣的环境(例如,靠近发动机或汽车)中使用系统的情况下。
[0215] 3.6认证引导
[0216] 为了使平台的远程用户信任在安全区中运行的应用,平台必须为应用提供一种手段,以证明它们在安全设置中运行。由于管理OS首先启动,因此必须在安全区后期启动时建立这种保证。用于认证安全区的安全引导的现有技术包括分别在可信平台模块(TPM)中和SGX中Intel提供的安全区中实现的协议。该特殊的Intel安全区可进行安全引导(即仅运行由Intel签名的代码),并通过测量要引导的应用来扩展该引导保证。从而由对消息进行署名的引导安全区/TPM来提供经认证的引导过程的证据,所述消息包含引导代码的身份(例如哈希)和由远程用户提供的随机数,以防止重放攻击。
[0217] 本发明公开内容假设任何以上技术的应用都对监管副本进行安全引导并初始化监管副本的Mon的ID寄存器。
[0218] 4威胁模型
[0219] 本发明以高级和持久威胁以及高技能和装备精良的对手的复杂攻击为目标。因此,发明人假设了一种极端的对抗力量。特别地,对手可以是:
[0220] T1:损害所有软件层,包括监管和处理器核的微代码;
[0221] T2:损害硬件级的块(例如,通过操纵IP区块来安装陷阱门,陷阱门向其授予对受损块的监管特权);以及
[0222] T3:对手可能已经损害了片外资源(例如网卡),这使对手可以高速进入系统以继续他们的攻击。发明人确实通过以下方式限制了攻击者:
[0223] T1.a:尽管对手可以损害所有级处的软件,但发明人假设每次攻击都花费最小的时间量ta。此外,如果先前攻击已经成功,则发明人假设多样化足够强壮,不会让ta进一步减小。
[0224] T1.b:发明人假设软件级的攻击必须通过软件组件的显式接口或隐式接口来进行。特别地,发明人假设对监管的软件级攻击必须通过监管的接口进行,这意味着调用了能力,以向监管副本的块发送请求。
[0225] T1.a和T1.b的基本原理是限制攻击的并行度,因为大多数正确的监管副本将请求处理序列化。另外,发明人还假设:
[0226] T2.a:IP区块只能在数字领域中操纵。任何混合信号电路都在集成过程中检测,并释放IP区块。
[0227] T2.b:发明人假设所有经认证的引导单元、所有Mons和片上网络的所有组件都是值得信赖的组件。也就是说,它们可能会悄悄地崩溃,但不会表现出Byzantine行为。特别地,发明人假设保持在这些组件中的所有状态维持不变,否则,则该组件以静默方式停止操作,没有这种状态而留下可信组件。
[0228] T2.c:发明人还假设网络在有限的时间量td之后递送所有消息,或者根本不发送消息。即,消息的延迟不能任意长。
[0229] T2.d:此外,从展现出相对于实时的有限且已知的漂移率 的意义上说,发明人假设所有超时的时基都是可靠的。此外,发明人假设时基对于内部或外部环境条件的改变是鲁棒的。
[0230] 只要IP区块遵守数字设计规则(T2.a),则区块中的逻辑就无法用于成功攻击Mon(Mon位于其旁边)、片上网络或系统的其他块。这些组件的简单性和被最严格地验证的其操作的可能性证明了值得信赖的组件假设(T2.b)是合理的。错误检测校正机制确保数据损坏时的崩溃。网络假设(T2.c)仅在中度覆盖的情况下才是合理的。因此,发明人假设了高级网络编码应用、加密网络弹性和屏蔽技术,以增加假设T2.c的覆盖范围。可以通过将超时与难以影响的物理条件(例如,DRAM中信息的衰减)相关联来改进假设T2.d的覆盖范围。
[0231] T4:假设T1.a和假设T1.b证明我们的论点是合理的,即:在n=2f+1个副本的情况下,发明人引入的协议持续容忍多达f个同时发生的故障和攻击,前提是修复副本比对手可以损害附加副本更快。
[0232] 在下文中,可以由此调整数量n≤nmax以及因此的f≤fmax,以匹配损害的风险(参见第10节中的定额弹性(M.3))。
[0233] 5 Mon(A.1)
[0234] 现在,发明人更详细地描述了本发明的主要装置Mon。图10示出了Mon的组件以及Mon在每个块的片上网络互连处的位置。发明人表示Mon所在的块是该Mon的关联块。
[0235] 作为硬件能力单元,Mon通过检查调用能力的访问权限来实现能力执行。为此,每个Mon实现了至少一个能力寄存器、至少一个消息投票器和至少一个重新配置投票器。发明人允许每个Mon静态地定制到发明人期望在关联块上运行的应用。因此,可以在硬件设计时为每个Mon单独选择能力寄存器的数量ci,max、消息投票器的数量 和重新配置投票器的数量 通过索引0…ci,max对能力寄存器和存储在其中的能力进行寻址。
[0236] 每个能力寄存器都存储能力,该能力由指针ptr、权限集perm和可选标签l组成,或者它具有特殊的nil能力,该能力不提供访问并且用于对该寄存器中不存在有效能力进行编码。与现有技术的能力单元不同,Mon在每个能力寄存器中提供存储附加标签,即认证令牌auth(M.1)的空间。此外,Mon提供块可读的状态比特,在下文中,发明人在第6.1.4节中描述状态比特在错误报告中的使用。
[0237] 当访问权限检查成功时,操作调用块Monsrc的Mon将ptr,l和认证令牌auth以及对资源实现块Mondest的Mon的操作op进行转发,其中资源实现块的地址存储在p中。Mondest一旦接收到该信息,它就检查与Mondest相关联的块是否属于意图中的子系统。为此,每个Mon将当前正在控制关联块的子系统的标识符存储在ID寄存器中。存在两种可以设置该ID寄存器的方式:
[0238] 1.在启动新子系统时,通过经认证的引导单元进行设置。在这种情况下,ID寄存器被设置为引导子系统的安全哈希;以及
[0239] 2.在子系统扩展到具有授权该扩展的能力的其他块时,通过子系统自身进行设置。在扩展期间,ID值不能改变。相反,将来自扩展触发块的ID值复制到该子系统所扩展到的块中的ID寄存器中。
[0240] Mon的接口划分为具有不同的访问限制的两个部分。第一部分将调用能力所需的所有接口功能(例如,以写入到外部存储器或从能力存储装置中加载能力)进行组合。接口的该部分可由与Mon关联的块中的任何组件自由访问。无法从其他块访问进行访问。第二部分只能通过调用能力来访问,该能力指代Mon中的专用投票器类别:重新配置投票器。与可以包含由关联块实现的资源的任意能力并且能够通过将消息转发给该块来访问的消息投票器不同,重新配置投票器的单个能力被硬连线到Mon的重新配置接口,该接口将投票器所接收的消息解释为命令。
[0241] 为了确保所有敏感操作仅在多数副本同意执行该操作的情况下才调用,这两种类型的投票器都是需要的(即至少一个消息投票器(A1.b)和至少一个副本投票器(A1.c))。显然,创建能力(即能力寄存器的重新配置)、重新引导块和重新配置投票参数是关键操作。因此,包括有重新配置投票器。然而,如果以管理OS、应用或子系统的块为目标的消息源自应用级服务器或监管,在这些发送者可以访问应用一定不知道的信息的情况下,这些消息也可以是敏感的。在这种情况下,除非需要达成用于将消息递送到这些客户端的共识,否则单个服务器或监管副本可能会泄漏该信息。因此,除了重新配置投票器外,Mon还包括至少一个消息投票器。
[0242] 为了允许故障或受损的监管副本的自恢复,Mon中的投票器实现了除现有技术之外的附加功能。在下文中,发明人首先详细介绍了在调用能力时执行的访问权限和认证令牌检查。在能力直接引用资源的情况下,该调用可以是直接的,或者如果能力引用了投票器,则该调用可以是间接的,这需要在调用存储在投票器中的第二能力以对资源执行所需的操作之前的多数副本的同意。之后,发明人详细介绍了三种结构上不同的变体,以在Mon投票器中实现该附加功能。
[0243] 现在,发明人对在Mon中实现的硬件能力执行进行描述,特别是它如何执行特权和子系统真实性。与传统意义上的多分层的系统不同,基于安全区的系统通过将可信子系统的所有资源管理决策置于不可信的管理OS的控制之下,从而打破了传递信任关系。在该工作中提出的平方案的结果是,块到子系统的映射本身并不值得信赖。相反,随着时间的流逝,块可以托管相同或不同子系统的不同世代。因此,块的能力可以指代先前世代所提供的资源。然而,在当前世代中,资源可能不再有效或更糟,对手可能会利用该访问来损害这一世代的安全性或完整性。例如,假设图8中的文件系统属于先前世代,并且当管理OS用不同的子系统重新加载块2时,块1仍拥有能力c。如果该子系统的代码与消息缓冲区重叠,则通过调用c,块1上的对抗代码能够更改该代码并损害块2上的新子系统。因此,在块上进行安全世代改变的前提是,在执行世代改变时,该块上的先前软件世代的所有能力都失去其有效性。在认证令牌(M.1)的帮助下,Mon防止这种跨世代的访问。
[0244] 5.0.1直接访问的资源(M.1)
[0245] 图11示出了在能力直接引用资源R的情况下,用于特权和认证令牌检查的组件之间的相互作用。图12示出了直接访问的序列图。可以在图15中找到用于完整的访问检查(直接和投票)的伪代码。
[0246] 核利用通过Mon的能力调用接口的能力触发操作。该接口作为存储器映射的IO寄存器映射到块的所有活动单元的物理地址空间中,而不映射到其他块的地址空间。因此,块的活动单元只能调用关联的Mon中的能力,而不能在不同块的Mon中调用能力。
[0247] 除MMIO接口之外,发明人还采用了Cheri[参考文献5]中引入的传统能力接口。通常,应用在虚拟地址的地址空间中运行,核本地的MPU、MMU和TLB将这些虚拟地址转变为物理地址。为了支持通过对虚拟地址的常规存储器操作来取得代码并访问数据的传统应用,Cheri引入了一种隐式能力调用方案,该方案将物理地址的一部分用作能力索引。Mon可选地提供第二接口,以便与传统应用向后兼容。
[0248] 无论哪种方式,都通过识别要调用的能力寄存器i以及通过提供要在Monsrc的能力寄存器i中的能力c上调用的操作op来启动能力的调用(图12中的步骤1)。在该调用之后,Monsrc检查能力c是否传达了用于操作op的足够的访问权限(步骤2)。也就是说,它检查op所需的权限permop是否在c.perm(即 )中。如果是这样,则(步骤3a)Monsrc向Mondest发送能力c中的信息,指针c.p、认证令牌c.auth、标签c.l和操作op。图11通过NoC层中的黑色箭头表示该通信。目标块(块2)的地址,也就是Mondest的地址存储为指针c.prt的一部分。
[0249] 如果访问权限检查 失败,则Monsrc可选地通过将能力寄存器标记为产生了错误并通过在一个块的核中触发异常来向本地块发送信号通知错误(步骤3b)。
然后,通过读取这些状态比特(其是能力寄存器中唯一可以读取的部分),被中断的核上的操作系统可以找出错误原因:访问权限不足。
[0250] 在接收到c.ptr、c.auth、op和c.l之后,目标块的Mon,即Mondest(在块2处)将接收到的认证令牌c.auth与存储在其ID寄存器中子系统哈希相比较(步骤4)。如果该检查失败(步骤5b),则可选地发送信号将错误通知给Monsrc,Monsrc又可选地将此错误发送信号通知给本地块(块1)的核:错误的子系统。相反地,如果步骤4中的检查成功,则Mondest将消息转发给本地块(块2),本地块又提取所包含的信息(操作op、指针c.p和标签l),并在所引用的资源上执行操作。在图11的示例中,这是将一些数据和标签c.l写入存储器位置c.ptr。发明人故意未包括从目标块(块2)到调用块(块1)的成功通知,因为该通知可以用作未检查的返回通道。为了发信号通知操作成功(不能在到达资源实现块之后就假设操作成功完成),该目标块必须调用其能力之一并在返回中发送消息。
[0251] 5.0.2经投票的资源访问(M.1+M.2)
[0252] 图13示出了用于对消息并因此对目标块可以执行的操作进行投票的设置。图14示出了该场景的序列图。用于经投票的操作的设置的不同之处在于Monsrc中的调用的能力不直接引用对象。相反,其引用投票器和投票器中的能力寄存器。该能力寄存器又具有引用与Mondest相关联的块中的资源R的能力。
[0253] 现在,因为使用一个附加的间接级别来访问资源R,所以在何处执行访问权限检查存在以下两种可能性:
[0254] 1.在能力调用Monsrc中,通过将存储在投票器中的能力的许可镜像到引用该投票器的能力中;或者
[0255] 2.在对操作达成共识之后,在Mondest中执行访问权限检查。
[0256] 在第一种情况下,投票器的能力寄存器中的能力的访问权限也存储在投票器能力c'中。这样,在投票之前,Monsrc能够在将消息转发给Mondest以供认证令牌检查之前执行完整的访问权限检查。在第二种情况下,在对操作触发消息达成共识之后,通过Mondest中的投票器来执行访问权限检查 图14中的序列图示出了第一种实现变体。
[0257] 如上所述,步骤1至4用于能力直接引用资源的情况。也就是说,调用能力寄存器并识别能力,Monsrc检查访问权限并向目标Mondest发送消息,这次指示经投票的操作,并且Mondest检查认证令牌。图14中用于经投票的访问的协议与用于直接访问的协议(参见图12)在步骤5a中开始不同。不是紧接在特权和认证检查成功之后利用接收到的操作来调用块,而是接收副本Mondest仅将该消息接受为该副本的投票(从现在开始,图14中的步骤5a),并等待其他副本进行其投票。仅在Mondest看到来自不同副本的f+1个匹配投票(步骤6)之后,它才会转发操作以在本地块中执行(步骤7a)。根据投票器的实现和配置(参见第6.1、6.2和6.3节),一旦f+1个匹配投票到达,Mondest就会转发操作,而不管反常的投票,或者将投票器挂起,以允许副本检测该错误并从该错误中恢复。
[0258] 5.0.3经投票的Mon重新配置(M.2,M.6)
[0259] 图16示出了一种特殊的经投票的操作:通过Monsrc和其他副本的Mondest的重新配置。因为只能通过经投票的操作来访问Mon的配置接口,该经投票的操作以Mon的重新配置投票器之一为目标,所以没有少数副本可以通过创建能力或通过重新配置投票器设置来提升其特权。相反,这种重新配置必须源自同意该敏感操作的多数副本。在图16中,块1具有对Mondest的重新配置投票器的能力c。因此,如果大多数其他副本同意,则它可以重新配置该Mon。Mon重新配置如图14的序列图和图15的伪代码中所述。然而,不是将同意的操作转发给块(在这些图中分别为步骤7a和第28行),Mondest自身解释该消息并相应地动作。例如,作为创建能力操作的结果,Mondest将对应的能力插入到该操作中指定的能力寄存器中。
[0260] 5.0.4指针布局
[0261] 在以上各节中,发明人从指针p中提取了网络中的目标块的位置、对象、副本标识符和寻址投票器中的寄存器索引。图17示出了存储所有这些信息的示例指针格式。字段块和对象指代资源和在其中实现该资源的块。ri识别副本。寄存器表示投票器中能力寄存器的索引。
[0262] 在下文中,发明人现在针对不同投票器变体详细说明图14的序列图中的步骤5a-7a中和图15的伪代码中的19-28行中的投票。
[0263] 6可重新启动的投票(M.5)
[0264] 现在,发明人解释可重新启动的投票,一种节省芯片能耗的方法,其中,给定n个副本的通常定额以掩蔽投票计算中的f个故障,maxQ=2f+1,系统以最小副本定额或投票结构进行工作,但仍确保安全过程,minQ=f+1个副本。由于始终确保可靠的错误检测(minQ中至少存在一个正确的副本),因此尝试利用minQ执行投票。在发生分歧时,投票将被挂起,系统回退到maxQ并重新启动投票,以便允许进行处理(错误掩蔽和故障诊断)。发明人详细介绍了三(3)个结构不同的变体,以在Mon中实现投票功能。
[0265] 最完整的实例Mon投票器(V1)如往常一样工作:投票器结构提供足够的存储容量,以使所有相关消息保持在2f+1以下,可以从中选择正确的消息。因此,V1确保了错误检测和掩蔽以及故障诊断(哪些是故障副本)。变体V2具有更简单的结构,具有f+1个缓冲区。V2基本上确保了错误检测,需要更复杂的处理以用于掩蔽和故障诊断。变体V1、V2存储了足够的信息,一旦f+1个副本同意,就可以进行投票,或者直接在使用maxQ时,或者在minQ时,在投票被挂起之后,通过重新开始或热重新启动诉诸于maxQ时。
[0266] 变体V3的结构更简单,只具有一(1)个消息缓冲区。投票结果以更紧凑的形式存储。因此,V2基本上确保了错误检测,需要更复杂的处理以用于掩蔽和故障诊断。然而,它针对较小的投票器大小权衡了紧接的投票过程,这意味着投票的冷重新启动,其必须在从投票错误中恢复后重复进行。
[0267] 可以在想到的系统架构(A3)的单个变体中,甚至在单个Mon内部组合若干(例如)所有变体V1至V3。也就是说,例如,一些Mon可以实现投票器变体V1,而另一些可以提供变体V2和V3的组合(例如,以支持对一些控制任务的前向(forward)恢复,同时使用单缓冲区变体来实现对定时要求不高的操作)。必须在硬件构造时选择要包括哪种的投票器组合。
[0268] 6.1 Mon投票器(V1)
[0269] 图18示出了第一投票器变体(V1)的构建区块。在该变体中,实现了nmax=2fmax+1个缓冲区,以用于容忍多达fmax个故障。而nmax和fmax是在硬件构造时固定的参数,而要容忍的故障的实际数量f和因此最小要求的副本n=2f+1可以在运行时进行调整以适应系统暴露的风险。发明人将该适应方法称为定额弹性(M.3),并在第10节中返回讨论指导该适应的协议。起初,所有投票器的定额设置为fmax,以确保在其他副本有机会将其重新配置为所需的定额强度(quorum strength)之前,没有监管副本可以使用投票器。可以在制造时单独为每个投票器选择参数nmax和fmax。特别地,具有不同参数的投票器可以包括在相同的Mon中。
[0270] 投票器包含三个配置寄存器:
[0271] ·定额将对于被接受的投票必须达成同意的副本的数量进行编码。也就是说,为了容忍f个故障,必须将定额设置为f+1;
[0272] ·挂起(suspend)是单比特的配置寄存器,用于在投票失配的情况下控制投票器行为。如果挂起=1,则一旦检测到失配,投票器就挂起投票,其允许健康副本对该投票错误进行检测并从投票错误中恢复。如果挂起=0,则失配将不挂起投票。相反,一旦定额副本在其投票中达成同意,投票器就转发该消息并继续进行下一投票。使用该设置,副本可能无法检测到投票错误,也就是说,至少一个副本提供了失配的投票;
[0273] ·重新开始(resume)控制投票器重置操作的行为。如果重新开始=1,则在多数副本同意重置投票器之后,投票器将清除错误标志并重新评估所接收的投票。重新评估是检查是否已经接收到f+1个匹配投票的定额。如果重新开始=0,则一旦多数副本同意重置该投票器,该投票器就将被重置为其初始状态。
[0274] ·超时存储超时值,该超时值用于限制从第一次投票的到达到已经达到定额之间的时间。一旦当前投票的第一消息区块到达后,定时器就将启动,并在稍后触发超时时钟周期。
[0275] 用于投票的构建区块是nmax个消息缓冲区bufi,用于存储多达nmax个消息,每个消息多达mmax个区块。发明人记做bufi[k],以指代缓冲区bufi的第kth个区块的位置。另外,投票器提供了nmax个寄存器,每个寄存器分别存储大小si≤mmax、投票器能力寄存器的索引regi以及向寄存器中的调用副本发送信号通知错误所需的信息srci。由于发明人通过在存储所调用的能力的能力寄存器中设置错误比特来发送信号通知错误,因此该信息必须识别源块以及该块的Mon中的能力寄存器的能力索引。状态寄存器提供用来报告错误发生的字段err、过程比特p和序列号seq。另外,投票器为多数重置操作提供nmax个比特的矢量rvi,其行为由重新开始标志控制。在制造时,给予每个投票器cmax≥1个能力寄存器。Mon可以拥有具有不同数量的能力寄存器的投票器。
[0276] 6.1.1设置
[0277] 为了在访问资源R时容忍多达f个故障,按如下方式设置投票器。将定额配置寄存器设置为f+1,将挂起、重新开始和超时设置为所需的错误处理行为,并将能力c'存储在引用R的投票器的能力寄存器中。maxQ=2f+1个资源访问副本接收能力c,该能力指代投票器的专用子结构。更精确地,c.ptr表示块、投票器、投票器中的能力寄存器(其存储c')和副本标识符1≤ri≤nmax。使用该副本标识符,每个副本ri接收对大小寄存器si、消息缓冲区bufi和重置矢量的比特rvi的访问。因此,具有不同副本标识符的副本指代不同的结构,从而确保投票的独立性。没有副本可以更改另一副本的投票,前提是监管确保不会在不同副本之间共享具有相同副本标识符的投票结构的能力。srci寄存器被配置为指向具有投票器能力的块ri的Mon中的能力寄存器。
[0278] 对于监管副本,对重新配置投票器的配置是作为监管的认证引导的一部分进行的。之后,监管副本负责重新配置消息和重新配置投票器。
[0279] 6.1.2 V1投票操作(正常情况)
[0280] 利用Mon投票器(V1)的投票如下进行。为了进行投票,至少最小定额为minQ=f+1个副本必须是活动的,并提出对投票器的能力寄存器ci中的能力进行操作。限制在正常情况下操作期间的副本的数量允许其余副本的块进入节能模式,这降低了系统整体的能耗并降低了系统所产生的热量。对于在不能应用主动冷却技术的恶劣环境中操作的关键控制系统(例如发动机控制单元)而言,这种降低尤为重要。
[0281] 副本通过调用其投票器能力来发起投票。Monsrc和Mondest执行第5.0.2节中讨论的访问权限和认证令牌检查,以确认调用块对投票器和资源R的访问。如上所述,如果这些检查之一不能确认访问,则Monsrc和Mondest分别丢弃投票并发送信号通知错误。
[0282] 为了允许在没有错误的情况下进行连续操作,投票器实现了序列号方案,其允许即使一些副本滞后,副本也进行投票。为此,投票器只接受当前序列号seq的消息,而丢弃所有具有不同序列号的消息(图19中的第3行至第5行)。注意,图19中的伪代码仅描述了投票器的操作及其逻辑。发明人想到本发明不要求投票器能够执行代码,尽管这是一种可能的实现变体。过程比特p通知副本当前序号的投票是否已经启动或副本是否尚未投票。特别是,组合p=0和seq=x+1指示具有序列号x的投票已经成功完成,并且具有序列号x+1的尚未启动。
[0283] 发明人通常假设,将通过片上网络发送的消息构造为带有元数据信息和消息有效负载的标头(header)。此类消息的每个区块包含序列号和副本标识符ri,以允许无序到达。然而,仅消息标头包含消息多长(即消息大小)以及它对投票器中的哪个能力进行寻址的信息。标头到达后,该信息被分别存储在大小寄存器si和regi寄存器中。这些寄存器被视为消息的一部分,以确保副本不仅同意消息,而且同意消息的大小以及要调用的寄存器。否则,投票器可能会被诱骗转发附加信息(缓冲区内容si+1…mmax)或对不同对象调用操作。回想一下图10,Mon中的每个能力寄存器具有用于错误报告的块可读状态比特。使用投票器中的srci寄存器定位这些比特允许块同时处理多个操作,前提是它们要寻址不同的对象并使用不同的能力寄存器。第10至17行中的代码存储消息标头信息,前提是副本ri尚未提供该信息。发明人不允许副本更改其投票,因为投票器可能已经基于该投票做出了决策,并且更改投票将允许恶意副本避免在其投票导致了错误的情况下被检测。第19至23行中的伪代码将消息有效负载存储在该副本的缓冲区的对应区块中。
[0284] 每当存储新区块时,投票器都会比较缓冲区和元数据寄存器,以查看是否已经找到匹配的定额。如果是这样,其选择一个内容被大多数同意的副本的缓冲区和元数据寄存器,并通过将该操作转发给关联块来调用操作,操作被编码在消息区块0,...smaj中。为此,其调用能力寄存器 中的能力c'(第36至40行)。此后,其设置p=0,递增序列号seq并停止定时器,该定时器在用于该投票的第一个区块到达时启动。当前投票完成,投票器通过等待下一序列号的投票来继续进行。
[0285] 6.1.3 V1错误处理
[0286] 投票器变体V1提供所有错误处理选项(在下面的第8节中详细介绍)。当最大定额为maxQ=2f+1个副本为活动的时,可以通过设置挂起=0来忽略失配的投票。然后,一旦f+1个匹配的投票到达,投票器就将转发消息。这种滚动转发(rolling forward)到下一投票是可以的,因为投票器提供了足够的存储来保持所有副本的消息,其中的大多数必须同意以达成共识。
[0287] 在最小定额为minQ=f+1个活动副本的情况下,只能检测到错误,而不能识别出导致该投票错误(即消息失配)的副本。后者需要对所有maxQ=2f+1个副本的激活(activation)和投票。尽管在最小的定额和分歧(diverging)投票的情况下,超时将向所有副本发送信号通知错误,这将导致在所有活动副本唤醒附加副本之后过渡到最大定额,但只要挂起=0,大多数副本就不能识别故障副本。为了诊断故障并明确有故障的副本,大多数健康副本必须能够在至少f+1个匹配的投票到达投票器之后才对状态进行内省。然而,在挂起=0的情况下,一旦f+1个匹配的投票到达,投票器将立即推进到下一序列,并且在这种情况下,有故障的副本能够通过利用下一投票的有效消息覆盖先前投票的数据来防止检测。为此,发明人通过设置挂起=1来引入对投票的挂起。在这种情况下,投票器将不继续进行到下一序列,并且允许健康副本对缓冲区进行内省,从而识别出提供了分歧投票的至少一个故障副本。然后,重置缓冲区的多数投票将继续投票过程。这种延续通过重新开始当前投票以利用由健康副本提供的信息向前滚动来进行(重新开始=1)。备选地,可以将投票器重置为初始状态:err=0、p=0和seq=0,以允许重复投票(重新开始=0)。
[0288] 发明人在激活了其他副本的情况下,假设大多数健康副本处于唤醒状态,或者作为唤醒的一部分,其将被带入以下状态,在该状态中,它们可以通过对自己投票和通过参与我们的协议的错误恢复步骤来参与错误恢复。实现此目标的已知技术包括,使用k个附加副本[参考文献11]在复活期间维持这种大多数,以及将更新推送给非活动副本[参考文献12]。
[0289] 在该实现的一个实例中,消息的比较是在类似多数门的电路的帮助下实现的,该电路返回f+1个副本同意的非空值。在另一实例中,multi-hot CAM[参考文献13]与加法器结合,以对匹配数进行计数并识别属于多数组的内容可寻址存储器中的行。
[0290] 6.1.4错误报告
[0291] 为避免轮询Mon和投票器错误状态并防止具有这些消息的NoC的饱和,Mondest将检测到的错误发回给调用副本及其Mons。为此,每个能力寄存器都实现了用于保持错误状态信息的比特。另外,所有投票器都包含nmax个源寄存器srci,它们在其中存储副本的Mon以及该副本调用的能力。也就是说,如果ri调用了能力,则将srci设置为ri的Mon以及所使用的能力寄存器索引。为了发送信号通知错误,Mondest利用该信息将错误信号发送给ri的Mon,该Mon通过设置状态比特以及通过在块中引发中断来解释该信息。
[0292] 6.2 Mon投票器(V2)
[0293] 投票器变体V1和V2不同之处在于存储区块的方式以及如何检测错误的方式。变体V2仅提供了fmax+1个消息缓冲区和元数据寄存器,而不是提供nmax=2fmax+1个缓冲区。另外,每个区块都配备有计数器。所有其他组件(除了到达矩阵A=(aik)之外,发明人在下面对到达矩阵进行更详细地描述)与变体V1的组件相同。除了存储区块和比较区块之外,变体V2还表现出与变体V1相同的行为。也就是说,如果区块到达,则进行检查以查看副本是否已经提供了该区块,如果没有,则将该区块存储在缓冲区中。然而,因为发明人不再使用针对每个副本的专用缓冲区,所以发明人需要依赖到达矩阵来执行该检查。
[0294] 6.2.1设置
[0295] 如投票器变体V1一样。
[0296] 6.2.2 V2投票操作(正常情况)
[0297] 如果没有副本为第kth个区块提供数据,则第一行中的消息缓冲区buf1[k]用于存th th储该区块和加一递增的计数器。如果某个副本已经为第k 个区块提供了数据,则检查第k列中的所有非空(计数器=0)区块是否匹配,如果匹配,则对匹配的区块的计数器进行递增。否则,将数据存储在第kth列中的第一个空区块中(并且相应的计数器递增为一)。将相同的存储过程应用于大小s和能力寄存器reg。
[0298] 一旦计数器达到或超过定额(即f+1),该区块就接收到了所有副本投票的多数。一旦所有区块接收到这种多数,整个消息就达到了其定额,并可以提取该消息以转发给块。
[0299] 图21示出了所有匹配投票的情况。只需要单个缓冲区,因为在所有匹配的情况下,比较成功且仅计数器递增。
[0300] 一旦投票失配,就需要使用第二行。图22示出了一个示例,其中对于区块1和区块3,获得多数票的投票A在投票B之前到达。消息区块的无序到达可能使次序颠倒,如区块2所示。因此,每列中的一个A区块接收到的计数为至少f+1,因此必须从超出该界限的那些区块中重建消息。
[0301] 注意,在对有多少个副本为相同的行贡献区块进行计数时,计数器所提供的信息已经保存在到达矩阵中。尽管如此,存储计数器允许更有效地检查要发送给哪个缓冲区以及是否已经达到定额。
[0302] 6.2.3 V2错误处理
[0303] 如变体V1一样,一旦活动的副本从最小定额minQ=f+1个活动副本变为最大定额maxQ=2f+1,投票器变体V2就将提供足够的存储器容量以向前滚动投票。因此,如同V1一样,变体V2要求挂起=1,以允许副本在继续下一投票之前分析错误情况。一旦需要使用第二行,投票器变体V2就对错误进行检测。
[0304] 投票器变体V2打破了副本与行之间的一对一关系。相反,可能发生多个副本的区块存储在同一行中的情况。为了仍然能够通过它们引起的失配投票来识别故障或受损的副本,变体V2实现了到达矩阵A=(aik)。对于副本ri和区块k,该矩阵的每个位置aik存储了在其中存储有该副本的消息的第kth个区块的行。
[0305] 为了处理错误,在发明人在第8.2节中更详细描述的方法中,健康副本将对挂起的投票器的消息缓冲区、计数器和到达矩阵进行内省,以识别出造成失配的投票的至少一个副本ri。使用了多于一行的第一列k揭示了失配的投票。针对计数器小于f+1的这些位置中的每个位置,即bufj[k],扫描到达矩阵的列k的内容,以查找值j。标准的单匹配内容可寻址存储器(CAM)建议自己实现缓冲存储器。
[0306] 6.2.4错误报告
[0307] 如投票器变体V1一样。
[0308] 6.3Mon投票器(V3)
[0309] 参考图23。投票器变体V3进一步减少了可用于将投票器内部的消息存储到一个消息的存储器空间。
[0310] 6.3.1设置
[0311] 如投票器变体V1一样。
[0312] 6.3.2V3投票操作(正常情况)
[0313] 到达位置k的第一数据区块bk存储在该位置处的消息缓冲区buf[k]中。将位置k的随后到达数据区块与此存储的区块进行比较。到达矩阵以以下代码的形式存储这些比较的结果以及副本是否提供了存储的区块:
[0314] ·00-初始化值。
[0315] ·11–副本提供了存储的区块。
[0316] ·01–副本版本同意存储的区块。
[0317] ·10–副本版本不同意存储的区块。
[0318] 更精确地,最初,当投票启动时,到达矩阵A的所有位置aik被设置为空(即aik=00)。然后,每当位置k的区块bk从副本ri到达时,该区块就会存储在位置k处的缓冲区buf[k]中,并且aik被设置为值aik=11以指示ri提供了此区块。如果bk不是位置k的第一数据,则将区块bk与所存储的数据buf[k]相比较。在后一种情况下,aik=01表示存储的数据与接收到的数据之间的匹配,aik=10表示失配以及因此的投票错误。
[0319] 如果f个不同的副本rj同意所提供的数据(例如来自副本ri),则可以达成共识。也就是说,在所有区块中必须具有,f个副本rj的ajk=01,以及提供数据的副本ri的aik=11,其总计为f+1个同意的副本。图24示出了该所有匹配投票的情况。请注意,r1和r2的第二区块以颠倒的次序到达,因此r1和r2两者都被标记为数据提供者。幸运的是,两个副本都同意其投票,因此哪个副本提供了数据并不重要。
[0320] 6.3.3 V3错误处理
[0321] 图25示出了相同的示例,其中区块2的到达颠倒,但是此时间副本r2出现故障或受损,并且投票失配。如果这样的投票是到达位置2的第一数据,则消息缓冲区buf[2]可以存储未达成同意的数据,除非多于f个副本出现故障或受损。在这种情况下,这种投票接收了健康副本rj的大多数不同意ajk=10。自然地,不能继续进行此投票,因为所存储的数据可能源自故障或受损的副本。因此,投票器变体V3始终在挂起=1的情况下运行并挂起投票。此外,由于如图25所示,所存储的数据可能有误,因此投票器不能重新开始当前投票。因此,投票器也以重新开始=0进行操作,并在大多数副本请求这样的重置的情况下重置为初始状态。
[0322] 如同变体V1和V2一样,变体V3可以以最小定额为minQ=f+1个活动副本进行操作,直到发生失配。在这种情况下,任何活动副本都可以唤醒其余的f非活动副本,以分析这种失配的原因并采取纠正步骤。
[0323] 除到达矩阵、缓冲区和重置矢量之外,投票器变体V3还实现了掩出矩阵M=(mij),发明人在第8.2节中更详细讨论了其作用,其中发明人讨论了从挂起的投票中恢复。该矩阵允许大多数副本从参与后续投票中排除其他副本。矩阵M=(mij)由位置mij组成,每对副本ri、rj中的一个,其中位置mij的集合表示副本rj希望掩出的副本ri。如果大多数不同的副本rj同意通过设置mij(副本ri的后续消息来掩出ri),则忽略重新配置和重置投票。副本仍可以参与掩出投票,并为其他副本rl设置/重新设置矩阵比特mli。
[0324] 6.3.4错误报告
[0325] 如变体V1一样。
[0326] 6.4投票器简化
[0327] 到目前为止,所描述的所有投票器变体都工作在无序消息递送的假设下工作。在消息区块按次序到达的情况下并且如果来自不同副本的消息未交织,则可以简化缓冲区和到达矩阵的子结构以及用于比较和存储投票的逻辑。在这种情况下,在投票器执行所需的比较之前,投票器等待完整消息的到达。在这种递送方案中,仅在消息标头中发送副本ID ri和序列号seq也是足够的,而不必在每个区块中发送。
[0328] 6.5投票器变体的比较
[0329] 当从投票器变体V1到V2到V3时,发明人期望减少必须以无错误方式保持(即,以足够强的纠错码存储)的状态,并因此增加鲁棒性以及减小大小。与此相对,随着变体数量的增加,投票器逻辑变得稍微复杂,用于识别故障或受损副本的协议也是如此。在变体V3的情况下,发明人未利用副本造成的失配投票立即向前滚动投票,而是通过重复投票来达到目的。
[0330] 7投票屏蔽(Shielding)(M.2)
[0331] 在发明人恢复挂起的投票之前,首先强调投票的消息传输和投票的重新配置的应用,以执行监管副本之间的共识。
[0332] 在启动监管副本时,管理OS选择n=2f+1个块来托管监管副本,并借助于经认证的引导单元来执行对这些副本的认证引导。在此引导过程期间,将为每个副本创建n个能力,以用最小定额为f+1来对投票操作中的这些n个块的Mon重新配置(即,每个副本都拥有重新配置其自己的Mon的投票器的能力,以及重新配置每个其他副本的Mon的投票器的能力)。图26示出了此设置。
[0333] 7.1监管副本的特权提升
[0334] 在执行期间,每当监管副本ri需要更多特权时,它就会与其他副本进行协调以实现协调的特权提升。因为此特权提升涉及在不同副本的Mons中创建能力,所以该提升被执行为一系列经过投票的能力创建操作。为此,所有副本均同意副本接收能力的次序(例如,r1,…,rn+1),并投票决策在每个这样的监管副本ri的Mon中创建能力。仅在f+1个监管副本都同意ri接收此能力的情况下,才会创建该能力。此后,监管副本将按此次序继续处理下一副本,直到所有副本均接收到所请求的能力为止。
[0335] 现在,正如发明人已在第6.1节中所讨论的那样,由于副本会逐个创建能力,因此受损的副本可以比健康副本更早地接收其能力。为了防止这些副本在f+1个副本接收到其能力之前利用其能力,使用定额=fmax+1来初始化投票器。然后,然而,由于定额弹性,监管可能会在较低的定额f
[0336] 7.2应用-监管交互
[0337] 对于其操作,监管需要能够访问所有系统资源。然而,通过修改其他应用所使用的资源或通过从应用中读取敏感信息,这种访问也存在误用的威胁。结合起来,这允许监管将敏感信息传达给系统的安全策略未清除的应用,以查看此信息。信息被泄漏。
[0338] 为了防止少数监管副本篡改应用的完整性或泄漏敏感信息,从监管副本到应用的响应通道是经投票的消息通道。也就是说,监管设置为使得每个监管副本都具有应用的Mon中的消息投票器的能力,并且该投票器被配置为f+1的定额,并具有对应用的块存储器中的消息缓冲区的能力。因为不将消息转发给尚未达成共识的应用,所以对系统调用的监管响应并不泄漏信息。
[0339] 在执行系统调用时,监管可能必须提升应用的特权,或者监管可能需要向自己授予对附加资源的访问权限。后者遵循上文第7.1节中描述的特权提升协议。提升应用特权遵循类似的协议。代替重新配置监管Mon,监管副本投票以更改应用块的Mon的配置。
[0340] 7.3经投票的应用-应用交互(M.9)
[0341] 除了使用Mon投票器进行监管应用的回复之外,还可以在应用之间设置经投票的消息通道。因此,使用Mon投票器有助于加快应用级服务器副本与其客户端之间的投票操作,前提是两者都在多核或众核系统的不同块上执行。
[0342] 除错误处理选项之外,如上文第7.2节所述地进行设置。图27示出了此设置。客户端能力直接引用应用级服务器副本中的消息缓冲区。为避免泄漏,响应是通过客户端的Mon中的消息投票器进行的,以确保所有回复均达成共识。
[0343] 8反射共识(M.4)
[0344] 与副本可以还原为监管副本以协助恢复的应用级投票不同,监管副本面临的事实是,监管之下没有进一步、特权更多的软件层来恢复副本。因此,投票需要重新配置监管副本,这是通过在大多数正确副本之间达成共识来实现的,使得重新配置操作会一致地反映在监管副本自身的结构上。
[0345] 应用程序级投票和监管投票都得到Mon投票器的支持,以检测需要恢复的错误情况,以便:可靠地识别导致此类投票错误的潜在地故障或受损的副本;和从挂起的投票中恢复。在下文中,发明人详细说明了对投票器变体V1、V2和V3的支持。
[0346] 8.1错误检测和副本识别
[0347] 所有投票器变体都有内置的手段,来检测投票错误并识别导致此错误的副本。为了检测任何错误,至少需要最小定额为f+1个活动副本。如果所有副本应同意的消息或消息元数据中存在不同意,则投票失效。只要所有f+1个副本都同意操作,发明人就可以安全地认为此操作是正确的,因为:(i)f+1形成了总共为2f+1个副本中的多数,只要我们假设最多具有f个故障或受损的副本(T4);以及(ii)f+1个副本达成同意意味着,至少一个健康副本正执行操作,因此,其他f个副本(即使它们受损,但是隐秘的)遵循正确的值。
[0348] 8.1.1投票器V1
[0349] 在投票器变体V1中,每个副本将其投票插入到专用消息缓冲区和专用元数据寄存器中,以存储大小si和调用的投票器能力寄存器regi。如果启用了错误检测(即挂起=1),则一旦两个消息缓冲区的值产生分歧,投票器将投票挂起。
[0350] 现在,在最小定额为minQ=f+1个活动的副本的情况下,可以检测到错误,但无法从错误中恢复或掩蔽错误。没有足够的冗余来保证可以识别或否决引起错误的副本。在多达f个故障或受损的副本的情况下,f个这样的副本可能位于活动的副本的集合中。在这种情况下,分歧投票可能源自此集中的单个健康副本。为了可靠地识别导致故障的故障或受损的副本,因此必须激活其他副本,并且它们必须参与投票。只有这样,在现在最大定额为maxQ=2f+1个活动的副本的情况下,大多数f+1个副本才能从多达f个故障或受损副本中投票胜出。因此,恢复过程(详见图28)继续进行一个或多个副本,唤醒其余的f个非活动副本,并要求他们参与投票。一旦f+1行的值同意,就达到多数,并且与这些值有分歧的任何行都可以作为源自故障或受损副本而释放。
[0351] 投票器变体V1允许进行投票,该投票将转发f+1个同意的副本的消息。为此,副本分别执行经投票的重新开始或重置操作:如果重新开始=1,则它将重新检查定额并将投票器设置为接受下一消息的状态(重新开始);或者,如果重新开始=0,则可以中止(重置)投票,并启动更重量级的纠正动作,例如使副本复活或重新定位。
[0352] 8.1.2投票器V2
[0353] 对于投票器变体V2,存在与变体V1相同的恢复选项。然而,由于不再将缓冲区分派给特定的副本,因此必须分析到达矩阵。一旦需要使用第二行缓冲区来存储第一分歧区块,投票器V2就发送信号通知错误情况,投票器V2就发出错误情况信号。在此错误情况下,令bufx[k]为行x的第kth个消息区块的缓冲区,该消息区块在所有副本已被激活之后接收f+1或更多个同意投票,则提供在不同的缓冲区行中存储的区块的所有副本,bufy[k],x≠y,不同意多数,因此被认为是故障或受损的。副本ri的区块k的到达矩阵位置aik记录该区块存储在哪一行。在我们的示例中,值aik≠x指示故障或受损的副本。
[0354] 8.1.3投票器V3
[0355] 投票器变体V3挂起投票并立即发送信号通知错误,其中副本中的一个副本不同意存储在缓冲区中的数据区块。该不同意可能是:如果故障或受损的副本提供了数据区块,则为合法的,在这种情况下,在切换到maxQ个活动副本之后,该有故障的副本将被不同意此值的f+1或更多个副本而暴露;或者,如果至少有f+1个其他副本同意所存储的值,则为非法的。因此,为了识别故障或受损的副本,副本必须调查位置k的到达矩阵。如果此位置接收了多数同意(来自f+1或更多个不同副本ri的aik=11或aik=01),则ajk=10的不同意的副本rj被认为是故障或受损的。如果该位置接收了多数不同意(f+1或更多个不同副本ri的aik=10),则向副本rj提供ajk=11的数据和与alk=01的所有同意的副本rl被认为是故障或受损的。
[0356] 另外,副本可以不响应(即aik=00)。发明人认为在一定的可配置时间内未对投票进行响应的所有副本都是有故障的。为此,投票器会对超时进行编程,并且如果触发超时则投票器唤醒所有副本。在此超时触发之后,将不再接受其他投票。因此,aik=00的所有副本都被认为是有故障的。
[0357] 8.2从挂起的投票中恢复
[0358] 为了从挂起的投票中恢复,投票器变体V1和V2提供了足够的存储空间,以便一旦f+1个副本同意就向前滚动投票。为了执行这样的向前滚动操作,副本简单地投票以重新开始投票,在至少f+1个副本同意重新开始之后,这使投票器清除错误标志并重新检查定额。如果现在,在此重新检查期间,如果所有区块都在一行中接收到至少f+1(对于变体V2)的计数,则可以分别找到f+1或更多个匹配行(对于投票器变体V1),则在投票是重新配置请求的情况下,接收到此定额的消息被转发给块或由Mon解释。
[0359] 在图25中,发明人示出了示例,其中故障副本提供存储在投票器变体V3的单个缓冲区中的数据,但这后来被其他提供其值的副本认为是不正确的。自然地,如果发生这种情况,则不得将缓冲区中存储的数据用于调用投票器中的能力。因此,发明人得出结论,投票器变体V3需要对投票的重置和重复。因此,恢复中的关键步骤是让健康副本进行投票以重置缓冲区以进行重复投票。然而,在没有任何进一步的预防措施的情况下,则有故障的副本可以简单地再次投票,并使投票器挂起进行任何后续投票。为了确保已识别的故障副本不会干扰重复投票的过程,投票器变体V3实施了掩出矩阵,以允许健康副本通过发出特殊的掩出请求来对掩出已识别的故障副本进行投票。更准确地,如果副本rj投票以掩出副本ri,则标志mij在掩出矩阵M中被设置为1。如果rj投票以在副本ri中掩蔽,则清除该标志。来自不同副本rj的具有至少f+1个标志mij=1的副本ri不能参与后续的消息投票,直到该数字降至f+1以下。它仍然可以参与投票以掩出/掩入其他副本并重置投票器。
[0360] 不幸的是,故障或受损的副本在重复期间可能仍然隐身。然而,如果所有副本都保持隐身并以正确的值参与投票,则投票将按预期成功。因此,每次投票对数据有分歧时,必须至少有一个故障或受损的副本才能与大多数产生分歧,并且投票器确保健康副本可以通过对投票器进行内省来识别该副本。现在,一旦被确定,健康副本就投票以掩出已识别的有故障的副本,这从副本的集中减少了一个有故障的副本参与下一轮。因此,最后在f个重复之后,仅保留健康副本,并且在发明人假设最多f个故障的情况下,保证投票得以成功。
[0361] 图28示出了该恢复和最小定额为f+1个副本中f个副本有故障的情况的序列图。在产生分歧投票(图28中的步骤1)之后,通过唤醒贡献其投票的f个附加非活动副本(步骤2)来启动恢复。此后,所有健康副本都会对到达矩阵和缓冲区进行内省(步骤4),以识别至少一个导致分歧投票的有故障的副本。在重复进行此投票之前,健康副本进行投票,以掩出此已识别的副本(步骤5)并重置投票器(步骤6)以进行重复。在少了一个有故障的副本的情况下执行重复,但是这次另一个有故障的副本可以显露。在最坏的情况下,重复该过程f次,直到投票成功或掩出了最后一个有故障的副本,这允许投票在剩下的f+1个副本的情况下得以成功。然而,请注意,总是有足够健康的副本,至少n-f个产生正确的投票操作。
[0362] 8.3通过将异常反映给监管副本来从挂起的投票中恢复
[0363] 反射共识对于恢复旨在重新配置监管副本的Mon的投票来说是关键的。对于(应用级服务器副本或监管副本)的其他投票,稍微简化的恢复是可行的,它通过请求监管副本帮助恢复和执行被卡住的投票器的重新配置来进行工作。图30在序列图中示出了此恢复方法。同样,如果至少一个副本(例如r1)发出投票(图30中的步骤1)并且至少一个其他副本(例如r2或r3或两者)不同意已投票的消息,则恢复变得必要(步骤2)。失配使投票器将投票挂起(步骤3),并向正投票的副本发送信号通知错误,其中的健康副本将检查错误(步骤4)并调用监管进行恢复(步骤5)。监管副本依次对投票器进行内省(步骤6),以如第8.1节所述地识别有故障的副本(步骤7)。识别后,监管副本可以重置有故障的副本的块以使副本复活,或者监管副本可以将副本重新定位到不同的块上,以防止在硬件级上持续发生故障或防止硬件级的受损(步骤8)。在监管复本投票以重置投票器(对于变体V3)或恢复投票(对于其他两个变体V1或V2)之后,可以修复的复本通过重新开始投票来继续进行。
[0364] 9反射复活(M.6)
[0365] 反射复活是反射式共识的一种应用,可通过将受损的副本重新引导到新的足够多样的实例中来修复受损的副本。与传统的BFT协议中的复活不同,反射复活的目标是对单独块的超低延迟重新引导和重新配置,而不是云场景中的整个服务器系统。此外,发明人旨在保留假设T2,即块内部的计算资源(核、加速器等)不一定是可靠的。因此,反射复活不依赖于块内部资源通过建立新副本状态的一系列步骤而执行。但是在块式架构中,如果发明人旨在同时保持值得信赖的组件尽可能简单以增加正确性假设(T2.b)的覆盖范围,则该序列自然地发生。例如,重新引导单个块的典型序列是停止块执行;将引导程序代码复制到块的本地存储器中;重新配置块的能力,以授予对要加载的系统映像的读取访问;使块启动执行引导程序代码。
[0366] 在芯片级,即当重新引导整个系统时,可以从ROM或从外部闪存存储器中提取引导代码,以允许更新引导代码。然而,获得对闪存的访问所需的BIOS代码的复杂性和紧密集成闪存和逻辑硬件进程的困难要求在重新引导单独块时采用不同的解决方案。反射复活通过允许副本通过一系列经投票的引导步骤进行过渡来提供此解决方案,这些步骤在达成共识之后将应用于复活的副本。
[0367] 如常规一样[参考文献14],发明人将被动复活和主动复活区分开。被动复活修复被肯定地确定为故障或受损的副本。因为可能损害最多f个副本(参见假设T4),在最大定额为n=2f+1的情况下,f+1个健康副本加上f-1个潜在故障或受损的副本(如果有的话)位于参与复活的副本集中(其中的健康副本旨在修复识别出的有故障的副本)。图31的左侧部分示出了对于f=2的f个故障或受损的副本(以红色显示)的最坏情况的这种情况。
[0368] 主动复活定期地修复副本,而不管它们是否已被识别为故障或受损的。通过主动地复活副本,系统限制了这些副本暴露给攻击者,并使对手可能已经了解这些副本的信息无用。图31的右侧部分示出了一种状况,其中,健康复本已复活,并且f个故障或受损的副本位于参与复活的副本集中。在这种情况下,健康副本不再在该集中占故障或受损副本的多数。反射主动复活仍然能够通过将错误情况反射回所有监管副本r1,…,r5来复活副本r1,以允许它们首先执行已阻止r1的主动复活的副本的被动复活。
[0369] 在下文中,发明人更详细地描述了反射被动和主动复活。
[0370] 9.1值得信赖的重置
[0371] 为了执行主动复活,发明人将Mon扩展为执行以下三个操作:
[0372] 1.经投票的抢占操作,用于在维持所有核的状态的同时停止所有核;
[0373] 2.经投票的重置操作,用于将引导程序核转移到固定的位置(或者对位置进行投票),从中启动执行引导代码的第一指令。重置有条件地执行,以限制块的核仍被抢占。如果不满足此约束,则重置返回错误;以及
[0374] 3.未经投票的重新开始操作,用于在核已被抢占的相同位置处使已被抢占的块的核继续。
[0375] 由于上述重置约束,重新开始的块不能重置,直到它们被再次抢占。此外,发明人将硬重置定义为原子(atomic)抢占和重置,并且将停止定义为非状态保留的抢占。停止的一种实现方式使块和该块中的所有核进入深度(即不一定是状态保留)睡眠模式。停止的另一更简单的实现方式是将所有核重定向到以该指令的地址为分支目标的转移指令。发明人允许块丢失引导代码以外的任何状态,发明人将引导代码复制到该块中的一些本地数据和指令存储器中。请注意,Mon不属于此块,因此不会受到深度睡眠模式的影响。如果块中的硬件正常工作,则发明人假设它遵守这些操作,此后更改存储器的唯一方式是通过Mon发出类似于DMA的存储器传输。尽管如此,发明人假设:Mon跟踪重新开始操作,并且还跟踪哪个源块发出了这种重新开始操作。这样,如果块的Mon已经重新开始,则无论块是否遵循抢占,重置都将失效。发明人返回第9.4节中失效的核处。
[0376] 反射被动复活将使用停止,然后进行硬重置以防止块避免复活,而反射主动复活则使用简单的抢占,然后如果尚未重新开始则进行重置,以防止资源耗尽。如果分歧投票以外的其他操作导致副本被怀疑是有故障的,则其他副本必须更小心的以被动地复活该副本,以解释(account for)怀疑健康副本的可能性。在这种情况下(即没有证据的怀疑),副本必须遵循反射主动复活协议,以便在f个其他副本显示自身有故障的情况下仍能够重新开始已复活的副本。现在,发明人更详细地描述这些协议。
[0377] 9.2反射被动复活
[0378] 如上所述,仅在可靠地将副本识别为有故障之后才应用反射被动复活(有关错误检测和副本识别,参见上文第8.1节)。在这种情况下,最大定额maxQ=2f+1个副本是活动的。在示例中,r1是要复活的副本。然后,复活的副本集Srej={r2,…,r2f+1}。在此集合中,最多容忍f-1个有故障的副本是故障或受损的,因为发明人已经识别出一个有故障的副本,并且算法最多容忍了f个这样的副本(参见假设T4)。
[0379] 图32示出了反射被动复活协议的序列图(对于f=2)。首先,复活的副本投票阻止副本的块复活(图32中的步骤1)。如果所有活动单元(即核、加速器、FPGA块等)停止执行代码,则块被停止。更准确地说,发明人假设,指令的这些部分和块的数据储存器不会改变,发明人将新的引导代码复制到数据储存器中,直到块经历硬重置而非通过该复制操作。在块被停止之后,副本对传输引导代码和初始的能力集进行投票(步骤2)。通过这些能力,副本将能够获得附加状态和其他能力(例如,与其他副本进行通信)。最后的投票(第3步)是对块执行硬重置。这种硬重置将导致至少一个核调用引导程序代码,根据块引导程序,该引导程序代码将重新激活其他核。
[0380] 现在,由于多达f-1个故障或受损的副本可以保留在Srej中,因此用于执行对要复活的块的停止和硬重置的重新配置投票,以及用于在引导代码中进行复制的消息传输可以被挂起并需要恢复。在投票器变体V1和V2、以及最大定额为maxQ=2f+1的情况下,Srej中的f+1或更多个健康副本可以通过重新开始投票来向前滚动所有投票。因此,在下文中,发明人将重点放在投票器变体V3上。
[0381] 为了向前滚动一个副本的恢复以便然后复活,并从而恢复任何其他失效的副本,Srej中的副本投票掩出那些阻碍协议过程的副本。这里得出的重要结论是,副本必须在投票中具有数据失配,以使整个协议不进行处理。然而,通过对投票器中的投票结构进行内省,允许副本识别有故障的副本。在有了这信息的情况下,副本就通过掩出任何其他已识别的有故障的副本来进一步减少Srej(参见图28中的步骤5,突出显示了反射共识恢复协议)。现在,由于每个挂起的投票,健康副本在最近maxQ=2f-1次重复之后识别出至少一个故障或受损的副本,因此所有可容忍的故障或受损的副本被识别出来,并且只要假设T4成立,待复活的副本(在我们的情况r1中)就将被复活。在副本复活r1之后,健康副本可以使所有副本被动地复活,这些副本在复活r1的过程中已被识别为有故障或受损。一旦在被掩出的副本上成功复活,健康副本就将投票以掩入此副本。
[0382] 9.3反射主动复活
[0383] 重要的是,仅对已被主动地识别为有故障的副本调用反射被动复活。发明人现在讨论的反射主动复活协议也可以在尚未将副本识别为可容忍的f个故障或受损的副本之一时使用。主动复活定期调用此协议。然而,正如发明人在上面看到的那样,如果怀疑有副本但没有被证明是有故障的,则在被动复活期间也将使用反射主动复活的协议。在最大定额为maxQ=2f+1个活动副本的情况下,执行主动复活。如果不是所有副本都是活动的,则健康副本将在启动反射主动复活协议之前激活它们。
[0384] 现在,本发明可能发现以下情况:只有Srej中的f个副本是健康的,并且多达f个副本是有故障的或已经受损(如图31的右手部分)。如果本发明复活的副本实际上是健康副本,则会发生这种情况。不幸的是,在没有值得信赖的投票器的可靠识别的情况下,发明人将不能得知待复活的副本是否健康。在这种情况下,无条件停止健康副本导致发明人资源耗尽,发明人可能会用尽足够的健康副本来胜过受损的副本。
[0385] 以下协议确保了复活过程在复活过程中的大部分期间是可逆的,以便在投票冲突的情况下,(健康)副本可用于重新建立维持多数的投票定额,直到复活过程可以可靠地向前滚动的时间点(即直到不再需要更多投票来完成复活的时间点)。这意味着,尽管在预定的最大时间段内,主动复活是可以推迟的。
[0386] 图33示出了反射主动复活的序列图。为了不丢失待复活的副本(在示例r1中)以供后续的多数投票,该协议从抢占r1的块启动(图33中的步骤1)。因为与停止的块不同,抢占的块保留其所有状态,所以重新开始操作会将此副本带回到之前的状态,从此状态启动,健康副本将参与恢复。现在,抢占并假设r1的块的硬件是正确的,但只有通过Mon执行类似DMA的操作,才会发生存储器变化。在这些假设下,通过将新的引导代码复制到正常操作期间副本不需要的存储区域中,可以安全地执行与被动复活相同的步骤。在此步骤中,副本还提供有继续重新引导所需的能力。同样,这些能力存储在能力寄存器的子集中,在该副本的恢复期间未使用这些能力寄存器。因此,在重新开始时,副本的旧状态(可能还有新状态的部分)将已驻留,并可用于协助恢复过程。现在,如果所有这些投票(包括以下投票)都成功了(即,所有有故障的副本均未提出分歧消息),则将通过对引导代码进行投票重置来完成复活(步骤3)。从现在开始,不再需要旧状态,并且副本将在提供的初始能力的帮助下进入所需状态。复活成功。
[0387] 然而,如果步骤1、步骤2或步骤3中的投票之一失效,则任何投票的副本都可以通过重新开始待复活的副本(r1)以重新创建最大定额n=2f+1来启动该失效的投票的反射恢复过程,其中的最多f个副本有故障或受损。但是现在,为了使这种投票失效,故障副本之一必须产生分歧投票,否则r1将会复活。但这只有通过发布分歧消息才有可能,值得信赖的投票器将检测到该消息。在重新开始之后,f+1或更多个健康副本的子集将可靠地识别此分歧副本。在这种情况下,将推迟主动复活,并立即尝试对后者(分歧的,因此是有故障的)副本进行被动复活,然后重新开始主动复活。因为每次主动恢复失效,至少都会识别出一个故障或受损的副本,最后在f个重复之后,主动复活成功。
[0388] 9.4反射重新定位
[0389] 在先前两节中,发明人假设要复活的块的硬件正常工作。现在,尽管在f的范围内同时存在故障或受损的副本,但发明人希望预见到硬件级的故障和损害,因此该假设当然是不合理的。因此,在被动地或主动地使块复活之后,由于持续的硬件故障或硬件级的损害,块本身可能仍然受损。因此,如果副本经历或怀疑块的连续故障,则副本通过以下重新定位协议来使永久损坏的块静默,并将(监管)副本移动到不同的块。
[0390] 发明人假设重新定位仅以被动方式发生。也就是说,重新定位块的集Srel由至少f+1个健康的副本加上最多f-1个故障或受损的副本组成。对于此大多数健康副本,执行投票以使静默,然后进行一系列能力创建投票以获取对新块的重新配置特权。之后,执行反射被动复活的步骤,以将丢失的副本安装在新选择的块上。如同重置一样,静默是由Mon解释的经过投票的重新配置消息,该消息指示切断块与片上网络之间的所有通信。该系统可以经受住持续的攻击,直到没有该块在硬件级没有受损害或有故障的块为止,当然,前提是硬件级的故障和损害符合独立性假设。
[0391] 10定额弹性(M.3)
[0392] 所有三种投票器类型的定额配置寄存器,以及使用具有更多内置消息缓冲区和投票结构的不同投票器的可能性,允许调整容忍的故障和损害的数量f,包括监管副本的故障和损害。以下协议确保:
[0393] 1.监管复本控制所有重新配置投票器;以及
[0394] 2.在协议过渡到新的定额之后,重新配置投票器的定额不低于当前的风险水平(以容忍的故障数f表示)。
[0395] 第二属性对安全性至关重要,因为如果留下的重新配置投票器的定额为f'+1,而系统处于f>f'+1个故障的状态时,则该投票器的出色能力可以使有故障的副本访问此Mon的能力创建能力,从而也访问所有系统资源。
[0396] 10.1定额增加/减少
[0397] 执行定额增加/减少的两个必要步骤是:
[0398] 1.将所有重新配置投票器重置为fmax+1副本的其初始定额,并使所有引用投票器的突出能力,除了用于重新配置监管副本的能力无效,反射共识的设置(见图26);以及[0399] 2.调整重新配置投票器的定额,以获得反射共识,以匹配所需的风险水平。
[0400] 为了减小定额大小,必须按上述次序执行上述两个步骤,因为否则,将存在太少的管理员副本来执行此更改。为了增加定额大小,以相反的次序执行请求是有目的/有利的,以快速受益于监管模式的其他副本。此外,在调整单独的投票器之前首先调整反射共识定额避免了已投票的定额复制操作的竞态条件,这在前面的第7.1节中进行了讨论。然而请注意,上述风险仍然存在,直到完成两个步骤。
[0401] 第一步是要求监管副本进行一系列投票操作,每个操作首先将投票器重置为初始最大定额为fmax+1,然后逐个地使监管中的这些投票器(和其他)的所有突出能力无效,并且本发明使用相同的算法来调整消息投票器副本的定额。由于监管可以按投票过程创建能力,因此无需保留非监管块中的重新配置投票器的更多能力,并且由于在创建了此类能力之后,监管能够复制其定额,因此无需在不久的将来不活动地(actively)使用其他副本时保留配置的其他副本的复制。
[0402] 为了增加定额大小,第二步骤是分配新的监管副本块并重新配置其Mon以扩展图26的结构。由于副本一旦增加就失去了复制较小定额的才能,因此在调整现有监管块的定额之前,必须完成新块的重新配置。缩小定额大小更简单,因为可以使用其他副本以原始定额大小f+1进行投票。然而,必须注意不要接管有故障的副本,因为这些有故障的副本可能是新的较小定额大小中的多数。因此,最好紧接在所有副本复活之后,收缩定额。
[0403] 11本发明(第二发明)与现有技术的比较
[0404] 现在将在现有技术(例如参考文献15)和本发明(第二发明)之间进行比较。
[0405] 图34(a)图示了根据现有技术的示例(票务)布置(参见Miltos等人[参考文献15])。图34(b)图示了现有技术的问题,即随着时间的流逝,将核用于其他用途。
[0406] 图34(c)图示了根据现有技术的解决方案,即找到所有客人并使门票无效。
[0407] 图34(d)和图(e)图示了根据本发明的解决方案,即将“软件A”编码为能力。软件A可以方便地称为计算资源或标签的数字表示。
[0408] 12本发明(第一发明)与现有技术的比较
[0409] 现在将在现有技术(例如参考文献15和16)和本发明(第一发明)之间进行比较。
[0410] 参照图35(a),在关于防火墙的现有技术中,计算机设置在发送器和接收器之间。通过查找特定于发送器的规则、检查访问并转发请求,可以截获消息。防火墙没意识到运行接收器的软件。
[0411] 参照图35(b),在本发明中提供了Mon。涉及两个Mon,发送器Mon和接收器Mon。关于发送器,提供了能力单元。通过将请求转发到接收器Mon来检查权限。
[0412] 关于接收器,将进行对软件堆栈匹配预期堆栈(标签)的验证。没有更多的用于非投票能力的访问检查。对于投票访问,本发明收集投票。施加同意的操作;提供恢复信息。
[0413] 图36(a)和图(b)图示了根据现有技术的投票系统。
[0414] 图36(c)图示了根据本发明的投票系统。参考图37,图示了可以体现本发明的多种方式。
[0415] 参照图38,图示了一种访问管理器,其体现为与与其相关联但不是其一部分的计算单元分离的硬件项、以及外部访问管理器如何抵抗对这种内部资源的访问。
[0416] 参照图39,示出了在计算单元主动大多数对至少一个请求提供相同响应的情况下,访问管理器仅如何允许对至少一个请求的响应。如图所示,在相对较长的时间段内接收到的响应就是这种情况。
[0417] 13在局域网/广域网(LAN/WAN)中使用Mon
[0418] 图40示出了根据本发明的Mon在分布式系统中的示例使用。示出的是直接访问资源的调用部分(参见第5.0.1节)。其他场景,例如包括建立新能力的远程Mon重新配置,也以类似的方式工作。该设置示出了两个节点:左边的客户端节点由双核系统和网络接口卡(NIC)组成,以及右边的服务器节点由相似的组件组成。发明人区分两种类型的网络:连接每个节点中的Mon的片上网络(单实线)、以及连接节点的局域网(LAN)或广域网(WAN)。NIC以通常的方式与LAN/WAN对接,并且设置可以包括常规的网络基础设施组件(包括防火墙、交换机等)。
[0419] 为了调用资源提供方A的资源R,客户端调用其本地Mon中的能力(参见步骤(1))。调用如第5.0.1节中所述,不同之处在于,由于LAN/WAN本身并不可靠,因此客户端Mon与资源提供方Mon之间的通信被序列化并受到密码保护(例如,通过使用公共密钥加密来对消息进行加密和签名)。这样的序列化消息被发送到本地节点(2)的网络堆栈,该网络堆栈通过将其能力调用到NIC(3)来通过LAN/WAN传输它。加密确保了网络堆栈和NIC都看不到内容,并且加密的哈希的签名确保了能够检测到对消息的修改。
[0420] 在目标节点处,NIC通过将受密码保护的消息发送到网络堆栈(5)来逆反该过程,网络堆栈将该消息转发到资源提供方(6)的Mon。在那里,如第5.0.1节中的描述,对消息进行验证,解密和处理。即,检查能力中的标签以匹配当前资源提供方(即“A”),如果是,则执行对资源R的访问。因为步骤(2)和(6)构成了最新的序列化和反序列化操作,并且因为除了网络堆栈和NIC的能力调用之外(步骤(3)和(5)),消息传输遵循标准协议,所以不要求将节点到节点的通信作为本发明的一部分,而是包括该示例以说明如何将基于Mon的访问控制扩展到更松散耦合的系统。在经投票的操作的情况下(参见第5.0.2节)以及在Mon重新配置的情况下(参见第5.0.3节),反序列化消息是一个副本的贡献。使用的投票器将保留此消息,直到达到匹配投票的定额为止。在这种情况发生之前,除非中止投票(以及例如稍后重试),否则不能将投票器用于不同操作。Mon的其他投票器在此期间仍然有效。从资源提供方的Mon到客户端的Mon的回复执行相同的步骤(2-6),但方向相反。
[0421] 将理解的是,上文描述的本发明的实施例仅通过示例的方式给出,并且不意味着以任何方式限制本发明的范围。
[0422] 例如,上述每个投票器变体都有关于以下项的部分:错误处理和错误报告的部分,其描述了如何设置定额大小(即必须同意的副本数f+1);耦合单元的行为;请求计算访问管理器重复/重新评估投票(挂起=0/1);以及读出投票状态的能力。对于V1,是第6.1.3和6.1.4段;对于V2,是第6.2.3段;以及对于V3,是第6.3.3段。
[0423] 反射共识在第8段中涉及;第9段中的反射复活和第10段中的定额弹性。
[0424] 应当理解,上文描述的任何特征和/或技术变体,例如A1至A3、M.1至M.9、或V1至V3,可以单独地或与其他特征、技术和/或变体中的一个或多个组合地以本发明的一个或多个实施例实现。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈