位置:51电子网 » 技术资料 » EDA/PLD

快速实现SHA-1算法的硬件结构

发布时间:2008/5/28 0:00:00 访问次数:938

  摘要:安全散列算法是数字签名等密码学应用中重要的工具。目前最常用的安全散列算法是sha-1算法,它被广泛地应用于电子商务等信息安全领域。为了满足应用对安全散列算法计算速度的需要,该文提出了一种快速计算sha-1算法的硬件结构。该方法通过改变硬件结构、引入中间变量,达到缩短关键路径的目的,进而提高计算速度。这种硬件结构在0.18lm工艺下的asic实现可以达到3.9gb/s的数据吞吐量,是改进前的两倍以上;它在fpga上实现的性能也接近目前sha-1算法商用ip核的两倍。

  关键词:集成电路设计;安全散列算法(sha-1);关键路径;硬件结构

  单向散列函数是密码学中一种重要的工具,它可以将一个较长的位串映射成一个较短的位串,同时它的逆函数很难求解。许多安全技术中都会用到单向散列函数的这种特殊性质,比如数字签名、密码保护、消息鉴别等。鉴于单向散列函数在密码系统中的重要地位,密码学家们设计了各种各样的安全散列函数。目前最常用的散列函数是nist于1995年颁布的安全散列算法sha-1。

  sha-1算法和之前的md4、md5等安全散列算法原理很接近,但是安全性更好。它可以通过一系列的迭代计算把任意长度的比特串压缩成长度为160bit的位串。而且一般认为它的这个计算过程在密码学意义上是单向的,也就是说很难找到两个不同的位串可以压缩成相同的160bit。到目前为止,还没有对sha-1有效的攻击方法。

  由于sha-1算法的良好特性,它被广泛使用在诸如电子商务这样的现代安全领域,尤其是被大量应用于公钥密码系统的数字签名中。目前几乎所有相关密码协议、标准或者系统中,都包括了sha-1算法,其中比较著名的有ssl、ipsec和pkcs。在这些场合下,能否快速计算出消息的散列值直接影响到整个系统的处理能力。但是,由于sha-1算法本身是一个很复杂的算法,计算量也较大,加上每次迭代都需要依赖上次的计算结果,因此不论是硬件还是软件实现,计算速度都很有限,这大大限制了算法的适用场合。

  本文提出一种新的硬件实现方法,通过改变迭代结构,达到缩短关键路径的目的,进而提高sha-1的计算速度。

  sha-1算法

  算法描述
  sha-1算法能够将任意长的输入压缩成160bit的输出。但是,sha-1算法中的基本迭代只能处理512bit的数据块,因此为了处理任意长度的数据,首先需要将输入的消息每512bit分成一块,并且将最后一块不足512bit的消息按一定规则补齐。(限于篇幅,sha-1算法的详细描述见文[1],下面是算法进一步的简单描述。)

  分块之后就可以对每块消息按下述方法依次进行处理。

1)在5个中间变量h0、h1、h2、h3和h4中置入特定初值。
2)对每块消息依次执行步骤a)到e)
a)将512bit的消息块分成16个32bit的字w0,w1,…,w15
b)for t=16 to 79l etwt=s1(w t-3w t-8w t-14w t-16);
c)leta=h0,b=h1,c=h2,d=h3,e=h4
d)for t=0 to 79 do
i)temp=s 5 (a)+f t(b,c,d)+e+wt+kt

ii)e=d;d=c;c=s30(b);b=a;a=temp;
e)leth0=h0+a,h1=h1+b,h2=h2+c,h3=h3+d,h4=h4+e。

所有消息块处理完后得到的5个32bit变量h0到h4构成了160bit的数据,这就是sha-1算法输出的散列值。

算法中使用了一些简单的逻辑函数和常数,其中函数ft()和常数kt分别为

  算法中s1(*)、s5(*)和s30(*)分别表示按位循环左移1bit、5bit和30bit。算子“∧”、“∨”、“©”和“+”分别表示按位“与”、按位“或”、按位“异或”以及32bit整数加法。

  算法分析
  从算法描述可以看出,sha-1最核心的计算是一个计算5个中间变量的迭代:

an=s5(a n-1)+f n(b n-1,c n-1,d n-1)+
e+wn+kn
bn=a n-1
cn=s30(b

  摘要:安全散列算法是数字签名等密码学应用中重要的工具。目前最常用的安全散列算法是sha-1算法,它被广泛地应用于电子商务等信息安全领域。为了满足应用对安全散列算法计算速度的需要,该文提出了一种快速计算sha-1算法的硬件结构。该方法通过改变硬件结构、引入中间变量,达到缩短关键路径的目的,进而提高计算速度。这种硬件结构在0.18lm工艺下的asic实现可以达到3.9gb/s的数据吞吐量,是改进前的两倍以上;它在fpga上实现的性能也接近目前sha-1算法商用ip核的两倍。

  关键词:集成电路设计;安全散列算法(sha-1);关键路径;硬件结构

  单向散列函数是密码学中一种重要的工具,它可以将一个较长的位串映射成一个较短的位串,同时它的逆函数很难求解。许多安全技术中都会用到单向散列函数的这种特殊性质,比如数字签名、密码保护、消息鉴别等。鉴于单向散列函数在密码系统中的重要地位,密码学家们设计了各种各样的安全散列函数。目前最常用的散列函数是nist于1995年颁布的安全散列算法sha-1。

  sha-1算法和之前的md4、md5等安全散列算法原理很接近,但是安全性更好。它可以通过一系列的迭代计算把任意长度的比特串压缩成长度为160bit的位串。而且一般认为它的这个计算过程在密码学意义上是单向的,也就是说很难找到两个不同的位串可以压缩成相同的160bit。到目前为止,还没有对sha-1有效的攻击方法。

  由于sha-1算法的良好特性,它被广泛使用在诸如电子商务这样的现代安全领域,尤其是被大量应用于公钥密码系统的数字签名中。目前几乎所有相关密码协议、标准或者系统中,都包括了sha-1算法,其中比较著名的有ssl、ipsec和pkcs。在这些场合下,能否快速计算出消息的散列值直接影响到整个系统的处理能力。但是,由于sha-1算法本身是一个很复杂的算法,计算量也较大,加上每次迭代都需要依赖上次的计算结果,因此不论是硬件还是软件实现,计算速度都很有限,这大大限制了算法的适用场合。

  本文提出一种新的硬件实现方法,通过改变迭代结构,达到缩短关键路径的目的,进而提高sha-1的计算速度。

  sha-1算法

  算法描述
  sha-1算法能够将任意长的输入压缩成160bit的输出。但是,sha-1算法中的基本迭代只能处理512bit的数据块,因此为了处理任意长度的数据,首先需要将输入的消息每512bit分成一块,并且将最后一块不足512bit的消息按一定规则补齐。(限于篇幅,sha-1算法的详细描述见文[1],下面是算法进一步的简单描述。)

  分块之后就可以对每块消息按下述方法依次进行处理。

1)在5个中间变量h0、h1、h2、h3和h4中置入特定初值。
2)对每块消息依次执行步骤a)到e)
a)将512bit的消息块分成16个32bit的字w0,w1,…,w15
b)for t=16 to 79l etwt=s1(w t-3w t-8w t-14w t-16);
c)leta=h0,b=h1,c=h2,d=h3,e=h4
d)for t=0 to 79 do
i)temp=s 5 (a)+f t(b,c,d)+e+wt+kt

ii)e=d;d=c;c=s30(b);b=a;a=temp;
e)leth0=h0+a,h1=h1+b,h2=h2+c,h3=h3+d,h4=h4+e。

所有消息块处理完后得到的5个32bit变量h0到h4构成了160bit的数据,这就是sha-1算法输出的散列值。

算法中使用了一些简单的逻辑函数和常数,其中函数ft()和常数kt分别为

  算法中s1(*)、s5(*)和s30(*)分别表示按位循环左移1bit、5bit和30bit。算子“∧”、“∨”、“©”和“+”分别表示按位“与”、按位“或”、按位“异或”以及32bit整数加法。

  算法分析
  从算法描述可以看出,sha-1最核心的计算是一个计算5个中间变量的迭代:

an=s5(a n-1)+f n(b n-1,c n-1,d n-1)+
e+wn+kn
bn=a n-1
cn=s30(b

相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!