Protocolo de criptografía adecuado para comunicaciones de radio de dos vías

0

Específicamente hablando de redes de radio walkie talkie. Supongamos que hay un grupo de hasta 16 personas, cada una equipada con una unidad de este tipo. Por lo general, una persona hablará entre ellos (uno a uno) o una persona transmitirá a todos los demás miembros (uno a todos). El objetivo es asegurar y autenticar toda la comunicación entre ellos.

Pensé en lo siguiente:

1) Cada usuario tendrá una clave pública / privada predefinida (por ejemplo, RSA). 2) Habrá una clave simétrica predefinida (por ejemplo, AES-128 bit).

Las secuencias de voz se dividirán en segmentos de 128 bits. Cada segmento se cifrará primero con AES 128, luego se procesará con SHA-256, y el hash se cifrará con la clave privada del usuario, y esta firma se enviará junto con el mensaje cifrado. El receptor primero procesará el mensaje y luego descifrará la firma usando cualquiera de las 16-1 claves públicas que tiene. Idealmente, uno de ellos 'trabajará', autentificando el mensaje. Luego procede a descifrar el mensaje.

¿Hay alguna vulnerabilidad "clara" en este protocolo?

P.S. Soy consciente de otros protocolos usados, por ejemplo, P25, pero preferiré implementar la mía.

    
pregunta student1 19.07.2014 - 17:19
fuente

2 respuestas

3

Lo primero que debe hacer es definir lo que quiere decir con "asegurar y autenticar". Debe poner en palabras quiénes son los atacantes, qué pueden hacer y qué se les debe impedir hacer.

En ejemplo de dicho modelo de ataque está el siguiente:

  • Los atacantes son forasteros. Escucharon el canal común (las ondas de radio). Quieren obtener los datos confidenciales que los miembros del grupo intercambian entre sí. Los miembros del grupo confían entre sí.

Si ese es el modelo de ataque, entonces es suficiente encontrar un secreto compartido K , que todos los miembros del grupo, pero ningún atacante sepa, y luego cifrar los paquetes con algún algoritmo de cifrado simétrico (por ejemplo, AES en un modo adecuado) usando K como clave. La distribución inicial de K se puede hacer haciendo que cada miembro del grupo posea un par de claves RSA; un miembro del grupo genera K al azar, lo cifra con la clave pública de cada miembro del grupo y lo difunde.

Ahora extendamos ese modelo de ataque a otro :

  • Los atacantes son forasteros. Escucharon el canal común, pero también intentarán enviar mensajes falsos, a veces reproduciendo mensajes anteriores, con o sin alteraciones. Tales instancias de mensajes falsos / reproducidos serán detectados y eliminados de manera confiable por los miembros del grupo.

Ahora también necesita un MAC para cada paquete (de modo que los atacantes solo puedan reproducir los paquetes anteriores, no crear nuevos o modifican los paquetes existentes), y algún tipo de contexto de conexión para que se detecten ataques de repetición . Esto se puede hacer incorporando un tipo de marca de tiempo o contador en cada paquete: cada participante recuerda los valores de contador de los últimos paquetes recibidos, rechazando los paquetes que ya se han visto o que tienen un valor de contador "demasiado antiguo". Estos mecanismos a menudo se denominan basado en la ventana y hay cierto equilibrio entre la prevención de ataques de repetición, los requisitos de memoria (para recordar paquetes pasados) y la tolerancia a la pérdida de paquetes debido a la naturaleza poco confiable del medio de transporte. . Examine DTLS como ilustración de cómo el protocolo SSL / TLS puede adaptarse a los medios no confiables basados en paquetes.

Si el atacante puede enviar mensajes falsos, también puede anunciar una clave pública RSA falsa. La distribución de claves públicas es una cuestión de Infraestructura de clave pública , con certificados siendo la solución habitual.

Tal vez queremos más ? Por ejemplo, ¿qué pasa con lo siguiente:

  • Los miembros del grupo también son atacantes. Cada miembro del grupo intentará escuchar y / o interferir con las comunicaciones individuales entre los otros miembros del grupo.

En ese caso, necesitarás intercambios de claves por pares. Para cualquier par de miembros del grupo A y B , debe haber un secreto compartido KA,B que otro Los miembros del grupo y los forasteros no lo saben. Esto todavía puede aprovecharse de pares de claves RSA pre-distribuidos: cuando A quiere hablar con B y aún no tienen un secreto compartido (o se les olvidó una contraseña previa). secreto compartido, por ejemplo, B reinició su computadora y ese secreto compartido estaba solo en la memoria RAM), entonces A genera una nueva clave aleatoria K A, B y lo cifra con la clave pública de B .

Una vez más, lee el TLS completo y DTLS : son bastante legibles, y eso te mostrará lo que tienes que pensar.

    
respondido por el Thomas Pornin 21.07.2014 - 15:11
fuente
0
  1. Firmar cada bloque de texto cifrado creará una sobrecarga masiva y, después de todo, dará como resultado una transmisión lenta de la voz grabada.

  2. Su protocolo no implica la autenticación correcta. El uso de una clave AES fija y no IV (aparentemente) deja mucho espacio para que un atacante pueda falsificar mensajes o evadir el texto plano. Asegúrese de autenticar el envío antes (y verifique la firma de un mensaje completo, por ejemplo, 1/2 segundo de audio), use un protocolo como Diffie-Hellman para acordar una clave compartida y use una Encadenamiento de bloques, así como un IV.

Si planea usar este protocolo con walkie talkies reales, debe tener en cuenta que las claves públicas / privadas fijas solo se pueden usar para un conjunto de unidades y que este conjunto de unidades no es ampliable (ya que los walkie talkies criptográficos que requieren el el cliente para leer / escribir las claves no se usaría en ningún otro lugar que no sea, por ejemplo, en el ejército).

    
respondido por el marstato 19.07.2014 - 18:16
fuente

Lea otras preguntas en las etiquetas