Archive

Archive for mai 2010

Pourquoi il ne faut plus utiliser le (partage de fichiers via) peer to peer?

A priori, presque tout le monde (et à fortiori les amateurs de séries, de films et de musique) a déjà été amené à télécharger quelque chose (et si ce n’est pas vous, votre petite soeur ou votre fils l’ont fait pour vous) via peer to peer (P2P).

Le peer to peer (pair à pair en français), pour rappel, ce n’est pas un système de téléchargement mais une conception du réseau : le réseau est vue comme décentralisé, c’est à dire que chaque noeud (chaque pair) est à la fois client et serveur. C’est une conception du réseau à opposer au fonctionnement client vs. serveur.  Ses applications les plus connues sont le partage de fichiers (via différentes architectures, à l’origine centralisée avec Napster, puis décentralisée comme avec BitTorrent), la VoIP (par exemple avec le logiciel Skype) ou le calcul distribué (SETI@home, Folding@home).

Jusqu’à il y a peu, le téléchargement via peer to peer ne représentait pas de grands dangers (au niveau liberté individuelle, je parle pas des malwares, ou des virus) pour les utilisateurs car la mise en pratique pour les chercher/retrouver semblait plutôt ardue.

Il y a un mois une équipe de chercheurs de l’INRIA (Institut National de Recherche en Informatique et Automatique) a publié Bluebear, son outil de surveillance des réseaux peer to peer (non pas pour faire la chasse aux pirates mais pour sensibiliser les utilisateurs sur les risques d’atteinte à la vie privée sur BitTorrent). Vous trouverez le site du projet et les publications s’y rapportant ici.

L’abstract de leur article commence par « En utilisant cette faille pendant une période de 103 jours, nous avons collecté 148 millions d’IPs téléchargeant 2 milliards de copies de contenu. Nous avons identifié l’adresse IP des fournisseurs de contenu de 70% des fichiers de BitTorrent que nous avons espionné. Nous avons aussi montré que ce sont peu d’utilisateurs qui fournissent la majorité des fichiers initiaux de BitTorrent et que ces fournisseurs de contenu sont situés à l’étranger. » Le ton est donné, ça fait un peu/assez froid dans le dos, et ça leur fait une bonne publicité.

Le projet n’a rien de révolutionnaire en fait quand on y réfléchit bien : quand vous téléchargez un fichier (i.e. lorsque vous êtes un leecher, une sangsue) chez quelqu’un (une source, appelée seeder) via un torrent, il faut bien que vous puissiez trouver les adresses des personnes possédant le fichier (sinon comment télécharger?) : ceci ce fait via un tracker (un fichier hébergé sur un serveur, comme the PirateBay ou autre) qui montre qui possède quoi à l’instant t (qui est un seed (une source) ou un peer (pas toute la source, mais un bout de la source, comme la motié du film par exemple)).

Quand vous téléchargez un fichier, vous devenez vous aussi un peer (pendant le téléchargement) puis un seed (quand vous avez tout le fichier) : c’est le concept du BitTorrent. Vous êtes donc référencé par le tracker (serveur ayant la liste de tous les gens qui partagent un fichier).

Jusque là ça va?

En gros, si vous pouvez trouver les gens qui possèdent un fichier (pour le télécharger) pourquoi les gens qui cherchent ceux qui partagent (et ceux qui téléchargent aussi, voir remarque ci dessus) ne pourraient pas?

Bluebear, l’outil que vient de publier cette équipe de l’INRIA, est un outil de surveillance qui permet donc de démasquer les internautes qui téléchargent via peer to peer. Mais cet outil va plus loin, il permet :

  1. de trouver la première personne à partager le fichier (patient 0)
  2. d’identifier toutes les personnes (ip) qui partagent et/ou téléchargent un fichier
  3. d’identifier celles qui se cachent derrière un trafic détourné et crypté (comme Tor).

Pour identifier le premier fournisseur d’un fichier, Bluebear récupère en permanence la liste des nouveaux fichiers torrents sur les sites de partage (par exemple The PirateBay, MiniNova, etc), et se connecte ensuite immédiatement à ces nouveaux torrents (pour trouver l’IP du premier fournisseur, le patient 0). Une autre méthode pour identifier les fournisseurs si la précédente n’est pas possible (torrent privé devenu public, ou torrent en ligne depuis un certain temps) est de récupérer sur les sites webs/forums les nouveaux torrents et de les regrouper par nom d’utilisateur (login de l’uploader). Il recherche ensuite l’IP qui distribue le plus ces torrents, et par recoupement l’associe au login.

Pour identifier les personnes qui partagent et/ou téléchargent, les chercheurs ont d’abord récupéré la liste des identifiants uniques de chaque fichier partagé sur The PirateBay (via un des anciens trackers de The PirateBay). Une fois tout le catalogue récupéré, ils ont récupéré pour chaque fichier la liste des IP de chaque seeder et de chaque leecher, via le tracker et le client  BitTorrent de leur choix en faisait des requêtes de lancement et d’arrêt de partage jusqu’à ce qu’ils obtiennent 90% du nombre total de seeders et de leechers indiqués sur le tracker. L’étude précise que « Cette procédure prend aux alentours de 30 minutes pour entre 500 000 et 750 000 contenus ».

Enfin, pour identifier le trafic qui passe par Tor, il utilise une feinte sur les DHT (Distributed Hash Table), tables de routage distribuées, qui permettent de joindre de façon efficacement le pair lambda ayant le fichier mu sans avoir à connaitre tous les pairs et toutes leurs listes de fichiers. La DHT utilise le protocole UDP (User Datagram Protocol) qui lui n’est pas relayé par Tor. La véritable IP d’un pair apparait donc dans la DHT. Il suffit alors d’écouter la sortie d’un noeud Tor, et de rechercher ensuite dans la DHT le fichier observé en sortie du noeud pour l’associer à l’IP. Par ailleurs, une telle identification peut compromettre les autres trafics/flux passant par Tor (Web,HTTP,VoIP…) : il est facile de déterminer leur origine car ils empruntent tous le même chemin que BitTorrent (en gros ça veut dire coupez vos logiciels de peer to peer quand vous utilisez Tor).

Au final, tout cela pose un certain problème de confidentialité (même pour les fichiers légaux ou libres de droit) puisque n’importe qui peut savoir ce que vous téléchargez/partagez.

Si vous voulez en savoir plus vous pouvez consultez les articles suivant  :
http://www.korben.info/bluebear-bittorrent-p2p-inria.html
http://www.01net.com/editorial/516096/bluebear-la-surveillance-generalisee-de-bittorrent-est-possible/http://actualite.torrent-avenue.com/actualite/bluebear-surveillance-generale-bittorrent-possible

Vous pouvez retrouver le site du projet ici : http://www-sop.inria.fr/members/Arnaud.Legout/Projects/bluebear.html

Et les différentes publications de l’équipe de Arnaud Legout ici : http://hal.inria.fr/inria-00470324/en/, http://hal.inria.fr/inria-00471556/en/, http://hal.inria.fr/inria-00471556/en/ et http://hal.inria.fr/inria-00451282/en/.

Si vous voulez vous faire un peu peur ou jouer à super Hadopi, je vous conseille le site suivant qui vous présente un outil nommé bitAudit, comparable à BlueBear, et qui vous permet de traquer (pas de mauvais jeu de mot) les utilisateurs de bitTorrent sur les trackers publiques (en créant des logs des interactions clés au sein d’un essaim bitTorrent).

Pour ceux qui ne peuvent pas se passer de leur téléchargements (séries US super addictives par exemple), je vous conseille plutôt le téléchargement direct via des sites comme rapidshare, megaupload et hotfile. Vous pouvez retrouver des liens intéressants par exemple sur http://www.blogy.com.ar/.

Enfin, ces derniers temps je me suis fait la remarque suivante : la copie d’œuvres soumises au droit d’auteur sans l’autorisation de l’ayant droit est illégale … mais le nom et la taille d’un fichier ne sont en rien un preuve juridique du contenu du fichier. Donc en gros vous n’êtes pas en tort tant que vous n’avez pas téléchargé un fichier, tant que vous ne l’avez pas ouvert, et tant que vous n’avez pas constaté « ha oui c’est bien un fichier soumis au droit d’auteur ».

A bon entendeur, salut.

Signature numérique et certificat électronique

Dans le cadre de votre vie professionnelle, voir privée, vous êtes surement amené (ou dans un futur proche, vous serez surement amené) à recevoir de plus en plus de contrats sous forme électronique (format .pdf en général) : par exemple, un contrat de location à l’étranger ou un changement de contrat avec votre banque.

Comme vous l’avez remarqué, il assez fastidieux, voir absolument contraignant, d’imprimer les dits contrats, de les signer, puis de les envoyer par la poste avec accusé de réception.

Heureusement pour vous, depuis mars 2000, la loi française permet de signer électroniquement les documents, avec la même valeur juridique qu’une signature manuscrite (après je ne suis pas allé voir dans les détails).

La Loi c’est bien beau, mais comment cela se passe en en théorie?

En pratique la signature électronique doit remplir cinq critères : la signature doit être authentique (permet de retrouver l’identité du signataire), infalsifiable, non réutilisable (impossible de la déplacer sur un autre document), inaltérable (impossibilité de modifier le document signé) et irrévocable (impossibilité de nier la signature).

Concrètement, cela passe par de la cryptographie asymétrique : je ne vais pas vous raconter une histoire avec Alice et Bob (je comprends pas la manie de ces deux là à toujours vouloir échanger des messages pendant les explications sur la cryptographie et la sécurité), donc pour faire simple, à une message M, on applique une fonction f, dite fonction de hachage (MD5, SHA-1).

Cette fonction est généralement utilisée pour donner une empreinte, i.e. un identifiant à un message, en partant du fait que les collisions seront peu nombreuses (une collision, au passage, c’est quand deux messages M ont la même image par f, i.e. f non injective) et cela permet de gagner du temps/de l’argent (en gros vous lisez le nom du message plutôt que le message en entier pour l’identifier). Donc on fait s=f(M). Ce hash s, envoyé avec le message, permet donc de vérifier l’intégrité du message : vous recevez Mr et s, vous calculez f(Mr). si f(Mr)=s, le message n’a pas été modifié.

Cependant, cela ne garantit pas l’émetteur du message. Pour vérifier par qui a été envoyé/signé le message, on utilise un système clé publique/clé privée. L’émetteur crypte le hash avec sa clé privée c(s), et le destinataire décrypte avec la clé publique d(c(s))=s. En gros, je possède un seul cadenas, et j’envoie les clés à mes amis. Le hash envoyé porte un cadenas, si la clé de mon ami correspond au cadenas, c’est que je suis effectivement l’expéditeur.

Voilà pour la théorie.

Comment cela se passe t’il en pratique ?

En pratique, on utilise concrètement des certificats électroniques, dont le standard est X509.

Comme vous ne connaissez pas forcément la personne (le site, etc) avec qui vous voulez échanger, il est à priori assez compliqué d’échanger les clés ab initio. Pour cela vous allez faire appel à une tierce personne en qui vous avez confiance, l’autorité de certification (AC), qui va distribuer et vérifier des cartes d’identités : les certificats électroniques.

Quand Alice rencontre Bob (nous y voila, damn it), Alice demande ses papiers à Bob et vice versa, et ils vérifient tous deux auprès de la Police (autorité de certification), que les cartes d’identités sont conformes (je sais c’est une drôle de rencontre). Dans les faits, Alice et Bob utilisent le certificat de l’AC pour vérifier que leurs certificats respectifs sont intègres (même principe qu’expliqué ci-dessus).

Il existe différents types de certificats avec différents niveaux de sécurité (4 classes) : cela va de la simple vérification de validité d’un email, jusqu’à la vérification physique d’identité par l’autorité de certification.

Qui sont les autorités de certification ?

Les autorités de certification sont en général des entreprises privées (Verisign, GlobalSign, CertEurope, etc), des organismes publics (chambre  de commerce et de l’industrie, greffes des tribunaux de commerce, l’état espagnol ou belge, etc), des associations (CAcert), ou bien de simples particuliers, voir vous même dans le cadre de l’auto-signature.

La confiance dans un certificat dépend intrinsèquement de l’autorité de certification qui le délivre. Un certificat délivré par une autorité « publique » (celles citées précédemment) a plus de crédit que celui que je pourrais vous délivrer moi même. D’ailleurs, généralement, lors de votre navigation sur le web, si avez accédez à un site sécurisé, dont le certificat n’est pas valide ou dont vous ne connaissez pas l’autorité racine, votre navigateur vous renvoie un message d’alerte.

Avec quoi sont créés les certificats électroniques ?

Bonne question. Il ne s’agit pas d’une boite (complètement) opaque. Les certificats électroniques respectent un standard : le plus souvent le standard X509.

Pour créer simplement ces certificats, vous pouvez utiliser OpenSSL, le couteau suisse de votre ordinateur pour les questions de cryptographie : il sert pour tout, le plus souvent de façon transparente, par exemple lorsque vous vous connectez à un site en https (http sécurisé, via ssl), ou à votre boite mail avec le protocole imaps (imap via ssl).

Vous pouvez trouver des détails sur la création de certificats ici ou .

Vous pouvez trouver des infos simples et claires sur le SSL ici.

Dans quel cadre un certificat électronique est utile ?

Les certificats numériques sont utiles, vraiment utiles et vous vous en servez très fréquemment, et le plus souvent de façon transparente : par exemple lorsque vous vous connectez sur le site de votre banque, ou un site de e-commerce en https, etc. Il peuvent aussi être utilisés dans le cadre d’une authentification forte, ou pour signer des documents comme nous l’évoquions précédemment.

Comment se procurer un certificat?

Actuellement, ces moyens de signature numérique ne concernent majoritairement que les entreprises, et ils sont onéreux : pour se procurer un certificat, il faut faire une demande à une autorité de certification (AC).

Si par chance, vous êtes une entreprise, vous pouvez vous procurer un certificat auprès de la chambre  de commerce et de l’industrie (ChamberSign), auprès des greffes des tribunaux de commerce, ou auprès d’une entreprise privée (VerisignGlobalSignCertEurope, etc).

Si par malheur, vous êtes un particulier, ça se corse pour vous, et en plus ça risque de vous couter un bras si vous faites appel à une entreprise privée.

Contrairement à d’autres pays européens, l’Etat Français ne distribue pas encore de certificats électroniques à ses citoyens : en revanche, la Belgique et l’Espagne ont déjà instauré des cartes d’identité numériques, comportant un puce avec deux certificats électroniques X509, qui permettent à tous citoyens belges et espagnols de signer électroniquement et de s’authentifier en ligne (ceux-ci nécessitent cependant un lecteur de carte à puce).

Avec le développement des télé-services au sein de nos administrations (déclaration en ligne des revenus, etc), et l’augmentation du besoin d’identification forte sur le web et via les outils numériques, il probable que lors la prochaine décennie on voit l’arrivée de nouvelles cartes d’identité comprenant des certificats d’authentification délivrés par l’Etat.

En outre, il est cependant important de rappeler qu’un projet de carte d’identité électronique nommé INES (Identité Nationale Electronique Sécurisée) avait été élaboré en France dès 2003 : cependant celle ci devait aussi comporter des données biométriques et cela avait provoqué une levée de boucliers, et entrainé la suspension du projet.

Comment créer son propre certificat, ou être soi même autorité de certification ?

En attendant, vous pouvez créer vous même vos propres certificats (auto-signés) en utilisant OpenSSL, ou vous déclarer autorité de certification au sein de votre organisme, de votre institution, de votre entreprise ou de votre école si l’usage reste interne. Encore une fois je vous renvois ici ou .

Si le sujet vous intéresse, je vous conseille de lire un document du CNRS rédigé par Carine Bernard à propos de la signature électronique ici.