用于离散对数计算的分布式处理系统和方法

文档序号:6380169阅读:331来源:国知局
专利名称:用于离散对数计算的分布式处理系统和方法
技术领域
本发明涉及一种用于离散对数计算的分布式处理系统和方法,更具体地讲,涉及这样的一种用于离散对数计算的分布式处理系统和方法:该分布式处理系统和方法能够通过允许多个操作代理使用预计算表来分布式地处理离散对数计算操作,提高离散对数计算的速度和资源效率。
背景技术
离散对数问题是在与在具有N作为群阶(group order)的有限环中形成的乘法有关的循环群中定义的,是用于当循环群的生成元(generator)是g时针对循环群的各元素当中的给定数(目标元素)y搜索满足y=g~k mod N的k的问题,并且,离散对数问题可以被广泛地用于公钥加密系统等中。在求解离散对数问题的方法当中,使用预计算表的离散对数计算方法也被称为陷门离散对数(TDL),并且,生成预计算表的操作被称为链生成。在TDL中,生成预计算表和计算离散对数的操作如下所述。最初,关于离散对数问题,环的群阶N可以被设置为如等式I所示。[等式I]N=pq(p-1和q_l是具有B-平滑数的大小的一定数量的素因子和具有等于或小于B/2-平滑数的大小的一定数量的素因子的乘积(multiply))这里,在考虑密码稳定的情况下,B通常被设置为等于或大于80的数。如果素因子如上所述地被设置,那么可以定义使用素因子作为群阶的子群。在这种情况下,每一个子群的生成元被称为子生成元。针对与每一个素因子相对应的子群的子生成元,可以生产预计算表。预计算表是用于存储通过下述方式获得的指数和函数值的表:对具有子生成元作为基数并具有不同的任意指数的一定数量的初始值应用诸如r-添加行走(r-adding walk)的迭代函数,并且,预计算表可以针对每一个素因子而生成。针对循环群的各元素当中的给定数(目标元素)y的离散对数问题可以被分成多个小离散对数问题。如果被划分的小离散对数问题中的给定数是y’,那么,为了求解小离散对数问题,需要对具有I,作为基数并具有任意指数的值应用诸如r-添加行走的迭代函数的操作。在应用迭代函数的操作中,小离散对数问题可以使用针对对应的素因子生成的预计算表。如果当在求解离散对数问题的操作中应用迭代函数时获得的值等于预计算表中的函数值,那么可以通过使用预计算表中的先前计算的信息来提高整个操作的效率。此外,在针对给定数生成预计算表并计算离散对数的操作中,必须连续地使用基于模乘法的迭代函数,并且,为了促进模乘法,使用对应于每一个素因子的子群的子生成元的模乘法的结果值可被预先计算,并被存储在被称为模乘法辅助表的表中。与基于使用模乘法辅助表的模乘法促进迭代函数有关的代表算法是标签跟踪(tag tracing),但不限于标签跟踪。如上所述,传统上,当计算发布加密密钥所需的离散对数问题时,已经尝试通过使用标签跟踪或预计算表来提高计算的效率。但是,即使应用使用标签跟踪或预计算表的方法时,也仍需要非常大的操作时间和存储空间,从而无法容易地同时处理大量的加密密钥发布请求。因此,需要一种不是在算法方面而是在系统方面提高计算(例如分布式处理)的效率的技术。

发明内容
本发明提供这样的一种用于离散对数计算的分布式处理系统和方法:该分布式处理系统和方法能够通过允许多个操作代理使用预计算表来分布式地处理离散对数计算操作,提高离散对数计算的速度和资源效率。根据本发明的一个方面,提供一种用于离散对数计算的分布式处理方法,该方法包括:将具有N=pq (p、q为素数)作为模数的循环群的p_l和q_l设置为具有B-平滑数的大小的预定数量的素因子和具有等于或小于B/2-平滑数的大小的预定数量的素因子的乘积,从而生成循环群;第一分配操作,用于与多个操作代理的操作处理速度成比例地将循环群的P-1和q_l的多个素因子分配给所述多个操作代理;请求操作代理生成与分配给每一个操作代理的每一个素因子相对应的模乘法辅助表;第二分配操作,用于基于循环群的P-1和q_l的素因子的大小和操作代理的操作处理速度来将循环群的P-1和q_l的素因子分配给操作代理;请求操作代理生成与分配给每一个操作代理的每一个素因子相对应的预计算表;第三分配操作,为了计算属于循环群的目标元素的离散对数,用于基于循环群的P-1和q_l的素因子的大小和操作代理的操作处理速度来将循环群的P-1和q_l的素因子分配给操作代理;以及请求操作代理通过相应于分配给每一个操作代理的每一个素因子应用用于离散对数计算的迭代函数来搜索答案。第二分配操作可以包括:与操作代理的操作处理速度成比例地将具有等于或小于B/2-平滑数的大小的素因子分配给操作代理。第二分配操作可以包括:与操作代理的操作处理速度成比例地将与具有B-平滑数的大小的每一个素因子相对应的预计算表的初始值分配给操作代理。该方法还可以包括:通过被请求针对每一个素因子生成预计算表或者被请求通过针对每一个素因子应用用于离散对数计算的迭代函数来搜索答案的操作代理,将与每一个被分配的素因子相对应的模乘法辅助表加载到存储器中。第三分配操作可以包括:与操作代理的操作处理速度成比例地将具有等于或小于B/2-平滑数的大小的素因子分配给操作代理。第三分配操作可以包括:按如下方式将要输入到与具有B-平滑数的大小的每一个素因子相对应的迭代函数的函数输入值分配给操作代理:使得应用迭代函数的子集的大小与每一个操作代理的操作处理速度成比例。
根据本发明的另一个方面,提供一种记录有计算机程序的计算机可读记录介质,该计算机程序包括:将具有N=pq (p、q为素数)作为模数的循环群的p_l和q_l设置为具有B-平滑数的大小的预定数量的素因子和具有等于或小于B/2-平滑数的大小的预定数量的素因子的乘积,从而生成循环群的功能;与多个操作代理的操作处理速度成比例地将循环群的P-1和q_l的多个素因子分配给所述多个操作代理的功能;请求操作代理生成与分配给每一个操作代理的每一个素因子相对应的模乘法辅助表的功能;基于循环群的p-ι和q-Ι的素因子的大小和操作代理的操作处理速度来将循环群的P-1和q_l的素因子分配给操作代理的功能;请求操作代理生成与分配给每一个操作代理的每一个素因子相对应的预计算表的功能;为了计算属于循环群的目标元素的离散对数,基于循环群的P-1和q_l的素因子的大小和操作代理的操作处理速度来将循环群的P-1和q_l的素因子分配给操作代理的功能;以及请求操作代理通过相应于分配给每一个操作代理的每一个素因子应用用于离散对数计算的迭代函数来搜索答案的功能。


通过参照附图详细地描述本发明的示例性实施例,本发明的上述和其它特征和优点将变得更加清楚,在附图中:图1是根据本发明实施例的用于离散对数计算的分布式处理系统的框图;图2是根据本发明实施例的由用于离散对数计算的分布式处理系统的操作控制单元执行的分布式处理方法的流程图;图3是根据本发明实施例的用于描述在用于离散对数计算的分布式处理系统的离散对数计算操作中生成用于标签跟踪的辅助表的操作的分布式处理的处理图;图4是根据本发明实施例的用于描述在用于离散对数计算的分布式处理系统的离散对数计算操作中生成预计算表的操作的分布式处理的处理图;图5是根据本发明实施例的用于描述在用于离散对数计算的分布式处理系统的离散对数计算操作中计算离散对数的操作的分布式处理的处理图;以及图6是根据本发明实施例的用于描述在用于离散对数计算的分布式处理系统中的分布式处理的框图。
具体实施例方式前面仅仅说明了本发明的原理。因此,将会认识到,本领域的普通技术人员将能够设计各种布置,尽管在本文中没有明确地描述或示出这些布置,但是,这些布置体现了本发明的原理,并且被包括在本发明的精神和范围内。此外,本文中记载的所有例子和条件语言原则上确切地意欲仅仅出于教导的目的,并且帮助阅读者理解本发明的原理以及发明人对本领域进一步贡献的构思,这些例子和条件语言将被解释为不限于这些具体地记载的例子和条件。此外,本文中记载本发明的原理、方面和实施例及其具体例子的所有陈述意欲涵盖其结构和功能等同物。另外,这种等同物意欲包括当前已知的等同物和将来开发的等同物,即,不管结构如何都执行相同功能的开发的任何组件。在包括被表示为处理器或与处理器类似的概念的功能块的附图中示出的各种装置的功能不仅可以利用特定硬件提供,而且可以利用可执行相关软件的通用硬件提供。当这些功能由处理器提供时,这些功能可以由单个特定处理器、单个可共享处理器或者可以进行多个处理器之间的共享的多个处理器提供。此外,诸如处理器、控制等的术语的使用不应该被解释为限制于能够执行软件的硬件,而应该被解释为间接地包括用于存储软件的数字信号处理器(DSP)硬件、只读存储器(ROM)、随机存取存储器(RAM)和非易失性存储器。其它公知的传统的硬件装置可以被包括在内。通过在本发明的详细描述中公开的实施例,本发明的目的和优点可以被理解并变得更清楚。在本发明的以下描述中,当并入本文中的已知功能和配置的详细描述可能会使本发明的主题不清楚时,将省略对它们的详细描述。将会进一步理解,在本说明书中使用的术语“包括”和/或“包含”说明存在所述的特征、整数、步骤、操作、元素和/或部件,但是不排除存在或添加一个或多个其它的特征、整数、步骤、操作、元素、部件和/或其群组。在下文中,将会通过参照附图解释本发明的实施例来详细地描述本发明。图1是根据本发明实施例的用于离散对数计算的分布式处理系统100的框图。参照图1,分布式处理系统100可以包括操作控制单元110和多个操作代理121至126。分布式处理系统100根据其使用可以包括数十至数万个计算装置,并且,所述计算装置可以按物理机器或虚拟机的形式被驱动。每一个计算装置可以通过使用分配给计算装置的计算资源来执行用于求解离散对数问题的一系列操作。在本发明中,通过使用计算资源执行操作的模块被定义为操作代理121至126,并且,用于控制操作代理121至126的操作的模块被定义为操作控制单元110。操作控制单元110可以与操作代理121至126通信,可以在考虑要由操作代理121至126分布式处理的操作的特性、根据分配给包括操作代理121至126的计算装置的计算资源的操作处理速度等的情况下将操作分布到操作代理121至126中的每一个,并且可以收集操作代理121至126的操作结果。执行给定操作所需的时间可以根据分配给包括操作代理121至126的计算装置的计算资源改变。主要地,该时间可以取决于中央处理单元(CPU)的速度和存储器的大小。操作控制单元Iio可以通过根据操作代理121至126的操作处理速度分布操作来提高整个分布式处理的效率,其中,操作代理121至126的操作处理速度根据上述因素被确定。根据当前实施例的离散对数计算可以主要包括三个操作,例如,(I)生成模乘法辅助表的操作、(2)生成预计算表(链生成)的操作、(3)最终计算离散对数(陷门离散对数(TDL))的操作。最初,模乘法辅助表是用于存储通过使用具有循环群的p-Ι和q-Ι的素因子作为群阶的子群中的每一个的子生成元作为基数来预先计算模乘法的结果值而获得的值的表,并且可以针对每一个素因子而生成。针对每一个素因子生成模乘法辅助表的操作几乎相同,而不管素因子的大小如何。因此,当通过操作代理121至126分布式处理操作时,操作代理121至126中的每一个的操作量与被分配的素因子的数量成比例。因此,操作控制单元110可以划分针对每一个素因子生成模乘法辅助表的操作,并且,可以按以下方式将该操作分配给操作代理121至126中的每一个:使得分配给操作代理121至126中的每一个的素因子的数量与其操作处理速度成比例。
预计算表包括通过对预定数量的初始值应用迭代函数而获得的循环函数值链,其中,所述预定数量的初始值具有每一个子群的子生成元作为基数并具有不同的任意指数,所述子群具有循环群的P-1和q_l的素因子作为群阶。与生成模乘法辅助表的操作一样,可以针对每一个素因子来执行用于生成预计算表的链生成操作。但是,与针对每一个素因子生成模乘法辅助表的操作不同,针对每一个素因子生成预计算表的操作的量根据素因子的大小而明显地改变,这是因为素因子的大小与应用了迭代函数的初始值的数量成比例地增加。因此,操作控制单元110可以在考虑被分配的素因子的大小以及操作代理121至126的操作处理速度的情况下,划分针对每一个素因子的链生成操作,并将其分配给操作代理121 至 126。在最终计算离散对数的操作中,如果通过使用模乘法辅助表对具有属于循环群的目标元素作为基数并具有任意指数的值应用迭代函数而获得的函数值等于存储在预计算表中的函数值,那么通过使用这两个函数值的指数信息来计算目标元素的离散对数。由于离散对数计算的大部分对应于通过应用迭代函数来搜索答案的操作,所以操作的量可以与应用迭代函数的次数成比例。此外,由于必须针对每一个素因子应用迭代函数,所以可以针对每一个素因子来划分和执行应用迭代函数的操作。此外,素因子的大小与应用了迭代函数的初始值的数量成比例,从而,应用迭代函数的次数与素因子的大小成比例地增加。因此,操作控制单元Iio可以在考虑被分配的素因子的大小以及操作代理121至126的操作处理速度的情况下,针对每一个素因子划分和分配应用用于离散对数计算的迭代函数的操作。图2是根据本发明实施例的由用于离散对数计算的分布式处理系统的操作控制单元执行的分布式处理方法的流程图。参照图2,最初,操作控制单元将具有N=pq (p、q为素数)作为模数的循环群的p_l和q_l设置为具有B-平滑数的大小的预定数量的素因子和具有等于或小于B/2-平滑数的大小的预定数量的素因子的乘积,从而生成循环群的功能(S201)。这里,操作控制单元可能不会直接生成循环群,并且,可以请求一个操作代理执行生成循环群的操作,并且可以接收该操作的结果。但是,本发明不限于此。为了通过使用每一个子群的子生成元作为基数来预先计算模乘法的结果值来分布式地处理生成模乘法辅助表的操作(其中,所述子群具有在操作S201中生成的循环群的P-1和q_l的素因子作为群阶),与操作代理的操作处理速度成比例地将循环群的P-1和q_l的多个素因子分配给每一个操作代理(S202)。操作代理被请求生成与在操作S02中分配给每一个操作代理的每一个素因子相对应的模乘法辅助表(S203 )。如果在操作S203中针对每一个素因子的模乘法辅助表被完全生成,那么,为了生成包括通过对具有每一个子群的子生成元作为基数并具有不同的任意指数的预定数量的初始值应用迭代函数而获得的循环函数值链的预计算表(其中,所述子群具有循环群的p-ι和q_l的素因子作为群阶),基于循环群的P-1和q_l的素因子的大小和操作代理的操作处理速度来将循环群的P-1和q_l的素因子分配给操作代理(S204)。在这种情况下,当考虑素因子的大小时,对于具有等于或小于B/2-平滑数的大小的小素因子,由于素因子的大小相对较小并因此通过应用迭代函数生成预计算表的操作的量不会根据素因子的大小而明显地改变,所以与生成模乘法辅助表的操作一样,可以与每一个操作代理的操作处理速度成比例地分配多个素因子。但是,对于具有B-平滑数的大小的大素因子,与小素因子不同,由于通过应用迭代函数生成预计算表的操作的量相对较大,所以可以将该操作分配给多个操作代理。更具体地,在相应于具有B-平滑数的大小的大素因子应用迭代函数的操作中,即,在使用具有大素因子作为群阶的子群的子生成元来针对预定数量的初始值应用迭代函数的操作中,生成对应于大素因子的预计算表的操作可以针对初始值的数量被划分并可以同时由多个操作代理执行,其中,所述大素因子具有B-平滑数的大小。操作代理被请求生成与在操作S204中分配给每一个操作代理的每一个素因子相对应的预计算表(S205)。如果通过使用模乘法辅助表对具有属于在操作S201中生成的循环群的目标元素作为基数并具有任意指数的值应用迭代函数而获得的函数值等于存储在预计算表中的函数值,那么为了通过使用这两个函数值的指数信息来计算目标元素的离散对数,基于循环群的P-1和q_l的素因子的大小和操作代理的操作处理速度来将循环群的P-1和q_l的素因子分配给操作代理(S206 )。操作代理被请求通过相应于在操作S206中分配给每一个操作代理的每一个素因子应用用于离散对数计算的迭代函数来搜索答案(S207 )。在这种情况下,当考虑素因子的大小时,针对具有等于或小于B/2-平滑数的大小的小素因子,由于素因子的大小相对较小并因此应用迭代函数的操作的量没有根据素因子的大小而明显地改变,所以与生成模乘法辅助表的操作一样,可以与每一个操作代理的操作处理速度成比例地分配多个素因子。但是,对于具有B-平滑数的大小的大素因子,与小素因子不同,由于应用迭代函数的操作的量相对较大,所以可以将该操作分配给多个操作代理。更具体地,在相应于具有B-平滑数的大小的大素因子应用迭代函数的操作中,通过相应于素因子和函数输入值应用迭代函数来搜索答案的操作可以被划分并同时由多个操作代理执行。当通过应用用于离散对数计算的迭代函数来搜索答案的操作针对一个素因子而被划分时,如果操作代理之一找到答案,那么针对每一个素因子应用迭代函数的整个操作完成,从而可以停止由其它操作代理应用迭代函数的操作。这样,虽然在图2中未示出,但是,如果从操作代理接收到指示通过针对具有B-平滑数的大小的每一个素因子应用迭代函数而成功地找到答案的搜索成功消息,那么可以将用于请求停止针对具有B-平滑数的大小的每一个素因子应用迭代函数的搜索停止消息发送给被请求针对具有B-平滑数的大小的每一个素因子应用迭代函数的其它操作代理。图3是根据本发明实施例的用于描述在用于离散对数计算的分布式处理系统的离散对数计算操作中生成用于标签跟踪的模乘法辅助表(下文中被称为辅助表)的操作的分布式处理的处理图。图3中示出的分布式处理系统的操作代理321至326和操作控制单元310分别对应于图1中示出的分布式处理系统100的操作代理121至126和操作控制单元110。因此,这里不提供与处理系统100相关地提供的描述。由于根据当前实施例的辅助表可以针对循环群的P-1和q_l的素因子中的每一个来计算,以用于离散对数计算,所以操作控制单元310将素因子分配给操作代理321至326中的每一个(S301),并且,操作代理321至326中的每一个生成对应于被分配的素因子的辅助表(S302 至 S304)。为了优化上述分布式处理的处理时间,按如下方式分配操作,使得操作代理321至326同时完成操作,并且,操作控制单元310可以与操作代理321至326的操作处理速度成比例地分配素因子。如果生成了辅助表,那么操作代理321至326中的每一个存储生成的辅助表(S305至S307),并且,操作控制单元310确认操作S305至S307的完成(S308)。在这种情况下,辅助表可以被存储在用于驱动由其生成辅助表的操作代理的计算装置的本地存储器中,或者被存储在分布式处理系统的分布式数据库中。但是,本发明不限于此。图4是根据本发明实施例的用于描述在用于离散对数计算的分布式处理系统的离散对数计算操作中生成预计算表(下文中被称为链生成)的操作的分布式处理的处理图。图4中示出的分布式处理系统的操作代理321至326和操作控制单元310分别对应于图1中示出的分布式处理系统100的操作代理121至126和操作控制单元110。因此,这里不提供与处理系统100相关地提供的描述。根据当前实施例的链生成操作可以针对循环群的p-1和q_l的每一个素因子被执行,以用于离散对数计算。为了优化上述分布式处理的处理时间,可以按以下方式分配操作,使得操作代理321至326同时完成操作。链生成操作的量明显地受素因子的大小的影响,这是因为在对应于大素因子的链生成操作中,应用用于链生成操作的迭代函数的初始值的数量与素因子的大小成比例地增加。因此,在当前实施例中,链生成操作被分成两个步骤。对应于小素因子(例如,具有等于或小于B/2-平滑数的大小的素因子)的链生成操作最初被分布给操作代理321至326,并由操作代理321至326以素因子为单位来处理(S410至S430),然后,对应于每一个大素因子(例如,具有B-平滑数的大小的素因子)的链生成操作被分布给操作代理321至326,并由操作代理321至326以素因子和初始值为单位来处理(S440至S470)。最初,针对具有等于或小于B/2-平滑数的大小的小素因子,操作控制单元310与操作代理321至326的操作处理速度成比例地分配小素因子(S410),并且,操作代理321至326中的每一个执行对应于被分配的素因子的链生成操作(S411至S413)并存储生成的预计算表(S421至S423)。在与具有等于或小于B/2-平滑数的大小的小素因子相对应的链生成操作完成(S430)之后,操作控制单元310允许由操作代理321至326分布式地处理与具有B-平滑数的大小的大素因子当中的第一大素因子相对应的链生成操作。为此,除了第一大素因子以外,操作控制单元310还将在与具有B-平滑数的大小的大素因子当中的第一大素因子相对应的预计算表中使用的初始值分配给操作代理321至326(S440),并且,操作代理321至326中的每一个执行与被分配的素因子和初始值相对应的链生成操作(S441至S443),并存储生成的预计算表(S451至S453)。在对应于第一大素因子的链生成操作完成(S460)之后,操作控制单元310可以按与对应于第一大素因子的链生成操作(S440至S460)类似的方式重复地执行与其它大素因子中的每一个相对应的链生成操作(S470)。虽然在图4中对应于第一大素因子的链生成操作被分布给所有的操作代理并由它们处理,但是,根据初始值的数量,链生成操作可以只被分布给一些操作代理并由它们处理,并且,对应于第二大素因子或其它大素因子的链生成操作可以被分布给其它操作代理并由它们处理。但是,本发明不限于此。此外,当针对每一个素因子重复地执行链生成操作时,可以使用图3中的针对每一个素因子生成的辅助表。如果辅助表被存储在用于驱动由其生成辅助表的操作代理的计算装置的本地存储器中,那么,为了允许在链生成操作中容易地访问该辅助表,素因子可以被分配给操作代理321至326,如在生成辅助表时分配这些素因子一样。根据当前实施例的由于链生成操作而生成的预计算表可以被存储在图4中所示的分布式处理系统的分布式数据库中。为了通过使用迭代函数的结果值容易地搜索分布式数据库,可以通过使用迭代函数的结果值中除了标签部分(其中,所述标签部分根据标签跟踪的特性针对所有密钥值相同)以外的一部分的预定位(被用作搜索密钥)来确定存储位置。但是,本发明不限于此。图5是根据本发明实施例的用于描述在用于离散对数计算的分布式处理系统的离散对数计算操作中计算离散对数的操作的分布式处理的处理图。图5中示出的分布式处理系统的操作代理321至326和操作控制单元310分别对应于图1中示出的分布式处理系统100的操作代理121至126和操作控制单元110。因此,这里不提供与处理系统100相关地提供的描述。根据当前实施例的应用用于离散对数计算的迭代函数的操作可以针对循环群的P-1和q_l的每一个素因子被执行,以用于离散对数计算。由于离散对数计算的大部分对应于通过执行应用迭代函数的操作来搜索答案的操作,所以应用用于离散对数计算的迭代函数的操作可以针对每一个素因子被分布式地处理。执行应用迭代函数的操作的次数受素因子的大小的影响,这是因为在应用对应于大素因子的迭代函数的操作中,要与素因子一起被输入到迭代函数的函数输入值的数量与素因子的大小成比例地增加。因此,在当前实施例中,应用迭代函数的操作被分成两个步骤。相应于小素因子(例如,具有等于或小于B/2-平滑数的大小的素因子)应用用于离散对数计算的迭代函数的操作最初被分布给操作代理321至326,并由操作代理321至326以素因子为单位来处理(S510至S530),然后,针对每一个大素因子(例如,具有B-平滑数的大小的素因子)应用用于离散对数计算的迭代函数的操作被分布给操作代理321至326,并由操作代理321至326以素因子和初始值为单位来处理(S540至S570)。最初,针对具有等于或小于B/2-平滑数的大小的小素因子,操作控制单元310与操作代理321至326的操作处理速度成比例地分配小素因子(S510),并且,操作代理321至326中的每一个执行相应于被分配的素因子应用用于离散对数计算的迭代函数的操作(S511至S513),并存储应用迭代函数的操作的结果,其中,所述结果包括通过执行应用迭代函数的操作而找到的答案(S521至S523)。在相应于具有等于或小于B/2-平滑数的大小的小素因子应用迭代函数的操作完成(S530)之后,操作控制单元310允许由操作代理321至326分布式地处理相应于具有B-平滑数的大小的大素因子当中的第一大素因子应用迭代函数的操作。为此,除了第一大素因子以外,操作控制单元310还将要输入到与具有B-平滑数的大小的大素因子当中的第一大素因子相对应的迭代函数的函数输入值分配给操作代理321至326 (S540),并且,操作代理321至326中的每一个执行相应于被分配的素因子和初始值应用迭代函数的操作(S541至S543),并存储应用迭代函数的操作的结果,其中,所述结果包括通过执行应用迭代函数的操作而找到的答案(S551)。也就是说,操作控制单元310允许由操作代理321至326通过下述处理来分布式地处理应用迭代函数的操作:针对一个大素因子,将不同的函数输入值分配给操作代理321至326,从而允许操作代理321至326对循环群的不同部分应用迭代函数。例如,如果由具有相同操作处理速度的η个操作代理分布式地处理针对一个素因子应用迭代函数的操作,那么,当在应用r添加行走作为迭代函数的同时通过使用子生成元的指数乘子来执行乘法时,可以通过将第i个操作代理的幂设置为以η为模等于i的数来应用迭代函数。在这种情况下,由于相应于素因子在循环群中应用迭代函数的子集的大小是期望的操作量,所以,操作控制单元310可以按以下方式将函数输入值分配给操作代理321至326:使得应用迭代函数的子集的大小与操作代理321至326中的每一个的操作处理速度成比例。在被分配应用对应于一个素因子的迭代函数的操作的操作代理321至326中,如果一个操作代理完成其操作并获得答案,那么,由于相应于素因子应用迭代函数的操作完成,所以,正在执行应用对应于素因子的迭代函数的操作的其它操作代理可以停止应用迭代函数的操作。例如,如果操作代理322完成其操作并将操作完成消息发送给操作控制单元310,那么操作控制单元310可以接收操作完成消息并可以将操作停止请求消息发送给正在执行应用对应于素因子的迭代函数的操作的其它操作代理310、321和323至326 (S560)。虽然在图5中应用对应于第一大素因子的迭代函数的操作被分布给所有的操作代理并由它们处理,但是,根据函数输入值的数量,应用迭代函数的操作可以只被分布给一些操作代理并由它们处理,并且,应用对应于第二大素因子或其它大素因子的迭代函数的操作可以被分布给其它操作代理并由它们处理。但是,本发明不限于此。此外,当针对每一个素因子重复地执行链生成操作时,可以使用图3中的针对每一个素因子生成的辅助表。如果辅助表被存储在用于驱动由其生成辅助表的操作代理的计算装置的本地存储器中,那么,为了允许在链生成操作中容易地访问该辅助表,素因子可以被分配给操作代理321至326,如在生成辅助表时分配这些素因子一样。用于标签跟踪的辅助表用于链生成和针对每一个素因子应用用于离散对数计算的迭代函数的操作中,并且,可以被加载到操作代理的存储器中,以便提高操作处理速度。因此,在开始针对每一个素因子的离散对数计算操作或链生成操作之前,要在该操作中使用的辅助表可以被加载到存储器中。图6是根据本发明实施例的用于描述在用于离散对数计算的分布式处理系统中的分布式处理的框图。参照图6,三个计算机器610、620和630包括操作控制单元611以及第一至第三操作代理612、622和632。在图6中,假设在循环群的p_l和q_l的素因子当中,4是大的,并且,20是小的。在以下描述中,大素因子被指示为LPl至LP4,并且,小素因子被指示为SPl至 SP20。为了便于解释,假设只有计算机器610、620和630的CPU速度影响操作处理速度,并且,它们是1:1:2。基于以上假设,第一至第三操作代理612、622和632的相对操作处理速度是1:1:2。最初,在针对每一个素因子生成辅助表的操作中,操作控制单元611与第一至第三操作代理612、622和632的相对操作处理速度成比例地分配素因子,而不管素因子的大小如何。也就是说,6个素因子被分配给第一和第二操作代理612和622中的每一个,12个素因子被分配给第三操作代理632。然后,在针对小素因子SPl至SP20中的每一个的链生成操作中,操作控制单元611与第一至第三操作代理612、622和632的相对操作处理速度成比例地分配小素因子SPl至SP20,而不管小素因子SPl至SP20的大小如何。也就是说,5个素因子被分配给与第一和第二操作代理612和622中的每一个,10个素因子被分配给第三操作代理632。在针对大素因子LPl至LP4中的每一个的链生成操作中,操作控制单元611将在针对大素因子LPl至LP4中的一个的预计算表中使用的初始值分配给第一至第三操作代理612、622和632。例如,如果大素因子LPl具有1000个初始值,那么250个初始值可以被分布给第一和第二操作代理612和622中的每一个并由其处理,500个初始值可以被分配给第三操作代理632并由其处理。上述操作可以针对其它的大素因子LP2至LP4中的每一个被重复地执行。然后,在针对小素因子SPl至SP20中的每一个应用用于离散对数计算的迭代函数的操作中,操作控制单元611与第一至第三操作代理612、622和632的相对操作处理速度成比例地分配小素因子SPl至SP20,而不管小素因子SPl至SP20的大小如何。也就是说,5个素因子被分配给与第一和第二操作代理612和622中的每一个,10个素因子被分配给第三操作代理632。在针对大素因子LPI至LP4中的每一个应用迭代函数的操作中,操作控制单元611将要输入到针对大素因子LPl至LP4中的一个的迭代函数的函数输入值分配给第一至第三操作代理612、622和632。例如,当在应用r添加行走作为迭代函数的同时通过使用子生成元的指数乘子来执行乘法时,第一操作代理612可以将指数乘子设置为以4为模等于I的数,第二操作代理622可以将指数乘子设置为以4为模等于3的数,并且,第三操作代理632可以将指数乘子设置为以2为模等于O的数。如果在第一至第三操作代理612、622和632中的每一个执行针对大素因子LPl应用迭代函数的操作的期间第二操作代理622找到答案,那么第二操作代理622将应用迭代函数的操作的结果存储在分布式数据库中,并且通知操作控制单元611找到了答案。操作控制单元611请求第一和第三操作代理612和632停止执行针对大素因子LPl应用迭代函数的操作。上述操作可以针对其它的大素因子LP2至LP4中的每一个被重复地执行。根据本发明,使用预计算表的离散对数计算的分布式处理可以提高离散对数计算的速度和资源效率,可以用于使用离散对数计算的操作,例如,在公钥加密系统中发布私钥的操作,并且,在存在多个机器并频繁地发生私钥发布请求的环境(例如,机器对机器(M2M)环境)中可以适当地驱动加密系统。本发明还可以被实现为计算机可读记录介质上的计算机可读代码。计算机可读记录介质是可以存储数据的任何数据存储装置,其中,所述数据其后可以由计算机系统读取。计算机可读记录介质的例子包括只读存储器(ROM)、随机存取存储器(RAM)、⑶-ROM、磁带、软盘、光学数据存储装置等。计算机可读记录介质还被分布在网络耦合计算机系统上,使得计算机可读代码以分布的方式被存储和执行。此外,用于实现本发明的功能程序、代码和代码段可以容易地被本领域的普通技术人员的程序员解释。虽然参考本发明的示例性实施例已经具体地示出和描述了本发明,但是,本领域的普通技术人员将会理解,在不脱离由权利要求所限定的本发明的精神和范围的情况下,可以对本发明进行各种形式和细节的改变。
权利要求
1.一种用于离散对数计算的分布式处理方法,该方法包括: 将具有N = pq作为模数的循环群的P-1和q-Ι设置为具有B-平滑数的大小的预定数量的素因子和具有等于或小于B/2-平滑数的大小的预定数量的素因子的乘积,从而生成循环群,其中,P、Q为素数; 第一分配操作,用于与多个操作代理的操作处理速度成比例地将循环群的P-1和q_l的多个素因子分配给所述多个操作代理; 请求操作代理生成与分配给每一个操作代理的每一个素因子相对应的模乘法辅助表; 第二分配操作,用于基于循环群的P-1和q_l的素因子的大小和操作代理的操作处理速度来将循环群的P-1和q_l的素因子分配给操作代理; 请求操作代理生成与分配给每一个操作代理的每一个素因子相对应的预计算表; 第三分配操作,为了计算属于循环群的目标元素的离散对数,用于基于循环群的P-1和q_l的素因子的大小和操作代理的操作处理速度来将循环群的P-1和q_l的素因子分配给操作代理;以及 请求操作代理通过相应于分配给每一个操作代理的每一个素因子应用用于离散对数计算的迭代函数来搜索答案。
2.根据权利要求1所述的方法,其中,模乘法辅助表包括使用每一个子群的子生成元作为基数的模乘法的先前计算的结果值,其中,所述子群具有循环群的P-1和q_l的素因子作为群阶。
3.根据权利要求1所述的方法,其中,预计算表包括通过对预定数量的初始值应用迭代函数而获得的循环函数值链,其中,所述预定数量的初始值具有每一个子群的子生成元作为基数并具有不同的任意指数,其中,所述子群具有循环群的P-1和q_l的素因子作为群阶。
4.根据权利要求1所述的方法,其中,离散对数计算包括:如果通过使用模乘法辅助表对具有属于循环群的目标元素作为基数并具有任意指数的值应用迭代函数而获得的函数值等于存储在预计算表中的函数值,那么通过使用这两个函数值的指数信息来计算目标元素的离散对数。
5.根据权利要求1所述的方法,其中,第二分配操作包括:与操作代理的操作处理速度成比例地将具有等于或小于B/2-平滑数的大小的素因子分配给操作代理。
6.根据权利要求1所述的方法,其中,第二分配操作包括:与操作代理的操作处理速度成比例地将与具有B-平滑数的大小的每一个素因子相对应的预计算表的初始值分配给操作代理。
7.根据权利要求 1所述的方法,还包括:通过被请求针对每一个素因子生成预计算表或者被请求通过针对每一个素因子应用用于离散对数计算的迭代函数来搜索答案的操作代理,将与每一个被分配的素因子相对应的模乘法辅助表加载到存储器中。
8.根据权利要求1所述的方法,其中,第三分配操作包括:与操作代理的操作处理速度成比例地将具有等于或小于B/2-平滑数的大小的素因子分配给操作代理。
9.根据权利要求1所述的方法,其中,第三分配操作包括:按如下方式将要输入到与具有B-平滑数的大小的每一个素因子相对应的迭代函数的函数输入值分配给操作代理:使得应用迭代函数的子集的大小与每一个操作代理的操作处理速度成比例。
10.根据权利要求9所述的方法,还包括:如果从操作代理接收到指示通过针对具有B-平滑数的大小的每一个素因子应用迭代函数而成功地找到答案的搜索成功消息,那么将用于请求停止针对具有B-平滑数的大小的每一个素因子应用迭代函数的搜索停止消息发送给被请求针对 具有B-平滑数的大小的每一个素因子应用迭代函数的其它操作代理。
全文摘要
用于离散对数计算的分布式处理系统和方法。可以通过允许多个操作代理分布式地处理下述操作来提高离散对数计算的速度和资源效率生成模乘法辅助表的操作、生成预计算表的操作、以及通过使用预计算表在离散对数计算操作中应用用于离散对数计算的迭代函数来搜索答案的操作。
文档编号G06F17/10GK103150289SQ20121042791
公开日2013年6月12日 申请日期2012年10月31日 优先权日2011年10月31日
发明者权纯睦, 李仙荣, 孙正勋, 尹爻珍 申请人:三星Sds株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1