¿Es posible firmar / verificar un par de claves?

1

Actualmente tenemos la necesidad de autenticar y verificar los pares de llaves generados. Nuestro sistema permite a los usuarios registrarse en nuestro servicio, lo que les genera un par de claves para usar en nuestra red. Necesitamos una forma de autenticar pares de claves para poder verificar que fueron generados por nosotros, y no por otra persona.

¿Es posible firmar cada uno de los pares de claves generados con una clave maestra que luego se puede usar para verificar cada par de claves generado? Pensé que esto debe ser posible porque es algo similar a la forma en que funcionan los certificados.

EDITAR: Para ser más claro en lo que estoy buscando. Estamos desarrollando una red de contenido descentralizada (como prueba de concepto). Los Proveedores de Contenido Autoritario (aquellos que tienen autoridad sobre el contenido que sirven) podrán registrar su "nombre de dominio" a través de un registro maestro. Este registro maestro mantendrá un par de llaves maestro que se utiliza. El registro emitirá al proveedor de contenido un par de llaves que se puede usar para firmar digitalmente su contenido y cualquier información transmitida para que el cliente pueda verificar que la persona que transmite los datos es autoritaria sobre el nombre de dominio. ¿El problema que tenemos es cómo comunicarnos con el cliente cuando emitimos un nuevo par de claves a un nuevo host autorizado? Pensamos que si pudiéramos firmar cada par de llaves con el par de llaves de registros maestros, podríamos codificar la clave pública en el cliente y usarla para verificar cada par de llaves.

    
pregunta jduncanator 16.04.2014 - 06:11
fuente

2 respuestas

2

Lo que estás describiendo es el problema exacto de distribución de clave pública que PKI está destinado a resolver. Cuando su "par de llaves maestras" se utiliza para firmar la clave pública de un proveedor de contenido autorizado para un dominio específico, entonces está emitiendo un certificado vincular el nombre de dominio con una clave pública. Eso es lo que pretendes hacer, y eso es PKI, lo quieras o no.

Donde se generan claves privadas es ortogonal al problema. Un proveedor de contenido obtiene un certificado (par de claves vinculado a su nombre de dominio) a través de algún procedimiento diseñado para garantizar que solo el proveedor correcto obtenga la clave privada. Hay muchas formas de organizar dicho procedimiento, y el par de claves puede generarse de su lado o del lado del proveedor. En términos generales, es preferible que las claves privadas se generen en el lado del proveedor, porque de lo contrario la clave privada tiene que viajar , y no nos gusta cuando viajan las claves privadas. Pero eso es sólo la afirmación general; En la práctica, el contexto importa mucho. P.ej. Si conoce a la gente del proveedor físicamente, puede organizar una transferencia protegida físicamente de la propia clave privada o una contraseña grande que se utilizó para cifrar la clave privada.

En cuanto a los formatos y protocolos reales, es muy recomendable que cumpla con los estándares existentes, es decir, X.509 en el caso de los certificados. La razón principal de esto es que el software que es más fácil de desarrollar es el software que ya se ha desarrollado. Encontrará una gran cantidad de compatibilidad con X.509 en las herramientas que ya está utilizando, integradas en su marco de programación (por ejemplo, los certificados de manejo de Java y .NET de forma nativa) o como bibliotecas de código abierto adicionales. Es tentador reinventar su propio formato, pero la experiencia ha demostrado repetidamente que es una mala idea. El punto central es que es muy difícil diseñar un protocolo criptográfico seguro correctamente; es fácil tener algo "que funciona", pero la parte "segura" es la difícil, especialmente porque no se puede probar. Hazte un favor: no reinventes la rueda. NIH se denomina "síndrome" por buenas razones.

    
respondido por el Tom Leek 16.04.2014 - 13:37
fuente
0

Decidimos ir con un enfoque de huellas dactilares. Cuando emitimos un proveedor con un par de llaves, hacemos un hash de la clave pública y del dominio para el que es autoritario en conjunto, y luego la firmamos con la clave de registros maestros. De esta manera, podemos verificar que la clave de un proveedor es válida y está autorizada para su dominio al verificar que el hash de la clave + dominio es válido.

Si alguien tiene alguna sugerencia mejor, todavía soy todo oídos.

NB: Esto es, en cierto modo, esencialmente lo que hace PKI con los certificados, pero sin toda la cantidad adicional de funciones innecesarias que nuestro PoC no necesita.

    
respondido por el jduncanator 16.04.2014 - 10:05
fuente

Lea otras preguntas en las etiquetas