Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
webauthn_tpm_portable — ポータブルで、TPM 2.0を使用したハードウェアバックアップのWebAuthn認証情報。マスターシードから派生した決定論的な親鍵により、デバイス間での認証情報の移植性を実現。署名用の秘密鍵はTPMから決して外に出ません。ブラウザ拡張機能とCLIを含みます。 | Kitploit
ツール/GitHubGitHub/mimi89999/webauthn_tpm_portable
暗号化/復号化ツールセキュリティ仮想化暗号化ハードウェアセキュリティ認証
GitHubmimi89999/webauthn_tpm_portable

webauthn_tpm_portable

ポータブルで、TPM 2.0を使用したハードウェアバックアップのWebAuthn認証情報。マスターシードから派生した決定論的な親鍵により、デバイス間での認証情報の移植性を実現。署名用の秘密鍵はTPMから決して外に出ません。ブラウザ拡張機能とCLIを含みます。

リポジトリを見る
45ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

WebAuthn TPM ポータブル認証情報

⚠️ 初期の概念実証です。 このプロジェクトは十分にテストまたは監査されていません。実験以外の目的では使用しないでください。

TPM 2.0 を使用して複数のデバイスで動作する、移植可能なハードウェアバックアップ付き WebAuthn/パスキー認証情報。

従来の TPM 認証情報は、それを作成したデバイスに固定されています。このプロジェクトでは、マスターシードから派生した決定論的な親キーを各デバイスの TPM にインポートすることで、それらを移植可能にします。これにより、ある TPM で暗号化された認証情報ブロブは、同じシードでプロビジョニングされた他の TPM でロードして使用できます。秘密署名キーは、各認証情報に対して TPM によってランダムに生成され、ハードウェア外で平文で存在することはありません。

マスターシードは、プロビジョニング時にデバイスごとに一度だけ必要です。その後、すべての暗号操作は完全に TPM 内で行われます。

動作原理

ブラウザ拡張機能が navigator.credentials をオーバーライドし、WebAuthn 呼び出しをネイティブメッセージング経由で TPM と直接通信する Python バックエンドにルーティングします。登録時には、TPM はポータブル親キーの下に新しい署名キーを作成し、暗号化されたブロブを返します。認証時には、ブロブをロードし、内部で復号化してチャレンジに署名します。

必要条件

  • OS: Linux または Windows (macOS には TPM がありません)
  • ハードウェア: TPM 2.0
  • Python: 3.10+
  • ブラウザ: Firefox (Chrome 対応予定)

インストール

1. 依存関係のインストール

Linux (Debian/Ubuntu):

root@kitploit:~
sudo apt install tpm2-tools python3-tpm2-pytss python3-cryptography

Windows:

root@kitploit:~
pip install cryptography

Windows は ctypes を介して TBS (TPM Base Services) 経由で TPM と通信するため、追加のネイティブパッケージは必要ありません。

2. ネイティブメッセージングのセットアップ

ブラウザ拡張機能は、ネイティブメッセージングを介して native_host.py と通信します。Firefox にホストの場所を伝えるマニフェストを登録する必要があります。

ファイル ~/.mozilla/native-messaging-hosts/webauthn_tpm_portable.json を作成します:

root@kitploit:~
{
    "name": "webauthn_tpm_portable",
    "description": "WebAuthn TPM Portable Credentials Backend",
    "path": "/absolute/path/to/native_host.py",
    "type": "stdio",
    "allowed_extensions": [
        "[email protected]"
    ]
}

path を native_host.py の絶対パスに置き換えます。実行可能であることを確認してください (chmod +x native_host.py)。

Windows では、ネイティブメッセージングマニフェストは Windows レジストリを介して登録されます。詳細については、Firefox ネイティブメッセージングドキュメント を参照してください。

3. ブラウザ拡張機能の読み込み

root@kitploit:~
cd extension
npm install
npm run build

次に Firefox で:

  1. about:debugging#/runtime/this-firefox を開く
  2. "一時的なアドオンを読み込む..." をクリック
  3. extension/dist フォルダ内の任意のファイル (例: manifest.json) を選択

4. TPM のプロビジョニング

拡張機能のポップアップを開き、既存のシードを貼り付けるか、「生成」をクリックして新しいシードを作成し、「プロビジョニング」をクリックします。新しいシードを生成した場合は、安全な場所に保存してください。追加のデバイスをプロビジョニングするために必要になり、紛失すると新しいデバイスをセットアップできなくなります (すでにプロビジョニングされたデバイス上の既存の認証情報は引き続き機能します)。

プロビジョニングは CLI からも実行できます:

root@kitploit:~
./webauthn_cli.py provision --generate
# or with an existing seed:
./webauthn_cli.py provision <seed_hex>

5. 確認

root@kitploit:~
./webauthn_cli.py test

これにより、認証情報が作成され、チャレンジに署名され、署名が検証されます。

CLI リファレンス

root@kitploit:~
webauthn_cli.py [--backend=BACKEND] <command> [args]

コマンド:

バックエンド (--backend または環境変数 WEBAUTHN_BACKEND で選択):

バックエンド説明
tpmクロスプラットフォーム TPM (デフォルト)
linuxLinux 専用、tpm2-pytss ライブラリを使用
soft純粋なソフトウェア、TPM 不要 (テスト用)

セキュリティ

保護されるもの

認証情報の署名キーは TPM 内部で生成され、平文で TPM の外に出ることはありません。認証情報 ID 内の暗号化されたブロブは、プロビジョニングされた TPM にアクセスできなければ無価値です。ソフトウェアベースの認証情報ストアとは異なり、秘密キーは認証中にホストメモリに存在しないため、コールドブート攻撃やマルウェアによるキー抽出から保護されます。

TPM2_Duplicate (理論上キーをエクスポートできる可能性がある) は、認証情報が空の authPolicy で作成されるためブロックされており、システムへの完全なアクセスがあっても複製は不可能です。

保護されないもの

プロビジョニングされたシステム上で動作するマルウェアは、ユーザー検証 (ボタン押下や生体認証) がないため、TPM にチャレンジへの署名を要求できます。キーを抽出することはできませんが、アクティブな間はそれらを使用できます。これは、マルウェアがキーを直接盗むことができるソフトウェアベースの認証情報ストアよりも攻撃対象領域が狭いです。

シードのセキュリティ

マスターシードは信頼のルートです。もし漏洩した場合、攻撃者は自身の TPM をプロビジョニングし、入手した認証情報ブロブを使用できます。紛失し、プロビジョニングされたすべてのデバイスが利用できなくなった場合、認証情報は回復不可能です。ハードウェアウォレットのリカバリーフレーズと同様に、オフラインで安全な場所に、理想的には冗長性を持たせて (例: 複数の場所に分割) 保管してください。

バックエンド

このプロジェクトには、交換可能な 3 つのバックエンドが含まれています:

  • webauthn_tpm_portable.py はプライマリバックエンドです。バイトレベルで TPM コマンドを構築し、Linux (/dev/tpmrm0) と Windows (ctypes 経由の TBS API) の両方で動作します。
  • webauthn_tpm_linux.py は tpm2-pytss Python ライブラリを使用し、Linux でのみ動作します。
  • webauthn_soft.py は純粋なソフトウェア実装であり、TPM なしで同じ認証情報形式をエミュレートします。テストや開発には便利ですが、ハードウェア保護は提供しません。

トラブルシューティング

/dev/tpmrm0 に対する「許可がありません」: ユーザーを tss グループに追加して再ログイン: sudo usermod -aG tss $USER

tpm2-pytss のインポートエラー: sudo apt install python3-tpm2-pytss または pip install --upgrade tpm2-pytss --break-system-packages を試してください。

拡張機能がネイティブホストに接続しない: ネイティブメッセージングマニフェストの path が native_host.py を指す絶対パスであることを確認してください。Firefox のブラウザコンソール (Ctrl+Shift+J) を開いて、拡張機能からのエラーを確認してください。

ライセンス

MIT

ツールをダウンロード
コマンド説明
statusTPM がプロビジョニングされているか確認
provision --generateランダムなシードを生成してプロビジョニング
provision <seed_hex>既存のシードでプロビジョニング
create <rp_id>証明書利用者 (RP) の認証情報を作成
sign <cred_id> <rp_id> <challenge>チャレンジに署名
verify <cred_id> <rp_id> <challenge> <sig>署名を検証
clearTPM からポータブル親キーを削除
test完全な作成/署名/検証サイクルを実行