magic-wormhole: نقل ملفات آمن برمز لمرة واحدة

magic-wormhole: نقل ملفات آمن برمز لمرة واحدة

4 min read
Network

مرحبا بالجميع،

اليوم أريد أن أشارككم أداة صغيرة سطر أوامر أعود إليها كثيرا في حالات الدعم والحوادث: magic-wormhole. هي تحل مشكلة تتكرر في الشركات العادية أكثر من أي قصة “Enterprise” لامعة: تحتاج إلى إيصال ملف (أو مجلد) إلى شخص الآن، لكن البريد الإلكتروني لا يسمح بالحجم، ورابط التخزين السحابي قد يكون حساسا سياسيا أو قانونيا، و"افتحوا منفذا لدقائق" ليس خيارا.

الجمعة، 16:47. شركة فيها حوالي 60 موظفا لديها مشكلة عاجلة: خادم الملفات المركزي بطيء، والمستخدمون يشتكون من timeouts، ومزود IT خارجي يطلب حزمة دعم تحتوي على سجلات (logs) وتصدير إعدادات بسيط. الحزمة تقارب 900 ميغابايت. البريد الإلكتروني يرفضها، وSharePoint ممنوع لأسباب امتثال، وإنشاء FTP عشوائي هو كابوس لا تريد أن تصنعه في 2026.

هنا يأتي دور magic-wormhole: تتبادلون رمزا لمرة واحدة، تنقلون الملف بتشفير طرف لطرف، وانتهى الأمر.

ما هو magic-wormhole؟

magic-wormhole أداة خفيفة لعمليات نقل ad-hoc بين جهازين. الفكرة هي “رمز النفق” (wormhole code) مثل 7-coral-lion: الطرفان يدخلان نفس الرمز، وبذلك يتم إنشاء اتصال مشفّر طرفا لطرف.

المهم هو ما الذي لا يحتاجه magic-wormhole:

  • لا حسابات
  • لا بوابة تسجيل دخول
  • لا “ارفع الملف في مكان ما ثم شارك الرابط”
  • لا قواعد firewall inbound

كل طرف يحتاج فقط تثبيت wormhole واتصال إنترنت صادر. عمليا: إذا كان خروج HTTP(S) يعمل، فغالبا magic-wormhole سيعمل أيضا.

حالة واقعية في شركة صغيرة/متوسطة

نعود إلى سيناريو الجمعة. التدفق العملي غالبا يكون هكذا:

  1. إنشاء حزمة دعم (logs، تصدير، بعض لقطات الشاشة).
  2. اختياريا: حساب hash حتى تتأكد لاحقا أن نفس الحزمة وصلت كما هي.
  3. إرسال الحزمة عبر magic-wormhole.
  4. مشاركة الرمز عبر قناة ثانية (اتصال هاتفي، دردشة منفصلة، أو إملاء الرمز).

على جانب المرسل:

tar -czf support-bundle.tgz ./logs ./config-export
sha256sum support-bundle.tgz
wormhole send support-bundle.tgz

سيعرض magic-wormhole الرمز. المستقبل يشغل:

wormhole receive

تدخل الرمز، يبدأ التحميل، ثم تقارن الـ hashes. في الواقع، هذا المزيج بين “سريع” و"مع ذلك نظيف" مفيد جدا لكثير من الشركات الصغيرة والمتوسطة.

كيف أستخدمه عمليا

إرسال ملف من A إلى B

المرسل:

wormhole send /path/to/file.zip

المستقبل:

wormhole receive

سيتم حفظ الملف في المجلد الحالي. أنا غالبا أنشئ مجلدا سريعا حتى لا يضيع شيء بين Downloads وDesktop:

mkdir -p ~/wormhole-recv && cd ~/wormhole-recv
wormhole receive

إرسال مجلدات

إذا كنت تحتاج إرسال مجلد كامل:

wormhole send --dir ./support-bundle/

ماذا يحدث خلف الكواليس (باختصار وبدون تسويق)

تحت الغطاء، magic-wormhole يقوم بثلاثة أشياء كنت ستبنيها يدويا: توصيل الطرفين ببعضهما، توليد مفاتيح بأمان، ونقل البيانات بشكل موثوق حتى عندما يزعجك NAT وfirewall.

الخطوةماذا يحدثلماذا هذا مهم
1. الرمزالمرسل يولد رمزا قصيرا لمرة واحدة.سر مشترك بسيط لهذا النقل.
2. Rendezvousالطرفان يتصلان بخادم rendezvous (افتراضيا “mailbox” العامة).العثور على بعضهما بدون فتح منافذ دخول.
3. PAKEاشتقاق مفتاح مشترك من الرمز عبر SPAKE2 (PAKE).مفتاح E2E بدون إدارة مفاتيح تقليدية.
4. مسار البياناتمحاولة اتصال مباشر أولا، ثم fallback عبر relay/transit إذا فشل.يعمل خلف NAT وفي شبكات الشركات المعتادة.
5. نقل E2Eالبيانات مشفرة ومحميّة من التلاعب طرفا لطرف.الـ relay يرى ciphertext فقط.

الخلاصة: rendezvous/relay مجرد بنية تحتية، لكنه ليس المكان الذي تكون فيه بياناتك مكشوفة.

الأمان: نقاط القوة والحدود وبعض القواعد

ما يعجبني في magic-wormhole أن نموذج الأمان صريح: يوجد تشفير طرف لطرف، لكن الهوية ليست جزءا تلقائيا من النظام.

ما الذي تحصل عليه

  • تشفير طرف لطرف: المحتوى محمي بين المرسل والمستقبل حتى مع وجود relay.
  • صلاحية قصيرة: الرمز مخصص لنقل واحد، وليس كلمة مرور طويلة.
  • سطح هجوم صغير: لا خادم عليك تحصينه، لا إدارة مستخدمين، ولا واجهة ويب.

أين يجب الانتباه

  • الرمز هو كلمة المرور. من يمتلك الرمز هو “الطرف الآخر”. إذا ظهر الرمز في تذكرة عامة، فهذه مشكلة.
  • لا Audit افتراضي. في بعض البيئات هذا ميزة، وفي أخرى عائق. إذا كنت تحتاج DLP وموافقات وتتبع، استخدم قناة رسمية.
  • الأجهزة الطرفية هي الحقيقة. إذا كان المرسل مخترقا يمكنه إرسال أي شيء. وإذا كان المستقبل مخترقا فالملف يصبح معرضا بعد الاستلام.

قواعد عملية (تفيد فعلا)

  1. لا تشارك الرمز في نفس القناة التي فيها رابط التذكرة أو سياق الملف. الأفضل: مكالمة أو دردشة خاصة منفصلة.
  2. افترض أن logs قد تحتوي على tokens أو أسماء أجهزة أو بيانات شخصية. أرسل فقط ما يلزم.
  3. للملفات الحساسة: شارك hash عبر قناة ثانية وتحقق بعد الاستلام.

التثبيت (مختصر وعملي)

في أنظمة كثيرة يكفي أمر واحد عبر مدير الحزم:

  • Debian/Ubuntu: sudo apt install magic-wormhole
  • macOS: brew install magic-wormhole

إذا كانت حزم التوزيعة قديمة، فـ pipx غالبا خيار نظيف:

pipx install magic-wormhole
pipx ensurepath

وإذا كنت لا تريد Python أبدا (خادم minimal، container، rescue environment): wormhole-william نسخة Go متوافقة كملف تنفيذي واحد.

الأتمتة والاستضافة الذاتية

لإجراءات مضبوطة يمكن تشغيل magic-wormhole بشكل غير تفاعلي:

CODE="5-alpaca-orbit"
wormhole send --code "$CODE" /path/to/db.dump

المستقبل:

wormhole receive --code "$CODE" --accept-file

هذا مفيد، لكن بمجرد تثبيت رمز ثابت ستعود إلى إدارة الأسرار. إذا أتمت الأمر، فليكن مع إدارة أسرار صحيحة ومدة قصيرة.

وإذا أردت تحكمًا كاملا في rendezvous/relay، يمكنك توجيه العميل إلى بنية تحتية خاصة بك، مثل:

  • --relay-url لخادم rendezvous الخاص بك
  • --transit-helper لـ transit relay خاص بك

الخلاصة

magic-wormhole لا يستبدل قنوات النقل المُدارة بسياسات واضحة. لكنه كأداة يومية ممتاز: سريع، قليل الاحتكاك، وبنموذج أمان واضح.

خصوصا في عالم الشركات الصغيرة والمتوسطة، حيث لا يوجد وقت ولا رغبة لبدء سلسلة موافقات لكل طلب دعم، أداة “آمنة بما يكفي وجاهزة فورًا” غالبا هي ما تحتاجه.

مصادر وروابط إضافية

حتى المرة القادمة، جو

© 2026 trueNetLab