Cifrado de clave pública para claves previamente compartidas con MAC

4

¿Qué algoritmos conocidos son adecuados para la siguiente tarea?

Necesito que el sistema A (y solo el sistema A) pueda cifrar algunos datos, mientras que el sistema B puede descifrarlos. En el sistema B, quiero asegurarme de que el texto cifrado no se haya atenuado. Y quiero compartir previamente la clave pública del sistema A (almacenarla en el sistema B).

Soy nuevo en la criptografía y, después de investigar, asumí que necesitaba un algoritmo de cifrado de clave pública con MAC. Creo que RSA es solo para esta tarea, pero no estoy seguro.

    
pregunta Yuri Ushakov 13.10.2015 - 15:52
fuente

1 respuesta

1

Creo que necesita una respuesta general y una respuesta específica: general para proporcionar una comprensión general de la solución y específica para guiarlo a herramientas específicas. Empecemos con el panorama general.

Lo que está describiendo es un mensaje firmado y cifrado que se realiza con el cifrado de clave pública. El mensaje se cifra mediante la clave pública del destinatario, lo que garantiza que solo el destinatario, mediante su clave privada, pueda descifrarlo. El mensaje se firma con la clave privada del remitente para que el destinatario pueda estar seguro de que el remitente envió el mensaje. La firma también contiene un hash criptográfico del mensaje (cifrado con la clave pública del remitente) en el momento de la firma, lo que garantiza al destinatario que no se ha cambiado desde que el remitente lo firmó. Si es necesario, se puede usar un servidor de marca de tiempo confiable para agregar una marca de tiempo al hash del mensaje y cifrar la combinación con su clave privada antes de que el remitente cifre la firma para que el destinatario también sepa cuándo firmó el mensaje el remitente.

NOTA: proporcioné una explicación más larga y clara de este proceso en otra respuesta ayer.

En cuanto a los algoritmos, para codificar esto en un nivel bajo, necesitaría utilizar un algoritmo de clave asimétrica (también conocida como clave pública) del cual RSA es sin duda el más conocido, pero necesitará más para completar el proceso. Necesita un algoritmo hash [recomiendo SHA-3]. Pero también necesita un protocolo de nivel superior que estandarice la forma en que se juntan las piezas para garantizar la consistencia y la confiabilidad. Estos existen en varias formas para varios casos de uso, S / MIME, x509 y TLS son ejemplos.

Como mencionó, necesita una infraestructura para generar pares de claves público-privadas y distribuirlas de una manera segura, conocida como Infraestructura de clave pública (PKI). Existen varios enfoques para esto que se aplican a diferentes casos de uso. Para su uso dentro de una sola organización, el sistema Microsoft Active Directory incluye un servicio de certificados que puede emitir certificados (que incluyen los pares de claves y tienen un vencimiento y un propietario definido) y confirman su validez y propiedad para otros usuarios. En el entorno público de Internet, los servicios de certificados públicos están disponibles en empresas como VeriSign, DigiCert, Entrust y muchas otras.

Exactamente cómo se juntan estas piezas es algo no trivial. Si desea codificar una solución, le insto a que busque soluciones de encriptación que le proporcionen la funcionalidad que necesita. La creación confiable de códigos de encriptación no es fácil y no es necesario en casi todos los casos. Las soluciones robustas, tanto comerciales como de código abierto son bastante comunes.

Tendrá que elegir un algoritmo hash. Recomiendo el SHA3 recientemente publicado si es posible. Varios otros más utilizados han sido resquebrajados o, al menos, han demostrado ser débiles en los últimos años, por lo que sería aconsejable utilizar los más nuevos.     

respondido por el JaimeCastells 13.10.2015 - 22:08
fuente

Lea otras preguntas en las etiquetas