II. Origen y antecedentes
Última actualización
Última actualización
La tecnología blockchain no nace en 2009 con la creación de Bitcoin, sino que sus antecedentes sucedieron mucho antes con algunos hechos aislados pero que juntos dentro de una idea sólida como la es el Bitcoin de parte de Satoshi Nakamoto dieron origen a lo que hoy conocemos como “tecnología blockchain”
La historia de la criptografía se remonta a miles de años. Hasta décadas recientes, ha sido la historia de la criptografía clásica —los métodos de cifrado que usan papel y lápiz, o quizás ayuda mecánica sencilla—. A principios del siglo pasado, la invención de máquinas mecánicas y electromecánicas complejas, como la máquina de rotores Enigma, proporcionaron métodos de cifrado más sofisticados y eficientes; y la posterior introducción de la electrónica y la computación ha permitido sistemas elaborados que siguen teniendo gran complejidad.
La evolución de la criptografía ha ido de la mano de la evolución del criptoanálisis —el arte de "romper" los códigos y los cifrados—. Al principio, el descubrimiento y aplicación del análisis de frecuencias a la lectura de las comunicaciones cifradas ha cambiado en ocasiones el curso de la historia. De esta manera, el telegrama Zimmermann provocó que Estados Unidos entrara en la Primera Guerra Mundial; y la lectura, por parte de los Aliados, de los mensajes cifrados de la Alemania nazi, pudo haber acortado la Segunda Guerra Mundial hasta dos años.
Hasta los años 70, la criptografía segura era dominio casi exclusivo de los gobiernos. Desde entonces, dos sucesos la han colocado de lleno en el dominio público: la creación de un estándar de cifrado público (DES); y la invención de la criptografía asimétrica.
A mediados de los 70 se vivieron dos importantes avances públicos, el primero fue la publicación del borrador del Data Encryption Standard en el Registro Federal estadounidense el 17 de marzo de 1975. La propuesta fue enviada por IBM, por invitación de la Oficina Nacional de Estándares (ahora NIST), en un esfuerzo por desarrollar sistemas de comunicación electrónica segura para las empresas como los bancos y otras organizaciones financieras grandes. Tras «asesoramiento» y ciertas modificaciones por parte de la NSA, fue adoptado y publicado como un Federal Information Processing Standard en 1977 (actualmente el FIPS 46-3). El DES fue el primer cifrado accesible públicamente que fue «bendecido» por una agencia nacional como la NSA. La publicación de sus especificaciones por la NBS estimuló una explosión del interés público y académico por la criptografía.
DES fue suplantado oficialmente por el Advanced Encryption Standard (AES) en 2001, cuando el NIST anunció el FIPS 197. Tras una competición abierta, el NIST seleccionó el algoritmo Rijndael, enviado por dos criptógrafos belgas, para convertirse en el AES. El DES, y otras variantes más seguras (como el Triple DES; ver FIPS 46-3), todavía se utilizan hoy en día, y se han incorporado en muchos estándares nacionales y de organizaciones. Sin embargo, se ha demostrado que el tamaño de su clave, 56 bits, es insuficiente ante ataques de fuerza bruta (un ataque así, llevado a cabo por el grupo pro libertades civiles digitales Electronic Frontier Foundation en 1997, tuvo éxito en 56 horas —la historia se cuenta en Cracking DES, publicado por O'Reilly Associates—). Como resultado, hoy en día el uso sin más del cifrado DES es sin duda inseguro para los nuevos diseños de criptosistemas, y los mensajes protegidos por viejos criptosistemas que utilizan el DES, y de hecho todos los mensajes enviados desde 1976 que usan el DES, también están en riesgo. A pesar de su calidad inherente, el tamaño de la clave DES (56 bits) fue considerado por algunos como demasiado pequeño incluso en 1976; quizás la voz más sonora fue la de Whitfield Diffie. Había sospechas de que las organizaciones gubernamentales tenían suficiente potencia de cálculo para romper los mensajes DES; ahora es evidente que otros han logrado esa capacidad.
En 1976 se hizo público el artículo New Directions in Cryptography, de Whitfield Diffie y Martin Hellman. Este artículo cambió de manera fundamental la forma en la que los criptosistemas pueden funcionar. Introdujo un método radicalmente nuevo para distribuir las claves criptográficas, dando un gran paso adelante para resolver uno de los problemas fundamentales de la criptografía, la distribución de claves, y ha terminado llamándose intercambio de claves Diffie-Hellman. En 1969 James Henry Ellis había establecido la estrategia de clave pública y posteriormente, entre 1973 y 1975, Clifford Christopher Cocks y Malcolm John Williamson habían propuesto protocolos de aplicación de algoritmos de clave pública. Concretamente Williamson propuso algo muy similar al protocolo intercambio de claves Diffie-Hellman y Cocks propuso algo similar al algoritmo RSA. Sin embargo estos hallazgos se mantuvieron en secreto y no tuvieron ninguna aplicación práctica.3
Antes de eso, todos los algoritmos de cifrado útiles eran algoritmos de cifrado simétrico, en los que tanto el remitente como el destinatario utilizan la misma clave criptográfica, que ambos deben mantener en secreto. Todas las máquinas electromecánicas utilizadas en la Segunda Guerra Mundial eran de esta clase lógica, al igual que los cifrados César y Atbash y en esencia todos los cifrados y sistemas de códigos de la historia. La «clave» de un código es, por supuesto, el libro de códigos, que debe asimismo distribuirse y mantenerse en secreto.
En contraste, el cifrado de clave asimétrica utiliza un par de claves relacionadas matemáticamente, en el que una de ellas descifra el cifrado que se realiza con la otra. Algunos (pero no todos) de estos algoritmos poseen la propiedad adicional de que una de las claves del par no se puede deducir de la otra por ningún método conocido que no sea el ensayo y error. Con un algoritmo de este tipo, cada usuario sólo necesita un par de claves. Designando una de las claves del par como privada (siempre secreta) y la otra como pública (a menudo visible), no se necesita ningún canal seguro para el intercambio de claves. Mientras la clave privada permanezca en secreto, la clave pública puede ser conocida públicamente durante mucho tiempo sin comprometer la seguridad, haciendo que sea seguro reutilizar el mismo par de claves de forma indefinida.
Para que dos usuarios de un algoritmo de clave asimétrica puedan comunicarse de forma segura a través de un canal inseguro, cada usuario necesita conocer su clave pública y privada y la clave pública del otro usuario.
La efectividad de los algoritmos asimétricos depende de una clase de problemas matemáticos conocidos como funciones de un solo sentido, que requieren relativamente poca potencia de cálculo para ejecutarse, pero muchísima potencia para calcular la inversa. Debido a las propiedades matemáticas de las funciones de un sentido, la mayor parte de las claves posibles tienen poca calidad para su uso criptográfico; solo una pequeña parte de las claves posibles de una cierta longitud son candidatas ideales, y por tanto los algoritmos asimétricos requieren claves muy largas para alcanzar el mismo nivel de seguridad proporcionado por las claves simétricas, relativamente más cortas. Las exigencias de generar el par de claves y realizar el cifrado/descifrado hacen que los algoritmos asimétricos sean costosos computacionalmente. Como, a menudo, los algoritmos simétricos pueden usar como clave cualquier serie pseudoaleatoria de bits, se puede generar rápidamente una clave de sesión desechable para uso a corto plazo. Por consiguiente, es una práctica común utilizar una clave asimétrica larga para intercambiar una clave simétrica desechable mucho más corta (pero igual de fuerte). El algoritmo asimétrico, más lento, envía de forma segura una clave simétrica de sesión, y entonces el algoritmo simétrico, más rápido, toma el control para el resto del mensaje.
El creciente uso de texto, audio, video y documentos en formato digital y la facilidad con la que se pueden modificar dichos documentos crea un nuevo problema: ¿cómo podemos certificar cuándo se creó un documento o cuándo es modificado? Los métodos de certificación o sellado de tiempo deben satisfacer dos criterios:
Primero, deben sellar la fecha y hora de los fragmentos reales del documento, sin hacer suposiciones sobre el medio físico en el que se graba el documento.
Segundo, la fecha y la hora del sello de tiempo no debe ser falsificable.
Se han propuesto dos soluciones a este problema, ambas implican el uso de unidireccional, funciones hash, cuyas salidas se procesan en lugar de los documentos reales, y de firmas digitales. Las soluciones difieren solo en la forma en que la fecha y la hora son hecho imperdonable, en el primero, los valores hash de los documentos enviados a un TSS son vinculados entre sí, y los certificados que registran la vinculación de un documento dado son distribuidos a otros clientes tanto en sentido ascendente como descendente desde ese documento.
En la segunda solución, varios miembros del grupo de clientes deben marcar la hora del hash, los miembros se eligen mediante un generador pseudoaleatorio que utiliza el hash del documento en sí como semilla. Esto hace que sea inviable elegir deliberadamente qué los clientes deben y no deben sellar la fecha y hora de un hash determinado. El segundo método podría ser implementado sin la necesidad de un TSS centralizado en absoluto.
Finalmente, hemos considerado si el sello de tiempo podría extenderse para mejorar la autenticidad de documentos para los que el tiempo de creación en sí no es el factor crítico asunto, este es el caso de una gran clase de documentos que llamamos "inviolables impredecibles". Además, conjeturamos que ningún esquema puramente algorítmico puede agregar más credibilidad para un documento que la que proporciona el sello de tiempo.
La prueba de trabajo ( PoW ) es una forma de prueba criptográfica de conocimiento cero en la que una parte (el probador ) demuestra a los demás (los verificadores ) que se ha gastado una cierta cantidad de un esfuerzo computacional específico. Posteriormente, los verificadores pueden confirmar este gasto con un esfuerzo mínimo de su parte.
El concepto fue inventado por Cynthia Dwork y Moni Naor en 1993 como una forma de disuadir los ataques de denegación de servicio y otros abusos del servicio como el spam en una red al requerir algo de trabajo por parte de un solicitante de servicio, lo que generalmente significa tiempo de procesamiento por parte de una computadora.
El término "prueba de trabajo" fue acuñado y formalizado por primera vez en un artículo de 1999 por Markus Jakobsson y Ari Juels.
La prueba de trabajo fue más tarde popularizada por Bitcoin como base para el consenso en cadenas de bloques y criptomonedas sin permiso, en las que los mineros compiten para agregar bloques y acuñar una nueva moneda, cada minero experimentando una probabilidad de éxito proporcional a su esfuerzo computacional invertido. PoW y PoS ( prueba de participación ) son los dos mecanismos de disuasión de Sybil más conocidos. En el contexto de las criptomonedas son los mecanismos más habituales.
Hashcash es una propuesta realizada por Adam Back en 1997 para combatir el correo basura o spam. Más recientemente se conoce por inspirar el mecanismo de prueba de trabajo usado en Bitcoin
La estrategia que sigue es establecer un mecanismo rápido de verificación de que quien ha mandado un mensaje tiene el suficiente interés para mandarlo que está dispuesto a "pagar" con tiempo de CPU para poner una marca que demuestre que no lo manda simplemente porque no cuesta nada. De esta forma quienes quieran mandar grandes volúmenes de spam tendrán que dedicar altos costes disuadiéndoles o al menos acotando sus actuaciones.
Para implementar esta estrategia se usan problemas matemático complejos cuya solución se verifica con facilidad. Como por ejemplo: Cálculo de raíces cuadradas de números grandes, o encontrar colisiones parciales de hash.
Para usar esta técnica en los sistemas de correo se han desarrollado plug-ins que insertan cabeceras X-hashcash en los mensajes de forma similar a la siguiente:
X-Hashcash: 0:030626:adam@cypherspace.org:238923ef39238392a9
Estos valores se calculan, a partir de la fecha, la dirección de correo del destinatario (si son múltiples habrá que insertar múltiples cabeceras X-hashcash) y un número de versión junto con algún valor aleatorio. Esto se realiza cuando se manda el correo aprovechando que el correo no es interactivo en tiempo real. El coste para la generación del código suele dimensionarse para que tarde unos segundos en un equipo medio. De esta forma se penaliza más a quien tiene una máquina lenta.
Verificar la cabecera para cada correo implica cambiar los servidores de correo. Además, si alguien con un sniffer captura cabeceras X-HashCash, nada le impediría mandar un mensaje a cada uno de los destinatarios aprovechando la duración de los salvoconductos ya generados. El almacenamiento de los hashes para tantos destinatarios supone un coste. Las listas de correo sin embargo tendrían sobrecargas, al mandar mensajes a cada destinatario. Por ello los usuario deben comprobar el hashcash con la dirección de la lista y no el de cada miembro.
BitTorrent es un protocolo diseñado para el intercambio de archivos entre iguales (peer-to-peer) en Internet. Es uno de los protocolos más comunes para la transferencia de archivos grandes.
El programador Bram Cohen diseñó el protocolo en abril de 2001 y publicó su primera implementación el 2 de julio de 2001.1 Actualmente es propiedad de Justin Sun, fundador de Tron Foundation, el cual adquirió BitTorrent, Inc. por 140 millones de dólares el 18 de junio de 2018. Existen numerosos clientes BitTorrent disponibles para varios sistemas operativos.
El protocolo BitTorrent puede ser usado para reducir el impacto que tiene la distribución de archivos grandes en los servidores. En lugar de descargar el archivo desde un único servidor, el protocolo BitTorrent permite a los usuarios unirse entre ellos en un "enjambre" (swarm) para descargar y subir el archivo de forma simultánea. El protocolo es una alternativa al sistema basado en servidores, que consiste en disponer de varios servidores espejo (mirror) desde donde el usuario descarga el archivo completo, y puede funcionar en redes con poco ancho de banda, de esta forma, dispositivos pequeños como los teléfono inteligente, son capaces de distribuir archivos grandes o video en retransmisión a muchos receptores.