¿Autenticación mediante firma o MAC?

5

Todavía soy nuevo en seguridad, así que lo siento si esta pregunta no tiene sentido o si estoy completamente equivocado con algo. Tengo algunos mensajes que quiero cifrar (probablemente con AES-256-CBC) y enviar a una variedad de destinatarios aprobados. Sé que también debería usar algún tipo de mecanismo de autenticación para que el destinatario pueda verificar la integridad del mensaje original, pero no estoy seguro de cuál es la mejor manera de hacerlo. Parece que puedo hacer esto al anteponer un MAC del mensaje al mensaje. ¿Cómo es diferente firmar un mensaje con un certificado firmado por CA? ¿Logran lo mismo o se usan para diferentes casos de uso completamente? ¿Cambia esto si uso AES-256-GCM en su lugar?

    
pregunta jeffaudio 05.03.2013 - 15:17
fuente

1 respuesta

3

La principal diferencia entre un MAC y un firma digital es que con un MAC, se utiliza la misma clave para generar el valor MAC y verificarlo; Mientras que con una firma, se utilizan claves distintas. En una firma, la clave generación y la clave verificación están vinculadas matemáticamente, pero no es posible volver a calcular la clave de generación a partir de la clave de verificación, razón por la cual la clave de verificación se puede hacer pública mientras que la clave de generación se mantiene privada .

Las firmas son para situaciones asimétricas, donde las personas que pueden verificar las firmas no deben tener el poder de generar firmas. Si esta función no es necesaria en su sistema, entonces un MAC será más simple.

La combinación de MAC y cifrado, o una firma y cifrado, no es fácil (puede hacer fácilmente algo que funciona , pero no hacer fácilmente algo que sea seguro ). Por lo tanto, le recomendamos que confíe en un protocolo ya pensado que hace el trabajo, especialmente si es "nuevo en seguridad". Para transferencias de datos sincrónicas, use SSL / TLS . Para comunicaciones asíncronas (como correos electrónicos), utilice OpenPGP . Las implementaciones de código abierto de ambos ya existen en muchos idiomas. El protocolo que es más fácil de diseñar e implementar de manera segura es el protocolo que ya ha sido diseñado e implementado de manera segura por otra persona.

    
respondido por el Thomas Pornin 05.03.2013 - 15:27
fuente

Lea otras preguntas en las etiquetas