4 poin oleh GN⁺ 2024-08-18 | 1 komentar | Bagikan ke WhatsApp
  • Magic Wormhole menyediakan library dan alat command-line wormhole untuk memindahkan file berukuran berapa pun, direktori, dan teks pendek secara aman dari satu komputer ke komputer lain
  • Kedua ujung transfer diidentifikasi dengan wormhole code yang sama; umumnya perangkat pengirim membuat dan menampilkan kode, lalu kode tersebut dimasukkan di perangkat penerima
  • Kode menggunakan daftar kata yang singkat dan mudah diucapkan manusia; sisi penerima menyediakan autocomplete dengan tombol Tab untuk kata-kata kode, sehingga biasanya cukup memasukkan beberapa huruf saja
  • wormhole code bersifat sekali pakai, tidak perlu dihafal, dan program ini menggunakan dua server dari repositori terpisah: mailbox server dan transit relay
  • Magic Wormhole didistribusikan dengan lisensi MIT, kompatibel dengan Python 3.10 atau lebih baru, dan telah diuji hingga 3.12

Fitur yang disediakan Magic Wormhole

  • Magic Wormhole adalah proyek yang bertujuan untuk “mengambil sesuatu secara aman dari satu komputer ke komputer lain”
  • Paket ini menyediakan dua bentuk
    • Library

      • Alat command-line bernama wormhole
      • Target transfer mencakup hal-hal berikut
      • File berukuran berapa pun
      • Direktori
      • Potongan teks pendek

Metode transfer berbasis wormhole code

  • Dua endpoint diidentifikasi menggunakan wormhole code yang sama
  • Alur umumnya adalah sebagai berikut
    • Perangkat pengirim membuat kode dan menampilkannya di layar
    • Kode tersebut dimasukkan di perangkat penerima
  • Kode bersifat singkat, mudah diucapkan manusia, dan menggunakan daftar kata yang dapat dibedakan secara fonetik
  • Sisi penerima menyediakan autocomplete dengan tombol Tab untuk kata-kata kode, sehingga biasanya cukup memasukkan beberapa huruf saja
  • wormhole code bersifat sekali pakai dan tidak perlu dihafal

Konfigurasi server

Dokumentasi dan materi presentasi

Lisensi, kompatibilitas, dan instalasi

  • Magic Wormhole didistribusikan dengan lisensi MIT; detailnya ada di file LICENSE
  • Library ini kompatibel dengan Python 3.10 atau lebih baru dan telah diuji hingga 3.12
  • Paket Magic Wormhole tersedia di beberapa sistem operasi
  • Untuk instalasi tanpa paket OS, ikuti Installation docs

1 komentar

 
GN⁺ 2024-08-18
Opini Hacker News
  • Saya sudah memakainya selama beberapa tahun untuk memindahkan file berukuran besar antar-sistem di lingkungan jaringan yang aneh, dan hampir selalu bekerja tanpa masalah
    Untuk pengujian yang sedikit lebih tidak biasa, saya pernah menjalankan relay Magic Wormhole sendiri, lalu menyetelnya agar penyalinan file yang sangat besar jadi lebih cepat dan stabil
    Saya masih tidak suka Google Drive karena terlalu sering ambruk kalau dilempari file puluhan GB
    https://www.jeffgeerling.com/blog/2023/my-own-magic-wormhole...

    • Cukup fatal bahwa alat-alat seperti ini tidak berkembang. Sekitar 6 tahun lalu ada banyak aktivitas di sekitar PAKE, tetapi kita masih kekurangan hole punching yang stabil agar bisa dipakai tanpa server relay yang lambat, serta beberapa stream TCP serentak atau protokol UDP yang dirancang dengan hati-hati untuk mengirim data dalam jumlah besar dengan cepat pada jalur panjang ber-bandwidth tinggi
      Terakhir kali saya mencoba mengirim data besar dengan Wormhole, saya dibatasi 20MB/s karena bandwidth-delay product, dan akhirnya memakai HTTP biasa dengan aria2c dan multi-stream untuk memenuhi koneksi 1Gbps
      Menurut saya tidak ada alasan alat berbasis PAKE tidak bisa sepenuhnya menggantikan alat proprietary yang terlalu rumit seperti Globus untuk transfer jarak jauh berukuran besar, tetapi kenyataannya masih tertinggal di masa lalu
    • Saya mengira server relay hanya dipakai untuk handshake awal guna menembus NAT, lalu transfer setelahnya berjalan P2P
      Data sebenarnya seharusnya lewat relay hanya jika ada pembatasan jaringan tertentu; kalau tidak begitu, saya penasaran bagaimana biaya menjalankan relay gratis bisa ditanggung
    • Saya memakai kombinasi scp, LocalSend, magic wormhole, sharedrop.io, dan kadang juga python -m http.server untuk unduhan lokal saat mendesak
      Sayang sekali komik xkcd ini masih sama relevannya seperti pada 2011: https://xkcd.com/949/
  • Ini salah satu utilitas satu fungsi yang melakukan satu hal dengan sangat baik; saking baiknya bekerja dan tidak mencolok, ia sama sekali tidak terlihat
    Saya merasa harus lebih mengapresiasi karya-karya hebat seperti ini

  • Saya memakai croc, proyek serupa dengan fitur yang bagus: https://github.com/schollz/croc

  • Saya pernah memindahkan file 70GB dengan wormhole. Dulu itu sesuatu yang mustahil saya lakukan
    Saya tahu itu memakai bandwidth server relay, jadi saya langsung berdonasi ke Debian. Setahu saya Debian menjalankan relay untuk versi paket apt

    • Saya pembuat Magic Wormhole. Server relay memang saya yang menjalankannya, tetapi maintainer Debian setuju memasukkan hostname alternatif di versi paket
      Itu CNAME yang mengarah ke tempat yang sama dengan alamat yang dipakai kode git upstream, tujuannya agar mudah diganti jika biaya menjadi beban
      Sejauh ini belum menjadi masalah; tiap bulan sekitar 10–15TB dipindahkan, tetapi karena berbagi pool bandwidth dengan server-server lain yang memang saya sewa, saya baru sekali membayar biaya kelebihan pemakaian
      Kalaupun ada yang berdonasi kepada saya, sejujurnya mungkin akan langsung saya teruskan ke Debian
      Sesekali ketika seseorang mengalirkan setengah terabyte, saya berpikir harus memindahkannya ke penyedia yang lebih lambat tetapi flat-rate, atau mengimplementasikan kode pembatasan kecepatan yang lebih baik, atau akhirnya mengimplementasikan ekstensi protokol agar klien menyatakan terlebih dahulu berapa banyak data yang akan ditransfer dan server bisa menolaknya
      Namun sejauh ini prioritasnya belum pernah cukup tinggi
    • Baru sampai di sini inti masalahnya mulai sedikit terlihat. Saya penasaran apakah ini bergantung pada satu server atau sejumlah kecil server relay berbasis donasi
      Jelas motivasi terbesarnya adalah traversal NAT-ke-NAT. Kalau kedua sisi tidak punya penghalang, tinggal pakai scp, rsync, atau sftp
      Saya juga penasaran apakah server relay bisa dikonfigurasi. Kelihatannya agak di-hardcode
    • Protokol transfer wormhole mencoba membuat koneksi langsung agar dapat menghindari pengiriman data melalui relay
  • Saya juga kebetulan menemukan ini. “Implementasi Rust dari Magic Wormhole dengan fitur dan peningkatan baru”: https://github.com/magic-wormhole/magic-wormhole.rs

    • Ada beberapa fitur dari implementasi lain yang belum ada. Misalnya tidak ada fitur untuk mengirim zip dan mengekstraknya dengan benar
  • Saya pembuatnya. Kalau ada pertanyaan, saya bisa menjawab

    • Saya sering memakai wormhole, tetapi selama ini menunda mencari tahu apakah keamanannya setara ssh/scp, jadi saya selalu mengenkripsi dengan gpg file yang akan dikirim sebelum memasukkannya ke wormhole
      Apakah ini perilaku paranoid?
    • Awalnya saya hanya membutuhkannya untuk bootstrap VM di mesin baru, tetapi akhirnya terus memakainya untuk banyak keperluan. Proyek yang luar biasa
    • Saya punya beberapa pertanyaan. Saya penasaran apakah ada aplikasi, dan apakah kata sandi bisa dibagikan lewat kode QR ketika datanya terlalu besar untuk dimasukkan ke kode QR
      Saya juga penasaran bagaimana rencananya menghadapi komputasi kuantum, dan apakah ada rencana beralih ke kriptografi tahan-kuantum untuk menghadapi serangan simpan-sekarang-dekripsi-nanti
      Saya juga ingin tahu apakah protokolnya bisa diperluas di atas proxy yang lebih umum seperti server TURN
  • Ada juga beberapa alat lain
    p2pcopy https://github.com/psantosl/p2pcopy
    pcp https://github.com/dennis-tra/pcp
    wormhole-william https://github.com/psanford/wormhole-william

  • Mungkin ini pertanyaan bodoh, tapi sebaiknya bagaimana melakukan ini antara iPhone dan MacBook?
    AirDrop dinonaktifkan karena kebijakan, penyimpanan iCloud penuh karena saya malas mengurusnya, dan di semua perangkat lain saya memakai Syncthing, tetapi saya tidak menemukan klien yang bisa dipakai di iPhone kantor

    • Saya memakai sharedrop.io; ini juga open source dan bekerja cukup baik: https://github.com/szimek/sharedrop
      Saya terutama suka karena tidak perlu memasang aplikasi pihak ketiga di perangkat mana pun
      Di Safari pada Mac biasanya tampaknya tidak sebaik Chrome, tetapi saya pernah mentransfer tanpa instalasi dari Windows ke iOS, Windows ke macOS, dan macOS ke iOS
    • Jika berada di jaringan yang sama, ada LocalSend, alternatif AirDrop open source lintas platform: https://github.com/localsend/localsend
    • Ada TailDrop, fitur andalan Tailscale. Bisa mentransfer file dengan andal di antara berbagai macam perangkat
    • Hubungkan kedua perangkat ke jaringan WiFi yang sama lalu gunakan server HTTP seperti python -m http.server
    • https://mobiussync.com/
  • Artikel terkait: Magic Wormhole: Get things from one computer to another, safely - https://news.ycombinator.com/item?id=27262193 - Mei 2021, 178 komentar

  • Tailscale sekarang juga punya Taildrop: https://tailscale.com/kb/1106/taildrop

    • Taildrop juga oke, tetapi kalau tidak masalah memakai alat baris perintah, Wormhole jauh lebih fleksibel dan mudah dipakai
      Di sini kami menggunakan Tailscale secara umum, tetapi masih sering mengirim file dengan wormhole