
Linux向けの集中型、TPM 2.0ハードウェア支援による暗号IDエンクレーブおよびマルチプロトコルブリッジ(FIDO2/CTAP2 WebAuthnパスキー、OpenSSH Agent、GnuPG LibAssuan、age-plugin、暗号化設定ストア)。
.. image:: https://gitlab.com/renich/genclave/-/raw/master/assets/banner.svg :width: 100% :align: center :alt: gEnclave バナー
|
.. image:: https://gitlab.com/renich/genclave/badges/master/pipeline.svg :target: https://gitlab.com/renich/genclave/-/commits/master :alt: パイプラインステータス .. image:: https://img.shields.io/gitlab/v/release/renich/genclave?logo=gitlab&label=release :target: https://gitlab.com/renich/genclave/-/releases :alt: GitLab リリース .. image:: https://img.shields.io/badge/Go-1.26+-00ADD8?style=flat&logo=go :target: https://golang.org/ :alt: Go バージョン .. image:: https://img.shields.io/badge/License-GPLv3-blue.svg?logo=gnu :target: https://www.gnu.org/licenses/gpl-3.0 :alt: ライセンス
|
.. 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: マルチプロトコルブリッジ .. image:: https://img.shields.io/badge/Donate-Liberapay-f6c915.svg?logo=liberapay&logoColor=black :target: https://liberapay.com/Renich/donate :alt: Liberapay で寄付
.. caution::
プレアルファ版ソフトウェア — 自己責任でご使用ください!
リリース番号にもかかわらず、gEnclave(旧称 gpasskey)は現在、急速なアーキテクチャ開発が進行中の実験的なプレアルファ版ソフトウェアです。暗号スキーマ、ボールト形式、プロトコルブリッジは後方互換性なしに変更される可能性があります。
gEnclave は、秘密鍵とシークレットを TPM で封印された暗号化ボールトに保存する、統合されたハードウェアベースのセキュリティエンクレーブを提供します。
これはマルチプロトコルブリッジとして機能し、WebAuthn/FIDO2 パスキー、OpenSSH Agent、age 暗号化プラグインプロトコル、GnuPG コミット署名エミュレーション、および暗号化されたシークレット設定をサポートします。
マルチプロトコルサポート:
/dev/uhid を介した仮想 USB セキュリティキーエミュレーター。age(v1)ファイル暗号化のネイティブサポート(age-plugin-ge/age-plugin-gpasskey)。genclave-gpg/gpasskey-gpg)のエミュレーション。ハードウェアに裏付けられたセキュリティ: 秘密鍵は AES-256-GCM で暗号化され、主に SRK キャッシュを用いて TPM 2.0 に封印され、自動的に Argon2id によるソフトウェアフォールバックが行われます。
暗号学的 PIN バインディングと認証キャッシュ: すべての操作は PIN 由来のサブキーにバインドされ、カーネルロックされた RAM(mlock)内のメモリ内認証キャッシュが使用されます。設定可能なバースト期間(デフォルト 5 秒)または永続的/無制限のキャッシュ(vault 内で設定、または GENCLAVE_SSH_CACHE_TTL 経由)をサポートし、システムのサスペンド時または手動ロック時に即座にゼロ化されます。
CLI による事前認証とロック制御: ターミナルから直接メモリ内キャッシュのロック解除またはロックが可能(ge unlock [--stdin]、ge lock)で、自動化されたバッチスクリプトやヘッドレスワークフローに対応します。
Argon2id KDF: マスターパスフレーズ、リカバリ、およびサブキー向けのメモリハードな鍵導出。
ブルートフォース保護: 認証試行の失敗に対する自動的な指数バックオフ。
インテリジェントな UI ルーティング: 認証プロンプト向けの自動セッション検出(グラフィカル vs. TTY)。
セキュアメモリ: mmap/mlock と「Wrap and Clear」戦略を使用し、鍵素材がスワップや GC ヒープに漏洩するのを防止します。
ID 管理: vault の管理と暗号化されたシークレット管理のための堅牢な CLI(ge)。
ハードウェアとカーネル
* **TPM 2.0**: Hardware TPM 2.0 device (``/dev/tpmrm0`` or ``/dev/tpm0``), or ``swtpm`` for software-emulated development.
* **Linux Kernel with /dev/uhid**: Native kernel support for user-space HID devices (enabled by default in modern distributions) to support virtual FIDO2/CTAP2 browser passkeys.
Runtime Dependencies
wl-copy): 災害復旧ダイアログでのワンクリッククリップボードコピーに推奨されます。ビルドと開発の依存関係
* **Go 1.26** or later
* **GNU Make**
* **swtpm** (optional, required to execute the full integration test suite)
Package Manager Installation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On Fedora/RHEL/AlmaLinux:
.. code-block:: bash
sudo dnf install golang make tpm2-tools zenity pinentry wl-clipboard swtpm
On Arch Linux:
.. code-block:: bash
sudo pacman -S go make tpm2-tools zenity pinentry wl-clipboard swtpm
On Debian/Ubuntu:
.. code-block:: bash
sudo apt install golang-go make tpm2-tools zenity pinentry-curses wl-clipboard swtpm
Quick Start
-----------
Build and install for your user account (recommended, non-root):
.. code-block:: bash
make
make install-user # Installs binaries, systemd units, man pages, and activates services
Or install system-wide (requires root):
.. code-block:: bash
sudo make install # Installs to /usr/local/bin, /usr/share/man, etc.
Inspect enclave and daemon status:
.. code-block:: bash
ge status
Pre-authenticate the cache for automated scripts or headless sessions:
.. 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
Manage OpenSSH keys in the vault:
.. code-block:: bash
# Generate a new hardware-sealed Ed25519 SSH key:
ge ssh generate --name personal-github
# Or import your existing keys from ~/.ssh/:
ge ssh import ~/.ssh/
# Export OpenSSH public key for GitHub/GitLab:
ge ssh public personal-github
Manage GnuPG identities & Git commit signing:
.. code-block:: bash
# Generate an OpenPGP signing key:
ge gpg generate --user-name "Your Name" --email "[email protected]"
# List registered keys and Libgcrypt keygrips:
ge gpg list
Manage WebAuthn Passkeys in Browser:
.. 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!
Manage encrypted secrets in the hardware-bound configuration store:
.. code-block:: bash
ge secret set my-api-key "super-secret-value"
ge secret get my-api-key
Documentation & Specifications
------------------------------
Our comprehensive engineering documentation is organized into modular specifications, architecture records, and roadmaps:
* **Functional Specifications**: `Functional Spec Index`_ — Defines user requirements and authorization models.
* **Technical Blueprints**: `Technical Spec Index`_ — Detailed Go architecture, crypto primitives, and enclave designs.
* **Architecture Decision Records (ADRs)**: `ADR Index`_ — Immutable log of architectural, crypto, and security choices.
* **API & Wire Protocols**: `API Spec Index`_ — Management socket, D-Bus portals, and bridge wire schemas.
* **Project Execution Roadmap**: `Roadmap Index`_ — Phased engineering timelines and milestone deliverables.
User Guides
~~~~~~~~~~~
* `User Quick Start`_ - Get up and running in 5 minutes.
* `Installation Guide`_ - Detailed build, udev, and systemd setup.
* `OpenSSH Guide`_ - OpenSSH agent integration, jump hosts, and FIDO2 keys.
* `GnuPG & Git Signing Guide`_ - OpenPGP key management and Git commit signing.
* `Pluggable Factors Guide`_ - Keyfiles, YubiKeys, biometrics, and Shamir quorums.
* `Security Guide`_ - Hardware TPM 2.0 enclave and "Wrap and Clear" memory isolation.
* `Configuration Guide`_ - Environment variables and service options.
* `CLI Reference`_ - Full command-line interface documentation.
~~~~~~~~~~~