首页 / DH杂凑法

DH杂凑法无效专利 发明

技术内容

DH杂凑法 [0001] 所属领域  密码学杂凑函数 [0002] 背景技术  杂凑函数h(x)=y是将任意有限长消息x经过杂凑得到此消息x的数字指纹(或称为杂凑值,散列值,消息摘要)y,是把一个较长的消息x压缩并映射为固定长度n比特的杂凑值y。对于杂凑函数而言,其性质: [0003] 1抗原象  即,给出一个y,找到其原象x是困难的 [0004] 2抗第2原象  即给出一个x,找到另一个输入x′,使得它们的输出y和y′相同是困难的。 [0005] 3抗碰撞的  找到任何两个不同的输入,x和x′,使它们的输出y和y′相同,在计算上是不可行的。 [0006] 理想的n比特的杂凑函数,求原象x为2n次操作,即,给定一个y时,对于任意的一个x,其输出正好是原象的概率为2-n;产生一个碰撞概率为2-n/2。因此,对于一个强杂凑函数,n的长度决定了攻击的难度。 [0007] 在其它条件不变的情况下,增加n的长度,可以有效抵抗攻击。 [0008] MD5 n=128;SHA-1 n=160 [0009] 若有t个强度相等的n位的不同的杂凑函数,并行独立地对消息x进行杂凑,就可以获得tn长度的杂凑值y。如果混合并且非线性处理tn长度的y,使得敌手无法分离出每一个单独杂凑函数的n位杂凑值,那么,依据tn长度的y来攻击以找到原象x或者找到碰撞的概率将分别为P1=(2-n)t(找原象攻击) [0010] P2=(2-n/2)t(找任意碰撞攻击) [0011] 因为必须同时满足t个不同杂凑结果,同时无法得到n位的杂凑值,敌手的攻击对于n位的穷搜攻击就毫无意义,只能穷搜攻击tn位;若tn足够大,就使得敌手无法达到所需要的计算能力。 [0012] 然而,制造t个强杂凑函数显然是困难的,而且所需要额外的计算开销也是必须考虑的。现实的困境是,即便是MD5的128位和SHA-1的160位都已经不再安全,创造更高位数的强杂凑函数也是困难的。 [0013] 发明内容  我们不必制造t个强杂凑函数,仍然可以得到相同的效果: [0014] 1将原消息x分别独立地进行t次变换变形,得到x的t个独立的不同特征副本x1,x2,…,xt,每个特征副本可以代替代表原消息x。 [0015] 2使用同一个杂凑函数为基本函数,对可以代表原消息x的t个独立副本x1,x2,…,xt进行并行杂凑,得到t个独立的n位的杂凑值y1,y2,…,yt [0016] 3非线行地混合y1,y2,…,yt为tn位的杂凑输出。 [0017] 实际上,是创造了一种新的杂凑函数,它包含指定的对x的t次独立变换变形而得到的t个独立的特征副本x1,x2,…,xt,每个独立的特征副本都可以代表原x,用基本杂凑函数对它们并行杂凑,得到并列的t个n位的杂凑值y1,y2,…,yt,并且无规律非线性混合,得到输出的tn位的杂凑值。把构筑这一类函数方法称为DH并行杂凑法。 [0018] (当然我们也可以用具有不同n位输出的不同基本杂凑函数对t个特征副本进行并行的独立杂凑,而获得独立的输出,其与上述的用同一种基本杂凑函数的方法没有本质上的区别) [0019] 若基本杂凑函数是理想的杂凑函数,那么对tn位DH并行杂凑函数,找到原象的概率P1=(2-n)t,找任意碰撞概率P2=(2-n/2)t。 [0020] 基本函数可用MD5或SHA-1等杂凑函数(虽然MD5和SHA-1分别被找出碰撞对已经不安全,甚至MD5经常受到被找到原象的攻击而面临淘汰) [0021] DH杂凑的t取值,t=3,t=4,t=5即可。 [0022] 若n=128位的MD5在240就被找到碰撞对,那么DH杂凑情况下,t取值分别t=3,t=4,t=5时,就必须分别进行2120次,2160次,和2200次运算!若找到MD5原象是260,显然t=3,t=4,t=5时的DH杂凑,就必须进行2180,2240,2300次运算! [0023] 而对于SHA-1来说,用DH杂凑法,要攻击必须进行的运算则更为可观。 [0024] DH杂凑法多次对原消息x进行独立变换和用基本杂凑函数独立杂凑,是并行的运算,适合于多处理器运算,可以大大减少时间,提高速度。这即使得DH杂凑的开销其实并不大。 [0025] 目前已有公开的加强杂凑强度的是以下方法: [0026] 1级联杂凑法: [0027] 若h1和h2都是抗碰撞的杂凑函数, [0028] 则h(x)=h1(x)‖h2(x)是抗碰撞的杂凑函数 [0029] h1和h2都是独立的具有n位输出的杂凑函数,则h(x)输出为2n比特。级联杂凑不改变x,不对x进行变换,依靠的是等强度的不同杂凑函数。 [0030] 2变换杂凑: [0031] a对输入x先予以填充或附加一个长度分组然后杂凑输出n位杂凑值,是一种函数的一次杂凑。 [0032] b对输入x进行各种变换,比如加密变换后杂凑,得到输出后再附加于x再杂凑,反复数次,但输出仍为n位的杂凑值,是一种杂凑函数的多次串联杂凑,后一杂凑依赖前一杂凑的输出。 [0033] DH杂凑的特点优势: [0034] 1利用已有的杂凑函数,无需费力克服创造新的安全杂凑函数的巨大困难,无须多个等强度的杂凑函数,利用能代表原x消息的变体—特征副本来代替x,是同时针对原消息x的多次杂凑。 [0035] 2并行杂凑,提高了碰撞攻击所需要操作次数,操作次数为原来的t次方幂,碰撞攻击的可能性几乎不存在。 [0036] 3输出非线性混合的t个n为tn杂凑值,也使得攻击寻找原象x的操作为原来的t次方幂,使得曾用于攻击MD5得手的穷搜攻击完全无效。 [0037] 4适合于多核处理器以加快运算速度。 [0038] 适合于DH杂凑的变换必须是: [0039] 1要求快速方便,最好能适应并行多处理器。 [0040] 2特征副本应能代表原消息x,与原x的比特信息有关联。 [0041] 3非线性的,难于找到规律的变换。 [0042] a各类加密法的变换 [0043] 利用各种分组密码加密或流密码加密,可以几乎无限地多地制造消息x的副本,但必须公开指定加密的密钥。 [0044] b消息x直接自身变换(称为“等分自级联”) [0045] 将原消息x等分成两半(若x是单数个比特就添加一个比特“0”或“1”)xa和xb, [0046] (1)用xa比特序列对xb比特序列对应比特进行“丢弃法”操作,即xa序列某位是“1”时输出对应的xb序列比特;当xa序列某位是“0”时,不输出。这样得到第一个输出序列; [0047] (2)再用xb比特序列对xa比特序列进行“丢弃法”操作,得到第二个输出序列。 [0048] (3)并列以上两个输出序列为x的一个特征副本 [0049] 将消息x首尾连接,成逻辑环状,选择消息x的不同位置为中心等分点,可以获得多个不同的特征副本。消息x若长L比特,依顺序比特排列,依次为第1位,第2位,……第L位,中心点选择可以用消息的前i个8比特组成字节,以此字节的数值modL来确定第几位比特是中心等分点。当然也可以规定用其它方式来确定中心等分点。 [0050] 也可以用等分的两部分序列对应比特位异或运算得到输出序列而成为特征副本。 [0051] 具体实施方式:DH杂凑应预先备有常量参数比特序列s0,比特长度d为tn的整数倍,消息x输入,首先与s0对齐,并对应异或成x0(当然也只有前d个比特进行了异或运算。) [0052] 例如输入L比特长的x, [0053] 选择t=3时,选用MD5为基本杂凑函数,输出n=384比特DH杂凑等分自级联丢弃写为fc函数,规定x消息的前24比特三字节代表的数值c1modL为第一个中心等分点;25~48比特的三字节数值c2modL为第二中心等分点;49~72比特的三字节数值c3modL为第三中心等分点。 [0054] fc1(x0)=x1 [0055] fc2(x0)=x2 [0056] fc3(x0)=x3 [0057] x1,x2,x3为x的特征副本。用MD5杂凑: [0058] h(x1)=y1 [0059] h(x2)=y2 [0060] h(x3)=y3 [0061] 输出的y1y2y3为一个序列长384比特,以8比特为一个单元划分为48个字节顺序排列。下面要将之乱序排列分别截取x1,x2,x3,的前64比特序列,每个64比特序列分为8个字节,记为r11,r12,…,r18; [0062] r21,r22,…,r28; [0063] r31,r32,…,r38; [0064] 在y1y2y3序列上, [0065] 第一轮:移动y1y2y3的首字节到r11 mod48的位置,并且此字节本身循环左移r21 mod8位,y1y2y3整体循环左移动( ) [0066] 继续移动y1y2y3的首个字节到r1i mod48位置,并且此字节本身循环左移r2i mod8位,y1y2y3整体循环左移动( ) [0067] 1≤i≤8 [0068] 这样,最后我们得到DH的输出y

相关技术