Eliminación de puntos críticos de falla en el sistema Threshold Cryptography HSM

Magíster en Ciencias, Mención Computación === Ingeniero Civil en Computación === En un sistema distribuido, los puntos críticos de falla son aquellos nodos tales que si sólo uno de ellos falla, el sistema completo deja de funcionar. La no existencia de estos permite tener sistemas robustos y toleran...

Full description

Bibliographic Details
Main Author: Cifuentes Quijada, Francisco José
Other Authors: Bustos Jiménez, Javier
Language:es
Published: Universidad de Chile 2016
Subjects:
DNS
Online Access:http://repositorio.uchile.cl/handle/2250/138277
Description
Summary:Magíster en Ciencias, Mención Computación === Ingeniero Civil en Computación === En un sistema distribuido, los puntos críticos de falla son aquellos nodos tales que si sólo uno de ellos falla, el sistema completo deja de funcionar. La no existencia de estos permite tener sistemas robustos y tolerantes a fallas. Threshold Cryptography Backend para DNSSEC es un sistema desarrollado previamente a este trabajo, el cual permite firmar electrónicamente una zona DNS de manera distribuida con el uso criptografía umbral. El autor de esta tesis, en un trabajo previo, desarrolló una interfaz para que el Threshold Cryptography Backend sea utilizado por otras herramientas. La interfaz consistía en dos elementos: una biblioteca que implementa la API PKCS #11, estándar para soluciones criptográficas, y un nodo capaz de escuchar a esta biblioteca y transformar las solicitudes al Threshold Cryptography Backend. La interfaz permite que el sistema sea utilizado como una virtualización de un módulo de seguridad por hardware (HSM por sus siglas en inglés), por parte de cualquier aplicación diseñada para que use estos dispositivos. Por lo cual, el nuevo sistema, que incluye tanto la nueva interfaz como el Threshold Cryptography Backend, adquiere el nombre de Threshold Cryptography HSM. Este nuevo sistema consta de varios nodos: el nodo pkcs11, el nodo maestro, y de los nodos firmadores, además de los nodos que manejan la comunicación entre cada uno de estos, por medio del software de mensajería RabbitMQ. Sin embargo, dada las características del sistema original y los requerimientos de la API, dicho sistema presenta puntos críticos de falla, lo cual deja vulnerable al sistema en su conjunto. La presente tesis, describe el trabajo realizado para rediseñar totalmente el sistema Treshold Cryptography HSM, con la finalidad de eliminar los puntos críticos de fallas. Esto se logró trasladando funcionalidad entre nodos. El primer traslado de funcionalidad consistió en los mecanismos de comunicación: se cambiaron los nodos de mensajería RabbitMQ por un protocolo de mensajería implementado por la biblioteca ZeroMQ. El segundo traslado de funcionalidad, consistió en mover varios algoritmos de criptografía umbral que corrían en el nodo maestro, hacia el nodo pkcs11. Originalmente, los algoritmos de criptografía umbral estaban implementados en el lenguaje de programación Java, sin embargo la API PKCS #11 está diseñada para ser usada por el lenguaje de programación C. Por lo tanto, el traslado de la funcionalidad criptográfica requirió reescribir los algoritmos en el lenguaje de programación C. Para enfrentar este desafío, se desarrolló una biblioteca en C que implementaba la funcionalidad criptográfica necesaria para eliminar el punto crítico de falla. De este modo, el nodo pkcs11 utiliza esta biblioteca, incorporando así parte de la funcionalidad del nodo maestro. Este desarrollo permitió, entre otras cosas, una mejora en desempeño y una simplificación del código. Adicionalmente, quedó como subproducto la implementación inédita de un protocolo criptográfico, el algoritmo de firma criptografica umbral RSA. Dicha implementación quedó disponible bajos los términos una licencia de software libre tipo MIT. Este protocolo de criptografía umbral, cumple la propiedad de no falsificabilidad aún cuando nodos no comprometidos reciben una solicitud de firmar un documento falsificado. Esta propiedad de seguridad permiten asegurar que el sistema es robusto. Como toda funcionalidad criptográfica, requiere un cuidado especial en el desarrollo y testing, por tanto se diseñó un mecanismo para realizar pruebas del sistema basado en la equivalencia entre sistemas distribuidos y sistemas concurrentes. A partir de esto, se procedió a utilizar model checking como mecanismo de verificación formal para estudiar la correctitud del sistema.