Usando clave pública / privada para validar múltiples dispositivos

1

Creo que esto es posible pero no estoy seguro de cómo se llama. Quiero encontrar una forma estándar de hacer esto (nunca hagas tu propio rollo).

Tengo una clave pública / privada y varios dispositivos en una red. Usando (por ejemplo) los números de serie de los dispositivos, quiero usar la clave privada para crear un valor que los dispositivos puedan validar con sus números de serie y la clave pública.

Entonces el proceso sería:

  1. El cliente proporciona la lista de números de serie del dispositivo.
  2. Use la clave privada para crear un valor y devolvérsela al cliente.
  3. El cliente ingresa este valor en los dispositivos.
  4. Cada dispositivo puede validar su número de serie con la clave pública.

¿Cómo se llama esto y hay alguna forma estándar de hacerlo?

    
pregunta parsley72 14.09.2016 - 18:24
fuente

2 respuestas

3

Parece que simplemente puedes usar una lista firmada de números de serie.

Obtiene una lista de números de serie, la firma y la devuelve con la firma. Cada dispositivo tiene una copia de la lista, la firma y la clave pública que se usó para firmar.

El dispositivo verifica la validez de la lista por su firma, y si es válida, verifica la lista de la presencia del número de serie.

Un ejemplo usando RSA con openssl:

  • En el dispositivo de firma:

    openssl dgst -sha256 -sign private.key -out serials.sha256 serials.txt
    
  • En el dispositivo que necesita validar su número de serie:

    openssl dgst -sha256 -verify public.key -signature serials.sha256 serials.txt &&\
    grep "$myserial" serials.txt
    

Esto no es a prueba de balas. Debe asegurarse de que la clave pública no se puede intercambiar y que el paso de validación en el dispositivo no se puede omitir. Estas no son tareas fáciles en un sistema complejo.

En otras palabras: este bit obviamente se incorporará en un sistema más grande. Deberá considerar la seguridad de todo el sistema para que esto sea efectivo.

Además, tenga cuidado de no caer en denialismo de turing-completeness .

    
respondido por el GnP 14.09.2016 - 20:18
fuente
3

Echaría un vistazo rápido a lo que es un certificado digital aquí .

El corto:

Lo que está proponiendo es una infraestructura de clave pública básica. En las grandes organizaciones, pueden tener su propia CA como fuente de confianza, principalmente porque cuesta dinero utilizar a un tercero para firmar un certificado para uso interno.

Si sus clientes son externos a su negocio, entonces le recomiendo encarecidamente que consulte la solución de firma de terceros.

Lo que probablemente intentas lograr es:

  1. Utilice el número de serie del dispositivo como un identificador único. (Ver Wiki arriba).
  2. Cree un certificado digital firmado por una CA.
  3. Utilice este certificado para la autenticación del dispositivo.

Esto se conoce más comúnmente como autenticación basada en certificado.

La infraestructura para hacer esto es un poco tediosa para las organizaciones más pequeñas, pero ambos son comerciales, de código abierto. También te dirijo a este RedHat Doc. Puede que no estés usando Linux, pero son un gran trabajo al discutir las partes y piezas.

    
respondido por el Shane Andrie 14.09.2016 - 18:55
fuente

Lea otras preguntas en las etiquetas