jami systeme messagerie decentralise massimo musumeci

Un système de messagerie décentralisé ?

Aujourd’hui, je veux parler d’un système de messagerie à source ouverte qui est vraiment différent des autres alternatives disponibles telles que whatsapp, telegram, signal et tous les dérivés de signal. On en parle beaucoup ces derniers temps à cause du changement de politique de whatsapp et beaucoup de gens sont allés ailleurs, notamment vers le telegram et signal. Mais en réalité, ces applications alternatives à whatsapp constituent une amélioration de votre vie privée ?

Signal?

Par exemple, si l’on considère signal, il est opensource et le dépôt est sur github. Cela semble être une excellente alternative à whatsapp, mais …. Si vous allez examiner les exigences à l’url https://github.com/aqnouch/Signal-Setup-Guide vous verrez la liste suivante (au moment où j’écris cet article) des systèmes et logiciels nécessaires à l’installation d’un serveur. Je parle du serveur parce que c’est le serveur qui détermine la gestion des comptes et des métadonnées et qui est responsable gérer les données:

Requirements (signal)

  • Twilio (pour les SMS OTP)
  • Amazon S3 (pour Avatar et pièces jointes, peut être sous-titré avec MinIO)
  • Amazon SQS (pour la file d’attente CDS, peut être remplacée par LocalStack)
  • Firebase (pour les notifications “push”)

Comme vous pouvez le voir, signal utilise des services externes pour fonctionner, dont amazon. Ces exigences sont en fait des conditions préalables nécessaires à remplir, au niveau de l’installation du serveur, pour qu’il fonctionne correctement. C’est-à-dire ce qui doit être mis en place pour rendre l’installation possible et fonctionner. Donc, pour ne pas utiliser whatsapp à cause de l’attaque contre la vie privée, nous sommes confrontés à une alternative qui, bien qu’étant open source, dépend d’autres services de grandes entreprises et nous sommes alors revenus à la case départ. Si notre communication passe par des outils qui appartiennent ou sont gérés par d’autres entreprises, nous aurons en quelque sorte une interférence de ces entreprises sur nos données.

Telegram?

Que peut-on dire sur telegram ? Pouvons-nous voir le code des serveurs de telegram (j’ai mentionné le serveur, qui est l’unité qui gère les connexions et trie les communications) ? Est-il dans le domaine public ? Non. Pourquoi pas ? On ne le sait pas. Le fait que nous ne puissions pas connaître le code source du serveur, ni la structure avec laquelle il est constitué, les librairies qu’il utilise et la façon dont il gère les données, est un problème important pour notre vie privée.

La chose que on sait sur telegram est d’envoyer vos messages cryptés à quelque truc. Comme vous n’avez pas le code source, vous ne savez pas exactement ce qui est fait sur ce serveur avec vos données. Il n’est donc pas très logique de recommander telegram comme solution pour améliorer la confidentialité de vos communications textuelles. En fin de compte, nous sommes toujours dans un domaine invérifiable et non transparent.

Jami!

Il nous faut donc une alternative qui soit réellement décentralisée et qui n’ait pas d’impact sur notre vie privée. Une véritable alternative est jami. Un logiciel que j’ai pu essayer et analyser pendant quelques semaine de test et j’ai pu voir à quel point il est vraiment bon de protéger notre vie privée et de ne pas laisser nos métadonnées sur des serveurs tiers.

jami est un logiciel open source, décentralisé et peer2peer. Qu’est-ce que cela signifie ? c’est-à-dire qu’il n’utilise pas de serveur central et que la communication se fait en fait entre les deux pairs avec un cryptage de bout en bout. il n’utilise pas non plus de serveur central qui peut ensuite surveiller les métadonnées.

Nos métadonnées

Qu’est-ce que les métadonnées ? Les métadonnées sont toutes les informations entourant une communication, telles que 1) la date à laquelle la communication a eu lieu, 2) l’identité des parties connectées à la communication, 3) la durée de la communication, etc. Des informations extrêmement importantes que les services centralisés utiliseront tôt ou tard pour gagner de l’argent grâce à votre vie privée. Ces métadonnées fournissent un profil précis de votre situation, de vos comportements et même de vos connaissances. Ils sont donc très utiles pour construire votre alter-ego numérique.

Avec jami, nous allons résoudre le problème à la source, en empêchant la collecte et le stockage des métadonnées, grâce à la décentralisation que le système permet. En fait, nous n’avons que deux terminaux qui communiquent et toutes les données (métadonnées) de communication sont stockées localement.

Les clés cryptographiques

Rien ne réside sur un serveur ou un tiers. Nous sommes seuls responsables de la communication et de nos données et toute communication est cryptée avec des clés qui n’appartiennent qu’à nous. Comme toujours, lorsque nous sommes les propriétaires exclusifs des clés cryptographiques, nous sommes propriétaires du contenu que nous échangeons avec l’autre partie. La décentralisation permet également d’éviter les points intermédiaires où les métadonnées peuvent être surveillées.

jami n’a pas besoin d’un serveur central et votre compte n’est donc stocké que localement. lorsque vous voulez utiliser votre compte, vous n’avez pas besoin de vous connecter à un service et vous ne devez fournir aucune donnée ou numéro de téléphone à qui que ce soit, ni même un courriel. Jami n’a donc pas besoin de s’enregistrer et n’a pas besoin de numéros de référence pour fonctionner.

Le mot de passe que vous indiquez au démarrage de Jami est utilisé uniquement pour crypter les données localement sur votre appareil. Les messages sont cryptés avec une clé RSA.

jami est disponible pour windows, linux, android, ios et est facile à installer. Le logiciel est disponible à l’adresse https://jami.net/ où vous pouvez également trouver des informations sur l’installation qui, comme mentionné, est très simple. Vous trouverez également un accès au dépôt de code source qui est ouvert.

J’espère avoir fourni des informations et des ressources à forte valeur ajoutée et avoir été utile. Si vous le souhaitez, vous pouvez me contacter pour toute question ou précision concernant mon profil sur linkedin ou vous pouvez me contacter et me suivre et soutenir sur patreon  avec des conseils et du contenu exclusif.

massimo musumeci Créer paire clés cryptographiques signer document

Créer une paire de clés cryptographiques pour signer un document

La cryptographie moderne nous permet d’avoir des avantages considérables et peut être appliquée à plusieurs domaines très intéressants. Il devient de plus en plus important, en fait, de numériser de nombreuses opérations, y compris les opérations bureaucratiques.

Pour beaucoup de ces objectifs, la cryptographie asymétrique (ou à clé publique) est utilisée. Ce type de cryptographie, comme nous l’avons déjà vu dans d’autres articles, nous permet de générer deux clés qui sont liées l’une à l’autre par une relation mathématique. L’une s’appelle clé privée, l’autre clé publique. Grâce à ce système, nous pouvons envoyer un document crypté à quelqu’un en échangeant la clé publique et cela résout le problème de l’échange du secret cryptographique que l’on rencontre avec la cryptographie à clé symétrique (par exemple AES). Voir par exemple DH (Diffie-Hellmann key exchange).

Notre clé privée nous permet également de signer un document de manière à ce que chacun puisse vérifier que ce document a bien été signé par nous, grâce à la clé publique correspondante. Pour ce faire, nous devons donc :

  • créer une paire de clés (par exemple RSA), par exemple RSA 3072 bits;
  • télécharger notre clé publique sur un serveur à clé publique, par exemple : https://keys.openpgp.org ;
  • publier l’empreinte digitale de notre clé sur notre profil officiel, sur un document d’identification ou toute autre source officielle afin que chacun puisse vérifier que cette clé publique nous appartient bien;

Vérifier la présence d’une clé publique

Si je cherche ma clé publique sur le serveur de clés openpgp, depuis le web, je vois immédiatement que ma clé publique officielle est présente, comme vous pouvez le voir dans l’image ci-dessous. La recherche peut être effectuée à partir de la dernière partie de l’empreinte digitale. Dans mon cas : 917B BC89 F010 13EC . Il doit être publié sur tous les profils publics les plus importants afin que votre interlocuteur puisse être sûr qu’il vous appartient réellement.

 

massimo_musumeci_openpgp

Ma fingerprint (de ma clé) est publié sur mon linkedin par example, comme on peut voir ici:

 

massimo_musumeci_openpgp_linkedin

Créer une paire de clés

Le processus de création de la paire de clés semble compliqué, mais il est en fait assez simple et peut être effectué par n’importe qui avec un ordinateur normal. Voyons comment faire cette procédure. Sous Linux, nous utilisons la suite de cryptage GPG (gnuPG). Nous générons d’abord la paire de clés. Et donc nous avons

 

key_generation

puis nous vérifions l’insertion et détectons l’empreinte digitale de la clé. Nous le publierons plus tard. Pour ce faire, nous allons dans la liste des clés de notre porte-clés local. Et nous obtenons alors ce qui suit (cela c’est juste une clé de test)

fingerprint

nous téléchargeons maintenant la clé sur le serveur de clés

keyserver_upload

la clé publique est maintenant disponible sur le serveur de clés et peut être téléchargée par n’importe qui directement à partir du serveur, simplement en connaissant l’empreinte digitale.

La signature et la vérification de la signature

La signature d’un document peut maintenant se faire de manière très simple en utilisant la clé privée qui se trouve dans notre porte-clés (keyring) local. Utilisons la commande suivante pour signer un document d’exemple “examplefile.txt” avec la clé privée qui vient d’être créée

gpg --detach-sig --armor -u AD5270C4D204FABEF1E8ACDE57F1E808020B9B5A --sign examplefile.txt

Si aucun résultat n’est fourni, cela signifie que la signature a été réussie. Et en fait nous trouverons un fichier examplefile.txt.asc contenant la signature effectuée. Maintenant je peux verifier ainsi la signature:

massmux@augustus:~$ gpg --verify examplefile.txt.asc  
gpg: assuming signed data in 'examplefile.txt'
gpg: Signature made Fri 01 Jan 2021 11:30:53 AM CET
gpg:                using RSA key AD5270C4D204FABEF1E8ACDE57F1E808020B9B5A
gpg: Good signature from "Massimo Musumeci <[email protected]>" [ultimate]

 

et donc on voit que ça marche. Nous avons donc vu que nous pouvons très facilement créer notre clé d’identité numérique avec des outils “open source”, publier la partie publique et apposer des signatures sur tout document que tout le monde peut vérifier de manière indépendante. La publication de l’empreinte de notre clé sur un document officiel nous permet de relier cette empreinte à la clé publique qui nous appartient réellement.

secrets steganographie

La sauvegarde des mots d’un portefeuille bip39: par la stéganographie?

Lors de l’activation d’un portefeuille bitcoin, tant matériel que logiciel, il est important de sauvegarder les 24 mots bip39 pour le restaurer en cas de panne. C’est très important car cela te permet d’avoir à nouveau accès aux fonds en cas de perte ou de destruction de l’appareil ou de compromission des données locales.

La règle de base qui est toujours citée est de copier la sauvegarde des 24 mots bip39 sur papier avec un stylo et de la stocker ensuite en toute sécurité. ça est toujours une bonne règle. Le plus grand risque est de perdre le papier, de l’abîmer, de se le faire voler ou que quelqu’un ne puisse que le voir. En fait, il suffit que les mots soient lus rapidement pour que l’argent soit volé. La sécurité de la feuille de papier contenant les 24 mots est donc cruciale pour la sécurité de vos fonds.

Certains parlent même de mettre le papier dans une boîte de banque, ce qui est absurde car le bitcoin est en soi l’outil avec lequel on peut devenir indépendant des banques.

Il existe également des systèmes de sauvegarde basés sur des lettres d’acier qui sont intégrés dans des fentes spéciales pour le stockage le plus sûr de cette sauvegarde. Il s’agit certainement d’une méthode très efficace et aussi largement utilisée.

La sécurité de la sauvegarde des 24 mots d’un portefeuille bip39 est donc cruciale pour la sécurité de vos fonds

Beaucoup de gens craignent que leur sauvegarde soit volée ou que leur portefeuille soit fissuré, mais presque personne ne se soucie de perdre la sauvegarde et pourtant c’est la situation qui se produit le plus souvent, surtout lorsque l’utilisateur est inexpérimenté ou n’a pas un degré suffisant de préparation technique.

Soit la sauvegarde n’est plus accessible parce qu’elle a été protégée d’une manière trop complexe et non adaptée à sa propre connaissance.

Maintenant nous voyons une possibilité différente, ingénieuse, à toi de décider ensuite si tu veux la mettre en oeuvre et si elle est pour toi. Dans cette article je la décris et j’explique comment elle fonctionne. Cette technique peut également être utilisée pour cacher n’importe quelle autre information. Comme tu le sais je ne donne jamais d’informations sans expliquer pourquoi ce que je dis avec des données, des démonstrations et des explications concrètes.

C’est parce que je crois que tu dois comprendre ce que tu fais et je considère que le travail de ceux qui donnent des conseils est inutile sans fournir de preuves et d’explications sur ce que tu fais, que ce soit bien ou pas.

Qu’est-ce que la stéganographie

En utilisant la stéganographie, nous cachons un message dans une image à haute résolution, en nous assurant qu’il est caché imperceptiblement dans l’image.

La stéganographie est une technique mathématique qui permet de cacher des données numériques dans une image numérique à haute résolution.

Une technique très utilisée est la stéganographie des bits les moins significatifs (LSB). Si j’ai une image, je peux changer les bits les moins significatifs (pour chaque séquence de 8 bits) pour inclure mon message et de cette façon l’image change imperceptiblement surtout si l’image a une haute résolution et que le message à cacher n’est pas trop grand en termes de bytes.

Chaque octet est de 8 bits, on accroche les deux derniers (moin significatifs) et on met notre message. De cette façon, les données modifiées sont négligeables sur l’image et il est extrêmement difficile de voir un changement réel sur l’image elle-même. Donc tous les 8 bits, 6 sont l’image et les 2 autres sont notre message secret. Nous appliquons cette technique à toutes les données numériques de l’image source et obtenons une nouvelle image qui diffère très peu de l’image originale.

Notes importantes pour la stéganographie

  • ne pas utiliser une image du domaine public car dans ce cas il y a une référence et il est facile de comprendre qu’elle est différente quand on compare l’image originale avec l’image stéganographique;
  • utiliser une photo en haute résolution;
  • le message à cacher doit être crypté, par exemple avec gpg, sous forme de texte; vous ne devez jamais cacher un message en texte clair sans le crypter au départ;
  • l’image stéganographique doit se trouver stocké dans un groupe de nombreuses images du même type et du même format pour ne pas attirer l’attention;

Cacher les 24 mots (le secret)

Les 24 mots bip39 sauvegardés par un portefeuille bitcoin sont un exemple des quelques données que l’on peut effectivement cacher avec la stéganographie après les avoir cryptées. En fait, nous pouvons également utiliser la stéganographie pour cacher tout type de données confidentielles après les avoir cryptées. Cela garantit non seulement que les données ne sont pas lisibles, mais aussi qu’elles ne peuvent même pas être trouvées sur un support informatique.

Pour le cryptage, nous pouvons utiliser un cryptage asymétrique avec une paire de clés PGP (par exemple en utilisant gnu PG sous linux).  Au niveau de la stéganographie, il existe de nombreuses bibliothèques. J’utilise généralement stegolsb écrit en python.

J’espère avoir été utile, partager cet article, laisser un commentaire ou un commentaire pour soutenir mon travail de divulgation ouverte, très important pour la diffusion des connaissances technologiques, la vie privée et la liberté individuelle.

séquences secrètes par le bruit du microphone

Génération de séquences secrètes par le bruit du microphone

Nous avons déjà vu que le moyen le plus sûr de conserver les bitcoin à long terme est d’utiliser un porte-monnaie électronique (hardware). Avec bitcoin, en fait, notre sécurité et notre privacy dépendent de nous, car nous n’avons plus besoin d’intermédiaire pour gérer nos biens et effectuer des transactions et nous avons donc les compétences nécessaires pour utiliser les bons outils pour gérer notre patrimoine.

Le porte-monnaie hardware est un dispositif électronique qui nous permet de gérer nos clés privées sans les exposer à l’extérieur. La majorité des dispositifs de ce type, de nos jours, sont de type déterministe hiérarchique (HD). Cela signifie que la clé privée principale est créée à partir d’une séquence ordonnée de 24 mots (mnémonique) qui constitue fondamentalement de manière déterministe ce qui nous permet à tout moment de reconstituer notre portefeuille et d’accéder à nos fonds (standard bip39).

Si nous perdons cette séquence ou si quelqu’un peut y accéder, alors nous perdons nos bitcoin. L’importance de cet élément est donc primordiale. Le hardware wallet nous permet de gérer ce secret cryptographique et de l’utiliser chaque fois que nous voulons effectuer une transaction ou consulter nos soldes.

Mais qui génère cette séquence secrète ?

En général, c’est notre propre dispositif matériel qui le génère pendant la phase d’initialisation (wallet initialization), la première fois que nous décidons de l’utiliser. Le dispositif va en effet générer cette séquence à partir du générateur d’aléas interne et il nous sera demandé d’en faire une copie de sauvegarde en l’écrivant sur un morceau de papier (la sequence des mots).

À ce moment-là, la séquence des 24 mots sera physiquement stockée dans un endroit sûr où personne ne pourra y accéder et dans le plus grand secret. Notre portefeuille gardera alors le secret cryptographique et l’utilisera pour signer les transactions sortantes.

Certains bitcoiners, parmi les plus compacts, sont convaincus qu’il est erroné d’attribuer toute la confiance au caractère aléatoire du dispositif matériel que nous utilisons. Ils disent que l’on ne peut pas faire confiance à la graine créée par l’appareil. En fait, l’esprit de bitcoin est toujours de “vérifier la confiance” (don’t trust, verify). Je suis d’accord avec ce principe.

Ainsi, on peut parfois décider de produire de manière autonome la séquence bip39 des 24 mots par le biais d’une source entropique souhaitée. Par exemple, certains le créent à partir de données, d’autres à l’aide de cartes, etc. Aujourd’hui, je veux vous montrer qu’elle peut également être obtenue à partir de l’entropie générée par le son d’un microphone. L’entropie générée par le bruit du microphone est de haute qualité et est bien meilleure que toute entropie informatique créée électroniquement.

Script de génération

J’ai réalisé un script qui, installé de préférence sur une distribution Linux offline, est capable d’enregistrer le bruissement du microphone de l’ordinateur (qui est totalement aléatoire), d’obtenir les données binaires de la numérisation de ce bruit, puis à partir de cela par la fonction de l’hash sha256 pour obtenir la représentation finale à 256bit de cette entropie.
Mon scénario, à la fin, utilise les 256 bits de cette entropie pour créer les 24 mots de la mnémonique selon la norme bip39. Ces 24 mots peuvent ensuite être utilisés pour initialiser notre appareil (quelle que soit la marque ou le modèle) et obtenir une graine (secret cryptographique) dont nous sommes sûrs du caractère aléatoire et dont nous sommes sûrs qu’aucune autre personne ne pourra jamais entrer en contact car elle est créée à partir d’un caractère aléatoire unique, généré par nous à cet instant. Il est évidemment très important que la séquence soit secrète depuis le moment où elle est générée jusqu’au moment où elle est insérée dans le dispositif matériel.

Le script a été créé en open-source et est disponible sur le dépôt public github: https://github.com/massmux/bip39gen

Le script a été créé pour ne pas utiliser de bibliothèque supplémentaire non standard, afin de pouvoir être utilisé sur la distribution “Tails”, par example. La distribution Tails est en fait idéale pour exécuter ce script, car elle contourne tout système d’exploitation sur l’ordinateur et fonctionne directement à partir du usbstick. Avant de lancer le script, il est cependant très important de désactiver le réseau pour éviter tout contact avec l’internet pendant la génération de la mnémonique.

J’espère que les informations que je vous ai données ici, et le script que j’ai créé, pourront vous aider à améliorer la connaissance du sujet et la sécurité de vos bitcoins lorsque vous irez les utiliser. Je reste à votre disposition et répondrai volontiers à vos demandes et commentaires.