SILC (Secure Internet Live Conferencing protocol) es un protocolo que proporciona servicios de conferencias sincrónicas seguras (muy similares a IRC ) a través de Internet . [1]
El protocolo SILC se puede dividir en tres partes principales: protocolo SILC Key Exchange (SKE), protocolo SILC Authentication y protocolo SILC Packet . El protocolo SILC define además los comandos SILC que se utilizan para gestionar la sesión SILC. SILC proporciona canales (grupos), apodos, mensajes privados y otras características comunes. Sin embargo, los apodos SILC, a diferencia de muchos otros protocolos ( por ejemplo, IRC ), no son únicos; un usuario puede utilizar cualquier apodo, incluso si ya se utiliza uno. La identificación real en el protocolo se realiza mediante un ID de cliente único. [2] El protocolo SILC utiliza esto para superar la colisión de apodos, un problema presente en muchos otros protocolos. Todos los mensajes enviados en una red SILC son binarios, lo que les permite contener cualquier tipo de datos, incluidos texto, vídeo, audio y otros datos multimedia . El protocolo SKE se utiliza para establecer la clave de sesión y otros parámetros de seguridad para proteger el protocolo SILC Packet. El propio SKE se basa en el algoritmo de intercambio de claves Diffie-Hellman (una forma de criptografía asimétrica ) y el intercambio está protegido con firmas digitales . El protocolo de autenticación SILC se realiza después de la ejecución exitosa del protocolo SKE para autenticar un cliente y/o un servidor. La autenticación puede basarse en una frase de contraseña o en firmas digitales y, si es exitosa, otorga acceso a la red SILC relevante. El protocolo de paquetes SILC está destinado a ser un protocolo de paquetes binarios seguro, que garantiza que el contenido de cada paquete (que consiste en un encabezado de paquete y una carga útil de paquete) esté protegido y autenticado. Los paquetes se protegen utilizando algoritmos basados en criptografía simétrica y se autentican mediante el algoritmo de código de autenticación de mensajes , HMAC .
Los canales (grupos) SILC se protegen mediante el uso de claves de canal simétricas. De manera opcional, es posible firmar digitalmente todos los mensajes del canal. También es posible proteger los mensajes con una clave de canal generada de manera privada que haya sido acordada previamente por los miembros del canal. Los mensajes privados entre usuarios en una red SILC se protegen con claves de sesión. Sin embargo, es posible ejecutar el protocolo SKE entre dos usuarios y utilizar la clave generada para proteger los mensajes privados. Los mensajes privados pueden firmarse digitalmente de manera opcional. Cuando los mensajes se protegen con material de clave generado con el protocolo SKE o material de clave previamente acordado (por ejemplo, frases de contraseña ), SILC proporciona seguridad incluso cuando el servidor SILC puede verse comprometido.
SILC fue diseñado por Pekka Riikonen entre 1996 y 1999 y publicado por primera vez en el verano de 2000. [3] Se escribieron un cliente y un servidor . Se propusieron especificaciones de protocolo, pero finalmente IESG rechazó la solicitud de publicación en junio de 2004 [4] y hasta la fecha no se ha publicado ninguna RFC.
Actualmente existen varios clientes, siendo los más avanzados el cliente oficial SILC y un plugin irssi . El protocolo SILC también está integrado en el popular cliente de mensajería instantánea Pidgin . Otros clientes GUI son Silky y Colloquy . El cliente Silky fue suspendido y abandonado el 18 de julio de 2007, debido a su inactividad durante varios años. [5] La última noticia en el sitio web de Silky era que el cliente iba a ser reescrito por completo.
En 2008 se escribieron tres implementaciones del protocolo SILC. [6] La mayoría de los clientes SILC utilizan libsilc, parte del kit de herramientas SILC. El kit de herramientas SILC tiene licencia dual y se distribuye bajo la licencia pública general GNU (GPL) y la licencia BSD revisada. [7]
Como se describe en las preguntas frecuentes de SILC, los chats se protegen mediante la generación de claves de cifrado simétrico . Estas claves deben generarse en algún lugar, y esto ocurre en el servidor. Esto significa que los chats pueden verse comprometidos, si el servidor mismo está comprometido. Esta es solo una versión del ataque man-in-the-middle . La solución ofrecida es que los miembros del chat generen su propio par de claves pública-privada para el cifrado asimétrico . La clave privada es compartida solo por los miembros del chat, y esto se hace fuera de banda. La clave pública se usa para cifrar los mensajes en el canal. Este enfoque aún está abierto a ser comprometido, si uno de los miembros del chat debe tener su clave privada comprometida, o si debe compartir la clave con otro, sin el consentimiento del grupo.
SILC utiliza un patrón similar al IRC, en el sentido de que no existe una "red SILC" global sino muchas pequeñas redes independientes que constan de uno o varios servidores cada una, aunque se afirma que SILC puede escalar mejor con muchos servidores en una sola red.
La red "original" se llama SILCNet, en el sistema de distribución por turnos silc.silcnet.org . Sin embargo, a mayo de 2014, solo tiene un servidor activo (aunque inestable) de cuatro.
La mayoría de las redes SILC han cerrado debido a la disminución de la popularidad de SILC. [8]