一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

秘密数组访问装置、秘密数组访问方法以及程序与流程

2021-10-20 02:50:00 来源:中国专利 TAG:数组 而对 写入 应用技术 不公开


1.本发明涉及密码应用技术,特别涉及不公开(revealing)访问的位置而对数组(array)进行数据的读取或写入的技术。


背景技术:

2.作为不复原被加密的数值而得到确定的运算结果的方法,有被称为秘密计算的方法(例如,参照非专利文献1)。在非专利文献1中记载的方法中,进行使数值的片段分散在三个秘密计算装置的加密,三个秘密计算装置进行协调计算,由此无需复原数值,使得加减运算、常数加法运算、乘法运算、常数倍、逻辑运算(与非、逻辑积、逻辑和、异或)、数据形式变换(整数、二进制数)的结果以分散在三个秘密计算装置中的状态原样保持、即以加密的状态能够原样保持。
3.然而,在不公开访问的位置j而进行数组的第j个数据的读取或值w的写入的情况下,经常视为每次访问时都访问了随机的要素(例如,参照非专利文献2、3)。
4.现有技术文献
5.非专利文献
6.非专利文献1:千田浩司、濱田浩気、五十嵐大、高橋克巳、“軽量検証可能3
パーティ
秘匿関数計算的再考”、css、2010年
7.非专利文献2:oded goldreich and rafail ostrovsky,“software protection and simulation on oblivious rams.”j.acm,vol.43,no.3,pp.431

473,1996.
8.非专利文献3:samee zahur,xiao shaun wang,mariana raykova,adria gasc'on,jack doerner,david evans,and jonathan katz,“revisiting square

root oram:efficient random access in multi

party computation.”in ieee symposium on security and privacy,sp 2016,pp.218

234,may 22

26,2016.


技术实现要素:

9.发明要解决的课题
10.但是,在现有技术中,对大小为n的数组的访问需要ω(log n)的通信级数。因此,在通信延迟大的环境中,访问数组所需的时间变大是一个课题。
11.本发明的目的是实现一种秘密数组访问技术,能够在常数级的通信中有效地进行对数组的数据读取和写入,而无需公开访问了的位置。
12.用于解决课题的手段
13.为了解决上述的课题,本发明的一个方式的秘密数组访问装置包括:存储部,存储数组x'

的隐匿值的数组[x'

]、和与隐匿值的数组[x'

]的各要素对应的地址的数组a'

;刷新部,在将随机的置换设为ρ,将用置换ρ对数组x'

进行了置换后的数组设为x

,将用置换ρ对地址的数组a'

进行了置换后的地址的数组设为a

,将以f'为参数并表示从地址向标签的单射的函数设为ag
f’,将随机的参数设为f,将从地址的数组a

的各要素中通过函数
tag
f
计算出的公开标签的数组设为b

时,求出参数f的隐匿值[f]、数组x

的隐匿值的数组[x

]、公开标签的数组b

;以及访问部,对于与从所输入的访问位置j的隐匿值[j]中通过函数tag和参数的隐匿值[f]计算出的标签对应的隐匿值的数组[x

]的要素,进行期望的访问。
[0014]
发明的效果
[0015]
根据本发明的秘密数组访问技术,能够在常数级的通信中有效地进行对数组的数据的读取和写入,而无需公开访问了的位置。
附图说明
[0016]
图1是例示第一实施方式的秘密数组访问装置的功能结构的图。
[0017]
图2是例示第一实施方式的秘密数组访问方法的处理过程的图。
[0018]
图3是例示秘密数组访问方法中的刷新时所执行的处理过程的图。
[0019]
图4是例示由刷新部生成的数据的图。
[0020]
图5是例示秘密数组访问方法中的读取时所执行的处理过程的图。
[0021]
图6是例示秘密数组访问方法中的写入时执行的处理过程的图。
[0022]
图7是例示第二实施方式的秘密数组访问装置的功能结构的图。
[0023]
图8是例示第二实施方式的秘密数组访问方法的处理过程的图。
[0024]
图9是例示秘密数组访问方法中在事先计算时执行的处理过程的图。
[0025]
图10是例示秘密数组访问方法中在事先计算时执行的处理过程的图。
具体实施方式
[0026]
在说明本发明的实施方式之前,说明本说明书中的记述方法以及术语的定义。
[0027]
<记述方法>
[0028]
在文中使用的记号“→”(上标箭头)本来应该记载在紧前面的字符的正上方,但由于文本记法的限制,记载在该字符的紧后面。在数学式中,这些记号记述在本来的位置、即字符的正上方。例如,“a
→”在数学式中用下式表示。
[0029]
【数学式1】
[0030][0031]
将对某值a通过加密或秘密分散等进行隐匿化而得到的值称为a的隐匿值,记述为[a]。另外,将a称为[a]的明文。在隐匿化是秘密分散的情况下,通过[a]参照各秘密计算装置具有的秘密分散的片段的集合。通过a

[i]参照向量a

=(a

[0],a

[1],...)的第i个要素。对于向量a

=(a

[1],a

[2],...,a

[n])和双射(bijection)π:[1,n]

[1,n],将向量a

=(b

[π(1)],b

[π(2)],...,b

[π(n)])这样的向量b

记述为b

=πa

。将向量a

的要素的数量记述为|a

|。
[0032]
<复原>
[0033]
将a的隐匿值[a]作为输入,以下式记述计算成为c=a的值c的处理。
[0034]
【数学式2】
[0035]
c

open([a])
[0036]
<算术运算>
[0037]
加法运算、减法运算、乘法运算的各运算将两个值a、b的隐匿值[a]、[b]作为输入,分别计算a b、a

b、ab的计算结果c1、c2、c3的隐匿值[c1]、[c2]、[c3]。将这些运算的执行分别如下式这样记述。
[0038]
【数学式3】
[0039]
[c1]

add([a],[b]),
[0040]
[c2]

sub([a],[b]),
[0041]
[c3]

mul([a],[b])
[0042]
在不担心导致误解的情况下,将add([a],[b])、sub([a],[b])、mul([a],[b])分别简记为[a] [b]、[a]-[b]、[a]
×
[b]。
[0043]
<等号判定>
[0044]
等号判定的运算将两个值a、b的隐匿值[a]、[b]作为输入,计算a=b的真假值c∈{0,1}的隐匿值[c]。真假值为真时设为1,为假时设为0。将该运算的执行如下式这样记述。
[0045]
【数学式4】
[0046]
[c]

eq([a],[b])
[0047]
<选择>
[0048]
选择的运算将真假值c∈{0,1}的隐匿值[c]和两个值a、b的隐匿值[a],[b]作为输入,计算满足下式的d的隐匿值[d]。
[0049]
【数学式5】
[0050][0051]
将该运算的执行如下式这样记述。
[0052]
【数学式6】
[0053]
[d]

ifelse([c],[a],[b])
[0054]
该运算能够通过下式来实现。
[0055]
【数学式7】
[0056]
[d]

[c]
×
([a]

[b]) [b]
[0057]
<置换的应用>
[0058]
将表示n个隐匿值的列[a

]=([a

[1]],[a

[2]],

,[a

[n]])和双射π:{1,2,

,n}

{1,2,

,n}的隐匿值[π]作为输入,将计算成为b

=πa

的隐匿值的处理用下式记述。
[0059]
【数学式8】
[0060][0061]
<逆置换>
[0062]
将表示双射π:{1,2,

,n}

{1,2,

,n}的隐匿值[π]作为输入,将计算表示成为σ=π
‑1的双射的隐匿值[σ]的处理用下式记述。
[0063]
【数学式9】
[0064]
[σ]

inv([π])
[0065]
<置换的合成>
[0066]
将表示双射π:{1,2,

,n}

{1,2,

,n}的隐匿值[π]和表示双射ρ:{1,2,

,n}

{1,2,

,n}的隐匿值[ρ]作为输入,将计算表示成为的双射的隐匿值[σ]的处理用下式记述。另外,是表示映射的合成的运算符。
[0067]
【数学式10】
[0068]
[σ]

compose([ρ],[π])
[0069]
以下,详细地说明本发明的实施的方式。另外,对于附图中具有相同的功能的构成部分附加相同的号码,省略重复说明。
[0070]
<第一实施方式>
[0071]
第一实施方式的秘密数组访问装置1在进行从数组的读取的情况下,将表示访问位置的隐匿值[j]作为输入,并输出与访问位置对应的数组的要素。秘密数组访问装置1在进行向数组的写入的情况下,将表示访问位置的隐匿值[j]和写入的值的隐匿值[w]作为输入,将与访问位置对应的数组的要素更新为写入的值。如图1所例示那样,秘密数组访问装置1具备存储部10、刷新(refresh)部11、以及访问部12。该秘密数组访问装置1通过进行图2例示的各步骤的处理,实现第一实施方式的秘密数组访问方法。
[0072]
秘密数组访问装置1例如是在具有中央运算处理装置(cpu:central processing unit)、主存储装置(ram:random access memory)等的公知或专用的计算机中读取特别的程序而构成的特别的装置。秘密数组访问装置1例如在中央运算处理装置的控制下执行各处理。输入到秘密数组访问装置1的数据和在各处理中得到的数据例如被保存在主存储装置中,保存在主存储装置中的数据根据需要被读出到中央运算处理装置中,并用于其他处理。秘密数组访问装置1的各处理部的至少一部分可以由集成电路等硬件构成。秘密数组访问装置1所具备的各存储部例如可以由ram(随机存取存储器(random access memory))等主存储装置、由硬盘、光盘或闪存(闪存(flash memory))这样的半导体存储器元件构成的辅助存储装置、或者由关系数据库或密钥价值存储(key value store)等中间件构成。
[0073]
在存储部10中存储了n个隐匿值的数组[x'

]=([x'

[1]],[x'

[2]],

,
[0074]
[x'

[n]])、与隐匿值的数组[x'

]的各要素对应的地址的数组a'

=(a'

[1],a'

[2],

,a'

[n])。其中,n是规定的自然数。a'

的各要素设为互不相同的值。
[0075]
在步骤s11中,刷新部11使用在存储部10中所存储的隐匿值的数组[x'

]和地址的数组a'

,生成如下数据:将隐匿值的数组[x'

]的明文x'

置换后的数组x

=(x

[1],x

[2],

,x

[n])的隐匿值[x

]=([x

[1]],[x

[2]],

,[x

[n]]);以及将与置换后的隐匿值的数组[x

]的各要素对应的地址的数组作为a

=(a

[1],a

[2],

,a

[n])而与置换后的地址的数组a

的各要素一对一地对应的公开标签(tag)的数组b

=(b

[1],b

[2],

,b

[n])。以下,参照图3详细地说明刷新部11的动作。
[0076]
在步骤s111中,刷新部11生成表示随机的置换ρ的隐匿值[ρ]。
[0077]
在步骤s112中,刷新部11将在存储部10中所存储的地址的数组a'

的各要素隐匿化,得到地址的隐匿值的数组[a'

]。
[0078]
在步骤s113中,刷新部11对于在存储部10中所存储的隐匿值的数组[x'

]应用置换[ρ],得到置换后的隐匿值的数组[x

]。即,刷新部11计算式(1)。
[0079]
【数学式11】
[0080][0081]
另外,刷新部11对于地址的隐匿值的数组[a'

]应用置换[ρ],得到置换后的地址的隐匿值的数组[a

]。即,刷新部11计算式(2)。
[0082]
【数学式12】
[0083][0084]
在步骤s114中,刷新部11使用表示随机的参数f的隐匿值[f],对于置换后的地址的隐匿值的数组[a

]计算函数tag
[f]
([a

]),将该计算结果复原,从而得到公开标签的数组b

=(b

[1],b

[2],

,b

[n])。这里,函数tag
[f]
是表示从地址向标签的单射的函数,其动作是通过参数[f]控制的。在输入为隐匿值的情况下,假设函数tag
[f]
在将输入值保持隐匿的状态下执行函数内的各运算。另外,在输入为数组的情况下,假设函数tag
[f]
对于数组的各要素计算函数内的各运算。即,对于1以上且n以下的各整数i,刷新部11计算式(3)。
[0085]
【数学式13】
[0086][0087]
图4例示由刷新部11所生成的数据。置换前的隐匿值的数组[x'

]和地址的数组a'

分别通过相同的置换ρ重新排列,并生成置换后的隐匿值的数组[x

]和置换后的地址的数组a

。即,以隐匿值[x'

[i]]和地址a'

[i]的组合被维持的方式分别被置换。接着,从置换后的地址的数组a

的各要素,通过函数tag
f
,计算一对一地对应的公开的标签,并生成公开标签的数组b

。另外,考虑安全性,地址的数组a'

的重新排列如上述那样,优选在暂时隐匿化的基础上,通过秘密计算来执行。
[0088]
在步骤s12a中,访问部12将表示访问位置j的隐匿值[j]作为输入,读取与访问位置j对应的隐匿值的数组[x

]的要素并输出。以下,参照图5,详细地说明读取时的访问部12的动作。
[0089]
在步骤s121a中,访问部12接受表示访问位置j的隐匿值[j]作为输入。
[0090]
步骤s122a中,访问部12使用表示参数f的隐匿值[f],并对于表示访问位置j的隐匿值[j],计算函数tag
[f]
([j]),将该计算结果复原得到标签t。即,访问部12计算式(4)。
[0091]
【数学式14】
[0092]
t

open(tag
[f]
([j]))

(4)
[0093]
在步骤s123a中,访问部12读取与标签t对应的隐匿值的数组[x

]的要素[x

[d]]的值并输出。另外,“与标签t对应”意思是指,与生成与公开标签的数组b

中的标签t一致的公开标签b

[d]的地址a

[d]成为组。
[0094]
在步骤s12b中,访问部12将表示访问位置j的隐匿值[j]和表示写入的值w的隐匿值[w]作为输入,用写入的值[w]改写与访问位置j对应的隐匿值的数组[x

]的要素。以下,参照图6,详细地说明写入时的访问部12的动作。
[0095]
在步骤s121b中,访问部12接受表示访问位置j的隐匿值[j]和表示写入的值w的隐匿值[w]作为输入。
[0096]
在步骤s122b中,访问部12使用表示参数f的隐匿值[f],对于表示访问位置j的隐匿值[j]计算函数tag
[f]
([j]),并将该计算结果复原,从而得到标签t。即,访问部12计算上
述式(4)。
[0097]
步骤s123b中,访问部12将与标签t对应的隐匿值的数组[x

]的要素[x

[d]]的值跟新为写入的值[w]。
[0098]
<第二实施方式>
[0099]
第一实施方式的秘密数组访问装置1被构成为,每次生成刷新部11为了执行所需要的参数。在第二实施方式中,关于刷新部11使用的参数中可事先生成的参数,预先生成并存储。通过使用预先计算出的参数,能够快速地进行刷新部11的动作。
[0100]
如图7所例示那样,第二实施方式的秘密数组访问装置2除了第一实施方式的存储部10、刷新部11、以及访问部12之外,还具有事先计算部13。该秘密数组访问装置2通过进行图8例示的各步骤的处理,实现第二实施方式的秘密数组访问方法。
[0101]
在步骤s13中,首先,事先计算部13将在存储部10中所存储的地址的数组a'

设定为第0个地址的数组a

(0)
。然后,对于1以上且m以下的各整数k,进行下述的计算。其中,m是规定的自然数。m按照对数组的设想访问数和进行刷新的频率而被任意地设定。
[0102]
第一,事先计算部13生成表示第k个随机的参数f
(k)
的隐匿值[f
(k)
]。第二,事先计算部13生成表示第k个随机的置换ρ
(k)
的隐匿值[ρ
(k)
]。第三,事先计算部13以与第k个置换[ρ
(k)
]对应的方式,生成将地址的数组a'

重新排列后的第k个地址的数组a

(k)
。最后,事先计算部13计算根据第k个地址的数组a

(k)
的各要素计算出的第k个公开标签的数组b

(k)
。即,事先计算部13在第k次的执行时,对于1以上且n以下的各整数i,计算式(5)。
[0103]
【数学式15】
[0104][0105]
具体地说,地址的数组a

(k)
,用第k个置换[ρ
(k)
]将第k

1个地址的数组a

(k

1)
进行置换并计算。即,通过式(6),计算地址的数组a

(k)

[0106]
【数学式16】
[0107][0108]
地址的数组a

(k)
也可以如以下这样计算。首先,生成表示第k个随机的置换π
(k)
的隐匿值[π
(k)
]。接着,将第k

1个置换[π
(k

1)
]的逆置换inv([π
(k

1)
])和第k个置换[π
(k)
]进行合成,从而计算第k个置换[ρ
(k)
]。即,通过式(7)计算置换[ρ
(k)
]。
[0109]
【数学式17】
[0110]

(k)
]

compose([π
(k)
],inv([π
(k

1)
]))

(7)
[0111]
然后,用置换[π
(k)
]对第0个地址的数组a

(0)
进行置换,从而计算地址的数组a

(k)
。即,通过式(8),计算地址的数组a

(k)

[0112]
【数学式18】
[0113][0114]
如果是后者的过程,则在计算第k个地址的数组a

(k)
时,由于不需要第k

1个地址的数组a

(k

1)
,因此能够并行地计算多个地址的数组a

(k)
。因此,能够更快速地进行事先计
算部13的处理。
[0115]
在步骤s11中,刷新部11在第k次的执行时,进行下述的计算。第一,刷新部11将第k次的参数[f
(k)
]设为函数tag
[f]
的参数[f]。第二,刷新部11将第k次的公开标签的数组b

(k)
设为公开标签的数组b

。最后,刷新部11求出用第k置换[ρ
(k)
]将隐匿值的数组[x'

]进行置换后得到的隐匿值的数组[x

]。即,刷新部11计算式(9)。
[0116]
【数学式19】
[0117][0118]
<第三实施方式>
[0119]
在第一实施方式以及第二实施方式中,在进行前一刷新后到进行下一刷新为止,对相同的访问位置的访问参照相同的标签。因此,如果对某个访问位置进行多次访问,则有可能容易推测出访问位置。在第三实施方式中,通过即使访问相同的访问位置也参照不同的标签,从而更难以推测访问位置,提高安全性。
[0120]
在第三实施方式中,将函数tag
f
设为aes

128,将f设为加密密钥。将n、t设为自然数,设n=n t。将地址的数组a

设为a

[i]=i(i∈[1,n]),将访问位置j设为j∈[1,n]。
[0121]
第三实施方式的事先计算部13将m设为足够大的自然数,对于各k∈[1,k],执行在第二实施方式中说明的处理。
[0122]
第三实施方式的刷新部11执行在第二实施方式中说明的处理。另外,第三实施方式的刷新部11将用于存储访问完毕的标签的集合s初始化为空集合。
[0123]
第三实施方式的访问部12如以下这样进行对隐匿值的数组[x

]的读取或者写入。第一,访问部12使用表示参数f的隐匿值[f],对表示访问位置j的隐匿值[j]计算函数tag
[f]
([j]),并得到标签t的隐匿值[t]。即,访问部12计算式(10)。
[0124]
【数学式20】
[0125]
[t]

tag
[f]
([j])

(10)
[0126]
第二,访问部12使用表示参数f的隐匿值[f],对于n |s|计算函数tag
[f]
(n |s|),并得到标签s的隐匿值[s]。即,访问部12计算式(11)。
[0127]
【数学式21】
[0128]
[s]

tag
[f]
(n |s|)

(11)
[0129]
第三,访问部12计算如下那样的真假值c的隐匿值[c]:如果t∈s则c=1,如果不是则c=0。例如,访问部12设为c

0,对于各t'∈s,计算式(12)。
[0130]
【数学式22】
[0131]
[c]

[c] eq([t],t

)

(13)
[0132]
第四,如果c=1则访问部12选择标签s,如果c=0则选择标签t,得到将该选择结果复原后的标签p。即,访问部12计算式(13)。
[0133]
【数学式23】
[0134]
p

open(ifelse([c],[s],[t]))

(13)
[0135]
第五,访问部12计算s

s∪{p},对集合s追加标签p。
[0136]
在进行读取的情况下,访问部12从具有在集合s中所包含的公开标签的隐匿值的数组[x

]的要素中,计算公开标签与标签t一致的要素的值的隐匿值[r]。例如,设[r]

0,
对于各t'∈s,访问部12将i作为b

[i]=t'的数,计算式(14)。
[0137]
【数学式24】
[0138][0139]
在进行写入的情况下,访问部12从具有在集合s中包含的公开标签的隐匿值的数组[x

]的要素中,将公开标签与标签t一致的要素的值改写为写入的值的隐匿值[w]。例如,对于各t'∈s,访问部12将i作为b

[i]=t'的数,计算式(15)。
[0140]
【数学式25】
[0141][0142]
最后,如果|s|≥t,则访问部12将集合s初始化为空集合,并执行刷新部11。
[0143]
在第三实施方式的结构中,能够在o(1)的通信循环(round)下实现保持了将地址隐匿的状态的读写。由于通信循环小,因此能够有效地实现串行下的读写。
[0144]
各实施方式的秘密数组访问装置以及方法,由于预先通过随机的置换来打乱了(shuffle)秘密值的数组,所以即使公开根据数组的要素生成的标签,也不会泄漏与数组的要素的排列相关的信息。对公开的标签的搜索能够以明文执行,另外,如果在标签的计算中使用aes等常数循环的方法,则在标签的计算或与标签对应的要素的搜索中不包含递归的处理。因此,整体上也能够实现常数的通信循环。在现有技术中,由于不进行标签的公开而直接计算要素的位置,所以在要素的位置的计算中包含递归的处理。其结果,需要比常数大的通信循环。
[0145]
以上,对本发明的实施方式进行了说明,但具体的结构不限于这些实施方式,在不脱离本发明的宗旨的范围内,即使有适当设计的变更等,当然也包含在本发明中。在实施方式中说明的各种处理不仅按照记载的顺序时序地执行,也可以根据执行处理的装置的处理能力或者根据需要并行或者单独地执行。
[0146]
[程序、记录介质]
[0147]
在通过计算机实现在上述实施方式中说明的各装置中的各种处理功能的情况下,各装置应具有的功能的处理内容被通过程序来记述。然后,通过由计算机执行该程序,上述各装置中的各种处理功能在计算机上被实现。
[0148]
记述了该处理内容的程序,可以预先记录在计算机可读取的记录介质中。作为计算机可读取的记录介质,例如也可以是磁记录装置、光盘、光磁记录介质、半导体存储器等任何介质。
[0149]
此外,该程序的流通例如通过销售、转让、租借等记录了该程序的dvd、cd

rom等便携式记录介质来进行。进而,也可以设为将该程序保存在服务器计算机的存储装置中,经由网络,通过将该程序从服务器计算机转发到其它计算机,使该程序流通的结构。
[0150]
执行这样的程序的计算机,例如首先将便携式记录介质中记录的程序或者从服务器计算机转发的程序暂时保存在自己的存储装置中。然后,在执行处理时,该计算机读取自己的存储装置中保存的程序,执行按照读取的程序的处理。而且,作为该程序其它实施方式,计算机也可以从便携式记录介质直接读取程序,执行按照该程序的处理,进而,也可以在每次从服务器计算机对该计算机转发程序时,逐次执行按照接受的程序的处理。而且,也
可以设为通过不进行从服务器计算机向该计算机的程序的转发,仅通过该执行指令和结果取得来实现处理功能的、所谓asp(应用服务提供商(application service provider))型的服务,执行上述的处理的结构。再者,在本方式的程序中,假设包含供电子计算机的处理用的信息即基于程序的信息(虽然不是对于计算机的直接的指令,但是具有规定计算机的处理的性质的数据等)。
[0151]
此外,在该方式中,通过在计算机上执行规定的程序来构成本装置,但也可以硬件性地实现这些处理内容的至少一部分。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜