具体实施方式
综述
以下参考图1到4描述用于从扩展图构造散列函数的系统(例如,系统、装置、计算机可读介质等)和方法。散列函数通过在特定扩展图上走查来构造。对一扩展图的随机走查非常快速地混合,因此散列函数输出在输入消息是均匀地随机的时候一般是均匀的。在一个实现中,该系统和方法使用提取器(extractor)结合扩展图来产生散列函数。在此实现中,输入消息对最小熵(min-entropy)具有特定下限。例如,用密码签署一消息(通过散列来完成)是在向该消息添加“随机填充(random pad)”之后完成的。(该过程将熵注入到签名中)。假设输入消息具有某一少量的熵,则利用提取器来提取该随机性然后根据提取器的输出执行走查。
现在更详细描述用于从扩展图构造散列函数的系统列和方法的这些和其它方面。
示例性系统
尽管并非必需,但是用于从扩展图构造散列函数的系统和方法将在由诸如个人计算机等计算设备执行的计算机可执行指令(程序模块)的一般上下文中描述。程序模块一般包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等等。尽管该系统和方法是在上述上下文中描述的,但是以下所描述的动作和操作也可以用硬件来实现。
图1示出了根据一个实施例的用于从扩展图构造散列函数的示例性系统100。系统100包括计算设备102,它包括耦合到系统存储器106的一个或多个处理单元104。处理器104从程序模块108中取出并执行计算机程序指令,并从系统存储器106存取程序数据110部分。程序模块108包括,例如扩展图散列函数构造模块(“EGHF构造模块”)112和其它程序模块114。其它程序模块114包括,例如操作系统和利用由模块112生成的基于扩展图的散列函数构造116的一个或多个应用程序。存在对其可用这一散列函数构造116的许多应用程序。例如,这一构造可用于实现密码术、散列表、纠错、音频标识、Rabin-Karp串搜索算法等的一个或多个应用程序。
EGHF构造模块112从输入消息118和n个顶点的扩展图120生成散列函数构造116。扩展图118是具有高顶点或边扩展,或者换言之是高度连接的稀疏图。在一个实现中,扩展图118是Ramanujan图。在一个实现中,输入消息118具有一随机性程度(或熵)。
例如,在一个实现中,扩展图120如下确定。设p是质数,并设l(≠p)是另一质数。扩展图G(p,l)具有V作为其顶点集,V是有限域Fq上的超奇异(supersingular)j不变式(j-invariant),q=p2。如果在其j不变式是j1和j2的超奇异椭圆曲线之间有次数为l的同源,则在顶点j1和j2之间有一条边。图G(p,l)被称为是l+1正则Ramanujan图。G(p,l)的顶点数是四元数代数Bp,∞的类数,这大约是p/12。G(p,l)是扩展图120。
在另一实现中,扩展图120是Lubotzky-Phillips-Sarnak扩展图,如在以下“替换实施例”一节中所描述的。
为了生成散列函数构造116,扩展图散列函数构造模块112标识消息118。在一个实现中消息具有熵次数。EG HF构造模块112向构成扩展图120的n个顶点中的每一顶点分配相应的名称或标签。当输入消息具有与其相关联的熵次数时,EG HF构造模块112用一提取器函数来提取(确定)随机性程度。从这一消息中提取随机性的示例性的这样的提取函数和技术在以下题为“从输入中提取随机性”一节中更详细描述。
鉴于标识要随机地走查(访问)的扩展图120的顶点的可配置顶点边约定,构造模块112基于所提取的熵次数(当存在时)或其它客观准则(以下描述)来标识输入消息118的k长度比特段。走查扩展图120的示例性操作在以下题为“示例性过程”一节中更详细描述。与所走查的顶点中的最后一个顶点相关联的相应名称/标签表示散列函数构造114的输出。
从输入中提取随机性
最小熵:设X是在{0,1}n中取值的随机变量。X的最小熵被定义为以下量
分布接近度(closeness):设X和Y是{0,1}d上的两个分布。如果
则它们被认为是ε接近(ε-close)的(ε是实数)。
提取器:如果对最小熵{0,1}n上的任何随机变量X,至少k和Ud({0,1}d上的均匀分布),分布Ext(X,Ud)对Um是ε接近的,则函数Ext:{0,1}n×{0,1}d→{0,1}m被称为(k,ε)提取器((k,ε)-extractor)。
定理:如果Ext:{0,1}n×{0,1}d→{0,1}m是(k,ε)提取器,则对于随机种子σ∈{0,1}d的大多数选择,分布Ext(X,Ud)对Um是ε接近的。
证明:分布Ext(X,Ud)可被描述为在由σ∈{0,1}d索引的分布的簇Xd中均匀地随机选择一分布,其中σ∈{0,1}d由Xd=Ext(X,σ)定义。Ext是提取器的事实意味着这些分布中的许多都对Um是ε接近的(证明结束)。
如果d至少是log2n并且m=k1-α,其中α是任意实数,则多项式时间提取器的构造对于任何k>nγ(γ<1)和ε>0都是已知的。
散列函数的构造
表示对散列函数构造116的输入的随机变量M(即,输入消息118)具有至少为log
1+βn的最小熵,其中n是G(p,l)的顶点数,且β>0。设{0,1}
N是输入空间。为确定M的熵次数122,构造模块112实现提取器函数Ext,并用参数k=log
1+βn来修正函数Ext:{0,1}
N×{0,1}
d →{0,1}
m,ε非常小并且m=Θ(log
1+αn)。出于示例性说明的目的,这些参数被示为“其它数据”124的相应部分。系统100假定N=k
O(1).。构造模块112从{0,1}
d中均匀地随机选取a。给定输入x∈{0,1}
N,构造模块112计算
(即,熵次数122)。该构造的结果是大小为m的串。构造模块112从某一固定顶点v
0开始沿着由
给出的方向对m执行走查,并且散列函数116的输出是走查中的最终顶点的标签。
对于其节点是超奇异椭圆曲线对质数p的模,并且边是椭圆曲线之间次数为l的同源的扩展图,可如下在围绕该图执行走查步骤:
在对应于椭圆曲线E的节点处开始,首先找出E[l]的l扭矩的生成元P和Q。为此:
3.设s=S/lk,其中lk是整除S的l的最大幂(注意k≥2)。
4.从E[l]中随机地选取两个点P和Q:
(b)设P′=sU且Q′=sV,如果P′或Q′等于O,则重复步骤(i)。
5.使用公知的Shank的小步-大步(Baby-steps-Giant-steps)算法,确定Q是否属于由P生成的群。如果是,则重复步骤(d)。
l+1条椭圆曲线上的
中与E同源的j不变式是j
1,…,j
l+1。为找到它们:
(a)对于1≤i≤l,设G1=<Q>且G1+i=<P+(i-1)*Q>。
(b)对于每一i,1≤i≤l+1,使用Vélu公式计算椭圆曲线E/G的j不变式。
如果使用例如具有2同源的超奇异椭圆曲线的图,则可用以下显式方式进行随机走查:在每一步,在找到E的三个非平凡2扭矩点之后,按照其x坐标以预先指定的方式对它们进行排序。然后,对散列函数使用输入比特来确定要选择哪一点来对椭圆曲线求商以到达走查中的下一节点。
散列函数几乎是均匀的证明
按照定理,由扩展图散列函数构造模块112实现的提取器函数的输出接近均匀,并且在扩展图120上进行的走查非常接近随机走查。(走查是随机的仅仅意味着在图上的某一顶点v处,在下一步在其任一相邻点处的可能性是相等的。)现在,由于图G(p,l)具有n个顶点,并且m=Ω(log1+αn),因此走查迅速混合并且输出顶点非常接近均匀。接着,使得以上陈述更精确。在n个顶点的d正则图G(例如)上的O(logn)步的随机走查迅速混合的一种表述方式是
其中ε很小,A是G的邻接矩阵,v可被取作为任一标准单位向量,是向量(1,1,…,1)。矩阵
可被认为是图120上的均匀随机Markov链的转移矩阵。在此实现中,系统100在图120上实现几乎随机的走查。这可被认为是使用矩阵B作为转移矩阵,使得
并且δ是很小的实数(其中符号||||表示矩阵模)。换言之,构造模块112将随机走查摄动一较小的量。以下定理示出该新的随机走查在δ可取得足够小的时候快速混合。
定理:设A和B是两个子随机矩阵,则||Ak-Bk||≤k||A-B||。
证明:可将差Ak-Bk写为
对两边取模并使用||A||=||B||=1的事实(因为它们是子随机矩阵),得到结果。(证明结束)。
由于所进行的随机走查的长度是O(log n)。如果可将参数δ安排如下:
则所得的近似随机走查也将快速混合。这可通过将提取器的参数ε设为等于以下来安排:
抗冲突
在这一散列函数116下明确地找到冲突等效于找到相同l次方的一对超奇异椭圆曲线之间的两个同源。如果图G(p,l)没有小环,则这一问题是非常困难的,因为在曲线之间构造高次同源公知地是计算上的难题。
替换实施例
作为对上述使用图G(p,l)的一种替换,系统100利用了Lubotzky-Phillips-Sarnak扩展图120。设l和p是两个不同的质数,其中l是小质数,而p相当大。还假设p和l≡1mod 4并且l是mod p的二次剩余(这是l(p-1)/2≡1mod p的情况)。用Xl,p来表示具有参数l和p的LPS图。接着定义构成图Xl,p的顶点和边。Xl,p的顶点是PSL(2,Fp)中的矩阵,即不可逆2x2矩阵,其项Fp中,行列式为1,以及对任何矩阵A的等价关系A=-A。给定一行列式为1的2x2矩阵A,顶点的名称将是A的项或-A的项的4元组,取决于在集合{0,...,p-1}4的普通排序中哪一个在字典顺序上更小。接着描述构成图的边。矩阵A连接到矩阵giA,其中gi是以下显式定义的矩阵。设i是满足i2≡-1modp的整数。对等式g0 2+g1 2+g2 2+g3 2=l恰好有8(l+1)个解g=(g0,g1,g2,g3)。在这些解中只有l+1个的g0>0且为奇数,并且对j=1,2,3,gj是偶数。对于每一这样的g,关联矩阵
这给出了PSL(2,Fp)中l+1个矩阵的集合S。gi是此集合中的矩阵。事实是,如果g在S中,则g-1也在S中。此外,由于l很小,因此,该矩阵集合S可通过穷尽搜索非常快地找到。
示例性过程
图2示出了根据一个实施例的用于从扩展图构造散列函数的示例性过程200。出于示例性描述的目的,过程200的操作相对于图1的系统100的组件来描述。组件参考标号最左边的数字指示了该组件首次被描述的特定图。
在框202处,EG HF构造模块112(图1)将输入消息118划分成段。例如,输入消息的长度为N。假设在k正则扩展图120中有n个顶点(每一顶点具有名称/标签),则从任一顶点出发的每一条边的名称将具有log k比特。输入消息118被分解成长度为log k的块。在框204处,EG HF构造模块112走查作为对散列函数的输入的扩展图120。走查如下确定:假定在某一顶点v处,走查中的下一顶点通过从输入中读取下一log k的块以确定从顶点v出发的将遍历的边来确定,该边的另一端点将是走查的下一顶点。例如,EG HF构造模块112从由输入消息118的前k个比特(段/块)指定的第一顶点开始对扩展图120中的边的随机走查。在扩展图120中走查的下一顶点由下一log k比特的块来指定。考虑到指定边的名称如何对应于扩展图120中的顶点的约定,迭代地执行这些运算。一个示例性的这样的约定是对于每一顶点v,存在函数fv:{1,...,k}→E.。由此,fv(1)是从v出发的第一条边,fv(2)是从v出发的第二条边,依此类推。
在框206处,EG HF构造模块112确定所走查的最后一个顶点的标签。在框208处,EG HF构造模块112输出标签作为散列函数的结果。
图3示出了根据一个实施例用于从扩展图构造散列函数的示例性过程。出于示例性描述的目的,过程300的操作相对于图1的系统100的组件来描述。在框302处,扩展图散列函数构造模块(“EGHF构造模块”)112(图1)标识具有熵次数的消息118。在框304处,EGHF构造模块112向扩展图120中的每一顶点分配相应的标签。在框306处,EGHF构造模块112使用提取器函数来确定输入消息118中的熵次数。所确定的次数被示为所提取的熵次数122。在框308处,EGHF构造模块基于所提取的熵次数122走查扩展图120。在框310处,EGHF构造模块112输出与所走查的最后一个顶点的标签以及扩展图120作为散列函数构造116的结果。即,框302到310的操作对应于散列函数构造116的操作。
示例性操作环境
图4示出了其中可全部或部分实现从扩展图构造散列函数的合适的计算环境的一个示例。计算性计算环境400仅为适用于图1的示例性系统以及图2和3的示例性操作的计算环境的一个示例,并非对此处所描述的系统和方法的使用范围或功能提出任何局限。也不应将计算环境400解释为对计算环境400中示出的任一组件或其组合具有任何依赖性或要求。
此处所描述的方法和系统可以使用众多其它通用或专用计算系统环境或配置来操作。适合使用的众所周知的计算系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、多处理器系统、基于微处理器的系统、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。该框架的紧凑或子集形式也可以在诸如手持式计算机或其它计算设备等有限资源的客户机中实现。本发明在其中任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实践。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
参考图4,用于从扩展图构造散列函数的示例性系统包括实现例如图1的系统100的计算机410形式的通用计算设备。以下描述的计算机410的各方面是图1的计算设备102的示例性实现。计算机410的组件可包括但不限于,处理单元420、系统存储器430以及将包括系统存储器的各类系统组件耦合至处理单元420的系统总线421。系统总线421可以是若干种总线结构的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的任一种的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、外围部件互连(PCI)总线(也称为小背板(Mezzanine)总线)。
计算机410通常包括各种计算机可读介质。计算机可读介质可以是可由计算机410访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机410访问的任一其它介质。
通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器430包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)431和随机存取存储器(RAM)432。基本输入/输出系统433(BIOS)包括如在启动时帮助在计算机410内的元件之间传输信息的基本例程,它通常储存在ROM 431中。RAM 432通常包含处理单元420立即可访问和/或当前正在操作的数据和/或程序模块。作为示例而非局限,图4示出了操作系统434、应用程序435、其它程序模块436和程序数据437。
计算机410也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图4示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器441,对可移动、非易失性磁盘432进行读写的磁盘驱动器431,以及对可移动、非易失性光盘436,如CD ROM或其它光介质进行读写的光盘驱动器433。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器441通常通过不可移动存储器接口,如接口440连接到系统总线421,磁盘驱动器431和光盘驱动器433通常通过可移动存储器接口,如接口430连接到系统总线421。
上文讨论并在图4示出的驱动器及其关联的计算机存储介质为计算机410提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图4中,示出硬盘驱动器441储存操作系统444、应用程序443、其它程序模块446和程序数据447。注意,这些组件可以与操作系统434、应用程序433、其它程序模块436和程序数据437相同,也可以与它们不同。应用程序433包括例如图1的计算设备102的程序模块108。程序数据437包括例如图1的计算设备102的程序数据110。这里对操作系统444、应用程序443、其它程序模块446和程序数据447给予不同的标号来说明至少它们是不同的副本。
用户可以通过输入设备,如键盘462和定位设备461(通常指鼠标、跟踪球或触摸垫)向计算机410输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线421的用户输入接口460连接至处理单元420,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。
监视器491或其它类型的显示设备也通过接口,如视频接口490连接至系统总线421。除监视器之外,计算机也可包括其它外围输出设备,如打印机496和音频设备497,它们通过输出外围接口493连接。
计算机410可以使用到一个或多个远程计算机,如远程计算机480的逻辑连接在网络化环境中操作。在一个实现中,远程计算机480表示图1的计算设备102或联网计算机104。远程计算机480可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并根据其具体实现,可以包括许多或所有相对于计算机410所描述的元件,尽管在图4中仅示出了存储器存储设备481。图4描述的逻辑连接包括局域网(LAN)471和广域网(WAN)473,但也可包括其它网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机410通过网络接口或适配器470连接至LAN 471。当在WAN网络环境中使用时,计算机410通常包括调制解调器472或用于通过WAN 473,如因特网建立通信的其它装置。调制解调器472可以是内置或外置的,它通过用户输入接口460或其它适当的机制连接至系统总线421。在网络化环境中,相对于计算机410所描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例而非局限,图4示出远程应用程序483驻留在存储器设备481上。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手段。
结论
尽管以对结构特征和/或方法操作或动作专用的语言描述了用于从扩展图构造散列函数的系统和方法,但是可以理解,所附权利要求书中定义的实现不一定限于所描述的具体特征或动作。相反,系统100的具体特征和操作是作为实现所要求保护的主题的示例性形式而公开的。