Desarrollar seguridad en aplicaciones de la cadena de bloques, parte 1: Cómo la cadena de bloques funciona y utiliza claves privadas

Por Stephen Evanczuk

Colaboración de Editores de DigiKey de América del Norte

Nota del editor: Los detalles de la tecnología de la cadena de bloques y sus métodos de transacción son complejos, pero esta parte 1 de una serie de dos partes proporcionará una descripción general de la estructura de la cadena de bloques y su proceso de transacción. Esto proporcionará el contexto para comprender por qué la protección de las claves privadas se encuentra en el núcleo de la seguridad de la cadena de bloques y conducirá a la introducción de una solución llave en mano para asegurar las claves privadas. La parte 2 mostrará cómo los desarrolladores pueden proteger más fácilmente las transacciones de la cadena de bloques con esta solución llave en mano basada en hardware.

Las preocupaciones de seguridad han impulsado el desarrollo de la tecnología de la cadena de bloques, que es familiar para muchos desarrolladores en el contexto de las criptomonedas. Sin embargo, la tecnología de la cadena de bloques también puede ofrecer a los desarrolladores una infraestructura segura con una amplia aplicabilidad. Su arquitectura descentralizada elimina la necesidad de una autoridad central, confiando en cambio en claves privadas y métodos de criptografía para proteger los activos y su intercambio entre las partes. En consecuencia, la seguridad de un sistema de cadena de bloques depende de manera crítica de la seguridad de las claves y su uso adecuado en algoritmos robustos.

Aunque los algoritmos apropiados están fácilmente disponibles, la implementación requiere una gran experiencia y experiencia para desarrollar una solución segura e integrarla en la aplicación de destino. Los desarrolladores necesitan un enfoque más accesible para garantizar la seguridad clave en las aplicaciones emergentes de cadena de bloques.

Este artículo describe brevemente por qué la cadena de bloques resulta de tanto interés y cómo funciona la tecnología, antes de presentar una solución basada en hardware para la seguridad de la cadena de bloques de Infineon Technologies.

El surgimiento de la cadena de bloques

La tecnología de cadena de bloques ha captado la atención en casi todos los segmentos de la sociedad con aplicaciones que van desde criptomonedas, protección de identidad, gestión de la cadena de suministro hasta votación. A menudo llamada tecnología de libro mayor distribuido, su combinación de descentralización, autenticación y conservación de registros atrae el interés a través de su capacidad de eliminar cualquier autoridad central para la supervisión o intermediar la ejecución de transacciones.

Las instituciones financieras se sienten atraídas por su potencial para habilitar mecanismos de pago más rápidos y de menor costo que aquellos disponibles con las tecnologías y prácticas actuales. Fuera del ámbito de fintech, las empresas preocupadas por la validación de la identidad y el seguimiento de las transacciones se sienten atraídas por la capacidad de la cadena de bloques de mantener un registro que está autenticado y resulta efectivamente inmutable (nunca cambia). La inmutabilidad de una cadena de bloques radica en la forma en que se construye, y su autenticidad radica en la forma en que se ejecutan las transacciones.

En esencia, esta tecnología depende fundamentalmente de la capacidad de proteger las claves secretas involucradas en la construcción de los bloques que transmiten las transacciones. Aunque los detalles de la tecnología de cadena de bloques y sus métodos de transacción están más allá del alcance de este artículo, una revisión superficial de la estructura de cadena de bloques y su proceso de transacción puede proporcionar el contexto para comprender por qué la protección de las claves privadas es fundamental para la seguridad de la cadena de bloques. Sin embargo, tenga en cuenta que los sistemas de las cadenas de bloques del mundo real dependen de estructuras y protocolos sustancialmente más sofisticados que los sugeridos en esta descripción conceptual simplificada de la tecnología de la cadena de bloques.

Cadenas inmutables

Una cadena de bloques, como su nombre lo indica, es una cadena de bloques que se usa para registrar un conjunto de transacciones. Los detalles y protocolos estructurales utilizados en las cadenas de bloques públicas, como Bitcoin y Ethereum, pueden diferir sustancialmente de las cadenas de bloques privadas a las que accede una organización individual. También hay cadenas de bloques semiprivadas, llamadas cadenas de bloques autorizadas, a las que accede un grupo cooperante de entidades.

Sin embargo, en cada tipo de cadena de bloques, los cimientos del bloque se basan en algunos elementos comunes (Figura 1):

  • El valor hash del bloque anterior (Prev_Hash), que sirve a los enlaces en la cadena de bloques.
  • Las transacciones asociadas al bloque, representadas por la raíz (Tx_Root) de un árbol llamado árbol hash, o árbol de Merkle, que comprende hashes (Hashi) de transacciones (Txi).
  • Un nonce (número arbitrario único) que juega un papel en la generación de bloques válidos
  • Una marca de tiempo que registra la hora en que se creó el bloque

Diagrama de vista simplificada de una cadena de bloques de BitcoinFigura 1: En una vista simplificada de una cadena de bloques de Bitcoin, cada bloque contiene una marca de tiempo, un nonce arbitrario, un árbol hash o árbol de Merkel y un hash del bloque anterior (Prev_Hash) en la cadena. (Fuente de la imagen: Wikimedia Commons/CC-BY-SA-3.0)

La inclusión del valor Prev_Hash en una cadena de bloques proporciona el marco para la integridad de una cadena de bloques en su conjunto. La modificación que hace un hacker sobre alguna transacción pasada en el bloquen-1 invalidaría el hash contenido en el bloquen incluso si el hacker corrigiera el árbol de Merkle y Tx_Root en el bloquen-1. Como se describe a continuación, la naturaleza distribuida de los sistemas de las cadenas de bloques aborda tales desajustes de hash.

El nonce juega un papel en las reglas de creación de bloques que hacen que las cadenas de bloques sean efectivamente inmutables. Las cadenas de bloques públicas, como las criptomonedas Bitcoin y Ethereum imponen restricciones artificiales sobre el valor del propio valor hash de un nuevo bloque antes de que pueda usarse para extender la cadena. Cuando se reúne un conjunto de transacciones Prev_Hash para la construcción de un nuevo bloque, estas reglas generalmente requieren que el hash final para un bloque recién construido caiga por debajo de un valor máximo especificado. Los algoritmos hash utilizados en los sistemas de las cadenas de bloques generan el mismo resultado para la misma entrada, pero el cambio más pequeño en la entrada arroja un resultado completamente nuevo que es impredecible.

El nonce proporciona una manera de cambiar el valor hash sin afectar los elementos de importancia crítica para el sistema de la cadena de bloques y sus usuarios. Encontrar el hash que se ajuste a las reglas de la cadena de bloques se convierte en un esfuerzo de fuerza bruta que utiliza diferentes valores para el nonce. Al trabajar a través de una serie de valores diferentes para el nonce y volver a mostrar el bloque cada vez, eventualmente se encontrará un valor hash conforme a las reglas. Por una buena razón, aquellos que realizan este trabajo se llaman mineros de la cadena de bloques.

Este nonce aceptable final se llama prueba de trabajo (proof of work) porque representa la finalización exitosa de un proceso de minería computacionalmente muy intenso. Este proceso y prueba de trabajo también reflejan la naturaleza descentralizada de los sistemas de las cadenas de bloques. Después de encontrar un nonce aceptable, el minero gana el derecho (y la remuneración asociada en la minería de criptomonedas) para extender la cadena de bloques con su bloque recién creado.

Otros mineros y usuarios de la cadena de bloques pueden confirmar fácilmente la validez del nuevo bloque al calcular el hash con el bloque y el nonce que encontró el minero exitoso.

En la arquitectura descentralizada de las cadenas de bloques, los nodos individuales de la red distribuida de la cadena de bloques analizan cada bloque y transacción con respecto al mismo conjunto de reglas aplicadas durante la minería. En consecuencia, las cadenas de bloques pueden autocorregirse porque los nodos ignorarán cualquier bloque que no sea válido debido a un error en la construcción o un hash que no sea conforme o simplemente sea incorrecto. Las criptomonedas y otros sistemas de las cadenas de bloques aprovechan al máximo este aspecto de construcción de consenso de la descentralización de las cadenas de bloques para emplear mecanismos adicionales que complican aún más los intentos de los hackers de derribar el proceso.

La combinación de reglas de cálculo intensivo de prueba de trabajo y procesos de validación de bloques basados en el consenso presenta un obstáculo insuperable para un hacker que espera modificar una transacción pasada en una cadena de bloques. Cualquier hacker que desee reconstruir una cadena a partir del bloque modificado debe completar de alguna manera la prueba de trabajo a un ritmo más rápido que la comunidad de mineros. Tan solo en esto, los hackers se encuentran lidiando con una carrera armamentista virtual de recursos de procesamiento que ha pasado del uso de unidades de procesamiento de gráficos en computadoras personales a matrices de compuerta programables en campo y circuitos integrados específicos de aplicaciones especializadas. Además del obstáculo de una gran inversión en recursos informáticos, tan solo los requisitos de consumo de energía concomitantes serían prohibitivos.

Después de todo ese esfuerzo de procesamiento y utilización de energía, los hackers aún enfrentan la probabilidad de que su cadena modificada simplemente sea rechazada de inmediato por los mecanismos basados en el consenso. Las diferencias sustanciales en los resultados en una serie de bloques son contadas, lo que resulta en interrupciones importantes que provocan titulares en el sistema de la cadena de bloques afectado, lo que potencialmente requiere una bifurcación fuerte y rara que crearía una versión completamente nueva del sistema.

Autenticación de transacciones

Toda la discusión previa sobre la estructura y los procesos de la cadena de bloques ha asumido que las transacciones representadas por un árbol de Merkle en un bloque son válidas. Si las transacciones no válidas de alguna manera logran ingresar al sistema de la cadena de bloques, los esfuerzos como la prueba de trabajo y la validación descentralizada de bloques son en vano. De hecho, la motivación fundamental para la tecnología de la cadena de bloques radica en su capacidad para incluir de manera confiable un conjunto de transacciones válidas en una cadena de bloques inmutable. Desde esta perspectiva, la generación de bloques comienza cuando el usuario solicita una transacción. En lugar de que una autoridad central apruebe la transacción, la tecnología de la cadena de bloques se basa en métodos criptográficos que utilizan claves privadas que son propiedad del usuario solicitante.

Para iniciar una solicitud, los usuarios firman digitalmente sus solicitudes mediante sus claves privadas y envían la solicitud a un grupo que contiene otras transacciones no confirmadas (Figura 2). A su vez, el minero de la cadena de bloques extrae un conjunto de transacciones no confirmadas de este grupo y verifica que cada solicitud se origine en el propietario de la clave privada respectiva al utilizar la clave pública del solicitante incluida en cada transacción no confirmada. En las criptomonedas, las solicitudes de transacciones con firmas inválidas son rápidamente ignoradas por los mineros que intentan superar a otros mineros que intentan crear el siguiente bloque en la cadena de bloques.

Diagrama de pares de claves privadas/públicas que proporciona la base para la transacción de la cadena de la cadena de bloquesFigura 2: Los pares de claves privadas/públicas proporcionan la base para la firma de transacciones de la cadena de bloques por parte del solicitante (izquierda) y la verificación por parte del minero de la cadena de bloques (derecha). (Fuente de la imagen: Wikimedia Commons/CC-BY-SA-3.0)

Asegurarse de que las claves privadas permanezcan privadas

En la arquitectura descentralizada de la cadena de bloques, la posesión de la clave privada para un conjunto de transacciones otorga la propiedad de dichas transacciones. Ningún representante de servicio al cliente está listo para rastrear fondos perdidos o cumplir con las normas federales para su restauración. Por esta razón, las claves privadas perdidas o robadas son con frecuencia la razón detrás de los titulares sobre pérdidas masivas de criptomonedas, y los analistas proyectan que esta tendencia continuará.

La dependencia fundamental de la tecnología de la cadena de bloques en las claves privadas para la firma y verificación de transacciones impulsa la necesidad crítica de proteger estos secretos. Para el usuario, una clave mal asegurada es potencialmente una puerta abierta para la pérdida de control de su participación en un sistema de cadena de bloques.

Los hackers han utilizado ataques de phishing y otros enfoques familiares para obtener acceso a claves privadas sin cifrar almacenadas descuidadamente en dispositivos móviles o computadoras. A menudo, las claves cifradas son igual de vulnerables. Los software de generación de claves generalmente permiten a los usuarios ingresar una frase de contraseña utilizada para cifrar la clave en el dispositivo del usuario. Los investigadores de seguridad han descubierto que este enfoque sufre un problema común a todos los enfoques basados en contraseñas: con demasiada frecuencia, los usuarios cifran su clave con una frase de contraseña débil y fácil de adivinar.

Incluso cuando el usuario toma las precauciones necesarias con una clave privada, la clave ya podría verse comprometida debido a fallas en el software de generación de claves. Los generadores de claves basados en software a menudo se basan en generadores de números aleatorios (RNG) que operan con patrones predecibles que un ladrón puede descubrir con un simple script. Peor aún, la codificación de errores o fallas en los algoritmos de generación de claves puede dejar las claves vulnerables para cualquier persona familiarizada con esa herramienta de software de generación de claves.

Incluso una implementación perfecta de un algoritmo robusto no es garantía de protección. Los usuarios aún enfrentan el riesgo real de que el sistema que ejecuta ese código idealizado también ejecute software que ha sido completamente penetrado por hackers. A medida que se ejecuta el software de generación de claves, comparte los ciclos de memoria y procesador con el software comprometido, y así proporciona a los hackers visibilidad de los datos secretos.

Los procesadores que ofrecen un entorno de ejecución confiable (TEE) brindan un mayor grado de protección al ejecutar código confiable y no confiable en espacios de ejecución separados. Este enfoque reduce la posibilidad de que los algoritmos y los datos secretos, como las claves privadas, puedan ser atacados a través de vulnerabilidades en sistemas operativos, middleware u otras aplicaciones.

Incluso si están construidos con capacidades de ejecución segura y protección de claves, muchos dispositivos de hardware siguen siendo vulnerables a ataques microarquitectónicos y físicos más sofisticados. Los ataques de microarquitectura aprovechan la debilidad en el diseño del procesador. Estos tipos de ataques obtuvieron una atención generalizada con Meltdown y Spectre, que aprovecharon las vulnerabilidades en el acceso a la memoria del microprocesador y el procesamiento de instrucciones.

Los ataques físicos van desde vulnerabilidades de canal lateral que monitorean el uso de energía, la emisión electromagnética o las características de tiempo para exponer información protegida. En otros ataques físicos, los hackers provocan fallas con láser o fallas en el suministro de energía para inferir señales internas. En ataques físicos más directos, los hackers decapsulan los dispositivos semiconductores y usan microsondas para intentar leer datos y secuencias de instrucciones.

La protección contra esta amplia gama de amenazas de seguridad requiere un controlador de seguridad que combine características de seguridad fundamentales con una protección más profunda contra la amplia gama de métodos microarquitectónicos y físicos utilizados para atacar dispositivos semiconductores. Construido en torno a este tipo de controlador de seguridad, el equipo de inicio Blockchain Security 2Go de Infineon (BLOCKCHAINSTARTKITTOBO1) proporciona una solución inmediata al desafío crítico de asegurar las claves privadas utilizadas para firmar transacciones para su inclusión en una cadena de bloques (Figura 3).

Diagrama de la tarjeta inteligente Blockchain Security 2Go de InfineonFigura 3: La tarjeta inteligente Blockchain Security 2Go de Infineon simplifica la seguridad de la cadena de bloques, incluida la firma de transacciones sin exponer claves privadas valiosas. (Fuente de la imagen: Infineon)

En lugar de perder tiempo creando métodos de firma seguros, los integradores de sistemas de las cadenas de bloques pueden simplemente proporcionar a los usuarios tarjetas inteligentes del equipo de inicio Blockchain Security 2Go o desde el paquete de 10 tarjetas Security 2GO de Infineon (BLOCKCHAIN10CARDSTOBO1).

Conclusión

La tecnología de la cadena de bloques tiene una amplia aplicabilidad, más allá de las criptomonedas. Sin embargo, también es compleja y depende de claves privadas que necesitan mecanismos de seguridad robustos para evitar la pérdida de control de las transacciones de los usuarios y el compromiso del sistema de la cadena de bloques.

Si bien los diseñadores tienen la opción de dedicar tiempo a crear métodos de firma seguros, el equipo de inicio Blockchain Security 2Go de Infineon proporciona una solución de seguridad llave en mano de la cadena de bloques llave en mano que ahorra tiempo y recursos.

DigiKey logo

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.

Acerca de este autor

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk tiene más de 20 años de experiencia escribiendo para y sobre la industria de electrónica en un amplio rango de temas, entre ellos hardware, software, sistemas y aplicaciones, que incluyen IoT. Se doctoróen neurociencias (redes neuronales) y trabajó en la industria aeroespacial en sistemas seguros con distribución masiva y métodos de aceleración de algoritmos. Actualmente, cuando no escribe artículos sobre tecnología e ingeniería, trabaja en aplicaciones de aprendizaje profundo sobre sistemas de reconocimiento y recomendaciones.

Acerca de este editor

Editores de DigiKey de América del Norte