ClaimChain: Decentralized Public Key Infrastructure

La infraestructura de clave publica (PKI) es un componente necesario para el funcionamiento de las comunicaciones seguras modernas. Esta infraestructura permite a los miembros participantes establecer claves criptograficas para sus destinatarios, manteniendo relaciones de alta integridad entre usuarios (nombres, direcciones u otros identificadores) y las claves publicas utilizadas para cifrar y verificar los mensajes. Los sistemas PKI existentes presentan diferentes concesiones con respecto a propiedades de seguridad. La mayoria de disenos mas exibles suelen ser centralizados, lo que facilita la actualizacion de claves y proporciona una buena disponibilidad. Dichos disenos, sin embargo, requieren que los usuarios confien en una fuente de autoridad centralizada, poniendo a esta autoridad en una posicion privilegiada para vigilarlos. Por otro lado, los enfoques actuales que alivian problemas de seguridad derivados de la centralizacion estan limitados en terminos de exibilidad y capacidad para revocar y actualizar rapidamente las claves. Por lo tanto, no son adecuados para aplicaciones modernas que requieran cambios frecuentes de claves por razones de seguridad. En este thesis proponemos un diseno de PKI descentralizado, que llamamos ClaimChain, donde cada usuario o dispositivo mantiene repositorios de afirmaciones acerca de sus propias claves publicas y las de sus contactos. La alta integridad de los repositorios almacenando dichas afirmaciones se mantene mediante el uso de estructuras autenticadas, cadenas de hash y arboles Merkle; y su autenticidad y no repudio gracias a el uso de firmas digitales. Introducimos el concepto de referencias cruzadas sobre cadenas de hash como una manera de verificable de atestiguar sobre los estados de otros usuarios. ClaimChain permite detectar el compromiso de claves, que se manifiestan como bifurcaciones de las cadenas de hash, e implementar diversas politicas sociales para derivar decisiones sobre el estado mas reciente de los usuarios en el sistema. La realizaction de afirmaciones sobre las claves de otras personas introduce una problema de privacidad inexistente en disenos centralizados de PKI. Esta informacion puede revelar el grafo social, y a veces incluso patrones de comunicacion. Para resolver este problema, usamos funciones aleatorias verificables criptograficamente para obtener identificadores privados, que son realeatorizados en cada actualizacion de las cadenas de los usuarios. Esto permite publicar de manera abierta y verificada afirmaciones que solo pueden ser leidas por usuarios autorizados, garantizando la privacidad del grafo social. Ademas, la construccion especifica de los arboles Merkle en ClaimChain, junto a el uso de funciones aleatorias verificables, asegura que los usuarios no pueden enganar acerca de los estados de otras personas. ClaimChain es exible con respecto a las opciones de despliegue, permitiendo despliegues totalmente descentralizados, asi como modos de operacion centralizados, federados e hibridos. Hemos evaluado los requisitos computacionales y de memoria de ClaimChain usando una implementacion prototipo. Tambien hemos simulado el flujo del sistema utilizando el conjunto de datos de Enron, compuesto del historial de correos electronicos reales en el contexto de una organizacion, con el fin de evaluar la eficacia de la propagacion de material clave en un entorno totalmente descentralizado. ---ABSTRACT---Public key infrastructure (PKI) is a necessary component for the functioning of modern secure communications. It allows communicating parties to establish cryptographic keys for their correspondents by maintaining high-integrity bindings between users (names, addresses, or other identifiers) and public keys used to encrypt and verify messages. Existing PKI systems provide different trade-offs between security properties. Most designs tend to be centralized, which eases the update of keys and provides good availability. A centralized design, however, requires users to trust the centralized source of authority for honestly providing correct public keys for requested identities, and puts such authority in a privileged position to perform surveillance on users. On the other hand, current approaches that alleviate these issues are limited in terms of exibility and capability to rapidly revoke and update keys. Thus, they are not suitable for modern applications that require frequent key changes for security reasons. We envision a decentralized PKI design, that we call ClaimChain, where each user or device maintains repositories of claims regarding their own key material, and their beliefs about public keys and, generally, state of other users of the system. High integrity of the repositories is maintained by virtue of storing claims on authenticated data structures, namely hash chains and Merkle trees, and their authenticity and non-repudiation by the use of digital signatures. We introduce the concept of crossreferencing of hash chains as a way of efficient and verifiable vouching about states of other users. ClaimChain allows to detect chain compromises, manifested as forks of hash chains, and to implement various social policies for deriving decisions about the latest state of users in the system. The claims about keys of other people introduces a privacy problem that does not exist in the centralized PKI design. Such information can reveal the social graph, and sometimes even communication patterns. To solve this, we use cryptographic verifiable random functions to derive private identifiers that are re-randomized on each chain update. This allows to openly and verifiably publish claims that can only be read by the authorized users, ensuring privacy of the social graph. Moreover, the specific construction of Merkle trees in ClaimChain, along with the usage of verifiable random functions, ensures users can not equivocate about the state of other people. ClaimChain is exible with respect to deployment options, supporting fully decentralized deployments, as well as centralized, federated, and hybrid modes of operation. We have evaluated the ClaimChain's computation and memory requirements using a prototype implementation. We also simulated the ow of the system using Enron dataset, comprising real-world email communication history within an organization, in order to evaluate the effectiveness of propagation of key material in a fully decentralized setting.