Asegurar la comunicación de igual a igual

4

¿Hay una manera estándar de asegurar la comunicación entre pares?

Actualmente estoy usando HTTP para transferir datos de igual a igual, sin embargo, la protección con TLS / SSL normalmente requiere una autoridad de certificación para autenticar la identidad, y el uso de un certificado autofirmado codificado en una aplicación significa que es extraíble, lo que todavía permite MiTM.

¿Sería apropiado crear un certificado en la primera ejecución, y luego hacer que la interfaz de usuario muestre la huella digital del certificado para que los usuarios puedan verificar la identidad fuera de banda? O sería más apropiado simplemente cifrar los cuerpos que se envían a través de HTTP con alguna otra biblioteca (porque rodar los míos sería un ejercicio para hacer agujeros de seguridad). Si es así, ¿cuáles son los patrones y las bibliotecas que uno usaría (idealmente multiplataforma)?

    
pregunta yincrash 08.03.2016 - 18:04
fuente

2 respuestas

3
  

¿Hay una manera estándar de asegurar la comunicación entre pares?

Por supuesto que hay. Si desea realizar una comunicación altamente asimétrica (es decir, chat o comunicación similar a chat) OTR (o Axolotl ) es el camino a seguir. Si quieres hacer una comunicación (casi) en tiempo real, TLS es el camino a seguir.

Ambos protocolos requieren claves estáticas a largo plazo. Puede mostrar el hash (¿codificado en hexadecimal?) Al usuario y dejar que lo verifique personalmente. Además, debe almacenar los hashes de las claves públicas y asociarlas con los pares en el nivel de la aplicación para advertir al usuario cuando cambian las claves públicas. Más allá de eso, puede ofrecer a sus usuarios un enfoque de Web-Of-Trust, donde pueden verificar el enlace de cada persona / clave pública con firmas digitales con sus claves privadas.

OTR admite de forma nativa el uso de "solo claves públicas", para TLS puede usar certificados autofirmados o claves públicas sin formato según RFC 7250 combinado con la autenticación completa del cliente TLS.

    
respondido por el SEJPM 08.03.2016 - 21:55
fuente
0

Cuando asegure una aplicación de igual a igual, necesitará algún tipo de cifrado que ya comprenda.

No estoy seguro de en qué idioma está escribiendo su aplicación P2P, pero aquí hay algunas de las posibilidades:

  1. Hay muchas bibliotecas por ahí que te permiten usar AES, aunque esto requiere que ambas partes conozcan la contraseña. esto a su vez lo hará molesto y no muy fácil de usar.
  2. Redirecciona su aplicación a través de la red tor haciendo uso de su capa de cifrado.
  3. use un certificado SSL: obtener un certificado firmado es barato y fácil de obtener, incluso si es solo para el intercambio inicial de claves (desde el paso uno).

En resumen, la forma más eficiente será un certificado SSL para la transferencia segura de datos. De otra manera, IMO agrega una complicación adicional y elimina la facilidad de uso de sus usuarios.

Vas a querer las librerías AES incorporadas en JAVA (si estás en java) o cualquier idioma que un google rápido te ayude, pero recomiendo AES si nada más lo hará.

    
respondido por el TheHidden 08.03.2016 - 18:19
fuente

Lea otras preguntas en las etiquetas