数字签名的过程(数字签名的过程)

认证技术主要用于防止对手对系统的主动攻击,如伪装、干扰等,对于开放环境下各种信息系统的安全尤为重要。认证的目的有两个方面:一是验证信息的发送方是合法的,而不是伪

认证技术主要用于防止对手对系统的主动攻击,如伪装、干扰等,对于开放环境下各种信息系统的安全尤为重要。认证的目的有两个方面:一是验证信息的发送方是合法的,而不是伪装的,即实体认证,包括来源和目的地的认证和识别;二是验证消息的完整性,以及数据在传输和存储过程中是否被篡改、重放和延迟。

1.散列函数

(1)哈希函数的概念

哈希函数是一种单向函数(计算h=H(m)很容易,但是求逆很难)。哈希函数h = H(m),也称为哈希函数,将任意长度的消息m映射到固定长度的输出H(抽象)。此外,该功能除了单向之外,还应满足以下两个条件之一:

①抗碰撞能力弱。对于固定的m,需要找到它,这使得它在计算上不可行。

②抗碰撞能力强。求m的和在计算上是不可行的。

显然,满足②的哈希函数的安全性要求更高,是抵抗生日攻击的要求。散列函数的描述如图3-23所示。

认证技术-数字签名

(2)哈希函数的构造

构造哈希函数的方法有很多种,但使用最多的是迭代结构。著名的MD-5和SHA-1都是基于迭代结构。

认证技术-数字签名

2数字签名

(1)数字签名的概念

在RSA公钥密码体制中,假设Alice用她的私钥D计算出S≡md(mod n),然后将S和消息M一起发送给Bob,Bob用Alice的公钥(n,e)计算出m & # 39≡ce(mod n),然后就是m & # 39=m .想想看,这是不是意味着鲍勃相信他收到的S一定是爱丽丝发来的?上述过程中的s是否等同于Alice在message m上的签名?图3-25总结了上述过程。

数字签名是一种利用密码运算达到“手写签名”效果的技术。它通过某种数学变换实现数字内容的签名和盖章。在ISO7498-2标准中,数字签名被定义为“附加在数据单元上的一些数据,或者对数据单元进行的密码变换,它允许数据单元的接收者确认数据单元的来源和完整性,并保护数据不被伪造”。

一个数字签名方案一般由两部分组成:签名算法和验证算法。为了达到“手写签名”的效果,数字签名应该具有不可伪造性、不可否认性和可验证性。对数字签名方案的攻击主要是伪造签名。根据违约程度,该方案可分为三种类型,即:

①完全伪造,即攻击者可以计算出私钥或者找到可以生成合法签名的算法,从而为任意消息生成合法签名;

(2)选择性伪造,即攻击者可以为某些特定的消息构造合法的签名;

③存在伪造,即攻击者可以伪造至少一条消息的签名,但对消息几乎没有控制权。

(2)基本签名算法

数字签名方案通常由公钥密码实现,其中私钥用于签名,公钥用于验证签名。典型的数字签名方案包括RSA算法(R. L. Rivest,A. Shamir和L. M. Adleman,1978),ElGamal签名(T. ElGamal,1985),Schnorr签名(C. P. Schnorr,1989)和DSS签名(NIST,1991)

①ElGamal签名方案

假设p是一个大素数,g是GF(p)的生成元。Alice的公钥是y = mod p,g,p的私钥是x。

签名算法:

爱丽丝首先选择一个与p-1为素数的随机数k。

爱丽丝,计算a = mod p

给爱丽丝b,解方程M = x*a+k*b (mod p-1)

艾丽斯将消息M签名为(a,b)

认证算法:

检查mod p = & # 34M & # 34国防部是否成立。

比如:p = 11,g = 2,Bob选择x = 8作为私钥。

y =2^8 mod 11 = 3

公钥:y = 3,g = 2,p = 11

鲍勃想在M = 5上签名

选择k=9 (gcd(9,10) = 1)

a =2^9模11 = 6,b=3

读者可以查看mod p = & # 34M & # 34国防部是否成立。

上述方案的安全性基于以下离散对数困难问题:已知大素数p,GF(p)的生成元G和非零元YGF (p),求解唯一整数k,0≤k≤p–2,使y (mod p),k称为y对G的离散对数

②Schnorr签名方案

Schnorr签名方案是一种短签名方案,其安全性基于离散对数的困难性和hash函数的单向性。假设P和Q都是大素数,且Q能被p-1整除,Q是大于等于160bit的整数,P是大于等于512bit的整数,那么求解GF(p)中的离散对数就比较困难。G GF(p),和^?1 mod p;;Alice的公钥是y (mod p),私钥是x,1 < x & lt问.

签名算法:

爱丽丝首先选择一个与p-1为素数的随机数k。

计算Alice r = h(M,mod p)

爱丽丝计算出s = k+x*r( mod q)

认证算法:

计算模p =模p

R = h (m,mod p)

NORR的短签名由|q|和|H(M)|决定。在Schnorr签名中,r = mod p可以预先计算,k与m无关,所以签名只需要mod q乘减一次。计算量小,速度快,适用于智能卡。

(3)特殊签名算法

目前,国内外的研究重点已经从普通签名转向具有特定功能、满足特定要求的数字签名。如针对电子现金和电子钱包的盲签名、针对多人签名文档的多重签名、限制验证者身份的条件签名、保证公平性的同时签名、门限签名、代理签名、防失败签名等。

盲签名是指签名者不知道签名内容的签名,用于电子现金系统中实现不可追踪性。它是由D. Chaum在1983年提出的如下盲签名方案:

假设在RSA密码系统中,Bob的公钥是E,私钥是D,公钥是n,Alice希望Bob对消息m进行盲签名。

①爱丽丝在1和n之间选择一个随机数K来盲M: t = m mod n。

②Bob签T,=[& # 34;(M & # 34^ ")"〗^"d & # 34型号N .

③爱丽丝是盲的:s s=^/k mod N=^ mod N,其中s是消息m的签名

3.消息认证

(1)消息认证和消息认证码

消息认证是指验证者验证接收到的消息是否真的来自真实的发送者,并且消息在传输过程中没有被修改的过程。消息认证是对抗伪装、内容篡改、序列号篡改、时间篡改和来源否认的有效方法。

加密技术可以用来实现消息认证。如果使用对称加密方法,接收方可以确定发送方已经创建了相关的加密消息,因为只有发送方和接收方拥有相应的密钥,如果消息本身具有一定的结构、冗余或校验和,接收方可以很容易地发现消息在传输过程中是否被修改过。如果使用公钥加密技术,接收方无法确定消息的来源,因为每个人都知道接收方的公钥,但这种技术可以保证只有预定的接收方才能接收到消息。

数字签名也可以用来实现消息认证。验证者不仅可以确定签名数据的来源,还可以向第三方证明其真实性,从而防止来源方否认。

实现消息认证的更简单的方法是使用消息认证码。

消息认证码(MAC),又称密码校验和,是指由一个密钥控制的公共单向函数产生的固定长度的值,即MAC=CK(M)。如图3-26所示,假设通信双方A和B共享一个秘密密钥K,A要发送给B的消息是M,A先计算MAC=CK(M),其中CK()是一个密钥控制的开放单向函数,然后发送M‖MAC给B,B收到后做和A一样的计算,得到一个新的MAC,和收到的MAC进行比较,如果B计算出的MAC与接收到的MAC相同,则将与接收到的MAC进行比较。

①接收方认为发送方发送的消息没有被篡改。这是因为攻击者不知道密钥,所以篡改消息后无法对MAC进行相应的篡改。如果只是篡改消息,接收方计算出的新MAC将与接收到的MAC不同。

②接收方认为发送方不是冒名顶替,因为除了发送方和接收方,没有其他人知道密钥,所以别人不可能为自己发送的消息计算出正确的MAC。

(2)消息认证码的构造

安全MAC函数MAC=CK(M)不仅要求单向、定长输出,而且满足:

①如果对手得到M和CK(M),构造一个满足CK(M & # 39;)= CK(M)新消息M & # 39在计算上是不可行的。

②CK(M)均匀分布的条件是随机选取两个消息M,M′,PR[CK(M)= CK(M′)]= 2-n,其中n为MAC的长度。

③如果M & # 39是M的一个变换,即M & # 39= f (M)例如,如果f要插入一个或多个比特,那么Pr[CK(M)= CK(M & # 39;)]=2-n .

MAC的构造方法有很多种,但是MAC函数的上述要求很容易让我们想到Hash函数。事实上,基于密码哈希函数构造MAC是一个重要的研究方向,RFC2104推荐的HMAC已经在IPSec等网络协议中使用。HMAC的结构大致如图3-27所示。

认证技术-数字签名

认证技术-数字签名

@木子陈余,会一直带给你信息安全知识,由浅入深,逐步以系统化的结构分享。如果您有任何建议或问题,请留言。感谢点击转发。谢谢你。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/21226.html

发表回复

登录后才能评论