4 points par GN⁺ 2024-08-18 | 1 commentaires | Partager sur WhatsApp
  • Magic Wormhole fournit une bibliothèque et l’outil en ligne de commande wormhole pour transférer en toute sécurité des fichiers de taille arbitraire, des répertoires et de courts textes d’un ordinateur à un autre
  • Les deux extrémités du transfert sont identifiées par le même wormhole code ; en général, l’appareil émetteur génère le code, l’affiche, puis on le saisit sur l’appareil récepteur
  • Le code utilise une courte liste de mots faciles à prononcer ; côté réception, l’autocomplétion par tabulation des mots du code est proposée, si bien qu’il suffit généralement de taper quelques lettres
  • Le wormhole code est à usage unique et n’a pas besoin d’être mémorisé ; le programme utilise deux serveurs, un mailbox server et un transit relay, dont les sources se trouvent dans des dépôts séparés
  • Magic Wormhole est distribué sous licence MIT, compatible avec Python 3.10 et versions ultérieures, et testé jusqu’à la version 3.12

Ce que propose Magic Wormhole

  • Magic Wormhole est un projet dont l’objectif est de permettre de “récupérer quelque chose d’un ordinateur à un autre en toute sécurité”
  • Le package fournit deux formes
    • Bibliothèque

      • Un outil en ligne de commande appelé wormhole
      • Les éléments pouvant être transférés incluent
      • Des fichiers de taille arbitraire
      • Des répertoires
      • De courts fragments de texte

Méthode de transfert basée sur le wormhole code

  • Les deux endpoints sont identifiés à l’aide du même wormhole code
  • Le déroulement habituel est le suivant
    • L’appareil émetteur génère le code et l’affiche à l’écran
    • L’appareil récepteur saisit ce code
  • Le code est court, facile à prononcer, et utilise une liste de mots phonétiquement distincts
  • Côté réception, une autocomplétion par tabulation est fournie pour les mots du code, si bien qu’il suffit généralement de saisir quelques lettres
  • Le wormhole code est à usage unique et n’a pas besoin d’être mémorisé

Architecture serveur

Documentation et présentations

Licence, compatibilité et installation

  • Magic Wormhole est distribué sous licence MIT ; les détails se trouvent dans le fichier LICENSE
  • La bibliothèque est compatible avec Python 3.10 et versions ultérieures, et testée jusqu’à la version 3.12
  • Le package Magic Wormhole est inclus dans plusieurs systèmes d’exploitation
  • Pour l’installer sans package de l’OS, suivez la documentation d’installation

1 commentaires

 
GN⁺ 2024-08-18
Avis Hacker News
  • J’utilise ça depuis des années pour déplacer des gros fichiers entre des systèmes dans des environnements réseau bizarres, et ça marche presque toujours sans problème
    Comme test un peu plus particulier, j’ai lancé mon propre relais Magic Wormhole, ce qui m’a permis d’ajuster les choses pour rendre les copies de très gros fichiers plus rapides et plus fiables
    Je déteste toujours Google Drive parce qu’il s’effondre bien trop souvent dès qu’on lui balance des fichiers de plusieurs dizaines de Go
    https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...

    • Le fait que ce genre d’outils n’évolue pas est assez critique. Il y a eu beaucoup d’activité autour de PAKE il y a environ 6 ans, mais il manque toujours un hole punching fiable pour une utilisation sans serveur relais lent, ainsi que plusieurs flux TCP simultanés ou un protocole UDP soigneusement conçu pour envoyer rapidement de gros volumes de données sur des liaisons longues à haute bande passante
      La dernière fois que j’ai essayé d’envoyer un gros volume de données avec Wormhole, j’étais limité à 20 MB/s à cause du produit bande passante-latence, et j’ai fini par utiliser du HTTP classique avec aria2c et plusieurs flux pour saturer une ligne à 1 Gbps
      Je ne vois aucune raison pour que des outils basés sur PAKE ne puissent pas remplacer totalement, pour les transferts longue distance et volumineux, des outils propriétaires inutilement complexes comme Globus, mais en pratique on est restés bloqués dans le passé
    • Je m’attendais à ce que le serveur relais ne soit utilisé que pour le handshake initial afin de traverser le NAT, puis que le transfert se fasse en P2P
      J’imagine que les données ne passent réellement par le relais que lorsqu’il y a certaines restrictions réseau, donc sinon je me demande comment ils absorbent les coûts d’exploitation d’un relais gratuit
    • J’utilise une combinaison de scp, LocalSend, magic wormhole et sharedrop.io, et quand je suis pressé j’utilise aussi parfois python -m http.server pour des téléchargements locaux
      C’est dommage que cette BD xkcd soit encore d’actualité exactement comme en 2011 : https://xkcd.com/949/
  • C’est l’un de ces utilitaires à fonction unique qui fait une chose extrêmement bien, mais qui est tellement fiable et discret qu’il passe complètement inaperçu
    Ça me donne envie d’être plus reconnaissant envers ce genre de créations formidables

  • J’utilise croc, un projet similaire avec de bonnes fonctionnalités : https://github.com/schollz/croc

  • J’ai déjà transféré un fichier de 70 Go avec wormhole. C’était le genre de chose qui aurait été impossible avant
    Je savais que j’utilisais de la bande passante du serveur relais, donc j’ai immédiatement fait un don à Debian. Je croyais que Debian gérait le relais de la version empaquetée pour apt

    • Auteur de Magic Wormhole ici. C’est moi qui exploite le serveur relais, mais le mainteneur Debian a accepté d’inclure un nom d’hôte alternatif dans la version empaquetée
      C’est un CNAME qui pointe vers le même endroit que l’adresse utilisée par le code git amont, afin de pouvoir le changer facilement si le coût devenait un problème
      Jusqu’à présent ce n’a pas posé de souci, et même si on transfère environ 10 à 15 To par mois, ça partage de toute façon le même pool de bande passante que d’autres serveurs que je loue, donc je n’ai payé des frais de dépassement qu’une seule fois
      Honnêtement, même si quelqu’un me faisait un don, je pense que je l’enverrais simplement à Debian
      De temps en temps, quand quelqu’un fait passer un demi-téraoctet, je me dis qu’il faudrait migrer vers un fournisseur plus lent mais au forfait, ou mettre en place un meilleur code de limitation de débit, ou enfin implémenter une extension du protocole pour que le client annonce à l’avance le volume de données à transférer et que le serveur puisse refuser
      Mais ça n’a encore jamais été assez prioritaire
    • Il a fallu descendre jusque-là pour commencer à voir un peu le fond du sujet. Je me demande si ça dépend d’un seul serveur ou d’un petit nombre de serveurs relais financés par des dons
      Il est clair que la principale motivation, c’est de traverser du NAT à NAT. Sans barrière des deux côtés, on utiliserait simplement scp, rsync ou sftp
      Je me demande aussi si on peut configurer le serveur relais. Ça avait l’air assez codé en dur
    • Le protocole de transfert wormhole essaie d’établir une connexion directe pour éviter de faire transiter les données par le relais
  • Je suis aussi tombé là-dessus par hasard. « Implémentation en Rust de Magic Wormhole avec nouvelles fonctionnalités et améliorations » : https://github.com/magic-wormhole/magic-wormhole.rs

    • Il manque quelques fonctionnalités présentes dans d’autres implémentations. Par exemple, il n’y a pas de fonction pour envoyer un zip et l’extraire correctement
  • Auteur ici. Je peux répondre aux questions si vous en avez

    • J’utilise beaucoup wormhole, mais comme je remets toujours à plus tard le fait de vérifier si c’est aussi sûr que ssh/scp, je chiffre avec gpg les fichiers à transférer avant de les passer à wormhole
      C’est de la parano ?
    • Au départ, j’en avais seulement besoin pour bootstrapper une VM sur une nouvelle machine, mais j’ai fini par l’utiliser pour toutes sortes d’usages. Excellent projet
    • J’ai quelques questions. Je me demande s’il existe une appli, et s’il est possible de partager le mot de passe via un QR code quand les données sont trop volumineuses pour tenir dans le QR code lui-même
      Je me demande aussi quelle est la stratégie face à l’informatique quantique, et s’il est prévu de passer à une crypto résistante au quantique pour se prémunir contre les attaques de type stocker maintenant, déchiffrer plus tard
      J’aimerais également savoir si le protocole peut être étendu pour fonctionner au-dessus de proxys plus génériques comme des serveurs TURN
  • Il existe aussi quelques autres outils
    p2pcopy https://github.com/psantosl/p2pcopy
    pcp https://github.com/dennis-tra/pcp
    wormhole-william https://github.com/psanford/wormhole-william

  • C’est peut-être une question idiote, mais pour entre un iPhone et un MacBook, quelle est la meilleure façon de faire ?
    AirDrop est désactivé pour des raisons de politique interne, le stockage iCloud est plein parce que j’ai eu la flemme de le vider, et j’utilise Syncthing sur tous mes autres appareils, mais je n’ai pas trouvé de client utilisable sur l’iPhone pro fourni par l’entreprise

    • J’utilise sharedrop.io, c’est open source et ça fonctionne plutôt bien : https://github.com/szimek/sharedrop
      J’aime particulièrement le fait qu’il n’y ait besoin d’installer aucune appli tierce sur aucun appareil
      Sur Safari sur Mac, ça semble généralement moins bien marcher que sur Chrome, mais j’ai déjà transféré sans installation de Windows vers iOS, de Windows vers macOS, et de macOS vers iOS
    • S’ils sont sur le même réseau, il y a LocalSend, une alternative à AirDrop open source et multiplateforme : https://github.com/localsend/localsend
    • Il y a TailDrop, la fonctionnalité phare de Tailscale. Ça permet de transférer des fichiers de façon fiable entre toutes sortes d’appareils
    • Il suffit de connecter les deux appareils au même réseau Wi‑Fi et d’utiliser un serveur HTTP comme python -m http.server
    • https://mobiussync.com/
  • Article lié : Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - mai 2021, 178 commentaires

  • Tailscale a désormais aussi Taildrop : https://tailscale.com/kb/1106/taildrop

    • Taildrop est bien aussi, mais si l’outil en ligne de commande ne te dérange pas, Wormhole est bien plus flexible et plus simple à utiliser
      Ici, on utilise Tailscale de manière générale, mais on continue quand même à envoyer souvent des fichiers avec wormhole