Diseñar mi propio HSM usando un Arduino

11

Estoy intentando construir desde cero algo similar al Secure Enclave de Apple.

Lo que he hecho es usar una biblioteca AES para que Arduino cree un dispositivo de seguridad. Una clave criptográfica aleatoria y el código se almacenan en el chip y se bloquean (no se pueden leer). El servicio se proporciona únicamente a través del puerto serie USB. Hay algunos comandos, como set_salt , set_IV , encrypt y decrypt . Todo funcionó, excepto que es muy lento, pero oye, ¿qué puedes esperar de un Arduino?

Para hacerlo útil, planeo usarlo para cifrar una clave AES separada almacenada en la computadora / teléfono, y esta clave se usa para cifrar los datos de la aplicación. Mi pregunta es. ¿Esto va a tener un riesgo de seguridad ya que los datos de la aplicación no están cifrados directamente por el Arduino? Entiendo que la clave utilizada para cifrar los datos de la aplicación puede estar expuesta a través de volcados de memoria, pero los programadores de la aplicación pueden minimizar este riesgo. También entiendo que la comunicación entre Arduino y la aplicación también debe estar cifrada. Pero al lado de estos dos, ¿hay otros agujeros donde el riesgo de exponer la clave es posible?

    
pregunta user2600798 18.04.2016 - 15:50
fuente

2 respuestas

19

Primero, el enclave seguro de Apple es un módulo que garantiza que el gestor de arranque solo ejecute el código firmado por Apple. Eso no es lo que estás haciendo, estás intentando crear un Módulo de seguridad de hardware (HSM) .

Cuando se dio cuenta, la manera correcta de hacer esto es hacer que el HSM realice todas las operaciones de encriptación internamente para que ninguna llave salga del dispositivo. Como señala, si entrega la clave de cifrado / descifrado al dispositivo , entonces ahora está fuera de su control. Por lo tanto, lo ideal es que desee un procesador que sea lo suficientemente rápido para realizar el procesamiento criptográfico a bordo.

Dicho esto, almacenar una clave AES cifrada en el dispositivo al lado de los datos, y confiar en el HSM para descifrarlo para usted es exactamente cómo funciona el cifrado de disco completo de Android (creo). Recomendaría leer la página de desarrollo de Android en Full Disk Encryption para darle ideas.

Ampliaré esta respuesta para dar un contexto más amplio.

Esta pregunta es tan profunda que deberíamos preguntarnos cuál es su "modelo de amenaza" (es decir, "¿contra qué tipo de ataques está tratando de protegerse?"). Como se señala en los comentarios de @JeffMeden y @supercat, el nivel de seguridad que necesita realmente depende de lo que está tratando de proteger y de cómo quiere que se proteja.

Usted menciona que desea proteger la clave AES de un volcado de memoria. Una clave AES es valiosa, pero no porque la clave en sí sea valiosa, sino porque la información que protege es valiosa. Usted dijo:

  

Entiendo que la clave utilizada para cifrar los datos de la aplicación podría estar expuesta a través de volcados de memoria,

Es bueno pensar en esto, pero si los datos en sí pueden exponerse a través de volcados de memoria, es poco relevante. Pero como dices,

  

pero los programadores de aplicaciones pueden minimizar este riesgo.

Si su HSM está descifrando una clave AES, o descifrando los datos directamente, una vez que lo devuelva a algún programa de usuario, ya no tendrá ningún control sobre su protección.

Conclusión: si su modelo de amenaza incluye procesar los datos descifrados en una PC, al mismo tiempo que protege dichos datos contra alguien lo suficientemente poderoso como para hacer un volcado de memoria, entonces no hay nada que pueda hacer su periférico USB; también necesita escribir el software que se ejecuta en la PC.

Si comienza a bajar esa línea, terminará inventando un Entorno de ejecución confiable en el que todo el procesamiento de los datos de texto sin formato realmente ocurren dentro de un procesador seguro, y solo el resultado se devuelve a la PC "no confiable".

    
respondido por el Mike Ounsworth 18.04.2016 - 16:58
fuente
1

Otro gran problema aquí es que este dispositivo no es resistente a la temperatura. Cualquier persona con acceso físico al dispositivo puede omitir su código y leer cualquier secreto directamente.

Un pirata informático determinado también puede intentar reprogramar el dispositivo (si deja abierta la capacidad) y lograr lo mismo que arriba.

Me pregunto cuál es el valor de reinventar la rueda en lugar de usar las soluciones TPM, Smartcard o HVM existentes.

    
respondido por el billc.cn 22.04.2016 - 14:37
fuente

Lea otras preguntas en las etiquetas