Tesis
Implementación de un algoritmo distribuido de generación de claves RSA con umbral
Autor
Muñoz Vildósola, Caterina
Institución
Resumen
La presente memoria detalla el proceso de implementación de un algoritmo distribuido de generación de claves RSA umbral.
RSA es un sistema criptográfico de clave privada. Esto significa que se requieren dos claves distintas para realizar las operaciones criptográficas: una privada y una pública. En un sistema RSA la clave privada consiste en un valor privado (llamado exponente de firma o desencriptación) mientras que la clave pública consiste en dos valores (el exponente de verificación o encriptación, más un valor denominado módulo ). En un sistema RSA tanto el exponente privado como la factorización del módulo deben mantener secretos para garantizar la seguridad.
En RSA umbral, la operación privada está distribuida entre n nodos. De los n nodos mencionados, se requieren t para poder realizar una operación criptográfica privada de manera exitosa.
Dado que la operación privada está distribuida, la clave privada también debe estarlo. Además, tanto la claves privadas como la factorización del módulo RSA deben seguir siendo secretos. Dado lo anterior, al momento de generar las claves ningún nodo debe tomar conocimiento ni de las claves privadas ajenas, ni de la factorización del módulo RSA.
El trabajo de esta memoria consistió en implementar el algoritmo de generación distribuida de claves RSA umbral propuesto por D. Boneh y M. Franklin. Dicho algoritmo logra generar un módulo RSA y un conjunto de claves privadas umbral sin que ningún nodo obtenga información sobre la factorización del módulo ni sobre las claves ajenas. A diferencia de trabajos previos, el algoritmo logra lo anterior sin requerir de un actor confiable que genere y distribuya las claves. Cabe destacar que el tiempo de ejecución del algoritmo es aleatorizado, por lo que no se puede predecir cuánto tomará en ejecutarse. A pesar de lo anterior, hay un tiempo de ejecución esperado.
Se realizaron pruebas que comprobaron que la implementación estaba correcta y se comportaba de acuerdo a lo especificado en el algoritmo original. Además, se pudo comprobar que el promedio de los tiempos de ejecución medidos fueron menores al tiempo de ejecución esperado.