Estoy tratando de envolver mi cabeza en torno a las firmas digitales y cómo RSA Encryption las admite. Y qué orden hacer con ellos y qué cifrar específicamente.
Digamos que tenemos a Alice y Bob y un mensaje secreto M
Alice tiene: Clave pública de Bob (B_pk), Clave secreta de Alice (A_sk), Clave pública de Alice (A_pk)
Bob tiene: la clave pública de Bob (B_pk), la clave secreta de Bobs (B_sk), la clave pública de Alice (A_pk)
- Alice genera un hash SHA256 del mensaje M. SHA256 (M)
-
Cifre el hash resultante con la clave secreta de Alice usando RSA. C1 = RSA (A_sk, SHA256 (M))
-
Luego Encripta M con la clave pública de Bob. C2 = RSA (B_pk, M)
-
Enviar C1 a Bob
- Envía C2 a Bob
- Bob obtiene C1, descifra con la clave pública de Alice lo que resulta en SHA256 (M) _received
- Bob obtiene C2, se desencripta con su clave secreta, lo que resulta en M_received
- Bob ejecuta SHA256 (M_received) y verifica si SHA256 (M_received) == SHA256 (M) _received
¿Hay algún defecto en este método? ¿Está protegida la confidencialidad, la integridad y la autenticidad?
Actualizar: Tengo curiosidad por saber cuáles son las debilidades en el método anterior.