viernes, 30 de abril de 2021

Firma digital

Posted by q3it on viernes, abril 30, 2021 in ,
La criptografía de clave pública también se utiliza para lo que se llama firma digital. Es a través de la firma que una cadena de bloques sabe que tú, y no otra persona, inició una transacción. Algo interesante es que las claves privadas también pueden ser usadas para encriptar datos pero con un propósito diferente. Una característica del par de claves públicas y privadas es que también pueden encriptar los datos con su clave privada y que luego pueden ser desencriptados con su correspondiente clave pública. Así que ¿Por qué querrías hacer eso? Significaría que todo el mundo en la red pública podría leer tu mensaje. Entonces, ¿cuál es el punto? Bueno, si todos en la red saben que sólo tú tienes acceso a tu clave privada, saben que si tu clave pública puede descifrar un mensaje, entonces ese mensaje tiene que provenir de ti. 

Es la prueba de que algo vino de ti y no de otra persona, algo que es bastante importante en una red digital con muchos intermediarios. Si Ana puede utilizar tu clave pública para descifrar con éxito un mensaje que recibe de otra persona, sabrá que ese mensaje tuvo que originarse en ti, porque, el hecho de poder descifrar algo con cualquier clave pública significa que tuvo que provenir de quien posea su correspondiente clave privada. Por supuesto, ese mensaje no sería seguro, porque cualquiera con su clave pública podría descifrarlo. Pero el punto de la firma no es asegurar un mensaje en sí mismo, es asegurar el punto de origen. Es una forma de determinar con seguridad la fuente de un mensaje o transacción, algo difícil en el mundo digital. Veamos un ejemplo de firma. Ana quiere que le envíes un documento legal de 400 páginas firmado digitalmente. La firma le permite confirmar que es tuyo y que no ha sido alterado en el camino hacia ella por otros participantes de la red abierta. Esto se hace de la siguiente manera. Primero se toma un resumen del documento. Un hash es como una pequeña y única huella digital de, digamos, un gran documento. Y usando tu clave privada, encriptas ese hash. Ahora, cuando envías este documento a Ana, también incluyes el hash encriptado. Ella sólo puede descifrar ese hash usando tu clave pública. Ya que sólo tú tienes esa clave, ella sabe que este hash definitivamente vino de ti. Ella misma puede tomar un hash del documento por separado y compararlo con el que tú enviaste. Si esos dos hash coinciden, ella sabe que ambos documentos vinieron de ti y que no fueron alterados. Si Eva, es un intermediario de la red, y ha alterado el contrato en el camino de alguna manera, entonces el hash que Ana calculó no coincidiría con el desencriptado con tu clave pública, así que sabría que este documento no era el que habías firmado. Así que, ella sabría que ese documento no se originó contigo. La gran ventaja de usar hashes aquí es que no tienes que encriptar todo lo que estás firmando. Podrías firmar múltiples gigabytes de datos con sólo unos pocos cientos de bytes. En una cadena de bloques, la firma se usa de manera similar para verificar el origen y la propiedad de la transacción.

Una firma digital es básicamente el mecanismo matemático para combinar esencialmente una secuencia pública de números con un determinado mensaje digital, y realmente se puede pensar en una firma digital en muchos sentidos como el análogo electrónico de una firma física. En una firma física, típicamente se coloca, digamos, una secuencia de caracteres que representan su nombre o identidad en un documento. Este proceso vincula efectivamente su identidad a ese documento y más aún formulando los caracteres de su nombre, y tal vez alguna manera particular o peculiar que es única para usted. La esperanza es que nadie pueda falsificar tu nombre en ese documento.

Ahora, en un esquema de firma digital, resulta que puedes lograr este tipo de propiedades matemáticamente. Algunos de los esquemas de firma digital más conocidos incluyen cosas como el esquema de firma digital RSA "Rivest-Shamir-Adleman". También hay un esquema conocido como DSS, que es el estándar de firma digital. Y, en realidad, si se utilizara un esquema como el RSA o el DSS, en mi opinión, es mucho más difícil falsificar estas firmas digitales que falsificar una firma manuscrita.

La forma en que un esquema de firma digital funciona es que tienes un usuario, y voy a llamarla Ana, y digamos que Ana quiere, firmar digitalmente un documento. En el esquema, Ana va a generar primero dos claves, y estas dos claves se conocen como la clave de firma. La clave de firma, que es una clave privada, la abreviaremos como la clave de firma SK. Y luego Ana también va a generar una clave separada conocida como clave de verificación. Ahora el proceso real de llegar a una clave de firma y una clave de verificación se produce de manera simultánea.

Ana generará estas dos claves al mismo tiempo, y tendrán una relación matemática, pero lo interesante es que quieres que la clave de verificación sea pública, y la clave de firma sea privada, pero más aún, en un esquema de firma digital, debería ser difícil encontrar la clave de verificación, o mejor dicho, debería ser difícil encontrar la clave de firma, más bien, si sólo ves la clave de verificación.

Ahora, consideremos lo que implica una firma digital en un mensaje. Así que básicamente, si tienes un mensaje, y llamemos a este mensaje M, y deseas firmar digitalmente ese mensaje. Lo que vas a hacer básicamente es aplicar una transformación matemática, Ana va a aplicar una transformación matemática al mensaje M y a su clave de firma SK, y el resultado de esa transformación, la salida de esa transformación será una secuencia especial de números que llamamos la firma. La firma del mensaje M. Ahora, lo interesante aquí es que la firma básicamente es una que se deriva de una combinación del mensaje M junto con la clave de firma, la clave de firma privada de Ana, y va a producir efectivamente una corta, relativamente corta secuencia de números como salida. En particular, los esquemas de firma digital deben diseñarse, o normalmente se diseñan de modo que sólo la persona que posee la clave de firma, esa clave de firma privada sea capaz de generar este tipo de salida.

Este paradigma de dos pasos de hacer un tipo de hash y luego firmar, realmente termina simplificando el proceso de firma digital ya que efectivamente ya no se trata de una entrada de longitud arbitraria, sino que se trabaja con una cantidad de longitud fija. Y este paradigma de firma hash es realmente seguro mientras sea difícil encontrar dos mensajes que se asignen a la misma salida bajo la aplicación de la función hash.