Desde sus inicios, el mundo de las criptomonedas ha estado repleto de nuevas ideas, y una de ellas es Proof of Elapsed Time (PoET). Este es un algoritmo de consenso completamente nuevo, innovador y con una escalabilidad sin igual.
Entre los algoritmos de consenso y minería blockchain, uno de los algoritmos más llamativos es Proof of Elapsed Time (PoET), que en español es Prueba de Tiempo Transcurrido. Este es un algoritmo de consenso diseñado desde su base para ser altamente escalable y dirigido a blockchains privadas. Por esa razón, difícilmente lo veremos sosteniendo la actividad de una blockchain de una criptomoneda pública, como el caso de Bitcoin.
Sin embargo, el potencial de PoET está orientado para ser aplicado en el desarrollo de blockchains como parte de sistemas con alto tráfico informativo. Por ejemplo, empresas que necesiten sistemas integrados de auditoría que garanticen la inmutabilidad de dicha información. Este sería el caso de las líneas de montaje altamente tecnificadas y automatizadas, laboratorios químicos y de medicinas, entre otras.
Pero seguramente te preguntarás ¿Cuál es el origen de esta tecnología? ¿Cómo funciona PoET? ¿Cuáles son sus pros y contras? ¿Quienes usan esta tecnologías? Pues bien esas y otras preguntas las responderemos a continuación en este nuevo artículo de Bit2Me Academy.
Origen de PoET
El origen de PoET nos remonta al año 2016 cuando los investigadores de Intel, la mayor empresa mundial de creación y diseño de procesadores comienza a participar en el proyecto Hyperledger, liderado ya entonces por la Linux Foundation. En ese entonces, Intel anunció su participación en el proyecto, además del inicio del desarrollo de “Sawtooth Lake”. Este era un interesante desarrollo blockchain sostenido por Hyperledger que buscaba desarrollar tecnología para una blockchain privada extremadamente escalable.
Fue en ese momento cuando Intel presentó Proof of Elapsed Time (PoET) como un algoritmo de consenso basado en lotería de tiempo, protegido por criptografía. Un concepto revolucionario que usaba toda la tecnología que Intel puede proveer en sus procesadores. De hecho, la tecnología está fuertemente ligada a los productos de Intel hasta el punto en que no es utilizable con garantías fuera de sus productos.
¿Cómo funciona Proof of Elapsed Time (PoET)?
Básicamente lo que hace PoET es crear un anillo de confianza donde un grupo de participantes son coordinados por un controlador. Este controlador, tiene la tarea de tomar el trabajo de las personas del anillo de confianza y verificar que es correcto. Para ello, el controlador comparte un cronómetro y una serie de pruebas criptográficas que habilitan a los participantes de forma aleatoria para producir bloques dentro de la blockchain.
Una vez que un participante es elegido, este genera el bloque, desarrolla la prueba criptográfica y la envía al controlador. Cuando el controlador recibe la prueba la verifica y, de ser correcta, acepta el bloque. En caso contrario lo desecha. Dada esta última decisión, dispara nuevamente el cronómetro para que se inicie el proceso de selección nuevamente y se genere la prueba por otro participante. El proceso sigue este ciclo de repeticiones permitiendo que el funcionamiento de la red se mantenga de forma indefinida.
Por supuesto esto es una forma muy sencilla de explicar cómo funciona PoET, pero te dará una idea general del proceso, y te ayudará a entender mejor la explicación que haremos a continuación.
Inicio del proceso de selección de PoET
La base del funcionamiento de PoET está en el proceso de selección creado por el algoritmo de verificación del proceso. El trabajo de este algoritmo de selección es otorgarle a cada participantes un objeto de tiempo. Este objeto de tiempo podemos verlo como un contador regresivo que tiene una determinada cantidad de tiempo descrita en el. Al terminar ese tiempo, el cronómetro inicia un evento de activación del participante quien a partir de ese momento pasa a ser un generador de bloques. Puedes ver entonces este objeto de tiempo como un reloj despertador, que al llegar a la hora indicada, sonará la alarma indicándote que es la hora de trabajar para generar un bloque.
Aleatoriedad, la clave del proceso
Este proceso de selección es aleatorio y es alimentado por las instrucciones de generación de números aleatorio de Intel, la instrucción RDRAND. Esta instrucción única en los procesadores Intel (aunque AMD también tiene una equivalente) genera números aleatorios de forma acelerada usando la entropía (o caos) que se origina eléctricamente dentro de los procesadores. Un proceso que en teoría genera números aleatorios muy difíciles de detectar. Esta es la base de este proceso inicial, y nos dice también, lo extremadamente dependiente que es PoET a estos procesadores.
Pero adicional, la única forma en que un participante pueda convertirse en generador de bloques es presentando un certificado que lo avale para ello. Este certificado es generado usando las instrucciones SGX (Software Guard Extensions de Intel). Estas instrucciones están especializadas en criptografía, y se usan para generar un certificado digital seguro. El certificado generado es almacenado en una bóveda hardware (como las de las wallets hardware, un HSM) o TEE (Trusted Execution Environment) que se encuentra dentro del mismo procesador.
Solo los participantes que cumplan con tener un certificado válido en el sistema, con las claves públicas y privadas en su TEE, y que tengan un objeto de tiempo verificado y activo, podrán participar en la generación de bloques usando el algoritmo PoET.
Fase de generación
Ahora bien, cuando el participante recibe su objeto de tiempo y este se activa, se da inicio al proceso de generación. Desde el preciso momento en el que el objeto de tiempo “despierta” al participante, este está habilitado para generar un bloque. Todo el proceso anterior garantiza que ese participante haya cumplido con las reglas previas a la generación que son:
- Generar un certificado seguro usando RDRAND, SGX y almacenando el mismo en su TEE.
- Compartir el certificado con la red. Esto con el fin de convertirse en un participante activo y reconocido dentro de la red.
Como ven estos dos pasos son claramente puntos de control de acceso, que garantizan que nadie que no esté reconocido por las autoridades centrales de la red pueda participar en la misma. En definitiva, estamos frente a un protocolo de consenso diseñado específicamente para redes privadas o permisionadas.
Comienza la generación del hash
La fase de generación de PoET es sencilla. El participante o generador de bloque activos, solo debe tomar las transacciones de la red, agregarlas al bloque, generar un hash para el mismo y emitirlo a la red para que sea aceptado. El hash usado puede variar dependiendo de la implementación, pero es factible usar SHA-256, pero sin necesidad de hacer una prueba de trabajo como en Bitcoin, pues PoET hace innecesario esto. Basta con generar un hash asociado a la información del bloque para emitir dicho bloque. En definitiva, un proceso que no debería llevar, ni de lejos, 0,1 segundos.
Al generar el bloque, este es emitido a la red junto con un certificado digital del participante. En dicho certificado va una lista de próximos generadores de bloques de la red, cerrando con ello el proceso de generación.
Pros y Contras de PoET
Pros
- Es un algoritmo de consenso y generación de bloques extremadamente eficiente y escalable.
- El proceso es perfecto para aplicarse a redes blockchain privadas, de hecho, está dirigido a espacios empresariales controlados.
- La selección y aceptación de validadores garantiza que la red es resistente a ataques externos e internos.
- El proceso de generación se descentraliza. Su proceso de generación es descentralizado. Los objetos de tiempo y la activación garantizan que todos tendrán las mismas oportunidades de generación de bloques.
Contra
- Extremadamente dependiente de la tecnología de Intel. Si bien el algoritmo es software libre y puede adaptarse a otras plataformas, los cambios harían a dichas redes prácticamente incompatibles o con graves problemas de incompatibilidad.
- Existen vehículos de ataque a estas redes que explotan las vulnerabilidades conocidas de los procesadores Intel.
¿Cuánto sabes, criptonauta?
¿Una blockchain usando Proof of Elapsed Time (PoET) es altamente escalable?¡CIERTO!
Una red PoET puede llegar a escalar por encima del millón de transacciones por segundo, aunque con la desventaja de que no es una red abierta y sin censura como Bitcoin o Ethereum.
Vulnerabilidades
Si bien PoET es un algoritmo de consenso muy seguro conceptualmente, la estructura que usa para funciona ha comenzado a flaquear: Intel y sus procesadores están plagados de errores, los cuales son conocidos públicamente pero no reciben solución.
Si bien no existe ningún hardware o software libre de errores, Intel se ha enfrentado en los últimos 10 años a graves problemas. Problemas que se han acentuado mucho más recientemente. Casos de vulnerabilidades como Meltdown, Spectre, SGX Crack, Prime+Probe, LVI, Plundervolt, Replay SGX o Enclave, tienen incidencia directa sobre la seguridad de PoET. De hecho, tienen incidencia directa sobre la seguridad general de nuestras computadoras.
Aunque los vehículos y medios de ataque son altamente complejos, son posibles y cualquier hacker o grupo de hackers con recursos puede explotarlos. Los gobiernos en su afán de controlarlo todo, gastan fortunas por hacerse con este tipo de vulnerabilidades para desarrollar herramientas que le permitan espiar a sus ciudadanos y otros gobiernos, incluso al mundo entero si es posible. De hecho, existen sospechas de que por ejemplo RDRAND, es una instrucción troyanizada o debilitada intencionalmente para facilitar el espionaje.
Las vulnerabilidades en hardware son las más riesgosas
Todo este grupo de vulnerabilidades hasta cierto punto pueden ayudar a crear herramientas con la capacidad de romper criptografía. Por ejemplo, una instrucción RDRAND debilitada (como se sospecha que intencionadamente hace Intel) permitiría que el generador de números aleatorio fuera “predecible” conociendo las características internas de su funcionamiento, algo que solo Intel sabe. Esto podría abrir las puertas para que algoritmos que consideramos seguros como AES, ECDSA, RSA o demás puedan ser vulnerados cuando se ejecutan sobre un procesador Intel, comprometiendo nuestra seguridad y dinero. Esto, que puede sonar a ciencia ficción para ojos inexpertos, es una realidad. De hecho, ya existe un precedente con el caso de Dual-RDBG y la consola PlayStation de Sony. Recordemos que la criptografía anticopia de esta consola fue rota por un problema de seguridad de esta naturaleza.
Afortunadamente ningún proyecto de criptomonedas como Bitcoin o Ethereum, hace uso de este tipo de instrucciones. Mucho menos Zcash o Monero, donde los desarrolladores son cuidadosos al extremo con la calidad de las implementaciones criptográficas que usan. Además, el mismo desarrollo de Bitcoin cuestionó herramientas criptográficas conocidas, como es el caso de OpenSSL, abandonando su uso en favor de sus propias herramientas. Una muestra más de la seriedad de la seguridad en el desarrollo de esta criptomoneda.
Casos de uso de PoET
HyperLedger
El caso de uso más importante de PoET es el proyecto HyperLedger, donde PoET es el algoritmo por defecto de soluciones que usan el framework (marco de trabajo y desarrollo de software) HyperLedger Sawtooth. Sawtooth de hecho es el lugar de nacimiento y desarrollo de PoET.