Bonjour tout le monde !
Il y a quelques jours, une idée m’est venue en tête pour permettre d’échanger des SMS de manière quasi-anonyme, et je serais curieux de savoir ce que vous en pensiez, ou si un projet dans ce genre a déjà été tenté. Je n’ai pas pour projet de la mettre en œuvre, mais je me demande si elle théoriquement possible. Voilà en gros ce que ça donne.
Situation de départ
Imaginons que Clem veut envoyer un message à Citron, elle écrit et envoie donc ZdS c'est la classe, tu peux pas zeste !
. Maintenant, supposons que Saucisson cherche à surveiller Clem, il voit que celle-ci a envoyé à Citron le message ZdS c'est la classe, tu peux pas zeste !
le 27 mai à 15h. Il a donc à la fois le message, son expéditeur, son destinataire et le moment de son envoi.
Avec un chiffrement asymétrique
Imaginons maintenant que Clem et Citron possèdent toutes deux l’application Silence ou Signal, ou équivalent. Elles échangent leurs clés de chiffrement, puis Clem envoie le-dit message chiffré avec la clé publique de Citron. Saucisson voit alors que Clem a envoyé à Citron le message LnP4NSFHLRQRTBIPDlZUJlFZXduWSDJmTPwMqGxiCmdIEDaEsN
le 27 mai à 15h. C’est beaucoup mieux pour la vie privée, mais il peut toujours voir qui est en relation avec qui, et quand.
Avec chiffrement asymétrique et centralisation
Voici donc mon idée. Imaginons qu’une tierce personne de confiance, disons Mangue, possède un serveur avec un abonnement télécom, qui peut recevoir et envoyer des SMS.
Clem et Orange utilisent une application similaire à Silence, mais avec quelques modifications. Elles vont tout d’abord envoyer leurs clés publiques respectives au serveur de Mangue, qui leur répondra en leur envoyant lui aussi sa clé publique. Dès lors, les communications entre Clem et Mangue et entre Citron et Mangue seront chiffrées.
Clem va demander au serveur de Mangue la clé publique de Citron et, à l’aide de celle-ci, va chiffrer l’empreinte de sa clé privée. Elle y indique aussi (mais en clair) qu’elle demande l’empreinte de Citron. Ce message va alors être envoyé au serveur de Mangue, qui attendra un message du même acabit de la part de Citron. Le serveur répondra alors aux demandes et enverra les empreintes (qui sont chiffrées) des correspondants à ceux qui les demandent. Chacun pourra alors déchiffrer ce message et vérifier que l’empreinte est la bonne, c’est-à-dire que Mangue a bien envoyé les clés publiques des correspondants et non la sienne (pour éviter une attaque du type "homme du milieu").
Clem va maintenant écrire un message pour Citron, qu’elle va chiffrer avec la clé publique de Citron (récupérée sur le serveur de Mangue). Le texte obtenu sera placé dans un message, mais précédé d’un autre en-tête contenant le destinataire, c’est-à-dire Citron. Ce message va alors être chiffré avec la clé publique de Mangue et va lui être envoyé. Une fois déchiffré, Mangue verra le message ci-dessus et verra que son destinataire est Citron. Il met alors ce message de côté et, une fois la minute en cours écoulée, il enverra tous les messages reçus à leurs destinataires. Les messages n’étant pas envoyés immédiatement après avoir été reçus, il devient plus complexe de "tracer" un message depuis l’entrée jusqu’à la sortie du serveur (chaque message arrive à un moment différent, mais tous repartent en même temps).
Une fois le message reçu de la part de Mangue, Citron déchiffre le message et peut alors lire ZdS c'est la classe, tu peux pas zeste !
.
Si Saucisson surveille le réseau, tout ce qu’il peut voir est que Clem a envoyé un message illisible à Mangue le 27 mai à 15h00, et que Mangue a envoyé plusieurs messages illisibles à plusieurs personnes, dont Citron, à 15h01.
A priori, ce système aurait principalement quatre inconvénients / points de faiblesse :
- il faut plusieurs envois / réceptions de messages avant de pouvoir effectivement établir une communication ;
- les messages mettent plus de temps à arriver ;
- Clem et Citron doivent faire confiance à Mangue pour ne pas faire de surveillance relationnelle ;
- l’anonymat dépend principalement du nombre de personnes utilisant le serveur de Mangue : si 50 messages sont envoyés à 15h01, retracer lequel vient de qui et va à qui est bien plus complexe que si 5 seulement sont envoyés.
Voilà voilà, c’est encore assez fouillis et il y a surement quelques erreurs techniques de ma part (je suis très loin d’être un spécialiste en cryptographie). À votre avis, est-ce qu’un protocole comme celui-ci est technique envisageable, ou y-aurait-il des erreurs ou des problèmes bloquants ?
Merci pour vos idées et critiques, et bon week-end !