
معقل مركزي للهوية التشفيرية مدعوم بعتاد TPM 2.0 وجسر متعدد البروتوكولات لنظام لينكس (مفاتيح مرور FIDO2/CTAP2 WebAuthn، ووكيل OpenSSH، وGnuPG LibAssuan، وage-plugin، ومخزن تهيئة مشفر).
.. image:: https://gitlab.com/renich/gpasskey/-/raw/master/assets/logo.svg :width: 140px :align: center :alt: gpasskey logo
المُعزل المركزي للهوية التشفيرية لنظام لينكس.
.. 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/liberapay/receives/Renich.svg?logo=liberapay :target: https://liberapay.com/Renich/donate :alt: Liberapay .. image:: https://liberapay.com/assets/widgets/donate.svg :target: https://liberapay.com/Renich/donate :alt: Donate using Liberapay
.. caution::
برنامج في مرحلة ما قبل ألفا — استخدمه على مسؤوليتك الخاصة!
على الرغم من ترقيم الإصدارات، فإن gpasskey حاليًا برنامج تجريبي في مرحلة ما قبل ألفا يخضع لتطوير معماري سريع. قد تتغير المخططات التشفيرية وصيغ الخزائن وجسور البروتوكولات دون توافق رجعي.
يوفر gpasskey مُعزلًا أمنيًا مدعومًا بالعتاد يخزّن المفاتيح الخاصة في خزنة مشفّرة.
ويعمل كجسر متعدد البروتوكولات، إذ يدعم وكيل SSH (SSH Agent)، وبروتوكول إضافة التشفير age، ومحاكاة توقيع الالتزامات عبر GnuPG.
/dev/uhid لمصادقة المتصفحات الأصلية (Firefox وChrome وChromium) ونظام التشغيل عبر Passkey.age (الإصدار 1).mlock).mmap/mlock واستراتيجية «التغليف والمسح» (Wrap and Clear) لمنع تسرب المواد المفتاحية إلى مساحة التبديل (swap) أو كومة جامع القمامة (GC heap).gpasskey-cli) لإدارة الخزنة والأسرار المشفّرة.يدعم gpasskey الأمان المدعوم بالعتاد عبر TPM 2.0. وهذا يضمن ألا يغادر مفتاحك الرئيسي شريحة TPM دون تشفير، وأن يظل مرتبطًا بحالة إقلاع النظام.
المتطلبات
* جهاز متوافق مع TPM 2.0 (أو ``swtpm`` لأغراض التطوير).
* تثبيت ``tpm2-tools`` على النظام.
التهيئة
~~~~~~~~~~
تتم تهيئة تخزين TPM تلقائيًا عند إنشاء هوية جديدة. للتحقق من حالة TPM:
.. code-block:: bash
gpasskey-cli status
الاستخدام
~~~~~~~~~~
بعد التهيئة، يستخدم البرنامج الخفي (daemon) شريحة TPM بشفافية. تُختَم جميع البيانات الحساسة مقابل **PCR 0** (البرنامج الثابت الأساسي للنظام) و**PCR 7** (حالة Secure Boot). أي تعديل على البرنامج الثابت أو على إعدادات Secure Boot سيمنع فتح الخزنة، مما يوفر الحماية ضد الهجمات دون اتصال والعبث غير المصرح به بالنظام.
البدء السريع
-------------
ابنِ المشروع وثبّته لحساب المستخدم الخاص بك (موصى به، دون صلاحيات الجذر)::
make clean && make all
make install-user # Installs to ~/.local/bin, ~/.config/systemd/user, ~/.local/share/dbus-1
أو ثبّته على مستوى النظام بالكامل (يتطلب صلاحيات الجذر)::
sudo make install # Installs to /usr/local/bin
فعّل وابدأ آلية socket activation::
systemctl --user enable --now gpasskey-ssh.socket gpasskey-gpg.socket
هيّئ خزنتك وتحقق من الحالة::
gpasskey-cli status
# Identities are enrolled automatically on first use by clients
# (WebAuthn passkeys, SSH, age, GPG) or via the portal API.
مفاتيح مرور WebAuthn في المتصفح::
# Open Firefox or Chrome, go to https://webauthn.io/
# Click "Register" -> enter your PIN in the gpasskey prompt -> Passkey is created!
# Click "Authenticate" -> enter your PIN -> Instant login verified!
إدارة الأسرار المشفّرة في مخزن الإعدادات المدعوم بـ TPM::
gpasskey-cli set-secret my-api-key "super-secret-value"
gpasskey-cli 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.Security Guide_ - مُعزل عتاد TPM 2.0 وعزل الذاكرة عبر «التغليف والمسح» (Wrap and Clear).Configuration Guide_ - متغيرات البيئة وخيارات الخدمة... _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 .. _Security Guide: docs/user/security.rst .. _Configuration Guide: docs/user/configuration.rst
نعمل حاليًا على وضع مواصفات وهندسة المرحلة 7: محرك النصاب القابل للتوصيل متعدد العوامل ومتعدد الأطراف:
\mathcal{O}(1) (مخزن مؤقت :math:\le 64\,\text{KB}).\text{GF}(2^8) مع وسوم تحقق HMAC، مما يتيح تفويضًا بمفاتيح مقسمة :math:k-من-:math:n.hmac-secret)، والقياسات الحيوية لنظام لينكس (fprintd).gpk rekey) لتبديل سياسة عوامل الهوية أثناء التشغيل دون إعادة إنشاء المفاتيح.gpk المعياري (/usr/local/bin/gpk).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
age.شغّل اختبارات الوحدة::
make test
شغّل مجموعة اختبارات التكامل الكاملة الأصلية بلغة Go (تتطلب swtpm)::
make integration-test
إذا وجدت gpasskey مفيدًا وأردت دعم تطويره المستمر، ففكّر في التبرع عبر Liberapay:
.. image:: https://liberapay.com/assets/widgets/donate.svg :target: https://liberapay.com/Renich/donate :alt: Donate using Liberapay
حقوق النشر 2026 EVALinux
هذا المشروع مرخّص بموجب رخصة GNU العامة (GPL) الإصدار 3.0 أو أي إصدار لاحق. راجع ملف LICENSE للتفاصيل.