desarrollo de dongle

0

Debo proporcionar una solución de hardware + software. El software es una aplicación en c ++ que se ejecuta en windows. El hardware es placa base + procesador + disco + memoria. Para proteger la solución, necesito desarrollar un dongle USB.

Estoy planeando desarrollar una aplicación que generará los dongles USB mediante el cifrado de diferentes datos (datos del cliente, componentes de hardware ...) mezclados con una contraseña.

La solución comprobará si este dispositivo USB está presente cada 60 segundos. Si es así, la solución descifrará el contenido del dispositivo USB y lo comparará con lo que la solución ha cargado internamente (en código). Si hay una coincidencia, la solución seguirá funcionando hasta el próximo ciclo (60 segundos después). Si no, la solución se detendrá.

Preguntas:

  1. ¿Tiene sentido?

  2. ¿Debo verificar el número de serie de los componentes de hardware (cpu ...) en cada ciclo? ¿Cómo hacer este cheque realmente rápido?

pregunta ekremer 31.07.2018 - 18:28
fuente

3 respuestas

2
  

¿Tiene sentido?

No.

Hace más de 20 años, cada pequeño proveedor de software especializado intentaba proteger su IP mediante dongles de hardware. Fue un desvío para los clientes, un PITA para soporte y se omitió tan frecuentemente como se rompieron.

El mundo se ha movido, tú también deberías.

  

La solución comprobará si este dispositivo USB está presente cada 60 segundos. Si es así,   La solución descifra el contenido del dispositivo USB y lo compara ...

Por lo tanto, la solución comprobará si hay un archivo presente cada 60 segundos. Si es así, la solución descifra el archivo y lo compara. ¿Qué tan difícil sería subvertir?

  

¿Debo verificar el número de serie de los componentes de hardware (cpu ...) en cada ciclo?

Ligeramente más sensible que usar un dongle. Pero si su producto realmente requiere tal capacidad, entonces ¿por qué no usar una network HSM ; ya sea del propio cliente o incluso de uno que usted mismo hospeda.

  

¿Cómo hacer esta comprobación realmente rápido?

La lectura de las propiedades debería tener aproximadamente la misma velocidad que una recuperación de RAM, es decir, medida en nanosegundos para algo que propones hacer cada 60 segundos, ¿y estás preocupado por el rendimiento ?!

    
respondido por el symcbean 01.08.2018 - 14:55
fuente
1
  

¿Tiene sentido?

No. Se basa en la aplicación que lee el contenido del dongle y realiza alguna acción en él. Esto implica que el contenido es legible y, por lo tanto, trivial de replicar. Solo intercepte todas las llamadas USB con Wirehark y escriba la respuesta esperada.

  

¿Debo verificar el número de serie de los componentes de hardware (cpu ...) en cada ciclo? ¿Cómo hacer este cheque realmente rápido?

No es necesario que el cheque sea realmente rápido. Puede realizarlo, por ejemplo, cada diez segundos en un hilo separado. Pero le sugiero que busque sistemas de dongle comerciales, como ofertas de Flexeras . Porque, de alguna manera, dudo que tú mismo puedas hacer un buen sistema, según las preguntas que hagas.

    
respondido por el vidarlo 01.08.2018 - 08:11
fuente
0

Estoy de acuerdo con vidarlo (respuesta anterior). En mi humilde opinión, utilizar una solución lista para usar sería más rápido y más barato.

Tal vez un simple token de criptografía (token USB o una tarjeta) sea suficiente. Podría dejar que su software firme algunos datos aleatorios y verifique la firma.

Independientemente de que, tan pronto como el código reside en el lado del cliente, usted pierde efectivamente cualquier control sobre él y no puede evitar que el cliente cambie el código deshabilitando la validación (a menos que se ejecute en un hw diseñado explícitamente para evitar el acceso a su código interno, como los microcontroladores).

    
respondido por el gusto2 01.08.2018 - 09:51
fuente

Lea otras preguntas en las etiquetas