« Tor, conception, fonctionnement et limites » : différence entre les versions

m
arnaque contrefacon exit scam
m (arnaque contrefacon exit scam)
 
(63 versions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
PAGE EN COURS D'ECRITURE !!!
Tor (Acronyme de "The Onion Router", le routage en oignon), est un réseau mondial décentralisé de serveurs mis à disposition par des bénévoles, et dont l'objectif est l'anonymisation des connexions internet. Il ne faut pas confondre Tor et le Tor browser. Tor désigne le réseau de serveurs. Le Tor browser est un client firefox modifié qui envoie les connexions dans le réseau Tor. L'origine de l'appellation "routage en oignon" fait référence à l'encapsulation des données envoyées ou reçues à l'intérieur de plusieurs "couches" de chiffrement qui sont "épluchées" ou reconstituées au fur et à mesure du trajet dans le cuircuit tor, à l'instar des couches d'un véritable oignon.
Tor (Acronyme de "The Onion Router", le routage en oignon), est un réseau mondial décentralisé de serveurs mis à disposition par des bénévoles, et dont l'objectif est l'anonymisation des connexions internet. Il ne faut pas confondre Tor et le Tor browser. Tor désigne le réseau de serveurs. Le Tor browser est un client firefox modifié qui envoie les connexions dans le réseau Tor. L'origine de l'appellation "routage en oignon" fait référence à l'encapsulation des données envoyées ou reçues à l'intérieur de plusieurs "couches" de chiffrement qui sont "épluchées" ou reconstituées au fur et à mesure du trajet dans le cuircuit tor, à l'instar des couches d'un véritable oignon.


== Histoire ==
*A VENIR*


== Conception ==
== Conception ==
Ligne 10 : Ligne 6 :
=== Généralités ===
=== Généralités ===


Tor est un réseau mondial décentralisé de serveurs mis à disposition par des bénévoles et dont l’objectif est d’anonymiser les connexions à Internet. Tor est devenu assez populaire depuis les révélations d’Edward Snowen en 2013. En Juin 2017, on estime le nombre d’utilisateurs de Tor à 2 375 000 par jour. La plupars de ces utilisateurs sont situés aux états unis (20,62% du total), aux Emirats Arabes Unis (21,52%, Alors que Tor est illégal là bas, voir chapitre légalité), et en Russie (10,64%). La France arrive en 5ème position avec 4,65% des utilisateurs. L’idée de base, c’est que lorsque votre machine voudra accèder à Internet via le réseau Tor, elle va sélectionner au hasard 3 serveurs (Appelés des relais ou des noeuds) dans ce réseau, elle va chiffrer 3 fois cette requête, et va l’envoyer aux serveurs qui vont la relayer en “pelant” chacun au passage une couche de chiffrement. Il existe donc 3 types de relais, chacun d’entre eux assurant des missions distinctes et ayant des modes de fontionnement différents :
Tor est un réseau mondial décentralisé de serveurs mis à disposition par des bénévoles et dont l’objectif est d’anonymiser les connexions à Internet. Tor est devenu assez populaire depuis les révélations d’Edward Snowen en 2013. En Juin 2017, on estime le nombre d’utilisateurs de Tor à 2 375 000 par jour<ref name="Tor users">[https://metrics.torproject.org/userstats-relay-country.html Tor Metrics, Relay users]</ref>. La plupars de ces utilisateurs sont situés aux états unis (20,62% du total), aux Emirats Arabes Unis (21,52%, Alors que Tor est illégal là bas, voir chapitre légalité), et en Russie (10,64%)<ref name="tormetrics1">[https://metrics.torproject.org/userstats-relay-table.html Tor Metrics, Top-10 countries by relay users]</ref>. La France arrive en 5ème position avec 4,65% des utilisateurs<ref name="tormetrics1"/>. L’idée de base, c’est que lorsque votre machine voudra accèder à Internet via le réseau Tor, elle va sélectionner au hasard 3 serveurs (Appelés des relais ou des noeuds) dans ce réseau, elle va chiffrer 3 fois cette requête, et va l’envoyer aux serveurs qui vont la relayer en “pelant” chacun au passage une couche de chiffrement. Il existe donc 3 types de relais, chacun d’entre eux assurant des missions distinctes et ayant des modes de fontionnement différents :


* Le noeud d’entrée
* Le noeud d’entrée
Ligne 18 : Ligne 14 :
* Le noeud de sortie
* Le noeud de sortie


Tor assure l’anonymat dans un sens (Protection du client), mais pas nécessairement celui du serveur. Par exemple, quand vous vous connectez sur www.psychoactif.org, le serveur n’est pas anonyme puisqu’il est indexé dans les serveurs DNS. Tor permet également d’assurer l’anonymat d’un serveur hébergeant un site web qui sera alors typiquement en .onion (au lieu d’être en .fr .com .org, etc). Par exemple, certains moteurs de recherches tels que duckduckgo (https://duckduckgo.com) peuvent utiliser ce mécanisme (en l’occurence : https://3g2upl4pq6kufc4m.onion/). Un tel site web est alors appellé un “service caché” (sous entendu : dans le réseau Tor) et ne peut pas être tracé. L’ensemble de tous les services cachés est communément appellé le “Deep Web”, bien que cette appellation ne soit pas appréciée par de nombreux hacktivistes qui la jugent trop péjorative. Le nombre de services cachés, c’est à dire la taille du “Deep Web”, est estimée à 60000 à la date d’aujourd’hui (*Date d’aujourd’hui*)
Tor assure l’anonymat dans un sens (Protection du client), mais pas nécessairement celui du serveur. Par exemple, quand vous vous connectez sur www.psychoactif.org, le serveur n’est pas anonyme puisqu’il est indexé dans les serveurs DNS. Tor permet également d’assurer l’anonymat d’un serveur hébergeant un site web qui sera alors typiquement en .onion (au lieu d’être en .fr .com .org, etc). Par exemple, certains moteurs de recherches tels que duckduckgo (https://duckduckgo.com) peuvent utiliser ce mécanisme (en l’occurence : https://3g2upl4pq6kufc4m.onion/). Un tel site web est alors appellé un “service caché” (sous entendu : dans le réseau Tor) et ne peut pas être tracé. L’ensemble de tous les services cachés est communément appellé le “Deep Web”, bien que cette appellation ne soit pas appréciée par de nombreux hacktivistes qui la jugent trop péjorative. Le nombre de services cachés, c’est à dire la taille du “Deep Web”, est estimée à 60000 à la date d’aujourd’hui (21/06/2017)<ref name="onion service">[https://metrics.torproject.org/hidserv-dir-onions-seen.html Tor Metrics, Onion services]</ref>.


Cette animation montre le flux Tor à travers le monde et au cours des années : https://torflow.uncharted.software/#?ML=34.98046875,31.12819929911196,3&C=ru,RUS
Cette animation montre le flux Tor à travers le monde et au cours des années : https://torflow.uncharted.software/#?ML=34.98046875,31.12819929911196,3&C=ru,RUS


=== Le noeud d'entrée ===
=== Circuit Tor ===


Cette catégorie comporte deux sous-catégorie : les noeuds gardiens et les bridges. Dans les deux cas, ce noeud va servir de point d’entrée dans le réseau Tor. Concrètement, votre machine se connectant à Internet via Tor va envoyer la requête au noeud d’entrée, lequel va la transmettre au noeud intermédiaire. La différence entre un noeud gardien et un bridge, c’est que la liste des noeuds Tor (hors bridges) est publique, tandis que la liste des bridges est tenue secrète par le Tor Project. Ceci a pour conséquence que le bridge masque le fait que vous utilisiez Tor auprès de votre FAI ou de toute personne qui se placerait entre vous et le bridge. Si vous utilisez un noeud gardien (ce qui est le cas par défaut), votre FAI verra que vous utilisez Tor et pourra potentiellement vous bloquer (même s’il ne connaîtra ni la destination, ni le contenu de la requête). L’utilisation de bridge est intéressante dans les pays ou Tor est bloqué ou illégal (voir chapitre légalité). Pour utiliser un bridge, il faut en faire la demande au Tor project, qui distribue une ou deux IP de bridges à la demande. Vous pouvez par exemple obtenir des bridges ici : https://bridges.torproject.org/bridges.
Le circuit Tor désigne les trois relais par lesquels va transiter le flux de données. Le premier relai est le relai d'entrée. Cette catégorie comporte deux sous-catégorie : les noeuds gardiens et les bridges. Dans les deux cas, ce noeud va servir de point d’entrée dans le réseau Tor. Concrètement, votre machine se connectant à Internet via Tor va envoyer la requête au noeud d’entrée, lequel va la transmettre au noeud intermédiaire. La différence entre un noeud gardien et un bridge, c’est que la liste des noeuds Tor (hors bridges) est publique, tandis que la liste des bridges est tenue secrète par le Tor Project. Ceci a pour conséquence que le bridge masque le fait que vous utilisiez Tor auprès de votre FAI ou de toute personne qui se placerait entre vous et le bridge. Si vous utilisez un noeud gardien (ce qui est le cas par défaut), votre FAI verra que vous utilisez Tor et pourra potentiellement vous bloquer (même s’il ne connaîtra ni la destination, ni le contenu de la requête). L’utilisation de bridge est intéressante dans les pays ou Tor est bloqué ou illégal (voir chapitre légalité). Pour utiliser un bridge, il faut en faire la demande au Tor project, qui distribue une ou deux IP de bridges à la demande. Vous pouvez par exemple obtenir des bridges ici : https://bridges.torproject.org/bridges.


Par sécurité, Tor renouvelle le circuit toutes les 10 minutes pour brouiller les pistes et limiter les information qu’un attaquant controllant un noeud pourrait récupérer. Cependant, Le noeud d’entrée, qu’il soit bridge ou gardien, est fixe et ne change que tous les 2 à 3 mois pour un noeud gardien. Ce temps est appellé la “période de rotation”. Le Tor Project est même en train de réfléchir pour faire passer la période de rotation à 1 an. Alors, pourquoi ça ? C’est vrai que ça peut sembler contre-intuitif comme ça. Mais il y a des bonnes raisons :
Par sécurité, Tor renouvelle le circuit toutes les 10 minutes pour brouiller les pistes et limiter les information qu’un attaquant controllant un noeud pourrait récupérer. Cependant, Le noeud d’entrée, qu’il soit bridge ou gardien, est fixe et ne change que tous les 2 à 3 mois pour un noeud gardien. Ce temps est appellé la “période de rotation”. Le Tor Project est même en train de réfléchir pour faire passer la période de rotation à 1 an. Alors, pourquoi ça ? C’est vrai que ça peut sembler contre-intuitif comme ça. Mais il y a des bonnes raisons :
Ligne 33 : Ligne 29 :


3 : Un noeud ne devient pas bridge ou gardien comme ça. Si un serveur veut acquérir le statut de gardien, il doit remplir certaines conditions, notamment de bande passante, de stabilité, et surtout d’ancienneté. De plus, une fois que le serveur a acquit le statut de gardien, il faudra encore du temps pour que les clients Tor le choisissent en fonction de leurs périodes de rotation respectives.
3 : Un noeud ne devient pas bridge ou gardien comme ça. Si un serveur veut acquérir le statut de gardien, il doit remplir certaines conditions, notamment de bande passante, de stabilité, et surtout d’ancienneté. De plus, une fois que le serveur a acquit le statut de gardien, il faudra encore du temps pour que les clients Tor le choisissent en fonction de leurs périodes de rotation respectives.
=== Le noeud de sortie ===
Le noeud de sortie est le plus critique des 3 noeuds. En effet, le noeud de sortie va “peler” la dernière couche de chiffrement et va donc avoir accès à la requête en clair, dans laquelle peut se trouver des informations sensibles telle que des identifiants, des mots de passe, des informations personnelles, les fichiers téléchargés, etc. Ca veut dire que même si le noeud de sortie ne connaît pas l’IP de votre machine, vous pouvez quand même être desanonymisé. Pire : il est même théoriquement possible de modifier le contenu, voire de pirater purement et simplement votre machine en y insérant des virus, des backdoors ou d’autre saloperies de ce genre. Le problème se pose aussi pour les sites en https car il est possible de modifier les requêtes pour les rediriger en http. Bref, pour un attaquant (Un pirate ou un gouvernement), contrôler un noeud de sortie, c’est du pain béni.
Pour cette raison, le Tor Project surveille très étroitement les noeuds de sortie. Un projet de recherche appellé “Spoiled Onions” conduit en octobre 2013 et publié en janvier 2014 avait pour objectif de trouver les “oignons pourris” du réseau Tor<ref name="Winter-et-al-20147">[https://www.cs.kau.se/philwint/spoiled_onions/pets2014.pdf Winter, P., Köwer, R., Mulazzani, M., Huber, M., Schrittwieser, S., Lindskog, S., Weippl, E., 2014, Spoiled Onions: Exposing Malicious Tor Exit Relays]</ref>. Pour celà, ils ont dévelloppé deux outils de scan  de noeud de Sortie : Exitmap et HoneyConnector.
Exitmap permet de détecter les manipulations du traffic en établissant une connexion Tor vers un leurre controllé par le Torproject (En sécurité informatique, on appelle ça un “pot de miel”, référence à un véritable pot de miel pour pièger les insectes). On sait ce qu’on envoie dans le réseau, et on regarde ce qui arrive sur le pot de miel. Si le traffic a été modifié, alors ça veut dire que le noeud de sortie modifie les trames réseau.
Honeyconnector permet de détecter le sniffage passif du traffic (C’est à dire la récupération des information sans les modifier). Concrètement, on envoie via Tor un couple unique “identifiant/mot de passe” sur un pot de miel toujours controllé par le Torproject. Ensuite, si une tentative de connexion a lieu ulterieurement sur ce pot de miel, alors on sait que le noeud de sortie par lequel ce couple d’identifiant est passé l’a intercepté.
Ce projet de recherche a mis en évidence 65 oignons pourris sur 1000 analysés, 40 qui modifiaient activement le traffic, 27 qui le sniffaient passivement, et 2 qui faisaient les deux<ref name="Winter-et-al-20147"/>. Le tor project fait régulièrement tourner Exitmap et Honeycollector pour trouver et bannir les oignons pourris. Pour la petite histoire sordide, sachez que cette étude a mis en évidence que les oignons pourris avaient beaucoup de similitudes et qu’on pouvait les classer en groupes. Un de ces groupes était constitué de 20 oignons pourris localisés en Russie qui collaboraient entre eux et étaient contrôlés par la même entité<ref name="Winter-et-al-20147"/>. La même chose a été observé pour un groupe localisé en Inde et un groupe décentralisé<ref name="Winter-et-al-20147"/>. De plus, les attaques ne sont pas systématique, mais avaient des destinations cibles spécifiques. Ainsi, le groupe russe ciblait exclusivement les connexions à Facebook<ref name="Winter-et-al-20147"/>. Ca veut dire que les oignons pourris ne sont pas tenus par des scripts kiddies ou des loups solitaires, mais par des entités organisées qui ont les moyens de faire tourner plusieurs dizaines de serveurs et d’analyser le gros paquet de données qui en résulte.


=== Le consensus ===
=== Le consensus ===


A la date du 06/06/2017, le réseau Tor comporte 7199 noeuds dont 2439 noeuds gardiens, 814 noeuds de sortie, ainsi que 3541 bridges (non comptabilisés dans ce total)<ref>https://metrics.torproject.org/networksize.html</ref>. Cet inventaire est actualisée tous les jours sur le site de Tor Metrics. La liste de tous les noeuds Tor disponibles, à l’exception des bridges, est publique et consultable librement (Voici la référence du consensus du 04/06/2017 à 21h00 contenant les IPs de tous les noeuds disponibles à ce moment <ref>https://collector.torproject.org/recent/relay-descriptors/consensuses/2017-06-04-21-00-00-consensus</ref>).
A la date du 06/06/2017, le réseau Tor comporte 7199 noeuds dont 2439 noeuds gardiens, 814 noeuds de sortie, ainsi que 3541 bridges (non comptabilisés dans ce total)<ref>https://metrics.torproject.org/networksize.html</ref>. Cet inventaire est actualisée tous les jours sur le site de Tor Metrics. La liste de tous les noeuds Tor disponibles, à l’exception des bridges, est publique et consultable librement (Voici la référence du consensus du 04/06/2017 à 21h00 contenant les IPs de tous les noeuds disponibles à ce moment<ref>https://collector.torproject.org/recent/relay-descriptors/consensuses/2017-06-04-21-00-00-consensus</ref>).


Un tel nombre de noeud, associé à leur volatilité (Les noeuds peuvent rentrer et sortir à leur gré du réseau, ou changer d’état et passer noeud gardien, ou alors être bannis parce que ce sont des oignons pourris) pose un problème de maintenance. Le Torproject a donc déployé une poignée de serveurs particuliers appellés les autorités d’annuaire. Les IPs de ces autorités d’annuaires sont codées en dur à l’intérieur de chaque client Tor. Elles sont au nombre de 9 :
Un tel nombre de noeud, associé à leur volatilité (Les noeuds peuvent rentrer et sortir à leur gré du réseau, ou changer d’état et passer noeud gardien, ou alors être bannis parce que ce sont des relais compromis, voir chapitre vulnérabilités) pose un problème de maintenance. Le Torproject a donc déployé une poignée de serveurs particuliers appellés les autorités d’annuaire. Les IPs de ces autorités d’annuaires sont codées en dur à l’intérieur de chaque client Tor. Elles sont au nombre de 9 :


{| class="wikitable centre" width="70%"
{| class="wikitable centre" width="70%"
Ligne 103 : Ligne 86 :
1 : Compiler chacun de leur côté une liste de tous les relais connus, avec leurs informations respectives. En effet, les relais envoient périodiquement leurs données aux autorités.
1 : Compiler chacun de leur côté une liste de tous les relais connus, avec leurs informations respectives. En effet, les relais envoient périodiquement leurs données aux autorités.


2 : Calculer toujours séparément des informations relatives à ces relais, et décider si les relais sont “bons pour le service”. C’est notamment à ce moment là que les noeuds peuvent se voir attribuer le statut de gardien, et les oignons pourris recevoir le statut de “Bad Exit”.
2 : Calculer toujours séparément des informations relatives à ces relais, et décider si les relais sont “bons pour le service”. C’est notamment à ce moment là que les noeuds peuvent se voir attribuer le statut de gardien, et les relais compromis recevoir le statut de “Bad Exit”.


3 : Se concerter et voter pour atteindre un consensus au niveau de l’annuaire ainsi créé.
3 : Se concerter et voter pour atteindre un consensus au niveau de l’annuaire ainsi créé.
Ligne 158 : Ligne 141 :
==== Echange des données ====
==== Echange des données ====


[[Image:Connexion tor nontls2.png|thumb|Connexion https à www.psychoactif.org sans passer par Tor]]
[[Image:Connexion tor nontls2.png|thumb|Connexion https à www.psychonaut.com à travers Tor]]
[[Image:Connexion tor tls.png|thumb|Connexion https à www.psychoactif.org sans passer par Tor]]
[[Image:Connexion tor tls.png|thumb|Connexion https à www.psychoactif.org à travers Tor]]


Supposons que vous vouliez vous connecter à www.psychonaut.com
Supposons que vous vouliez vous connecter à www.psychonaut.com
Ligne 218 : Ligne 201 :
[[Image:Final_connexion.png|thumb|Résultat final.]]
[[Image:Final_connexion.png|thumb|Résultat final.]]
Voici à quoi ressemble une connexion établie à un service caché. Notez que cette fois, il n'y a pas trois, mais six relais. Quel que soit le sens, les 3 premiers relais épluchent une couche de l'oignon et les 3 dernier en reconstituent une. La présence de six relais au lieu de trois explique pourquoi le deep web est bien plus lent que le web classique.
Voici à quoi ressemble une connexion établie à un service caché. Notez que cette fois, il n'y a pas trois, mais six relais. Quel que soit le sens, les 3 premiers relais épluchent une couche de l'oignon et les 3 dernier en reconstituent une. La présence de six relais au lieu de trois explique pourquoi le deep web est bien plus lent que le web classique.


== Vulnérabilités de Tor ==
== Vulnérabilités de Tor ==
=== Ecoute du noeud de sortie ===
Dans le cas d'une connexion sur l'internet classique, le noeud de sortie est le plus critique des 3 noeuds. En effet, le noeud de sortie va “peler” la dernière couche de chiffrement et va donc avoir accès à la requête en clair, dans laquelle peut se trouver des informations sensibles telle que des identifiants, des mots de passe, des informations personnelles, les fichiers téléchargés, etc. Ca veut dire que même si le noeud de sortie ne connaît pas l’IP de votre machine, vous pouvez quand même être desanonymisé. Pire : il est même théoriquement possible de modifier le contenu, voire de pirater purement et simplement votre machine en y insérant des virus, des backdoors ou d’autre saloperies de ce genre. Le problème se pose aussi pour les sites en https car il est possible de modifier les requêtes pour les rediriger en http. Bref, pour un attaquant (Un pirate ou un gouvernement), contrôler un noeud de sortie, c’est du pain béni.
Pour cette raison, le Tor Project surveille très étroitement les noeuds de sortie. Un projet de recherche appellé “Spoiled Onions” conduit en octobre 2013 et publié en janvier 2014 avait pour objectif de trouver les “oignons pourris” du réseau Tor<ref name="Winter-et-al-20147">[https://www.cs.kau.se/philwint/spoiled_onions/pets2014.pdf Winter, P., Köwer, R., Mulazzani, M., Huber, M., Schrittwieser, S., Lindskog, S., Weippl, E., 2014, Spoiled Onions: Exposing Malicious Tor Exit Relays]</ref>. Pour celà, ils ont dévelloppé deux outils de scan  de noeud de Sortie : Exitmap et HoneyConnector.
Exitmap permet de détecter les manipulations du traffic en établissant une connexion Tor vers un leurre controllé par le Torproject (En sécurité informatique, on appelle ça un “pot de miel”, référence à un véritable pot de miel pour pièger les insectes). On sait ce qu’on envoie dans le réseau, et on regarde ce qui arrive sur le pot de miel. Si le traffic a été modifié, alors ça veut dire que le noeud de sortie modifie les trames réseau.
Honeyconnector permet de détecter le sniffage passif du traffic (C’est à dire la récupération des information sans les modifier). Concrètement, on envoie via Tor un couple unique “identifiant/mot de passe” sur un pot de miel toujours controllé par le Torproject. Ensuite, si une tentative de connexion a lieu ulterieurement sur ce pot de miel, alors on sait que le noeud de sortie par lequel ce couple d’identifiant est passé l’a intercepté.
Ce projet de recherche a mis en évidence 65 oignons pourris sur 1000 analysés, 40 qui modifiaient activement le traffic, 27 qui le sniffaient passivement, et 2 qui faisaient les deux<ref name="Winter-et-al-20147"/>. Le tor project fait régulièrement tourner Exitmap et Honeycollector pour trouver et bannir les oignons pourris. Pour la petite histoire sordide, sachez que cette étude a mis en évidence que les oignons pourris avaient beaucoup de similitudes et qu’on pouvait les classer en groupes. Un de ces groupes était constitué de 20 oignons pourris localisés en Russie qui collaboraient entre eux et étaient contrôlés par la même entité<ref name="Winter-et-al-20147"/>. La même chose a été observé pour un groupe localisé en Inde et un groupe décentralisé<ref name="Winter-et-al-20147"/>. De plus, les attaques ne sont pas systématique, mais avaient des destinations cibles spécifiques. Ainsi, le groupe russe ciblait exclusivement les connexions à Facebook<ref name="Winter-et-al-20147"/>. Ca veut dire que les oignons pourris ne sont pas tenus par des scripts kiddies ou des loups solitaires, mais par des entités organisées qui ont les moyens de faire tourner plusieurs dizaines de serveurs et d’analyser le gros paquet de données qui en résulte.


=== Javascript ===
=== Javascript ===
Ligne 242 : Ligne 238 :
Le concept d’une attaque par analyse de traffic est assez simple. Supposons que deux personnes s’échangent des messages chiffrés et qu’un attaquant surveille cet échange. Etant donné que les messages sont chiffrés, l’attaquant n’a pas accès au contenu. En revanche, la fréquence d’échange des messages ainsi que leur taille sont des indications qui permettent à un attaquant de faire des déductions quant à leur contenu ou leur destination.
Le concept d’une attaque par analyse de traffic est assez simple. Supposons que deux personnes s’échangent des messages chiffrés et qu’un attaquant surveille cet échange. Etant donné que les messages sont chiffrés, l’attaquant n’a pas accès au contenu. En revanche, la fréquence d’échange des messages ainsi que leur taille sont des indications qui permettent à un attaquant de faire des déductions quant à leur contenu ou leur destination.


Prenons un exemple très concret. Normalement, Tor est censé réactualiser le circuit Tor toutes les 10 minutes. Or il existe quelques exceptions à cette règle : lorsque vous maintenez un échange de données ininterrompu avec un serveur en passant par Tor (par exemple, en téléchargeant ou en uploadant), le circuit ne peut pas être réactualisé pendant l’échange <ref name="Chakravarty et al.">[https://mice.cs.columbia.edu/getTechreport.php?techreportID=1545&format=pdf& Chakravarty, S., Barbera, M.V., Portokalidis, G., Polychronakis, M., Keromytis, A.D. On the effectiveness of traffic analysis against anonymity networks using flow records
Prenons un exemple très concret. Normalement, Tor est censé réactualiser le circuit Tor toutes les 10 minutes. Or il existe quelques exceptions à cette règle : lorsque vous maintenez un échange de données ininterrompu avec un serveur en passant par Tor (par exemple, en téléchargeant ou en uploadant), le circuit ne peut pas être réactualisé pendant l’échange<ref name="Chakravarty et al.">[https://mice.cs.columbia.edu/getTechreport.php?techreportID=1545&format=pdf& Chakravarty, S., Barbera, M.V., Portokalidis, G., Polychronakis, M., Keromytis, A.D. On the effectiveness of traffic analysis against anonymity networks using flow records
]</ref>. Supposons que vous téléchargiez vraiment un gros fichier, genre un film de 2h30 en full HD de 10Go sur youtube via le logiciel youtube-dl, et que ça prenne, mettons, 5 heures. Pendant 5 heures, vous allez garder le même circuit (Exemple quasi réel : j’ai déjà de cette façon réalisé des téléchargements qui ont duré plus de 10 minutes). Si un attaquant qui controle des relais Tor voit que le serveur de youtube fait rentrer par un relai un énorme fichier pendant 5 heures, et qu’à un autre endroit, un autre relai envoie à un utilisateur un autre gros fichier pendant 5 heures, il peut raisonnablement en conclure que vous êtes en train de télécharger un film sur youtube (sans pour autant avoir accès au fichier en question). Quant à vous, vous êtes grillés !
]</ref>. Supposons que vous téléchargiez vraiment un gros fichier, genre un film de 2h30 en full HD de 10Go sur youtube via le logiciel youtube-dl, et que ça prenne, mettons, 5 heures. Pendant 5 heures, vous allez garder le même circuit (Exemple quasi réel : j’ai déjà de cette façon réalisé des téléchargements qui ont duré plus de 10 minutes). Si un attaquant qui controle des relais Tor voit que le serveur de youtube fait rentrer par un relai un énorme fichier pendant 5 heures, et qu’à un autre endroit, un autre relai envoie à un utilisateur un autre gros fichier pendant 5 heures, il peut raisonnablement en conclure que vous êtes en train de télécharger un film sur youtube (sans pour autant avoir accès au fichier en question). Quant à vous, vous êtes grillés !


Ligne 249 : Ligne 245 :
Il existe des tas et des tas d’autres façon de faire de l’analyse de traffic. Je terminerai en expliquant une dernière attaque très compromettante. Il s’agit d’imprimer activement des perturbations de débit dans les connexions à destination ou en provenance d’un serveur (comme un site web) en détournant le traffic avant qu’il n’entre dans le réseau Tor. Il suffit de voir ensuite où est ce que ces perturbations se retrouvent pour desanonymiser les gens qui ont contacté ce serveur, y compris à travers Tor. C’est de cette façon que 81% des utilisateurs de Tor peuvent être desanonymisés avec un taux de faux positifs de 6%<ref name="Chakravarty et al."/>.
Il existe des tas et des tas d’autres façon de faire de l’analyse de traffic. Je terminerai en expliquant une dernière attaque très compromettante. Il s’agit d’imprimer activement des perturbations de débit dans les connexions à destination ou en provenance d’un serveur (comme un site web) en détournant le traffic avant qu’il n’entre dans le réseau Tor. Il suffit de voir ensuite où est ce que ces perturbations se retrouvent pour desanonymiser les gens qui ont contacté ce serveur, y compris à travers Tor. C’est de cette façon que 81% des utilisateurs de Tor peuvent être desanonymisés avec un taux de faux positifs de 6%<ref name="Chakravarty et al."/>.


C’est réellement un problème car les solutions qui permettraient de fixer ce problème risquent de gravement nuire à l’utilisabilité de Tor. Par exemple on pourrait imaginer introduire du traffic “parasite” qui serait trié de façon transparente directement par le client et le serveur, mais on augmenterait alors drastiquement la bande passante de Tor. On pourrait également introduire des perturbations aléatoires de débit, mais celà ralentirait considérablement les connexions Tor qui sont déjà réputées être lentes. Cependant, le TorProject a mitigé les résultats de l’analyse par perturbation de traffic en argumentant que 6% de faux positifs, celà peu sembler peu, mais c’est en réalité énorme, suffisemment pour rendre l’attaque inexploitable en tant que tel <ref name="Tor blog">[https://blog.torproject.org/blog/traffic-correlation-using-netflows Traffic correlation using netflows]</ref>.
C’est réellement un problème car les solutions qui permettraient de fixer ce problème risquent de gravement nuire à l’utilisabilité de Tor. Par exemple on pourrait imaginer introduire du traffic “parasite” qui serait trié de façon transparente directement par le client et le serveur, mais on augmenterait alors drastiquement charge sur la bande passante de Tor. On pourrait également introduire des perturbations aléatoires de débit, mais celà ralentirait considérablement les connexions Tor qui sont déjà réputées être lentes. Cependant, le TorProject a mitigé les résultats de l’analyse par perturbation de traffic en argumentant que 6% de faux positifs, celà peu sembler peu, mais c’est en réalité énorme, suffisemment pour rendre l’attaque inexploitable en tant que tel <ref name="Tor blog">[https://blog.torproject.org/blog/traffic-correlation-using-netflows Traffic correlation using netflows]</ref>.


C’est précisément pour cette raison qu’il est dangereux d’utiliser un VPN en entrée du réseau Tor. Malgré ce que peuvent dire les conditions d’utilisation et la politique de confidentialité des prestataires de VPN, vous n’avez que leur seule parole qu’ils ne conservent pas de logs et qu’ils n’analysent pas votre traffic. Tor est un logiciel open source maintenu par le Torproject, une association à but non-lucratif. De plus, le TorProject fait activement la chasse aux relais qui analysent ou interagissent avec le traffic comme on l’a vu dans la rubrique “Noeuds sortants”, et l’analyse de traffic nécessite justement bien souvent de controller au préalable des relais (idéalement, les deux tiers, c’est à dire les relais d’entrée et de sortie). Or les VPN échappent complètement à la surveillance du TorProject et n’ont de compte à rendre qu’à ceux qui font pression sur eux. Le VPN devient donc de fait le maillon faible de la chaîne, ce qui réduit le nombre de relais Tor à controller. Si on prend l’attaque par injection de pattern temporel dans le débit et qu’il y a un VPN en entrée, il n’y a même pas besoin de controller un seul relai pour desanonymiser.
C’est précisément pour cette raison qu’il est dangereux d’utiliser un VPN en entrée du réseau Tor. Malgré ce que peuvent dire les conditions d’utilisation et la politique de confidentialité des prestataires de VPN, vous n’avez que leur seule parole qu’ils ne conservent pas de logs et qu’ils n’analysent pas votre traffic. Tor est un logiciel open source maintenu par le Torproject, une association à but non-lucratif. De plus, le TorProject fait activement la chasse aux relais qui analysent ou interagissent avec le traffic comme on l’a vu dans la rubrique “Noeuds sortants”, et l’analyse de traffic nécessite justement bien souvent de controller au préalable des relais (idéalement, les deux tiers, c’est à dire les relais d’entrée et de sortie). Or les VPN échappent complètement à la surveillance du TorProject et n’ont de compte à rendre qu’à ceux qui font pression sur eux. Le VPN devient donc de fait le maillon faible de la chaîne, ce qui réduit le nombre de relais Tor à controller. Si on prend l’attaque par injection de pattern temporel dans le débit et qu’il y a un VPN en entrée, il n’y a même pas besoin de controller un seul relai pour desanonymiser.


=== Fingerprinting de la souris ===
=== Fingerprinting de la souris ===


Lorsque vous naviguez sur internet, votre façon de cliquer, de scroller et de déplacer la souris est unique. Ceci est particulièrement vrai lorsqu’on utilise un pavé tactile. Une part dépend de votre matériel (toutes les souris n’ont pas le même nombre de boutons, petit clin d’oeil aux gamers (-; ), et une pârt dépend purement de vous.
Lorsque vous naviguez sur internet, votre façon de cliquer, de scroller et de déplacer la souris est unique. Ceci est particulièrement vrai lorsqu’on utilise un pavé tactile. Une part dépend de votre matériel (toutes les souris n’ont pas le même nombre de boutons, petit clin d’oeil aux gamers (-; ), et une part dépend purement de vous.


Un chercheur a récemment mis en évidence qu’il était possible de récupérer les données relatives à la souris, à ses mouvements et à sa façon d’interagir avec l’unité centrale<ref name="Carlos Norte">[http://jcarlosnorte.com/security/2016/03/06/advanced-tor-browser-fingerprinting.html Advanced Tor Browser Fingerprinting]</ref><ref name="Softpedia news">[http://news.softpedia.com/news/tor-users-can-be-tracked-based-on-their-mouse-movements-501602.shtml Tor users can be tracked based on their mouse movements]</ref><ref name="Question more">[https://www.rt.com/viral/335112-tor-mouse-movements-fingerprint/ Click bait: Tor users can be tracked by mouse movements]</ref>
Un chercheur a récemment mis en évidence qu’il était possible de récupérer les données relatives à la souris, à ses mouvements et à sa façon d’interagir avec l’unité centrale<ref name="Carlos Norte">[http://jcarlosnorte.com/security/2016/03/06/advanced-tor-browser-fingerprinting.html Advanced Tor Browser Fingerprinting]</ref><ref name="Softpedia news">[http://news.softpedia.com/news/tor-users-can-be-tracked-based-on-their-mouse-movements-501602.shtml Tor users can be tracked based on their mouse movements]</ref><ref name="Question more">[https://www.rt.com/viral/335112-tor-mouse-movements-fingerprint/ Click bait: Tor users can be tracked by mouse movements]</ref>
Ligne 277 : Ligne 272 :


Il est donc extrêmement important d’interdire le Javascript à chaque fois que c’est possible, et systématiquement sur le Deep Web.
Il est donc extrêmement important d’interdire le Javascript à chaque fois que c’est possible, et systématiquement sur le Deep Web.


=== Faiblesse des clés d’authentification ===
=== Faiblesse des clés d’authentification ===
Ligne 322 : Ligne 316 :
Or la censure sur internet est également très présente là bas. De nombres services sont censurés tel que les sites parlant de la drogue, les sites de rencontre, les sites pornographiques, les sites politiquement sensibles, les sites critiquant l’Islam, les sites qui portent atteinte à “l’éthique”, etc... Donc le fait d’accéder à des services censurés via Tor ou via un VPN tombe sous le coup de cette loi<ref name="Censure EAU"/>.
Or la censure sur internet est également très présente là bas. De nombres services sont censurés tel que les sites parlant de la drogue, les sites de rencontre, les sites pornographiques, les sites politiquement sensibles, les sites critiquant l’Islam, les sites qui portent atteinte à “l’éthique”, etc... Donc le fait d’accéder à des services censurés via Tor ou via un VPN tombe sous le coup de cette loi<ref name="Censure EAU"/>.


Il est d’ailleurs intéressant de noter que c’est aux Emirats Arabes Unis que les bridges sont le plus utilisés. D’après le site de Tor Metrics, Les Emirats Arabes Unis serait le deuxième pays ou Tor serait le plus utilisé avec 320490 utilisateurs par jour, totalisant 14,67% du total des utilisateurs de Tor par jour<ref name="tormetrics1">[https://metrics.torproject.org/userstats-relay-table.html Tor Metrics, Top-10 countries by relay users]</ref> (statistique consultée le 18/07/2017). De plus, c’est aux EAU que les bridges sont le plus utilisés avec 13682 utilisateurs journaliers, totalisant 21,65%  des utilisateurs journaliers de bridges dans le monde entier<ref name="tormetrics2">[https://metrics.torproject.org/userstats-bridge-table.html Tor Metrics, Top-10 countries by bridges users]</ref> (statistique consultée le 18/07/2017).
Il est d’ailleurs intéressant de noter que c’est aux Emirats Arabes Unis que les bridges sont le plus utilisés. D’après le site de Tor Metrics, Les Emirats Arabes Unis serait le deuxième pays ou Tor serait le plus utilisé avec 320490 utilisateurs par jour, totalisant 14,67% du total des utilisateurs de Tor par jour<ref name="tormetrics1"/> (statistique consultée le 18/07/2017). De plus, c’est aux EAU que les bridges sont le plus utilisés avec 13682 utilisateurs journaliers, totalisant 21,65%  des utilisateurs journaliers de bridges dans le monde entier<ref name="tormetrics2">[https://metrics.torproject.org/userstats-bridge-table.html Tor Metrics, Top-10 countries by bridges users]</ref> (statistique consultée le 18/07/2017).
 


=== Ailleurs ===
=== Ailleurs ===
Ligne 401 : Ligne 394 :
|-
|-
|}
|}


* Etape 2 : Psychoactif et moi même choisissons chacun de notre côté un nombre secret quelconque.
* Etape 2 : Psychoactif et moi même choisissons chacun de notre côté un nombre secret quelconque.
Ligne 418 : Ligne 412 :
|-
|-
|}
|}


* Etape 3 : Psychoactif et moi élevons à la puissance choisie le nombre premier choisi en étape 1 :
* Etape 3 : Psychoactif et moi élevons à la puissance choisie le nombre premier choisi en étape 1 :
Ligne 426 : Ligne 421 :
! width="33%" | www.psychoactif.org
! width="33%" | www.psychoactif.org
|-
|-
|align="center"|'''<span style="color: blue;">5</span>'''
|align="center"|'''<span style="color: blue;">5</span><span style="color: red;"><sup>3</sup></span> = <span style="color: purple;">125</span>'''
|align="center"|<span style="color: blue;">'''5'''</span>
|align="center"|<span style="color: blue;">'''5'''</span>
|align="center"|'''<span style="color: blue;">5</span><span style="color: green;"><sup>4</sup></span> = <span style="color: orange;">625</span>'''
|-
|}
* Etape 4 : Psychoactif et moi nous échangeons ces deux nombres. Cet échange n’a pas besoin d’être sécurisé. En pratique, il peut être chiffré et signé de façon assymétrique.
{| class="wikitable centre" width="100%"
|-
! width="33%" | Moi
! width="33%" | Attaquant
! width="33%" | www.psychoactif.org
|-
|align="center"|'''<span style="color: blue;">5</span><span style="color: red;"><sup>3</sup></span> = <span style="color: purple;">125</span>'''
|align="center"|<span style="color: blue;">'''5'''</span>
|align="center"|<span style="color: blue;">'''5'''</span>
|align="center"|'''<span style="color: blue;">5</span><span style="color: green;"><sup>4</sup></span> = <span style="color: orange;">625</span>'''
|-
|-
|align="center"|'''<span style="color: orange;">625</span>'''
|align="center"|'''<span style="color: orange;">625</span> <span style="color: purple;">125</span>'''
|align="center"|'''<span style="color: purple;">125</span>'''
|}
|}
Etape 5 : Psychoactif et moi même élevons le nombre échangé à la puissance secrète choisie à l’étape 2. Et ô magie des mathématiques, on tombe sur le même nombre sans se l’être échangé.
{| class="wikitable centre" width="100%"
|-
! width="33%" | Moi
! width="33%" | Attaquant
! width="33%" | www.psychoactif.org
|-
|align="center"|'''<span style="color: blue;">5</span><span style="color: red;"><sup>3</sup></span> = <span style="color: purple;">125</span>'''
|align="center"|<span style="color: blue;">'''5'''</span>
|align="center"|'''<span style="color: blue;">5</span><span style="color: green;"><sup>4</sup></span> = <span style="color: orange;">625</span>'''
|-
|align="center"|'''<span style="color: orange;">625</span><span style="color: red;"><sup>3</sup></span> = <span style="color: brown;">244140625</span>'''
|align="center"|'''<span style="color: orange;">625</span> <span style="color: purple;">125</span>'''
|align="center"|'''<span style="color: purple;">125</span><span style="color: green;"><sup>4</sup></span> = <span style="color: brown;">244140625</span>'''
|}
Quant à l’attaquant, le seul moyen qu’il aurait éventuellement pour casser la clé serait de retrouver les deux puissances secrètes à partir de 5, 125 et 625. Sauf qu’ici, j’ai pris un exemple simplifié. En réalité, les opérations de mise à la puissances sont réalisé dans ce qu’on appelle en mathématiques un “corps fini”. Un corps fini, on peu l’appréhender pour vulgariser un peu comme un ensemble fini d’entiers dans lequel le décompte est periodique.
Par exemple si vous comptez l’ensemble des heures de la journée, c’est un ensemble comptant 24 élément allant de 0 à 23. Dans cet ensemble, “l’heure 27“ est équivalente à 3 heures du matin (1 tour de cadran de 24 heures, plus 3 heures) et on note 27 ≡ 3 mod(24) (27 équivaut à 3 plus ou moins (modulo) 24)
C’est un peu de cette façon là qu’on compte dans un corps fini.
Dans l’échange de Diffie Hellmann, l’étape 1 consiste en réalité à se mettre d’accord sur un nombre quelconque (en l'occurence <span style="color: blue;">'''5'''</span>), mais aussi sur un corps fini qui servira de base pour compter. Par exemple 17. Donc lorsqu’on calculera '''<span style="color: blue;">5</span><span style="color: red;"><sup>3</sup></span>''' dans la base 17, on trouve que c’est égal à '''<span style="color: purple;">6</span>''' modulo 17. Pour reprendre l’exemple de l’horloge, qui est cette fois un peu particulière puisque c’est une horloge à 17 subdivisions, si vous comptez jusqu’à '''<span style="color: purple;">125</span>''', vous faites 7 fois le tour de l’horloge, et à la fin, il vous reste '''<span style="color: purple;">6</span>''' ('''<span style="color: purple;">125</span>''' = 7*17 + '''<span style="color: purple;">6</span>'''). En suivant le même raisonnement, '''<span style="color: blue;">5</span><span style="color: green;"><sup>4</sup></span>''' ≡ '''<span style="color: orange;">13</span>''' mod(17). Pour un attaquant, ça devient extrèmement compliqué de retrouver les puissances parce qu’il ne dispose que du résultat final, c’est à dire 6 et 13, et qu’il ne sait pas combien de “tours de cadran” ont été fait. Or il y a une infinités de puissances possibles qui donneront comme résultat 6 ou 13 (Par exemple 5<sup>19</sup> ≡ 6 mod(17). C’est ce qui fait toute la force de l’échange de Diffie Hellman.


=== Advanced Encryption Standard ===
=== Advanced Encryption Standard ===
*A VENIR*
 
L'algorithme symétrique utilisé par Tor pour protéger les données est l'Advanced Encryption Standard, plus communément appellé AES. C'est l'un des algorithmes les plus robustes qui existe à ce jour. Accessoirement, c'est aussi l'algorithme qui sécurise vos échanges de données quand vous allez sur Psychoactif. AES fonctionne de la façon suivante. Supposons que je veuille chiffrer le mot suivant : "Acide Lysergique". Les caractères en informatique sont codés via la [http://www.asciitable.com/ table ASCII] qui permet d'associer des nombres (de 0 à 255) à 256 symboles, ces nombres étant codés sur 8 bits (1 octet). Par exemple le L majuscule correspond à 76 (01001100 en binaire) dans la table ASCII. Donc :
 
{| class="wikitable centre" width="100%"
|-
! width="6.25%" | <span style="color: blue;">A</span>
! width="6.25%" | <span style="color: green;">c</span>
! width="6.25%" | <span style="color: red;">i</span>
! width="6.25%" | <span style="color: brown;">d</span>
! width="6.25%" | <span style="color: orange;">e</span>
! width="6.25%" | 
! width="6.25%" | <span style="color: HotPink;">L</span>
! width="6.25%" | <span style="color: purple;">y</span>
! width="6.25%" | <span style="color: cyan;">s</span>
! width="6.25%" | <span style="color: orange;">e</span>
! width="6.25%" | <span style="color: magenta;">r</span>
! width="6.25%" | <span style="color: SpringGreen;">g</span>
! width="6.25%" | <span style="color: red;">i</span>
! width="6.25%" | <span style="color: DodgerBlue;">q</span>
! width="6.25%" | <span style="color: RosyBrown;">u</span>
! width="6.25%" | <span style="color: orange;">e</span>
|-
|align="center"|'''<span style="color: blue;">65</span>'''
|align="center"|'''<span style="color: green;">99</span>'''
|align="center"|'''<span style="color: red;">105</span>'''
|align="center"|'''<span style="color: brown;">100</span>'''
|align="center"|'''<span style="color: orange;">101</span>'''
|align="center"|'''<span style="color: grey;">32</span>'''
|align="center"|'''<span style="color: HotPink;">76</span>'''
|align="center"|'''<span style="color: purple;">121</span>'''
|align="center"|'''<span style="color: cyan;">115</span>'''
|align="center"|'''<span style="color: orange;">101</span>'''
|align="center"|'''<span style="color: magenta;">114</span>'''
|align="center"|'''<span style="color: SpringGreen;">103</span>'''
|align="center"|'''<span style="color: red;">105</span>'''
|align="center"|'''<span style="color: DodgerBlue;">113</span>'''
|align="center"|'''<span style="color: RosyBrown;">117</span>'''
|align="center"|'''<span style="color: orange;">101</span>'''
|-
|}
 
 
 
L'algorithme AES travaille sur des blocs de 4*4 éléments qui font 128 bits (126/16 = 8 bits, on retrouve bien nos 8 bits qui codent les lettres). Là, j'ai bien choisi mon mot pour qu'il y aie pile poil 16 caractères. Mais si il faut chiffrer plus de données, AES crée d'autre blocs à la suite et remplit les blocs incomplets avec des données bidon.
 
Du coup, voici mon bloc :
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: blue;">65</span>'''
|align="center"|'''<span style="color: green;">99</span>'''
|align="center"|'''<span style="color: red;">105</span>'''
|align="center"|'''<span style="color: brown;">100</span>'''
|-
|align="center"|'''<span style="color: orange;">101</span>'''
|align="center"|'''<span style="color: grey;">32</span>'''
|align="center"|'''<span style="color: HotPink;">76</span>'''
|align="center"|'''<span style="color: purple;">121</span>'''
|-
|align="center"|'''<span style="color: cyan;">115</span>'''
|align="center"|'''<span style="color: orange;">101</span>'''
|align="center"|'''<span style="color: magenta;">114</span>'''
|align="center"|'''<span style="color: SpringGreen;">103</span>'''
|-
|align="center"|'''<span style="color: red;">105</span>'''
|align="center"|'''<span style="color: DodgerBlue;">113</span>'''
|align="center"|'''<span style="color: RosyBrown;">117</span>'''
|align="center"|'''<span style="color: orange;">101</span>'''
|-
|}
 
 
La clé de AES est une clé maîtresse de 128, 192 ou 256 bits en fonction de la force de l'algorithme, et à partir de laquelle seront déduites des sous-clés de 128 bits. Ces sous-clés auront le même format qu'un bloc, c'est à dire qu'elles se présenteront sous la forme d'une matrice aléatoire de 4*4.
 
Et du coup, voici une sous-clé créée pour l'occasion qui est constituée de nombres aléatoires compris entre 0 et 255 :
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: DarkGreen;">177</span>'''
|align="center"|'''75'''
|align="center"|'''103'''
|align="center"|'''21'''
|-
|align="center"|'''136'''
|align="center"|'''203'''
|align="center"|'''117'''
|align="center"|'''146'''
|-
|align="center"|'''43'''
|align="center"|'''199'''
|align="center"|'''147'''
|align="center"|'''187'''
|-
|align="center"|'''250'''
|align="center"|'''194'''
|align="center"|'''10'''
|align="center"|'''172'''
|-
|}
 
Ensuite, AES se déroule "tours" comportant 4 étapes plus un tour préliminaire.
 
Tour préliminaire (AddRoundKey) :
 
Il s'agit ici d'appliquer la fonction XOR (OU exclusif) entre chaque nombres du bloc à coder et chaque nombres de la clé. Pour bien comprendre, il faut passer en binaire. La fonction XOR renvoie 1 si les 2 bits en entrée sont différents et 0 s'ils sont identiques. Par exemple prenons notre première lettre (65) et le premier nombre de notre clé (177) :
 
{| class="wikitable centre" width="30%"
|-
|align="right"|<span style="color: blue;">65</span>
|align="right"|<span style="color: blue;">01000001</span>
|-
|align="right"|XOR <span style="color: DarkGreen;">177</span>
|align="right"|XOR <span style="color: DarkGreen;">10110001</span>
|-
|align="right"|'''= <span style="color: DarkViolet;">240</span>'''
|align="right"|'''<span style="color: DarkViolet;">11110000</span>'''
|-
|}
 
A ce stade, notre matrice devient donc :
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: DarkViolet;">240</span>'''
|align="center"|'''40'''
|align="center"|'''14'''
|align="center"|'''113'''
|-
|align="center"|'''237'''
|align="center"|'''235'''
|align="center"|'''57'''
|align="center"|'''235'''
|-
|align="center"|'''88'''
|align="center"|'''162'''
|align="center"|'''225'''
|align="center"|'''220'''
|-
|align="center"|'''147'''
|align="center"|'''179'''
|align="center"|'''255'''
|align="center"|'''201'''
|-
|}
 
Tours :
 
1ère étape (Générique) : SubBytes
 
On applique à chaque élément du bloc à chiffrer une fonction non-linéaire prédéfinie. L'idée de cette étape, c'est de changer drastiquement tous les éléments du bloc. En cryptographie, on appelle cette propriété la confusion, et les transformations non-linéaires sont parfaites pour ça (si vous voulez les détails technique, ça consiste à prendre l'inverse de ces éléments dans un corps de Galois GF(256) et d'y appliquer une relation affine). Concrètement, étant donné que cette étape est générique, on peut établir une table de conversion qu'on appelle une S-box (Substitution box) et qui est disponible ici en hexadécimal (https://en.wikipedia.org/wiki/Rijndael_S-box). Par exemple, <span style="color: DarkViolet;">240</span> est transformé en <span style="color: red;">140</span>. Du coup, mon bloc devient :
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: DarkViolet;">240</span>'''
|align="center"|'''40'''
|align="center"|'''14'''
|align="center"|'''113'''
|-
|align="center"|'''237'''
|align="center"|'''235'''
|align="center"|'''57'''
|align="center"|'''235'''
|-
|align="center"|'''88'''
|align="center"|'''162'''
|align="center"|'''225'''
|align="center"|'''220'''
|-
|align="center"|'''147'''
|align="center"|'''179'''
|align="center"|'''255'''
|align="center"|'''201'''
|-
|}
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: red;">140</span>'''
|align="center"|'''52'''
|align="center"|'''171'''
|align="center"|'''163'''
|-
|align="center"|'''85'''
|align="center"|'''233'''
|align="center"|'''18'''
|align="center"|'''233'''
|-
|align="center"|'''106'''
|align="center"|'''58'''
|align="center"|'''248'''
|align="center"|'''134'''
|-
|align="center"|'''220'''
|align="center"|'''109'''
|align="center"|'''22'''
|align="center"|'''221'''
|-
|}
 
 
Deuxième étape (Générique) : ShiftRows :
 
C'est très simple, on décale les lignes de la matrice suivant l'exemple donné ci dessous. L'idée, cette fois ci, est d'assurer ce qu'on appelle en cryptographie la diffusion. C'est à dire que le moindre changement dans le message de départ se répercutera de façon considérable dans l'algorithme et aboutira à un chiffré radicalement différent.
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: red;">140</span>'''
|align="center"|'''<span style="color: orange;">52</span>'''
|align="center"|'''<span style="color: pink;">171</span>'''
|align="center"|'''<span style="color: purple;">163</span>'''
|-
|align="center"|'''<span style="color: red;">85</span>'''
|align="center"|'''<span style="color: orange;">233</span>'''
|align="center"|'''<span style="color: pink;">18</span>'''
|align="center"|'''<span style="color: purple;">233</span>'''
|-
|align="center"|'''<span style="color: red;">106</span>'''
|align="center"|'''<span style="color: orange;">58</span>'''
|align="center"|'''<span style="color: pink;">248</span>'''
|align="center"|'''<span style="color: purple;">134</span>'''
|-
|align="center"|'''<span style="color: red;">220</span>'''
|align="center"|'''<span style="color: orange;">109</span>'''
|align="center"|'''<span style="color: pink;">22</span>'''
|align="center"|'''<span style="color: purple;">221</span>'''
|-
|}
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: red;">140</span>'''
|align="center"|'''<span style="color: orange;">52</span>'''
|align="center"|'''<span style="color: pink;">171</span>'''
|align="center"|'''<span style="color: purple;">163</span>'''
|-
|align="center"|'''<span style="color: orange;">233</span>'''
|align="center"|'''<span style="color: pink;">18</span>'''
|align="center"|'''<span style="color: purple;">233</span>'''
|align="center"|'''<span style="color: red;">85</span>'''
|-
|align="center"|'''<span style="color: pink;">248</span>'''
|align="center"|'''<span style="color: purple;">134</span>'''
|align="center"|'''<span style="color: red;">106</span>'''
|align="center"|'''<span style="color: orange;">58</span>'''
|-
|align="center"|'''<span style="color: purple;">221</span>'''
|align="center"|'''<span style="color: red;">220</span>'''
|align="center"|'''<span style="color: orange;">109</span>'''
|align="center"|'''<span style="color: pink;">22</span>'''
|-
|}
 
 
3ème étape (Générique) : MixColumns
 
Il s'agit cette fois ci de multiplier chaque colonne de la matrice par une matrice ayant des propriétés mathématiques spéciale appellée MDS (Maximum Distance Separable). Cette matrice a été calculée pour optimiser la propriété de diffusion citée ci dessus. Concrètement, tous les éléments de la colonne vont s'influencer les uns les autres. Cette matrice est la suivante :
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: DodgerBlue;">2</span>'''
|align="center"|'''<span style="color: DodgerBlue;">3</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|-
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">2</span>'''
|align="center"|'''<span style="color: DodgerBlue;">3</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|-
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">2</span>'''
|align="center"|'''<span style="color: DodgerBlue;">3</span>'''
|-
|align="center"|'''<span style="color: DodgerBlue;">3</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">2</span>'''
|-
|}
 
Exemple avec la première colonne. La multiplication s'effectue dans un corps de Galois GF(2⁸)
 
{| class="wikitable centre" width="65%"
|-
|align="center"|''' '''
|align="center"|''' '''
|align="center"|''' '''
|align="center"|''' '''
|align="left"|'''<span style="color: red;">140</span>'''
|-
|align="center"|''' '''
|align="center"|''' '''
|align="center"|''' '''
|align="center"|''' '''
|align="left"|'''<span style="color: orange;">233</span>'''
|-
|align="center"|''' '''
|align="center"|''' '''
|align="center"|''' '''
|align="center"|''' '''
|align="left"|'''<span style="color: pink;">248</span>'''
|-
|align="center"|''' '''
|align="center"|''' '''
|align="center"|''' '''
|align="center"|''' '''
|align="left"|'''<span style="color: purple;">221</span>'''
|-
|align="center"|'''<span style="color: DodgerBlue;">2</span>'''
|align="center"|'''<span style="color: DodgerBlue;">3</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="left"|(<span style="color: DodgerBlue;">2</span>x<span style="color: red;">140</span> XOR <span style="color: DodgerBlue;">3</span>x<span style="color: orange;">233</span> XOR <span style="color: DodgerBlue;">1</span>x<span style="color: pink;">248</span> XOR <span style="color: DodgerBlue;">1</span>x<span style="color: purple;">221</span>) = '''<span style="color: SeaGreen;">50</span>'''
|-
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">2</span>'''
|align="center"|'''<span style="color: DodgerBlue;">3</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="left"|(<span style="color: DodgerBlue;">1</span>x<span style="color: red;">140</span> XOR <span style="color: DodgerBlue;">2</span>x<span style="color: orange;">233</span> XOR <span style="color: DodgerBlue;">3</span>x<span style="color: pink;">248</span> XOR <span style="color: DodgerBlue;">1</span>x<span style="color: purple;">221</span>) = '''<span style="color: OliveDrab;">139</span>'''
|-
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">2</span>'''
|align="center"|'''<span style="color: DodgerBlue;">3</span>'''
|align="left"|(<span style="color: DodgerBlue;">1</span>x<span style="color: red;">140</span> XOR <span style="color: DodgerBlue;">1</span>x<span style="color: orange;">233</span> XOR <span style="color: DodgerBlue;">2</span>x<span style="color: pink;">248</span> XOR <span style="color: DodgerBlue;">3</span>x<span style="color: purple;">221</span>) = '''<span style="color: MediumAquamarine;">242</span>'''
|-
|align="center"|'''<span style="color: DodgerBlue;">3</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">1</span>'''
|align="center"|'''<span style="color: DodgerBlue;">2</span>'''
|align="left"|(<span style="color: DodgerBlue;">3</span>x<span style="color: red;">140</span> XOR <span style="color: DodgerBlue;">1</span>x<span style="color: orange;">233</span> XOR <span style="color: DodgerBlue;">1</span>x<span style="color: pink;">248</span> XOR <span style="color: DodgerBlue;">2</span>x<span style="color: purple;">221</span>) = '''<span style="color: DarkCyan;">63</span>'''
|-
|}
 
Donc la matrice devient :
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: red;">140</span>'''
|align="center"|'''52'''
|align="center"|'''171'''
|align="center"|'''163'''
|-
|align="center"|'''<span style="color: orange;">233</span>'''
|align="center"|'''18'''
|align="center"|'''233'''
|align="center"|'''85'''
|-
|align="center"|'''<span style="color: pink;">248</span>'''
|align="center"|'''134'''
|align="center"|'''106'''
|align="center"|'''58'''
|-
|align="center"|'''<span style="color: purple;">221</span>'''
|align="center"|'''220'''
|align="center"|'''109'''
|align="center"|'''22'''
|-
|}
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''<span style="color: SeaGreen;">50</span>'''
|align="center"|'''4'''
|align="center"|'''106'''
|align="center"|'''142'''
|-
|align="center"|'''<span style="color: OliveDrab;">139</span>'''
|align="center"|'''93'''
|align="center"|'''177'''
|align="center"|'''81'''
|-
|align="center"|'''<span style="color: MediumAquamarine;">242</span>'''
|align="center"|'''78'''
|align="center"|'''21'''
|align="center"|'''184'''
|-
|align="center"|'''<span style="color: DarkCyan;">63</span>'''
|align="center"|'''107'''
|align="center"|'''191'''
|align="center"|'''135'''
|-
|}
 
 
4ème étape (Dépendante de la clé) : AddRoundKey
 
Il s'agit de la même chose que le tour préliminaire avec la fonction XOR, mais à partir d'une nouvelle sous-clé aléatoire déduite de la clé maîtresse (Une sous-clé aléatoire différente par tour), mettons :
 
{| class="wikitable centre" width="20%"
|-
|align="center"|'''50'''
|align="center"|'''4'''
|align="center"|'''106'''
|align="center"|'''142'''
|-
|align="center"|'''139'''
|align="center"|'''93'''
|align="center"|'''177'''
|align="center"|'''81'''
|-
|align="center"|'''242'''
|align="center"|'''78'''
|align="center"|'''21'''
|align="center"|'''184'''
|-
|align="center"|'''63'''
|align="center"|'''107'''
|align="center"|'''191'''
|align="center"|'''135'''
|-
|}
XOR
{| class="wikitable centre" width="20%"
|-
|align="center"|'''184'''
|align="center"|'''116'''
|align="center"|'''102'''
|align="center"|'''114'''
|-
|align="center"|'''222'''
|align="center"|'''163'''
|align="center"|'''60'''
|align="center"|'''91'''
|-
|align="center"|'''145'''
|align="center"|'''53'''
|align="center"|'''23'''
|align="center"|'''15'''
|-
|align="center"|'''181'''
|align="center"|'''222'''
|align="center"|'''21'''
|align="center"|'''75'''
|-
|}
=
{| class="wikitable centre" width="20%"
|-
|align="center"|'''138'''
|align="center"|'''112'''
|align="center"|'''12'''
|align="center"|'''252'''
|-
|align="center"|'''85'''
|align="center"|'''254'''
|align="center"|'''113'''
|align="center"|'''10'''
|-
|align="center"|'''99'''
|align="center"|'''123'''
|align="center"|'''2'''
|align="center"|'''183'''
|-
|align="center"|'''138'''
|align="center"|'''181'''
|align="center"|'''170'''
|align="center"|'''204'''
|-
|}
 
 
Ensuite, on recommence toutes ces étapes 10, 12 ou 14 fois en fonction de la taille de la clé maîtresse (AES 128/192/256 bits). A cette étape, si on reprend notre table ASCII, notre message initial (Acide Lysergique) ressemblerait à Šp*FF*üUþq*LF*c{*STX*·ŠµªÌ
 
{| class="wikitable centre" width="100%"
|-
! width="6.25%" | 138
! width="6.25%" | 112
! width="6.25%" | 12
! width="6.25%" | 252
! width="6.25%" | 85
! width="6.25%" | 254
! width="6.25%" | 113
! width="6.25%" | 10
! width="6.25%" | 99
! width="6.25%" | 123
! width="6.25%" | 2
! width="6.25%" | 183
! width="6.25%" | 138
! width="6.25%" | 181
! width="6.25%" | 170
! width="6.25%" | 204
|-
|align="center"|'''Š'''
|align="center"|'''p'''
|align="center"|'''*FF*'''
|align="center"|'''ü'''
|align="center"|'''U'''
|align="center"|'''þ'''
|align="center"|'''q'''
|align="center"|'''*LF*'''
|align="center"|'''c'''
|align="center"|'''{'''
|align="center"|'''*STX*'''
|align="center"|'''.'''
|align="center"|'''Š'''
|align="center"|'''µ'''
|align="center"|'''ª'''
|align="center"|'''Ì'''
|-
|}


== Références ==
== Références ==
<references/>
<references/>
Sécurité
Il existe de nombreuses arnaques (exit scam) sur le réseau Tor.
Les administrateurs d'un site partent avec tous les fonds déposés par les utilisateurs.
Il est donc conseillé d'utiliser un portefeuille (wallet) externe afin de limiter les risques de perte d'argent
De plus, de nombreux produits vendus sur Tor sont des contrefacons
1

modification