专利名称:用于实现密码散列函数的设备和方法
技术领域:
本发明涉及密码学领域。具体地,本发明涉及一种用于执行密码散列函数的装置和方法。
背景技术:
密码散列函数被计算设备用于安全通信。散列函数是一种机制,用于将任意长度的消息映射为较小固定长度的消息。这些所谓的消息散列值旨在用作消息自身的紧凑代表图像。因此,有时散列值称作数字指纹。关于散列函数的基本要求在于,散列函数必须难以伪造,即只知道散列值的话,应该不允许有效地计算被映射到该散列值的消息(所谓的抗原象)。
其它要求可能在于应该难以找到映射为相同散列值的两个不同消息(所谓的抗冲突),以及在给定消息和相应散列值的情况下,应该难以找到映射到该相同散列值的另一消息(所谓的抗第二原象)。典型地,如果散列函数将任意二进制串映射为i比特散列值,则对于散列函数,目标在于大致提供抗i比特原象、抗i比特第二原象和抗i/2比特冲突。典型地,在考虑所有这三个安全目标的情况下,设计散列函数,但是随应用而发生改变。如破译SHA-I的近来密码学发展所证明的,非常难设计好的散列函数,其中,SHA-I是输出大小为160比特的散列函数,其中仅不得不将抗80比特冲突的先前估计向下修订为小于63比特,在互连计算技术的当前状态下这很难是足够的。大多数现代散列函数是迭代散列函数,即被设计为迭代过程,包括输入消息的固定大小块的连续处理(经由所谓的压缩函数)。为此,将任意长度的散列输入X格式化,使
得其可以被分为要连续地提供给压缩函数的固定长度的输入串X1.....Xt。然后,压缩函数
基于接收的固定输入和初始公知的状态来迭代地处理这些输入,从而转换压缩函数的内部状态。然后,将该迭代处理得到的最终内部状态映射为散列值。格式化过程可能需要将额外比特附加(填充)到输入串,以确保结果比特串的长度是压缩函数的固定大小块的整数因子倍。关于填充的主要要求在于,在给定填充后的串X I |pad(x)的情况下,应该能够毫无疑义地提取出未填充串X。基于安全原因,填充通常包括将固定大小的串附加到输入串,来指示未填充的输入串的比特长度(Merkle- Damgard加强(或MD加强))。MD加强具有以下效果通过使用MD填充输入串不能是另一 MD填充输入串的后缀这一安全性论证,迭代散列函数的压缩函数上的可证明结果转至散列函数本身。具有n比特的固定大小输入长度编码的MD填充允许大小小于Z比特(或者在始终以单位(例如,八进制串,而非比特串)来测量所有输入串的情况下,是2n个单位)的散列输入。通常,通过将随后跟着多个“0”比特的比特“I”附加到无填充输入串来实现无歧义的填充,因而能够通过以下步骤从x| I I 0…0中无歧义地提取出任何输入串X:从右至左扫描填充串,直到碰到第一个“I”比特(因而,该“I”比特充当分隔符)为止。备选方案是可能的(包括互换填充信息中的“ I”符号和“0”符号),但是如果预先不知道输入串的大小,则始终需要使用至少一个附加比特。如果压缩函数在B比特输入串上运算,且如果MD格式化使用长度信息的n-比特编码,则可以通过以下步骤来从L比特输入串X中获得填充串x||l 0...0 I |Len(x):计算最小非负整数k使得L+1+k+n三0 (mod B),挑出k个“0”比特并用整数L的n比特表示来替换Len(x)。
图I是示出了计算设备的示图。图2是示出了图I的计算设备的通信子系统的示图。
图3是示出了对输入至密码散列函数的消息进行准备的方法的示图。图4是示出了图3中设置长度块中的比特的实施例的示图。图5是示出了图3中设置长度块中的比特的实施例的示图。图6是示出了图3中设置长度块中的比特的实施例的示图。图7是示出了图3中设置长度块中的比特的实施例的示图。图8是示出了图3中设置长度块中的比特的实施例的示图。
具体实施例方式在想要交换大小比可以使用长度块来编码的消息的最大大小要大的消息的情况下,产生了问题。为了符合标准且保持与使用标准的所有设备和程序的可互操作性,必须将消息分解为分离的片段,用于散列和发送,其中每个片段不大于长度块允许的最大消息大小。然后,在将消息片段重新组装为原始消息之前必须独立地验证各个消息片段。在实施例中,提供了一种计算设备实现的方法,用于准备输入至密码散列函数的消息,该消息具有数目为比特长度的多个比特,在长度上小于或等于预定最大大小,密码散列函数在预定块大小为B比特的块上运算,所述计算设备包括与存储器进行通信的用于处理消息的处理器。所述方法可以包括处理器通过添加足够的填充比特和长度为n比特的长度块,使得填充后消息的填充比特长度是块大小B的整数因子倍,来填充消息;处理器设置长度块的比特,使得如果比特长度小于2n比特,则长度块的比特表示比特长度;以及如果比特长度大于或等于2n比特,则将长度块中当长度块指示块大小B倍数的消息长度时未使用的比特设置为预定值,使得长度块不表示比特长度。在实施例中,所述方法可以包括处理器将存储器地址位置分配给消息的比特、填充比特和长度块;以及设置比特可以包括处理器调整与每个比特相对应的存储器地址位置中的值。在一个方面,所述方法还可以包括在处理器填充消息之前,处理器确定消息的比特长度。在所述方法的这个方面,确定步骤可以包括读取存储器中存储的数据值。在所述方法的这个方面,确定步骤可以包括估计消息的比特长度。在所述方法的这个方面,预定值可以是与以下所有值不同的固定数字能够用于表示长度小于2n比特的块大小B倍数消息的比特长度的值。在所述方法的这个方面,预定值可以是全“I”比特。
在所述方法的这个方面,长度块可以被设置为所述整数因子。在所述方法的这个方面,处理器通过计算比特长度模2n来计算所述预定值,以输入存储器。在所述方法的这个方面,填充步骤还可以包括,如果比特长度大于或等于2n比特,则添加足够大小的扩展长度块,来表示高达所述预定最大大小的比特长度,以包括填充消息;以及设置步骤还包括,处理器将扩展长度块的比特设置为表示比特长度的值。在实施例中,可以提供一种计算设备,用于准备输入至密码散列函数的消息,消息具有数目为比特长度的多个比特,在长度上小于或等于预定最大大小,密码散列函数在预定块大小为B比特的块上运算,所述计算设备包括与存储器进行通信的用于处理消息的处理器。所述设备可以包括处理器通过添加足够的填充比特和长度为n比特的长度块,使得填充后消息的填充比特长度是块大小B的整数因子倍,来填充消息;处理器设置长度块的比特,使得如果比特长度小于2n比特,则长度块的比特表示比特长度;以及如果比特长度大 于或等于2n比特,则将长度块中当长度块指示块大小B倍数的消息长度时未使用的比特设置为预定值,使得长度块不表示比特长度。在实施例中,处理器将存储器地址位置分配给消息的比特、填充比特和长度块,以及设置比特包括处理器调整与每个比特相对应的存储器地址位置中的值。在设备的一个方面,处理器还可以用于确定消息的比特长度。在设备的这个方面,处理器可以用于通过读取存储器中存储的数据值来确定比特长度。在设备的这个方面,处理器可以用于通过估计消息的比特长度来确定比特长度。在设备的这个方面,预定值可以是与以下所有值不同的固定数字在长度小于2n比特时能够用于表示块大小B倍数消息的比特长度的值。在设备的这个方面,预定值可以是全“I”比特。在设备的这个方面,长度块可以被设置为整数因子。在设备的这个方面,处理器可以用于通过计算比特长度模2"来计算预定值。在设备的这个方面,设备可以用于如下填充消息如果比特长度大于或等于2n比特,则添加足够大小的扩展长度块,来表示高达所述预定最大大小的比特长度,以包括填充消息;以及处理器还用于如果比特长度大于或等于2n比特,则将扩展长度块的比特设置为表示比特长度的值。在实施例中,提供了一种计算机程序产品,其包括在非临时性存储介质中实现的计算机可读程序代码,所述程序代码使能计算设备执行上述方法实施例。可以在计算设备中实现本文描述的实施例,计算设备可以包括例如图I和2所示的计算设备。例如,计算设备可以经由无线通信系统或企业系统与其它设备进行通信。在实施例中,计算设备100可以是具有双向通信能力和高级数据通信能力的移动设备,包括通过收发站的网络与其它移动设备或计算机系统进行通信的能力。计算设备100还可以具有语音通信能力。图I是计算设备100的示例实施例的框图。计算设备100包括多个部件,比如主处理器102,其控制计算设备100的整体操作。通过通信子系统104执行包括数据和语音通信的通信功能。解码器103可以对计算设备100接收的数据进行解压缩和解密,解码器103根据任何适当解压缩技术和依赖于诸如数据加密标准(DES)、三重DES或高级加密标准(AES)之类各种标准的加密/解密技术进行工作。典型地,根据诸如JPEG之类的适当标准对图像数据进行压缩和解压缩,而根据诸如H. 26x和MPEG-x系列标准之类的适当标准对视频数据进行压缩和解压缩。通信子系统104从无线网络200接收消息并且向无线网络200发送消息。在计算设备100的这个示例实施例中,根据以下一项或多项配置通信子系统104 :全球移动通信系统(GSM)、通用分组无线服务(GPRS)标准、增强数据GSM环境(EDGE)和通用移动电信系统(UMTS)。新标准还在制订中,但是应相信,新标准将与本文描述的网络行为相类似,并且本领域技术人员也应理解,本文描述的实施例意在使用将来开发的任何其它适当标准。将通信子系统104与无线网络200相连的无线链路表示一个或多个不同射频(RF)信道,其根据针对GSM、GPRS、EDGE或UMTS和可选地其它网络通信而规定的已定义协议进行工作。对于新的网络协议,这些信道能够支持电路交换语音通信和分组交换数据通信。主处理器102还与以下其他子系统进行交互比如随机存取存储器(RAM) 106、快闪存储器108、显示器110、辅助输入/输出(I/O)子系统112、数据端口 114、键盘116、扬声器118、麦克风120、近距离通信系统122和其它设备子系统124。计算设备100的一些子系统执行通信相关功能,而其它子系统可以提供“驻留”或设备上功能。举例而言,显示器110和键盘116可以用于诸如输入文本消息以经由网络200发送之类的通信相关功能、以及诸如计算器或任务列表之类的设备驻留功能。设备100中包括呈现电路125。当用户指示要在显示器110上观看数据文件时,呈现电路125分析并处理数据文件,以在显示器110上可视化。可以以硬件、软件或者硬件软件两者的组合实现呈现电路125。计算设备100可以在完成需要的网络注册或激活过程之后,经由无线网络200发送和接收通信信号。网络访问与计算设备100的订户或用户相关联。为了识别订户,计算设备100要求将SM/RUM卡126 (即,订户识别模块或可移除用户识别模块)插入SM/RUM接口 128,以与网络进行通信。SM/RUM卡126是一种常规“智能卡”,其能够用于识别计算设备100的订户和使计算设备100个性化。在没有SM/RUIM卡126的情况下,计算设备100没有完全运行来与无线网络200进行通信。通过将SM/RUM卡126插入SM/RUM接口 128,订户可以访问所有订购的服务。服务可以包括web浏览和消息收发,比如e-mail、语音email、短消息服务(SMS)和多媒体消息收发服务(MMS)。更高级的服务可以包括销售点、现场服务和销售力量自动化。SM/RUIM卡126包括处理器和用于存储信息的存储器。一旦将SM/RUM卡126插入到SM/RUM接口 128中,其就与主处理器102耦合。为了识别订户,SM/RUM卡126可以包括一些用户参数,比如国际移动订户身份(MSI)。使用SM/RUM卡126的优势在于,订户不必要受缚于任何单个物理移动设备。SM/RUM卡126还可以存储移动设备的其他订户信息,包括记事册(或者日历)信息和最近呼叫信息。备选地,也可以将用户识别信息编程入快闪存储器108中。计算设备100可以是电池供能设备,其包括用于容纳一个或多个充电电池130的电池接口 132。在至少一些实施例中,电池130可以是带有嵌入式微处理器的智能电池。电池接口 132与调节器(未示出)相耦合,其中调节器帮助电池接口 130向计算设备100提供电力V+。尽管当前技术使用电池,但是诸如微燃料电池之类的未来技术可以向计算设备、100提供电力。计算设备100还包括操作系统134和软件部件136至146,将在下文对这些部件进行详细描述。典型地,在诸如快闪存储器108之类的永久性存储器中存储由主处理器102执行的操作系统134和软件部件136至146,备选地,快闪存储器108可以是只读存储器(ROM)或类似存储元件(未示出)。本领域技术人员应该意识到,可以将操作系统134和软件部件136至146中的一部分(比如,特定设备应用程序或者其一部分)临时加载到诸如RAM 106之类的易失性存储器中。本领域技术人员公知的是,还可以包括其它软件部件。通常在计算设备100的制造期间,将控制基本设备操作的软件应用程序136的子集(包括数据和语音通信应用程序)安装到计算设备100上。其它软件应用程序包括消息应用程序138,其可以是允许计算设备100的用户发送和接收电子消息的任何适当软件程序。本领域技术人员公知的是,对于消息应用程序138,存在多种备选。典型地,在计算设备100的快闪存储器108或者计算设备100中的一些其它适当存储元件中存储用户已经发送或接收的消息。在至少一些实施例中,可以远离设备100存储一部分已发送和已接收消息, t匕如,在与通信设备100进行通信的关联主机系统的数据存储器中存储一部分已发送和已接收消息。软件应用程序还可以包括设备状态模块140、个人信息管理器(PM) 142和其它适当模块(未示出)。设备状态模块140提供持久性,即设备状态模块140保证重要设备数据存储在诸如快闪存储器108之类的永久性存储器中,使得当计算设备100关断或断电时数据不丢失。PIM 142包括用于组织和管理用户感兴趣的数据项的功能,数据项例如但不限于e-mail、联系人、日程表事件、语音邮件、约会和任务项。PIM应用程序能够经由无线网络200发送和接收数据项。PM数据项可以经由无线网络200与主计算机系统中存储的移动设备订户的相应数据项和/或与主计算机系统相关联的移动设备订户的相应数据项无缝地整合、同步和更新。对于这些数据项,该功能在计算设备100上创建了镜像主计算机。当主计算机系统是移动设备订户的办公计算机系统时,这可能特别有利。计算设备100还包括连接模块114和信息技术(IT)策略模块146。连接模块144实现了计算设备100与无线基础设施和诸如企业系统之类的任何主机系统进行通信所需的通信协议,其中计算设备100被授权与所述无线基础设施和主机系统接口连接。图3和4给出了无线基础设施和企业系统的示例,将在下文对其进行详细描述。连接模块144包括能够与计算设备100集成的应用编程接口(API)集合,以允许计算设备100使用与企业系统相关联的任意数目的服务。连接模块144允许计算设备100与主机系统建立端到端的安全认证的通信管道。由连接模块144提供的可供访问的应用程序子集可以用于将IT策略命令从主机系统传送至计算设备100。这可以以无线或有线方式进行。向IT策略模块146传送这些指令,以修改设备100的配置。备选地,在一些情况下,也可以经由有线连接进行IT策略更新。其它类型的软件应用程序也可以安装到计算设备100上。这些软件应用程序可以是在制造计算设备100之后添加的第三方应用程序。第三方应用程序的示例包括游戏、计算器、公共事务等等。可以通过以下至少一项将附加应用程序加载到计算设备100上无线网络200、辅助I/o子系统112、数据端口 114、近距离通信子系统122或任何其它适当设备子系统124。这种应用程序安装的灵活性增加了计算设备100的功能并且能够提供增强的设备上功能、通信相关功能或两者。例如,安全通信应用程序可以实现通过使用计算设备100来执行电子商务功能和其它这些金融业务。数据端口 114使订户能够通过外部设备或软件应用程序来设置偏好,并且通过向计算设备100提供信息或软件下载,而非通过无线通信网络,来扩展计算设备100的能力。例如,该备选的下载路径可以用于通过直接而可靠可信的连接将加密密钥加载到计算设备100上,以提供安全设备通信。数据端口 114可以是使能够在计算设备100与另一计算设备之间进行数据通信的任何适当端口。数据端口 114可以是串行端口或并行端口。在一些情况下,数据端口 114可以是USB端口,其包括用于数据传送的数据线和电源线,电源线能够提供充电电流,以为计算设备100的电池130充电。 近距离通信子系统122提供计算设备100与不同系统或设备之间的通信,而不使用无线网络200。例如,子系统122可以包括用于近距离通信的红外设备和关联的电路和部件。近距离通信标准的示例包括由红外数据协会(IrDA)开发的标准、蓝牙TlP IEEE开发的802. 11 标准族。在使用中,诸如文本消息、e-mail消息或网页下载之类的接收信号将由通信子系统104进行处理且输入到主处理器102。然后,主处理器102处理接收信号,以输出至显示器110或备选地输出至辅助I/O子系统112。订户还可以例如与显示器110相结合地使用键盘116、以及可能地与辅助I/O子系统112相结合地使用键盘116来编写数据项,比如e-mail消息。辅助子系统112可以包括以下设备比如触摸屏、鼠标、轨迹球、红外指纹检测器、或带动态按钮按压能力的滚轮。键盘116可以包括数字字母键盘和/或电话型键区。然而,也可以使用其它类型的键盘。可以通过通信子系统104经由无线网络200发送编写的项目。应意识到,如果显示器110包括触摸屏,则辅助子系统112仍然可以包括一个或多个上述设备。对于语音通信,除了接收信号被输出至扬声器118且由麦克风120产生发送信号之外,计算设备100的整体操作实质上类似。也可以在计算设备100上实现备选语音或音频I/o子系统,比如语音消息记录子系统。尽管主要通过扬声器118完成语音或音频信号输出,但是显示器110也可以用于提供附加信息,比如呼叫方的标识、语音呼叫的持续时间或其它语音呼叫相关信息。图2示出了通信子系统部件104的示例框图。通信子系统104包括接收机150、发射机152和诸如一个或多个嵌入式的或内部的天线元件154和156、本地振荡器(LO) 158之类的关联的部件、以及诸如数字信号处理器(DSP) 160之类的处理模块。通信子系统104的具体设计取决于计算设备100旨在与之操作的通信网络200。因此,应该理解,图2所示设计仅用作一个示例。天线154通过无线网络200接收的信号被输入至接收机150,接收机150可以执行以下常见接收机功能信号放大、下变频转换、滤波、信道选择和模数(A/D)转换。对接收信号的A/D转换允许更复杂的通信功能,比如要在DSP中执行的解调和解码。按照类似的方式,DSP 160处理(包括调制和编码)要发送的信号。这些经DSP处理的信号被输入至发射机152,发射机152用于数模(D/A)转换、上变频转换、滤波、放大和通过天线156经由无线网络200进行发送。DSP 160不仅处理通信信号,还提供接收机控制和发射机控制。例如,可以通过DSP160中实现的自动增益控制算法,自适应地控制对接收机150和发射机152中的通信信号施加的增益。计算设备100与无线网络200之间的无线链路可以包括一个或多个不同信道(典型地,不同RF信道)、以及相关联的计算设备100与无线网络200之间使用的协议。RF信道是应该节约的有限资源,典型地是由于总体带宽的限制和计算设备100的有限电池电力。当计算设备100完全操作时,典型地,仅当发射机152向无线网络200发送时才打开或开启发射机152,否则关断发射机152以节约资源。类似地,在需要接收机150在指定的时间段期间接收信号或信息(如果有的话)之前,周期性地关断接收机150以节约电力。在实施例中,计算设备100可以处理由设备100产生或接收的数据,以计算密码散列函数。密码散列函数通常用于对诸如通信、软件或计算设备100的用户想要确认其来源的其它信息之类的数据或内容进行数字签名。一般而言,术语“消息”可以方便地用于一般性地描述要由密码散列函数进行散列处理的任何数据输入。作为输入,消息可以方便地 有序排列为设备存储器中的一维阵列或串。然而,如所了解的一样,可以以其它格式存储数据,然而以数据块的形式将数据读入密码散列函数。例如,可以通过解码器103上的包括专用处理器的硬件执行密码散列函数。在备选实施例中,可以在计算设备上诸如快闪存储器108之类的永久性存储器中存储包括软件的程序代码,程序代码可以被加载至RAM 106中以由主处理器102执行。应理解,主处理器102执行程序代码,这使得通用的主处理器102能够对诸如RAM 106或者快闪存储器108之类的主处理器102可寻址的永久性存储器中存储的数据执行包括密码散列函数的加密步骤。这个应用涉及两个实施例处理器操作以对设备的存储器106、108中存储的数据执行一系列步骤。在一个方面,可以提供计算设备程序产品以在计算设备100上执行,计算设备程序产品使计算设备100操作来执行用于执行方法步骤。在实施例中,计算设备程序产品可以包括在诸如光盘、硬盘或其它非易失性存储器之类的存储介质上实现的计算机可读程序代码装置。在实际中,密码散列函数的使用要求发送方和接收方在具体散列函数和其它参数上达成一致,使得两方都可以在给定要处理的数据输入的情况下计算得出相同的散列输出。参数中需要指定的参数是设备间能够交换且能够处理的消息的最大大小。一般而言,标准可以用于指定各方在交换要使用密码散列函数来处理的数据时使用的公共参数。该标准可以指定大小为n比特的长度块用于MD加强,以允许对长度高达2n比特的消息进行散列处理。在示例标准中,ZigBee Alliance例如已经指定了 16比特的长度块。因此,对于ZigBee Alliance标准示例,可以对n = 16且消息比特长度至多216比特,即65,536个比特或8192个字节,进行散列处理。如上所述,这造成了如下复杂问题想要使用定义的密码散列发送大于65kb的消息,但仍然遵守该标准指定的长度块。例如,一方无法将密码散列函数用于典型地比65kb大得多的应用程序或其它软件代码。参考图3,示意图示出了对输入至密码散列函数的数据的准备。为了方便起见,数据一般可以称作消息。消息300被分为固定块大小B的各个单独块302,以输入至密码散列函数。可以用填充比特(例如有必要填充最后一个块303,用“I”比特和“0”比特)和n比特的长度块306来填充最后一个块303,以创建填充消息。在ZigBee Alliance示例中,例如,可以用紧跟了 k个“0”比特的“I”来填充比特长度为I比特的消息的最后一个块303,其中k是等式l+l+k = 7n(mod Sn)的最小非负解。因此,填充消息(附加了填充比特和长度块306的消息300)的填充长度是固定块大小B的倍数。长度块306表示与要加以散列处理的消息的填充长度相对应的比特值。在ZigBee Alliance示例中,最大消息长度是216比特,但是该标准的实现仅包括字节长度倍数的消息,所以n = 16比特长度块306仅将可用的16个比特中的13个比特用于对比特长度进行计数。余下比特总是保持“0”值。应意识到,尽管ZigBee Alliance示例包括特定值,但是块大小B和长度块大小的选择可以随预选设 计选择而改变。下面对大小大于或等于2n比特的散列消息提供一组解决方案,同时保持MD加强的一些措施完整无缺,并使用标准所规定的长度块306来用于长度小于2n比特的消息。在特定实施例中,基于实际计算考虑,包括为要处理的消息分配存储器位置的考虑,消息被限制到上限比特长度,即预定的最大消息大小,比如22n比特。应该意识到,这些解决方案不限于示例ZigBee Alliance标准,并且可以应用于以下情形其中提供了小于预期消息大小的长度块。根据特定实施例,解决方案保持长度块306按照针对大小小于2n比特的消息的标准中的方式那样实现,以允许与实现该标准的现有设备的可互操作性。在计算设备用于处理大小大于2n比特的消息的情况下,可以采用以下描述的解决方案。因为现有设备不能够处理大小大于2n比特的消息,所以解决方案在处理消息方面不需要遵循该标准,然而,任何处理都应该被构建成最小化或降低与在该标准下处理的消息相冲突的机率。以下解决方案在MD加强方面提供了可变的鲁棒性和可靠性。迭代散列函数的安全性取决于填充机制的具体内容。如已经建议的,MD加强具有以下效果通过使用MD填充输入串不能是另一 MD填充输入串的后缀这一安全性论证,迭代散列函数的压缩函数上的可证明结果转至散列函数本身。尽管使用MD加强的所有已知结构依赖于将固定大小的串附加到输入串,来指示无填充输入串的比特长度,但是安全安全性论证事实上确实适用于对无填充串的比特长度的可变大小编码,从而适用于本文所述的MD填充结构。无MD 加强的填充(在 Lei Duo, Chao Li “Improved Collision ResistanceBounds on PGV schemes, ”International Assocation for Cryptologic Research,IACR ePrint 2006-462 (下文中,“ IACR2006-462 ”)中称作 Plain-PD (纯填充),可从http://eprint. iacr. org/2006/462获得,在此并入以供参考)的安全性结果自然转嫁至以下示出的解决方案中。IACR 2006-462的结果是特别相关的,IACR 2006-462规定,对于Matyas-Meyer-Oseas散列函数和所谓的散列函数PGV族的“组I”中的基于安全块加密的
大多数其他散列函数,安全特性如下表I所示
权利要求
1.一种计算设备实现的方法,用于准备具有比特长度数目的比特的消息,以输入至在预定块大小为B比特的块上运算的密码散列函数,其中,比特长度小于或等于预定最大大小,所述计算设备包括与存储器进行通信的用于处理消息的处理器,所述方法包括 处理器通过添加足够的填充比特和长度为n比特的长度块,使得填充后消息的填充比特长度是块大小B的整数因子倍,来填充消息; 处理器设置长度块的比特,使得如果比特长度小于2n比特,则长度块的比特表示填充比特长度;以及如果比特长度大于或等于2n比特,则将长度块中当长度块指示块大小B倍数的消息长度时未使用的比特设置为预定值,使得长度块不表示比特长度。
2.如权利要求I所述的方法,还包括在处理器填充消息之前,处理器确定消息的比特长度。
3.如权利要求2所述的方法,其中确定步骤包括读取存储器中存储的数据值。
4.如权利要求2所述的方法,其中确定步骤包括估计消息的比特长度。
5.如权利要求I所述的方法,其中所述预定值是固定数值,使得长度块值不同于能够用于对小于2n比特的块大小B倍数消息的比特长度加以表示的所有值。
6.如权利要求I所述的方法,其中,所述预定值是全“I”比特。
7.如权利要求I所述的方法,其中,如果比特长度大于或等于2n比特,则长度块的比特被设置为所述整数因子。
8.如权利要求2所述的方法,其中,处理器将所述预定值计算为比特长度模2n,以输入存储器。
9.如权利要求2所述的方法,其中,填充步骤还包括如果比特长度大于或等于2"比特,则添加足够大小的扩展长度块,以表示高达所述预定最大大小的比特长度,从而包括填充后消息;以及 设置步骤还包括处理器将扩展长度块的比特设置为表示了比特长度的值。
10.一种计算设备,用于准备具有比特长度数目的比特的消息,以输入至在预定块大小为B比特的块上运算的密码散列函数,其中,比特长度小于或等于预定最大大小,所述计算设备包括与存储器进行通信的用于处理消息的处理器,所述设备包括 处理器通过添加足够的填充比特和长度为n比特的长度块,使得填充后消息的填充比特长度是块大小B的整数因子倍,来填充消息; 处理器还设置长度块的比特,使得如果比特长度小于2n比特,则处理器设置长度块的比特来表示比特长度;以及如果比特长度大于或等于2n比特,则处理器将长度块中当长度块指示块大小B倍数的消息长度时未使用的比特设置为预定值,使得长度块不表示比特长度。
11.如权利要求10所述的设备,其中,处理器还确定消息的比特长度。
12.如权利要求11所述的设备,其中,处理器通过读取存储器中存储的数据值来确定比 特长度。
13.如权利要求11所述的设备,其中,处理器通过估计消息的比特长度来确定比特长度。
14.如权利要求10所述的设备,其中,所述预定值是固定数值,不同于能够在块大小B倍数消息的比特长度小于2n比特时用于表示该消息的比特长度的所有值。
15.如权利要求10所述的设备,其中,所述预定值是全“I”比特。
16.如权利要求10所述的设备,其中,如果比特长度大于或等于2n比特,则长度块的比特被设置为所述整数因子。
17.如权利要求10所述的设备,其中,处理器通过计算比特长度模2"来计算所述预定值。
18.如权利要求11所述的设备,其中,设备还如下填充消息如果比特长度大于或等于2n比特,则添加足够大小的扩展长度块,来表示高达所述预定最大大小的比特长度,以包括填充后消息;以及 处理器还用于,如果比特长度大于或等于2n比特,则将扩展长度块的比特设置为表示了比特长度的值。
19.一种计算机程序产品,包括在非临时性存储介质中实现的计算机可读程序代码,所述程序代码用于使计算设备执行如权利要求I所述的方法。
全文摘要
本发明提供了一种计算设备和计算设备实现的方法,用于准备具有比特长度数目的比特的消息,以输入至在预定块大小为B比特的块上运算的密码散列函数,比特长度小于或等于预定最大大小。计算设备包括与存储器进行通信的用于处理消息的处理器。方法包括处理器通过添加足够的填充比特和长度为n比特的长度块,使得填充后消息的填充比特长度是块大小B的整数因子倍,来填充消息;以及处理器设置长度块的比特,使得如果比特长度小于2n比特,则长度块的比特表示填充比特长度;以及如果比特长度大于或等于2n比特,则将长度块中当长度块指示块大小B倍数的消息长度时未使用的比特设置为预定值,使得长度块不表示比特长度。
文档编号H04L12/58GK102754399SQ201180008709
公开日2012年10月24日 申请日期2011年2月9日 优先权日2010年2月9日
发明者马里努斯·斯特瑞克 申请人:塞尔蒂卡姆公司