数字签名简述

1.简介

非对称密钥加密中的一般机制是:如果A是发送方,B是接收方,则A用B的公钥加密消息,并将其发送给B。实际上,这里利用了前面介绍的数字信封,只用接收方的公钥加密消息加密时使用的一次性会话密钥,而不是加密整个消息。为了简单起见,假设接收方的公钥加密了整个消息。
下面考虑另一个机制:如果A是发送方,B是接收方,则A用A的私钥加密消息,并将其发送给B。这个机制如下图所示:
在这里插入图片描述
接收方(B)收到用A的私钥加密的消息,则可以用A的公钥解密,从而访问明文。如果解密成功,则B可以肯定这个消息是从A发来的。这是因为,如果B能够用A的公钥解密消息,则表明最初的消息用A的私钥加密(用一个公钥加密的消息只能用相应的私钥解密,反过来,用一个私钥加密的消息只能用相应的公钥解密),而且只有A知道他的私钥,因此,别人不可能假冒A,用A的私钥加密消息,所以这个消息一定是A发来的。这个机制是无法实现保密的,A的公钥是公开的,谁都可以访问,任何人都可以用其解密消息,了解消息内容,从而无法实现保密。但可以进行认证,表示和证明A是发送方。此外,如果今后发生争议,则B可以拿出自己的加密消息,用A的公钥解密从而证明是A发送的,即不可抵赖。
即使C在途中截获了加密消息,能够用A的公钥解密消息,然后改变消息,也没法达到任何目的,因为C没有A的私钥加密改变后的消息。因此,即使C把改变的消息转发给B。B也不会误以为来自A,因为它没有用A的私钥加密消息。
发送方用私钥加密消息即得到数字签名,如下图所示:
在这里插入图片描述

2.消息摘要

2.1 简介
从数字签名的概念可以看出,其中没有解决非对称加密算法的问题,即速度慢和密文大。这是因为,用发送方的私钥加密整个明文消息。由于明文消息的可能很大,这个加密过程可能很慢。同样,可以用数字信封解决这个问题,但是在实际中使用的是更高效的机制,即使用消息摘要,又称为散列。
消息摘要是消息的指印或汇总,类似于纵向冗余校验(LRC)和循环冗余校验(CRC)。用于验证数据的完整性,即保证消息在发送之后和接收之前没有被篡改,下图显示一个示例的发送方LRC的计算:
在这里插入图片描述
上图显示了发送方的LRC计算,纵向冗余校验将位块组成列表(行)。如果要发送32位,则把其排成四行,然后计算每个列(共8列)有多少个1位,如果1位为奇数,则成为奇性,在阴影LRC行中用一个1位表示;相反,如果1位为偶数,则称为偶性,在阴影LRC行中用一个0位表示。这样,每列计算奇偶性,生成一个新行,共8个奇偶位,成为整个块的奇偶位。这样,LRC实际上是初始消息的指印。
然后将数据和LRC发送给接收方。接收方把数据和LRC分开,对数据块执行LRC运算,然后将得到的LRC值与从发送方收到的LRC值进行比较。如果两个LRC值相同,则可以相信发送方发来的消息没有在中途发生改变。
2.2 消息摘要的思想
即使两个消息只有微小的差别,其消息摘要也会大不相同,根本不可能看出这两个消息的相似性。
消息摘要采用类似原理,但范围更大一些。例如,假设数字4000要用4除,得到1000。则4可以作为4000的指印。将4000除以4总是得到1000,如果改变4000或者4,则结果不再是1000。
另一个要点是,如果只给数字4而不给更多的信息,则无法追溯原来的公式 4 × 1000 = 4000 4\times1000=4000 4×1000=4000 ,因此,消息的指印(这里指数字4)没有暴露初始消息的任何信息(这里是数字4000),因为有无数公式可以得到结果4。
另一个消息摘要的简单示例如下图所示:
在这里插入图片描述
假设要计算的数字为7391743的消息摘要,则可以将数字中每个位与下一个位相乘(是0时排除),忽略乘积中的第一位。
这样我们对数据块进行散列运算(或消息摘要算法),得到其散列或消息摘要,比初始消息小的多,如下图所示:
在这里插入图片描述
前面考虑的是非常简单的消息摘要。实际上,消息摘要通常占128位以上,即任意的两个消息摘要相同的机会为0~ 2 128 2^{128} 2128之间,选择这么长的消息摘要的目的是,为了减少两个消息摘要相同的范围。
2.3 消息摘要的要求
消息摘要的要求总结如下:
(1)给定一个消息,应很容易求出信息摘要,给定一个消息,消息摘要应该相同,如下图所示:
在这里插入图片描述
(2)给定消息摘要,应该很难求出原先的消息,如下图所示:
在这里插入图片描述
(3)给定两个不同的消息,求出的消息摘要应该不同,如下图所示:
在这里插入图片描述
如果两个不同的消息得到相同的消息摘要,则会违背上述原则,称为冲突。
一种用于检测消息摘要算法中的冲突的安全攻击类型是生日攻击。它是基于生日悖论原理的。举个例子,该原理表示,如果一个房间里有23人,那么至少两个人生日相同的概率要大于50%。
生日攻击主要用来发现哈希函数中的冲突,这可以解释如下:
如果消息要使用64位密钥,那么尝试 2 32 2^{32} 232次处理后,攻击者就会发现,对于两个不同的消息,可能得到相同的消息摘要。通常,如果计算多达N条不同的消息摘要,那么出现第一个冲突的可能性大于N的平方。换句话说,当冲突的概率超过50%时,就可能发生冲突,这使得生日攻击成为可能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhInen丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值