¿Se puede verificar de forma segura un archivo descargado firmado si solo controla la clave privada y el algoritmo de descarga / verificación?

0

Estoy diseñando el procedimiento de actualización para cámaras IP. Me pregunto si mi diseño actual es lo suficientemente seguro.

Tengo un archivo binario que quiero acceder a un dispositivo. Hago un hash de este archivo binario y cifro el hash con mi clave privada (una firma). Puse este archivo binario y el hash cifrado en un archivo zip. Creo un hash MD5 del archivo zip. Puse la clave pública, el hash MD5 y el archivo zip públicamente disponibles.

Tengo varios dispositivos, algunos de ellos bajo el control hostil del cliente, algunos de ellos bajo el control amigable del cliente.

Los clientes amigables tienen un algoritmo de descarga como este:

Al recibir un comando, que contiene las URL, las URL proporcionadas se utilizan para descargar la clave pública, el hash MD5 y el archivo zip. Se comprueba el archivo zip descargado para ver si coincide con el hash MD5. Luego se extrae. Luego, la clave cifrada se descifra con la clave pública proporcionada. Se hace un hash del archivo binario y se compara con la clave desencriptada.

Si tanto la comprobación de MD5 como la comprobación de hash del archivo binario se realizan correctamente, el binario se ejecuta con acceso de raíz.

Los clientes hostiles tienen acceso a todo el dispositivo, por lo que conocen los secretos almacenados en el dispositivo. Sin embargo, no tienen acceso al sistema en el que almaceno la clave privada.

Por lo que puedo ver, el comando y el tiempo del mismo son potencialmente hostiles, las URL son potencialmente hostiles, por lo que el zip es potencialmente hostil, al igual que el binario y el hash y MD5. El hash MD5 se omite fácilmente, pero solo sirve para verificar la integridad del archivo. El hash encriptado del binario, sin embargo, es mi principal punto de defensa.

Cuando el zip, el binario, el hash cifrado y la clave pública están bajo el control del atacante, mi sistema sigue siendo seguro (es decir, ¿puede un atacante hacer que un cliente amigable ejecute un binario que no se originó en yo)? ¿Es más fácil romper la seguridad ya que se proporcionan el "texto cifrado" y el "texto simple" y la clave pública? Si es más fácil, ¿es más fácil por cualquier magnitud relevante?

    
pregunta Pimgd 14.04.2015 - 13:16
fuente

2 respuestas

2

No, su proceso de actualización es defectuoso, y cualquiera que intente comprimirlo tendrá éxito.

Supongo que no está utilizando TLS / HTTPS, ya que no los mencionó en su pregunta.

Por eso:

  • Su clave pública se obtendrá de Internet

    Esto le permite al atacante interceptar la conexión y proporcionar una clave pública alterada. Todo tu proceso de verificación ya fue derrotado.

  • Tu zip se descarga y verifica con una clave posiblemente manipulada

    Tan pronto como el archivo se descargue, se verificará con la clave pública (ahora manipulada). El atacante ya ha comprometido la clave pública, y puede crear un nuevo zip con una carga maliciosa y firmarlo con la clave generada. Tu programa lo aceptará alegremente.

En este momento, la carga maliciosa se ejecuta con acceso de raíz. Se acabó el juego.

Un enfoque (más o menos seguro) es este:

  • Utilizar SSL / TLS

    Esto hace que sea más difícil interceptar y manipular los archivos a través de Internet.

  • Utilice el certificado delgante

    Hace que sea aún más difícil manipular los archivos, ya que no se aceptará una AC autofirmada o no reconocida.

  • Ponga la clave pública en su actualizador

    De esta manera, no será fácil engañarlo para que acepte un paquete de actualización falsificado.

  • Proteger al actualizador

    Su dispositivo no debe permitir el acceso a la memoria o al contenido del sistema de archivos donde está instalado el actualizador. Si fallas en esto, la clave pública en su interior podría cambiarse.

respondido por el ThoriumBR 14.04.2015 - 14:39
fuente
0

No.

Un atacante puede hacer un binario. Luego, pueden crear un hash a partir de su binario y cifrarlo con su clave privada. Luego empaquetan su binario y suministran la clave pública, binaria y maliciosa a la cámara. Debido a que el atacante puede suministrar la clave pública y el contenido, controla ambos lados de la verificación y el sistema se compromete fácilmente.

Al menos una de las dos partes debe estar bajo su control, y dado que el binario siempre cambia, deberá colocar la clave pública en la cámara de manera segura. De lo contrario, no es posible verificar que el binario suministrado haya sido firmado por usted.

    
respondido por el Pimgd 14.04.2015 - 14:29
fuente

Lea otras preguntas en las etiquetas