# Secure Internet Live Conferencing

SILC (Secure Internet Live Conferencing) est un protocole réseau de discussion en temps réel. Il est sur le principe très similaire au protocole IRC, mais il s'en démarque néanmoins par l'utilisation massive de techniques de cryptographie forte.

## Fonctionnement
### Description du protocole

Le protocole SILC peut être divisé en trois parties principales : le Protocole d'Échange de Clé SILC (ou SKE pour SILC Key Exchange), le Protocole d'Authentification SILC (ou SILC Authentication protocol) et le Protocole de Paquet SILC (SILC Packet protocol). Le protocole SILC définit en outre des Commandes SILC, utilisées pour gérer la session SILC. SILc fournit des canaux (groupes), des pseudonymes, des messages privés, et d'autres fonctionnalités courantes. Mais, au contraire de nombreux autres protocoles (notamment IRC), les pseudonymes SILC ne sont pas uniques ; un utilisateur peut prendre n'importe quel pseudonyme, même s'il est déjà utilisé par quelqu'un d'autre. L'identification protocolaire réelle se fait par un identifiant unique, dérivé de la clé publique de l'utilisateur ; de cette manière, le protocole SILC est en mesure de régler le problème de la collision de pseudonymes, problème que l'on retrouve dans beaucoup d'autres protocoles. Tous les messages échangés au sein d'un réseau SILC voyagent dans un format binaire, ce qui leur permet de contenir n'importe quel type de données (y compris texte, son, vidéo, et autres données multimédia). Le protocole SKE est utilisé pour établir la clé de session, ainsi que d'autres paramètres de sécurité visant à protéger le Protocole de Paquet SILC. SKE est lui-même basé sur l'algorithme d'échange de clé Diffie-Hellman (un exemple de cryptographie asymétrique), et l'échange est protégé par un système de signature numérique. Si le protocole SKE se termine avec succès, c'est alors le Protocole d'Authentification SILC qui entre en jeu afin d'authentifier un client et/ou un serveur (et/ou un routeur). L'authentification peut être basée sur une phrase de passe ou sur la signature numérique ; si tout se passe bien, elle donne accès au réseau SILC auprès duquel on souhaitait s'authentifier. Le Protocole de Paquet SILC se veut un protocole de paquet binaire sécurisé, assurant que le contenu de chaque paquet (entête suivi de données réelles) est sécurisé et authentifié. Les paquets sont sécurisés au moyen d'algorithmes basés sur la cryptographie symétrique et authentifiés au moyen de l'algorithme HMAC (qui est un code d'authentification de message).
Les canaux (groupes) SILC sont protégés chacun par une clé symétrique de canal. Il est possible (c'est une option) de signer numériquement tous les messages de canal$^,$. Il est également possible de protéger les messages au moyen d'une clé de canal générée en privé, et sur laquelle les membres du canal se seront préalablement mis d'accord. Les messages privés entre utilisateurs d'un réseau SILC sont protégés par les clés de session. Il est cependant possible de passer par le protocole SKE entre deux utilisateurs, et d'utiliser la clé générée pour protéger les messages privés. Les messages privés peuvent en outre être signés numériquement. Quand les messages sont sécurisés par du matériel généré au moyen du protocole SKE, ou sur lequel les utilisateurs se sont préalablement mis d'accord (par exemple une phrase de passe), alors SILC fournit une sécurité même en cas de compromission des serveurs SILC.

### Comparaison par rapport au protocole IRC

Le protocole IRC à la base ne fournit aucune réelle confidentialité, car les messages sont visibles en forme simple sur tout le réseau et il est aussi possible de les modifier. Certains serveurs IRC utilisent des extensions SSL pour chiffrer le trafic, mais ce n'est pas une solution complète car l'administrateur peut toujours intercepter le message et rien ne confirme l'identité de l'envoyeur.
SILC remédie à ce problème à l'aide de la cryptographie asymétrique et d'un système sophistiqué d'échange de clefs, ce qui permet aux messages d'êtres transmis d'un utilisateur à l'autre sans que même l'administrateur du serveur puisse intercepter le message sous sa forme simple. La communication entre les multiples serveurs SILC dans un réseau est également sécurisée.

### Topologie d'un réseau SILC

Un réseau SILC est réparti sur plusieurs serveurs, tout comme IRC. À la surface, SILC ressemble à l'IRC, mais son fonctionnement est très différent.

## Histoire

Le protocole SILC fut conçu par Pekka Riikonen de 1996 à 1999, et fut présenté au public à l'été 2000$^,$ (sous la forme d'un logiciel client et un logiciel serveur). Les spécifications du protocole furent proposées à l'IETF en 2004, mais la publication fut finalement refusée, et SILC n'est donc pas un protocole agréé par l'IETF. L'IANA a cependant attribué au protocole SILC l'utilisation exclusive du port 706 (pour les protocoles TCP et UDP), qui est un port privilégié.

## Logiciels
### Côté serveur

Il n'existe à ce jour qu'une seule implémentation serveur du protocole SILC : SILC Server.

### Côté client

Plusieurs logiciels client permettent de se connecter à des serveurs ou à des réseaux SILC. Ces logiciels utilisent généralement pour cela libsilc, une bibliothèque de fonctions appartenant au paquetage SILC Toolkit.
On citera par exemple :
* SILC Client (implémentation de référence) ;
* Irssi (via un plugin) ;
* Pidgin (grâce à la bibliothèque libpurple) ;
* Colloquy ;
* Kopete.
Le développement de Silky a été officiellement abandonné le 18 juillet 2007, après plusieurs années d'inactivité. La dernière nouvelle publiée sur le site web de ce logiciel expliquait qu'il allait être complètement réécrit.

## Réseaux SILC

La disponibilité d'un logiciel serveur sous licence libre a favorisé l'apparition de réseaux SILC indépendants, où l'on peut librement se connecter :
* SILCNet (silc.silcnet.org), qui est le réseau "officiel" lancé et maintenu par les personnes chargées du développement du projet SILC ;
* Compsec (silc.compsec.net) ;
* le réseau SILC des utilisateurs d'OpenBSD ;
* silc.dg-sc.org, le réseau SILC du groupe DegenereScience.