简洁的密码学课程(2): 哈希,消息验证码和数字签名

电脑杂谈  发布时间:2020-05-24 22:06:40  来源:网络整理

android证书指纹与数字签名_android 读取证书指纹_android证书指纹与数字签名

作者: 菠菜|

在上一篇文章中,我们讨论了对称加密和非对称加密. 使用这两种技术,我们确保了信息传输的安全性. 但是如果出现这种情况,爱丽丝下班后忘了锁定计算机屏幕android证书指纹与数字签名,爱丽丝如何确定第二天她的文件是否遭到篡改?

这时,我们将使用一种称为哈希的技术. 有时,由哈希函数生成的字符串称为该文件的指纹.

哈希函数的功能是输入相同的消息android证书指纹与数字签名,然后将输出相同的哈希值,这就是我们所说的指纹. 但是,只要消息有一点变化,它就会输出不同的哈希值.

android证书指纹与数字签名_android证书指纹与数字签名_android 读取证书指纹

当然,哈希函数不是完美的,并且可能性很小. 输入了两个不同的消息,但是输出了相同的哈希值. 在这种情况下,我们称其为“碰撞”. 这种情况的发生主要取决于哈希函数的质量.

哈希值的长度与输入的长度无关. 无论输入多长,输出值的长度都是固定的.

我们常见的哈希函数是:

但是请注意,到2019年,MD4和MD5已经不安全,其耐撞性已经被破坏. 同时,SHA-1不再安全. 因此,当前常用的哈希是SHA-256,SHA-384和SHA-512.

android证书指纹与数字签名_android证书指纹与数字签名_android 读取证书指纹

高质量的哈希函数甚至可以识别一点篡改,但它也有一个缺点. 尽管它可以识别篡改,但不能识别伪装. 也就是说,如果Cracker假装为Alice并将文件发送给Bob,即使Bob确认该文件未被篡改,也将无济于事,因为该文件根本不是由Alice发送,而是由Cracker发送. 因此,我们需要消息验证码和数字签名技术.

消息身份验证代码(MAC,Mesasge身份验证代码)的作用是确保将消息发送到真实源. 消息身份验证代码必须具有这样的特性,即使该消息身份验证代码是由Cracker获取的,也不能篡改消息身份验证代码,因此会伪装成Alice.

有几种方法可以实现消息验证代码:

android证书指纹与数字签名_android证书指纹与数字签名_android 读取证书指纹

以上密钥是Alice和Bob事先协商的密钥. 只要密钥没有泄漏,就可以说明消息是爱丽丝还是鲍勃. 而且很容易跟踪消息的流向您可以确定Alice是将其发送给Bob还是Bob是将其发送给Alice. 那么,如何确保破解者不知道该密钥?这将使用我们在上一节中介绍的非对称加密.

但是,即使这样,消息身份验证代码也存在安全风险,这就是一种称为“重播攻击”的策略,也就是说,尽管我不知道您要传输的内容,但是我可以拦截它. ,我会再问你. 此时,很可能会发生这种情况. 例如,爱丽丝向鲍勃转帐1000元. 重播攻击后,爱丽丝共向鲍勃转移了2000元. 通常,有三种解决方案可以解决此问题:

消息身份验证代码非常易于使用,还有一个无法解决的问题,即,如果爱丽丝和鲍勃转账,他们需要向老板证明,然后老板将向他们报销. 这是不可能的,为什么呢?因为消息身份验证代码需要只有Alice和Bob知道的密钥. 如果要向老板证明,则必须将密钥提供给老板,但是由于密钥已提供给老板,如何证明消息不是老板发送的,爱丽丝是否发送了该消息?因此,我们需要数字签名技术.

爱丽丝和鲍勃之所以不能向老板证明的原因是因为知道钥匙的人可以发信息. 如果要证明邮件是爱丽丝发送的,则只能使用仅爱丽丝拥有而其他人没有的东西签名. 这提醒我们,在使用ssh时,我们总是将计算机的公钥发送到目标计算机,然后在登录时,可以确保必须从此计算机登录.

android 读取证书指纹_android证书指纹与数字签名_android证书指纹与数字签名

但是,由于数字签名的原因,生成的签名是供其他人查看的,因此数字签名使用私钥生成签名,并使用公钥来验证签名.

摘要:

由于Alice的私钥仅由Alice拥有,而Bob的私钥仅由Bob拥有,因此他们可以证明邮件是由自己发送的.

摘要:

在本文中,我们了解了哈希,消息身份验证代码和数字签名. 在下一篇文章中,我们将介绍证书和TLS.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-220965-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...