首页 / 专利分类库 / 教育;密码术;显示;广告;印鉴 / 用于密码或涉及保密需要的其他用途的编码或译码装置 / 秘密聚合排名系统、秘密计算装置、秘密聚合排名方法、以及记录介质

秘密聚合排名系统、秘密计算装置、秘密聚合排名方法、以及记录介质

申请号 CN201980026365.2 申请日 2019-04-17 公开(公告)号 CN112005287B 公开(公告)日 2023-08-18
申请人 日本电信电话株式会社; 发明人 五十岚大;
摘要 在保持隐匿性的情况下高效地求出聚合排名。逆置换部(12)对表的交叉列表应用置换的逆置换,生成表示逆置换完毕的交叉列表的向量的份额,其中所述置换是将根据关键字属性将表进行了分组时的各组的最后的元素从开头按顺序排列那样移动的置换。部分总和部(13)由逆置换完毕的交叉列表计算前缀和。排名计算部(14)由前缀和的结果生成表示组内的升序排名的向量的份额。
权利要求

1.一种包含多个秘密计算装置的秘密聚合排名系统,
m为2以上的整数,[v]:=[v0],…,[vm‑1]是将交叉列表v:=v0,…,vm‑1秘密分散后的份额,所述交叉列表v:=v0,…,vm‑1是将根据关键字属性的值而对由所述关键字属性和值属性构成的表进行了分组时的各组的记录数对从开头至组数为止的元素设定的交叉列表,{{σ}}是将置换σ秘密分散后的份额,所述置换σ是根据所述关键字属性的值而对所述表进行了分组时,以各组的最后的元素从开头按顺序排列的方式移动的置换,
上述秘密计算装置包括:
逆置换部,使用所述份额[v]和所述份额{{σ}},生成若复原则变为对所述交叉列表v反‑1 ‑1
向应用了所述置换σ的逆置换完毕交叉列表u:=σ (v)的份额[u]:=[σ (v)];
部分总和部,使用所述份额[u],对于0以上m‑1以下的各整数i,对[si]设定从[u0]至[ui]的总和,生成若复原则变为向量s:=s0,…,sm‑1∈F的份额[s];以及
排名计算部,使用所述份额[s],对于1以上m‑1以下的各整数i设定[xi]:=[i‑si‑1],并且,设定[x0]:=[0],生成若复原则变为表示组内的升序排名的向量x:=x0,…,xm‑1的份额[x]。
2.一种包含多个秘密计算装置的秘密聚合排名系统,
m为2以上的整数,[v]:=[v0],…,[vm‑1]是将交叉列表v:=v0,…,vm‑1秘密分散后的份额,所述交叉列表v:=v0,…,vm‑1是将根据关键字属性的值而对由所述关键字属性和值属性构成的表进行了分组时的各组的记录数对从开头至组数为止的元素设定的交叉列表,{{σ}}是将置换σ秘密分散后的份额,所述置换σ是根据所述关键字属性的值而对所述表进行了分组时,以各组的最后的元素从开头按顺序排列的方式移动的置换,
所述秘密计算装置包括:
计数移位部,使用所述份额[v],对于0以上m‑2以下的各整数i设定[v'i]:=[vi+1],并且,设定[v'm‑1]:=[0],生成若复原则变为移位完毕交叉列表v':=v'0,…,v'm‑1的份额[v'];
逆置换部,使用所述份额[v’]和所述份额{{σ}},生成若复原则变为对所述移位完毕交‑1 ‑1
叉列表v'反向应用了所述置换σ的逆置换完毕交叉列表u':=σ (v')的份额[u']:=[σ(v')];
部分总和部,使用所述份额[u'],对于0以上m‑1以下的各整数i,对[s'i]设定从[u'i]至[u'm‑i]的总和,生成若复原则变为向量s':=s'0,…,s'm‑1∈F的份额[s'];以及排名计算部,使用所述份额[s'],对于1以上m‑1以下的各整数i设定[x'i]:=[m‑i‑s'i‑
1],生成若复原则变为表示组内的降序排名的向量x':=x'0,…,x'm‑1的份额[x']。
3.如权利要求1或者2所述的秘密聚合排名系统,
m
F为任意的环,nk为1以上的整数,[k0],…,[knk‑1]为将关键字属性k0,…,knk‑1∈F秘密分散后的份额,
所述秘密计算装置还包括:
组排序生成部,使用所述份额[k0],…,[knk‑1],从若复原则变为将所述关键字属性k0,…,knk‑1比特分解而结合后的比特串b:=b0,…,bm‑1的份额{b},生成若复原则变为将所述比特串b按升序稳定排序的置换σ0的份额{{σ0}};
比特串排序部,使用所述份额{b}和所述份额{{σ0}},若复原则变为将所述比特串b以所述置换σ0进行了排序的排序完毕比特串b':=b'0,…,b'm‑1的份额{b'};
标志生成部,使用所述份额{b'},对于0以上m‑2以下的各整数i设定{ei}:={b'i≠b'i+1},并且,设定{em‑1}:={1},生成若复原则变为所述标志e:=e0,…,em‑1的份额{e};
关键字聚合排序生成部,使用所述份额{e},生成若复原则变为将所述标志e的“非”¬e按升序稳定排序的所述置换σ的所述份额{{σ}};
边界号设定部,使用所述份额{e},对于0以上m‑1以下的各整数i,在{ei}为真时设定[x"i]:=[i+1],在{ei}为假时设定[x"i]:=[m],生成若复原则变为向量x":=x"0,…,x"m‑1的份额[x"];
排序部,使用所述份额[x"]和所述份额{{σ}},生成若复原则变为将所述向量x"以所述置换σ进行了排序的排序完毕向量σ(x")的份额[σ(x")];以及
计数计算部,使用所述份额[σ(x")],对于1以上min(g,m)‑1以下的各整数i设定[vi]:=[σ(x")i‑σ(x")i‑1],并且,对于min(g,m)以上m‑1以下的各整数i设定[vi]:=[0],并且,设定[v0]:=[σ(x")0],生成若复原则变为表示各组的记录数的向量v:=v0,…,vm‑1的份额[v]。
4.一种秘密计算装置,
m为2以上的整数,[v]:=[v0],…,[vm‑1]是将交叉列表v:=v0,…,vm‑1秘密分散后的份额,所述交叉列表v:=v0,…,vm‑1是将根据关键字属性的值而对由所述关键字属性和值属性构成的表进行了分组时的各组的记录数对从开头至组数为止的元素设定的交叉列表,{{σ}}是将置换σ秘密分散后的份额,所述置换σ是根据所述关键字属性的值而对所述表进行了分组时,以各组的最后的元素从开头按顺序排列的方式移动的置换,
所述秘密计算装置包括:
逆置换部,使用所述份额[v]和所述份额{{σ}},生成若复原则变为对所述交叉列表v反‑1 ‑1
向应用了所述置换σ的逆置换完毕交叉列表u:=σ (v)的份额[u]:=[σ (v)];
部分总和部,使用所述份额[u],对于0以上m‑1以下的各整数i,对[si]设定从[u0]至[ui]的总和,生成若复原则变为向量s:=s0,…,sm‑1∈F的份额[s];以及
排名计算部,使用所述份额[s],对于1以上m‑1以下的各整数i设定[xi]:=[i‑si‑1],并且,设定[x0]:=[0],生成若复原则变为表示组内的升序排名的向量x:=x0,…,xm‑1的份额[x]。
5.一种秘密计算装置,
m为2以上的整数,[v]:=[v0],…,[vm‑1]是将交叉列表v:=v0,…,vm‑1秘密分散后的份额,所述交叉列表v:=v0,…,vm‑1是将根据关键字属性的值而对由所述关键字属性和值属性构成的表进行了分组时的各组的记录数对从开头至组数为止的元素设定的交叉列表,{{σ}}是将置换σ秘密分散后的份额,所述置换σ是根据所述关键字属性的值而对所述表进行了分组时,以各组的最后的元素从开头按顺序排列的方式移动的置换,
所述秘密计算装置包括:
计数移位部,使用所述份额[v],对于0以上m‑2以下的各整数i设定[v'i]:=[vi+1],并且,设定[v'm‑1]:=[0],生成若复原则变为移位完毕交叉列表v':=v'0,…,v'm‑1的份额[v'];
逆置换部,使用所述份额[v’]和所述份额{{σ}},生成若复原则变为对所述移位完毕交‑1 ‑1
叉列表v'反向应用了所述置换σ的逆置换完毕交叉列表u':=σ (v')的份额[u']:=[σ(v')];
部分总和部,使用所述份额[u'],对于0以上m‑1以下的各整数i,对[s'i]设定从[u'i]至[u'm‑i]的总和,生成若复原则变为向量s':=s'0,…,s'm‑1∈F的份额[s'];以及排名计算部,使用所述份额[s'],对于1以上m‑1以下的各整数i设定[x'i]:=[m‑i‑s'i‑
1],生成若复原则变为表示组内的降序排名的向量x':=x'0,…,x'm‑1的份额[x']。
6.一种秘密聚合排名方法,是包含多个秘密计算装置的秘密聚合排名系统执行的秘密聚合排名方法,
m为2以上的整数,[v]:=[v0],…,[vm‑1]是将交叉列表v:=v0,…,vm‑1秘密分散后的份额,所述交叉列表v:=v0,…,vm‑1是将根据关键字属性的值而对由所述关键字属性和值属性构成的表进行了分组时的各组的记录数对从开头至组数为止的元素设定的交叉列表,{{σ}}是将置换σ秘密分散后的份额,所述置换σ是根据所述关键字属性的值而对所述表进行了分组时,以各组的最后的元素从开头按顺序排列的方式移动的置换,
所述秘密计算装置的逆置换部使用所述份额[v]和所述份额{{σ}},生成若复原则变为‑1
对所述交叉列表v反向应用了所述置换σ的逆置换完毕交叉列表u:=σ (v)的份额[u]:=‑1
[σ (v)],
所述秘密计算装置的部分总和部使用所述份额[u],对于0以上m‑1以下的各整数i,对[si]设定从[u0]至[ui]的总和,生成若复原则变为向量s:=s0,…,sm‑1∈F的份额[s],所述秘密计算装置的排名计算部使用所述份额[s],对于1以上m‑1以下的各整数i设定[xi]:=[i‑si‑1],并且,设定[x0]:=[0],生成若复原则变为表示组内的升序排名的向量x:
=x0,…,xm‑1的份额[x]。
7.一种秘密聚合排名方法,是包含多个秘密计算装置的秘密聚合排名系统执行的秘密聚合排名方法,
m为2以上的整数,[v]:=[v0],…,[vm‑1]是将交叉列表v:=v0,…,vm‑1秘密分散后的份额,所述交叉列表v:=v0,…,vm‑1是将根据关键字属性的值而对所述关键字属性和值属性构成的表进行了分组时的各组的记录数对从开头至组数的元素设定的交叉列表,{{σ}}是将置换σ秘密分散后的份额,所述置换σ是根据所述关键字属性的值而对所述表进行了分组时,以各组的最后的元素从开头按顺序排列的方式移动的置换,
所述秘密计算装置的计数移位部使用所述份额[v],对于0以上m‑2以下的各整数i设定[v'i]:=[vi+1],并且,设定[v'm‑1]:=[0],生成若复原则变为移位完毕交叉列表v':=v'0,…,v'm‑1的份额[v'],
所述秘密计算装置的逆置换部使用所述份额[v’]和所述份额{{σ}},生成若复原则变‑1
为对所述移位完毕交叉列表v'反向应用了所述置换σ的逆置换完毕交叉列表u':=σ (v')‑1
的份额[u']:=[σ (v')],
所述秘密计算装置的部分总和部使用所述份额[u'],对于0以上m‑1以下的各整数i,对[s'i]设定从[u'i]至[u'm‑i]的总和,生成若复原则变为向量s':=s'0,…,s'm‑1∈F的份额[s'],
所述秘密计算装置的排名计算部使用所述份额[s'],对于1以上m‑1以下的各整数i设定[x'i]:=[m‑i‑s'i‑1],生成若复原则变为表示组内的降序排名的向量x':=x'0,…,x'm‑1的份额[x']。
8.一种计算机可读取的记录介质,记录了用于使计算机发挥作为权利要求4或者5所述的秘密计算装置的功能的程序。

说明书全文

秘密聚合排名系统、秘密计算装置、秘密聚合排名方法、以及

记录介质

技术领域

[0001] 本发明涉及秘密计算技术,特别涉及在保持隐匿性的情况下计算聚合(aggregation)函数的技术。

背景技术

[0002] 聚合函数是在表中有关键字(key)属性和值(value)属性时,得到根据关键字属性的值进行了分组后的统计值的运算。聚合函数也称为分组(group‑by)运算。关键字属性是为了将表的记录分组而使用的属性,例如举出职务或性别等。值属性为了计算统计值而使用的属性,例如举出工资或身高等。group‑by运算是例如在关键字属性为性别时,求按男女的平均身高的运算等。关键字属性也可以是基于多个属性的复合关键字,例如,在关键字属性为性别和年龄时,得到10多岁男性的平均身高、20多岁男性的平均身高、···那样的运算。在非专利文献1中记载了通过秘密计算进行group‑by运算的方法。
[0003] 聚合排名(aggregation rank)是聚合函数之一,是在根据关键字属性的值将表进行了分组时,得到希望的值属性的值在组内是第几个值的运算。聚合排名也称为组内的排名,有作为将值属性以升序排序(sort)时的排名的组内的升序排名、和作为将值属性以降序排序时的排名的组内的降序排名。例如,在关键字属性为年龄和性别,值属性为工资时,组内的升序排名是得到工资在20多岁的男性中从低的一方开始数是第几个,在30多岁的男性中从低的一方开始数是第几个,···那样的运算,组内的降序排名是得到工资在20多岁的男性中从高的一方开始数是第几个,在30多岁的男性中从高的一方开始数是第几个,···那样的运算。
[0004] 现有技术文献
[0005] 非专利文献
[0006] 非专利文献1:五十嵐大,千田浩司,濱田浩気,高橋克巳,“軽量検証可能3パーティ秘匿関数計算の効率化及びこれを用いたセキュアなデータベース処理”,2011年暗号と情報セキュリティシンポジウム(五十岚大,千田浩司,滨田浩气,高桥克巳,“可轻量验证的三方隐藏功能计算的高效化以及使用其的安全的数据库处理”,2011年密码与信息安全研讨会)

发明内容

[0007] 发明要解决的课题
[0008] 在以往的秘密计算技术中,为了求出组内的排名,设n为计算主体的数量,需要log(n)的通信次数,效率差。
[0009] 本发明的目的是鉴于上述那样的技术的课题,提供能够在保持隐匿性的情况下高效地求出组内的排名的技术。
[0010] 用于解决课题的手段
[0011] 为了解决上述的课题,本发明的第一方式的秘密聚合排名系统为包含多个秘密计算装置的秘密聚合排名系统,m为2以上的整数,[v]:=[v0],…,[vm‑1]是将交叉列表v:=v0,…,vm‑1秘密分散后的份额,所述交叉列表v:=v0,…,vm‑1是将根据关键字属性的值将关键字属性和值属性构成的表进行了分组时的各组的记录数对从开头至组数的元素设定的交叉列表,{{σ}}是将置换σ秘密分散后的份额,所述置换σ是根据关键字属性的值将表进行了分组时以各组的最后的元素从开头按顺序排列的方式移动的置换,秘密计算装置包括:逆置换部,使用份额[v]和份额{{σ}},生成若复原则变为对交叉列表v反向应用了置换σ的‑1 ‑1
逆置换完毕交叉列表u:=σ (v)的份额[u]:=[σ (v)];部分总和部,使用份额[u],对于0以上m‑1以下的各整数i,对[si]设定从[u0]至[ui]的总和,生成若复原则变为向量s:=s0,…,sm‑1∈F的份额[s];以及排名计算部,使用份额[s],对于1以上m‑1以下的各整数i设定[xi]:=[i‑si‑1],并且,设定[x0]:=[0],生成若复原则变为表示组内的升序排名的向量x:=x0,…,xm‑1的份额[x]。
[0012] 为了解决上述的课题,本发明的第二方式的秘密聚合排名系统是包含多个秘密计算装置的秘密聚合排名系统,m为2以上的整数,[v]:=[v0],…,[vm‑1]是将交叉列表v:=v0,…,vm‑1秘密分散后的份额,所述交叉列表v:=v0,…,vm‑1是将根据关键字属性的值将关键字属性和值属性构成的表进行了分组时的各组的记录数对从开头至组数的元素设定的交叉列表,{{σ}}是将置换σ秘密分散后的份额,所述置换σ是根据关键字属性的值将表进行了分组时以各组的最后的元素从开头按顺序排列的方式移动的置换,秘密计算装置包括:计数移位部,使用份额[v],对0以上m‑2以下的各整数i设定[v'i]:=[vi+1],并且,设定[v'm‑1]:=[0],生成若复原则变为移位完毕交叉列表v':=v'0,…,v'm‑1的份额[v'];逆置换部,使用份额[v']和份额{{σ}},生成若复原则变为对移位完毕交叉列表v'反向应用了置‑1 ‑1
换σ的逆置换完毕交叉列表u':=σ (v')的份额[u']:=[σ (v')];部分总和部,使用份额[u'],对于0以上m‑1以下的各整数i,对[s'i]设定从[u'i]至[u'm‑i]的总和,生成若复原则变为向量s':=s'0,…,s'm‑1∈F的份额[s'];以及排名计算部,使用份额[s'],对于1以上m‑1以下的各整数i设定[x'i]:=[m‑i‑s'i‑1],生成若复原则变为表示组内的降序排名的向量x':=x'0,…,x'm‑1的份额[x']。
[0013] 发明的效果
[0014] 按照本发明的秘密聚合排名技术,能够在保持隐匿性的情况下以O(1)的通信次数高效地求出组内的排名。附图说明
[0015] 图1是例示秘密聚合排名系统的功能结构的图。
[0016] 图2是例示秘密计算装置的功能结构的图。
[0017] 图3是例示秘密聚合排名方法(升序排名)的处理过程的图。
[0018] 图4是例示秘密聚合排名方法(降序排名)的处理过程的图。
[0019] 图5是例示变形例的秘密计算装置的功能结构的图。

具体实施方式

[0020] 以下,详细地说明本发明的实施方式。而且,对于附图中具有相同的功能的结构部附加相同的标号,省略重复说明。
[0021] [x]∈[F]表示某值x通过任意的环F上的秘密分散等被隐匿。{b}∈{B}表示1比特的某值b通过能表示1比特的环B上的秘密分散等被隐匿。{{s}}∈{{Sm}}表示属于m个元素的置换的集合Sm的某个置换s通过秘密分散等被隐匿。以下,也将被秘密分散的值称为“份额(share)”。
[0022] <第一实施方式>
[0023] 《组内的升序排名》
[0024] 本发明的第一实施方式是求出组内的升序排名的秘密聚合排名系统以及方法。参照图1,说明第一实施方式的秘密聚合排名系统100的结构例。秘密聚合排名系统100包含N(≥2)台秘密计算装置11,…,1N。在本方式中,秘密计算装置11,…,1N被分别连接到通信网9。通信网9是构成为被连接的各装置可相互通信的线路交换方式或者分组交换方式的通信网,例如可以使用因特网或LAN(Local Area Network,局域网)、WAN(Wide Area Network,广域网)等。而且,各装置不一定需要可经由通信网9以在线方式进行通信。例如,也可以构成为将要输入到秘密计算装置11,…,1N的信息存储在磁带或USB存储器等可移动记录介质中,从该可移动记录介质以离线方式输入到秘密计算装置11,…,1N。
[0025] 参照图2,说明本方式的秘密聚合排名系统100中包含的秘密计算装置1n(n=1,…,N)的结构例。例如,如图2所示,秘密计算装置1n包含:输入部10、逆置换部12、部分总和部13、排名计算部14、以及输出部15。该秘密计算装置1n(1≤n≤N)通过一边与其它秘密计算装置1n'(n'=1,…,N,其中n≠n')协调,一边进行在后叙述的各步骤的处理,来实现第一实施方式的秘密聚合排名方法。
[0026] 秘密计算装置1n是例如在具有中央运算处理装置(CPU:Central Processing Unit,中央处理单元)、主存储装置(RAM:Random Access Memory,随机存取存储器)等的公知或者专用的计算机中读入特别的程序而构成的特别的装置。秘密计算装置1n例如在中央运算处理装置的控制下执行各处理。被输入到秘密计算装置1n的数据或在各处理中得到的数据例如被存储在主存储装置中,主存储装置中存储的数据根据需要被读出到中央运算处理装置,被利用在其它处理中。秘密计算装置1n的各处理部也可以至少一部分由集成电路硬件构成。
[0027] 参照图3,说明第一实施方式的秘密聚合排名系统100执行的秘密聚合排名方法(升序排名)的处理过程。
[0028] 在步骤S10中,各秘密计算装置1n的输入部10接受通过秘密分散隐匿了交叉列表vm m∈F 后的份额[v]∈[F] 、以及通过秘密分散隐匿了置换σ后的份额{{σ}}∈{{Sm}}作为输入。其中,m为2以上的整数。输入部10将交叉列表v的份额[v]和置换σ的份额{{σ}}输出到逆置换部12。
[0029] 交叉列表v是将各组的记录数合计后的结果。例如,交叉列表v是,在将表按照关键字属性进行了稳定排序时,将具有相同的关键字属性的值的记录作为相同的组,在从开头至组数为止的元素中设定将各组的记录数进行了合计的结果,在此后的元素中设定了0的向量。组数为1以上m以下的整数,不限于与m相等。组数是秘密的值,在以下的处理中构成为不需要参照组数的值,即使不知道组数也能够进行处理。而且,稳定排序是,在排序运算中,在存在相同的值的元素的情况下,保存相同的值的元素之间的顺序的运算。例如,若对于以员工号顺序排序的表以性别进行稳定排序,则得到在各性别中保持了员工号顺序的排序结果。
[0030] 置换σ是,将各组的关键字属性的值从开头逐一排列的置换。例如,置换σ是如下的置换,即,在将表以关键字属性进行了稳定排序时,将具有相同的关键字属性的值的记录作为相同的组,以各组的最后的元素从开头开始按顺序排列,接着其它元素按顺序排列的方式进行移动。
[0031] 在步骤S12中,各秘密计算装置1n的逆置换部12使用交叉列表v的份额[v]和置换σ‑1 m的份额{{σ}},生成份额[u]:=[σ (v)]∈[F] ,该份额若复原则变为对交叉列表v反向应用‑1
了置换σ的逆置换完毕交叉列表u:=σ (v)。交叉列表v是对从开头至组数为止的元素设定了各组的记录数的向量,置换σ是将各组的最后的元素从开头开始按顺序排列的置换,所以对交叉列表v反向应用了置换σ的逆置换完毕交叉列表u成为对各组的最后的元素设定了该m
组的记录数的向量。以下,[u]∈[F]的各元素有时也以[ui]∈[F](i=0,…,m‑1)进行参照。
逆置换部12将逆置换完毕交叉列表u的份额[u]输出到部分总和部13。
[0032] 在步骤S13中,各秘密计算装置1n的部分总和部13使用逆置换完毕交叉列表u的份额[u],计算[s]:=prefix‑sum([u]),生成若复原则变为向量s:=s0,…,sm‑1∈F的份额[s]m∈[F] 。prefix‑sum是将m设为输入向量u的长度,对于0以上m‑1以下的各整数i,对输出向量s的第i个元素si设定从输入向量u的第0个元素u0至第i个元素ui的值的总和的运算。部分总和部13将向量s的份额[s]输出到排名计算部14。
[0033] 在步骤S14中,各秘密计算装置1n的排名计算部14使用向量s的份额[s],对1以上m‑1以下的各整数i设定[xi]:=[i‑si‑1],并且设定[x0]:=[0],生成若复原则变为组内的升m序排名x:=x0,…,xm‑1∈F的份额[x]∈[F]。而且,注意:组内的升序排名为0开始。若希望得到1开始的排名,则对各排名加上1即可。即,对于1以上m‑1以下的各整数i设定[xi]:=[i‑si‑1+1],并且设定[x0]:=[1],生成升序排名x即可。排名计算部14将升序排名x的份额[x]输出到输出部15。
[0034] 在步骤S15中,各秘密计算装置1n的输出部15输出升序排名x的份额[x]。
[0035] <第二实施方式>
[0036] 《组内的降序排名》
[0037] 本发明的第二实施方式是求组内的降序排名的秘密聚合排名系统以及方法。参照图1,说明第二实施方式的秘密聚合排名系统101的结构例。本方式的秘密聚合排名系统101包含N(≥2)台秘密计算装置21,…,2N。在本方式中,秘密计算装置21,…,2N分别被连接到通信网9。通信网9是被连接的各装置被构成为可相互通信的线路交换方式或者分组交换方式的通信网,例如可以使用因特网或LAN(Local Area Network)、WAN(Wide Area Network)等。而且,各装置不一定需要能够经由通信网9以在线方式通信。例如也可以构成为将输入到秘密计算装置21,…,2N的信息存储在磁带或USB存储器等可移动记录介质中,从以离线方式从可移动记录介质输入到秘密计算装置21,…,2N。
[0038] 参照图2,说明本方式的秘密聚合排名系统101中包含的秘密计算装置2n(n=1,…,N)的结构例。例如,如图2所示,秘密计算装置2n不仅包含第一实施方式的秘密聚合排名系统100中包含的秘密计算装置1n具有的处理部,而且还包含计数移位部11。该秘密计算装置2n(1≤n≤N)通过一边与其它秘密计算装置2n'(n'=1,…,N,其中n≠n')协调,一边进行在后叙述的各步骤的处理,从而实现第二实施方式的秘密聚合排名方法。
[0039] 参照图4,说明第二实施方式的秘密聚合排名系统101执行的秘密聚合排名方法(降序排名)的处理过程。
[0040] 在步骤S10中,各秘密计算装置2n的输入部10接受通过将秘密分散而隐匿了交叉m m列表v∈F 的份额[v]∈[F] 、以及通过秘密分散而隐匿了置换σ的份额{{σ}}∈{{Sm}}作为输入。输入部10将交叉列表v的份额[v]输出到计数移位部11。而且,输入部10将置换σ的份额{{σ}}输出到逆置换部12。
[0041] 在步骤S11中,各秘密计算装置2n的计数移位部11使用交叉列表v的份额[v],对0以上m‑2以下的各整数i设定[v'i]:=[vi+1],并且设定[v'm‑1]:=[0],生成若复原则变为移m m位完毕交叉列表v':=v'0,…,v'm‑1∈F的份额[v']∈[F]。移位完毕交叉列表v'变为将作为表示各组的记录数的向量的交叉列表v逐一向前方移位后的向量。计数移位部11将移位完毕交叉列表v'的份额[v']输出到逆置换部12。
[0042] 在步骤S12中,各秘密计算装置2n的逆置换部12使用移位完毕交叉列表v'的份额[v']和置换σ的份额{{σ}},生成若复原则变为对移位完毕交叉列表v'反向应用了置换σ的‑1 ‑1 m逆置换完毕交叉列表u':=σ (v')的份额[u']:=[σ (v')]∈[F]。移位完毕交叉列表v'是将对从开头至组数为止的元素设定了各组的记录数的交叉列表v逐一向前方移位后的向量,置换σ是将各组的最后的元素从开头依次排列的置换,所以对移位完毕交叉列表v'反向应用了置换σ后的逆置换完毕交叉列表u'变为对各组的最后的元素设定了后方一个组的记m
录数的向量。以下,有时[u']∈[F]的各元素也以[u'i]∈[F](i=0,…,m‑1)进行参照。逆置换部12将逆置换完毕交叉列表u'的份额[u']输出到部分总和部13。
[0043] 在步骤S13中,各秘密计算装置2n的部分总和部13使用逆置换完毕交叉列表u'的份额[u'],计算[s']:=postfix‑sum([u']),生成若复原则变为向量s':=s'0,…,s'm‑1∈Fm的份额[s']∈[F]。postfix‑sum是以下运算,即,将m设为输入向量u'的长度,对于0以上m‑
1以下的各整数i,对输出向量s'的第i个元素s'i设定从输入向量u'的第i个元素u'i至第m‑1个元素u'm‑1为止的值的总和。部分总和部13将向量s'的份额[s']输出到排名计算部14。
[0044] 在步骤S14中,各秘密计算装置2n的排名计算部14使用向量s'的份额[s'],对0以上m‑1以下的各整数i设定[x'i]:=[m‑i‑s'i‑1],生成若复原则变为组内的降序排名x':=mx'0,…,x'm‑1∈F的份额[x']∈[F]。而且,注意:组内的降序排名变为0开始。若希望得到1开始的排名,则对各排名加上1即可。即,对于0以上m‑1以下的各整数i设定[x'i]:=[m‑i‑s'i],生成降序排名x'即可。排名计算部14将降序排名x'的份额[x']输出到输出部15。
[0045] 在步骤S15中,各秘密计算装置2n的输出部15输出降序排名x'的份额[x']。
[0046] <变形例>
[0047] 在上述的实施方式中,说明了向输入部10输入交叉列表v的份额[v]和置换σ的份额{{σ}}的结构。在变形例中,说明向输入部10输入通过秘密分散等隐匿了表的份额,求出交叉列表v的份额[v]与置换σ的份额{{σ}}后,按照上述的实施方式中说明的步骤计算组内的排名的结构。
[0048] 例如,如图5所示,变形例的秘密计算装置3n(n=1,…,N)不仅包含第一实施方式的秘密计算装置1n(n=1,…,N)或者第二实施方式的秘密计算装置2n(n=1,…,N)具有的各处理部,而且还包含:比特分解部21、组排序生成部22、比特串排序部23、标志生成部24、关键字聚合排序生成部25、标志变换部31、边界号设定部32、排序部33、以及计数计算部34。以下,仅说明与第一实施方式以及第二实施方式的秘密聚合排名系统的不同点。
[0049] 各秘密计算装置3n的输入部10接受将nk个关键字属性k0,…,knk‑1∈Fm分别通过秘m m密分散隐匿后的份额[k0],…,[knk‑1]∈[F]、将na个值属性v0,…,vna‑1∈F分别通过秘密分m
散隐匿后的份额[v0],…,[vna‑1]∈[F]作为输入。其中,nk、na为1以上的整数。以下,[kj]∈m
[F](j=0,…,nk‑1)的各元素也有时以[kj,i]∈[F](i=0,…,m‑1)进行参照。输入部10将关键字属性k0,…,knk‑1的份额[k0],…,[knk‑1]输出到比特分解部21。
[0050] 各秘密计算装置3n的比特分解部21将关键字属性k0,…,knk‑1的份额[k0],…,[knk‑1]比特分解而结合,并得到若复原则变为将关键字属性k0,…,knk‑1的比特表现结合而λ λ成的比特串b:=b0,…,bm‑1∈B的份额{b}∈{B}。其中,λ为比特串b的比特长度,为各bi(i=0,…,m‑1)的比特长度的总和。换言之,{bi}是将关键字属性k0,…,knk‑1的份额[k0],…,[knk‑1]各自的第i个元素[k0,i],…,[knk‑1,i]的比特表现结合而成的比特串。比特分解部21将比特串b的份额{b}输出到组排序生成部22。
[0051] 各秘密计算装置3n的组排序生成部22使用比特串b的份额{b},生成若复原则变为用于将比特串b以升序稳定排序的置换σ0的份额{{σ0}}∈{{Sm}}。比特串b是将关键字属性k0,…,knk‑1的比特表现结合而成的比特串,所以也可以称置换σ0为进行重新排列并分组,以使关键字属性k0,…,knk‑1的值相等的记录连续的操作。组排序生成部22将比特串b的份额{b}和置换σ0的份额{{σ0}}输出到比特串排序部23。
[0052] 各秘密计算装置3n的比特串排序部23使用比特串b的份额{b}和置换σ0的份额{{σ0}},得到若复原则变为将比特串b以置换σ0排序而成的排序完毕比特串b':=b'0,…,λ λb'm‑1∈B的份额{b'}∈{B}。比特串排序部23将排序完毕比特串b'的份额{b'}输出到标志生成部24。
[0053] 各秘密计算装置3n的标志生成部24使用排序完毕比特串b'的份额{b'},对0以上m‑2以下的各整数i设定{ei}:={b'i≠b'i+1},并且设定{em‑1}:={1},生成若复原则变为标m m志e:=e0,…,em‑1∈B的份额{e}∈{B}。标志ei在排序完毕比特串b'的第i个元素b'i与第i+
1个元素b'i+1不同的情况下被设定“真”,所以变为表示各组的最后的元素(即,组间的紧靠边界跟前的元素)的标志。标志生成部24将标志e的份额{e}输出到关键字聚合排序生成部
25。而且,标志生成部24将标志e的份额{e}输出到标志变换部31。
[0054] 各秘密计算装置3n的关键字聚合排序生成部25首先使用标志e的份额{e},生成若m复原则变为作为标志e的非¬e的标志e'的份额{e'}∈{B} 。即,对于0以上m‑1以下的各整数i设定{e'i}:={¬ei}。接着,关键字聚合排序生成部25使用标志e'的份额{e'},生成若复原则变为用于将标志e'按升序稳定排序的置换σ的份额{{σ}}∈{{Sm}}。关键字聚合排序生成部25将置换σ的份额{{σ}}输出到排序部33。而且,关键字聚合排序生成部25将置换σ的份额{{σ}}输出到计数移位部11或者逆置换部12。
[0055] 各秘密计算装置3n的标志变换部31将标志e的份额{e}∈{B}m变换为基于任意的环mF上的秘密分散的份额[e]∈[F] 。标志变换部31将标志e的份额[e]输出到边界号设定部
32。
[0056] 各秘密计算装置3n的边界号设定部32使用标志e的份额[e],对于0以上m‑1以下的各整数i设定[x"i]:=[ei?i+1:m],生成若复原则变为向量x":=x"0,…,x"m‑1∈F的份额m[x"]∈[F]。这里,「?」是条件运算符(或者三项运算符)。即,在[ei]为真(例如,[ei]=[1])时设定[x"i]:=[i+1],在[ei]为假(例如,[ei]=[0])时设定[x"i]:=[m]。向量x"变为如下的向量,即,在以关键字属性将表进行了稳定排序时,将具有相同的关键字属性的值的记录设为相同的组,对各组的最后的元素设定从下一个元素的开头开始的位置,对其它的元素设定表全体的记录数。换言之,对各组的最后的元素,设定将从开头的组至该组为止的各组的记录数累积起来的合计值。边界号设定部32将向量x"的份额[x"]输出到排序部33。
[0057] 各秘密计算装置3n的排序部33使用向量x"的份额[x"]和置换σ的份额{{σ}},生成m若复原则变为将向量x"以置换σ进行了排序的排序完毕向量σ(x")的份额[σ(x")]∈[F] 。
m
以下,[σ(x")]∈[F]的各元素有时也以[σ(x")i]∈[F](i=0,…,m‑1)进行参照。排序部33将排序完毕向量σ(x")的份额[σ(x")]输出到计数计算部34。
[0058] 各秘密计算装置3n的计数计算部34使用排序完毕向量σ(x")的份额[σ(x")],对于1以上min(g,m)‑1以下的各整数i设定[vi]:=[σ(x")i‑σ(x")i‑1],并且,对于min(g,m)以上m‑1以下的各整数i设定[vi]:=[0],并且设定[v0]:=[σ(x")0],生成若复原则变为表示各m
组的记录数(即,交叉列表)的向量v:=v0,…,vm‑1∈F的份额[v]∈[F]。排序完毕向量σ(x")的第i个元素σ(x")i被设定将从第0个至第i个的各组的记录数累积起来的合计值,所以对交叉列表v的第i个元素vi设定第i个组的记录数。计数计算部34将交叉列表v的份额[v]输出到计数移位部11或者逆置换部12。
[0059] 以上,说明了本发明的实施方式,但是具体的结构不限于这些实施方式,不言而喻,在不脱离本发明的宗旨的范围内如有适当设计的变更等,也包含在本发明中。实施方式中说明的各种处理不仅按照记载的顺序按时序被执行,也可以根据执行处理的装置的处理能或者根据需要并行或者单独地被执行。
[0060] [程序,记录介质]
[0061] 在通过计算机实现上述实施方式中说明的各装置中的各种处理功能的情况下,通过程序记述各装置应具有的功能的处理内容。然后,通过计算机执行该程序,在计算机上实现上述各装置中的各种处理功能。
[0062] 记述了该处理内容的程序可以记录在计算机可读取的记录介质中。作为计算机可读取的记录介质,例如可以是磁记录装置、光盘、光磁记录介质、半导体存储器等任何介质。
[0063] 而且,该程序的流通例如通过销售、转让、租借等记录了该程序的DVD、CD‑ROM等可移动记录介质来进行。进而,也可以设为将该程序存储在服务器计算机的存储装置中,经由网络,通过将该程序从服务器计算机转发到其它计算机,使该程序流通的结构。
[0064] 执行这样的程序的计算机例如首先将可移动记录介质中记录的程序或者从服务器计算机转发的程序暂时存储在自己的存储装置中。然后,在执行处理时,该计算机读取自己的存储装置中存储的程序,执行按照读取的程序的处理。而且,作为该程序其它执行方式,计算机也可以从可拆装型记录介质直接读取程序,执行按照该程序的处理,进而,也可以在每次从服务器计算机对该计算机转发程序时,逐次执行按照接受的程序的处理。而且,也可以设为通过不进行从服务器计算机向该计算机的程序的转发,仅通过该执行指令和结果取得来实现处理功能的、所谓ASP(Application Service Provider,应用服务提供商)型的服务,执行上述的处理的结构。而且,本方式中的程序中,包含供电子计算机的处理用的信息即基于程序的信息(虽然不是对于计算机的直接的指令,但是具有规定计算机的处理的性质的数据等)。
[0065] 而且,在本方式中,设为通过在计算机上执行规定的程序来构成本装置,但是也可以硬件性地实现这些处理内容的至少一部分。
QQ群二维码
意见反馈