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.