Está utilizando la analogía "cifrar con la clave privada". No hagas eso, solo provocará confusión.
Lo que quieres es un esquema de firma digital . Dicho esquema consta de tres algoritmos:
Generación de claves: este algoritmo produce un nuevo par de claves, con una clave pública Kp y una clave privada K s . La clave pública, como su nombre lo dice, se puede hacer pública , es decir, se revela al mundo en general, y esto no revela la clave privada (aunque la clave privada todavía está matemáticamente vinculada a la clave pública). ).
Generación de firmas: dado un mensaje m , se produce una firma s , utilizando la clave privada K < sub> s .
Verificación de firma: aparece un mensaje m , un valor de firma s y la clave pública K p , el algoritmo de verificación devuelve "verdadero" o "falso", dependiendo de si la firma coincide con el mensaje para esa clave pública o no.
La firma es sonido si lo que produce el algoritmo de generación de firma es declarado válido por el algoritmo de verificación de firma. La firma es segura si no es factible, sin saber Ks , para producir un par (m, s) que el algoritmo de verificación declarará válido para la clave pública Kp .
Desafortunadamente, cuando se describió el primer algoritmo de firma viable, se dijo que la idea del algoritmo era "cifrado asimétrico al revés": la firma se generó al "cifrar el mensaje con la clave privada" "(o, de manera equivalente, intercambiando claves privadas y públicas, es decir, haciendo que la clave privada sea pública y viceversa). Esto fue desafortunado porque:
- No todos los algoritmos de firma se pueden ver como "cifrado asimétrico invertido". Esta analogía solo funciona para RSA.
- De hecho, la analogía tampoco funciona para RSA; funciona solo para el núcleo matemático de RSA, pero no con el "RSA completo", que también incluye elementos como el relleno, que son cruciales para la seguridad pero rompen la analogía del "cifrado inverso".
La descripción del "cifrado a la inversa" es una forma generalizada de "explicar firmas" y, al hacerlo, difunde la confusión. No caigas en esa trampa.
Un algoritmo de firma parece corresponder con lo que estás imaginando. El autor incluiría su clave pública en el primer mensaje. Luego, cada mensaje posterior se firmará con la clave privada correspondiente, y todos podrán verificar esa firma en relación con la clave pública en el primer mensaje.
Sin embargo, tenga en cuenta que la autoría es la combinación de dos conceptos:
- Responsabilidad: "Sí, estoy dispuesto a afirmar que escribí estas palabras y estaré sujeto a ellas".
- Exclusividad: "Todas las demás personas que afirman haber escrito estas palabras son mentirosos asquerosos".
Una firma asegurará ambas cosas solo si las personas tienen una manera de asegurarse de que lo que ven como "primer mensaje" es realmente el primer mensaje verdadero, es decir, contiene la clave pública correcta. Otra persona que Y quería reclamar la autoría de los mismos textos podría publicar su propio "primer mensaje" con su propia clave pública y firmar (con su propia clave privada) lo que X publique. El público en general tendrá dificultades para descubrir quién escribió el texto primero . Para establecer una verdadera autoría (en ese sentido), se pueden utilizar timestamps (además de las firmas, no las reemplazamos) .