通过签名或 MAC 进行身份验证?

信息安全 验证 证书 正直 hmac
2021-09-08 03:29:57

我还是安全新手,所以如果这个问题没有意义,或者我对某些事情完全不了解,我很抱歉。我有一些消息要加密(可能使用 AES-256-CBC)并发送给各种批准的收件人。我知道我还应该使用某种身份验证机制,以便收件人可以验证原始消息的完整性,但我不确定如何最好地执行此操作。看来我可以通过在消息前面加上消息的 MAC 来做到这一点。使用 CA 签名证书签署消息有何不同?它们是完成相同的事情还是完全用于不同的用例?如果我改用 AES-256-GCM,这会改变吗?

1个回答

MAC数字签名的主要区别在于,对于 MAC,使用相同的密钥生成 MAC 值并对其进行验证;而对于签名,则使用不同的密钥。在签名中,生成密钥和验证密钥在数学上联系在一起,但是从验证密钥重新计算生成密钥是不可行的——这就是为什么验证密钥可以公开而生成密钥保持私有的原因

签名适用于非对称情况,在这种情况下,可以验证签名的人不应被授予生成签名的权力如果您的系统不需要此功能,那么 MAC 会更简单。

将 MAC 和加密或签名和加密结合起来并不容易(您可以轻松地做一些有效的事情,但不容易做一些安全的事情)。因此,我们鼓励您依赖已经深思熟虑的协议来完成这项工作——尤其是如果您是“安全新手”。对于同步数据传输,请使用SSL/TLS对于异步通信(例如电子邮件),请使用OpenPGP两者的开源实现已经存在于许多语言中。最容易安全设计和实现的协议是已经由其他人设计和安全实现的协议。