Tous les internautes du monde (ou presque) connaissent Skype. Un grand nombre d’entre vous l’utilisent. Mais comme la plupart des outils que nous utilisons sur internet, nous ne cherchons pas toujours à en savoir plus sur la façon dont ça marche.
Ce n’est pas le cas de Ouani MEDEGAN, un ingénieur béninois qui a très tôt cherché à comprendre le phénomène Skype.
Skype utilise un réseau de téléphonie par internet (VoIP) propriétaire. Le protocole n’a pas été diffusé publiquement par Skype, et les applications officielles qui utilisent ce protocole ne sont pas libres. La principale différence entre Skype et les autres logiciels de téléphonie par internet est que Skype opère sur un modèle pair à pair ( peer-to-peer) , au lieu d’un modèle client-serveur traditionnel. Le répertoire des utilisateurs de Skype est complètement décentralisé et distribué parmi les nœuds du réseau, ce qui signifie que le réseau peut atteindre une grande taille très facilement (avec actuellement environ 240 millions d’utilisateurs) sans nécessiter d’infrastructure centralisée complexe et coûteuse.
Le réseau Skype n’est pas interopérable avec les autres réseaux de VoIP. De nombreuses tentatives d’étudier et/ou de rétro-concevoir le protocole ont été entreprises pour révéler le protocole, étudier la sécurité et permettre la création de clients non officiels.
Cependant rien n’a jamais abouti en raison du haut niveau de complexité des mécanismes implémentés pour empêcher la rétro-ingenierie (obfuscations, agents dynamiques et polymorphiques de contrôle d’intégrité, cryptage et diverses méthodes d’anti debug) de Skype et surtout de la complexité du protocole en lui même (parfois jusqu’à 5 couches de cryptage, systématiquement encrypté de bout en bout, network responsive, compression arithmétique maison, protocole en appels de service RPC Like, réseau décentralisé, etc..).
En 2006, Ouani s’est attaqué à la bête. Au bout d’un an de travail, il a pu contourner toutes les protections et développer une compréhension avancée du protocole. Ce qui lui a permis d’implémenter un client compatible, capable de se brancher sur le réseau décentralisé, de gérer l’authentification, la présence, la liste de contacts et le chat.
Il n’a ensuite releasé tous ces résultats que l’année dernière, afin que ça en profite à ceux qui s’attaqueront ensuite à un tel projet. Toutes les ressources (documentations des protections & les moyens de les contourner, descriptif des structures de données du protocole, descriptif du protocole lui même, video poc et pour finir code source du client compatible), sont disponibles à ce lien.
Et vous, à quel outil allez-vous vous attaquer ?