首页> 中国专利> 用于基于秘密共享的多方计算的装置

用于基于秘密共享的多方计算的装置

摘要

本发明提供一种基于秘密共享的MPC,在其运用中可进一步提高对数据泄露的安全性。装置是参与基于秘密共享的多方计算的装置。当将装置拥有的份额和其他装置拥有的对应的份额合起来时,就能够恢复原始数据。装置包括:取得随机数的单元、基于所取得的随机数来更新装置的份额的单元。进行更新的单元的更新方法设计为,当将基于所取得的随机数而更新了的装置的份额、和基于该随机数而更新的其他装置的对应的份额合起来时,该随机数的影响就会相互抵消,原始数据被恢复。

著录项

  • 公开/公告号CN113268744A

    专利类型发明专利

  • 公开/公告日2021-08-17

    原文格式PDF

  • 申请/专利权人 株式会社野村综合研究所;

    申请/专利号CN202010186400.1

  • 发明设计人 川口将司;

    申请日2020-03-17

  • 分类号G06F21/60(20130101);G06F21/62(20130101);G06F16/176(20190101);

  • 代理机构11322 北京尚诚知识产权代理有限公司;

  • 代理人龙淳

  • 地址 日本东京都

  • 入库时间 2023-06-19 12:14:58

说明书

技术领域

本发明涉及保持用于基于秘密共享的多方计算的份额的装置。

背景技术

可持续的开发目标(Sustainable Development Goals,SDGs)是以可持续和更好的世界为目标的国际目标。SDGs是不仅发展中国家,就连发达国家自身也都在努力争取的通用目标,我国的外交部正在推进这项举措。

所谓大数据的运用,一方面作为有助于SDGs的实现的要素而被人们所认识,另一方面在存在“人权”或“隐私”的风险方面也被人们所认识。认为假如能够兼得大数据的运用和保护隐私这两者,就能够在产生经济价值的同时还会产生社会价值。

作为推进数据运用的例子,可举出数据的第三方提供。对有可能从被提供的数据中确定出个人的数据,常常实施假名化/匿名化等对策。但是,在这些方法中,不得不进行数据的有用性和隐秘性的折衷。即,被迫做出是牺牲隐私保护的强度而得到精度高的总计结果,还是相反地优先保护隐私而放弃总计结果的精度的选择。

作为消除这种二律背反的问题,且支撑经济价值、社会价值的创新的技术,有“秘密计算”(参照非专利文献1)。秘密计算是能够在隐藏输入值的状态下进行计算的技术。通过该技术,能够将上述的此消彼长状况变成两者兼顾(トレードオン)。

另外,在实现数据广泛运用的社会的过程中,机构中的数据管理责任问题引起了很大关注。例如,过去有几个机构对数据的不正当处理已经被视为问题,数据主体即消费者也大多很难判断向其提供自己的数据的地方是否为可靠的机构。另一方面,对于一个机构来说,也会因为通过经由业务或服务而累积的数据的泄露,不仅导致经济损失,还会有失社会信用。为了构筑可持续的业务环境,不仅需要努力通过机构能力或管制来提高可靠度,而且还需要进行用于不降低可靠度的根本性的技术革新。“秘密计算”就是为此做出贡献的一种手段。

现有技术文献

非专利文献

非专利文献1:

URL:https://www.jstage.jst.go.jp/article/isciesci/63/2/63_71/_pdf,2020年1月29日检索

发明内容

发明所要解决的问题

如上所述,如果导入秘密计算的机制,则既能够减轻数据泄露的风险,又能够进行精确的数据分析。但是,如从这几年发生的各处的大数据泄露事件中看到的那样,攻击越来越巧妙化、大规模化,所以要求进一步提高安全性。

本发明是鉴于这样的问题而完成的,其目的在于,提供一种基于秘密共享的多方计算(MPC),其是秘密计算技术中的一种,能够进一步提高对数据泄露的安全性。

用于解决问题的技术方案

本发明的一个方式涉及一种装置。该装置是参与基于秘密共享的多方计算的装置。当将装置拥有的份额和其他装置拥有的对应的份额合起来时,就能够恢复原始数据。装置包括:取得随机数的单元、基于所取得的随机数来更新装置的份额的单元。进行更新的单元的更新方法设计为,当将基于所取得的随机数而更新了的装置的份额、和基于该随机数而更新的其他装置的对应的份额合起来时,该随机数的影响就会相互抵消,原始数据被恢复。

此外,将以上构成要素的任意组合、本发明的构成要素或表达在装置、方法、系统、计算机程序、保存计算机程序的记录介质等之间相互替换所得的方式作为本发明的方式也是有效的。

发明效果

根据本发明,在秘密计算中的一种即基于秘密共享的多方计算中,能够进一步提高对数据泄露的安全性。

附图说明

图1是表示2-out-of-2秘密共享后的数据的示意图。

图2是表示2-out-of-3秘密共享后的数据的示意图。

图3是实现基于秘密共享的MPC的系统的示意图。

图4是用于对基于秘密共享的MPC的加法器的处理进行说明的示意图。

图5是表示基于秘密共享的MPC的乘法器中使用的Beaver三元组(ビーバーズトリプル)的概要的示意图。

图6是用于对基于秘密共享的MPC的乘法器的处理进行说明的示意图。

图7是表示服务器辅助模型的概要的示意图。

图8是表示客户端辅助模型的概要的示意图。

图9是对发生泄露的第一模式进行说明的示意图。

图10是对发生泄露的第二模式进行说明的示意图。

图11是用于对实施方式的基于秘密共享的MPC的概念进行说明的示意图。

图12是对本实施方式的基于秘密共享的MPC的安全性的依据进行说明的示意图。

图13是表示实施方式的基于秘密共享的MPC系统的结构的示意图。

图14是图13的环境A装置的硬件结构图。

图15是表示图13的环境A装置的功能及结构的方框图。

图16是表示图15的份额保持部之一例的数据构造图。

图17是表示图15的访问履历保持部之一例的数据构造图。

图18是表示图13的基于秘密共享的MPC系统的一系列处理的流程的流程图。

图19是对本实施方式的基于秘密共享的MPC系统的可追溯性的提高进行说明的示意图。

图20是用于对本实施方式的基于秘密共享的MPC的应用例进行说明的示意图。

图21是表示变形例的基于秘密共享的MPC的构思的示意图。

图22是表示与图21对应的份额值的变化的示意图。

图23是表示乘法器的计算过程之一例的图。

图24是表示图10的补充信息的图。

图25是表示两方之间的随机数生成(环境A视点的流程)的图。

图26是表示基于以太坊(Ethereum)的交易的散列值(哈希值)的随机数生成的图。

附图标记说明:

54:随机数生成机构;70:基于秘密共享的MPC系统;72:环境

A装置;74:环境B装置。

具体实施方式

下面,对各附图所示的相同或同等的构成要素、部件、处理标注相同的符号,适当省略重复的说明。另外,在各附图中,省略了在说明上不重要的一部分部件的图示。

<秘密共享法的概要>

秘密共享法是指将数据分割为两个以上,如果收集了阈值(一定数量)以上的分割后的数据,则能够恢复原始数据的方法。将分割后的值称为“份额”或“符契(割符(わりふ、わっぷ))”。秘密共享技术的ISO标准在ISO/IEC 19592-2:2017中有所规定。秘密共享法的优点在于,通过各份额被保存于不同的存储区域,即使是不正当地取得了低于阈值的份额,也不可能恢复原始数据。

在秘密共享法中存在将数据分割为N份(N是2以上的整数),如果收集了其中的T(T是2以上N以下的整数)个,则能够恢复原始数据的安装,将该方法称为阈值法。作为阈值法,有例如T-out-of-N秘密共享(也称为(T、N)秘密共享)。T-out-of-N秘密共享的机制是,即使N个中的(T-1)个被盗,也能够保持机秘性(=秘密不会泄露),且即使损坏到(N-T)个,也能够维持完整性(=不会损害可恢复性)。

图1是表示2-out-of-2秘密共享后的数据的示意图。在该方案中,数据2被分割为两个份额4、6,通过收集这两个份额4、6,可恢复原始数据2。下面,对加法型秘密共享法时的份额的生成进行具体说明。设希望保密的数据2为d。首先,生成随机数,设该随机数为r。设r为第一个份额(份额4)。设(d-r)为第二个份额(份额6)。在大多数情况下,份额值作为在某有限元集合上表达的离散数据来表达。简单地说,在进行份额化以前,决定除数(法の値),并使用随机数将其分割为目标个数,然后用除数值分别对它们进行取余(模运算、%或mod),求出份额值。在通常情况下,大多省略了取余的描述,本说明书除了一部分以外,也依此进行。

·当将两个份额相加时,就成为份额4+份额6=r+(d-r)=d,数据2(d)恢复成功。

图2是表示2-out-of-3秘密共享后的数据的示意图。在该方案中,数据8被分割为三个份额的对值10、12、14,如果收集这三个份额的对值10、12、14中的两个,则可恢复原始数据8。下面,对加法型秘密共享法时的份额的生成进行具体说明。设希望保密的数据8为d。

·与2-out-of-2秘密共享同样地,将数据8分割为两个份额。为了简单起见,将(r、d-r)分别称为s1、s2。

·在本地生成两个随机数,分别设为r1、r2。

·针对各环境提供以下份额的对值(2-元组)。不管是传递到哪种环境的对值(ペア値),仅据此都不能恢复原始数据8。

·(a1=s1+r1、a2=s2-r2)

·(b1=s1+r2、b2=s2-r1-r2)

·(c1=s1+r1+r2、c2=s2-r1)

·在这种情况下,如果将任意两组环境具有的对值中的单个值彼此相加,则能够恢复原始数据8。即,a2+b1=s1+s2=d、a1+c2=s1+s2=d、b2+c1=s1+s2=d。

此外,秘密共享的份额化不限于由加减法运算实现的份额化,例如也可以通过异或运算来实施。在这种情况下,将份额分为(随机数Q)和(原始数据^随机数Q)(“^”表示异或运算符)。当进行验算时,就成为(随机数Q)^(原始数据^随机数Q)=原始数据。在本说明书中,用基于加减法运算的表达进行统一。

<基于秘密共享的多方计算的概要>

基于秘密共享的多方计算(Multi-Party Computation,MPC)是通过将秘密共享后的数据直接用于计算来实现秘密计算的方法,在本说明书中,称为“基于秘密共享的MPC”。在基于秘密共享的MPC中,通过准备加法器和乘法器,来实现功能完整性(FunctionalCompleteness)。此外,在下面的说明中,为了简单起见,以基于加减法运算的加法型秘密共享法为前提进行说明,而不是基于异或运算。

图3是实现基于秘密共享的MPC的系统16的示意图。在实现基于秘密共享的MPC的系统16中,会产生非常大量的进行计算的装置彼此的通信。在图3的例子中,在分享份额的P环境18和Q环境20之间,会产生大量的用于进行秘密计算的通信。因此,通信性能成为决定基于秘密共享的MPC的性能的较大原因。因此,如何抑制回合数、通信量、通信次数成为课题,另外,如何提高通信速度、如何使通信并行化成为课题。

图4是用于对基于秘密共享的MPC的加法器的处理进行说明的示意图。秘密的提供方(数据收集平台)即两个客户端22、24分别具有第一秘密数据26、第二秘密数据28。第一客户端22通过将第一秘密数据26分割为两份,生成两个份额26a、26b,分别提供(例如上传)给数据分析平台的第一装置30(例如服务器)、第二装置32。第二客户端24通过将第二秘密数据28分割为两份,生成两个份额28a、28b,分别提供给第一装置30、第二装置32。

第一装置30通过将所提供的份额26a和份额28a相加,生成第一和份额34a。第二装置32通过将所提供的份额26b和份额28b相加,生成第二和份额34b。计算结果的利用方的装置36通过取得第一和份额34a和第二和份额34b并将两者相加,生成和数据34。根据份额的定义,和数据34成为第一秘密数据26和第二秘密数据28之和。这样,装置36即使不知道第一秘密数据26或第二秘密数据28,也能够计算它们的和。

图5是表示在基于秘密共享的MPC的乘法器中使用的Beaver三元组的概要的示意图。Beaver三元组(Beaver’s Triple,BT)是每次利用乘法器都被一次性使用的值。每进行一次乘法运算,都一次性使用一组BT。如果再次利用,就有可能损害安全性,因此不进行再利用。BT由满足c=a×b(c是a和b的相乘结果)的(a、b、c)这样的三个值的组构成。在图5的例子中,在8比特环境(256为除数)中,成为a=47、b=93、c=19。当为了促进理解而进行验算时,c=19是(a×b)=(47×93)%256=19=c的缘故。BT的各值在用随机数被份额化以后,分发给进行计算的装置。在图5的例子中,c=19被分割为187和88。当将这两个份额合起来时,就成为(187+88)%256=19,原始的c=19得以恢复。关于a、b,也是同样的。以下,将生成BT的阶段称为“脱机阶段”。也可以在实施计算之前预先创建并储存BT。

图6是用于对基于秘密共享的MPC的乘法器的处理进行说明的示意图。通过脱机阶段的BT生成,作为三个值38、40、42的组生成BT。

第一客户端通过将第一秘密数据分割为两份,生成两个份额26a、26b,分别提供给数据分析平台的第一装置30、第二装置32。第二客户端通过将第二秘密数据分割为两份,生成两个份额28a、28b,分别提供给第一装置30、第二装置32。第一装置30一并取得BT的份额38a、40a、42a,第二装置32取得BT的对应的份额38b、40b、42b。

如图23所示,第一装置30通过对所提供的份额26a、28a、38a、40a、42a进行包含与第二装置32的通信在内的规定的处理,生成第一积份额44a。第二装置32通过对所提供的份额26b、28b、38b、40b、42b进行对应的包含与第一装置30的通信在内的规定的处理,生成第二积份额44b。第一装置30和第二装置32在上述的算术处理的过程中进行通信,共享中间值。计算结果的利用方的装置36根据第一积份额44a和第二积份额44b,生成积数据44。这样,装置36即使不知道第一秘密数据或第二秘密数据,也能够计算它们的积。

<基于秘密共享的MPC的安装模型>

生成BT的模型可实现几个类型化。例如可如下那样将具有希望隐匿的数据的份额值的装置、和不具有希望保密的数据的份额值但有助于BT生成或计算的第三方装置分开来考虑,并通过各自的作用要发挥到哪里来大致区分开来。

·仅在两者间生成BT的模型(例如,基于通信丢失或同态加密的模型)。该模型在计算量或通信方面,成本比较高。但是,因为可保持2-out-of-2秘密共享的机秘性,所以比后续的客户端辅助模型或服务器辅助模型更加牢固。

·Client-Aided(客户端辅助)即作为第三方的客户端生成BT的模型。在该模型中,将BT生成的权限委托给数据的提供方自身即客户端。也有进行参与的客户端越多越分权这样的看法,生成BT的计算负荷也被分散。如后所述,通过包含客户端在内的三方中的两方发生了背信弃义(=助力攻击),秘密就会泄露。即,比仅在两者间生成BT的模型的机秘性更差。

·Server-Aided(服务器辅助)即作为第三方的服务器生成BT的模型。在该模型中,除了承担计算的2者以外,还向第三方委托BT生成的权限。与客户端辅助模型相同,因包含服务器在内的三方中的两方发生了背信弃义,秘密就会泄露。即,比仅在两方间生成BT的模型的机秘性还差。

图7是表示服务器辅助模型的概要的示意图。在服务器辅助模型中,与第一装置30和第二装置32都不同的置于第三方环境中的服务器46生成BT(值38、40、42的组)。服务器46将所生成的BT份额化,将份额中的一方提供给第一装置30,将份额中的另一方提供给第二装置32。

图8是表示客户端辅助模型的概要的示意图。在客户端辅助模型中,第一客户端22从第一装置30、第二装置32的双方接收认证。认证完毕的第一客户端22生成BT(值38、40、42的组)。第一客户端22将所生成BT份额化,将份额中的一方提供给第一装置30,将份额中的另一方提供给第二装置32。

<保持基于秘密共享的MPC的安全性的条件>

在基于秘密共享的MPC中,恢复原始数据的模式,即发生泄露的模式有以下两种。

图9是对发生泄露的第一模式进行说明的示意图。在第一模式中,攻击者收集双方的份额,恢复原始数据。例如,攻击者以不正当的手段取得将原始数据(值:13)分割而生成的两个份额(值:189和值:80)。攻击者通过将这些份额合起来((189+80)%256=13),能够恢复原始数据。

图10是对发生泄露的第二模式进行说明的示意图。在第二模式中,在相乘过程中,攻击者收集BT和相乘过程,恢复原始数据。作为一例,图24具体地表示通过BT生成方和环境A相互勾结而发生的秘密的恢复。图10、图24的数值是基于图23的数值所得的。

假设将原始数据1(值:13)分割为份额1-1(随机数值:242)和份额1-2(随机数值:27),将原始数据2(值:17)分割为份额2-1(随机数值:213)和份额2-2(值:60),将BT3(随机数值:11)分割为份额3-1(随机数值:56)和份额3-2(值:211),将BT4(随机数值:205)分割为份额4-1(随机数值:240)和份额4-2(值:221),将BT5(值:207)分割为份额5-1(随机数值:129)和份额5-2(值:78)。攻击者可得到在乘法器的计算过程中得到的份额1-1和BT3-1之和((242+56)%256=42)、份额1-2和BT3-2之和((27+211)%256=238)、份额2-1和BT4-1之和((213+240)%256=197)、份额2-2和BT4-2之和((60+221)%256=25)、以及BT3、BT4。这时,根据从份额1-1和BT3-1之和(计算结果:42)与份额1-2和BT3-2之和(计算结果:238)的和中减去BT3(值:11)所得的差((42+238-11)%256=13),能够恢复原始数据1(值:13)。同样,根据从份额2-1和BT4-1之和(计算结果:197)与份额2-2和BT4-2之和(计算结果:25)的和中减去BT4(值:205)所得的差((197+25-205)%256=17),能够恢复原始数据2(值:17)。

在客户端辅助和服务器辅助模型中,满足这两个模式中的任一个模式的是包含BT的生成方在内的三方中的两方发生了背信弃义的情况。在仅在两方间生成BT的模型中,是两方中的两方都发生了背信弃义的情况。

<实施方式的基于秘密共享的MPC的概念>

在实施方式的基于秘密共享的MPC中,作为应对由参与计算的参与者相互勾结导致的秘密泄露的对策,在参与到基于秘密共享的MPC中的各环境中定期地更新份额值。由此,能够提高安全性和可追溯性。

图11是用于对实施方式的基于秘密共享的MPC的概念进行说明的示意图。在本实施方式中,设置周期地(例如,定期地)生成随机数56的随机数生成机构54。由该随机数生成机构54生成的随机数56与利用图1或图2已说明的用于生成份额的随机数不同,与BT也不同。以下,将由随机数生成机构54生成的随机数56称为份额更新用随机数。

图25表示随机数生成机构54的实现方法的例子。通过具有解密所需要的份额值的所有环境彼此来实现。如果该范围基于图11的方式,则“所有”指的是环境A和环境B,对于环境A而言的“自身以外的所有”是指环境B,对于环境B而言的“自身以外的所有”是指环境A。所有装置自身随机地选择数字(生成随机数值)。将此时确定出的数字称为份额更新用随机数种子。在生成了公开密钥加密(非对称密钥加密)的公开密钥、秘密密钥以后,在对份额更新用随机数种子应用了散列函数等不可逆处理所得的输出值上用秘密密钥签名。将签名后的值和公开密钥的对称为种子验证值。

首先,将种子验证值发送给自身以外的所有装置。然后,如果从自身以外的所有装置获取了种子验证值,则与发送源对应地保持各自的种子验证值。从自身以外的所有装置获取了种子验证值的装置向自身以外的所有装置发送自身的份额更新用随机数种子。获取了自身以外的所有份额更新用随机数种子的装置使用相同发送源的种子验证值的公开密钥来认证所获取的份额更新用随机数种子。

在任何认证失败的情况下,开始进行例外处理。作为例外处理的例子,例如也可以中止份额的更新处理。

相反,在所有认证都成功的情况下,将所获取的所有份额更新用随机数种子合计加在一起。将该合计值、或对合计值应用了散列函数等不可逆处理所得的输出值称为暂定份额更新用随机数。向自身以外的所有装置提供暂定份额更新用随机数。同时,从自身以外的所有装置获取暂定份额更新用随机数。在所有暂定份额更新用随机数都一致的情况下,将该值正式作为下次更新用的份额更新用随机数。

下面,对到此为止的顺序的代替方案进行描述。也具有在所有环境中的K方(K是1以上N以下的整数)或其他环境中使例如具有辅助BT的生成或计算的作用的装置生成份额更新用随机数的方法。但是,通过K方的环境或其他环境相互勾结,且在K方上的装置中将与作为攻击对象的秘密关联的份额值的合计制成任意值(例:0),如果再加上其余的(N-K)个环境上的份额,就能够解码秘密。以图11为例,如果能够有意地将环境A上的份额制成0,则能够使环境B上的份额与原始数据(=秘密)等效。换句话说,如果在份额的更新前,环境A侧的攻击者向环境B侧的某人预告在下次的份额的更新后在环境B上要恢复秘密,则在下次的份额的更新后,环境B侧的攻击者仅访问环境B侧,就能够获得秘密。该状况的不利之处在于如下这方面,即,在攻击者的意图下可实现仅访问恢复了秘密的环境就会泄露秘密的状况,导致利用后述的访问履历的可追溯性无效化。因此推荐采用在低于N的环境的意图下不被操作的随机数值的生成方法。当然,如上述的例子所述,既使是整个N都达成协议的随机数值,通过在N内的各环境中存在可操作随机数的攻击者,也能够进行同样的攻击。因此,更优选使通过如下单元而取得的随机数与份额更新用随机数种子的合计值进行规定的计算(例:加减法运算),该单元是保有份额的当事者可同等地访问,且不夹杂保有份额的当事者的意图的单元。作为一例,如图26所示,如果允许从所有环境直接连接到以太网,则考虑根据如以太坊(Ethereum)那样的公共区块链保持的交易的散列值来得到随机数的单元。为了对份额更新用随机数赋予不可预测性,所有环境从未来的区块高度(Block Height)得到随机数,而不是获取种子验证值在从该区块高度经过了几个块(Confirmation,确认)之后,所有环境收发份额更新用随机数种子。

在容许了上述担忧以后,如果容许例如在N处中的小于T处同时发生了访问时也设为跟踪对象之类的运用,则也可以使用小于N的环境都能达成协议的随机数生成单元。

将原始数据58分割为两个份额58a、58b,秘密共享给各不相同的环境A、环境B。环境A、环境B通过随机数生成机构54,在规定的时刻,获得相同的份额更新用随机数56。获得了份额更新用随机数56的环境A、环境B进行通信,互相确认份额更新用随机数56。即,通过在保持份额的所有环境彼此间互相确认份额更新用随机数,能够防止由份额更新用随机数56的不一致造成的数据的损坏。

在环境A中,作为份额的更新处理,通过份额58a加上份额更新用随机数56,生成新的份额60a。在环境B中,作为份额的更新处理,通过份额58b减去份额更新用随机数56,生成新的份额60b。当环境A的新的份额60a和环境B的新的份额60b相加时,份额更新用随机数56的影响就相互抵消,原始数据58得以恢复。即,成为:

份额60a+份额60b=(份额58a+份额更新用随机数56)+(份额58b-份额更新用随机数56)=份额58a+份额58b=原始数据58。

这样,即使通过份额更新用随机数56来更新份额,也不会损坏原始数据,也不会给基于秘密共享的MPC造成障碍。

在图11所示的本实施方式的基于秘密共享的MPC中,只要对环境A、环境B双方的攻击在同时特别是在同一期间(即,从用相同的份额更新用随机数56进行了加法运算/减法运算的时刻到发生下次更新的期间)都不成功,就无法暴露秘密。由此,能够对攻击施加强烈的制约。

图12是对本实施方式的基于秘密共享的MPC的安全性的依据进行说明的示意图。假设攻击者62在某时刻对环境B的攻击已成功,且取得了环境B在该时刻所拥有的份额58b。而且,假设攻击者62在跨过了份额值的更新的另一时刻对环境A的攻击已成功,且取得了环境A在另一时刻所拥有的份额60a。攻击者62尝试根据已取得的两个份额58b、60a来恢复原始数据58,但因为已经实现了基于份额更新用随机数56的份额值的更新,所以其恢复不会成功。这样,在本实施方式的基于秘密共享的MPC中,即使双方的份额都泄露,如果泄露的时刻充分错开,则也不能恢复原始数据。

<实现实施方式的基于秘密共享的MPC的系统的详细说明>

图13是表示实施方式的基于秘密共享的MPC系统70的结构的示意图。基于秘密共享的MPC系统70具备:随机数生成机构54、设置于环境A的环境A装置72、设置于环境B的环境B装置74。随机数生成机构54、环境A装置72、环境B装置74经由以太网等网络进行通信。虽然在图13中未图示,但基于秘密共享的MPC系统70是具有客户端等其他要素的,这对接触过本说明书的本领域技术人员来说是会理解的。

环境A、环境B是互不相同的环境,例如环境A、环境B也可以是由互不相同的主体来管理、运用的云服务器群。环境A装置72、环境B装置74都参与到实施方式的基于秘密共享的MPC中。当将环境A装置72拥有的份额和环境B装置74拥有的对应的份额合起来时,就能够恢复原始数据,但仅凭一方的份额不能恢复的秘密的分散要通过上述的机构来实现。

图14是图13的环境A装置72的硬件结构图。环境B装置74、随机数生成机构54也可以具有与图14记载的硬件结构同样的硬件结构。环境A装置72包括:存储器130、处理器132、通信接口134、显示器136、输入接口138。这些要素分别与总线140连接,经由总线140而相互通信。

存储器130是用于存储数据或程序的存储区域。数据或程序也可以恒久地存储于存储器130,还可以暂时地存储。处理器132通过执行存储于存储器130的程序,来实现环境A装置72的各种功能。通信接口134是用于在与环境A装置72的外部之间进行数据的收发的接口。例如,通信接口134包含用于访问网络的接口,经由该网络,与环境B装置74或随机数生成机构54进行数据的交换。显示器136是用于显示各种信息的设备,例如液晶显示器或有机EL(Electroluminescence)显示器等。输入接口138是用于接受来自用户的输入的设备。输入接口138包含例如鼠标、键盘、设置于显示器138上的触摸屏。

图15是表示图13的环境A装置72的功能及结构的方框图。这里所示的各功能块在硬件方面可通过以计算机的CPU为首的元件或机械装置来实现,在软件方面通过计算机程序等来实现,但这里描述的是通过它们的协作来实现的功能块。因此,这些功能块通过硬件、软件的组合,能够以各种形式来实现,这对于接触过本说明书的本领域技术人员来说是会理解的。环境B装置74具有与图15所示的环境A装置72的功能及结构同样的功能及结构。

环境A装置72具备:份额更新用随机数取得部102、份额更新用随机数确认部104、份额更新部106、访问管理部108、份额保持部110、访问履历保持部112。

图16是表示图15的份额保持部110之一例的数据构造图。份额保持部110以相互对应的方式保持基于秘密共享的MPC系统70中的表示份额彼此的对应关系的份额ID、份额值、确定份额的修订版(リビジョン)的值即修订版号码。份额的修订版号码也可以是多个份额始终保持同一修订版号码,还可以针对每个份额来管理修订版号码。在基于秘密共享的MPC系统70中,分别对在秘密的提供方即客户端中分割原始数据而生成的两个以上的份额分配相同的份额ID。因此,所谓份额的份额ID一致,表示那些份额都是通过分割同一原始数据而生成的对应的份额。在图1的例子中,通过分割原始数据2而生成的份额4及份额6具有相同的份额ID(例如,“SH01”等)。修订版号码每当更新份额时都被更新。修订版号码的更新推荐使用递增或散列函数等具有单向性的方式。在本说明书的下述中,为了简单起见,用递增来表达。

图17是表示图15的访问履历保持部112之一例的数据构造图。访问履历保持部112针对保持于份额保持部110的每个份额,将该份额的修订版号码和对该修订版号码的份额进行访问的信息相互对应起来,并保持访问当时的修订版号码。在图17的例子中,访问的信息包含确定访问了份额的用户的用户ID。在访问履历保持部112中,每当份额更新用随机数被更新时,即每当份额被更新时,都追加具有被更新后的修订版号码的条目。

返回到图15,份额更新用随机数取得部102从随机数生成机构54取得份额更新用随机数。随机数生成机构54周期性地定期更新份额更新用随机数,例如每隔1小时、每隔8小时、每隔12小时、每隔1天等。份额更新用随机数取得部102每当在随机数生成机构54中更新了份额更新用随机数,都取得那样更新后的份额更新用随机数。

此外,份额更新用随机数只要基于规定的规则来更新即可,除了定期地更新以外,也可以按照不规则的间隔来更新。份额更新用随机数的更新周期(=份额的更新周期)不规则时,攻击就会变得困难。

份额更新用随机数确认部104验证由份额更新用随机数取得部102取得的份额更新用随机数的正当性。当份额更新用随机数取得部102取得了份额更新用随机数时,份额更新用随机数确认部104就通过经由网络与环境B装置74的份额更新用随机数确认部进行通信,来判定由环境A装置72取得的份额更新用随机数和由环境B装置74取得的份额更新用随机数是否一致。当判定为一致时,份额更新用随机数确认部104就将处理交给份额更新部106。当判定为不一致时,份额更新用随机数确认部104就执行规定的份额更新用随机数生成异常处理。

份额更新部106基于由份额更新用随机数取得部102取得的份额更新用随机数,更新由份额保持部110保持的环境A装置72的份额。该份额更新部106的更新方法是以如下方式设计的,即,当将基于所取得的份额更新用随机数而更新的环境A装置72的份额和基于该份额更新用随机数而更新的环境B装置74的对应的份额合起来时,该份额更新用随机数的影响就会相互抵消,原始数据得以恢复。

在本实施方式中,通过一方面在环境A装置72的份额上加上份额更新用随机数,另一方面从环境B装置74的对应的份额中减去份额更新用随机数,来实现份额更新用随机数的影响的相互抵消(参照图11、图12)。必须在所有环境中都已更新成功,且在以后的处理中不再需要更新的时间点,迅速地从环境A装置72的全部数据中废弃更新前的份额值和份额更新用随机数,使恢复成为不可能。份额更新部106在份额更新用随机数取得部102取得了废弃以外的更新后的份额更新用随机数的情况下,基于更新后的份额更新用随机数,进一步更新利用更新前的份额更新用随机数已经更新的份额。

针对每个环境进行计算的作用通过规定的单元来确定,以使其在环境A中进行加法运算,在环境B中进行减法运算。通过份额更新而而完成的操作内容只要是整体地相互抵消(零和)的单元即可。例如在三个环境中进行秘密共享的状况中,如果给加法角色分配一个环境,给减法角色分配两个环境,则加法角色的环境就会做出加上份额更新用随机数的倍数的决定。作为结果,份额的更新整体上成为(份额更新用随机数×2)-(份额更新用随机数+份额更新用随机数)=0。

份额更新部106通过与环境B装置74进行通信,来进行用于使基于所取得的份额更新用随机数而更新的环境A装置72的份额的修订版号码、和基于该份额更新用随机数而更新的环境B装置74的对应的份额的修订版号码一致的处理。通过由各装置相互确认份额值的更新已完成,且管理每次更新的修订版,在更新后也能够使份额唯一。

份额更新部106包括:更新份额算出部114、修订版同步部116、份额切换部118、修订版过渡管理部120。份额更新部106的更详细的内容稍后参照图18进行描述。

访问管理部108管理对由份额保持部110保持的份额的访问。访问管理部108经由输入接口138或经由网络从用户接收对由份额保持部110保持的份额的访问请求。访问管理部108进行请求源的用户的用户认证,当认证失败时,拒绝访问。当认证成功时,访问管理部108就从份额保持部110读出由所接收的访问请求指定的份额,提供给请求源。访问管理部108同时将所提供的份额的修订版号码、和份额的提供目的地的用户的用户ID相互对应地注册到访问履历保持部112中。

下面,对以上结构的基于秘密共享的MPC系统70的动作进行说明。

图18是表示图13的基于秘密共享的MPC系统70的一系列的处理流程的流程图。环境A装置72的份额更新用随机数取得部102及环境B装置74的份额更新用随机数取得部分别取得由随机数生成机构54生成或更新后的份额更新用随机数(S802)。环境A装置72的份额更新用随机数确认部104通过与环境B装置74的份额更新用随机数确认部进行通信,来确认在步骤S802中取得的份额更新用随机数(S804)。环境A装置72的份额更新部106的更新份额算出部114读出由份额保持部110保持的份额的份额ID及当前的份额值,通过所读出的份额值加上在步骤S802中取得的份额更新用随机数,计算出更新份额(S806)。与此同时,更新份额算出部114从份额保持部110读出在步骤S806中读出的份额值的当前的修订版号码,通过使所读出的修订版号码递增(或者用散列函数进行散列计算,确定下次修订版号码),计算出新的修订版号码(S808)。同样,环境B装置74的份额更新部的更新份额算出部读出由环境B装置74的份额保持部保持的份额的份额ID及当前的份额值,通过从所读出的份额值中减去在步骤S802中取得的份额更新用随机数,计算出更新份额(S810)。与此同时,更新份额算出部从份额保持部读出在步骤S810中读出的份额值的当前的修订版号码,通过使所读出的修订版号码递增(或者利用散列函数进行散列计算,确定下次修订版号码),计算出新的修订版号码(S812)。

环境A装置72的份额更新部106的修订版同步部116将更新对象的份额的份额ID、和在步骤S808中计算出的新的修订版号码经由网络通知给环境B装置74的份额更新部的修订版同步部(S814)。环境B装置74的份额更新部的修订版同步部获取其通知。该修订版同步部从在步骤S810中计算出的更新份额中,确定具有与所通知的份额ID一致的份额ID的更新份额。该修订版同步部针对所确定的更新份额,将在步骤S812中计算出的新的修订版号码和在步骤S814中被通知的新的修订版号码进行比较(S816)。

在步骤S816中判定为新的修订版号码彼此不一致的情况下(S818的否),环境B装置74的份额更新部的修订版同步部执行规定的例外处理(S820)。例如,该修订版同步部也可以废弃更新份额,且进行用于再同步地重新更新修订版的处理。

在步骤S816中判定为新的修订版号码彼此一致的情况下(S818的是),环境B装置74的份额更新部的份额切换部将旧份额废弃而切换到更新份额(S822),并且用新的修订版号码来更新该份额的修订版号码(S824)。该份额切换部从由环境B装置74的份额保持部保持的份额中,确定具有与在步骤S814中被通知的份额ID一致的份额ID的份额。该份额切换部将所确定的份额的值废弃,取而代之地注册具有与被通知的份额ID一致的份额ID的更新份额的值(在步骤S810中计算出的值)。与此同时,该份额切换部将所确定的份额的修订版号码改写成新的修订版号码(在步骤S812中计算出的修订版号码)。

当在环境B装置74中向更新份额的切换已完成时,环境B装置74的份额更新部的份额切换部向环境A装置72的份额切换部118发出更新完成通知(S826)。份额切换部118在获取了更新完成通知时,就将旧份额废弃而切换到更新份额(S828),并且用新的修订版号码来更新该份额的修订版号码(S830)。该份额切换部118从由环境A装置72的份额保持部110保持的份额中,确定更新对象的份额(即,具有与在步骤S814中通知的份额ID一致的份额ID的份额)。该份额切换部118将所确定的份额的值废弃,取而代之地注册更新对象的份额的更新份额的值(在步骤S806中计算出的值)。与此同时,该份额切换部118将所确定的份额的修订版号码改写成新的修订版号码(在步骤S808中计算出的修订版号码)。

环境A装置72的份额更新部106将在步骤S802中取得的份额更新用随机数废弃(S832)。环境A以日志形式保留更新完成时间的时间戳。这时,从环境A向环境B通知步骤S830已正常结束(S834)。当环境B获取了通知时,环境B的份额更新部就将在步骤S802中取得的份额更新用随机数废弃(S836)。环境B以日志形式保留更新完成时间的时间戳。

在一定时间内未获取到步骤S834的通知的情况下(S838的是),进行例外处理(S840)。例如与环境A保持联系,如果确认出环境A侧的正常结束,则环境B的份额更新部将在步骤S802中取得的份额更新用随机数废弃,恢复至正常运用。相反,在不能确认正常结束的情况下,需要使所有环境都回到更新以前的状态。例如,也可以使用份额更新用随机数,对更新操作已完成的份额进行使份额复原的操作。用份额更新用随机数进行加法运算所得的份额要用份额更新用随机数进行减法运算,用份额更新用随机数进行减法运算所得的份额要用份额更新用随机数进行加法运算,更新后的修订版号码也可以通过回到一个旧的修订版号码上,使份额回到进行更新以前的状态。同时,更新操作已完成的份额的修订版号码也回到更新前。在修订版号码的取号上利用递增的情况下,进行递减。但是,在对修订版号码采用散列函数那样的具有单向性的取号方法的情况下,旧的修订版号码需要保持到能够确认正常结束为止。在能够确认份额更新的正常结束的情况下,为了保持安全性,也可以将旧的修订版号码废弃。更新时保留下来的时间戳也无效化。

环境A装置72的份额更新部106的修订版过渡管理部120在上述的份额更新的顺序中,进行用于防止在各装置内进行的计算的操作数(=份额)的修订版的不一致的处理。那种修订版的不一致会在如下情况下产生,该情况是例如在从环境B装置74侧的份额切换结束到环境A装置72侧的份额切换结束为止的期间(从图18的步骤S824到步骤S830期间)发生了计算的情况。具体地说,环境A装置72中的行进中的计算所使用的份额会变成旧的修订版。为了防止这种修订版的不一致,需要实施对策。作为一例,在修订版过渡管理部120中,以进行下面两个过渡管理处理中的任一个的情况为例。

(其一)在份额修订版的同步中,即在从图18的步骤S814的起始前到步骤S830完成为止的期间,环境A装置72的修订版过渡管理部120及环境B装置74的修订版过渡管理部分别按以下要领使环境A装置72的计算及环境B装置74的计算停止。

(停止程序)

首先,环境A装置72和环境B装置74都停止接受计算过程(プロセス)的起始。进而,在这两个装置之间共享当前执行中的计算过程。在存在差分的情况下,作为其应对,有以下两种选项。

选项1:在停止前,两装置都完成了该计算过程的协作作业。

选项2:在执行差分过程中的装置侧,中断该过程,推迟到份额更新后。

在完成了步骤S830之后,从环境A装置72的修订版过渡管理部120向环境B装置74的修订版过渡管理部发出追加的通知,分别使用更新后的份额,再次开始计算。

其一的过渡管理处理特别是在计算过程的粒度(粒感)较小的情况下,由于剩余过程的消化所花费的时间较短,因此可用性较高。另外,必要的通信带宽比后述的其二的过渡管理处理小。

(其二)在各装置中发生的所有计算过程中,使其修订版号码与制成了操作数的份额相关联。在发生了计算的时刻,将该修订版号码从环境A装置72的修订版过渡管理部120通知给环境B装置74的修订版过渡管理部。此外,在一系列的处理中包含乘法器的情况下,因为原本要在两个装置之间发生1回合以上的通信,所以也可以在那些时刻兼发通知。

在环境B装置74中,在协作进行相同计算的过程的修订版号码与从环境A装置72通知来的修订版号码不一致的情况下(即,在从环境A装置72通知来的修订版号码为旧号码的情况下(原因是,在按照图18的顺序的情况下,环境B装置74会先实施份额的切换)),从环境B装置74的修订版过渡管理部向环境A装置72的修订版过渡管理部120发出通知。

接收到通知的环境A装置72的修订版过渡管理部120在取得了新的修订版的份额之后,仅在环境A装置72侧,重新从头开始该计算过程。

根据其二的过渡管理处理,对可用性的影响比较小。例如,在发生了不一致时,仅仅是在环境A装置72侧发生了若干延迟。另外,其二的过渡管理处理更适合于份额的更新周期不规则的情况。另外,特别限定于在整个环境中与一个修订版号码相关联地管理所有份额的情况,但在每次都将份额使用于操作数,且回合发生的计算(例:乘法器)成功的情况下,以后不需要将修订版号码通知给对方。原因是,因为有在整个环境中都利用同一修订版号码来管理份额之类的前提,所以在所有环境进行通信的(回合发生的)计算成功时,能够保证所有环境的所有份额都被最新化。除了通过乘法器来达成协议的方法以外,也可以做出如下之类决定,即,在份额更新后,双方预先互相通知修订版,达成协议以后,再开始进行计算。

是采用其一的过渡管理处理,还是采用其二的过渡管理处理,也可以通过系统的必要条件来判断。

在上述的实施方式中,保持部是以硬盘或半导体存储器为例的。另外,基于本说明书的记载,各部都能够通过未图示的CPU、被安装上去的应用程序的模块、系统程序的模块、临时存储从硬盘读出的数据内容的半导体存储器等来实现,这对于接触过本说明书的本领域技术人员来说是会理解的。

根据本实施方式的基于秘密共享的MPC系统70,能够降低由装置管理者的能力不足等引起的原始数据的泄露风险。在现有的基于秘密共享的MPC中,因为一方的份额值的泄露检测滞后,所以在此期间另一方的份额值会泄露,由此可看做是数据已泄露。与此不同,在本实施方式的基于秘密共享的MPC系统70中,由于周期地生成份额更新用随机数而更新份额,因此只要相同修订版的份额值不会大致同时泄露,就不会发生原始数据的泄露。

另外,在本实施方式的基于秘密共享的MPC系统70中,能够牵制恶意攻击,即使发生了数据泄露,也可通过锁定嫌疑犯而为取证(フォレンジック)做贡献。在基于秘密共享的MPC系统70中,由于通过将环境A装置72的访问履历和环境B装置74的访问履历结合起来,来提高可追溯性,因此面向执行攻击的心理障碍升高。在发生了数据泄露的情况下,因为那个数据泄露发生在从“数据创建/变更”的时间点到“发生了同时访问的修订版”的时间点之间的可能性较高,所以能够辅助发生了问题时的取证。因此,责任说明的能力提高。

图19是对本实施方式的基于秘密共享的MPC系统70的可追溯性的提高进行说明的示意图。图19的上段表示环境A装置72中的对分割原始数据而得到的一方的份额80的访问履历。图19的下段表示环境B装置74中的对另一方的份额82的访问履历。当将相同修订版的两个份额80、82合起来时,就能够恢复原始数据。这样,在本实施方式的基于秘密共享的MPC系统70中,由于在份额的更新时间点能够对时间线进行散列处理,因此能够锁定引起泄露的嫌疑犯。

在图19的例子中,在修订版号码为“Rev4”、“Rev5”、“Rev6”时,发生了对两个份额80、82的同时访问。因此,在假设发生了原始数据泄露的情况下,与修订版号码“Rev4”、“Rev5”、“Rev6”相关联的用户84、86、88、90、92、94会变成可疑对象。在相同用户访问了相同修订版的两个份额80、82的情况下,当然其用户是最可疑的。因此,在图19的例子中,用户94作为引发了泄露的犯人是最可疑的。接着,因为多次访问的用户是可疑的,所以对修订版号码“Rev4”、“Rev5”、“Rev6”进行了两次访问的用户86成为可疑对象。另外,当考虑不同的用户相互勾结的可能性时,访问了相同修订版的两个份额80、82的用户84和用户86的组(Rev4)、用户92和用户86的组(Rev6)的相互勾结是可疑的。相反,如果修订版错开,则即使访问了两个份额80、82,也没有问题,所以可以说例如用户88和用户86的相互勾结的可能性较低。

这样,根据本实施方式的基于秘密共享的MPC系统70,能够实现对系统监察进行辅助的防相互勾结方案。

<应用例>

图20是用于对本实施方式的基于秘密共享的MPC的应用例进行说明的示意图。在本应用例中,通过在使用秘密计算的M&A的辅助中应用本实施方式的基于秘密共享的MPC,能够减轻微妙的数据泄露的风险,且能够提高有事故时的可追溯性。

在研究同行业其他公司的M&A的情况下,据说收购方的顾客层不蒙受损失时M&A效果更好。如果能够分析顾客简介、过去的消费活动、嗜好等的差异,则能够使顾客层的损失最小化,但为了进行那种分析,必须透露一次顾客信息。在透露了顾客信息且M&A不成立的情况下,很有可能给今后的竞争力造成巨大影响。

因此,在本应用例中,根据秘密计算的方案,各公司都在对顾客信息实施了机密化(份额化)以后再在计算环境上进行共享。通过直接用秘密计算进行分析,能够做出更高精度的决策。而且,通过设置与实施方式的随机数生成机构54同样的随机数生成机构,且以与环境A装置72同样的方式构成卖方P(供应商)环境的装置,以与环境B装置74同样的方式构成卖方Q环境的装置,能够降低顾客信息的泄露风险。另外,即使在发生了泄露的情况下,也能够更容易地锁定嫌疑犯。

以上对实施方式的基于秘密共享的MPC系统70的结构和动作进行了说明。该实施方式只是一种例示而已,在各构成要素或各处理的组合中能够实现各种变形例,另外,那样的变形例也包含在本发明的范围内,这对于本领域技术人员来说是会理解的。

<变形例>

在实施方式中,对如下情况进行了说明,但不局限于此,该情况是,通过一方面在环境A装置72中在份额上加上份额更新用随机数,另一方面在环境B装置74中从对应的份额中减去份额更新用随机数,在将更新后的两份额加在一起时,份额更新用随机数的影响被相互抵消。例如,份额的更新方法在考虑到除数的情况下,当将更新后的份额合起来时,就没有份额更新用随机数的影响,例如也可以设计成“+0”。

图21是表示变形例的基于秘密共享的MPC的构思的示意图。在图21中,表示出了份额的更新时的份额的变化量。图22是表示与图21对应的份额值的变化的示意图。本变形例是周期地加上0(零)值的份额,使各装置上的份额发生变化,提高安全性的例子。

考虑将除数设为16即以16进行巡回的环境。在该环境中,当用随机数进行份额化时,例如,

7=(15+8)mod16=23mod16=7

0=(3+13)mod16=16mod16=0。

在本变形例中,因为在原始数据上加几次0都是0,所以当在除数16下相加时,就用成为0的数的组合来更新份额。

在图21、图22中,原始数据“7”被分割为份额A“15”和份额B“8”,当将两份额合起来时,如上述的计算例所述,原始数据“7”准确地被恢复。在生成了“3”作为份额更新用随机数的情况下,份额A通过“+3”,被更新成“2”,份额B通过考虑除数16并根据份额更新用随机数“3”计算出的“+13”(补充:13=(-3)%16),被更新成“5”。其结果是,当将更新后的两份额合起来时,就是(2+5)=7,如上述的计算例所述,份额更新用随机数的影响成为“+0”,原始数据“7”被恢复。

这样,无论将哪个上下组合合起来,如果用16取余,都会变成原始数据(“7”)。但是,当改变组合时,除了偶然的一致以外,都不能恢复原始数据。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号