【问题标题】:CBC-MAC decryption, how MAC works in encryptionCBC-MAC解密,MAC如何在加密中工作
【发布时间】:2015-07-16 21:08:03
【问题描述】:

我刚刚想出了信用卡的三重 DES 加密和解密。谁能告诉我如何解密 CBC-MAC...CBC-MAC 最后会给出一个 4 字节的 MAC。从 MAC 到加密,它究竟是如何工作的? MAC在做什么?

一旦通过 CBC-MAC 完成加密,我们如何解密它们?三重 DES 不适用于我的情况。

这里有另一个问题。大家有没有听说过任何涉及到的解密算法:

  • 杜克普特
  • TDES 和
  • MAC 变体(相对于 PIN 变体)

我对 TDES 和 DUKPT 有很好的了解,但是 MAC 变体如何在解密算法中发挥作用?

MAC 变体与 PIN 变体有何不同?

谢谢!

【问题讨论】:

  • 这是CBC-MAC上的维基百科文章...
  • 4 位有点短。这可能是一个错字,你的意思是 64 位。
  • 还是4个字节,看Artjom的答案下面的评论......
  • 这种问题比较适合crypto.stackexchange.com
  • 我知道。我也在crypto.stackexchange上发过帖子……但还没有听到任何消息……谢谢。

标签: encryption cryptography tripledes cbc-mac


【解决方案1】:

我刚刚想出了信用卡的三重 DES 加密和解密。谁能告诉我如何解密 CBC-MAC...CBC-MAC 最后会给出一个 4 位 MAC。

这是 CBC 模式如何通过Wikipedia 工作的示意图。

CBC-MAC 所做的只是获取输出的最后一个密文块并将其称为 MAC。所以你的 MAC 应该是分组密码的大小,可能不是 4 位。如果您使用的是 3DES,它将是 64 位。

从 MAC 到加密,它究竟是如何工作的? MAC 在做什么?

MAC 和加密是两个非常独立的东西。我将尝试对每个内容进行简要介绍。

  • 加密提供机密性,这意味着(在对称加密情况下)只有拥有正确密钥的人才能读取消息的内容。
  • MAC 提供完整性,这意味着消息在发送者和接收者之间没有被篡改。

MAC 存在的原因是即使我无法读取加密消息,我仍然可以在收件人不知道它被修改的情况下修改加密消息(这在现实世界中引起了各种令人讨厌的问题)。 MAC 通常与加密消息一起发送。接收者首先计算加密消息的 MAC,然后检查它是否与随加密消息一起发送的 MAC 匹配。如果它们匹配,那么接收者就知道消息没有被篡改。

一旦通过 CBC-MAC 完成加密,我们如何解密 >它们?三重 DES 不适用于我的情况。

如果您使用 3DES 加密,我建议您首先加密您的消息(我们称之为 C)。我还建议使用 CBC-MAC 以外的东西,因为 CBC-MAC 不提供良好的安全性。我建议您使用HMAC 来计算加密消息的 MAC(HMAC(C))。这意味着您需要两个密钥,一个用于 3DES,一个用于 HMAC。大多数语言都广泛支持 HMAC,因此找到实现应该不是问题。

因此,总而言之,获取您的消息 M,计算 3DES(M) = C,然后计算 HMAC(C) = T,并将 (C, T) 发送给接收此数据的任何人。然后接收者将计算 HMAC(C) = T',检查 T' == T,如果它们匹配,则计算 3DES(C) = M 以获取原始消息。希望对您有所帮助,有很多信息,请随时提出任何澄清。 :)

【讨论】:

  • 感谢分享...有人知道 3DES-DUKPT CBC Pin 变体和 3DES-DUKPT CBC 数据变体(CBC-MAC 相关)之间的区别吗?谢谢!
【解决方案2】:

您不能“解密”CBC-MAC 标签。消息验证码 (MAC) 是一种密钥完整性检查。这意味着无论您输入的数据长度如何,从 MAC 算法创建的标签始终具有相同的长度。对于具有 Triple-DES 的 CBC-MAC,它是 3DES 块的大小,即 64 -bit(或它的一小部分)。

如果你的数据比这个长,那么你就不能“解密”它,因为现在有多种解决方案。但是,您可以使用相同的密钥通过 CBC-MAC 再次运行原始数据并再次重新创建标签。然后检查这两个标签是否匹配。如果他们这样做了,那么您就知道您的数据没有被篡改。 (但可能不是,因为 3DES 在不与 3 个不同的密钥一起使用时不是那么好,而且如果您接受任意消息,CBC-MAC 不再被认为是安全的。)

【讨论】:

  • 通常只有x 最左边的字节用于(CBC-)MAC。通常 MAC 为 4 或 8 字节(半块或全块大小)。如果事先知道消息的长度,则认为 CBC-MAC 是安全的。
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多