智能卡的时钟速率函数
发布时间:2008/11/22 0:00:00 访问次数:722
1991年中期,nist(美国国家标准和技术研究所)发表了一个在报文上附加签名的加密算法的设计。这个算法在美国已经标准化了(pips 186),被称之为数字签名算法dsa(digital signature algorithm),而描述它的标准则被叫做数字签名标准dss(digital signature standard)。dsa和rsa算法是两种用得最广泛的产生数字签名的方法。dsa算法是el carnal方法的一种变型。标准化这一算法的背景是需要有一种方法可以被用来产生数字签名,但不能被用来加密数据。因此,dsa算法要比rsa算法复杂。然而,已经证明可以用这一算法来加密数据[simmons 98]。
和rsa算法不同,dss算法的安全性不是依赖于大数的因子分解问题,而是离散对数问题。计算表达式y=ax mod p可以很快地执行,即使很大的数也能。然而,相反的过程,对手给定的y,a和p来计算笳,则需要极大的计算量。
对于所有的签名算法,首先必须把要签署的报文用散列算法缩减至预定的长度。于是,nist提出了一个适合于dss算法的算法,它被称为安全散列算法sha-1(secure hashalgorithm)①这个md5变型的散列算法从任何长度的报文均产生160位长的散列值,dss算法和rsa算法的计算一样,仅用整数执行。
要用dsa算法计算一签名,首先必须确定下列全程量:
p(公开):512位至1 024位素数,其长度应能被“整除;
g(公开):(p-1)的160位的素因子;
g(公开):g=h(p-1)/q,式中凡为满足条件凡<p-1之整数,且g>1。
私有密钥冗必须满足下述条件。
公开密钥y的计算如下:
y=gx mod p
一旦所有必需的密钥和数字都被确定后,则可对报文m签署如下:
(1)产生一随机数品,其中k<g
(2)计算m的散列值: h(m)
(3)计算r: r=(gk mod p)mod q
(4)计算s: s=k-1(h(m)+x.r)mod q
r和s二值即报文的数字签名,dss算法包含有两个数而不是rsa算法中仅有一个数。
签名的验证执行如下:
(1)计算w:s-1mod q
(2)计算u1=u1=(h(m).w)mod q
(3)计算u2:u2=(r.w)mod q
(4)计算v:v=((gu1.yu2 mod p)mod q
如果条件v=s得到了满是,则报文睨未经改变且签名是真实的。dsa算法的计算时间可参见表1所示。
表1 作为时钟速率函数的dsa算法计算时间举例
(分为加密时间和解密时间。给出的数据有严重的变化,因为它们对密钥
的位结构有依赖性,计算时间可用预先计算来缩短)
目前,还不能说这两种产生签名的算法(dss和rsa)中的那一个将能长期流行,或者那一个提供较好的长期安全性。原来的意图是标准化一种不能用于加密的签名算法,它导致了dss算法,但这已经成为泡影。这种算法的复杂性也促使它不能广泛使用。然而,标准事实上是存在的,在很多情况下,用dss和sra、产生签名的相关问题依然在议论之中。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
1991年中期,nist(美国国家标准和技术研究所)发表了一个在报文上附加签名的加密算法的设计。这个算法在美国已经标准化了(pips 186),被称之为数字签名算法dsa(digital signature algorithm),而描述它的标准则被叫做数字签名标准dss(digital signature standard)。dsa和rsa算法是两种用得最广泛的产生数字签名的方法。dsa算法是el carnal方法的一种变型。标准化这一算法的背景是需要有一种方法可以被用来产生数字签名,但不能被用来加密数据。因此,dsa算法要比rsa算法复杂。然而,已经证明可以用这一算法来加密数据[simmons 98]。
和rsa算法不同,dss算法的安全性不是依赖于大数的因子分解问题,而是离散对数问题。计算表达式y=ax mod p可以很快地执行,即使很大的数也能。然而,相反的过程,对手给定的y,a和p来计算笳,则需要极大的计算量。
对于所有的签名算法,首先必须把要签署的报文用散列算法缩减至预定的长度。于是,nist提出了一个适合于dss算法的算法,它被称为安全散列算法sha-1(secure hashalgorithm)①这个md5变型的散列算法从任何长度的报文均产生160位长的散列值,dss算法和rsa算法的计算一样,仅用整数执行。
要用dsa算法计算一签名,首先必须确定下列全程量:
p(公开):512位至1 024位素数,其长度应能被“整除;
g(公开):(p-1)的160位的素因子;
g(公开):g=h(p-1)/q,式中凡为满足条件凡<p-1之整数,且g>1。
私有密钥冗必须满足下述条件。
公开密钥y的计算如下:
y=gx mod p
一旦所有必需的密钥和数字都被确定后,则可对报文m签署如下:
(1)产生一随机数品,其中k<g
(2)计算m的散列值: h(m)
(3)计算r: r=(gk mod p)mod q
(4)计算s: s=k-1(h(m)+x.r)mod q
r和s二值即报文的数字签名,dss算法包含有两个数而不是rsa算法中仅有一个数。
签名的验证执行如下:
(1)计算w:s-1mod q
(2)计算u1=u1=(h(m).w)mod q
(3)计算u2:u2=(r.w)mod q
(4)计算v:v=((gu1.yu2 mod p)mod q
如果条件v=s得到了满是,则报文睨未经改变且签名是真实的。dsa算法的计算时间可参见表1所示。
表1 作为时钟速率函数的dsa算法计算时间举例
(分为加密时间和解密时间。给出的数据有严重的变化,因为它们对密钥
的位结构有依赖性,计算时间可用预先计算来缩短)
目前,还不能说这两种产生签名的算法(dss和rsa)中的那一个将能长期流行,或者那一个提供较好的长期安全性。原来的意图是标准化一种不能用于加密的签名算法,它导致了dss算法,但这已经成为泡影。这种算法的复杂性也促使它不能广泛使用。然而,标准事实上是存在的,在很多情况下,用dss和sra、产生签名的相关问题依然在议论之中。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
上一篇:用椭圆曲线作为非对称加密算法
上一篇:智能卡操作系统的鉴别命令