Skip to content

NIP-17: الرسائل الخاصة المباشرة - دليل شامل

تعرف على NIP-17، البديل الآمن لـ NIP-04، وكيفية ترحيل رسائلك الخاصة في Nostr

متقدم Last updated

NIP-17 يمثل ترقية أمنية كبيرة في كيفية عمل الرسائل الخاصة في Nostr. يشرح هذا الدليل لماذا يجب أن تهتم بهذا التحسين في البروتوكول، وكيفية الترحيل من معيار NIP-04 القديم، والخطوات العملية لتأمين اتصالاتك.

ما هو NIP-17؟

NIP-17 هو مواصفة بروتوكول Nostr التي تحدد الرسائل الخاصة المباشرة باستخدام نظام تشفير مزدوج الطبقات يسمى “seal + gift wrap”. تم إنشاؤه لمعالجة عيوب الأمان الأساسية في طريقة تشفير NIP-04 السابقة.

على عكس NIP-04، الذي استخدم طبقة واحدة من تشفير AES-256-CBC، يستخدم NIP-17:

  1. Seal (نوع الحدث 13) — الطبقة الداخلية التي تشفّر الرسالة وتخفي أي مفتاح وقّعها
  2. Gift wrap (نوع الحدث 1059) — المظروف الخارجي الموقّع بمفتاح مؤقّت يُرمى بعد الاستخدام، فلا تظهر هويتك الحقيقية أبدًا على الحدث الذي تخزّنه الـ relays

وهذا التقسيم إلى طبقتين يعني:

  • بقاء محتوى الرسالة خاصًا
  • لا تستطيع الـ relays معرفة من أرسل الرسالة — فالـ gift wrap موقَّع بمفتاح عشوائي يُستخدم مرة واحدة، لا بمفتاحك أنت
  • الطوابع الزمنية عشوائية، مما يجعل ربط توقيت الرسائل ببعضها أصعب

لماذا يهم NIP-17: مشكلة أمان NIP-04

كان NIP-04 هو بروتوكول الرسائل المباشرة الأصلي لـ Nostr، لكنه يحتوي على العديد من مشاكل الأمان الحرجة التي تجعله غير مناسب للاتصال الخاص الحقيقي.

المقارنة: NIP-04 مقابل NIP-17

الميزةNIP-04NIP-17
التشفيرطبقة واحدة AES-256-CBCمزدوج الطبقات (seal + gift wrap)
بيانات المرسل الوصفيةمرئية للـ relaysمخفية — موقَّعة بمفتاح يُستخدم مرة واحدة
بيانات المستلم الوصفيةمرئية للـ relaysلا تزال مرئية — وسم p غير مشفّر
محتوى الرسالةمشفرمشفر
حماية Replayلا يوجدطوابع زمنية عشوائية
Forward Secrecyلالا — NIP-44 لا يوفّرها
حالة الأمانمهملموصى به
التوافقيةمدعوم على نطاق واسعدعم متزايد

المشكلة الأساسية في NIP-04

تكشف رسائل NIP-04 عن من يتحدث مع من لكل relay يخزّنها. (لا يوجد في Nostr أي بلوكتشين — الأحداث تبقى ببساطة على الـ relays، ويستطيع أي شخص القراءة من أي relay.) وبينما يكون جسم الرسالة مشفرًا، يحتوي المظروف على:

# بنية حدث NIP-04 (مبسطة)
{
  "pubkey": "<sender_public_key>",      # يمكن لأي شخص رؤية من أرسل هذا
  "tags": [["p", "<recipient_pubkey>"]], # يمكن لأي شخص رؤية من استلمه
  "content": "<encrypted_content>"       # فقط المحتوى مخفي
}

وهذا يعني أن مشغلي الـ relay، ومراقبي الشبكة، وجامعي البيانات يمكنهم:

  • بناء رسوم اجتماعية تُظهر من يتواصل مع من
  • تتبع أنماط وترددات الاتصال
  • استنتاج العلاقات من توقيت الرسائل

يحل NIP-17 هذه المشكلة عن طريق تغليف بنية الرسالة بأكملها في طبقة تشفير إضافية، مما يجعل من المستحيل رؤية معلومات المرسل أو المستلم دون مفتاح فك التشفير.

كيف يعمل NIP-17: Seal + Gift Wrap

فهم التنفيذ التقني يساعد على تقدير تحسينات الأمان.

طبقة Gift Wrap (الخارجية)

Gift wrap هو المظروف الخارجي الذي يخفي جميع البيانات الوصفية. يتم تشفيره لمفتاح “gift wrap” خاص مشتق من مفتاح المستلم العام. تحتوي هذه الطبقة على:

  • مفتاح عام عشوائي (غير مرتبط بالمرسل الحقيقي)
  • المفتاح العام للمستلم
  • طابع زمني
  • الرسالة الداخلية المختومة (sealed)

طبقة Seal (الداخلية)

داخل gift wrap يوجد seal، الذي يحتوي على الرسالة الفعلية. هذه الطبقة:

  • مشفرة باستخدام زوج مفاتيح ephemeral جديد
  • تحتوي على المفتاح العام الحقيقي للمرسل
  • تتضمن محتوى الرسالة
  • لديها طابع زمني خاص لحماية replay

Gift wrap (الطبقة الخارجية)

مفتاح عام عشوائي، تلميح المستلم — هذا كل ما يراه الـ relay

Seal (الطبقة الداخلية)

مشفَّرة بمفتاح ephemeral

محتوى الرسالة الفعلي

المرسل: المفتاح العام الحقيقي · الطابع الزمني: 1234567890

كل طبقة تخفي ما بداخلها، فلا يعرف الـ relay سوى تلميح المستلم.

الفوائد الرئيسية

  1. خصوصية المرسِل: لا يستطيع أحد غير المستلم تحديد من أرسل الرسالة. أما المستلم نفسه فيظهر اسمه في وسم p غير مشفّر لا بدّ أن تقرأه الـ relays.
  2. عدم القابلية للربط: كل رسالة موقَّعة بمفتاح جديد يُستخدم مرة واحدة، فلا يبدو للمراقب أن الرسائل الصادرة من المرسل نفسه تنتمي إلى بعضها.
  3. لا توجد Forward Secrecy: يشتقّ NIP-44 مفتاح المحادثة من مفتاحين ثابتين، لذا فإن مهاجمًا يحصل لاحقًا على مفتاح nsec الخاص بك يستطيع فك تشفير كل رسالة كان قد حفظها. المفاتيح ذات الاستخدام الواحد تخفي من أرسل الرسالة، لكنها لا تحمي الرسائل السابقة. احذف المحادثات القديمة إن كان هذا يهمّك.

التسليم: قائمة relays الرسائل المباشرة (النوع 10050)

يصف الـ seal والـ gift wrap كيفية تغليف الرسالة. أما القطعة الثالثة — حدث من النوع 10050 — فتصف إلى أين تُسلَّم. وهي قائمة صغيرة وعامة بالـ relays التي تقبل رسائلك الخاصة.

المواصفة صارمة في هذا: يجب على المرسلين نشر الـ gift wraps فقط إلى الـ relays المدرجة في قائمة النوع 10050 الخاصة بالمستلم. وإذا لم تنشر واحدة قط، تعاملك المواصفة على أنك «غير جاهز لاستقبال الرسائل» ولا ينبغي للعملاء حتى المحاولة — فتسقط الرسائل المباشرة الموجهة إليك بصمت ولا تُسلَّم أبدًا، دون أي خطأ في أيٍّ من الطرفين.

قاعدتان عمليتان:

  • انشر قائمتك قبل أن تتوقع أي رسائل NIP-17 (انظر الخطوة 3 من دليل الترحيل أدناه)
  • أبقِها صغيرة — توصي المواصفة بـ 1-3 relays، وكل relay تدرجه في القائمة يرى من يراسلك

دليل الترحيل: الانتقال من NIP-04 إلى NIP-17

الترحيل إلى NIP-17 سهل مع عملاء Nostr الحديثين. إليك كيفية إجراء التبديل.

الخطوة 1: التحقق من دعم العميل

قبل الترحيل، تحقق من أن عميلك يدعم NIP-17:

العميلدعم NIP-17الحالة
Damusنعمافتراضي للـ DMs الجديدة
Amethystنعمافتراضي للـ DMs الجديدة
Primalنعممدعوم
Coracleنعممدعوم
Irisنعممدعوم
Snortنعممدعوم
Nosنعممدعوم

الخطوة 2: تمكين NIP-17 في عميلك

Damus (iOS/macOS)

  1. افتح الإعدادات → Privacy & Security
  2. انتقل إلى “Message Encryption”
  3. شغل “Use NIP-17 for new messages” على ON
  4. ستستخدم رسائلك المباشرة الجديدة NIP-17 تلقائيًا

ملاحظة: تظل رسائل NIP-04 القديمة قابلة للقراءة لكن الرسائل الجديدة تستخدم NIP-17.

Amethyst (Android)

  1. اذهب إلى الإعدادات → Messages
  2. شغل “Use NIP-17 for DMs”
  3. أعد تشغيل التطبيق للتأثير الكامل

Primal (iOS/Android/Web)

  1. انتقل إلى الإعدادات → Privacy
  2. تحت “Direct Messages”، اختر “NIP-17 (Recommended)”
  3. يتم تطبيق التغييرات فورًا على المحادثات الجديدة

الخطوة 3: انشر قائمة relays الرسائل المباشرة (النوع 10050)

لا يسلّم مرسلو NIP-17 إلا إلى الـ relays التي تدرجها في حدث النوع 10050 الخاص بك — وبدونه تسقط الرسائل الموجهة إليك بصمت (انظر قسم «التسليم: قائمة relays الرسائل المباشرة» أعلاه).

  1. ابحث في عميلك عن إعداد relays الرسائل المباشرة أو الرسائل الخاصة
  2. أضف من relay واحد إلى ثلاثة relays تقبل الـ gift wraps (النوع 1059) — فبعض الـ relays ترفضها
  3. احفظ — سينشر عميلك قائمة النوع 10050 نيابة عنك

بعض العملاء ينشرون هذه القائمة تلقائيًا عند تفعيل NIP-17. لا تفترض ذلك: تحقق من التسليم في الخطوة 5 قبل الاعتماد عليه.

الخطوة 4: التواصل مع جهات الاتصال

يعمل NIP-17 فقط إذا كان الطرفان يدعمان NIP-17. أرسل ملاحظة إلى جهات الاتصال المتكررة:

nostr:note1... # قالب رسالة الترحيل

"مرحباً! أنا أقوم بالترقية إلى NIP-17 للحصول على خصوصية أفضل في رسائلنا المباشرة.
يرجى تحديث عميل Nostr إذا لم تكن قد فعلت ذلك بالفعل.
ستكون رسائلنا المستقبلية أكثر أماناً!"

الخطوة 5: التحقق من نجاح الترحيل

للتأكد من أن NIP-17 يعمل:

  1. أرسل رسالة اختبار لنفسك أو لصديق
  2. تحقق من نوع الحدث (يجب أن يكون 1059 لـ gift wraps)
  3. ابحث عن kind: 1059 في تفاصيل الرسالة
  4. يجب أن تشير علامة p إلى مفتاح ephemeral عشوائي، وليس مفتاح صديقك الحقيقي
// مثال حدث NIP-17 (مبسط)
{
  "kind": 1059, // حدث gift wrap
  "pubkey": "<random_ephemeral_key>", // ليس المرسل الحقيقي!
  "tags": [["p", "<recipient_pubkey>"]],
  "content": "<encrypted_seal_content>"
}

أدلة الإعداد الخاصة بالعملاء

Damus

جعل Damus NIP-17 افتراضيًا للرسائل المباشرة الجديدة في الإصدارات الأخيرة. إذا كنت تستخدم إصدارًا أقدم:

  1. قم بالتحديث إلى أحدث إصدار من Damus من App Store
  2. يتم تمكين NIP-17 تلقائيًا للمحادثات الجديدة
  3. تحقق من تفاصيل الرسالة (اضغط مع الاستمرار) لرؤية شارة “NIP-17”

نصيحة احترافية: يظهر Damus أيقونة قفل مع نص “NIP-17” على الرسائل الآمنة.

Amethyst

يدعم Amethyst NIP-17 ولكنه قد يتطلب تمكينًا صريحًا:

  1. الإعدادات → Advanced → Protocol Settings
  2. شغل “NIP-17 gift wrap for DMs”
  3. سيتفاوض العميل تلقائيًا على NIP-17 مع جهات الاتصال المدعومة

ملاحظة: يعود Amethyst بأناقة إلى NIP-04 إذا لم يكن المستلم يدعم NIP-17.

Primal

لدى Primal دعم ممتاز لـ NIP-17:

  1. الإعدادات → Security & Privacy
  2. تحت “Messaging Protocol” اختر “NIP-17 (Private)”
  3. اختياري: شغل “Auto-upgrade NIP-04 conversations” لتحويل المحادثات الموجودة

أفضل ممارسات الأمان

حقق أقصى قدر من خصوصيتك عند استخدام NIP-17:

1. تحقق من دعم العميل قبل الاتصال الحساس

تحقق دائمًا من أن جهة اتصالك تستخدم عميلًا يدعم NIP-17 قبل مشاركة معلومات حساسة. إرسال NIP-17 إلى عميل يدعم NIP-04 فقط سيؤدي إلى رسائل غير قابلة للقراءة.

2. لا تخلط البروتوكولات في نفس المحادثة

تجنب الارتباك باستخدام بروتوكول واحد لكل محادثة. إذا بدأت بـ NIP-04، أكمل بـ NIP-04، أو أشر بوضوح عند التبديل.

3. استخدم مفاتيح جديدة للمحادثات عالية الأمان

للحصول على أقصى قدر من الأمان:

  • أنشئ زوج مفاتيح مخصص للاتصال الحساس
  • شارك المفتاح العام من خلال قناة آمنة خارج النطاق
  • قم بتدوير المفاتيح بشكل دوري

4. كن على دراية بالبيانات الوصفية في أنواع الأحداث الأخرى

يحمي NIP-17 فقط الرسائل المباشرة. لا تزال أنواع الأحداث الأخرى (ملاحظات، تفاعلات، متابعات) تكشف عن بيانات الرسم الاجتماعي. استخدم هويات متعددة للتجزئة.

5. اختر Relays تركز على الخصوصية

حتى مع NIP-17، أنماط حركة المرور الخاصة بك مرئية للـ relays. استخدم:

  • Tor أو VPN للخصوصية الإضافية على مستوى الشبكة
  • Relays التي لا تسجل أو تحتفظ ببيانات الرسائل الوصفية
  • Relays متعددة لتوزيع حركة المرور الخاصة بك

6. فهم القيود

يوفر NIP-17 خصوصية ممتازة لكنه ليس مثاليًا:

  • لا يزال بإمكان الـ relays رؤية عناوين IP (استخدم VPN/Tor)
  • يمكن لتحليل التوقيت كشف أنماط الاتصال
  • يمكن للعملاء المخترقين تسريب المعلومات
  • المستلم دائمًا يرى هوية المرسل

استكشاف الأخطاء وإصلاحها

«رسائلي لا تصل أبدًا» — تحقّق أولًا من قائمة relays الرسائل الخاصة

هذا أكثر أعطال NIP-17 شيوعًا، ونادرًا جدًا ما تكون المشكلة في التشفير.

لا يسلّم مرسلو NIP-17 إلى الـ relays المعتادة لديك، بل يبحثون عن حدث من النوع 10050 — أي قائمتك المنشورة بالـ relays التي تقبل رسائلك المباشرة — ويرسلون الـ gift wrap إليها وحدها. وإذا لم تنشر هذه القائمة قط، فلن يجد عميل المُرسِل جهة للتسليم وتُسقَط الرسالة بصمت، دون أن يظهر شيء في أيٍّ من الواجهتين.

الحل: في عميل يدعم NIP-17، ابحث عن إعداد relays الرسائل الخاصة واحفظ relay واحدًا على الأقل؛ هذا ينشر قائمتك من النوع 10050. واختر relay يقبل فعلًا الـ gift wraps — فبعضها يرفض النوع 1059. (هذه هي الخطوة 3 من دليل الترحيل — إذا كنت قد تخطيتها فابدأ من هناك.)

أبقِ القائمة قصيرة: كل relay تضيفه هو relay يرى من يراسلك.

”تظهر الرسائل غير قابلة للقراءة أو هراء”

السبب: المستلم لا يدعم NIP-17 الحل: اطلب من المستلم تحديث عميله، أو انتقل مؤقتًا إلى NIP-04

”لا يمكن رؤية ما إذا كان شخص ما قرأ رسالتي NIP-17”

السبب: إيصالات القراءة غير موحدة لـ NIP-17 بعد الحل: هذا السلوك المتوقع. يعطي NIP-17 الأولوية للخصوصية على تأكيد التسليم.

”تظهر الرسائل بترتيب غير صحيح”

السبب: اختلاف الساعة بين الأجهزة الحل: تأكد من أن وقت جهازك متزامن (شغل المزامنة التلقائية للوقت)

“يرفض Relay أحداث NIP-17”

السبب: برنامج relay قديم الحل:

  1. تحقق من NIPs المدعومة للـ relay
  2. أضف relays حديثة تدعم NIP-17
  3. أبلغ مشغل relay

”يظهر العميل خيارات NIP-04 و NIP-17”

السلوك المتوقع: يدعم العديد من العملاء كليهما خلال فترة الانتقال. اختر دائمًا NIP-17 عندما يكون متاحًا.

مستقبل الرسائل الخاصة في Nostr

NIP-17 هو المعيار الذهبي الحالي للرسائل الخاصة في Nostr، لكن التطوير مستمر:

  • NIP-44: نظام تشفير محسن قد يحل محل NIP-17
  • تشفير المجموعات: يتم تطوير بروتوكولات الرسائل الخاصة للمجموعات
  • تكامل المدفوعات: رسائل خاصة مع مدفوعات Lightning

ابقَ على اطلاع بمتابعة:

  • nostr:npub1… # تطوير بروتوكول Nostr
  • nostr:npub1… # أفضل ممارسات الأمان

الخلاصة

يمثل NIP-17 خطوة كبيرة إلى الأمام للخصوصية في Nostr. من خلال معالجة مشاكل تسرب البيانات الوصفية في NIP-04، يتيح الرسائل المباشرة الخاصة الحقيقية التي تحمي كل المحتوى وأنماط الاتصال.

عملية الترحيل سهلة: قم بتحديث عميلك، تحقق من أن جهات اتصالك تدعم NIP-17، واستمتع بخصوصية محسّنة. مع توفر الدعم الواسع للعملاء بالفعل، لا يوجد سبب لمواصلة استخدام بروتوكول NIP-04 المهمل.

المهام العملية:

  1. ✅ قم بتحديث عميل Nostr إلى أحدث إصدار
  2. ✅ شغل NIP-17 في الإعدادات
  3. ✅ انشر قائمة relays الرسائل المباشرة (النوع 10050) — بدونها لن يصلك شيء
  4. ✅ تحقق مع جهات الاتصال أنها تدعم NIP-17
  5. ✅ ابدأ في استخدام NIP-17 لجميع المحادثات الخاصة الجديدة

تذكر: الخصوصية هي ممارسة، وليست منتجًا. يمنحك NIP-17 الأدوات - استخدمها بحكمة.


اختبر معرفتك بـ NIP-17

جاهز للتحقق من فهمك للمراسلة الآمنة؟

اختبار الرسائل الخاصة

غرض NIP-17

السؤال 1 من 5

0/5 تمت الإجابة

ما هو NIP-17؟
حرج

آخر تحديث: 28 يوليو 2026

لديك أسئلة؟ انضم إلى النقاش على Nostr أو افتح issue في مستودع التوثيق هذا.


تابع القراءة

حسّن هذه الصفحة

لاحظت خطأً إملائيًا أو شيئًا غير واضح؟ عدّل هذا الدليل على GitHub.

تابعنا على Nostr