0

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

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

这里还有一个问题。你们都听说过任何涉及的解密算法吗:

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

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

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

谢谢!

4

2 回答 2

3

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

这是 CBC 模式如何通过Wikipedia工作的视觉效果。 CBC模式通过维基百科

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

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

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

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

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

一旦通过 CBC-MAC 完成加密,我们如何解密 > 它们?Triple-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 以获取原始消息。希望对您有所帮助,有很多信息,请随时提出任何澄清。:)

于 2015-07-17T09:34:49.853 回答
2

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

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

于 2015-07-16T21:16:49.290 回答