
مركز هوية تشفيرية مدمجة مدعومة بأجهزة TPM 2.0 وجسر متعدد البروتوكولات لنظام Linux (مفاتيح مرور FIDO2/CTAP2 WebAuthn، وكيل OpenSSH، GnuPG LibAssuan، age-plugin، مخزن إعدادات مشفّر).
.. image:: https://gitlab.com/renich/gpasskey/-/raw/master/assets/banner.svg :width: 100% :align: center :alt: gEnclave banner
|
.. image:: https://gitlab.com/renich/gpasskey/badges/master/pipeline.svg :target: https://gitlab.com/renich/gpasskey/-/commits/master :alt: pipeline status .. image:: https://img.shields.io/gitlab/v/release/renich/gpasskey?logo=gitlab&label=release :target: https://gitlab.com/renich/gpasskey/-/releases :alt: GitLab Release .. image:: https://img.shields.io/badge/Go-1.26+-00ADD8?style=flat&logo=go :target: https://golang.org/ :alt: Go Version .. image:: https://img.shields.io/badge/License-GPLv3-blue.svg?logo=gnu :target: https://www.gnu.org/licenses/gpl-3.0 :alt: License
|
.. image:: https://img.shields.io/badge/FIDO2-CTAP2%20Virtual%20HID-4285F4?logo=fido :target: docs/technical/specs/ctap2-virtual-hid.rst :alt: FIDO2 CTAP2 .. image:: https://img.shields.io/badge/Hardware-TPM%202.0%20Sealed-4CAF50?logo=security :target: docs/technical/specs/tpm-binding.rst :alt: TPM 2.0 .. image:: https://img.shields.io/badge/Bridges-SSH%20%7C%20GPG%20%7C%20Age%20%7C%20D--Bus-8b5cf6 :target: docs/technical/specs/protocol-bridges.rst :alt: Multi-Protocol Bridges .. image:: https://img.shields.io/badge/Donate-Liberapay-f6c915.svg?logo=liberapay&logoColor=black :target: https://liberapay.com/Renich/donate :alt: Donate using Liberapay
.. caution::
برنامج في مرحلة ما قبل ألفا — استخدمه على مسؤوليتك الخاصة!
على الرغم من ترقيم الإصدارات، فإن gEnclave (المعروف سابقًا باسم gpasskey) هو حاليًا برنامج تجريبي في مرحلة ما قبل ألفا يخضع لتطوير معماري سريع. قد تتغير المخططات التشفيرية وتنسيقات الخزنة وجسور البروتوكولات دون توافق مع الإصدارات السابقة.
يوفر gEnclave حاوية أمان موحدة مدعومة بالعتاد تخزّن المفاتيح الخاصة والأسرار في خزنة مشفرة مختومة بـ TPM.
يعمل كجسر متعدد البروتوكولات، يدعم مفاتيح المرور WebAuthn/FIDO2، وOpenSSH Agent، وإضافة التشفير age، ومحاكاة توقيع GnuPG، وإعداد الأسرار المشفرة.
دعم متعدد البروتوكولات:
/dev/uhid لمصادقة مفاتيح المرور الأصلية في المتصفحات (Firefox، Chrome، Chromium) وأنظمة التشغيل.age (v1) (age-plugin-ge/age-plugin-gpasskey).genclave-gpg/gpasskey-gpg) لتوقيع والتحقق من التزامات Git بسلاسة.أمان مدعوم بالعتاد: المفاتيح الخاصة مشفرة بـ AES-256-GCM، ومختومة بشكل أساسي بـ TPM 2.0 مع تخزين مؤقت لـ SRK وتراجع برمجي تلقائي إلى Argon2id.
ربط تشفيري بـ PIN وذاكرة تخزين مؤقت للتفويض: كل عملية مرتبطة بمفتاح فرعي مشتق من PIN مع ذاكرة تخزين مؤقت للتفويض في ذاكرة RAM مقفلة بالنواة (mlock). يدعم مدة انفجار قابلة للتكوين (افتراضيًا 5 ثوانٍ) أو تخزينًا مؤقتًا دائمًا/غير محدود (GENCLAVE_SSH_CACHE_TTL="infinite")، مع تصفير فوري عند تعليق النظام أو القفل اليدوي.
مصادقة مسبقة عبر CLI وتحكم في القفل: افتح أو اقفل الذاكرة المؤقتة مباشرة من الطرفية (ge unlock [--stdin]، ) للنصوص البرمجية الآلية وسير العمل بدون واجهة.
العتاد والنواة
* **TPM 2.0**: جهاز TPM 2.0 فعلي (``/dev/tpmrm0`` أو ``/dev/tpm0``)، أو ``swtpm`` للتطوير بمحاكاة برمجية.
* **نواة Linux مع /dev/uhid**: دعم أصلي في النواة لأجهزة HID في مساحة المستخدم (مفعّل افتراضيًا في التوزيعات الحديثة) لدعم مفاتيح مرور FIDO2/CTAP2 الافتراضية في المتصفح.
تبعيات وقت التشغيل
wl-copy) أو xclip: موصى به لنسخ الحافظة بنقرة واحدة في نافذة الاسترداد من الكوارث.تبعيات البناء والتطوير
* **Go 1.26** أو أحدث
* **GNU Make**
* **swtpm** (اختياري، مطلوب لتنفيذ مجموعة اختبارات التكامل الكاملة)
التثبيت عبر مدير الحزم
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
على Fedora/RHEL/AlmaLinux:
.. code-block:: bash
sudo dnf install golang make tpm2-tools zenity pinentry wl-clipboard swtpm
على Arch Linux:
.. code-block:: bash
sudo pacman -S go make tpm2-tools zenity pinentry wl-clipboard swtpm
على Debian/Ubuntu:
.. code-block:: bash
sudo apt install golang-go make tpm2-tools zenity pinentry-curses wl-clipboard swtpm
البدء السريع
-----------
البناء والتثبيت لحساب المستخدم الخاص بك (موصى به، بدون صلاحيات الجذر):
.. code-block:: bash
make clean && make all
make install-user # Installs to ~/.local/bin, ~/.config/systemd/user, ~/.local/share/dbus-1
أو التثبيت على مستوى النظام (يتطلب صلاحيات الجذر):
.. code-block:: bash
sudo make install # Installs to /usr/local/bin
تفعيل وتشغيل تنشيط المقبس:
.. code-block:: bash
systemctl --user enable --now genclave-ssh.socket genclave-gpg.socket
تهيئة الخزنة والتحقق من الحالة:
.. code-block:: bash
ge status
# Identities are enrolled automatically on first use by clients
# (WebAuthn passkeys, SSH, age, GPG) or via the portal API.
المصادقة المسبقة على الذاكرة المؤقتة للنصوص البرمجية الآلية أو الجلسات بدون واجهة:
.. code-block:: bash
# Unlock cache interactively via TTY:
ge unlock
# Or pre-authenticate via pipeline in scripts:
echo "$PIN" | ge unlock --stdin
# Purge and lock immediately when finished:
ge lock
مفاتيح مرور WebAuthn في المتصفح:
.. code-block:: bash
# Open Firefox or Chrome, go to https://webauthn.io/
# Click "Register" -> enter your PIN in the gEnclave prompt -> Passkey is created!
# Click "Authenticate" -> enter your PIN -> Instant login verified!
إدارة الأسرار المشفرة في مخزن الإعدادات المدعوم بـ TPM:
.. code-block:: bash
ge set-secret my-api-key "super-secret-value"
ge get-secret my-api-key
التوثيق والمواصفات
------------------------------
تم تنظيم وثائقنا الهندسية الشاملة في مواصفات معيارية وسجلات معمارية وخرائط طريق:
* **المواصفات الوظيفية**: `Functional Spec Index`_ — تحدد متطلبات المستخدم ونماذج التفويض.
* **المخططات التقنية**: `Technical Spec Index`_ — معمارية Go التفصيلية والبدائيات التشفيرية وتصاميم الحاوية.
* **سجلات قرارات المعمارية (ADRs)**: `ADR Index`_ — سجل غير قابل للتغيير للخيارات المعمارية والتشفيرية والأمنية.
* **واجهات API وبروتوكولات الاتصال**: `API Spec Index`_ — مقبس الإدارة وبوابات D-Bus ومخططات اتصال الجسور.
* **خارطة طريق تنفيذ المشروع**: `Roadmap Index`_ — الجداول الزمنية الهندسية المرحلية وتسليمات المعالم.
أدلة المستخدم
~~~~~~~~~~~
* `User Quick Start`_ - البدء والتشغيل في 5 دقائق.
* `Installation Guide`_ - إعداد تفصيلي للبناء وudev وsystemd.
* `OpenSSH Guide`_ - تكامل وكيل OpenSSH ومضيفات القفز ومفاتيح FIDO2.
* `GnuPG & Git Signing Guide`_ - إدارة مفاتيح OpenPGP وتوقيع التزامات Git.
* `Pluggable Factors Guide`_ - ملفات المفاتيح وYubiKeys والمقاييس الحيوية ونصاب Shamir.
* `Security Guide`_ - حاوية TPM 2.0 الفعلية وعزل الذاكرة "Wrap and Clear".
* `Configuration Guide`_ - متغيرات البيئة وخيارات الخدمة.
* `CLI Reference`_ - توثيق واجهة سطر الأوامر الكامل.
.. _Functional Spec Index: docs/functional/spec.rst
.. _Technical Spec Index: docs/technical/spec.rst
.. _ADR Index: docs/adrs/index.rst
.. _API Spec Index: docs/api/spec.rst
.. _Roadmap Index: docs/project/roadmap.rst
.. _User Quick Start: docs/user/quickstart.rst
.. _Installation Guide: docs/user/installation.rst
.. _OpenSSH Guide: docs/user/ssh.rst
.. _GnuPG & Git Signing Guide: docs/user/gpg.rst
.. _Pluggable Factors Guide: docs/user/factors.rst
.. _Security Guide: docs/user/security.rst
.. _Configuration Guide: docs/user/configuration.rst
.. _CLI Reference: docs/user/cli.rst
العوامل القابلة للتوصيل والنصاب متعدد الأطراف (المرحلة 7)
------------------------------------------------
**المرحلة 7: محرك العوامل المتعددة القابلة للتوصيل والنصاب متعدد الأطراف** يوفر:
* **مُجزِّئ ملفات عشوائي متدفق**: استخدم أي ملف (من قصيدة نصية قصيرة إلى ملف FLAC صوتي رئيسي بحجم 100GB أو صورة) كعامل تفويض باستهلاك ذاكرة ثابت :math:`\mathcal{O}(1)` (مخزن مؤقت :math:`\le 64\,\text{KB}`).
* **نصاب متعدد الأطراف ("وصفة كوكاكولا")**: **مشاركة سر Shamir الملفوفة بالمفاتيح** على :math:`\text{GF}(2^8)` مع علامات تحقق HMAC، مما يتيح تفويض مفتاح مقسم :math:`k`-من-:math:`n`.
* **العتاد والمقاييس الحيوية**: YubiKey فعلي (Slot 2 HMAC-SHA1)، ومفاتيح FIDO2 فعلية (``hmac-secret``)، والمقاييس الحيوية في Linux (``fprintd``).
* **إعادة تشفير العوامل الديناميكية**: إعادة تشفير ذرية في الذاكرة (``ge rekey``) لتبديل سياسة عوامل الهوية أثناء التشغيل دون إعادة إنشاء المفاتيح.
* **تحديث CLI**: تبسيط واجهة سطر الأوامر إلى ``ge`` المعيارية.
* **فتح تلقائي لسطح المكتب**: تكامل سلس مع Freedesktop Secret Service (``org.freedesktop.secrets``).
راجع `Phase 7 Roadmap`_ و`ADR-006`_ للحصول على المواصفات الكاملة.
.. _Phase 7 Roadmap: docs/project/roadmaps/phase-7-pluggable-factors.rst
.. _ADR-006: docs/adrs/2026-08-25-pluggable-auth-factors.rst
المكونات
----------
* **genclaved**: حاوية الأمان الأساسية وخادم مفتاح أمان USB CTAP2/FIDO2 الافتراضي (``man 8 genclaved``).
* **ge**: أداة سطر الأوامر الأساسية لإدارة الخزنة وإنشاء مفاتيح OpenSSH/GnuPG والإعدادات المشفرة (``man 1 ge``).
* **age-plugin-ge**: إضافة لأداة التشفير ``age`` (``man 1 age-plugin-ge``).
* **genclave-gpg**: جسر محاكاة لتوقيع والتحقق المتوافق مع GnuPG (``man 1 genclave-gpg``).
* **genclave-ui**: مساعد رسومي لإدخال PIN (``man 1 genclave-ui``).
التطوير
-----------
تشغيل اختبارات الوحدة:
.. code-block:: bash
make test
تشغيل مجموعة اختبارات التكامل الكاملة الأصلية لـ Go (تتطلب ``swtpm``):
.. code-block:: bash
make integration-test
الدعم والتبرعات
-------------------
إذا وجدت **gEnclave** مفيدًا وترغب في دعم تطويره المستمر، فكّر في التبرع عبر Liberapay:
.. image:: https://liberapay.com/assets/widgets/donate.svg
:target: https://liberapay.com/Renich/donate
:alt: Donate using Liberapay
الرخصة
-------
حقوق النشر 2026 EVALinux
هذا المشروع مرخص بموجب رخصة GNU General Public License v3.0 أو أحدث.
راجع ملف LICENSE للحصول على التفاصيل.
ge lockArgon2id KDF: اشتقاق مفاتيح كثيف الذاكرة لعبارة المرور الرئيسية والاسترداد والمفاتيح الفرعية.
حماية من القوة الغاشمة: تراجع أسي تلقائي لمحاولات التفويض الفاشلة.
توجيه ذكي للواجهة: كشف تلقائي للجلسة (رسومية مقابل TTY) لمطالبات التفويض.
ذاكرة آمنة: يستخدم mmap/mlock واستراتيجية "Wrap and Clear" لمنع تسرب مواد المفاتيح إلى swap أو كومة GC.
إدارة الهويات: واجهة CLI قوية (ge) لإدارة الخزنة وإدارة الأسرار المشفرة.