秘密读写装置、秘密读写方法、以及程序与流程

文档序号:20621313发布日期:2020-05-06 20:51阅读:173来源:国知局
秘密读写装置、秘密读写方法、以及程序与流程

本发明涉及加密应用技术,特别涉及不公开访问的位置而进行对于数组的数据的读入或写入的技术。



背景技术:

作为不复原加密后的数值而得到确定的运算结果的方法,有称为秘密计算的方法(例如,参照非专利文献1)。在非专利文献1中记载的方法中,进行使数值的片断分散在三个秘密计算装置中的加密,通过三个秘密计算装置进行协调计算,可以不将数值复原,而在被分散在三个秘密计算装置中的状态、即仍被加密的状态下保持加减法、常数加法、乘法、常数倍、逻辑运算(“非”、“与”、“或”、“异或”)、数据形式变换(整数、二进制数)的结果。

在不公开访问的位置i,进行数组的第i数据的读入或对数组的第i数据写入值d的情况下,经常装作已对全部的元素进行了访问(例如,参照非专利文献2)。

现有技术文献

非专利文献

非专利文献1:千田浩司、濱田浩気、五十嵐大、高橋克巳、“軽量検証可能3パーティ秘匿関数計算の再考”、css、2010年

非专利文献2:marcelkellerandpeterscholl,"efficient,obliviousdatastructuresformpc",advancesincryptology-asiacrypt2014,vol.8874oflecturenotesincomputerscience,pp.506-525,2014.



技术实现要素:

发明要解决的课题

但是,在非专利文献2中记载的以往技术,为了在常数级的通信中向大小n的数组进行数据的读入或写入,需要通信量ω(n)。

本发明的目的,是鉴于上述那样的问题点,本发明的目的是,能够以比以往少的通信量,不公开在常数级的通信中访问过的位置而高效地进行对要进行的数组的数据读入或数据写入。

用于解决课题的手段

为了解决上述课题,本发明的秘密读写装置将包含大小为n的隐匿文的数组[a]=([a[0]],[a[1]],…,[a[n-1]])和访问位置x的隐匿文[x]的读入命令、或者包含隐匿文的数组[a]和隐匿文[x]及写入值d的隐匿文[d]的写入命令作为输入,在输入了读入命令时输出隐匿文的数组[a]的第x元素即隐匿文[a[x]],在输入了写入命令时,对隐匿文的数组[a]的第x元素即隐匿文[a[x]]相加隐匿文[d],秘密读写装置包括:存储2个隐匿文的向量[b0]、[b1]构成的写入缓冲器[b]=([b0],[b1])的缓冲器存储单元;在输入了写入命令时,向隐匿文的向量[b0]追加隐匿文[x],向隐匿文的向量[b1]追加隐匿文[d]的缓冲器追加单元;在写入缓冲器[b]的元素数超过了规定的值时,向隐匿文的数组[a]中隐匿文的向量[b0]表示的访问位置相加隐匿文的向量[b1]表示的值的秘密写入单元;在输入了读入命令时,从隐匿文的数组[a]读入第x元素即隐匿文[a[x]]的秘密读入单元;以及向所述隐匿文的数组[a]的第x元素即隐匿文[a[x]]相加未反映值c的隐匿文[c]、即相加所述隐匿文的向量[b1]的元素之中所述隐匿文的向量[b0]表示的访问位置与所述隐匿文[x]表示的访问位置相等的元素的总和的缓冲器加法单元。

发明的效果

按照本发明的秘密读写技术,能够以比以往少的通信量,不公开在常数级的通信中访问过的位置而高效地进行对要进行的数组的数据读入或数据写入。

附图说明

图1是例示秘密读写装置的功能结构的图。

图2是例示秘密读写方法的处理过程的图。

图3是例示秘密读入单元的处理过程的图。

图4是例示秘密写入单元的处理过程的图。

具体实施方式

在说明实施方式之前,说明本说明书中的记述方法以及用语的定义。

<记述方法>

将某个值a通过加密或秘密分散等进行了隐匿化后的值称为a的隐匿文,记述为[a]。而且,将a称为[a]的明文。在隐匿化是秘密分散的情况下,通过[a]参照各秘密计算装置具有的秘密分散的片断的集合。通过a[i]参照向量a=(a0,a1,…)的第i元素。将向量a和向量b的结合记述为a||b。将向量a的元素的数记述为|a|。将实数x的绝对值记述为|x|。

是地板函数,表示实数x以下的最大的整数。

是天花板函数,表示实数x以上的最小的整数。

<加法、减法、乘法>

对隐匿文的加法、减法、乘法的各运算,以两个值a、b的隐匿文[a]、[b]作为输入,分别计算a+b、a-b、ab的计算结果c1、c2、c3的隐匿文[c1]、[c2]、[c3]。分别如下式那样记述这些运算的执行。

[c2]←sub([a],[b]),

[c3]←mul([a],[b])

在不担心导致误解的情况下,将add([a],[b])、sub([a],[b])、mul([a],[b])分别简记为[a]+[b]、[a]-[b]、[a][b]。

<等号判定>

将两个值a、b的隐匿文[a]、[b]作为输入,如下式那样记述计算若a=b则c=1,若a≠b则c=0的隐匿文[c]的处理。

以下,详细地说明本发明的实施方式。而且,对于附图中具有相同的功能的结构部分附加相同的标号,省略重复说明。

如图1中例示的那样,实施方式的秘密读写装置1包括:缓冲器存储单元10、命令判断单元11、秘密读入单元12、缓冲器加法单元13、缓冲器追加单元14、以及秘密写入单元15。该秘密读写装置1通过进行图2中例示的各步骤的处理,实现实施方式的秘密读写方法。

秘密读写装置1例如是在具有中央运算处理装置(cpu:centralprocessingunit)、主存储装置(ram:randomaccessmemory;随机存取存储器)等的公知或者专用的计算机中读入特别的程序而构成的特别的装置。秘密读写装置1例如在中央运算处理装置的控制下执行各处理。输入到秘密读写装置1中的数据或在各处理中得到的数据例如被存储在主存储装置中,主存储装置中存储的数据根据需要被读出至中央运算处理装置,被其它处理利用。秘密读写装置1的各处理单元的至少一部分也可以由集成电路等硬件构成。

以下,参照图2,说明实施方式的秘密读写装置1执行的秘密读写方法。

在缓冲器存储单元10中存储有用于保持被输入的写入命令的写入缓冲器[b]=([b0],[b1])。[b0]是访问位置的隐匿文的向量[b0]=([b0[0]],[b0[1]],…,[b0[m-1]])。[b1]是写入的值的隐匿文的向量[b1]=([b1[0]],[b1[1]],…,[b1[m-1]])。其中,m为写入缓冲器[b]的元素数,m=|[b]|。

在步骤s1-1中,命令判断单元11接受读入命令或者写入命令作为输入。读入命令包含大小为n的隐匿文的数组[a]=([a[0]],[a[1]],…,[a[n-1]])和访问位置x的隐匿文[x]。写入命令包含大小为n的隐匿文的数组[a]=([a[0]],[a[1]],…,[a[n-1]])、访问位置x的隐匿文[x]和写入值d的隐匿文[d]。

在步骤s1-2中,若输入为读入命令,则命令判断单元11将隐匿文的数组[a]和访问位置的隐匿文[x]输出到秘密读入单元12,将处理进至步骤s2。而且,若输入为写入命令,则将隐匿文的数组[a]、访问位置的隐匿文[x]和写入值的隐匿文[d]输出到缓冲器追加单元14,将处理进至步骤s4-1。

在步骤s2中,秘密读入单元12从仍然隐匿了访问位置x的隐匿文的数组[a]读入作为第x元素的隐匿文[a[x]]。从仍然隐匿了访问位置的数组读入元素的方法,例如可以使用在非专利文献2中记载的方法。而且,若使用后述的秘密读入方法,则可以更高效率地进行读入。秘密读入单元12将读出的数组[a]的第x元素即隐匿文[a[x]]输出到缓冲器加法单元13。

在步骤s3-1中,缓冲器加法单元13使用在缓冲器存储单元10中存储的写入缓冲器[b],计算未反映的值c的隐匿文[c]。具体地说,通过式(1)计算隐匿文[c]。

或者,通过式(2)计算未反映的值c的隐匿文[c]。

在步骤s3-2中,缓冲器加法单元13在秘密读入单元12输出的数组[a]的第x元素即隐匿文[a[x]]中相加未反映的值c的隐匿文[c],将隐匿文[a[x]]+[c]设为秘密读写装置1的输出,作为数组[a]的第x元素即隐匿文[a[x]]。

在步骤s4-1中,缓冲器追加单元14将访问位置的隐匿文[x]和写入值的隐匿文[d]追加到被存储在缓冲器存储单元10中的写入缓冲器[b]中。具体地说,设m=|[b]|,并设[b[m]]=([b0[m]],[b1[m]])=([x],[d])。

在步骤s4-2中,缓冲器追加单元14判定写入缓冲器[b]的元素数|[b]|是否超过√n。在写入缓冲器[b]的元素数|[b]|超过的情况(即,|[b]|>√n)下,将处理进至步骤s5。而且,在写入缓冲器[b]的元素数|[b]|为以下的情况(即,)下结束处理。

在步骤s5中,秘密写入单元15使用写入缓冲器[b]中存储的访问位置的隐匿文的向量[b0]=([b0[0]],[b0[1]],…,[b0[m-1]])和写入值的隐匿文的向量[b1]=([b1[0]],[b1[1]],…,[b1[m-1]]),在隐匿了访问位置x的情况下,将写入值的隐匿文[d]加至数组的第x元素即隐匿文a[x]中。在仍然隐匿了访问位置的情况下向数组写入值的方法,例如可以使用非专利文献2中记载的方法。而且,若使用后述的秘密写入方法,则可以更高效地进行写入。

以下,参照图3,说明秘密读入单元12高效地进行从数组的数据读入的方法。

在步骤s12-1中,秘密读入单元12接受大小为n的隐匿文的数组[a]=([a[0]],[a[1]],…,[a[n-1]])和访问位置x的隐匿文[x]作为输入。

在步骤s12-2中,秘密读入单元12创建k个隐匿文的向量[vj]。其中,k为2以上的整数,j为1以上k以下的各整数。具体地说,将m1,m2,…,mk设为满足n≦m1×m2×…×mk的自然数,对于各整数j,将xj设为以式(3)定义的整数,创建第(xjmodmj)元素为1,其它元素为0的、大小mj的隐匿文的向量[vj]。

特别是,若输入的各隐匿文为基于(t,s)shamir秘密分散的份额,则可以将k,mi(i=1,2,…,k)设为式(4)。而且,(t,s)shamir秘密分散是,使将输入的明文分割为s个后的分散值分散在s个秘密计算装置中保持,若聚齐任意的t个份额则可以将明文复原,从不足t个的份额不能获得与明文有关的任何信息的秘密分散。这时,t为1以上的整数,s≧2t-1。

在步骤s12-3-1中,秘密读入单元12将j初始化为1。

在步骤s12-3-2中,秘密读入单元12使用隐匿文的数组[aj-1]创建nj个隐匿文的向量[bj,i]。这时,隐匿文的数组[a]=([a[0]],[a[1]],…,[a[n-1]])作为隐匿文的数组[a0]=([a0[0]],[a0[1]],…,[a0[n-1]])处理。创建的隐匿文的向量[bj,i]的数nj因j的值而不同。具体地说,将nj设为由式(5)定义的整数,将i设为0以上且不足nj的各整数,设[bj,i]=([aj-1[mji+0]],[aj-1[mji+1]],…,[aj-1[mji+mj-1]])(其中,在λ≧|aj-1|时[aj-1[λ]]=0),计算隐匿文的向量[bj,j]。

在步骤s12-3-3中,秘密读入单元12计算将隐匿文的向量[bj,j]和隐匿文的向量[vj]的内积设为第i元素的隐匿文的数组[aj]。

在步骤s12-3-4中,秘密读入单元12判定j+1是否为k以下(j+1≦k),若j+1为k以下,则将j增量(j←j+1),将处理返回至步骤s12-3-2,若j+1大于k(j+1>k),则生成隐匿文的数组[ak]。而且,此时,隐匿文的数组[ak]成为元素数为1的数组。

在步骤s12-4中,秘密读入单元12将元素数为1的隐匿文的数组[ak]作为隐匿文的数组[a]的第x元素即隐匿文[a[x]]输出。

以下,参照图4,说明秘密写入单元15高效地向数组进行数据写入的方法。

在步骤s15-1中,秘密写入单元15接受大小为n的隐匿文的数组[a]=([a[0]],[a[1]],…,[a[n-1]])、访问位置的隐匿文的向量[b0]和写入值的隐匿文的向量[b1]作为输入。以下,访问位置的隐匿文的向量[b0]作为隐匿文[xi]处理,写入值的隐匿文的向量[b1]作为隐匿文[yi]处理。其中,将m设为写入缓冲器[b]的元素数|[b]|,i是0以上且小于m的各整数。

在步骤s15-2中,秘密写入单元15创建表现各值yi的写入目的地地址xi的隐匿文的向量[wi]。具体地说,将n1,n2设为满足n1n2≧n的自然数,创建pi[λ1]qi[λ2]在n2λ1+λ2=xi时为[yi],在其它情况为0的隐匿文的向量[pi]、[qi],将该隐匿文的向量[pi]、[qi]结合,生成隐匿文的向量[wi]=[pi]||[qi]。此时,隐匿文的向量[pi]设为

的元素为1,其它元素为0的大小n1的隐匿文的向量,隐匿文的向量[qi]设为

[qi[ximodn2]]的元素为[yi],其它元素为0的大小n2的隐匿文的向量即可。

特别是,若被输入的各隐匿文若为基于(t,s)shamir秘密分散的份额,则n1、n2可以设为式(6)。而且,(t,s)shamir秘密分散是,使将输入的明文分割为s个分割后的分散值分散保持在s个秘密计算装置中,若聚齐任意的t个份额则可以复原明文,从不足t个的份额不能得到与明文有关的任何信息的秘密分散。这时,t为1以上的整数,s≧2t-1。

在步骤s15-3中,秘密写入单元15将j设为0以上且小于n的各整数,从隐匿文的向量[wi]选择元素,生成隐匿文的向量[uj]、[vj]。具体地说,将i设为0以上且小于m的各整数,将j设为0以上且小于n的各整数,将λ1、λ2设为式(7),

设为式(8)那样,生成隐匿文的向量[uj]、[vj]。

在步骤s15-4中,秘密写入单元15将j设为0以上且小于n的各整数,将隐匿文的向量[uj]和隐匿文的向量[vj]的内积加到隐匿文的数组[a]的第j元素[a[j]]。

本发明的要点是,利用从缓冲器的读入可以以与缓冲器大小成线性的通信量实现,秘密写入方法在缓冲尺寸时可以用o(n)的通信量实现。通过在缓冲尺寸超过√n之前保留实际的写入,读入可以必须以o(√n)的通信量实现,写入可以以除了各次之外,仅1次o(n)的通信量实现。

以上,说明了本发明的实施方式,但是具体的结构不限于这些实施方式,不用说,在不脱离本发明的宗旨的范围内存在的适当设计的变更等,也包含在本发明中。实施方式中说明的各种的处理不仅按照记载的顺序时间序列地执行,也可以根据执行处理的装置的处理能力或者需要并行地或者单独地执行。

[程序,记录介质]

在通过计算机实现上述实施方式中说明的各装置中的各种处理功能的情况下,通过程序记述各装置应具有的功能的处理内容。然后,通过计算机执行该程序,在计算机上实现上述各装置中的各种处理功能。

记述了该处理内容的程序可以记录在计算机可读取的记录介质中。作为计算机可读取的记录介质,例如可以是磁记录装置、光盘、光磁记录介质、半导体存储器等任何介质。

而且,该程序的流通例如通过销售、转让、租借等记录了该程序的dvd、cd-rom等可拆装型记录介质来进行。进而,也可以设为将该程序存储在服务器计算机的存储装置中,经由网络,通过将该程序从服务器计算机转发到其它计算机,使该程序流通的结构。

执行这样的程序的计算机例如首先将可拆装型记录介质中记录的程序或者从服务器计算机转发的程序暂时存储在自己的存储装置中。然后,在执行处理时,该计算机读取自己的存储装置中存储的程序,执行按照读取的程序的处理。而且,作为该程序其它执行方式,计算机也可以从可拆装型记录介质直接读取程序,执行按照该程序的处理,进而,也可以在每次从服务器计算机对该计算机转发程序时,逐次执行按照接受的程序的处理。而且,也可以设为通过不进行从服务器计算机向该计算机的程序的转发,仅通过该执行指令和结果取得来实现处理功能的、所谓asp(applicationserviceprovider,应用服务提供商)型的服务,执行上述的处理的结构。而且,本方式中的程序中,包含供电子计算机的处理用的信息即基于程序的信息(虽然不是对于计算机的直接的指令,但是具有规定计算机的处理的性质的数据等)。

而且,在本方式中,设为通过在计算机上执行规定的程序来构成本装置,但是也可以硬件性地实现这些处理内容的至少一部分。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1