1 Introduction 2 Skype 3 Fonctionnement
Transcription
1 Introduction 2 Skype 3 Fonctionnement
Skype Pierre BARRAQUET, Erwann BEN SOUIDEN, Geoffroy COLIN, Mathieu GUILLON, Mathieu OSTY, Chloé ROLLAND 31 décembre 2004 1 Introduction les analyses de trafic (reverse-engineering) effectuées par Baset et Schulzrinne [1]. Skype s’appuie sur une architecture de type peer-to-peer (P2P) pour transmettre la voix sur Internet. A l’instar de Kazaa, Skype repose sur un ensemble de "super-nœuds" (supernodes, SN). Tout client Skype (CS) possédant une adresse IP publique peut tenir le rôle de SN si ses capacités en terme de CPU et de bande passante le permettent. Néanmoins, le système n’est pas totalement décentralisé. En effet, des serveurs entrent en jeu afin de stocker les informations relatives aux utilisateurs (nom utilisateur, mot de passe, crédits SkypeOut. . .). En particulier, il est nécessaire de se connecter à un SN puis au serveur d’authentification afin d’accéder au service (cf fig1). La VoIP (Voice over Internet Protocol) est un des maillons manquant de la convergence multimédia promise par Internet. En effet l’émergence de ce moyen de communication s’inscrit dans un mouvement général visant à intégrer la plupart des échanges électroniques sur un seul et même réseau, Internet. La voix, une fois numérisée et compressée, est transmise par le protocole IP sous forme de paquets routés de la même manière que les paquets de données. Skype, de part sa simplicité d’utilisation et son excellente qualité d’écoute, est récemment devenu un logiciel de téléphonie sur Internet incontournable. L’originalité de l’architecture du système (peer-to-peer) et sa popularité grandissante nous ont ammenés à nous intéresser à son fonctionnement général, malgré le peu de documentation disponible à ce sujet. 2 Skype 2.1 Historique Les créateurs du logiciel de partage de fichiers P2P Kazaa, Niklas Zennström et Janus Friis, publient la première version (Beta) de Skype en septembre 2003. C’est à la fin de l’été 2004 que la version 1.0 du logiciel est mise gratuitement à la disposition du public. Aujourd’hui Skype compte environ 7 millions d’utilisateurs. On dénombre en moyenne 1,2 millions d’utilisateurs connectés simultanément au service. 2.2 Services disponibles Les services disponibles sont actuellement : – Communication de type "PC to PC" entre deux terminaux équipés de Skype, – Communication de type "PC to Phone" entre un terminal équipé de Skype et un téléphone traditionnel (SkypeOut), – Communication multi-utilisateurs (ou conférence) entre terminaux équipés de Skype, – Echange de fichiers, – Messagerie instantanée, – Gestion d’une liste de contacts (buddy list). L’ensemble de ces services est gratuit à l’exception de SkypeOut. F IG . 1 – Architecture générale 3 Fonctionnement 3.1 Généralités Host Cache Chaque CS stocke et met à jour régulièrement une liste d’adresses de SN et les ports correspondants. Dans la version actuelle (v1.0.0.100), cette liste, appelée Host Cache (HC), est stockée avec d’autres informations dans un fichier XML1 . Cette liste est constituée d’au plus 200 entrées. Au moins une de ces entrées doit être valide pour permettre la connexion au réseau. 2.3 Architecture générale Skype utilisant des technologies propriétaires, il est impossible de connaître précisement son architecture. Les hypothèses que nous présentons sont donc fondées sur 1 Sous windows : <Documents and Settings>\All Users\Application Data\Skype\shared.xml 1 Codecs audio D’après [1], Skype utilise iLBC [7], iSAC [8] (qui proposent une qualité et une tolérance aux fautes supérieures au codec G.729) ou un troisième codec inconnu. Ils laissent passer les fréquences comprisent entre 50 et 8000 Hz. Ces codecs largebande permettent de disposer d’une qualité d’écoute raisonnable même avec une bande passante réduite (32 kbps). 3.2.2 Recherche d’un utilisateur Les communications ne pouvant être tracées au delà du SN, le processus de recherche d’un utilisateur reste partiellement inconnu. 3.2.3 Gestion d’un appel Si le correspondant est présent dans la liste de contacts, la connexion est établie directement via un échange TCP (signalisation). Dans le cas contraire, l’établissement de la connexion est précédé par la phase de recherche d’utilisateur. Suivant la configuration des clients, la gestion d’un appel peut prendre différentes formes : – Les communiquants possèdent tous les deux une IP publique (cas idéal), le transport de la voix est assuré par UDP. – L’un ou les deux communiquants sont situés derrière un NAT, alors la signalisation (TCP) ainsi que la voix (UDP) sont transmis via un CS intermédiaire. Ce nœud agit comme un proxy et fait suivre le trafic de l’appelant vers l’appelé et inversement. – Les deux interlocuteurs sont placés derrière un firewall bloquant le trafic UDP, l’ensemble des communications est véhiculé par TCP via un nœud intermédiaire. De manière générale, le trafic engendré par Skype est de 5 ko/s. En pratique, la bande passante minimale pour une qualité d’écoute acceptable est de 2 ko/s. Le protocole utilisé par Skype privilégie l’utilisation d’UDP pour le transport des données. Liste de contacts La liste de contacts est chiffrée dans des fichiers localisés sur la machine de l’utilisateur. Chiffrement Skype utilise AES avec une clé de 256 bits pour le chiffrement de toutes les communications. L’échange des clés symétriques AES est protégé par l’utilisation de l’algorithme RSA avec des clés de 1536 à 2048 bits. Les clés publiques des utilisateurs sont certifiées par Skype via le serveur d’authentification. NATs et Pare-feux Le CS utilise vraisemblablement une variation des protocoles STUN [5] et TURN [4] afin de déterminer, le cas échéant, le type de NAT et de pare-feu derrière lequel il se situe. Cette détection a lieu à l’établissement de la connexion et semble être vérifiée de manière périodique. 3.2 Gestion d’une communication 3.2.4 Conférence Considérons une conférence à 3 personnes (5 étant la limite imposée par la version actuelle1 ). Le participant qui possède les ressources les plus importantes est élu pour jouer le rôle de "mixer". Notons qu’il n’est pas forcément l’initiateur de la conférence. Le "mixer" est le cœur de la conférence. Toutes les sources lui envoient leurs paquets de voix. Il se charge alors de les multiplexer de manière adequat avec les siens, puis de les transmettre aux participants comme indiqué sur la figure 2 sur laquelle B joue le rôle de mixer. 3.2.1 Connexion au réseau Lorsqu’un CS désire se connecter au réseau, il tente de joindre l’un des SN de sa liste HC en UDP . Si la connexion ne peut pas être établie, le CS va essayer successivement de se connecter en TCP via les ports 80 (HTTP) et 443 (HTTPS) ; ceci permet la traversée d’éventuels pare-feux ou NAT bloquant les trafics UDP ou certains ports TCP. Si la connectivité ne peut être obtenue avec aucun des SN, la phase de connexion échoue. Une fois connecté à un SN, le CS met en place une connexion TCP entre eux. Il semble que le CS obtienne l’adresse du serveur d’authentification auprès du SN via cette connexion. Ainsi, le CS établi une connexion TCP avec ce serveur. Après un échange permettant l’authentification, la connexion entre le CS et le serveur d’authentification est rompue ; en revanche, la connexion avec le SN persiste. Cette connexion est maintenue par un message keep-alive envoyé de manière périodique (chaque minute). Si la liaison avec ce SN est perdue, alors le CS en établi une nouvelle avec un autre SN. Notons que pour la première connexion après l’installation du CS, HC est initialisé avec une liste de 7 adresses. Ces adresses correspondent aux SN référents, elles semblent codées "en dur" dans le CS. Au fur et à mesure des connexions, le HC sera complété et mis à jour. La manière dont les CS obtiennent de nouveaux SN reste floue puisque toutes les communications sont cryptées. Néanmoins, il semble que le CS reçoive périodiquement une liste de nouveaux nœuds. De même, une table de SN "de secours" est créée pour permettre une reprise rapide de la connectivité si aucun des SN du HC n’est disponible. F IG . 2 – Fonctionnement d’une conférence 1 Skype 2 v1.0.0.106 4 Analyse du système Téléglobe (un des plus importants propriétaire-exploitant de réseau téléphonique à travers le monde). Cela permet à Skype d’adapter sa capacité de raccordement à l’échelle mondiale sans investir dans des infrastructures réseau téléphonique commuté. Il peut ainsi se focaliser sur son domaine de compétence, le réseau P2P. Actuellement, il est impossible d’émettre un appel depuis un téléphone fixe ou mobile vers un client Skype. En effet, ce dernier ne possède qu’un identifiant Skype. Très prochainement, grâce à l’offre SkypeIn, il sera possible de disposer d’un numéro accessible par le RTC lié à l’identifiant Skype. 4.1 Architecture P2P Skype s’appuie sur un réseau overlay communautaire qui permet de compenser l’absence de QoS induite par le fonctionnement Best Effort de l’Internet actuel. Ce type d’architecture permet une meilleure robustesse du fait de la répartition de la charge entre les pairs. Son intérêt majeur est d’assurer le passage à l’échelle ; en effet, seule la phase d’authentification est centralisée, tout le reste des échanges est réparti entre les utilisateurs. Néanmoins, ce type d’architecture est sous le joug du nombre d’utilisateurs, plus ce nombre est élevé, plus le système est efficace. De même, il est nécessaire d’avoir une bonne répartition géographique des utilisateurs dans le réseau overlay, sans quoi l’équité de service ne serait pas assurée. De plus, la phase d’authentification étant centralisée, le serveur d’authentification semble donc être le point de vulnérabilité du système. Si un utilisateur malveillant arrive à mettre hors service ce serveur, aucun nouvel utilisateur ne pourra plus se connecter. 4.4 Utilisation professionnelle L’architecture actuelle interdit une utilisation privée, coupée d’Internet, le serveur d’authentification Skype étant indispensable à toute connexion. Une entreprise ne peut pas mettre en place son propre réseau Skype. De plus il n’est pas possible de spécifier un SN particulier. En conséquence, le trafic transite par des nœuds dont ni l’intégrité ni l’identité ne peuvent être assurées. Un particulier, voire même une entreprise concurrente, pourraient donc intercepter ou perturber les communications puisque le SN sert de relais. Or, Skype est l’un des seuls logiciels de communication sur Internet à chiffrer les échanges entre utilisateurs, ce qui permet de garantir une confidentialité des communications. En revanche, la gestion et la génération des clés privées est effectuée par Skype ; ceci n’est pas acceptable dans un cadre professionnel qui impose une certaine confidentialité des échanges. Les mécanismes permettant d’assurer le chiffrement masquent complètement le contenu des communications. Le trafic Skype n’est donc pas filtrable par des analyseurs sémantiques ; cela empêche une classification des flux en vue d’une éventuelle politique de qualité de service. De plus, comme vu à la section 3.2, Skype utilise plusieurs méthodes pour traverser les NATs et pare-feux. Il est même possible que tout le trafic transite en TCP via le port 80 (HTTP) rarement bloqué puisque nécessaire à la navigation web. Ces caractéristiques rendent Skype incontrôlable par l’administrateur du réseau. 4.2 Convivialité L’installation et l’utilisation très intuitive rendent le logiciel accessible au plus grand nombre. En effet, aucune configuration technique n’est requise pour son utilisation courante. Notons que Skype n’implémente pas de mécanisme de suppression de silence. Lorsque les correspondants ne parlent pas, la continuité des paquets de voix est assurée. Cette caractéristique présente deux types d’avantages : – En terme de confort, chaque correspondant est assuré de façon continue de la présence de son interlocuteur par la transmission du bruit ambiant. – Le maintient de la correspondance au sein du NAT permis par la continuité du flux UDP. Le client Skype implémente un ensemble de méthodes permettant de contourner la plupart des dispositifs de sécurité sans intervention de l’utilisateur. Ce qui peut s’avérer dangereux en pratique (voir section 4.4). Afin de concurrencer ses principaux rivaux, MSN Messenger et Yahoo ! Messenger, il serait intéressant que Skype supporte la vidéo-conférence, même si la priorité des developpeurs semble être la téléphonie (la vidéo-conférence nécessite simplement plus de bande passante). 4.5 Une technologie propriétaire L’ensemble du logiciel et des protocoles sous-jacents étant propriétaire, il est impossible de s’assurer de son véritable fonctionnement. En particulier, l’absence de logiciels espions (spywares) ne peut être vérifiée. Cette crainte est renforcée par la réputation qu’avait Kazaa à ses débuts. L’opacité de la technologie et des protocoles utilisés empèche l’émergence de logiciels concurrents et donc toute interopérabilité avec d’autres technologies de VoIP comme SIP dont nous reparlerons à la section 5. De plus, aucune information n’est divulguée en ce qui concerne la génération, l’échange et le renouvellement des clés utilisées pour le chiffrement. Un problème de confidentialité se pose alors qui pourra être réglé par une ouverture même partielle du code source. Skype ne propose aucun service de téléphonie classique comme répondeur, numéros d’appel d’urgence, renseignements... Notons que l’architecture même du système rend difficile le déploiement de ce genre de service sans passer par un serveur central (informations de localisation, stockage des messages ...). 4.3 Passerelle avec le RTC L’un des atraits de Skype est de proposer à ses utilisateurs une passerelle vers la téléphonie classique (terrestre et mobile) à des coûts avantageux. Depuis le 23 juillet 2004, Skype s’est associé, dans le cadre de son offre SkypeOut, à 3 5 Perspectives spam pourrait facilement être adapté à la téléphonie IP ; la gratuité de ses offres et la simplicité de diffusion offertes permettraient de répandre des annonces commerciales ou d’étoffer les listes de téléprospection. La VoIP est promue à un avenir certain, principalement pour les raisons suivantes : – le coût : tout appel sur téléphone fixe ou sur client VoIP coûterait le même prix qu’une communication locale. – la souplesse : le numéro d’appel n’est plus lié à un poste physique, mais peut être attribué dynamiquement à différents types d’appareils (combiné traditionnel, mobile, PDA, ordinateur) et à différents endroits. Cela en s’adaptant au contexte et des choix des utilisateurs. Références [1] Salman A.Baset and Henning Schulzrinne. «An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol». Technical report, Department of Computer Science, Columbia University, septembre 2004. [2] Debbis Bergström. «An Analysis of Skype VoIP Application for Use in a Corporate Environment». Technical Report version 1.3, CISSP, octobre 2004. De plus, la démocratisation de l’internet haut débit, indispensable au déploiement de la VoIP dans le grand public, rend possible l’utilisation massive de la VoIP. Depuis 2003, le nombre d’utilisateurs de Skype croît considérablement ; en 2003 on dénombre plus de 20 millions de téléchargements. Malgré cet essort, nous avons dégagé au cours de notre étude plusieurs limites de Skype. Le caractère propriétaire limite son utilisation dans un cadre professionnel. Pour ces raisons, Skype fait face à de sérieux concurrents, notamment ceux se reposant sur le protocole SIP (rfc 3261) qui combine certains avantages : – sous forme logicielle (softphone), mais principalement matérielle. L’utilisation d’un combiné permet de disposer d’un numéro d’appel associé au téléphone. – l’envoi d’un email pour chaque appel manqué (pouvant inclure le message en pièce jointe), l’intégration naturelle dans des applications (API de haut niveau disponibles ...). – on peut appeler sur un téléphone/softphone d’un téléphone fixe "classique". Cela constitue un élément important permettant la convergence. [3] Luang Dang, Cullen Jennings, and David Kelly. «Practical VoIP», chapter 7. O’Reilly, 2002. [4] J.Rosenberg, R.Mahy, and C.Huitema. «TURN : Traversal Using Relay NAT». Internet draft, IETF, Juillet 2004. [5] J.Rosenberg, J. Weinberger, C. Huitema, and R.Mahy. «STUN : Simple Traversal of User Datagram Protocol (UDP) Throught Network Address Translators (NATs)». Rfc 3489, IETF, Mars 2003. [6] Guy Pujolle. «Les réseaux, édition 2005», chapter 35. Eyrolles, 2004. [7] Global IP Sound. «ilbc Codec». 2004. http ://www.globalipsound.com/pdf/gips_iLBC.pdf. [8] Global IP Sound. «isac Codec». 2004. http ://www.globalipsound.com/pdf/gips_iSAC.pdf. [9] «Site Internet de Skype». 2004. SIP bénéficie d’un meilleur suivi, il fait actuellement l’objet d’un groupe de travail à l’IETF accessible sur le Web 1 . Il dispose de plus d’une meilleure médiatisation (essentiellement aux États-Unis), il existe des offres d’abonnements SIP 2 ainsi que des téléphones SIP wifi 3 . SIP constitue plus qu’un concurrent de Skype mais se présente comme une réelle alternative. Skype, du fait de sa gratuité, de sa simplicité d’utilisation ainsi que de ses très bonnes performances, démocratise la voix sur IP. Cette technologie s’appuie sur les réseaux communautaires pour palier l’absence de qualité de service de l’internet actuel. Elle démontre ainsi la suffisance d’un réseau fondé sur IPv4. De part ses partenariats engagés avec le monde des télécoms, Skype s’ouvre sur des perspectives d’évolution intéressantes (SkypeOut, SkypeIn). Cependant, Skype reste à ce jour un logiciel propriétaire dans le but de conserver ses "recettes" de fabrication. Dans ce cadre, il ne peut se développer et évoluer de manière optimale. Enfin, l’avénement de ces nouveaux services induit de nouveaux problèmes. Par exemple, le phénomène du 1 http ://www.ietf.org/html.charters/sip-charter.html 2 www.grandstream.com 3 http ://pulverinnovations.com/wisip.html 4 http ://www.skype.com,