• 密码学入门与实践-3
  • 来源:格密链


哈希函数
到目前为止,很高兴我们可以保护“通过不受信任连接”交换的消息内容,但我们从未解决内容完整性问题。如何才能确定邮件内容(甚至是加密的)遭受未经授权的更改?
哈希函或者称之为“单向函数”或“不可逆函数”或“非双射函数”的函数,它输入可变长度的消息并产生固定长度(消息)的输出。
例如,使用不同的哈希函数计算以下字符串的校验和:

如果我们只修改原始消息中的单个字母怎么办?例如`E`:
你可以看到,结果完全不同。哈希函数的一个大问题是容易发生碰撞:
正如您可以看到两个具有不同内容的文件 - 在这种情况下只更改了6个字节 – 却具有相同的MD5校验和。我们称之为哈希碰撞。

数字证书

我们已经谈了很长时间关于加密和解密,尽管我们的密码系统足够安全,但我们却无法确定某人的真实身份。确实,Diffie-Hellman密钥交换算法没有解决“确定真实身份”的问题。信息安全是加密的基本目标,不仅包括机密性和数据完整性,还包括不可否认性或身份验证。
在谈论证书之前,让我们看看数字签名是如何工作的。最后,我们将看到在身份验证和不可否认方面存在很大差异。
在我们讨论非对称密钥和哈希函数时,我们将解释为什么他们对数字签名很重要。模拟数字签名是一种手写签名。虽然后者很容易伪造,但数字签名可以提供更多的安全性(几乎不可能伪造)。让我们看看它是如何工作的:
第1步:首先,你必须生成一对密钥:公钥和私钥。私钥将保存在安全的地方,公钥可以提供给任何人。假设您要撰写包含消息M的文档。
 第2步:计算摘要。 您将使用哈希函数为您的消息计算摘要。
 第3步:计算数字签名。 您将使用密钥签署哈希结果(摘要)。现在,您可以将带有哈希结果签名的消息M发送给您的朋友。
 第4步:验证数字签名。 您的朋友使用相同的哈希函数来计算消息M的摘要,并将结果与您的签名摘要进行比较。如果它们相同则意味着消息M没有被改变(这称为数据完整性)。
现在,您的朋友还需要来验证消息M确实来自于您。他将使用您的公钥来验证,该摘要是由您的私钥签名的。只有使用您私钥签名的消息,才能被您的公钥验证(这提供了身份验证和不可否认性)。
您可能想知道为什么我们首先需要通过哈希函数计算消息M的摘要(步骤2),而不是直接对消息进行签名。如果直接对消息签名,这肯定也是可行的,但原因是因为,使用私钥对消息进行签名并使用公钥验证它的真实性,(它的)速度是非常慢的。
而且,它产生大量数据。哈希函数可生成固定长度的数据(所以可以缩短需要签名的数据),还可提供数据完整性。
有一个问题:你的朋友怎么能确定你的公钥是哪个?他不能,但数字证书可以!
数字签名和数字证书之间的唯一区别是公钥由可信赖的国际认证机构(CA)认证。注册CA时,您必须提供真实的身份证明文件(身份证,护照等)。
因此,您的朋友可以使用您的公钥(registered to a CA)验证附加的哈希结果是否使用您的私钥签名。



未完待续




密码学入门与实践-2密码学入门与实践-1即生瑜,何生亮— MAC 地址与IP地址-12019年欧洲密码年会日程表全同态加密是如何被解决的-8全同态加密是如何被解决的-7全同态加密是如何被解决的-6全同态加密是如何被解决的-5全同态加密是如何被解决的-4全同态加密是如何被解决的-3欢迎收听“区块链杂谈”节目,国内最有质量的区块链知识分享节目。



格密链专注于区块链上的密码学技术长按扫码可关注















朋友会在“发现-看一看”看到你“在看”的内容
确定







1 2 3 4 5 >>