散列算法在处理器上的有效实现的制作方法

文档序号:6494808阅读:268来源:国知局
散列算法在处理器上的有效实现的制作方法
【专利摘要】本发明提供了SHA-512以及类似地SHA-384在ARM处理器上的有效实现。该实现最大化迭代之间的寄存器值的重新使用,以最小化从存储器加载这些值的需要。这是通过以下方式实现的:将迭代归类为偶数迭代和奇数迭代,使得偶数迭代中的计算顺序在奇数迭代中被反转,并且在一次迭代结束时的寄存器值在下一次迭代开始时被耗用。
【专利说明】散列算法在处理器上的有效实现
[0001]相关申请的交叉引用
[0002]本申请基于35U.S.C.§ 119(e)要求于2011年4月6日提交的题为“EfficientImplementation of Hash Algorithm on a Processor”的美国临时申请 N0.61 / 472,422的优先权。美国临时申请N0.61 / 472,422包括示例性系统和方法,并且通过引用的方式完整地并入本文。
【技术领域】
[0003]本发明大体上涉及通信系统和用于操作通信系统的方法,更具体地,涉及散列算法在处理器上的有效实现。
【背景技术】
[0004]在已知的无线电信系统中,基站或接入设备中的发射设备在称作小区的地理区域上发送信号。随着技术的发展,已经引入了更高级的设备,该设备可以提供在以前是不可能的服务。该高级的设备可以包括例如E-UTRAN(演进通用陆地无线电接入网)节点B(eNB)、基站或其它系统和设备。这种高级的设备或者下一代设备通常称作长期演进(LTE)设备,并且使用这种设备的基于分组的网络通常称作演进分组系统(EPS)。接入设备是诸如传统的基站或LTE eNB (演进型节点B)等的任意组件,其可以向诸如用户设备(UE)或移动设备(ME)等的通信设备提供对电信系统中的其它组件的访问。
[0005]在很多UE型的设备中存在的一个问题涉及例如经由散列算法提供安全性。SHA-512是第二代安全散列算法(SHA-2)簇中的散列算法(参见例如FIPS180-3散列标准)。SHA-512包括对由八个64比特的字构成的状态进行80轮重复操作。SHA-512在诸如ARMv5t架构等高级的精简指令集计算机(rise)机器型ARM处理器上的实现是一项富有挑战性的任务,这是因为ARM处理器包括十六个32比特的寄存器,其中一个寄存器是程序计数器(PC),另一个寄存器是堆栈 指针(SP)。因此,SHA-512状态不能完全保存在14个工作寄存器中,每次只有SHA-512状态的一部分被加载到这些寄存器中,并且在被存储回堆栈上之前经历必要的计算。挑战在于优化寄存器利用并且最小化相对漫长的加载操作。
【专利附图】

【附图说明】
[0006]当结合下面的附图考虑下面的详细描述时,可以理解本发明并且获得本发明的大量目的、特征和优点,在附图中:
[0007]图1示出了散列算法中的计算的流的框图。
[0008]图2描绘了可以在其中实现本发明的示例性系统。
[0009]图3示出了包括用户设备(UE)的实施例的无线通信系统。
[0010]图4是包括数字信号处理器(DSP)的示例性UE的简化框图。
[0011]图5是可以由DSP实现的软件环境的简化框图。【具体实施方式】
[0012]提供了用于最大化在迭代结束时包含要在下一次迭代开始时使用的值的寄存器的数量的方法、系统和计算机可用介质。这是通过将SHA-512算法迭代归类为偶数迭代和奇数迭代来实现的,其中,偶数迭代中的计算顺序在奇数迭代中被反转。因此,偶数迭代和奇数迭代一起形成了新的循环迭代。此外,通过仔细地将状态字指派给寄存器来利用诸如ARMv5te等一些更高级的架构的能力,包括数据预加载和双字加载/存储。
[0013]更具体地说,在特定的实施例中,本发明包括将SHA-512以及类似地将SHA-384的迭代归类和展开为偶数迭代和奇数迭代,其中,偶数迭代中的计算顺序在奇数迭代中被反转。因此,偶数迭代和奇数迭代一起形成了新的循环迭代。此外,在特定的实施例中,在一次迭代结束时在寄存器中容易找到的状态字中的一些在下一次迭代开始时被重新使用。此夕卜,在特定的实施例中,在后64次迭代中,在当前8个状态字的位置与针对当前w字的指针之间的偏移保持恒定,当前w字是16个w字中的一个w字,其中,输入块最初被复制在堆栈中并且不断被更新。此外,在特定的实施例中,每16次迭代被组合在一起并且由计数器管理,该计数器存储当前w的索引并且用于确定其它w字的位置并核查循环终止。此外,在特定的实施例中,当对算法的64比特的字进行加载/存储时,将寄存器对R(d)、R(d+1)指派给这些64比特的字,其中,d是偶数并且不等于14,以便如果加载/存储双字指令在目标处理器上可用,则利用这些加载/存储双字指令。
[0014]现在将参照附图来详细描述本发明的各个示例性实施例。虽然在以下描述中阐述了各个细节,但是将清楚的是,可以在没有这些具体细节的情况下实践本发明,并且可以对本文描述的本发明进行多种实现特定的决定,以达到发明人的具体目标,例如,符合将随实现变化的与处理技术或设计有关的约束。虽然这样的开发工作可能是复杂且耗时的,但是对于受益于本公开的本领域技术人员而言仍是例行事务。例如,以框图和流程图的形式而不是详细地示出了所选择的方面,以避免限制本发明或使本发明模糊。此外,本文提供给的详细描述的一些部分是围绕对计算机存储器内的数据执行的算法或运算给出的。这样的描述和表示被本领域技术人员用于向本领域其他技术人员描述和传达他们工作的实质。
[0015]现在参照图1,示出了散列算法中的计算的流的框图。更具体地说,示出了针对散列算法的SHA-2簇的每一次迭代执行的计算。在特定的实施例中,除非另外声明,否则字的长度是64个比特,而处理器寄存器的长度是32个比特。
[0016]在SHA-512以及作为SHA-512的截断版本的SHA-384中,每一次迭代的状态包括八个64比特的字A至H。要散列的块包括十六个64比特的字,这十六个64比特的字在前16次迭代期间通过数据输入被输入算法中并且依次被存储在阵列w中。在剩余的64次迭代中,对4个w字(w[j]、w[j-2]、w[j-7]和w[j_15])计算所示出的函数,并且结果用于更新w[j]并且贡献新的状态值A和E。针对A和E的其它贡献值是由算法针对80次迭代中的每一次迭代i指定的64比特的字Ki和对前一状态值操作的函数Σ 0、Ma1、Σ I和Ch的输出。与A和E不同,其它新的状态值是前一状态的平移副本(即,旧A变为B、B变为C等等)。在实际的实现中,这些值未被复制,而是被存储在堆栈上,其中,分配了适当的空间来在旧A之前存储新A,如图1所示。在每一次迭代中使指针前进。
[0017]与使用零或者算法的前一轮的散列输出对状态值进行初始化的第一次迭代不同,仅需要针对w[j]、A和E的存储指令。因此,在图1中经由实线箭头来更新这些值,而使用虚线箭头来“更新”(重新命名)其它值。在伪代码I中概述了该经典描述。
[0018]伪代码1.SHA-2迭代的伪代码
[0019]1.针对i从O至15,进行以下操作:
[0020]1.1 w[i]=输入的接下来8个字节
[0021]1.2 H+ = Ki
[0022]1.3 H+ = w[i]
[0023]1.4 H+ = Σ I (E)
[0024]1.5 H+=Ch(E,F,G)
[0025]1.6 D+=H
[0026]1.7 存储 D
[0027]1.8 H+ = Σ O (A)
[0028]1.9 H+ = Maj (A, B,C)
[0029]1.10在A之前存储H,其中,H变为新A。
[0030]1.11更新堆栈指针;对所有值重新命名。
[0031]2.针对i从16至79,进行以下操作:
[0032]2.1 j = i modl6
[0033]2.2 w[j]+= ο I (w[ (j_2)modl6])
[0034]2.3 w[j]+= (w[ (j-7)modl6])
[0035]2.4 w[j]+= σ 0 (w[ (j-15) modl6])
[0036]2.5 重复步骤 1.2 至 1.11
[0037]然而,所有值A至H、Ki和w需要从堆栈到寄存器的加载操作以经历指定的函数运算。本实施例通过重新使用来自前一次迭代的仍然处于寄存器中的值来最小化每一次迭代中所需的加载指令的数量。这是通过将算法迭代归类和展开为偶数迭代和奇数迭代来实现的,其中,偶数迭代中的计算顺序在接下来的奇数迭代中被反转,如下文所解释的并且如伪代码2中所概述的。
[0038]伪代码2.新实现的伪代码
[0039]1.1=0
[0040]2.进行以下操作:
[0041 ]2.1 t= Σ O ⑷ +Maj (A, B, C)
[0042]2.2 w[i]=输入的接下来8个字节
[0043]2.3 H+ = w[i]
[0044]2.4 H+ = Ki
[0045]2.5 H+ = Σ I (E)
[0046]2.6 H+ = Ch(E,F, G)
[0047]2.7 D+ = H
[0048]2.8 存储 D
[0049]2.9 H+=t
[0050]2.10在A之前存储H,其中,H变为新A。
[0051]2.11更新堆栈指针;对所有值重新命名。[0052]2.12 i+=l / /当加载Ki和w[i]中的每一个时,其相应指针被更新;不存在包含要增加的i的实际寄存器
[0053]2.13 (值E至H、A在寄存器中,不需要对它们进行加载)
[0054]2.14 H+ = Ch (E, F, G)
[0055]2.15 H+ =E I(E)
[0056]2.16 w[i]=输入的接下来8个字节
[0057]2.17 H+ = w[i]
[0058]2.18 H+ = Ki [0059]2.19 D+ = H
[0060]2.20 存储 D
[0061]2.21 H+ =E O(A)
[0062]2.22 H+ = Maj (A, B, C)
[0063]2.23在A之前存储H,其中,H变为新A。
[0064]2.24更新堆栈指针;对所有值重新命名。
[0065]2.25 i+=l / /当加载Ki和w[i]时,针对它们的指针被更新
[0066]2.26 (值A至C在寄存器中,不需要对它们进行加载)
[0067]判断(while)Ki^ K15 / / 8 次迭代
[0068]3.对于i从16至79,进行以下操作:/ /该循环被展开为4个循环,每一个循环具有8个新的奇偶迭代程序。其中,堆栈指针与w[0]之间的偏移是恒定的
[0069]3.1 t= Σ O (A) +Maj (A, B, C)
[0070]3.2 j = i modl6 / /寄存器用于存储j,并且每隔16次迭代被复位。通过使用恒定的偏移和j,来确定w[j]的位置。
[0071]3.3 w[j]+=o I (w[ (j-2)modl6])
[0072]3.4 w[j]+= (w[ (j-7)modl6])
[0073]3.5w[j]+= σ 0 (w[ (j_15) modl6])
[0074]3.6 H+ = w[j]
[0075]3.7 重复步骤 2.4 至 2.15
[0076]3.8重复步骤3.2至3.6
[0077]3.9 重复步骤 2.18 至 2.25
[0078]3.10 (值A至C和w [j+Ι]在寄存器中,不需要对它们进行加载)
[0079]在第一次迭代(i=0)中,首先对字A至C进行加载,并且计算图1中的值t并将其存储在一对寄存器中。然后,加载剩余的字D至H,计算值U,计算并存储的新值E以及之后的新值A。该偶数迭代结束时,在寄存器中找到的值根据其更新的名字是E至H和A。在接下来的奇数迭代(i = D中直接使用这些值,以首先计算u并且更新新Ε。然后加载B至D,计算t,并且更新新A。现在,在该奇数迭代结束时,容易在寄存器中得到成为A至C的值
H、A和B以在接下来的偶数迭代开始时以与迭代i=0中相同的方式耗用(consume)。因此,偶数迭代及其后的奇数迭代形成了单个新的循环迭代。在我们的新实施方式中针对每一个原始迭代加载的字A至H的平均数量为4 (八次32比特的加载),而不是经典实施方式中的8 (十六次32比特的加载)。[0080]在前16次迭代中的每一次迭代中,加载新Ki并且通过每次将输入数据的八个字节中的一个字节加载到寄存器来形成新W。在迭代中间当在计算出值u或t以后寄存器变得可用时发生该情况,以便不会干扰在迭代开始和结束时的寄存器重新使用。此外,因为Ki的值并且可能还有地址是恒定的并且被硬编码,因此前16次迭代的循环的结束条件可能是核查K15的地址或值;这需要使两个寄存器中的一个保存Ki,直到奇数迭代结束为止。因此,在这些迭代中,不存在用作计数器i的寄存器;在伪代码2中,i是两个寄存器的用于保存当前Ki的地址和输入缓冲中的当前位置的占位符。
[0081]在接下来的64次迭代中,将字《[」]、02]、《[」_7]和w[j_15]从其在堆栈中的位置加载到为字A至H及其更新过程分配的空间的下方。索引j每隔16次迭代回绕(wrap)一次。我们的新颖设计针对每一组16次迭代利用堆栈指针与w[j]的位置之间的恒定偏移;因此,不使用其它寄存器来包含w[j]的地址。取而代之地,一个寄存器用于存储j,j用于计算w字modl6的偏移并且用于终止每一组16次迭代的循环。
[0082]此外,在这64次迭代中,来自奇数迭代的字w[j-15](其索引modl6实际上等于j+Ι)可以在接下来的偶数迭代中重新使用,这是因为在接下来的偶数迭代时它变为w[j]。这是除了先前所述的可以利用值A至C以外的又一重新使用。与经典实施方式相比,这进一步减少了针对迭代的加载指令的平均数量。
[0083]此外,寄存器指派考虑了利用更高级的处理器特征的能力的可能性,具体地说,力口载/存储双字,即,64比特的字,这一点可以在从ARMv5te开始的ARM架构中找到。为了使用加载/存储双字指令,所使用的寄存器必须是两个紧邻的寄存器,一个具有偶数索引而另一个具有顺次的奇数索引,例如,R0、R1,并且偶数寄存器不能是R14。还值得注意的是,如果这种高级架构可用,则我们的实施方式利用预加载指令,这加速了接下来的相应加载指令。然而,在我们的设计中,由于当需要值时寄存器可用性的约束,因此针对每一次迭代,预加载指令的使用局限于一个值;对于所有其它加载的值,最大化当加载值时与当值实际参与计算时之间的指令数量。这种差距拉大(distancing)最大化ARM处理器的流水线架构的利用,并且消除了当在加载值以后立即使用该值的情况下由于存储器存取引起的停转。
[0084]图2示出了适合于执行本文公开的一个或多个实施例的系统200的示例。在各个实施例中,系统200包括处理器210 (其可以称作中央处理单元(CPU)或数字信号处理器(DSP))、网络连接设备220、随机存取存储器(RAM) 230、只读存储器(ROM) 240、辅助存储设备250和输入/输出(I / O)设备260。在一些实施例中,处理器210包括诸如符合ARMv5t架构的ARM处理器等的ARM处理器。在一些实施例中,这些组件中的一些可以不存在,或者可以通过各种组合方式来将这些组件中的一些彼此组合或者与未示出的其它组件进行组合。这些组件可以位于单个物理实体中,或者位于多于一个的物理实体中。本文描述为由处理器210进行的任何动作可以由处理器210单独进行,或者可以由处理器210联合图2中所示出的或未示出的一个或多个组件来进行。
[0085]处理器210执行它可以从网络连接设备220、RAM230或R0M240访问的指令、代码、计算机程序或脚本。虽然仅示出了一个处理器210,但是可以存在多个处理器。因此,虽然将这些指令作为由处理器210执行的来进行讨论,但是这些指令可以由实现为一个或多个CPU芯片的一个或多个处理器210来同时执行、连续地执行或者以其它方式执行。
[0086]在各个实施例中,网络连接设备220可以采取以下形式:调制解调器、调制解调器组、以太网设备、通用串行总线(USB)接口设备、串行接口、令牌环设备、光纤分布式数据接口(FDDI)设备、无线局域网(WLAN)设备、无线电收发机设备(例如,码分多址(CDMA)设备、全球移动通信系统(GSM)无线电收发机设备)、微波接入的全球可互操作性(WiMAX)设备和/或用于连接到网络的其它公知的设备。这些网络连接设备220可以使处理器210能够与以下各项进行通信:互联网或者一个或多个电信网络或者处理器210可以从其接收信息或者处理器210可以向其输出信息的其它网络。
[0087]网络连接设备220还可以能够以电磁波(例如,射频信号或微波频率信号)的形式无线地发送或接收数据。由网络连接设备220发送或接收的信息可以包括已经由处理器210处理的数据或者将由处理器210执行的指令。可以根据对于处理或生成数据或者发送或接收数据而言期望的不同的序列来对数据进行排序。
[0088]在各个实施例中,RAM230可以用于存储易失性数据和由处理器210执行的指令。图2中所示的R0M240可以用于存储指令并且可以存储在执行指令期间读取的数据。与对辅助存储设备250进行访问相比,对RAM230和R0M240 二者进行访问通常更快。辅助存储设备250通常由一个或多个磁盘驱动器或磁带驱动器组成,并且可以用于对数据进行非易失性存储,或者如果RAM230不足以容纳所有工作的数据,则辅助存储设备250可以用作溢出数据存储设备。辅助存储设备250可以用于存储当选择了要执行的程序时而被加载至RAM230中的程序。I / O设备260可以包括液晶显示器(IXD)、触摸屏显示器、键盘、键区、开关、拨号盘、鼠标、轨迹球、语音识别器、读卡器、纸带阅读器、打印机、视频监控器或者其它公知的输入/输出设备。
[0089]图3示出了包括用户设备(UE)302的实施例的无线通信系统。虽然将UE302示出为移动电话,但是UE302可以具有多种形式,其包括:无线手机、寻呼机、个人数字助理(PDA)、便携式计算机、平板电脑或膝上型计算机。很多适合的设备组合了这些功能中的一些或全部。在一些实施例中,UE302不是诸如便携式计算机、膝上型计算机或平板电脑等的通用计算设备,而是诸如移动电话、无线手机、寻呼机、PDA或安装在车辆中的电信设备等的专用通信设备。同样地,UE302可以是具有类似的功能但不是便携式的设备(例如,台式电脑、机顶盒或网络节点),包括这样的设备,或者可以包含在这样的设备中。在这些实施例和其它实施例中,UE302可以支持专门的活动,例如,游戏、存货控制、工作控制和/或任务管理功能等等。
[0090]在各个实施例中,UE302包括显示器304。同样地,UE302包括触摸敏感表面、键盘或通常由用户用于输入的其它输入键306。在这些环境和其它环境中,键盘可以是全字母数字键盘或者简化的字母数字键盘(例如,QWERTY、Dvorak, AZERTY和顺序键盘型),或者具有与电话键区相关联的字母的传统数字键区。同样地,输入键可以包括滚轮、退出键或换码键、轨迹球和可以被向内按压以提供进一步的输入功能的其它导航键或功能键。同样地,UE302可以呈现用于使用户选择的选项、用于使用户驱动的控制以及用于使用户引导的光标或其它指示符。
[0091]UE302还可以接受来自用户的数据输入,其包括要拨打的号码或者用于配置UE302的操作的各个参数值。UE302可以响应于用户命令来进一步执行一个或多个软件或固件应用。这些应用可以将UE302配置为响应于用户交互来执行各种定制的功能。此外,可以通过无线基站310、服务器316、无线网络接入点308或对等UE302在空中(OTA)对UE302进行编程或配置。
[0092]可以由UE200执行的各种应用可以包括使显示器304能够显示网页的网站浏览器。可以经由与诸如基地站等的无线网络接入点308、对等UE302或任何其它无线通信网络312或系统的无线通信来获得网页。在各个实施例中,将无线网络312耦合到诸如互联网等的有线网络314。UE302可以经由无线网络312和有线网络314利用诸如服务器316等的服务器上的信息。服务器316可以提供可以在显示器304上显示的内容。可替换地,UE302可以通过对等UE302来接入无线网络312,其中,对等UE302在中继类型或跳变类型的连接中用作媒介。本领域技术人员将认识到,很多这种实施例是可以的,并且前述内容并不旨在限制本发明的精神、范围或意图。
[0093]图4描绘了可以在其中执行本发明的示例性用户设备(UE)302的框图。虽然描绘了 UE302的各个组件,但是UE302的各个实施例可以包括所列出的组件的子集以及额外的未列出的组件。如图4所示,UE302包括数字信号处理器(DSP)402和存储器404。如图所示,UE302还可以包括天线和前端单元406、射频(RF)收发机408、模拟基带处理单元410、麦克风412、听筒扬声器414、耳机插口 416、输入/输出(I / O)接口 418、可移除存储卡420、通用串行总线(USB)端口 422、短程无线天线子系统424、警报426、键区428、可以包括触摸敏感表面的液晶显示器(LCD) 430、LCD控制器432、电容耦合器(CCD)照相机434、照相机控制器436和全球定位系统(GPS)传感器438。在各个实施例中,UE302可以包括未提供触摸敏感屏幕的另一种显示器。在一个实施例中,DSP402可以在不经过输入/输出接口418的情况下与存储器404直接通信。
[0094]在各个实施例中,DSP402或者某种其它形式的控制器或中央处理单元(CPU)操作以根据存储在存储器404中或者存储在DSP402自身中包含的存储器中的嵌入的软件或固件来控制UE302的各个组件。除了嵌入的软件或固件以外,DSP402还可以执行存储在存储器404中的或者经由信息载体介质(例如,诸如可移除存储卡420等的便携式数据存储介质)或者经由有线或无线网络通信而使得可用的其它应用。应用软件可以包括经编译的一组机器可读指令,这些指令将DSP402配置为提供期望的功能,或者应用软件可以是将由解释器或编译器处理以间接配置DSP402的高级软件指令。
[0095]可以提供天线和前端单元406以在无线信号与电信号之间进行转换,从而使UE302能够发送和接收来自蜂窝网络或者某个其它可用的无线通信网络的信息或者来自对等UE302的信息。在一个实施例中,天线和前端单元306可以包括多个天线以支持波束成型和/或多输入多输出(MMO)操作。如本领域技术人员所公知的,MMO操作可以提供空间分集,空间分集可以用于克服不同的信道条件或者增加信道吞吐量。同样地,天线和前端单元406可以包括天线调谐或阻抗匹配组件、RF功率放大器或低噪声放大器。
[0096]在各个实施例中,RF收发机408提供频移、将接收的RF信号转换到基带并且将基带发射信号转换到RF。在一些描述中,无线电收发机或RF收发机可以被理解为包括其它信号处理功能,例如,调制/解调、编码/解码、交织/解交织、扩频/解扩、逆快速傅里叶变换(IFFT) /快速傅里叶变换(FFT)、循环前缀添加/移除和其它信号处理功能。为了清楚起见,这里的描述将对该信号处理的描述与RF和/或无线电级分开,并且在概念上将该信号处理分配给模拟基带处理单元410或DSP402或其它中央处理单元。在一些实施例中,可以在一个或多个处理单元和/或专用集成电路(ASIC)中合并RF收发机208、天线和前端406的各个部分以及模拟基带处理单元410。
[0097]模拟基带处理单元410可以提供对输入和输出的各种模拟处理,例如对来自麦克风412和耳机416的输入和去往听筒414和耳机416的输出的模拟处理。为此,模拟基带处理单元410可以具有用于连接至使UE302能够用作手机的内置麦克风412和听筒扬声器414的端口。模拟基带处理单元410还可以包括用于连接至耳机或其它免提麦克风和扬声器配置的端口。模拟基带处理单元410可以在一个信号方向上提供数模转换并且在相反信号方向上提供模数转换。在各种实施例中,模拟基带处理单元410的功能中的至少一些可以由数字处理组件(例如由DSP402或由其它中央处理单元)提供。
[0098]DSP402可以执行调制/解调、编码/解码、交织/解交织、扩频/解扩、逆快速傅里叶变换(IFFT) /快速傅里叶变换(FFT)、循环前缀添加/移除以及与无线通信相关联的其它信号处理功能。在一个实施例中,例如在码分多址(CDMA)技术应用中,对于发射机功能,DSP402可以执行调制、编码、交织和扩频,而对于接收机功能,DSP402可以执行解扩、解交织、解码和解调。在另一实施例中,例如在正交频分多址(OFDMA)技术应用中,对于发射机功能,DSP402可以执行调制、编码、交织、逆快速傅里叶变换和循环前缀添加,而对于接收机功能,DSP402可以执行循环前缀移除、快速傅里叶变换、解交织、解码和解调。在其它无线技术应用中,可以由DSP402执行其它信号处理功能以及信号处理功能的组合。
[0099]DSP402可以经由模拟基带处理单元410与无线网络通信。在一些实施例中,通信可以提供互联网连接,从而使用户能够访问互联网上的内容并且发送和接收电子邮件或文本消息。输入/输出接口 418将DSP402和各种存储器和接口互连。存储器404和可移除存储卡420可以提供软件和数据,以配置DSP402的操作。接口可以包括USB接口 422和短程无线通信子系统424。USB接口 422可以用于为UE302充电,并且还可以使UE302能够用作外围设备,以与个人计算机或其它计算机系统交换信息。短程无线通信子系统424可以包括红外线接口、蓝牙接口、符合IEEE802.11的无线接口或可以使UE302能够与其它附近的移动设备和/或无线基站进行无线通信的任意其它短程无线通信子系统。
[0100]输入/输出接口 418可以进一步将DSP402与警报426连接,其中,当触发警报426时,该警报426使UE302例如通过响铃、播放旋律或振动向用户提供通知。警报426可以用作用于通过无声振动或通过针对特定呼叫方播放专门预先指派的旋律来警告用户存在各种事件(如,传入呼叫、新文本消息以及约会提醒)中的任意一个事件的机制。
[0101]键区428经由I / O接口 418耦合至DSP402以提供一种使用户进行选择、输入信息并且以其它方式向UE302提供输入的机制。键盘428可以是全字母数字键盘或者简化的字母数字键盘(例如,QWERTY、Dvorak、AZERTY和顺序键盘型),或者具有与电话键区相关联的字母的传统数字键区。同样地,输入键可以包括滚轮、退出键或换码键、轨迹球和可以被向内按压以提供进一步的输入功能的其它导航键或功能键。另一输入机制可以是LCD430,IXD430可以包括触摸屏能力并且还向用户显示文本和/或图形。IXD控制器432将DSP402耦合至LCD430。
[0102]CXD照相机434(如果装备有的话)使UE302能够拍摄数字照片。DSP402经由照相机控制器436与CCD照相机434通信。在另一实施例中,可以使用根据除了电荷耦合器照相机以外的技术操作的照相机。GPS传感器438耦合至DSP402以对全球定位系统的信号进行解码,从而使UE302能够确定其位置。还可以包括各种其它外围设备,以提供额外的功能,例如无线电接收和电视接收。
[0103]图5示出了可由DSP402执行的软件环境502。DSP402执行操作系统驱动器504,操作系统驱动器504提供其余软件通过其操作的平台。操作系统驱动器504向UE302的硬件提供具有可以访问应用软件的标准接口的驱动器。操作系统驱动器504包括:应用管理服务(AMS) 506,其在UE302上运行的应用之间传递控制。图5中还示出了网站浏览器应用508、媒体播放器应用510和Java应用512。网站浏览器应用508将UE302配置为用作网站浏览器,从而允许用户将信息输入表格并且选择用于取回和浏览网页的链接。媒体播放器应用510将UE302配置为取回和播放音频或视听媒体。Java应用512将UE302配置为提供游戏、实用工具和其它功能。组件514可以提供本文描述的功能。本文所描述的UE302、基站310和其它组件可以包括能够执行与上述动作有关的指令的处理组件。
[0104]虽然本公开中已经提供了多个实施例,但是应当理解的是,在不偏离本公开的精神或范围的情况下,可以以许多其它具体形式来体现所公开的系统和方法。本示例应被认为是示意性而非限制性的,并且并不旨在局限于本文给出的细节。例如,各种元件或组件可以组合或集成在另一系统中,或者可以省略或不实现某些特征。
[0105]如本文所使用的,术语“组件”、“系统”等旨在指代与计算机相关的实体,其是硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。举例说明,在计算机上运行的应用和计算机本身都可以是组件。一个或多个组件可以驻留在执行进程或线程内,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。
[0106]如本文所使用的,术语“用户设备”和“UE”可以是指无线设备,例如,移动电话、个人数字助理(PDA)、手提电脑或膝上型计算机或者具有电信能力的类似设备或其它用户代理(“UA”)。在一些实施例中,UE可以指代移动台、无线设备。术语“UE”可以是指具有类似的功能但通常不是便携式的设备,例如,台式电脑、机顶盒或网络节点。
[0107]此外,所公开的主题可以被实现为系统、方法、装置或制品,其使用标准的编程和/或工程技术产生软件、固件、硬件或其任意组合,以控制基于计算机或处理器的设备来实现本文详细描述的方面。本文使用的术语“制品”(或者可替换地“计算机程序产品”)旨在涵盖任意计算机可读设备、载体或介质可访问的计算机程序。例如,计算机可读介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁带等)、光盘(如压缩光盘(CD)或数字多功能光盘(DVD)等)、智能卡和闪存设备(例如,卡、棒等)。当然,本领域技术人员将认识到,在不偏离要求保护的主题的范围或精神的情况下,可以对该配置做出多种修改。
[0108]本文使用“示例性” 一词来表示用作示例、实例或例证。本文描述为“示例性”的任意方面或设计不一定被理解为比其它方面或设计更优选或更具优势。本领域技术人员将认识到,可以在不偏离要求保护的主题的范围、精神或意图的情况下对该配置做出多种修改。此外,所公开的主题可以被实现为系统、方法、装置或制品,其使用标准的编程和工程技术产生软件、固件、硬件或其任意组合,以控制基于计算机或处理器的设备来实现本文详细描述的方面。
[0109]此外,在不偏离本公开的范围的情况下,在各个实施例中描述和示出为分立的或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或结合在一起。示出或讨论为相互耦合或直接耦合或通信的其它项可以通过某个接口、设备或中间组件间接耦合或通信,不论是电气的、机械的还是以其它方式。本领域技术人员可以确定改变、替换和变化的其它示例,并且在不偏离本文公开的精神和范围的情况下进行所述改变、替换和变化的其它示例。虽然已经详细地描述了本发明,但是应当理解的是,可以在不偏离由所附权利要求限定的本发明的精神和范围的情况下,对本发明进行各种改变、替换和变化。
【权利要求】
1.一种用于最大化在散列算法的迭代结束时将在下一次迭代中使用的寄存器的数量的方法,所述方法包括: 将安全散列算法迭代归类和展开为偶数迭代和奇数迭代; 反转所述偶数迭代中的计算顺序,成为所述奇数迭代中的计算顺序;以及 对偶数迭代和奇数迭代进行组合以提供新的循环迭代。
2.根据权利要求1所述的方法,其中, 所述安全散列算法包括SHA-512算法和SHA-384算法中的至少一个。
3.根据权利要 求1所述的方法,其中, 通过将状态字指派给高级处理器架构中的寄存器,来利用所述高级处理器架构的能力。
4.根据权利要求3所述的方法,其中, 所述高级处理器架构包括ARM型处理器。
5.根据权利要求3所述的方法,其中, 所述能力包括数据预加载以及双字加载和存储。
6.根据权利要求3所述的方法,还包括: 在下一次迭代开始时耗用在迭代结束时驻留在所述寄存器中的状态值。
7.根据权利要求1所述的方法,还包括: 在所述散列算法的后64次迭代中,使当前8个状态字的位置与针对当前w字的指针之间的偏移保持恒定。
8.根据权利要求7所述的方法,其中, 所述当前w字是16个字中的一个字;以及 输入块最初被复制在状态中并且不断被更新。
9.根据权利要求1所述的方法,其中, 所述散列算法的每16次迭代被组合在一起并且由计数器管理,所述计数器存储当前w字的索引,所述计数器用于确定其它w字的位置并且确定循环终止。
10.根据权利要求1所述的方法,还包括: 当加载和存储64比特的字时,将寄存器对R(d)、R(d+l)指派给所述64比特的字;以及其中, d是不等于14的偶数,以利用所述处理器的双字指令。
11.一种用于最大化在散列算法的迭代结束时将在下一次迭代中使用的寄存器的数量的系统,所述系统包括能够由处理器执行以进行以下操作的指令: 将安全散列算法迭代归类和展开为偶数迭代和奇数迭代; 反转所述偶数迭代中的计算顺序,成为所述奇数迭代中的计算顺序;以及 将偶数迭代和奇数迭代进行组合以提供新的循环迭代。
12.根据权利要求11所述的系统,其中, 所述安全散列算法包括SHA-512算法和SHA-384算法中的至少一个。
13.根据权利要求11所述的系统,其中, 通过将状态字指派给高级处理器架构中的寄存器,来利用所述高级处理器架构的能力。
14.根据权利要求13所述的系统,其中, 所述高级处理器架构包括ARM型处理器。
15.根据权利要求13所述的系统,其中, 所述能力包括数据预加载以及双字加载和存储。
16.根据权利要求13所述的系统,还包括: 在下一次迭代开始时耗用在迭代结束时驻留在所述寄存器中的状态值。
17.根据权利要求11所述的系统,还包括: 在所述散列算法的后64次迭代中,使当前8个状态字的位置与针对当前w字的指针之间的偏移保持恒定。
18.根据权利要求17所述的系统,其中, 所述当前w字是16个字中的一个字;以及 输入块最初被复制在状态中并且不断被更新。
19.根据权利要求11所述的系统,其中, 所述散列算法的每16次迭代被组合在一起并且由计数器管理,所述计数器存储当前w字的索引,所述计数器用于确定其它w字的位置并且确定循环终止。
20.根据权利要求11所述的系统,还包括: 当加载和存储64比特的字时,将寄存器对R(d)、R(d+1)指派给所述64比特的字,其中, d是不等于14的偶数,以利用所述处理器的双字指令。
【文档编号】G06F21/00GK103477341SQ201280017281
【公开日】2013年12月25日 申请日期:2012年4月5日 优先权日:2011年4月6日
【发明者】内文·莫里斯·纳斯夫·艾贝德, 罗伯特·约翰·兰伯特 申请人:塞尔蒂卡姆公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1