消息认证码的工作原理是什么?
消息认证码是一段由几个字节组成的块,可用于对消息进行身份验证。接收者可以测试此块,并确信消息未被第三方更改。
一系列由对称密钥参数化的密码函数。每个函数都可以在可变长度的输入数据(称为“消息”)上运行,以生成固定长度的输出值。输出值称为输入消息的 MAC。
经过批准的 MAC 算法通常需要满足以下属性(对于其提供的每个安全级别):即使已经查看使用该密钥计算其他消息的 MAC 的结果,在不知道密钥的情况下,确定消息的 MAC 在计算上也是不可能的。MAC 算法可用于支持数据来源身份验证和数据完整性安全。
MAC 是一种密码学原语,其定义包括三种算法,称为密钥生成、标记和验证算法。
**密钥生成**算法创建某个“质量”(长度)的密钥,该密钥由其输入(安全参数)定义。
**标记**算法有两个输入,例如密钥和消息,一个输出是标记。
**验证**算法有三个输入,例如密钥、消息和标记。它输出一个位,定义标记对于给定消息和密钥的有效性。
MAC 是一种对称原语,因此想要交换消息的两方使用相同的(对称)密钥。数字签名是一种非对称原语,双方具有不同的(但在数学上相关的)密钥。
这转化为一个简单的叙述,即任何能够检查 MAC 的人也可以使用相同的密钥计算它。
换句话说,只有拥有私钥的实体才能生成签名,而任何人都可以使用称为验证密钥的公开密钥来检查这些签名。尽管数字签名似乎是一种更强大的原语,但它们的计算比 MAC 的计算容易得多,因此在适用时仍然使用 MAC。
MAC 在数据通信中起着至关重要的作用。在不安全的信道上传输的消息需要进行身份验证,以避免攻击,包括入侵者可能篡改信道而产生的消息伪造。它可以支持消息真实性,假设发送方和接收方发送了一个密钥,则可以使用 MAC。
在 MAC 系统中,发送方生成一个标记,该标记是消息和密钥的函数,并在发送到信道之前将其附加到消息上。