|
|
1
71
主要的区别是概念上的:虽然 散列 用于保证数据的完整性 雨衣 保证完整性和身份验证。
MAC使用私钥作为生成代码时使用的散列函数的种子:这应该向接收方保证,不仅消息没有被修改,而且消息的发送者也是我们所期望的:否则攻击者就无法知道用于生成代码的私钥。
|
|
|
2
21
散列是从消息生成摘要的函数。密码学上安全的散列是指在计算上无法生成具有给定摘要的消息的散列。消息散列本身不提供有关给定消息的发送者的信息。如果您可以安全地传递消息的散列,则可以使用它来验证是否已通过不安全的传输正确接收到大消息。 消息验证码是一种将共享密钥和消息相结合的方法,这样消息的接收者就可以验证消息的发送者是否拥有共享密钥,而不知道该密钥的任何人都不可能发送或更改消息。 HMAC是基于散列的消息认证码。通常,这涉及将哈希函数应用于共享秘密和消息的某种组合一次或多次。HMAC通常引用RFC2104或FIPS-198中记录的算法。 MAC不加密消息,因此消息是纯文本的。它不会泄露密钥,所以MAC可以通过开放通道发送,而不会泄露密钥。 |
|
|
3
14
从另一个论坛上找到了这个问题的答案。 这些类型的加密原语可以通过它们实现的安全目标来区分(在“附加到消息”的简单协议中): 完整性: 收件人能确信邮件没有被意外修改吗? 身份验证: 收件人能否确信邮件来自发件人? 不可抵赖性: 如果收件人将邮件和证明传递给第三方,第三方能否确信邮件来自发件人(请注意,我说的是密码学意义上的不可抵赖性,而不是法律意义上的不可抵赖性。)同样重要的是这个问题: 钥匙: 原语需要共享密钥还是公私密钥对?我认为简短的答案最好用表格来解释:
|
|
|
4
5
散列函数:将任意长度的消息映射为固定长度的散列值的函数,用作身份验证器。
|
|
|
5
4
基本上主要的区别是MAC使用私钥,hash不使用任何密钥。因为MAC允许我们实现身份验证。 |
|
|
6
3
散列是消息的摘要或指纹,它本身既不提供完整性,也不提供身份验证,因为它容易受到中间人攻击。假设A想要将消息M与M的散列H一起发送给B。相反,C捕获消息并生成消息M2和M2的哈希H2,并将其发送给B。现在B,决不能验证这是否是来自A的原始消息。但是,hash可以用在其他一些方法中来实现完整性和身份验证,比如MAC。 MAC也是消息的摘要,它提供完整性和身份验证。MAC可以用多种方法计算。最简单的方法是使用具有两个输入(消息和共享密钥)的哈希函数。共享密钥的使用增加了MAC的认证能力,从而提供了完整性和认证。然而,MAC仍然不提供不可否认性,因为具有共享密钥的任何一方都可以产生消息和MAC。 现在是数字签名和公钥密码的实际应用。 |
|
|
7
-8
|