Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Galdralag-firmware — محاولة لإطار تشفير لـ Baochip-1x. | Kitploit
أدوات/GitHubGitHub/supermagnum/galdralag-firmware
أمان الأنظمة المدمجةأدوات التشفير/فك التشفيرالتشفيرأمن الأجهزةإدارة الهوية والوصول (IAM)المصادقةتحليل البرامج الثابتة
GitHubsupermagnum/galdralag-firmware

Galdralag-firmware

محاولة لإطار تشفير لـ Baochip-1x.

عرض المستودع
3منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Galdr — برنامج Galdralag الثابت

شبكة الابتكار المفتوح (Open Invention Network)

عضو في شبكة الابتكار المفتوح

هذا المشروع مسجل لدى شبكة الابتكار المفتوح (OIN). OIN هي مجموعة براءات اختراع دفاعية: يقوم الأعضاء بترخيص براءات اختراع متعلقة بلينكس بشكل متبادل بحيث يمكن للمشاركين تشغيل واستخدام البرمجيات مفتوحة المصدر مع تقليل التعرض لبراءات الاختراع.

الحالة: بانتظار وصول الأجهزة للاختبار. https://www.crowdsupply.com/baochip/dabao/updates/our-campaign-has-launched

المحتويات

  • شبكة الابتكار المفتوح
  • ما هذا
    • بيانات اتصال Galdra
    • ما هو هذا البرنامج الثابت (وما ليس هو)
    • البرنامج الثابت الموقّع (Ed25519, boot0)
  • هل هذا هراء ذكاء اصطناعي؟
  • نتائج الاختبار
  • لماذا Rust؟
    • سلامة الذاكرة
    • المتانة على مستوى النظام (مع حدود)
    • حماية المواد الرئيسية (أنماط المشروع)
    • قابل للتدقيق بالتصميم
    • ما لا يمنعه Rust
    • إعداد آلة افتراضية للتقييم
    • تقدير المخاطر والنشر
  • Galdralag للمبتدئين
    • ما هو GnuPG؟
  • مفاتيح GnuPG / OpenPGP ومفاتيح Galdra
    • مقارنة البيانات الوصفية (GnuPG مقابل Galdra)
  • الاختبارات التي تم تخطيها وتجاهلها
  • حول الاسم
  • الوثائق
  • خريطة الكود (فهرس الوظائف والوحدات)
  • تبعيات الحزم (المصادرة مقابل المشروع)
  • تعليمات التصحيح
  • docs/AUDIT_LOG.md
  • docs/BIOMETRIC_API.md
  • docs/HARDWARE_BRINGUP_TEST_PLAN.md
  • docs/KEY_LIFECYCLE.md
  • docs/RRAM_LAYOUT.md
  • docs/THREE_FACTOR_AUTH.md
  • docs/THREAT_MODEL.md
  • مسرد المصطلحات (بلغة بسيطة)
  • توافق OpenPGP و GnuPG
  • جلسة الرمز المميز وتصدير المفتاح
  • شبكة الثقة وحفلات توقيع المفاتيح
    • الحصول على بصمة Galdralag الخاصة بك
    • ما هي شبكة الثقة؟
    • كيف تعمل
    • حفلات توقيع المفاتيح
    • سير العمل النموذجي في حفلة توقيع المفاتيح
    • بصمات الأصابع بدلاً من المفاتيح الكاملة في الحدث
    • خوادم المفاتيح
    • استخدام خوادم المفاتيح
    • خوادم المفاتيح الشائعة
    • أفضل الممارسات والتحذيرات
    • Fulla (خادم سجل WoT)
  • المعايير مقابل ميزات البرامج الثابتة المحددة
  • مشاركة السر Shamir وتشفير القرص
  • بطاقة الهوية الإلكترونية الألمانية و Governikus كمرساة ثقة للمفاتيح العامة
  • عملية المعايير: Shamir وتبادل المفاتيح المؤقتة
    • CESS (المعيار المفتوح ذو الصلة)
  • Sequoia PGP (إذا كان هذا المستودع غير مستجيب)
  • دعم المنصة (لينكس فقط)
  • البناء والتثبيت والإزالة
    • تجميع البرنامج الثابت
    • الوميض
    • تجميع وتثبيت أدوات المضيف (galdra, galdrad, galdra-gtk)
    • تشغيل galdrad وواجهة سطح المكتب الرسومية (galdra-gtk)
    • إزالة أدوات المضيف
  • قدرات المفاتيح
    • ما يجعل هذا الرمز غير عادي
    • القدرات التشفيرية
      • غير متماثل / اتفاق المفاتيح
      • متماثل / AEAD
      • اشتقاق المفاتيح / MAC / الملخص
      • إدارة المفاتيح
    • خصائص الأمان
    • سياسة PIN
  • حالة ما بعد الكم
    • مُنفّذ — حزمة غير مدققة (مُقيد بميزة)
    • بانتظار تدقيق مستقل — لم يُنفّذ بعد
    • لن يتم تنفيذه
  • التصفير — تحذير الأجهزة
  • تخطيط مساحة العمل
  • سياسة التبعيات التشفيرية
  • بداية سريعة
  • القيود المعروفة / الأعمال المفتوحة
    • CCID PIN الأولي: الإعداد عند التشغيل الأول (USB CDC)
  • الترخيص

ما هذا

برنامج ثابت لأجهزة Baochip-1x (لوحة تقييم Dabao) تعمل بنظام Xous الجزئي الدقيق، والمبني لـ riscv32imac-unknown-none-elf.

موجود هنا: https://www.baochip.com/

الجهاز هو رمز أمان مادي في نفس فئة أجهزة Nitrokey، مع سلوك بطاقة OpenPGP الذكية وخزنة مشفرة. مجموعة الأجهزة الكاملة — RTL، المخططات، محمل الإقلاع، نظام التشغيل — مفتوحة المصدر وقابلة للتدقيق.

مواصفات الأجهزة، نموذج الإقلاع، جداول المتطلبات، واستخدام ComboHash/PKE موثقة في Supermagnum/Baochip-1x-firmware. لوحة التقييم Dabao (KiCad، المخططات، المفاتيح، توزيع الدبابيس) موجودة في baochip/dabao. للدخول في وضع محمل الإقلاع من أجل الوميض، اضغط SW2 لتبديله (انظر المخطط في ذلك المستودع). ملاحظات العمارة لهذا المستودع: docs/ARCHITECTURE.md.

بيانات اتصال Galdra

أداة المضيف Galdra تحتفظ بدليل SQLite محلي للمستلمين (جهات الاتصال). كل هوية مخزنة تتضمن مادة المفتاح العام بالإضافة إلى تسميات جانبية اختيارية (انظر الجدول أدناه). هذه العلامات موجودة في قاعدة بيانات المضيف، وبالنسبة لمفاتيح Galdra، في مخزن جهات الاتصال على الشريحة (crates/contact-store). إنها ليست مرتبطة بشكل سحري بمعرفات مستخدمي OpenPGP ما لم تقم بمحاذاتها بنفسك، وهي ليست مؤكدة تشفيرياً ما لم تتحقق منها خارج النطاق. يمكن لـ galdra keyserver push الاختياري إرسال الحقول المتداخلة إلى سجل المشروع كـ JSON بجانب المفتاح العام المُصدر. إثبات المصدر لكل حقل على الرمز يستخدم SelfAttested، HostVerified، RegistrySync، و OobVerified (انظر مقارنة البيانات الوصفية (GnuPG مقابل Galdra) وتخطيط مخزن جهات الاتصال في docs/RRAM_LAYOUT.md).

تفاصيل جانب المضيف وسلوك CLI: docs/GALDRA-TOOL.md. تخطيط السلك وأعداد الفتحات: crates/contact-store/src/layout.rs و docs/RRAM_LAYOUT.md.

ما هو هذا البرنامج الثابت (وما ليس هو)

هذا البرنامج الثابت هو رمز أمان مادي لـ Baochip-1x: تطبيق بطاقة OpenPGP عبر USB CCID، مع خزنة على الجهاز، سياسة PIN، وميزات خاصة بالمستودع (ملفات تعريف التشفير — يمكنك تكديس حتى أربعة تشفيرات متماثلة مختلفة في سلسلة واحدة، كل منها بمفتاح مشتق خاص بها؛ انظر قدرات المفاتيح)، تدفقات متعلقة بـ Shamir، ECDH مؤقت موثق حيثما تم تنفيذه، وأدوات مضيف Galdra. الهدف الأساسي للتوافق هو استخدام بطاقة OpenPGP بنمط GnuPG، وليس كل بروتوكول رمز في السوق.

هذا البرنامج الثابت ليس:

  • FIDO2 / CTAP2 / WebAuthn — معايير مختلفة؛ لا يوجد نموذج زر حضور المستخدم CTAP ولا خطة لـ CTAP. استخدم مفتاح أمان FIDO إذا كنت بحاجة إلى WebAuthn. (انظر أيضاً توافق OpenPGP و GnuPG وجدول المعايير تحت المعايير مقابل ميزات البرامج الثابتة المحددة.)
  • TOTP / HOTP (كلمات مرور لمرة واحدة OATH) — تلك البروتوكولات تتوقع ساعة زمن حقيقي (TOTP) أو سير عمل عداد موجه نحو OATH وتجربة المستخدم؛ هذا الجهاز ليس مبنيًا كرمز OTP مخصص.
  • لوحة مفاتيح USB HID "كاتب كلمة المرور" — لا توجد شخصية لوحة مفاتيح USB لحقن ضغطات المفاتيح في المضيف. التخزين المخطط للبيانات الاعتماديه (انظر docs/future-todo.md) موصوف كاسترجاع عبر أدوات مضيف موثقة، وليس كتابة HID.
  • منصة Java Card عامة متعددة التطبيقات — النطاق هو هذا البرنامج الثابت Galdr وأسطحه الموثقة، وليس تطبيقات بطاقات ذكية تابعة لجهات خارجية عشوائية.

الاستثناءات على مستوى الحزم والمتوافقة مع نفس القيود مدرجة تحت الحزم المستبعدة صراحةً في docs/future-todo.md.

CESS: هذا البرنامج الثابت متوافق مع CESS للإنشاءات المعيارية المنفذة داخل الشجرة (بما في ذلك الوضع A AEAD الخارجي، HKDF-BLAKE3 لـ K_outer، وتقسيم Shamir بالبايت GF(2^8)). بيان التوافق الكامل، سجل الانحراف، و مستوى الشهادة (على سبيل المثال CESS-CORE للطبقة الثابتة الكاملة) موثقة في docs/CESS_CONFORMANCE.md و CESS (المعيار المفتوح ذو الصلة) أدناه.

منطق تطبيق OpenPGP / CCID موجود في crates/usb-personality. على Xous، خدمة USB التي تعرض CCID هي usb-bao1x (في نسختك من xous-core)، المبنية مع الميزة ccid-openpgp، باستخدام crates/baochip-openpgp لنافذة OpenPGP RRAM والإعداد. التخطيط: docs/RRAM_LAYOUT.md. الفجوات قبل الإنتاج (تجربة المستخدم لرمز PIN للمشغل، توقيع خريطة المنصة): القيود المعروفة / الأعمال المفتوحة.

الهدف العام يبقى برنامجًا ثابتًا كاملاً ومختبرًا ومفتوح المصدر لرمز أمان مادي: سلوك يشبه بطاقة OpenPGP لـ GnuPG عبر CCID (انظر توافق OpenPGP و GnuPG)، بالإضافة إلى ميزات إضافية على الجهاز غير محددة حالياً بمعيار بطاقة OpenPGP — ECDH مؤقت مع سرية تامة، Shamir K-of-N، ملفات تعريف غير مرتبطة بالتشفير، وحدة تخزين وهمية microSD — كما هو ملخص في المعايير مقابل ميزات البرامج الثابتة المحددة. كل ذلك على RTL مفتوح مع محمل إقلاع قابل للتكرار.

البرنامج الثابت الموقّع (Ed25519, boot0)

البرنامج الثابت القابل للشحن لـ Baochip-1x موقّع بـ Ed25519. تقوم بتوقيع صورة البرنامج الثابت بمفتاح خاص Ed25519؛ يمكن لـ GnuPG فعل ذلك بـ gpg --sign باستخدام مفتاح فرعي لتوقيع Ed25519 (سير عمل التوقيع المنفصل OpenPGP المعتاد، المُكيف لأي تغليف ينتجه بناؤك). boot0 ROM غير القابل للتغيير في SoC يتحقق من ذلك التوقيع مقابل المفاتيح العامة المقابلة المحروقة في الجهاز (و قائمة المفاتيح الأوسع لسلسلة الإقلاع) قبل أن يُسمح للمرحلة التالية — boot1 — بالتشغيل. ثم يقوم boot1 بتحميل صور التطبيقات الموقعة (على سبيل المثال UF2 blobs التي تم تسليمها عبر تخزين USB الشامل في وضع محمل الإقلاع). الأجزاء الافتراضية تحمل أربعة مفاتيح عامة Ed25519 على الشريحة (أدوار مثل نشر الكود، بيتا، والمطور)؛ boot0 / boot1 يفرضان سياسة عدم الثقة المتبادل بين Baochip ومفاتيح التوقيع لجهات خارجية. تدفق الإقلاع الكامل، تسليم UF2، وحدة التحكم، تحديثات boot1، ونموذج الأمان: بدء العمل مع أهداف Baochip في xous-core.

الاختبارات التي تم تخطيها وتجاهلها

ليست كل الاختبارات تعمل في كل أمر؛ ذلك مقصود.

  • xtask ليس في مجموعة اختبارات مساحة العمل الافتراضية: الوصفة الشائعة هي cargo test --workspace --exclude xtask لأن xtask هي حزمة تنسيق بناء. قم بتشغيل cargo test -p xtask عندما تريد اختباراتها.
  • الاختبارات الموسومة بـ #[ignore]: يتم تخطيها ما لم تمرر --ignored (وأي مرشحات حزمة ضرورية). الأسباب تشمل: تغطية تم بالفعل ممارستها في اختبارات الوحدة المركزة (مثل التصفير بعد الإسقاط)، حالات بطيئة (مثل توليد مفتاح RSA)، و تدفقات تعتمد على الأجهزة أو الرمز المميز في أدوات المضيف مثل galdra التي تحتاج إلى جهاز متصل أو تركيبات.
  • test-all --no-fuzz: يتخطى خطوة cargo-fuzz للحفاظ على CI أو التشغيل السريع قصيراً وتجنب الحاجة إلى سلسلة أدوات ليلية لتلك الخطوة؛ قم بتشغيل cargo run -p xtask -- test-all بدون --no-fuzz، أو استدع أهداف fuzz بشكل منفصل (انظر fuzz/README.md).

يمكن للمرء أيضاً التحقق من سلامة الحزم بهذا عندما يتم إغلاق الـ pr: https://github.com/rust-lang/cargo/issues/16850

الحالة: جاهز للاختبار من قبل البشر، على أجهزة حقيقية — لا يوجد إصدار جاهز للإنتاج. مكتوب بلغة Rust باستخدام حزم تشفير موثقة ومدققة. البدائيات التشفيرية مستمدة حصراً من تبعيات مساحة العمل المدققة. الخوارزميات ما بعد الكم مُقيدة بميزة وموسومة بانتظار تدقيق مستقل. انظر حالة ما بعد الكم.

ملاحظة: تم تطوير أجزاء من هذا المشروع بمساعدة الذكاء الاصطناعي (Claude, Anthropic). التصميم والاختيارات التشفيرية وقرارات الأمان لم تتم مراجعتها من قبل مُشفّر محترف. تعامل مع هذا كمشروع تجريبي وطبق حكمك النقدي الخاص. يُوصى بشدة بالمراجعة المستقلة من قبل خبير قبل أي نشر إنتاجي.

إنه جاهز للاختبار من قبل البشر. أنت تقرر ما إذا كنت ستبني أو تشغل أيًا من هذه البرمجيات؛ قد تكون هناك أخطاء لم تجدها اختبارات الوحدة، fuzzing، والفحوصات الأخرى. استخدام آلة افتراضية اختيارية للتجربة يقلل المخاطر على نظامك المضيف ولكنه لا يزيلها. النتائج المفصلة موجودة في نتائج الاختبار (docs/TEST_RESULTS.md#run-metadata). تعريفات بلغة بسيطة (أ-ي) للمصطلحات التقنية: مسرد المصطلحات.

هل هذا هراء ذكاء اصطناعي؟

المطور الأساسي لديه حالة عصبية مرتبطة بعسر الحساب. عسر الحساب يؤثر على الإحساس بالأرقام والمعالجة الرمزية ذات الصلة بطرق تجعل، بالنسبة له، البرمجة التقليدية — تحرير الكود اليدوي كسير عمل وحيد — غير قابلة للتطبيق بدون أدوات مساعدة (على سبيل المثال محررات الذكاء الاصطناعي الحوارية). هذا القيد منفصل عن الصحة: يجب على المراجعين مع ذلك تقييم الاختبارات و fuzzing والتدقيق المستقل كما هو موثق في مكان آخر في هذه الصفحة.

إن كان مشفراً أو منفذاً جاداً يراجع Galdralag، فسيقوم عادةً بفتح crates/vault/tests/ و crates/cipher-profile/tests/ قبل قراءة النثر. مجموعة الاختبارات هي دليل العمل: إنها تشفر معرفة المجال التي لا يمكن استبدالها بالسرد وحده.

هذا ليس سبباً لإخفاء النقطة عن الآخرين. الأشخاص الذين يقيمون المشروع للمشتريات، أو يقررون المساهمة، أو يشحنون كوداً دون تدريب عميق في منهجية الاختبار التشفيري ما زالوا يستحقون مؤشراً إلى الأدلة الملموسة.

ما يجب النظر إليه: تتضمن مادة التوافق أمثلة RFC 8439 لـ ChaCha20-Poly1305 تحت crates/vault/tests/rfc_vectors/، و JSON Wycheproof المُنشأ لـ ChaCha20-Poly1305 وحالات حافة Brainpool ECDH/ECDSA تحت crates/vault/tests/data/wycheproof/، ونواقل BSI TR-03111 لـ BrainpoolP256r1 و P384r1 تحت crates/vault/tests/bsi_vectors/، ونواقل مرجع BLAKE3 الرسمية (جميع أطوال الإدخال 35، جميع الأوضاع الثلاثة) تحت crates/vault/tests/blake3_vectors.json، ونواقل مواصفات Twofish (1203 حالة بما في ذلك Monte Carlo) تحت crates/vault/tests/twofish_vectors.json، وثبت KAT الخاص بالسلسلة CESS للمشروع مع الوسطاء المُتحقق منهم بشكل مستقل تحت crates/cipher-profile/tests/fixtures/cascade_cess_kat.json. معاً هذه هي الحقيقة الأساسية التي يمكن للمشغل والمراجعين ممارستها باستخدام cargo test --workspace و python3 scripts/verify_cascade_kats.py.RFC 8439 صادر عن فريق عمل هندسة الإنترنت (IETF)، المنظمة التي تقوم بتوحيد الكثير من كيفية عمل الإنترنت. RFCs (طلبات التعليقات) هي الشكل المعتاد لمواصفات البروتوكول والعديد من المواصفات التشفيرية. يحدد RFC 8439 التشفير الموثّق ChaCha20-Poly1305 (بناءً على تصاميم دانيال بيرنشتاين) ويتضمن أمثلة عملية ملموسة مع مدخلات محددة ومخرجات متوقعة حتى تتمكن التطبيقات المستقلة من التحقق من تطابقها معيارًا بايتًا ببايت. يظهر النص العادي المعاد إنتاجه على نطاق واسع والذي يبدأ بـ Ladies and Gentlemen of the class of '99: wear sunscreen في أمثلة الملحق الخاصة بـ RFC: إذا أعاد كودك إخراج AEAD تمامًا، فلديك فحص قوي بأنك نفّذت البناء بشكل صحيح. وهو التناظر التشفيري لورقة الإجابة الرسمية. ChaCha20-Poly1305 هي الطبقة الداخلية لكل ملف تعريف تسلسل متعدد الطبقات في هذا البرنامج الثابت، لذا فإن هذا الفحص يقع في أساس حزمة التشفير بأكملها.

Wycheproof هو مجموعة اختبار صادرة عن فريق الأمان في Google (2017). يشير الاسم إلى جبل Wycheproof في أستراليا - الذي يُستشهد به غالبًا على أنه أصغر جبل في العالم - لأن المشروع يركز على إزالة العقبات الصغيرة ولكن القاتلة: تجاوزات الأعداد الصحيحة، حالات الحدود، المدخلات المشوهة، وعلامات المصادقة العبث بها؛ الإخفاقات التي تظهر بشكل متكرر في التشفير المنشور فعليًا. إنه يكمل ناقلات نمط RFC: أمثلة نمط RFC 8439 تُظهر الصحة مقابل AEAD المنشور؛ Wycheproof يركز على المتانة حيث تنكسر التطبيقات تاريخيًا. في هذا المستودع، يغطي Wycheproof JSON ChaCha20-Poly1305، AES-GCM، HMAC، HKDF، X25519، Ed25519، RSA، ومتغيرات Brainpool ECDH/ECDSA.

BSI TR-03111 هو الدليل الفني لتشفير المنحنيات الإهليلجية المنشور من قبل المكتب الفيدرالي الألماني لأمن المعلومات (Bundesamt für Sicherheit in der Informationstechnik). الإصدار 2.10 هو المراجعة الحالية. منحنيات Brainpool المستخدمة في هذا البرنامج الثابت - P256r1 و P384r1 - محددة في معايير BSI، مما يجعل TR-03111 المرجع الطبيعي لناقلات الاختبار الخاصة بها. لكل منحنى تغطية ECDH و ECDSA؛ تم فحص توقيعات ECDSA بشكل متقاطع مقابل تطبيق Python مستقل باستخدام مكتبة cryptography.

ناقلات BLAKE3 المرجعية هي مجموعة الاختبار الرسمية المنشورة جنبًا إلى جنب مع مواصفات BLAKE3 من قبل مؤلفيها. تغطي 35 طول إدخال من 0 إلى 102400 بايت، تم اختيارها خصيصًا لتمرين جميع ظروف حدود التجزئة الداخلية للقطع والشجرة غير المرئية لاختبارات الإدخال القصير. جميع أوضاع BLAKE3 الثلاثة - التجزئة الافتراضية، التجزئة المفتاحية، واشتقاق المفتاح - مغطاة. يُستخدم BLAKE3 في جميع أنحاء هذا البرنامج الثابت لاشتقاق مفتاح HKDF وفحوصات السلامة بين الطبقات في ملفات تعريف التشفير المتسلسل؛ تغطية الحدود مهمة لأن بناء شجرة BLAKE3 ينشط فقط فوق 1024 بايت.

مجموعة الاختبار هي أيضًا كشف عن العبث لسلسلة التوريد. جميع العناصر التشفيرية الأساسية في هذا البرنامج الثابت تأتي من صناديق RustCrypto المدققة - لا يتم تنفيذ أي تشفير داخل الشجرة. نظرًا لأن ناقلات المطابقة أعلاه تُشغّل ضد تلك الصناديق في كل cargo test --workspace، فإن أي تبعية تم العبث بها أو استبدالها ستنتج فشل اختبار إجابة معروفة قبل أن يصل الكود المخترق إلى نظام منشور. يُضيف python3 scripts/verify_cascade_kats.py مسارًا ثانيًا مستقلاً: تطبيق Python يتحقق من نفس القيم الوسيطة في جهاز KAT المتسلسل، لذلك حتى سلسلة أدوات Rust المخترقة التي تنتج مخرجات خاطئة يتم اكتشافها بواسطة الفحص المتقاطع. هذه قصة سلامة سلسلة توريد أقوى بشكل ملحوظ من الربط بمكتبة C، حيث يتطلب التحقق المكافئ من كل عملية داخلية جهدًا كبيرًا وأدوات متخصصة.

الأمر متروك الآن للقارئ ليقرر ما إذا كانت هذه الادعاءات خاطئة أم لا.

Galdralag للدمى

تقوم بتوصيله بمنفذ USB. من منظور المضيف، يمكن للبرنامج الثابت تقديم وضع التشفير أو وضع التمويه. في وضع التشفير يرى جهاز الكمبيوتر الخاص بك بطاقة ذكية: تستخدم GnuPG أو حزمة OpenPGP متوافقة (ما هو GnuPG؟) بنفس الطريقة التي تستخدم بها أي رمز أمان أجهزة آخر - يتولى الرمز العمليات التشفيرية الحساسة بحيث لا توجد مفاتيحك الخاصة غير محمية على جهاز الكمبيوتر الخاص بك أبدًا. في وضع التمويه يمكنه التعداد كوحدة تخزين قابلة للإزالة عادية بملفات غير ضارة المظهر بحيث لا تكشف نظرة سريعة عن دوره الحقيقي؛ انظر تمويه التخزين أدناه.

ما هو GnuPG؟

GnuPG تعني GNU Privacy Guard. هو تطبيق مشروع GNU لـ OpenPGP، المعيار المفتوح لإدارة المفاتيح والرسائل المحمية تشفيريًا (نفس العائلة المفاهيمية لـ PGP، ولكنها محددة في وثائق مثل RFC 4880 والتحديثات المجتمعية). تقوم بتشغيله عادةً كأمر gpg على Linux، BSD، macOS، أو Windows؛ العديد من أدوات البريد والرسومات الرئيسية تغلف هذا من الأسفل.

يستخدم الناس GnuPG من أجل:

  • تشفير وفك تشفير الملفات أو النسخ الاحتياطية بحيث يمكن للمستلمين المختارين فقط قراءتها.
  • توقيع البيانات حتى يتمكن الآخرون من التحقق من الأصالة والسلامة - شائع لإصدارات البرامج، مرايا التوزيع، والوثائق الشخصية.
  • حماية البريد الإلكتروني من طرف إلى طرف عند إقرانه مع عميل بريد مناسب (GnuPG يتعامل مع التشفير؛ تنسيق الرسالة على السلك هو OpenPGP).
  • المصادقة، ولا سيما عمليات تسجيل الدخول SSH عندما يكشف gpg-agent عن مفاتيح المصادقة من بطاقة ذكية أو مخزن مفاتيح محلي.
  • قفل وفتح قرص صلب مشفر. يمكن لـ Linux تشفير محرك أقراص كامل بحيث يصبح غير قابل للقراءة بدون المفتاح الصحيح. يمكن لـ GnuPG الاحتفاظ بهذا المفتاح على رمزك المميز، بحيث يفتح القرص فقط عند توصيل الرمز المميز.

GnuPG ومحركات الأقراص المشفرة (LUKS). يمتلك Linux طريقة مضمنة لتشفير محرك أقراص أو قسم كامل، تسمى LUKS. بمجرد تشفير محرك الأقراص، يبدو وكأنه ضوضاء لا معنى لها لأي شخص بدون المفتاح، لذا فإن الكمبيوتر المحمول المفقود أو المسروق لا يسلم ملفاتك.

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

باختصار، يحول هذا الرمز المميز إلى مفتاح مادي لقرصك المشفر. يتم إعداده (وإضافة طريقة احتياطية للدخول، في حالة فقدان الرمز المميز) باستخدام أدوات القرص الخاصة بـ Linux؛ الرمز المميز ببساطة يحمل المفتاح. إذا كنت تفضل مشاركة القدرة على فتح قرص بين عدة أشخاص، بحيث لا يمكن لأي شخص واحد القيام بذلك بمفرده، راجع مشاركة السر Shamir وتشفير القرص.

بشكل افتراضي، يخزن GnuPG المفاتيح تحت ~/.gnupg. مع بطاقة OpenPGP الذكية، تعيش المفاتيح الخاصة الحساسة على البطاقة؛ scdaemon (جزء من مجموعة GnuPG) يتحدث CCID/USB مع البطاقة بينما لا يزال gpg يجمع حزم OpenPGP على المضيف.

ما يمكنك استخدامه من أجله. في وضع التشفير، الرمز المميز مخصص لنفس العمل مثل بطاقات OpenPGP الذكية الأخرى: توقيع وفك تشفير البريد والملفات، المصادقة (على سبيل المثال SSH عندما تستخدم gpg-agent كالمعتاد)، والاحتفاظ بالمفاتيح الخاصة طويلة الأجل بعيدًا عن الجهاز الذي تكتب عليه. يمكن للمؤسسات دمج ذلك مع مشاركات Shamir على الرمز المميز بحيث لا يحمل أي شخص واحد السر بأكمله (موصوف أدناه). GnuPG هو الهدف الأساسي للتوافقية على المضيف: ينفذ هذا البرنامج الثابت تطبيق بطاقة OpenPGP عبر CCID، والذي يقوده scdaemon (gpg --card-status، gpg --card-edit، والتوقيع/التشفير/فك التشفير العادي بمفاتيح على البطاقة). قد تعمل البرامج الأخرى التي تتحدث نفس بروتوكولات البطاقة الذكية أيضًا؛ الأوامر، الفتحات، الخوارزميات، وحدود التكامل الحالية موجودة في توافقية OpenPGP و GnuPG. عندما يتم إحضار NFC على الأجهزة (مخطط للتكامل - ليس في البرنامج الثابت بعد)، يمكن لنفس فئة الجهاز دعم الوصول المادي: النقر على قارئ NFC عند باب، بوابة، أو لوحة قفل يمكن أن يشارك في سياسة لا تحرر القفل إلا بعد الفحوصات التشفيرية (غالبًا ما يقترن بـ PIN، القياسات الحيوية، أو حصة النصاب من نوع Shamir حسب النشر). المخطط الموجّه نحو PN532 للقراء واللوحات موجود في docs/NFC_PN532_INTEGRATION.md.

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

تمويه التخزين. يمكن للجهاز أن يعمل كوحدة تخزين قابلة للإزالة عادية بحيث لا يكون دوره الحقيقي واضحًا من نظرة سريعة. عندما تقوم بتوصيله بكمبيوتر نموذجي، يمكن أن يظهر كقرص USB عادي أو وحدة تخزين مدعومة بـ SD؛ يمكنك ملء نظام الملفات المرئي بملفات يومية معقولة (على سبيل المثال صور العطلات) بحيث يعزز التصفح العادي الانطباع بأنه مجرد تخزين. هذا يحبط الفحص السطحي عند مكتب أو نقطة تفتيش. معرفة أنه في الواقع رمز أمان يعني عادةً تفكيك الهيكل، وليس مجرد توصيله.

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

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

يمكنك تقسيم المفتاح بين عدة أشخاص. يمكن للرمز المميز تقسيم المفتاح طويل الأجل إلى N من المشاركات بحيث تكون أي K من تلك المشاركات مطلوبة لإعادة بنائه - ولكن لا يمكن لأي حامل مشاركة واحد فعل أي شيء بمفرده. هذا يسمى مشاركة السر Shamir. إنه مفيد للمفاتيح التنظيمية حيث لا ينبغي لأي شخص واحد أن يكون لديه وصول أحادي الجانب، أو كاستراتيجية احتياطية حيث يتم تخزين المشاركات في مواقع منفصلة. هذا أيضًا غير معتاد في الرموز المميزة للأجهزة.

التشفير متعدد الطبقات. بدلاً من تشفير بياناتك بتشفير واحد، يمكن للرمز المميز تشغيلها عبر تشفيرات مستقلة متعددة في التسلسل - على سبيل المثال ChaCha20، ثم Serpent، ثم Twofish - كل منها يستخدم مفتاحًا مشتقًا بشكل منفصل. اختراق مستقبلي يكسر تشفيرًا واحدًا لا يكسر البقية. التركيبة المحددة تسمى ملف تعريف تشفير، ويمكنك الاختيار من بين عدة ملفات مدمجة اعتمادًا على مقدار الحذر الذي يتطلبه موقفك.

توصيتي الشخصية هي BrainpoolP256r1 + ChaCha20-Poly1305 + BLAKE3. هذا هو ملف تعريف standard المدمج. يستخدم منحنى Brainpool P-256 من BSI لاتفاق المفتاح المؤقت، ChaCha20-Poly1305 للتشفير المتناظر، و BLAKE3 لاشتقاق المفتاح وسلامة الطبقات البينية. إنه سريع، جيد الاختبار، صديق للبطارية (تم تصميم ChaCha20-Poly1305 ليكون فعالاً على الأجهزة دون تسريع AES، مما يقلل من وقت وحدة المعالجة المركزية واستهلاك الطاقة للمضيف؛ P-256 هو الأصغر بين منحنيات Brainpool الثلاثة في هذا البرنامج الثابت)، ولا يعتمد على أي عنصر أساسي صممته NIST. إذا كنت بحاجة إلى هامش أعلى ضد كسر تحليلي مستقبلي لتشفير واحد، فإن ملف تعريف conservative يضيف طبقة Serpent-256 في الأعلى.

اختيارات الخوارزميات متعمدة. التشفيرات المستخدمة - ChaCha20-Poly1305، Serpent، Twofish، Camellia - جميعها صممت بشكل مستقل عن هيئات المعايير الحكومية. يتم استبعاد AES ومجموعة NIST عمدًا. هذا خيار واعٍ للمستخدمين والمؤسسات الذين يريدون استقلالية تشفيرية عن عملية معايير أي بلد واحد. تم تقييم Camellia بشكل مستقل من قبل مشروع EU NESSIE وبرنامج CRYPTREC الياباني، وهو محدد في RFC 3713 و ISO/IEC 18033-3.

PIN خاطئ يقفلك بشكل صحيح. الرمز المميز يحسب محاولات PIN الفاشلة قبل أن يتحقق مما إذا كان PIN صحيحًا، وليس بعده. هذا يعني أن تعطلًا أو فقدان الطاقة في منتصف المحاولة لا يمكن استغلاله لإعادة تعيين العداد. بعد عدد كبير جدًا من المحاولات الخاطئة، يقوم الرمز المميز بتصفير المواد الحساسة.

ما لا يفعله بعد. لا يوجد أجهزة متاحة بعد - هذا برنامج ثابت قيد التطوير النشط. الاختبار من طرف إلى طرف مع أجهزة USB حقيقية و GnuPG هو معلم مستقبلي. يتم وصف نقل NFC وقارئات الوصول على غرار الباب في الوثائق كـ أهداف تكامل، وليس سلوكًا مشحونًا بعد. العامل الثالث البيومتري الموصوف في الوثائق لم يتم تنفيذه بعد. بعض اختبارات القناة الجانبية للتوقيت التي تتطلب أجهزة حقيقية لا يمكن إكمالها حتى يوجد جهاز.


مفاتيح GnuPG / OpenPGP ومفاتيح Galdra

يمكن لـ Galdralag العمل مع نوعين مختلفين من المفاتيح غير المتماثلة في وقت واحد. يجيبان على أسئلة مختلفة على الجهاز والمضيف، وليسا قابلين للتبادل حتى عندما ينتميان لنفس الشخص. الأقسام توافقية OpenPGP و GnuPG، شبكة الثقة وحفلات توقيع المفاتيح، بيانات الاتصال Galdra، و مقارنة البيانات الوصفية (GnuPG مقابل Galdra) تصف كل مكدس بمزيد من التفصيل؛ إليك كيف يختلفان من حيث الاستخدام اليومي.

مفتاح OpenPGP، بمعنى أن GnuPG يولده ويستخدمه، هو حزمة منظمة، وليس رقمًا عامًا مجردًا. يجمع المفتاح الأساسي، المفاتيح الفرعية للتوقيع والتشفير، وواحد أو أكثر من معرفات المستخدم - عادةً اسم عرض وعنوان بريد إلكتروني مثل Alice Example <[email protected]>. يمكن لأشخاص آخرين توقيع معرفات المستخدم هذه ليقولوا إنهم يعتقدون أن ادعاء الهوية حقيقي؛ هذا الرسم البياني الاجتماعي هو أساس شبكة الثقة الموصوفة في شبكة الثقة وحفلات توقيع المفاتيح لاحقًا في هذا README. عندما يعمل Galdralag كبطاقة ذكية OpenPGP، فإنه يحمل مادة المفتاح الخاص على الشريحة ويقوم بالتوقيع وفك التشفير هناك. المفتاح العام، معرفات المستخدم، والتوقيعات من الآخرين تعيش على المضيف وتتم إدارتها بواسطة GnuPG بالطريقة المعتادة. الرمز المميز لا يغير تنسيق رسالة OpenPGP على السلك؛ يعامله GnuPG مثل أي بطاقة OpenPGP أخرى.

مفتاح Galdra هو زوج مفاتيح غير متماثل مجرد - Ed25519، X25519، أو أحد منحنيات Brainpool أو NIST التي يدعمها البرنامج الثابت. بايتات المفتاح نفسها لا تحمل أي ادعاءات هوية: لا توجد حزم معرف مستخدم، ولا بريد إلكتروني مدمج، ولا توقيعات شبكة ثقة مرفقة بهيكل المفتاح. تأتي هوية مفتاح Galdra من سجل الاتصال المخزن بجانبه في قاعدة بيانات SQLite للمضيف و مخزن الاتصال على الشريحة، المرتبطة بالمفتاح عبر بصمته.

مقارنة البيانات الوصفية (GnuPG مقابل Galdra)

يقارن الجدول أدناه بيانات الهوية والاتصال الوصفية حقلاً بحقل. تصف أعمدة OpenPGP / GnuPG ما تحصل عليه من شهادة عادية ومعرف مستخدم (بالإضافة إلى صفوف اتصال اختيارية من جانب المضيف في Galdra عند تخزين مفتاح عام OpenPGP في نفس الدليل). تصف أعمدة مفتاح Galdra حقول ملف جانبي منظمة لجهات الاتصال التشغيلية (تفاصيل كاملة للمضيف والشريحة في بيانات الاتصال Galdra). الشرطة تعني أن ذلك المكدس ليس لديه حقل منفصل قياسي لذلك العنصر.

يضع OpenPGP الاسم والبريد الإلكتروني في سلسلة معرف مستخدم واحدة؛ لا يعطيك حقول نداء، DMR، أو بريدية منفصلة قابلة للقراءة آليًا. Galdra يحتفظ بها كأعمدة مسماة حتى تتمكن فرق الراديو والعمليات من البحث وعرضها دون تحليل نص الشهادة.

الرموز المميزة المحدثة من برنامج ثابت كان يقدم BrainpoolP512r1 قد لا تزال تعيد سمات P-512 عند GET DATA؛ عمليات GnuPG على تلك الفتحات تفشل بعد ذلك بأخطاء بطاقة عامة. شغّل galdra device status (أو انظر docs/OPENPGP_CARD.md) لتحديد الفتحات القديمة؛ خلفية الإزالة موجودة في CHANGELOG.md. | PW1 / PW3 | لا يتم تخزينها أبدًا | مدقق على الشريحة (حد أدنى 5 أحرف، 3 محاولات افتراضيًا) | | كائنات بيانات حامل البطاقة (تسجيل الدخول، اللغة، URL، …) | مخزنة مؤقتًا بواسطة GnuPG | اختيارية (254 بايت كحد أقصى لكل DO) |

تطبيق البطاقة 3.4.1، CCID، وسير عمل GnuPG: docs/OPENPGP_CARD.md و توافقية OpenPGP و GnuPG.

الانقسام موجود لأن معلومات الهوية المهمة في المجتمعات التي يستهدفها Galdralag - نداء النداء، معرف DMR، الانتماء لشبكة الراديو - ليس لها مكان طبيعي في معرف مستخدم OpenPGP. معرف المستخدم مخصص للاسم والبريد الإلكتروني. كتابة شيء مثل LA5XYZ <[email protected]> DMR:2345678 في سلسلة معرف مستخدم هو غير رسمي، غير منظم، وغير قابل للقراءة آليًا بأي طريقة قياسية. مفاتيح Galdra تحافظ على المادة التشفيرية نظيفة وتضع الهوية التشغيلية في تنسيق سجل تفهمه الأداة المضيفة ومخزن الشريحة بشكل أصلي.

من الناحية العملية، يمكن لجهاز واحد حمل كلا النوعين من المفاتيح دون تعارض. يخدم تطبيق بطاقة OpenPGP GnuPG من خلال فتحات SIG، DEC، و AUT القياسية. يحمل مخزن الاتصال مفاتيح Galdra للعمل التشغيلي - على سبيل المثال التشفير لجهة اتصال راديوية بواسطة نداء النداء، التحقق من رسالة مقابل معرف مشترك DMR، أو البحث عن زميل برقم الشارة. المساران لا يتداخلان.إذا كان لدى شخص ما شهادة OpenPGP يديرها GnuPG على المضيف و مفتاح Galdra في مخزن التلامس على الشريحة، فهذه مفتاحان منفصلان مع بصمتين منفصلتين. بصمة Galdra — المسبوقة بـ G: والمستمدة باستخدام BLAKE3 من بايتات المفتاح العام الخام — ليست نفس قيمة بصمة OpenPGP v4 لشهادة GnuPG لذلك الشخص. تعالج الأداة المضيفة والجهاز هذه المفاتيح كهويات مستقلة. لا تفترض أن بصمة واحدة تستلزم الأخرى دون التحقق من كليهما.

لا يضمن أي من نوعي المفاتيح تلقائيًا صحة التسميات المحيطة به. معرف المستخدم في OpenPGP هو ادعاء ذاتي حتى يوقعه شخص آخر. حقل النداء أو DMR في سجل تلامس Galdra لا يكون موثوقًا إلا بقدر مصدره — جلب من خادم مفاتيح، أو إدخال يدوي، أو فحص خارج النطاق قمت به بنفسك. تسميات الأصل (SelfAttested, HostVerified, RegistrySync, OobVerified) تسجل كيف وصل حقل ما؛ فهي لا تحل محل العمل الفعلي للتحقق من الهوية التي تهمك.


لماذا Rust؟

هذا البرنامج الثابت مكتوب بلغة Rust، وهي لغة برمجة أنظمة مصممة لتكون بنفس سرعة ومستوى منخفض C أو C++، ولكن بنهج مختلف جوهريًا في التعامل مع السلامة.

سلامة الذاكرة

نسبة كبيرة من الأخطاء المتعلقة بالأمان في قواعد بيانات الصناعة تأتي من عدم سلامة الذاكرة (تجاوزات المخزن المؤقت، الاستخدام بعد التحرير، إلغاء الإشارات الخالية، وما شابه ذلك). أفاد فريق MSRC من مايكروسوفت مرارًا بأن ما يقرب 70% من CVEs التي تمت معالجتها في منتجاتهم الخاصة تقع ضمن هذه الفئة؛ نشر فريق Chrome نسبًا مماثلة لـ Chrome. تصف هذه الأرقام منتجات هؤلاء البائعين، وليست قانونًا عالميًا لكل البرامج الثابتة، لكنها توضح لماذا تعتبر اللغات الآمنة للذاكرة مهمة.

في Rust الآمن (الوضع الافتراضي)، يستبعد مدقق الاقتراض سباقات البيانات وأخطاء الذاكرة المعتادة ذات السلوك غير المحدد في وقت الترجمة دون الاعتماد على جمع القمامة. لا يزال Rust غير الآمن وFFI إلى C يمكن أن يُدخلا أخطاء في الذاكرة؛ يجب أن يظلا صغيرين ويتم مراجعتهما.

المتانة على مستوى النظام (مع حدود)

التحقق من الحدود على الشرائح وقواعد الملكية في Rust تقلل عدة فئات من أوضاع الفشل الشائعة في كود C/C++ المضمن:

  • يتم اكتشاف تجاوزات المخزن المؤقت والمكدس التي تفسد تدفق التحكم في وقت الترجمة في الكود الآمن أو عبر الفهرسة المدققة في وقت التشغيل بدلاً من السلوك غير المحدد الصامت.
  • يتم رفض سباقات البيانات في Rust الآمن المتزامن من قبل المترجم (الأقفال الميتة لا يتم إزالتها — انظر أدناه).
  • يجب أن تكون كتل unsafe صريحة؛ MMIO والمؤشرات الخام للسجلات تعيش هناك، لذا يمكن للمراجعين استخدام grep لسطح التدقيق (unsafe لا يجعل MMIO غير الصحيح مستحيلاً، بل فقط يسهل تحديد مكانه).

لا توقف Rust بنفسها الأخطاء المنطقية مثل حلقة ضيقة تتسبب في تآكل الفلاش، أو اختيار قيم سجلات خاطئة. تظل تلك مخاوف هندسية ومراجعة.

حماية المواد الأساسية (أنماط المشروع)

يطبق هذا الكود أنماط Rust الشائعة للأسرار؛ إنها ليست تلقائية لكل نوع:

  • أنواع مثل zeroize::Zeroize / ZeroizeOnDrop تمسح المخازن المؤقتة عند الإسقاط؛ المتصلون يختارونها طواعية.
  • المقارنات السرية تستخدم subtle::ConstantTimeEq (وما شابه) عندما يكون التوقيت مهمًا — == العادي ليس سحريًا ثابت الوقت.
  • لا Copy على أغلفة الأسرار يقلل من التكرار العرضي؛ يستخدم فصل النطاق أنواعًا متميزة وتسميات HKDF (سياسة تبعيات التشفير).
  • سلوك الذعر وترتيب الإسقاط يتبعان قواعد Rust؛ استخدم استراتيجيات catch_unwind أو abort حيث تتطلب منصتك ضمانات أقوى.

قابل للتدقيق بالتصميم

unsafe يجب أن يكون مكتوبًا صراحة في المصدر، مما يضيق نطاق المراجعة اليدوية. التبعيات: تفضل سياسة التشفير لهذا المشروع حزم Rust المدققة (RustCrypto وغيرها)؛ انظر الجدول في سياسة تبعيات التشفير — ليست كل تبعية من مشروع مظلة واحد.

ما لا تمنعه Rust

لا تزيل Rust الأقفال الميتة (مثل أقفال Mutex غير المرتبة بشكل صحيح)، أو الأخطاء المنطقية، أو البروتوكولات غير الصحيحة، أو تآكل الفلاش بسبب الحلقات السيئة، أو الهجمات الفيزيائية (الانقطاع، تحليل الطاقة)، أو المخاطر من بناء صحيح لصورة خاطئة. كما لا تضمن التنفيذ بوقت ثابت على كل الأجهزة بدون برمجة دقيقة. تعتمد تلك المجالات على التصميم والمراجعة والاختبار، وممارسات التشفير وسلسلة التوريد للمشروع الموصوفة في مكان آخر من ملف README هذا.

التحقق (الاختبارات والتنقيب): بالإضافة إلى اللغة، يستخدم هذا المستودع اختبارات الوحدة، اختبارات التكامل، أدوات توقيت dudect، وأهداف libFuzzer (cargo-fuzz). الملخصات والمصفوفات موجودة في نتائج الاختبارات؛ تبدأ بيانات التشغيل المسجلة في docs/TEST_RESULTS.md#run-metadata. اجتياز الاختبارات لا يثبت الجاهزية للإنتاج أو عدم وجود ثغرات — إنه يضيق المخاطر. أنت من يحكم ما إذا كان تشغيل البناء أو الاختبارات مقبولاً لبيئتك؛ الجهاز الظاهري اختياري لكنه يحد من نطاق التأثير على جهازك.

إعداد جهاز افتراضي للتقييم

أي منصة جهاز افتراضي رئيسية مناسبة — VirtualBox (مجاني، مفتوح المصدر)، QEMU (مجاني، مفتوح المصدر، سطر الأوامر)، أو VMware. يُوصى باستخدام ضيف Linux حيث أن بيئة البناء مدعومة بشكل أفضل هناك.

بداية سريعة مع QEMU وUbuntu:```bash

Install QEMU

sudo apt install qemu-system-x86 # Debian/Ubuntu host

or

brew install qemu # macOS host

Download an Ubuntu Server ISO and boot it

qemu-system-x86_64 -m 2G -cdrom ubuntu-24.04-live-server-amd64.iso

root@kitploit:~
داخل VM، تنطبق تعليمات البناء القياسية. يمكن أخذ **لقطة** للجهاز الافتراضي قبل كل تجربة و**التراجع** عنها نظيفًا إذا حدث أي خطأ.

### تقييم المخاطر والنشر

**في النهاية، ما إذا كانت هذه البرامج الثابتة آمنة للنشر في بيئتك هو قرار يمكنك أنت فقط اتخاذه**، بناءً على تقييم المخاطر الخاص بك، وحساسية ما تحميه، وما إذا كنت تختار انتظار تدقيق مستقل من طرف ثالث قبل النشر. يهدف هذا المشروع إلى منحك جميع المعلومات اللازمة لاتخاذ هذا القرار بنفسك.

قائمة منظمة من الأصول والتهديدات **T1–T14** والأهداف غير الصريحة وفجوات التحقق من الربع الثاني موجودة في **[docs/THREAT_MODEL.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/THREAT_MODEL.md)**.

---

## عن الاسم

**Galdr** هي ممارسة نورسية قديمة للسحر المنطوق أو المُغنّى: تعويذات تُستخدم للربط أو الحماية أو الكشف. في الملاحم، تسمي فعل إلقاء التعويذة نفسها، وليس الكلمات فقط. تُستخدم أحيانًا أيضًا لتفعيل نقوش الرونية السحرية، كما هو الحال على [عمود رمح Kragehul I](https://en.wikipedia.org/wiki/Kragehul_I)، و[تميمة Lindholm](https://en.wikipedia.org/wiki/Lindholm_amulet)، و[قلادة Vadstena](https://en.wikipedia.org/wiki/Vadstena_bracteate)، واكتشافات Elder Futhark الأخرى.

**Galdralag** هو الشكل العروضي المستخدم في galdr: شعر منظم ودقيق ومقيد بالقواعد حيث يكون النمط جزءًا من قوة التعويذة. اللاحقة *lag* تشبه "قانون" أو "نمط".

**الرونية** كانت حرفيًا معرفة سرية ومشفرة — الاستخدام الشاماني كان معروفًا فقط لمن فهمه.

---

## التوثيق

**المسرد:** [docs/GLOSSARY.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/GLOSSARY.md) — مصطلحات موضحة **بلغة بسيطة** (مرتبة A–Z). ابدأ من هنا إذا شعرت أن README أو المستندات الأخرى مليئة بالمصطلحات.

**التصحيح:** [docs/DEBUG_INSTRUCTIONS.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/DEBUG_INSTRUCTIONS.md) — تتبّع الأخطاء، تضييق `cargo test`، اختصارات `xtask`، الفحوصات الثلاثية للبرامج الثابتة، الاختبار بالتغذية العشوائية، وما يجب جمعه قبل الإبلاغ عن مشكلة.

**المساعدون الذكيون (Claude, Cursor):** [CLAUDE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/CLAUDE.md) — تعليمات المشروع لعوامل الترميز. قواعد خاصة بـ Cursor: [`.cursor/rules/`](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/.cursor/rules/).

**تصفح جميع الملفات:** [github.com/Supermagnum/Galdralag-firmware — `docs/`](https://github.com/Supermagnum/Galdralag-firmware/tree/main/docs)

**الأجهزة (دونجل USB وما يتعلق به):** شجرتا KiCad: [Hardware/kicad-files-usb/](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/Hardware/kicad-files-usb/) — `dabao_v3c` (رمز USB-A **بدون** micro-SD)؛ و [Hardware/kicad-sd-card/](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/Hardware/kicad-sd-card/) — `dabao_v3c_sdcard` (نفس التخطيط الأساسي **مع** حامل micro-SD)، ملفات Gerber، قائمة المواد (BOM)، مخرجات الإنتاج، و[وثائق التوصيل](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/Hardware/kicad-sd-card/docs/pinout/README.md). تخطيط PCB لدونجل USB-A (الرمز الصغير مقابل تنسيق Pico للتقييم) موصوف في [docs/USB_DONGLE_PCB.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/USB_DONGLE_PCB.md).

| المستند | الوصف |
|----------|-------------|
| [Hardware/kicad-files-usb/](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/Hardware/kicad-files-usb/) | مشروع KiCad **لدونجل USB** `dabao_v3c` (بدون micro-SD)؛ ملفات Gerber، قائمة المواد (BOM)، مخرجات الإنتاج؛ يكمّل [USB_DONGLE_PCB.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/USB_DONGLE_PCB.md) |
| [Hardware/kicad-sd-card/](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/Hardware/kicad-sd-card/) | مشروع KiCad **لدونجل USB** `dabao_v3c_sdcard` (مع حامل micro-SD)؛ ملفات Gerber، قائمة المواد (BOM)، التوصيلات ضمن [docs/pinout](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/Hardware/kicad-sd-card/docs/pinout/README.md)؛ يكمّل [USB_DONGLE_PCB.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/USB_DONGLE_PCB.md) |
| [docs/CODE_MAP.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/CODE_MAP.md) | **فهرس الوظائف والوحدات** لمساحة العمل (`pub fn`/الأنواع لكل ملف مع روابط الأسطر) |
| [docs/CRATE_DEPENDENCIES.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/CRATE_DEPENDENCIES.md) | تبعيات Rust **التابعة للمشروع مقابل التابعة لأطراف خارجية** وكيف تعتمد على بعضها البعض |
| [docs/API_REFERENCE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/API_REFERENCE.md) | خريطة الكود + **ملحق** لـ IETF/I-D/GnuPG/Sequoia: بناء Shamir GF(256)، تنسيق GALDRA SHARE armour، تنسيق الإيثيرميرال ECDH العابر، تسميات HKDF، الصور الأولية؛ مسارات `galdrad`؛ تلميحات rustdoc |
| [docs/ARCHITECTURE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/ARCHITECTURE.md) | الهندسة المعمارية عالية المستوى للبرامج الثابتة والنظم الفرعية الرئيسية |
| [docs/AUDIT_LOG.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/AUDIT_LOG.md) | سجلات تدقيق الملفات الشخصية (`cipher-profile`)، خطاف OpenPGP `OpenPgpAudit`؛ **لا يوجد** سجل RRAM للإلحاق فقط بعد |
| [docs/BIOMETRIC_API.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/BIOMETRIC_API.md) | البوابة الأولية البيومترية: الهندسة المعمارية، تنسيق الإرسال، تخطيط الخزنة؛ التكامل مُنفّذ جزئيًا |
| [docs/BIOMETRIC_DEVICE_GUIDE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/BIOMETRIC_DEVICE_GUIDE.md) | كيفية إضافة دعم لنهاية خلفية بيومترية جديدة |
| [docs/BIOMETRIC_TESTING.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/BIOMETRIC_TESTING.md) | منهجية الاختبار: مقاييس ISO/IEC 30107-3 PAD، مجموعات البيانات، كيفية التشغيل |
| [docs/FINGERVEIN_DEVICE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/FINGERVEIN_DEVICE.md) | جهاز الأوردة الإصبعية المفتوح ESP32-CAM: الأجهزة، مخطط البروتوكول، الحيوية |
| [docs/SWEET_PLATFORM_INTEGRATION.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/SWEET_PLATFORM_INTEGRATION.md) | ماسح يد منصة Sweet: الأجهزة، التكامل، الحيوية، مجموعة البيانات |
| [docs/GALDRA-TOOL.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/GALDRA-TOOL.md) | أدوات المضيف (`galdra`, `galdrad`, `galdra-gtk`): سير العمل، التزويد، سياسة PIN، السلوك التشغيلي |
| [Supermagnum/Fulla](https://github.com/Supermagnum/Fulla) | **Fulla**: سجل المفاتيح العامة OpenPGP الموجه نحو شبكة الثقة (مستودع الخادم والتنفيذ). **لا يوجد أي مثيل سجل عام قيد التشغيل بعد**؛ أحدهم مُخطط له. **`galdra keyserver push`** / **`galdra keyserver fetch`** وتكوين **`[keyserver]`** الاختياري يستهدف هذا النظام البيئي—انظر أيضًا [شبكة الثقة وحفلات توقيع المفاتيح](#web-of-trust-and-key-signing-parties). تظل ملاحظات التصميم الإضافية في [docs/server.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/server.md). |
| [docs/GLOSSARY.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/GLOSSARY.md) | **مسرد بلغة بسيطة** (A–Z) للقراء غير التقنيين؛ التفاصيل التقنية تبقى في المستندات المرتبطة |
| [CLAUDE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/CLAUDE.md) | تعليمات لـ **Claude** / عوامل الترميز الذكية؛ يشير إلى [`.cursor/rules/`](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/.cursor/rules/) لـ **Cursor** |
| [docs/GALDRALAG_DEV_REFERENCE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/GALDRALAG_DEV_REFERENCE.md) | سلسلة الأدوات، أوامر `xtask`، نقاط الدخول للاختبار بالتغذية العشوائية والتشفير |
| [docs/dev-ref.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/dev-ref.md) | تخطيط مساحة العمل، الصناديق، سمات HAL، سلوك USB/PSRAM، الثوابت الأمنية |
| [docs/DEBUG_INSTRUCTIONS.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/DEBUG_INSTRUCTIONS.md) | التصحيح: `RUST_BACKTRACE`، عمليات البناء المطولة، الاختبارات المقيدة، وصفات `xtask`، فحوصات الهدف المضمن، إرشادات التغذية العشوائية، فحوصات مضيف OpenPGP |
| [docs/KEY_LIFECYCLE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/KEY_LIFECYCLE.md) | إنشاء المفاتيح، سياسة الاستيراد والتصدير، التغيير، التصفير، Shamir (كما هو معكوس في `vault` / OpenPGP) |
| [docs/OPENPGP_CARD.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/OPENPGP_CARD.md) | تطبيق بطاقة OpenPGP، إعداد مضيف GnuPG/CCID، فتحات المفاتيح، الخوارزميات، udev |
| [docs/CIPHER_PROFILES.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/CIPHER_PROFILES.md) | نظام ملفات التشفير الشخصية والتكوين |
| [docs/CIPHER_PROFILE_SECURITY.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/CIPHER_PROFILE_SECURITY.md) | اعتبارات أمنية: معرفات الملفات الشخصية بالنص الصريح، تحليل الحركة، مبرر الغلاف الخارجي BrainpoolP384r1، المعرفات المشفرة، خاصية حرف البدل |
| [docs/CESS_CONFORMANCE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/CESS_CONFORMANCE.md) | توافق [CESS](https://github.com/Supermagnum/CESS/tree/main): تخطيط الإرسال للوضع A، `suite_id` من [ALGORITHM-REGISTRY.md — جدول البحث](https://github.com/Supermagnum/CESS/blob/main/ALGORITHM-REGISTRY.md#cipher-suite-identifier-lookup-table)، سجل الانحراف (AES/SHA-2 المحتفظ به مقابل CESS-CORE)، خريطة الطريق |
| [crates/cess](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/crates/cess) | الوضع A لـ CESS: HKDF-BLAKE3 (`derive_k_outer`, `hkdf_blake3`)، فتح/إغلاق ChaCha الخارجي، تخطيط `suite_id \|\| inner_blob`؛ انظر [CESS_CONFORMANCE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/CESS_CONFORMANCE.md) |
| [docs/EPHEMERAL_SESSION.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/EPHEMERAL_SESSION.md) | بروتوكول جلسة ECDH عابر موثّق |
| [Supermagnum/CESS](https://github.com/Supermagnum/CESS) | **CESS** (*Cryptologically Enchanted Shamir's Secret*) — مواصفات مفتوحة (نص معياري ونواقل اختبار) لتقسيم الأسرار العتبية مع التشفير الموثّق، تغليف المشاركات بكلمة مرور، وتبادل مفاتيح هجين ما بعد الكم اختياري؛ منفصل عن هذه البرامج الثابتة ولكن في نفس مجال التصميم مثل Shamir وملفات التشفير الشخصية هنا |
| [docs/PQ_SIGNATURES.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/PQ_SIGNATURES.md) | توقيعات الحالة ما بعد الكم (XMSS, LMS/HSS)، التحكم في الميزات |
| [docs/Psram.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/Psram.md) | وحدة تخزين وهمية اختيارية microSD والسلوك ذو الصلة |
| [docs/RRAM_LAYOUT.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/RRAM_LAYOUT.md) | **4,194,304 بايت** من RRAM على الشريحة: إزاحات الخزنة من المصدر، تخطيط HAL، ملاحظات التآكل/التصفير |
| [docs/TEST_RESULTS.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/TEST_RESULTS.md#run-metadata) | يفتح عند **بيانات التشغيل**؛ ملخص خط الأنابيب، النواقل، dudect، cargo-fuzz ([القسم 6](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/TEST_RESULTS.md#6-cargo-fuzz-libfuzzer))، دورة حياة المفاتيح |
| [docs/THREE_FACTOR_AUTH.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/THREE_FACTOR_AUTH.md) | الرمز + PIN + القياسات الحيوية الاختيارية: ما ينفذه هذا المستودع مقابل العنصر النائب؛ مخطط التهديد |
| [docs/THREAT_MODEL.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/THREAT_MODEL.md) | نموذج التهديد: الأصول، التهديدات T1–T14، ما يتم الدفاع عنه وما لا يتم، العناصر غير المؤكدة التي تنتظر أجهزة الربع الثاني، حالة التدقيق |
| [docs/PERFORMANCE.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/PERFORMANCE.md) | ملاحظات الأداء |
| [docs/HARDWARE_BRINGUP_TEST_PLAN.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/HARDWARE_BRINGUP_TEST_PLAN.md) | تشغيل الأجهزة الأولى في الربع الثاني: تعداد CCID، `gpg --card-status`، USB CDC `galdralag-provision` لأول PINs عند التشغيل، ثم `gpg --card-edit` / اختبارات التشفير التجريبية |
| [docs/HARDWARE_VERIFICATION.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/HARDWARE_VERIFICATION.md) | تصفير الأجهزة: المحاكاة مقابل التحقق من السيليكون |
| [docs/HARDWARE_TEST.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/HARDWARE_TEST.md) | ملاحظات الاختبار الموجهة للأجهزة |
| [docs/NFC_PN532_INTEGRATION.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/NFC_PN532_INTEGRATION.md) | PN532 / NFC: libnfc، خيارات Rust، باب سلبي مقابل لوحة USB، النصاب مع Shamir وPIN |
| [docs/SDMMC_STORAGE_INTEGRATION.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/SDMMC_STORAGE_INTEGRATION.md) | `embedded-sdmmc` + SPI microSD كتخزين كبير اختياري؛ بديل BOM لـ PSRAM |
| [docs/USB_DONGLE_PCB.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/USB_DONGLE_PCB.md) | كيفية صنع PCB لدونجل USB-A من مرجع Dabao: تنسيق Pico للتقييم هو لتشغيل البرامج الثابتة؛ هذا يزيل رأس GPIO لرمز صغير؛ KiCad، FreeCAD، 5 V / 500 mA مقابل USB-C PD، توجيه QSPI PSRAM |

نفس المسارات تحل على GitHub ضمن [`tree/main/docs`](https://github.com/Supermagnum/Galdralag-firmware/tree/main/docs) و [`tree/main/Hardware`](https://github.com/Supermagnum/Galdralag-firmware/tree/main/Hardware).

---

## توافق OpenPGP و GnuPG

تنفذ البرامج الثابتة **تطبيق بطاقة OpenPGP** (موثق كإصدار **3.4.1** في [docs/OPENPGP_CARD.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/OPENPGP_CARD.md)). هذا هو نفس فئة الأجهزة التي يقودها GnuPG لـ **بطاقات OpenPGP الذكية** عبر **CCID/USB**: يحتاج المضيف إلى حزمة بطاقة ذكية عادية (`pcscd`، برامج تشغيل `ccid`، `scdaemon` الخاص بـ GnuPG). **لا يلزم وجود برنامج تشغيل تشفيري مخصص من جانب المضيف** يتجاوز ما تستخدمه لأي بطاقة OpenPGP.

**ما يفعله هذا على المضيف (بمجرد أن يكون الجهاز مرئيًا كقارئ CCID):**

| المجال | ملاحظات |
|------|--------|
| **سير عمل GnuPG** | `gpg --card-status`، `gpg --card-edit`، تشفير/فك تشفير وتوقيع باستخدام مفاتيح على البطاقة |
| **SSH** | `gpg-agent` مع `enable-ssh-support` وإعداد `SSH_AUTH_SOCK` المعتاد |
| **البريد والملفات** | العملاء الذين يستخدمون GnuPG (مثل Thunderbird، Evolution، Kleopatra) وتشفير `gpg` القياسي للملفات |
| **أدوات أخرى** | أي شيء يتحدث إلى بطاقة OpenPGP + CCID بنفس طريقة GnuPG |

**فتحات المفاتيح (الإعدادات الافتراضية النموذجية):** **SIG** (التوقيع)، **DEC** (فك التشفير / ECDH)، **AUT** (المصادقة، مثل SSH). الخوارزميات قابلة للاختيار لكل فتحة (منحنيات Brainpool، NIST P-256/P-384، Ed25519 / X25519، RSA). الجدول الكامل وسلوك `key-attr` موجودان في [docs/OPENPGP_CARD.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/OPENPGP_CARD.md).

**غير مشمول بواسطة بطاقة OpenPGP / GnuPG هنا:** **WebAuthn / FIDO2** هو بروتوكول مختلف وهو خارج نطاق تطبيق البطاقة هذا (انظر نفس المستند).

**بطاقة OpenPGP مقابل رسائل OpenPGP:** تحدد **مواصفات البطاقة** كيف يعرض الرمز PINs، فتحات المفاتيح، والعمليات على البطاقة عبر CCID. يستخدمها **GnuPG** من خلال `scdaemon`. **تنسيق رسالة OpenPGP** للملفات والبريد (RFC 4880 وما يليه) هو طبقة **جانب المضيف**: توفر البطاقة المفاتيح؛ لا يزال GnuPG يطبق تنسيق الرسالة على الكمبيوتر. لا تحدد مواصفات البطاقة ولا RFC 4880 **تقسيم Shamir**، **جلسات ECDH العابرة**، أو **ملفات التشفير الشخصية** — هذه هي [ميزات خاصة بالبرامج الثابتة](#standards-vs-firmware-specific-features).

**حالة التكامل:** منطق OpenPGP و CCID موجود في **`usb-personality`**، **`baochip-openpgp`**، وخدمة **`usb-bao1x`** الخاصة بـ **Xous** (انظر **xous-core**). اختياريًا، **`galdralag-service`** (`services/galdralag`) يعمل كعملية Xous منفصلة، تتصل بـ **`usb-bao1x`** لـ IPC الخاص بـ **CCID**، وتجسر بيانات تزويد **PDDB** إلى **RRAM**؛ البناء وتسجيل **`baosec`**: [services/galdralag/README.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/services/galdralag/README.md) و **`cargo run -p xtask -- build-and-register`**. تخطيط الذاكرة: [docs/RRAM_LAYOUT.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/RRAM_LAYOUT.md). **GnuPG الشامل على أجهزة حقيقية** لا يزال بحاجة إلى صورة كاملة لـ Xous (مع **`ccid-openpgp`**)، وحزمة مضيف CCID عاملة (`pcscd`، برنامج تشغيل)، وعناصر تحت [القيود المعروفة / العمل المفتوح](#known-limitations--open-work) والتي تمت معالجتها حيث تنطبق على هدف الشحن الخاص بك.

## جلسة الرمز وتصدير المفاتيح

**الفصل المادي (فصل USB):** يفقد المضيف جهاز USB؛ تفشل أي عملية قيد التنفيذ حتى يتم توصيل الرمز مرة أخرى وإعادة تعرفه. على الجهاز، يتم مسح **جلسة بطاقة OpenPGP**: **حالة التحقق من PIN** لا تبقى بعد إيقاف التشغيل أو الإزالة، لذلك **التوقيع وفك التشفير والعمليات المحمية الأخرى تتطلب التحقق من PIN مرة أخرى** بعد إعادة الاتصال، مثل بطاقات OpenPGP الذكية الأخرى. **تظل مواد المفتاح الخاص مخزنة على الرمز** في تخزين خزنة محكمة الإغلاق؛ فصل التيار لا يمحوها ما لم يتم تشغيل مسار **تصفير** أو مسح منفصل.

**ما قد يغادر الجهاز:** حسب التصميم، **فقط مواد المفتاح العام** مسموح لها بعبور رابط USB (على سبيل المثال حزم **المفتاح العام** لـ OpenPGP والبيانات ذات الصلة التي تعرضها مواصفات البطاقة للمضيف). **المفاتيح الخاصة**، والمتجهات السرية الخام، وكتل المفاتيح المختومة **لا** تغادر الجهاز عبر مسارات البرامج الثابتة العادية؛ تعمل عمليات المفتاح الخاص **على الرمز**. يتلقى المضيف **نتائج التشفير** (التوقيعات، والنص العادي المُفكَّك تشفيره لسير عمل فك التشفير بمساعدة البطاقة) حيث تتطلب الأوامر القياسية ذلك، وليس نسخة محمولة من المفتاح الخاص.

**استيراد المفاتيح إلى الجهاز:** من الممكن أيضًا **استيراد المفاتيح العامة** إلى الرمز (على سبيل المثال مراسي الثقة، شهادات النظراء، أو حزم OpenPGP العامة للتحقق على الجهاز). توفر **خزنة** البرامج الثابتة **فتحات للمفاتيح العامة** للمواد غير السرية (`crates/vault/src/public_key_vault.rs`). أدوات المضيف لتحميل تلك الفتحات موصوفة في [docs/GALDRA-TOOL.md](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/GALDRA-TOOL.md) مع نضوج التكامل.

---

## شبكة الثقة وحفلات توقيع المفاتيح

يستخدم OpenPGP و **GnuPG** نموذج ثقة لا مركزي—**شبكة الثقة**—للمساعدة في التحقق من يملك أي المفاتيح وما إذا كان يجب الاعتماد على **مفتاح عام** معين. هذا النموذج بالكامل **جانب المضيف**. عندما تكون التصديقات المدعومة بالرقاقة مثل [الهوية الإلكترونية الألمانية و Governikus](#german-eid-and-governikus-as-a-trust-anchor-for-public-keys) غير متوفرة أو غير مناسبة، فهو البديل اللامركزي المعتاد (**حفلات توقيع المفاتيح**، التوقيعات على الشهادات)؛ عندما **تكون** متوفرة، يمكن لكلا النهجين التعايش كمسارات تكميلية.

**بصمة Galdralag (`G:`):** لسير العمل التحقق الشخصي، يمكن لـ **Galdra** عرض بصمة **مرتبطة بالجهاز** مشتقة من المفتاح العام **SIG** للرمز (**BLAKE3-160**، بادئة `G:`). إنها **ليست** بصمة شهادة OpenPGP v4. إنها **متوفرة فقط** عندما يكون **ملف التشفير الشخصي** النشط يحتوي على **`ephemeral_ecdh: false`**؛ ملفات التشفير الشخصية المضمنة تكون افتراضيًا **`ephemeral_ecdh: true`**، لذلك عادةً ما تضيف ملفًا شخصيًا للمستخدم مع **`galdra profile add ... --no-ephemeral-ecdh`** لسير العمل التي تحتاج هذا المعرف إلى جانب توقيع مضيف **WoT**. تعريف بلغة بسيطة ومواصفات التنسيق: [بصمة Galdralag](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/GLOSSARY.md#g). دورة الحياة، سياسة التغيير، وبوابة ECDH العابرة: [KEY_LIFECYCLE.md — بصمة Galdralag](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/KEY_LIFECYCLE.md#galdralag-fingerprint-host).

### الحصول على بصمة Galdralag الخاصة بك

يطبع المضيف سلسلة **تبدأ دائمًا بـ `G:`** (BLAKE3-160 على وحدات بايت المفتاح العام SIG، **40 حرفًا سداسيًا عشريًا صغيرًا** بعد البادئة في الشكل القانوني).

1. قم بتثبيت **[Galdra](https://github.com/supermagnum/galdralag-firmware/blob/HEAD/docs/GALDRA-TOOL.md)** على المضيف وتأكد من عمل **PC/SC** (**`pcscd`**، **`libpcsclite`**) حتى تتمكن الأداة من التحدث إلى الرمز عبر CCID (انظر [تجميع وتثبيت أدوات المضيف](#compile-and-install-host-tools-galdra-galdrad-galdra-gtk)).
2. قم بتوصيل الرمز (افتحه إذا كان سير عملك يتطلب ذلك).
3. اختر **ملف تشفير شخصي** يحتوي على **`ephemeral_ecdh: false`**. تأكد مع **`galdra profile show <name>`** (`ephemeral_ecdh: off`). اسم الملف الشخصي الافتراضي **`standard`** عادةً ما يحتوي على **`ephemeral_ecdh: on`**؛ قم بإنشاء واحد مع **`galdra profile add <name> ... --no-ephemeral-ecdh`** إذا لزم الأمر.
4. شغِّل:```bash
galdra identity fingerprint
# If you use a non-default profile:
galdra identity fingerprint --profile <name>

المخرجات القابلة للقراءة آليًا: galdra --emit json identity fingerprint (اختياريًا --profile <name>).

ما هي شبكة الثقة؟

تتضمن التطبيقات المتوافقة مع OpenPGP مخططًا لفحص الشهادات للمساعدة في التحقق من ملكية المفاتيح؛ وقد أُطلق على عمليته اسم 'شبكة الثقة'. يمكن توقيع شهادات OpenPGP (مفتاح عام واحد أو أكثر بالإضافة إلى مادة المالك/معرف المستخدم) رقميًا من قبل مستخدمين آخرين، الذين بذلك يؤيدون الارتباط بين ذلك المفتاح العام والشخص أو الكيان المذكور في الشهادة.

كيف يعمل؟

  1. توزيع المفاتيح. تقوم بنشر أو إرسال مفتاحك العام (على سبيل المثال مفتاح تم إنشاؤه باستخدام gpg --full-generate-key على المضيف، أو محمول على رمز يدعم OpenPGP).
  2. التحقق من الهوية. يتحقق الآخرون من أن المفتاح العام ينتمي إليك حقًا—عادة شخصيًا أو عبر قنوات يثقون بها بالفعل.
  3. توقيع المفتاح. بمجرد الاقتناع، يقومون بتوقيع شهادتك باستخدام مفتاحهم الخاص.
  4. نشر الثقة. تضيف كل توقيع دليلاً إلى الشبكة؛ الأشخاص الذين يثقون بـ الموقع قد يمدون ثقة جزئية لمفتاحك وفقًا لإعدادات الثقة في GnuPG الخاصة بهم.

حفلات توقيع المفاتيح

حفلة توقيع المفاتيح هي اجتماع شخصي حيث يتبادل المشاركون بصمات المفاتيح ويتحققون من هوية بعضهم البعض قبل توقيع الشهادات لاحقًا.

الخصائص النموذجية:

  • يجتمع المشاركون وجهًا لوجه ويتحققون من الهوية باستخدام هوية حكومية، أو بيانات اعتماد تنظيمية، أو أي إثبات آخر متفق عليه.
  • بعد التحقق، يوقع المشاركون المفاتيح العامة لبعضهم البعض (عادة بعد الحدث—انظر سير العمل أدناه).

ينتج عن ذلك رسم بياني اجتماعي: إذا كانت أليس تثق في بوب وقد وقع بوب على مفتاح تشارلي، فقد تختار أليس الثقة بمفتاح تشارلي اعتمادًا على عمق الثقة والسياسة.

سبب أهمية هذه الأحداث:

  • التحقق الشخصي يمكن أن يكون أقوى من التأكيد عن بعد البحت لربط مفتاح بشخص.
  • شبكة الثقة. ينتشر الدليل إلى ما وراء الاجتماعات الثنائية لأولئك الذين يستخدمون ثقة المالك وسلاسل التوقيع.
  • معيار مجتمعي. يُستخدم في دوائر الراديو الهواة، ومشاريع المصادر المفتوحة، ومؤتمرات التشفير.
  • النظافة التشغيلية. يقلل من استقبال المفاتيح الخاطئة أو المستبدلة عند اتباع الإجراءات.

سير العمل النموذجي في حفلة توقيع المفاتيح

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

قبل الحدث. قم بحساب وتسجيل بصمتك (ملخص مشتق من تجزئة المفتاح العام—قصير بما يكفي للمقارنة بشكل موثوق). لا تعتمد على تبادل المفاتيح الكاملة على الورق في هذه المرحلة ما لم يحدد المنظمون خلاف ذلك.```bash

Key fingerprint for YOUR_KEY_ID (example)

gpg --fingerprint YOUR_KEY_ID

root@kitploit:~
أحضر البصمة على ورق أو وسيلة أخرى متينة (مثال على الشكل: `ABCD 1234 EFGH 5678 90AB CDEF 1234 5678 90AB CDEF`).

**في الحدث (البصمات فقط).** تبادل **البصمات**، وتحقق من الهويات، ولاحظ أي البصمات تعود لأي شخص تم التحقق منه. تأكد من أن الهوية المزعومة لكل مشارك تتطابق مع المستندات التي تم فحصها.

**بعد الحدث.** احصل على **المفاتيح العامة** الكاملة من **خوادم المفاتيح** أو التوزيع المباشر؛ تأكد من أن المفاتيح التي تم تنزيلها تطابق **البصمات** المسجلة على الورق؛ **وقّع** على المفاتيح التي تحققت منها؛ اختياريًا **ارفع** التواقيع ليتمكن الآخرون من استخدامها.

### البصمات بدلاً من المفاتيح الكاملة في الحدث

- **الأمن العملياتي.** يحافظ على هجمات الاستبدال مرتبطة بالبصمات التي تم التحقق منها بدلاً من الثقة في أجهزة عشوائية أثناء الحدث.
- **البساطة.** تتناسب البصمات مع الورق وسريعة القراءة بصوت عالٍ أو المقارنة.
- **التحقق.** بعد التنزيل، إعادة حساب البصمة يتحقق من السلامة من البداية إلى النهاية.

### خوادم المفاتيح

**خوادم المفاتيح** هي مستودعات شبكية تخزن وتنسخ **المفاتيح العامة** لـ OpenPGP (والتحديثات مثل التوقيعات والإبطالات). تجعل المفاتيح قابلة للاكتشاف بواسطة **معرف المستخدم** أو **معرف المفتاح** أو **البصمة** وتدعم التوزيع الواسع النطاق لشبكة الثقة.

كيف تتصرف من حيث المبدأ:

- **النسخ الموزع.** الرفع إلى خادم واحد يشارك في شبكة مزامنة غالبًا ما ينتشر إلى الأقران (مجموعات **SKS** الكلاسيكية عملت بهذه الطريقة).
- **المزامنة.** المفاتيح الجديدة والتوقيعات وشهادات الإبطال تنتشر وفقًا لسياسة كل خادم واتصاله.
- **الوصول العام للقراءة.** فقط المواد **العامة** مخصصة للنشر؛ **المفاتيح الخاصة** يجب ألا تُرفع أبدًا.

**الخصوصية.** المفاتيح المنشورة تكشف عن **معرفات المستخدمين** (غالبًا ما تشمل عناوين البريد الإلكتروني). تعامل مع الرفوعات على أنها **عامة وطويلة الأمد** على العديد من الخوادم؛ ارفع **شهادات الإبطال** عندما يجب إيقاف مفتاح. تختلف السياسة حسب المشغل ([keys.openpgp.org](https://keys.openpgp.org/) تختلف عن المجموعات القديمة).

**طوبولوجيا الأقران.** الرسوم البيانية لعلاقات الخوادم تظهر في [spider.pgpkeys.eu/graphs/](https://spider.pgpkeys.eu/graphs/)؛ وقوائم الأقران الموجهة لـ SKS في [spider.pgpkeys.eu/sks-peers](https://spider.pgpkeys.eu/sks-peers).

### استخدام خوادم المفاتيح```bash
# Upload your signed key (after local signing)
gpg --send-keys YOUR_KEY_ID

# Search by mail or name (behaviour depends on keyserver configured in gpg.conf)
gpg --search-keys [email protected]

# Refresh imported keys from configured keyservers
gpg --refresh-keys

خوادم المفاتيح الشائعة

الخادمملاحظات
keys.openpgp.orgمستخدم على نطاق واسع؛ تحقق قائم على الموافقة لمعرفات المستخدم المرتبطة بالبريد الإلكتروني
pgp.mit.eduخادم مستضاف من MIT ومرتبط تاريخياً بشبكات SKS-era
pool.sks-keyservers.netاسم المضيف القديم للتجميع المرتبط بنظام SKS السابق؛ تتفاوت الاتصال اليوم

أفضل الممارسات والتحذيرات

  • انشر مفتاحك العام (أو التوقيعات على مفاتيح الآخرين) عندما تسمح سياستك باكتشاف أوسع.
  • قم بتشغيل gpg --refresh-keys بشكل دوري حتى تنتشر عمليات الإلغاء والتوقيعات الجديدة محلياً.
  • توقيع المفاتيح يؤكد ارتباط الهوية، وليس قوة التشفير—وقع فقط بعد التحقق المتناسب.
  • التوقيع يعني: أنت تشهد أن هذا المفتاح العام كان ينتمي إلى تلك الهوية التي تم التحقق منها وقت التوقيع؛ الآخرون يختارون مسارات الثقة بأنفسهم.
  • قبل نشر بصمة Galdralag، تأكد من أن الملف الشخصي النشط يحتوي على ephemeral_ecdh: false باستخدام galdra profile show <name>.

للسلوك الرسمي لـ gpg، ونماذج الثقة، وخيارات التوزيع، راجع دليل GnuPG والوثائق الرسمية.

يستضيف مشروع Fulla (Supermagnum/Fulla على GitHub) عمل خادم التسجيل المتوافق مع WoT: التنفيذ والمواصفات المتطورة لتخزين المفاتيح العامة للمساهمين بالإضافة إلى تسميات الهواة اللاسلكية الاختيارية، وتلميحات البريد، و**organisation** (تهجئة JSON)، و**role، وnote، وbadge_number، وphone_number، والأعمدة ذات الصلة المتوافقة مع بيانات الاتصال الخاصة بـ Galdra. يقوم galdra keyserver push بإرسال طلب POST /api/v1/keys بصيغة JSON (بما في ذلك armored_public_key، وemail``**، وتلك الحقول الاختيارية عند تمرير علامات CLI)؛ تم تنفيذ **galdra keyserver fetch** وكتلة التكوين **[keyserver]** في **galdra** / **galdra-core-host`** مقابل هذا الاتجاه. ؛ من المتوقع وجود خدمة عامة في المستقبل. توجد نصوص تصميم تاريخية إضافية في .


المعايير مقابل الميزات الخاصة بالبرامج الثابتة

تتوافق أجزاء مختلفة من هذا المشروع مع معايير مختلفة. يقتصر التوافق مع GnuPG على ما يحدده تطبيق بطاقة OpenPGP وCCID. يتم تنفيذ الميزات الأخرى في البرامج الثابتة (وأحياناً في أدوات المضيف Galdra) ولكنها ليست شيئاً يمكنك استدعاؤه عبر سير عمل بطاقة gpg القياسي.

للسلوك اليومي للبطاقة، اعتمد على docs/OPENPGP_CARD.md. للميزات الخاصة بالخزنة فقط أو الفريدة للرمز، استخدم البرامج الثابتة لهذا المستودع ووثائق أداة Galdra.


مشاركة الشامير السري وتشفير القرص

لا تحدد مجموعات بطاقة OpenPGP وGnuPG مشاركة شامير السري (SSS) للمفاتيح أو لإلغاء قفل القرص. لا تزال SSS مفيدة بجانب التشفير العادي: فهي لا تحل محل التشفير المتناظر على القرص أبداً تقريباً — بل تحمي السر الصغير (المفتاح الرئيسي أو كلمة المرور) الذي يفتح ذلك التشفير.

النمط (دائماً نفس الفكرة):

الأساليب الشائعة في العالم الحقيقي

1. LUKS (لينكس) وSSS خارجي

يقوم LUKS بتشفير الحجم بمفتاح رئيسي. يمكنك استخراج ذلك المفتاح (أو سر فتحة المفتاح، حسب إجراءاتك)، وتقسيمه باستخدام أداة SSS، وتخزين الحصص بشكل منفصل. عند فتح القفل، قم بدمج K من الحصص، وأعد بناء مادة المفتاح، وزودها لـ cryptsetup (انظر وثائق توزيعة لينكس الخاصة بك؛ سوء التعامل مع المفاتيح يمكن أن يمنع الوصول).

مثال على الشكل باستخدام أدوات ssss ("Shamir's Secret Sharing Scheme") (تختلف الأسماء والحزم حسب نظام التشغيل):```bash

Example: 3-of-5 split of a file containing key material (illustrative only)

ssss-split -t 3 -n 5 < luks_master.key

Later: combine shares, then unlock (adapt device path and cryptsetup flow)

ssss-combine -t 3 | cryptsetup luksOpen /dev/sdX vault

root@kitploit:~
**2. HashiCorp Vault**

[Vault](https://www.hashicorp.com/products/vault) uses Shamir for **unseal**: the storage encryption key is split at init (e.g. 3-of-5 operators each hold a share). After restart, **K** shares must be entered to unseal. Same **K-of-N on a master secret** pattern as LUKS, applied to a secrets engine rather than a block device.

**3. Galdralag firmware (`vsss-rs`)**

This repository uses [`vsss-rs`](https://crates.io/crates/vsss-rs) (RustCrypto ecosystem) for on-device Shamir. The same **layering** applies if you align it with bulk encryption:

- Generate a random 256-bit (or appropriate) master key.
- Encrypt the drive or bulk store with **AES-GCM** or **ChaCha20-Poly1305** using that key (this matches the workspace's audited symmetric crates).
- Use `vsss-rs` to split the master key into **N** shares with threshold **K**.
- Store shares in vault slots, other devices, or with key holders.
- On boot or recovery, collect **K** shares, reconstruct, then use **HKDF** (or your policy) for domain-separated subkeys if needed.

**4. VeraCrypt**

VeraCrypt does not implement SSS internally. The same **external** pattern applies: split the **passphrase or keyfile material** with an SSS tool; do not try to Shamir-split the volume's ciphertext.

### Hybrid pattern (large data)

SSS is for **small secrets** (key size). You **do not** apply Shamir to multi-gigabyte ciphertext. The usual layering:```text
[Drive data]
    encrypted by
[Symmetric master key, e.g. 32-byte AES-256]
    split by SSS into
[Share 1] [Share 2] ... [Share N]
    (each share may be wrapped with a recipient's PGP key, HSM, or offline media)

وهذا يتوافق مع ما يجمعه هذا المشروع بالفعل: aes-gcm / chacha20poly1305 للبيانات الساكنة، vsss-rs لتقسيم السر الرئيسي، hkdf للاشتقاق بعد إعادة البناء.

قرارات عملية رئيسية

القرارالخيارات النموذجية
العتبة

التعامل التشغيلي مع المفاتيح لـ LUKS والتشفير الكامل للقرص حساس أمنيًا؛ اتبع إرشادات البائع والتوزيع ونماذج التهديد لبيئتك.

شامير بالإضافة إلى Brainpool: مثال وملاءمة مؤسسية

أحد الأنماط الملموسة هو محرك أو وحدة تخزين مشفر باستخدام منحنيات Brainpool حيث تتطلب مجموعتك ذلك (على سبيل المثال لـ ECDH/ECDSA حول سر رئيسي)، مقترنًا بـ مشاركة سر شامير على المواد الرئيسية التي تفتح ذلك التشفير (نفس الطبقات ذات السر الصغير أعلاه: SSS يحمي المفتاح، وليس النص المشفر متعدد الجيجابايت). إذا تم مراجعة البرامج الثابتة والمضيفة التي تنفذ سير العمل هذا بشكل مستقل، يمكن أن يكون هذا المزيج قيمًا للمؤسسات التي يجب أن تفي بسياسات النصاب وملفات التشفير الوطنية في نفس الوقت.

لماذا تُناقش منحنيات Brainpool (مثل BrainpoolP256r1، BrainpoolP384r1) غالبًا في هذا السياق:

  • BSI (هيئة الأمن السيبراني الفيدرالية الألمانية) تفرض Brainpool في العديد من ملفات النشر؛ تظهر المتطلبات في سياسات المشتريات واللوائح للحكومة الأوروبية و الناتو.
  • المعلمات محددة بالكامل وقابلة للتحقق في RFC 5639، مما يقلل من مخاوف "لا شيء في جعبتي" مقارنة بالنقاشات الأقدم حول بعض طرق توليد منحنيات NIST.
  • سابقة IETF: RFC 5639 موجود بالفعل على مسار المعايير لهذه المنحنيات.

السيناريوهات التي يلبي فيها دمج SSS مع تشفير من فئة Brainpool احتياجات مؤسسية (توضيحي؛ وليس نصيحة قانونية أو امتثال):

الهوية الإلكترونية الألمانية و Governikus كمرساة ثقة للمفاتيح العامة

إذا كان توقيع OpenPGP من نمط Governikus أو إثبات الهوية الإلكترونية الوطنية المماثلة المدعومة بالرقاقة غير متاح أو عملي لولايتك القضائية أو سير عملك، يصف شبكة الثقة وحفلات توقيع المفاتيح نهجًا بديلاً على جانب المضيف يعتمد على التحقق الشخصي وتوقيعات الأطراف الثالثة على الشهادات.

مصادقة مفتاح OpenPGP من Governikus هي خدمة عبر الإنترنت تُدار نيابة عن BSI (المكتب الفيدرالي لأمن المعلومات في ألمانيا). بعد أن يصادق مقدم الطلب باستخدام بطاقة هوية قادرة على الهوية الإلكترونية الألمانية، أو بطاقة هوية إلكترونية أوروبية للمواطنين الأوروبيين، أو تصريح إقامة إلكتروني، تتحقق الخدمة من تطابق الاسم القانوني الموثق مع معرف المستخدم الخاص بـ OpenPGP على المفتاح العام الذي تم تحميله. إذا تطابق، يقوم Governikus بتوقيع ذلك المفتاح العام باستخدام مفتاح توقيع الخدمة بحيث يمكن لأطراف ثالثة التحقق من الإثبات.

سير عمل عملي مع هذه البرامج الثابتة: قم بإنشاء مفتاح غير متماثل Brainpool على الرمز (توليد بطاقة OpenPGP كالمعتاد)، قم بتصدير المفتاح العام أو الشهادة إلى المضيف، أكمل عملية تقديم Governikus بما في ذلك مصادقة الهوية الإلكترونية (عادةً AusweisApp وقراءة بطاقة NFC)، واستخدم المفتاح العام الموقع الذي تم إرجاعه بواسطة الخدمة (على سبيل المثال من توزيع البريد الإلكتروني). يبقى المفتاح الخاص على Galdralag طوال الوقت.

لا يحل أي مسار محل الآخر. تربط الهوية الإلكترونية وخطوة Governikus المفتاح العام بـ الهوية التي تم التحقق منها مقابل الشريحة في وقت التقديم؛ لا توفر السرية الأمامية، أو نصاب شامير K-of-N للمواد الرئيسية طويلة الأجل، أو ملفات التشفير للبيانات الكبيرة — هذه ميزات خاصة بالبرامج الثابتة موصوفة في مكان آخر في هذا الملف التمهيدي. كما أن شريحة الهوية الإلكترونية وعملية الإصدار المحيطة بها لا تنفذان، بحد ذاتها، سلوك ECDH والتتالي المؤقت للرمز. على العكس من ذلك، فإن مفتاح OpenPGP من Brainpool الذي تم إنشاؤه على الجهاز يتوافق مع سياق نشر BSI/EU الذي تمت مناقشته بالفعل لـ الاستخدام المؤسسي لـ Brainpool، ولكن بدون خطوة إثبات خارجية، يجب على المراسلين الاعتماد على وسائل أخرى لربط بصمة الإصبع بـ شخص قانوني.

الطبقةالدور
المفتاح العام لـ OpenPGP (على سبيل المثال Brainpool على Galdralag)البنية التشفيرية والتحكم في المفتاح الخاص على الرمز؛ تتبع اختيارات المنحنيات توقعات فئة BSI TR-03111 (انظر صفوف قدرة Brainpool ومناقشة TR-03111 في )

القيد: التحقق قائم على الاسم. إذا شارك شخصان نفس الاسم القانوني في الحقول التي تقارنها الخدمة، فإن الإثبات لا يميز بينهما؛ فهو يؤكد ارتباط الهوية بهذا الاسم في وقت الإثبات، وليس التفرد العالمي. تظل مخاوف OpenPGP المعتادة (ربط البريد الإلكتروني، تدوير المفتاح، الإلغاء) سارية المفعول.

توافق السياسات: نفس BSI الذي يحدد الإرشادات الفنية المتعلقة بـ Brainpool (BSI TR-03111؛ متجهات التوافق ضمن crates/vault/tests/bsi_vectors/) يقف أيضًا وراء عملية توقيع الهوية الإلكترونية الخاصة بـ Governikus، وهو ما يهم غالبًا في البيئات الألمانية والأوروبية حيث تكون Brainpool مطلوبة بالفعل أو مفضلة — انظر شامير بالإضافة إلى Brainpool: مثال وملاءمة مؤسسية.

نطاق أوسع (ملاحظة بحثية، وليس مسحًا مكتملاً): نفس النمط — ربط مفتاح OpenPGP العام بهوية موثقة بالشريحة — قابل للتطبيق من حيث المبدأ حيثما توجد هوية إلكترونية وطنية؛ أي مقدمي الخدمات يقدمون خطوة توقيع مشابهة لـ Governikus، وتحت أي قواعد، هو سؤال منفصل يستحق التحقيق مع توسع عمليات النشر. توجد لدى دول أوروبية أخرى أنظمة هوية إلكترونية قائمة على البطاقات تحت eIDAS قد تدعم مراسي ثقة أقوى أو مماثلة للمسار الألماني وحده؛ لا يقوم هذا الملف التمهيدي بتجميعها.

اعتمدت كل من إستونيا وبلجيكا NIST P-384 على الشريحة بدلاً من Brainpool، في حين يركز ملف BSI الألماني للقطاع العام على Brainpool (انظر أعلاه). يدعم Galdralag بالفعل Brainpool، NIST P-256/P-384، و RSA للاستخدام القادر على OpenPGP (غير متماثل / اتفاق المفاتيح)، لذا فإن نفس نمط مرساة الثقة لا يعتمد فقط على مطابقة تفضيل منحنى ألمانيا.

خارج منطقة EU/EEA، يصعب تطبيق نمط مرساة الثقة القائم على البطاقة: الولايات المتحدة لديها بطاقة شريحة (PIV) لكنها مقصورة على الموظفين الفيدراليين وتقع ضمن X.509/FPKI، غير مدمجة مع OpenPGP؛ كندا ليس لديها بطاقة توقيع وطنية على الشريحة بالمعنى المستخدم أعلاه. وهذا يحد النمط بشكل رئيسي إلى الولايات القضائية التي لديها شهادات حكومية على شريحة صادرة عالميًا — منطقة EU eIDAS هي حيث يكون النموذج أقوى حاليًا.


عملية المعايير: شامير وتبادل المفاتيح المؤقتة

عندما يصل العتاد إلى حالة جاهزة للمستهلك، فإن الأشخاص الذين يرغبون في أن تصبح مشاركة سر شامير و تبادل المفاتيح المؤقتة الموثق جزءًا من سلوك OpenPGP / GnuPG القابل للتشغيل البيني (بدلاً من كونها ميزات خاصة بالبرامج الثابتة فقط) سيحتاجون إلى دفع تغيير المعايير والتنفيذ في مكان آخر. لا يتحدث هذا المستودع باسم IETF أو GnuPG؛ الأماكن أدناه هي حيث تُتابع هذه التعديلات عادةً.

CESS (معيار مفتوح ذو صلة)

CESS — مشاركة سر شامير المسحورة تشفيريًا — هو معيار تشفير مفتوح لـ المشاركة السرية بالعتبة مع تشفير موثق مستقل عن التشفير، تغليف المشاركات القائم على كلمة المرور، وتبادل مفاتيح هجين اختياري بعد-كمي. يحتوي مستودع CESS على المواصفات المعيارية، سجل الخوارزميات، متجهات الاختبار، وأداة تشغيل التوافق.

تتوافق هذه البرامج الثابتة مع CESS للإنشاءات المنفذة هنا: قواعد المشاركة والمغلف القابلة للتشغيل البيني للمواصفات تقع جنبًا إلى جنب مع نفس موضوعات شامير، Brainpool، و ملف التشفير الموصوفة في مكان آخر في هذا الملف التمهيدي. النص المعياري منفصل عن هذا المستودع؛ موقف التوافق (ما يطابق المواصفات، ما يختلف مع الاحتفاظ بخوارزميات مثل AES و SHA-256 في ملفات التعريف، وخريطة الطريق نحو قابلية تشغيل أقوى): docs/CESS_CONFORMANCE.md.

Sequoia PGP (إذا كان هذا المستودع غير مستجيب)

إذا لم يجب مشرفو مستودع GitHub هذا على المشاكل، أو طلبات السحب، أو البريد الإلكتروني، لا يزال بإمكانك تطوير تشفير جديد، سلوك OpenPGP، و عمل متعلق بالمعايير في النظام البيئي الأوسع. Sequoia PGP هي مجموعة OpenPGP مستقلة مبنية بلغة Rust (سلامة الذاكرة، تصميم يعطي الأولوية للمكتبات، مشاركة نشطة في IETF/النظام البيئي) حيث يحدث الكثير من التطوير العام. إنها ليست هذا المشروع؛ يتم توثيقها هنا كـ مسار بديل عملي عندما يكون upstream هنا صامتًا.

تصف صفحة ساهِم الترخيص (LGPL 2.0 أو أحدث لمعظم المشاريع)، وشهادة المنشأ للمطور، وأن الميزات التجارية الأكبر قد تتطلب اتفاقًا مسبقًا وترتيبات صيانة طويلة الأجل — اقرأ تلك الصفحة قبل استثمار جهد كبير.

من الجيد أيضًا متابعة https://autocrypt2.org/#/


دعم المنصة (Linux فقط)

لن يتم تجميع قاعدة التعليمات البرمجية هذه والتطبيقات ذات الصلة لنظامي macOS أو Windows. تستهدف أدوات المضيف (galdra، galdrad، galdra-gtk) والأدوات الداعمة Linux. هذا قرار متعمد بناءً على نموذج التهديد للمشروع ومتطلبات التدقيق المذكورة في جميع أنحاء هذا المستند.

لماذا ليس Windows

  • مايكروسوفت لديها علاقة وثيقة مع NSA ووكالات استخبارات أخرى (تم الكشف عنها جزئيًا من خلال تسريبات سنودن).
  • المتغير _NSAKEY المكتشف في Windows NT في عام 1999 أثار جدلاً كبيرًا. صرحت مايكروسوفت أنه كان مفتاح احتياطي؛ لم يتم إثبات ذلك بشكل كامل في أي من الاتجاهين.
  • تليمة Windows ترسل كمية كبيرة من البيانات إلى مايكروسوفت، مع تحكم محدود للمستخدم.
  • المصدر المغلق يعني أنه لا يمكنك التحقق مما يفعله نظام التشغيل فعليًا.

مشتبه به ولكن غير مثبت:

  • نقاط وصول مخفية متعمدة للوكالات الحكومية.
  • جمع بيانات يتجاوز ما يتم الكشف عنه في سياسات الخصوصية.

لماذا Linux

  • مصدر مفتوح. الكود قابل للتدقيق علنًا؛ يتم اكتشاف الثغرات وإصلاحها بواسطة مجتمع عالمي.
  • قابلية تكوين شديدة. يمكن تعزيز نظام Linux إلى أبعد بكثير مما تسمح به macOS (SELinux، AppArmor، نواة مخصصة، وما شابه).
  • سطح هجوم ضئيل. يمكن تجريد توزيعات الخادم على وجه الخصوص إلى الأساسيات العارية.
  • لا تقييد بائع. لا تليمة إجبارية أو خدمات مخفية مدمجة.
  • مهيمن في الخوادم. تم اختباره في أصعب البيئات على الإنترنت.

Ubuntu ومشتقاته


Read more

تنزيل الأداة
الحقلالغرضالمضيف (SQLite galdra)مخزن جهات الاتصال على الشريحةالتنسيق / الحد
معرف جهة الاتصالمفتاح أساسي مستقر للمضيفنعملانص (id في SQLite)
اسم العرضتسمية قابلة للقراءة البشريةنعمنعمسلسلة UTF-8؛ بحد أقصى 240 بايت لكل حقل كومة على الشريحة
البريد الإلكترونيعنوان البريد الأساسينعمنعمسلسلة UTF-8؛ البحث على الشريحة بواسطة مسح البريد الإلكتروني
رمز النداءرمز نداء الراديو للهواةنعمنعم12 بايت، مبطن بـ NUL؛ البحث على الشريحة
معرف مشترك DMRمعرف راديو DMRنعمنعمعدد صحيح 32 بت بدون إشارة (0 = غير موجود)؛ البحث على الشريحة
رقم الشارةمعرف الموظف أو الشارةنعمنعمسلسلة UTF-8
المنظمةالوكالة أو صاحب العملنعمنعمسلسلة UTF-8
القسمالفريق أو الوحدةنعمنعمسلسلة UTF-8
الدورتسمية الوظيفة أو المهمةنعمنعمسلسلة UTF-8
ملاحظةتعليق حرنعمنعمسلسلة UTF-8
الانتماء الراديويتسمية النادي أو الشبكة أو التحالفنعمنعمسلسلة UTF-8
الشارعسطر عنوان الشارعنعمنعمسلسلة UTF-8
البلداسم البلد أو رمزهنعمنعمسلسلة UTF-8
الرمز البريديالرمز البريدي ZIPنعمنعمسلسلة UTF-8
المنطقةولاية، مقاطعة، أو منطقةنعمنعمسلسلة UTF-8
معرف Fluxerمعالج Fluxer أو معرفهنعمنعمسلسلة UTF-8
Discord IDمعرف مستخدم Discordنعمنعمسلسلة UTF-8
IRC idلقب IRC أو ما شابهنعمنعمسلسلة UTF-8
رقم الهاتفرقم اتصال صوتي أو SMSنعملاسلسلة UTF-8؛ بحد أقصى 32 حرفاً على المضيف؛ معلن من قبل المقدم، غير موثق
البصمةمرساة المفتاح (بحث، مزامنة)نعم (pgp_fingerprint)نعم32 بايت؛ نمط OpenPGP v4 على السلك؛ ليست نفس بصمة الجهاز G:
المفتاح العاممادة التشفير / التحققنعم (pgp_pubkey)نعم (منطقة المفتاح)الخوارزمية: Ed25519، X25519، Brainpool P-256/P-384/P-512، NIST P-256/P-384، RSA-2048/3072/4096؛ يصل إلى 768 بايت blob على الشريحة
مفتاح محمي بـ PINالمفتاح يتطلب فتح PINالمضيف يخزن مفاتيح OpenPGP بشكل منفصلنعمملخص مدقق PIN + بيانات وصفية لف-wrap AES-GCM على الشريحة
آخر جلبوقت تحديث مادة المفتاحنعم (fetched_at)نعم (last_fetched)UTC على المضيف؛ طابع زمني 32 بت على الشريحة
ينتهي فيوقت انتهاء المفتاحنعملاتاريخ/وقت UTC في SQLite فقط
مصدر المفتاحكيفية إنشاء سجل المضيفنعم (source)لامثال: يدوي، keyserver، WKD، LDAP، ملف، نظير
إثبات مصدر الحقلتسمية الثقة لكل حقل بيانات وصفيةلانعم (source_map)بتان لكل حقل: SelfAttested، HostVerified، RegistrySync، OobVerified
أعلام السجلنشط، قديم، هوية ذاتية، ملغيجزئياً (منطق المضيف)نعممثال: STALE، SELF_KEY على الشريحة
  • مجموعات ناقلات التوافق: بعض المجموعات لا تُنفذ (على سبيل المثال بعض حالات Wycheproof لـ AES-GCM)؛ انظر docs/TEST_RESULTS.md لما هو ضمن النطاق.
  • حقل البيانات الوصفيةOpenPGP / GnuPGمفتاح Galdra (مضيف + مخزن اتصال)
    معرف جهة الاتصال / السجللا (استخدم معرف المفتاح أو البصمة)نعم (id SQLite على المضيف؛ ليس على الشريحة)
    اسم العرضفقط داخل نص معرف المستخدم (الاسم <البريد>)نعم (حقل UTF-8 منفصل)
    البريد الإلكترونيفقط داخل نص معرف المستخدمنعم (حقل منفصل؛ بحث بالبريد الإلكتروني على الشريحة)
    عنوان الشارعلا يوجد حقل قياسينعم
    البلدلا يوجد حقل قياسينعم
    الرمز البريديلا يوجد حقل قياسينعم
    المنطقة / الولايةلا يوجد حقل قياسينعم
    المؤسسةلا يوجد حقل قياسينعم
    القسملا يوجد حقل قياسينعم
    الدور / المسمى الوظيفيلا يوجد حقل قياسينعم
    شارة / معرف الموظفلا يوجد حقل قياسينعم
    نداء النداءلا يوجد حقل قياسينعم (12 بايت، مبطن بـ NUL على الشريحة)
    معرف مشترك DMRلا يوجد حقل قياسينعم (32-bit؛ بحث على الشريحة)
    الانتماء الراديويلا يوجد حقل قياسينعم
    معرف Fluxerلا يوجد حقل قياسينعم
    معرف Discordلا يوجد حقل قياسينعم
    معرف IRCلا يوجد حقل قياسينعم
    رقم الهاتفلا يوجد حقل قياسينعم (SQLite المضيف فقط)
    ملاحظة حرةلا يوجد حقل قياسينعم
    بصمة OpenPGP v4نعم (40 حرف سداسي عشري)اختياري على صف المضيف عند ربط شهادة (pgp_fingerprint)؛ 32 بايت على الشريحة لمفاتيح Galdra
    بصمة جهاز G:لانعم (BLAKE3-160 فوق مفتاح SIG العام؛ أداة مضيفة؛ ليست قيمة OpenPGP v4)
    معرف مفتاح OpenPGPنعم (شكل قصير / طويل)لا
    الثقة / المصدرتوقيعات WoT على معرفات المستخدمتسميات لكل حقل: SelfAttested، HostVerified، RegistrySync، OobVerified (على الشريحة)
    انتهاء صلاحية المفتاحنعم (شهادة / مفتاح فرعي)المضيف فقط (expires_at في SQLite)
    آخر وقت جلب للمفتاحيعتمد على أدوات المضيفنعم (fetched_at / last_fetched)
    المفتاح الخاص على الرمز المميزفتحات بطاقة SIG، DEC، AUTمنطقة مفتاح Galdra منفصلة (ليست حزم معرف مستخدم)
    PIN لاستخدام المفتاح الخاصPW1 / PW3 (بطاقة OpenPGP)غلاف PIN اختياري لكل سجل اتصال Galdra
    كائن بطاقة OpenPGP (ليس في الجدول أعلاه)المضيف (GnuPG)على الرمز المميز
    المفاتيح الفرعية الأساسية SIG / DEC / AUTعام في حلقة المفاتيحخاص في فتحات مختومة
    توقيعات التصديق (WoT)نعملا
    شهادة الإلغاءنعملا
    سمات الخوارزمية (DO 0xC1 / 0xC2 / 0xC3)gpg --card-editنعم
    لم يتم نشر خادم تسجيل Fulla عام بعد
    docs/server.md
    النطاقالمعيار / الوثيقة النموذجيةمكشوف كبطاقة OpenPGP قياسية + GnuPG؟
    تطبيق بطاقة OpenPGP — APDUs، PINs، فتحات SIG/DEC/AUT، إنشاء/توقيع/فك تشفير على البطاقةمواصفات بطاقة OpenPGP (انظر docs/OPENPGP_CARD.md)نعم — نفس مجموعة المضيف مثل بطاقات OpenPGP الذكية الأخرى (gpg، scdaemon، CCID)
    USB CCID — التواصل مع الجهاز كقارئ بطاقات ذكيةفئة جهاز USB CCIDنعم — برامج تشغيل الفئة
    تنسيق رسالة OpenPGP — ملفات مشفرة، بريد، حزم مفاتيحRFC 4880 (والتحديثات)نعم على المضيف — يستخدم GnuPG هذا؛ البطاقة لا تحلل البريد
    مشاركة شامير K-of-N — تقسيم/استعادة مادة المفتاح طويل الأمد في الخزنةغير موجود في مواصفات بطاقة OpenPGP؛ غير موجود في GnuPGلا — فقط أدوات البرامج الثابتة والتزويد؛ ليست عملية gpg --card-edit (انظر شامير وتشفير القرص بالكامل)
    ECDHE المصادَق عليه — بروتوكول جلسة سري مستقبلي على الرمزغير موجود في مواصفات بطاقة OpenPGPلا — خاص بالرمز؛ ليس أمر بطاقة GnuPG
    نظام ملفات التشفير — تسلسلات تشفير متناظرة مسماة (تكديس تشفيرات مستقلة فوق بعضها البعض؛ حتى أربع طبقات، ثلاث طبقات عمق مدعوم) والسياسة المرتبطةغير موجود في مواصفات بطاقة OpenPGPلا — أدوات البرامج الثابتة / رمز المضيف
    شخصيات microSD الوهمية / التخزين الشامل — سلوك USB للمضيف غير المدركغير موجود في مواصفات بطاقة OpenPGPلا — مسارات كود شخصية USB منفصلة
    WebAuthn / FIDO2CTAP / WebAuthnغير منفذ — معيار مختلف عن بطاقة OpenPGP
    الطبقةالدور
    القرصمشفر بـ مفتاح رئيسي (مثل AES-256 عبر LUKS أو VeraCrypt أو طبقة كتلة خام)
    المفتاح الرئيسيمقسم باستخدام SSS إلى N من الحصص، عتبة K-of-N
    الحصصيحتفظ بها أشخاص أو أجهزة أو تخزين غير متصل؛ K من الحصص معاً تعيد بناء المفتاح الرئيسي
    فتح القفلإعادة بناء المفتاح، ثم تمريره إلى cryptsetup أو veracrypt أو مجموعتك
    2 من 3 (فريق صغير، بعض التكرار)؛ 3 من 5 (شائع في المؤسسات)
    تخزين المشاركاترموز مادية، أجهزة منفصلة، ورق، مواقع موزعة جغرافيًا
    حماية المشاركاتتشفير كل مشاركة لمستلم معين (مثلًا باستخدام مفتاح OpenPGP الخاص به) قبل التوزيع
    أين يعاد البناءجهاز معزول عن الشبكة، أو بموجب سياسة HSM، أو في بيئة محكومة — وليس على مضيفين مشتركين غير موثوقين
    السيناريولماذا يهم SSS بالإضافة إلى منحنيات قوية متوافقة مع السياسات
    مغادرة الموظف أو وفاتهيظل الاسترداد ممكنًا بدون السر الحصري لذلك الشخص
    الوصول القانوني بموجب الإجراءات القانونية الواجبةيمكن اشتراط نصاب — لا يملك أي طرف واحد السر الكامل لفتح القفل
    الإيداع المؤسسي للمفاتيحتقسيم قابل للتدقيق؛ لا يملك أي مسؤول واحد وصولاً كاملاً
    مصادرة الأجهزةقد يتم الاستيلاء على الوسائط دون الاستيلاء على كـ من ن مشاركات
    التوافق التنظيمي (EU / BSI)تلبي Brainpool العديد من متطلبات التشفير الألمانية والأوروبية
    هل هذا هراء ذكاء اصطناعي؟
    توقيع Governikusيؤكد أن الاسم الموجود على الشهادة تطابق مع الهوية الموثقة بالشريحة عندما أكمل المستخدم العملية
    الولاية القضائيةالحالة التي تم التطرق إليها في هذا المستند
    ألمانياتم وصف تدفق Governikus/BSI أعلاه
    إستونياهوية إلكترونية قائمة على الشريحة. هاجرت من RSA إلى NIST P-384 (secp384r1) ECDSA في 2017–2018 بعد أن أجبرت ثغرة ROCA على التخلي عن RSA بالكامل (لم تستطع الشريحة توليد مفاتيح RSA آمنة ولم يكن لديها مسار لأحجام مفاتيح أكبر). المفتاح الخاص مقيد بالعتاد ولا يمكن قراءته من البطاقة. لم يتم العثور على خدمة توقيع OpenPGP من نمط Governikus.
    بلجيكاهوية إلكترونية قائمة على الشريحة. البطاقات الأقدم استخدمت RSA 1024 بت؛ البطاقات الأحدث (applet 1.8 فصاعدًا) تستخدم NIST P-384 ECDSA. نظام بيئي نشط للبرمجيات الوسيطة مفتوحة المصدر (eid-mw، OpenSC). لم يتم العثور على خدمة توقيع OpenPGP من نمط Governikus.
    النرويجشريحة بطاقة الهوية الوطنية (الصادرة منذ 2020) متوافقة مع ICAO 9303 وتنفذ شريحة وثيقة سفر فقط؛ لا تحمل وظيفة توقيع هوية إلكترونية. الهوية الإلكترونية للتوقيع منفصلة: مقدمون خاصون معتمدون (Buypass، Commfides) تحت SEID، تاريخيًا RSA 2048 بت، تنتقل إلى RSA 3072 بت مع إدخال ECC في SEID 2.0. لم يتم العثور على خدمة توقيع OpenPGP من نمط Governikus. شريحة السفر والهوية الإلكترونية للتوقيع متميزتان — وهذا مهم إذا حاول شخص ما استخدام شريحة البطاقة فقط مباشرة.
    النمساتم التحقيق جزئيًا. تستخدم الهوية الإلكترونية ECC (مؤكد)؛ المنحنى المحدد غير مؤكد في المصادر المتاحة. نموذج Bürgerkarte متعدد الرموز بدلاً من بطاقة واحدة؛ مهاجر إلى حد كبير إلى تطبيق جوال. مزيد من التحقيق مطلوب لتفاصيل المنحنى وأي خدمة توقيع OpenPGP.
    الولايات المتحدةبطاقة PIV (التحقق من الهوية الشخصية، FIPS 201 / NIST SP 800-78): تُصدر فقط للموظفين والمقاولين الفيدراليين — وليست بطاقة مدنية عالمية. الخوارزميات: NIST P-256 إلزامي لمفاتيح المصادقة؛ P-256 أو P-384 للتوقيع/إدارة المفاتيح؛ RSA 2048/3072 مسموح به أيضًا؛ منحنيات NIST فقط، بدون Brainpool. جذر الثقة هو سلطة السياسة الفيدرالية المشتركة (FCPCAG2)، غير مضمنة في مخازن الثقة التجارية القياسية. لم يتم العثور على خدمة توقيع OpenPGP من نمط Governikus؛ FPKI هي بنية تحتية X.509 منفصلة عن OpenPGP. كون PIV فيدراليًا فقط يعني أنه ليس مرساة ثقة مدنية مثل الهوية الإلكترونية الألمانية.
    كندالا توجد بطاقة هوية وطنية قائمة على الشريحة مع مفاتيح توقيع على الشريحة. الهوية الرقمية مجزأة عبر خطط إقليمية (على سبيل المثال بطاقة خدمات كولومبيا البريطانية)، وتطبيقات جوالة (على سبيل المثال eID-Me)، وإطار عمل اتحادي متطور للشهادات الرقمية. لا توجد بطاقة واحدة قابلة للمقارنة بالنموذج الألماني أو الإستوني أو البلجيكي. لم يتم العثور على بنية تحتية للبطاقات مكافئة — ليست مرساة ثقة قابلة للتطبيق بهذا المعنى.
    دول أخرىلم يتم التحقيق فيها
    الهدفمن أين تبدأ
    نظرة عامة على المشروع، أخبار، مجتمعsequoia-pgp.org
    المساهمة (مشاكل، إصلاحات، ميزات، توثيق)؛ تواصل قبل العمل الكبيرساهِم، تواصل
    وثائق المطور — سطح واجهة برمجة التطبيقات لتوسيع التنفيذ (sequoia-openpgp والصناديق ذات الصلة)وثائق — على سبيل المثال sequoia-openpgp على docs.rs
    المصدر وأدوات التتبعgitlab.com/sequoia-pgp (المكتبة الأساسية والأدوات)؛ github.com/sequoia-pgp (مرايا / مستودعات مختارة)؛ مشاريع
    خوارزميات جديدة في معيار OpenPGPلا تزال تمر عبر فريق عمل IETF OpenPGP. تقوم Sequoia وتنفيذات أخرى بتنفيذ المسودات وRFCs؛ اقترح تغييرات البروتوكول هناك، وتنسق مع المنفذين (بما في ذلك Sequoia) بحيث يتطابق السلوك مع المواصفات.