ĞMixer dependas de 3 antaŭaj teknologioj: mona miksaĵo, cepa kursigo kaj reto de fido. Ĉi tiu paĝo celas ebligi al ĉiuj kompreni ĉi tiojn.
Monaj miksiloj grandnombre aperis kun Bitcoin, nomitaj bitcoin mixer. La spezoj efektuiĝitaj en bitcoin ne estas anonimaj, sed ĉi tiuj servoj ebligas al la uzantojn anonimigi monon.
Alice kaj Bob estas du roluloj. Alice volas sendi sekrete 10 U al Bob (imagu ke U estas mona unuo).
La komputika protokolo de la mono necesigas ke la elspezantula kaj la enspezanta kontoj estu publikaj. Se la spezo estas traktada direkte, oni povas sekvi tion:
Por neebligi al homoj ligi la du kontojn, Alice necesas miksantan peranton. Se Alice volas elspezi sekrete al Bob, ŝi elspezos al miksilanto, kaj diros al ĝi ke ĝi devas elspezi al Bob.
Tiel, ekstera observanto ne plu povas ligi niajn du amikojn. Tamen, observante la enspezojn kaj elspezojn de la miksanto, oni povas facile trovi la kompletajn spezojn, do oni necesas miksi multajn spezojn samtempe:
Tiel, unu spiono volante scii kiu elspezis 10 U al Bob ne povas distingi Alice, Dave kaj Elza, kiujn estas samprobable la origino de la spezo.
La antaŭa skemo anonimigas la spezon, sed unike por ekstera observanto. La miksanto ĉion scias, do ĝi povas vendi la datumojn de siaj klientoj sen konsento.
Por solvi ĉi tion problemon, kiun suferas la aktualaj miksiloj de bitcoin, ni necesas sencentrigi.
La teknologio de la cepa kursigo (onion routing) estis disvolvita por la projekto Tor: ĝi aktuale ebligas anonime kaj sencentre comuniki sur Internet, kaj eskapi la cenzuron.
Unue, ni klarigu la bazoj de la kriptografio.
La simetria ĉifro estas kiam oni sekretigas mesaĝon (alivorte ĉifras) per unu ŝlosilo (pasvorto). Malĉifri kaj liri la mesaĝon necesas la saman ŝlosilon. La cryptographie symétrique, c'est quand on rend secret un message (on dit qu'on le chiffre) avec une clé (comme un mot de passe), et qu'il ne peut être déchiffré qu'avec ce même mot de passe. Le mot de passe est donc un secret partagé entre les participants. L'inconvénient, c'est qu'ils doivent se passer le mot de passe avant de communiquer, par un moyen sécurisé, ce qui parfois est impossible.
On a donc recours à la cryptographie asymétrique. Ici, chaque participant a une clé privée, en gros son mot de passe personnel, et une clé publique, qui peut être publiée sans danger. Il est possible de chiffrer un message avec la clé publique d'une personne, ainsi le message ne sera lisible qu'une fois déchiffré par la clé privée de cette personne. Il n'y a donc pas besoin de secret partagé, et quand même, c'est plus pratique.
L'utilisation du routage en oignons nécessite l'existence d'un réseau de serveurs (appelés nœuds).
Mettons que je veuille envoyer un message à un serveur distant, sans que lui ni mon gouvernement ne me reconnaisse.
Je vais tout d'abord trouver 3 nœuds au hasard dans le réseau, puis les numéroter 1, 2 et 3.
Ensuite, je vais ajouter à mon message l'adresse du serveur que je veux contacter, et chiffrer mon message avec la clé publique du nœud 3. J'ajoute l'adresse du nœud 3 à côté et je chiffre le tout avec la clé publique du nœud 2. Et je recommence pour le nœud 1. J'obtiens un oignon constitué de 3 couches, avec en son cœur le message original.
J'envoie l'oignon au nœud 1, qui déchiffre la première couche, et ne pouvant pas aller plus loin, il envoie ce qui reste au nœud 2 dont je lui ai donné l'adresse. Le nœud 2 fait de même, idem pour le 3. Ce dernier envoie le message au destinataire, et la réponse de celui-ci suit le même protocole.
Avec un tel système, chaque nœud ne connaît que les deux autres autour de lui. Aucun ne peut reconstituer la chaîne complète, je suis donc anonyme, et mon message est protégé (je peux aussi le chiffrer pour mon destinataire, afin que le dernier nœud ne puisse le lire).
La toile de confiance (TdC en abrégé, web of trust ou WoT en anglais) est un outil permettant de prouver qu'une clé publique appartient effectivement à une identité donnée. On peut donc être quasiment certain qu'on envoie un message à la bonne personne, chiffré avec la bonne clé.
Il y a un truc que je ne vous ai pas dit à propos de la cryptographie asymétrique, c'est qu'en plus de chiffrer, elle permet de signer. C'est-à-dire qu'en appliquant ma propre clé privée sur un document, on peut être sûr grâce à ma clé publique que j'ai effectivement signé ce document.
Nous utiliserons aussi une propriété de la toile de confiance de Duniter, qui est que chaque identité est liée à une unique personne vivante, et qu'une personne vivante ne peut avoir plusieurs identités.
Une TdC fonctionne sur un principe simple : pour certifier l'authenticité d'une identité, je signe sa clé publique, et publie ma signature. Cela revient à dire publiquement "Oyez, je sais que cette clé publique est celle de cette personne.". Une fois qu'une identité a reçu plusieurs certifications, on peut être à peu près sûr de son authenticité, même sans la connaître.
La TdC de Duniter a une règle supplémentaire, qui est qu'on ne doit certifier que les personnes vivantes, possédant une seule identité et ayant compris les implications du fait d'avoir une identité dans cette TdC.
Nous sommes partis du mixeur de bitcoin qui présentait le fâcheux inconvénient d'être centralisé, et allons y ajouter les technologies du routage en oignons et de la toile de confiance.
Au lieu de passer par un seul mixeur, nous pouvons utiliser le schéma du réseau Tor, c'est-à-dire faire passer la transaction par 3 nœuds différents, et mettre l'adresse du destinataire au cœur de l'oignon.
Toutefois, cela crée un nouveau problème : un nœud peut voler l'argent qui lui est confié. Il faut donc un nouvel ingrédient...
Avant de confier de l'argent au réseau, j'envoie l'oignon contenant l'adresse aux nœuds que j'ai choisis, et ceux-ci me répondent chacun par une promesse signée, disant que si ils reçoivent ma transaction, ils s'engagent à la renvoyer dans un intervalle de temps donné, à l'adresse donnée. Si leurs promesses me conviennent, alors j'envoie l'argent.
Si jamais un nœud n'honore pas sa promesse, je peux la publier, et tout le monde pourra vérifier l'authenticité de sa signature. Si celle-ci est authentique, et que la promesse n'a réellement pas été honorée (tout le monde peut le vérifier dans l'historique public des transactions), alors les utilisateurs du réseau, ainsi que les nœuds eux-mêmes pourront se dire qu'ils refuseront toute transaction impliquant ce nœud fautif.
La clé publique du nœud étant liée à la réelle identité de son propriétaire, le vol est fortement découragé.