バージョン v0.90.4 | 最終更新 2026年3月31日
株式会社ハウディ・クリプト 代表取締役社長 浅田 一憲
Openloopは暗号資産ハードウェアウォレットとしてだけでなく、セキュリティキーとしても機能します。1台のデバイスで以下の2つのセキュリティ機能を提供します。
| 機能 | プロトコル | 主な用途 |
|---|---|---|
| パスキー | FIDO2/CTAP2 | Webサイトのパスワードレス認証、二要素認証 |
| PIV/PKCS#11 | PIV (NIST SP 800-73) | SSH認証、TLSクライアント証明書、コード署名 |
この2つの機能は用途が重複せず、相互補完の関係にあります。
| ユースケース | パスキー (CTAP2) | PIV/PKCS#11 |
|---|---|---|
| ブラウザWebAuthn認証 | ✓ | — |
| SSH公開鍵認証 | — | ✓ |
| TLSクライアント認証 | — | ✓ |
| コード署名 / git署名 | — | ✓ |
OpenloopはFIDO2/CTAP2準拠のセキュリティキーとして動作します。パスワードに代わる安全な認証手段として、対応するWebサイトやサービスで利用できます。
| 項目 | 仕様 |
|---|---|
| プロトコル | CTAP2 (FIDO_2_0) |
| 後方互換 | U2F (FIDO U2F V2) |
| 通信 | USB HID (FIDO Alliance Usage Page 0xF1D0) |
| 署名アルゴリズム | ES256 (P-256) / EdDSA (Ed25519) |
| Discoverable Credential | ✓ サポート(Resident Key) |
| User Verification | ✓ デバイスPIN + 物理タッチ |
| 最大クレデンシャル数 | 50 |
パスキー機能はデフォルトで無効になっています。使用前に以下の手順で有効化してください。
▲ USB HIDとパスキーの両方を有効にする必要があります。
パスキーのクレデンシャルには2種類あります。
| 種類 | 説明 | 特徴 |
|---|---|---|
| Resident Key(Discoverable Credential) | クレデンシャル情報をデバイス内に保存。ユーザー名の入力なしで認証可能。 | デバイスの保存領域を使用。Openloopでは最大50個まで保存可能。 |
| Non-Resident Key | クレデンシャルIDにデバイス固有の暗号で包んだ情報を埋め込む。デバイス内に状態を保持しない。 | 保存数の制限なし。ただし認証時にサーバーからcredentialIdの提示が必要。 |
Webサイトがどちらを要求するかは、登録時の residentKey
パラメータで決まります。近年のパスキー対応サービス(Google、Microsoft、GitHub等)はResident
Keyを要求するのが一般的です。
ℹ デバイスに保存されたResident Keyの一覧は、設定 > パスキー > クレデンシャル一覧 で確認・削除できます。Non-Resident Keyはデバイスに状態を持たないため一覧には表示されません。
対応するWebサイトやサービスでパスキーを登録します。
登録済みのWebサイトにログインする際に使用します。
登録したパスキーはOpenloopデバイス上で管理できます。
▲ パスキーリセットを実行すると、すべてのクレデンシャルが削除されます。各Webサイトで再登録が必要になります。
| OS | Chrome | Edge | Safari | Firefox |
|---|---|---|---|---|
| Windows | ✓ | ✓ | - | ✓ |
| macOS | ✓ | - | △ | △ |
パスキーに対応する主要なWebサイト・サービス:
ℹ 対応サービスの最新リストは passkeys.directory で確認できます。
OpenloopはPIV(Personal Identity Verification, NIST SP 800-73)スマートカードインターフェースを実装しています。PKCS#11共有ライブラリを通じて、SSH認証やTLSクライアント認証など、パスキーではカバーできないユースケースに対応します。
SSH / Firefox / pkcs11-tool
↓ PKCS#11 C API
libopenloop-pkcs11 (.dylib / .dll / .so)
↓ PIV APDU → WebSocket (ws://127.0.0.1:21320)
Openloop Connect (APDUの透過転送)
↓ USB HID
Openloop デバイス (PIVハンドラ → SE050で署名)
PKCS#11ライブラリはOpenloop Connect経由でデバイスと通信するため、PIV/PKCS#11機能を使用する際はOpenloop Connectが起動している必要があります。
設定 > パスキー・PIV > PIV ON でPIVを有効化します。OFFにするとPKCS#11のスロットが非表示になります。
また、以下の設定も確認してください:
PIV PINはオプションです。PINを設定するとUSB経由のPIN認証が有効になり、PIN送信時は確認画面なしで署名されます(ブラインド署名)。PINを設定しない場合は、従来通りデバイス画面での確認操作が必要です。
OpenloopのPIV実装は、PIN送信の有無に応じて2つの動作モードを提供します。
| モード | 動作 | 用途 |
|---|---|---|
| PIN送信あり | ブラインド署名(確認画面なし、自動署名) | 自動化・CI/CD・スクリプト向け |
| PIN未送信 | 従来の確認画面フロー(デバイス画面で承認) | 対話的な利用 |
ℹ 1つのデバイスで両方のモードを使い分けることができます。PINを送信するかどうかはクライアント側(SSH設定等)で制御します。
# PINの初期設定
pkcs11-tool --module "$MODULE" --login --init-pin --new-pin 123456
# PINの変更
pkcs11-tool --module "$MODULE" --login --change-pin --pin 123456 --new-pin 654321PINを削除するには、以下のいずれかの方法を使用します:
PINを8回連続で間違えるとロックされます。ロック状態になった場合は、デバイスUIの🗑ボタンでPINを削除し、再設定してください。
# PIN付きでSSH接続
ssh -o "PKCS11Provider=$MODULE" -o "PKCS11Pin=123456" user@host▲ PINをコマンドラインに直接記述すると、シェル履歴やプロセス一覧に残る可能性があります。セキュリティが重要な環境では、ssh-agentの利用やPIN未送信モード(デバイス確認画面フロー)を検討してください。
PKCS#11ライブラリはOpenloop Connectに同梱されています。パスはOSによって異なります。
| OS | パス |
|---|---|
| macOS | /Applications/Openloop Connect.app/Contents/Resources/pkcs11/libopenloop-pkcs11.dylib |
| Windows | C:\Program Files\Openloop Connect\resources\pkcs11\libopenloop-pkcs11.dll |
| Linux | /opt/Openloop Connect/resources/pkcs11/libopenloop-pkcs11.so |
以降の例では、macOSのパスをシェル変数に設定して使用します:
MODULE="/Applications/Openloop Connect.app/Contents/Resources/pkcs11/libopenloop-pkcs11.dylib"OpenloopをPKCS#11経由でSSHハードウェアキーとして使用します。秘密鍵はデバイスのSE050セキュアエレメント内に保管され、外部に取り出すことはできません。
PIVスロット(デフォルト: 9A Authentication)に鍵ペアを生成します。鍵の生成方法は以下のいずれかです:
# デバイスからSSH公開鍵を取得
ssh-keygen -D "$MODULE"
# ファイルに保存
ssh-keygen -D "$MODULE" > ~/openloop_key.pub取得した公開鍵をリモートサーバーの
~/.ssh/authorized_keys に追加してください。
# 単発の接続
ssh -I "$MODULE" user@hostname毎回 -I
オプションを指定する代わりに、~/.ssh/config
に設定を記述できます。
# 特定のホストに適用
Host myserver
HostName 192.168.1.100
User ubuntu
PKCS11Provider /Applications/Openloop Connect.app/Contents/Resources/pkcs11/libopenloop-pkcs11.dylib
# すべてのホストに適用
Host *
PKCS11Provider /Applications/Openloop Connect.app/Contents/Resources/pkcs11/libopenloop-pkcs11.dylib
OpenloopのPIV/PKCS#11はP-256とEd25519の2つのアルゴリズムをサポートしていますが、SSH実装によってPKCS#11経由で利用できるアルゴリズムが異なります。
| SSH実装 | P-256 (ECDSA) | Ed25519 (EdDSA) | 備考 |
|---|---|---|---|
| OpenSSH (8.5以降) | ✓ | ✓ | 推奨。両アルゴリズムをフルサポート。 |
macOS システムSSH (/usr/bin/ssh) |
△ | ✗ | PKCS#11経由ではRSAのみサポート。EC鍵が使えない場合がある。 |
| PuTTY (Windows) | △ | ✗ | PKCS#11対応が限定的。RSA中心。 |
| Dropbear | ✗ | ✗ | PKCS#11非対応。 |
▲ OpenSSH(Homebrew版)の使用を強く推奨します。 macOSのシステムSSH(Apple版)はPKCS#11経由でのECDSA/EdDSAサポートが不完全で、RSAのみに制限される場合があります。OpenloopはRSAをサポートしていないため、システムSSHでは鍵が認識されないことがあります。
# Homebrew OpenSSHのインストール
brew install openssh
# Homebrew版を使用(フルパス指定)
/opt/homebrew/bin/ssh -I "$MODULE" user@hostname
# バージョン確認(8.5以上であることを確認)
/opt/homebrew/bin/ssh -V
# ~/.ssh/config で IgnoreUnknown UseKeychain を追加
# (Homebrew SSHが認識しない macOS 独自オプションの警告を抑制)# PKCS#11ライブラリのデバッグ出力を有効化
OPENLOOP_PKCS11_DEBUG=1 ssh-keygen -D "$MODULE"
# SSH接続の詳細ログ
ssh -vvv -I "$MODULE" user@hostname主要ブラウザの中で、Firefoxは唯一、外部PKCS#11モジュールの読み込みをサポートしているブラウザです。ChromeやEdge、SafariはOS標準のキーチェーン/証明書ストアのみを使用し、サードパーティのPKCS#11ライブラリを直接読み込む機能を提供していません。そのため、OpenloopのPKCS#11ライブラリを使ったTLSクライアント認証はFirefoxで利用します。
PKCS#11モジュールをFirefoxに登録して、TLSクライアント証明書認証(mTLS)を利用します。
Openloop と入力クライアント証明書を要求するWebサイトにアクセスすると、Firefoxが自動的にOpenloopデバイスから証明書を選択するよう促します。署名操作にはUser Presence(デバイスへの物理的なタッチ)が必要です。
macOSでは、Openloop Connectが以下のパスにマニフェストを配置することで、PKCS#11モジュールをFirefoxに自動登録できます:
~/Library/Application Support/Mozilla/PKCS11Modules/openloop_pkcs11.json
自動登録が有効な場合、手動での登録は不要です。
OpenSCのpkcs11-toolコマンドを使って、デバイスの鍵やオブジェクトを操作できます。
# macOS
brew install opensc
# Ubuntu/Debian
sudo apt install opensc
# Windows
# OpenSCインストーラーからインストール: https://github.com/OpenSC/OpenSC/releasespkcs11-tool --module "$MODULE" -Tpkcs11-tool --module "$MODULE" -O# P-256 をスロット 9A(Authentication)に生成
pkcs11-tool --module "$MODULE" --keypairgen \
--key-type EC:prime256v1 \
--id 01 --label "PIV AUTH"
# Ed25519 をスロット 9A に生成
pkcs11-tool --module "$MODULE" --keypairgen \
--key-type EC:edwards25519 \
--id 01 --label "PIV AUTH"# テストデータを作成し、スロット 9A の鍵で署名
echo "test data" | openssl dgst -sha256 -binary > /tmp/hash.bin
pkcs11-tool --module "$MODULE" --sign \
--mechanism ECDSA \
--id 01 \
--input-file /tmp/hash.bin \
--output-file /tmp/sig.binpkcs11-tool --module "$MODULE" --delete-object \
--type privkey --id 01| スロット | 名前 | 用途 |
|---|---|---|
9A |
PIV Authentication | SSH認証、一般的な認証。最も使用頻度が高い。 |
9C |
Digital Signature | 文書署名、S/MIME。常にPINが必要。 |
9D |
Key Management | 暗号化/復号化、鍵共有。 |
9E |
Card Authentication | 物理アクセス、非接触認証。PIN不要。 |
| アルゴリズム | PIV ID | 備考 |
|---|---|---|
| P-256 (secp256r1) | 0x11 | NIST P-256によるECDSA。広くサポートされている。 |
| Ed25519 | 0x22 | Curve25519によるEdDSA。SSHにはOpenSSH 8.5以上が必要。 |
| PIVスロット | PKCS#11 ID | CKA_LABEL | 用途 |
|---|---|---|---|
| 9A | 01 | PIV AUTH | Authentication |
| 9C | 02 | SIGN | Digital Signature |
| 9D | 03 | KEY MGMT | Key Management |
| 9E | 04 | CARD AUTH | Card Authentication |
PKCS#11ライブラリのデバッグ出力を有効にすることで、通信の詳細を確認できます:
OPENLOOP_PKCS11_DEBUG=1 ssh-keygen -D "$MODULE"| 資料 | URL |
|---|---|
| CTAP2仕様 (FIDO Alliance) | https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html |
| WebAuthn仕様 (W3C) | https://www.w3.org/TR/webauthn-2/ |
| U2F仕様 (FIDO Alliance) | https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/ |
| CTAPHID — USBトランスポート | https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#usb |
| パスキー対応サービス一覧 | https://passkeys.directory |
| 資料 | URL |
|---|---|
| NIST SP 800-73 (PIV仕様) | https://csrc.nist.gov/pubs/sp/800/73/4/final |
| PKCS#11仕様 (OASIS) | https://docs.oasis-open.org/pkcs11/pkcs11-base/v3.0/pkcs11-base-v3.0.html |
| OpenSC (pkcs11-tool) | https://github.com/OpenSC/OpenSC |
| OpenSSH PKCS#11ドキュメント | https://man.openbsd.org/ssh-keygen#D |
| 資料 | URL |
|---|---|
| Openloop PIV/PKCS#11 デモ | https://crypto.haudi.jp/openloop/demo/piv/ |
| Openloop パスキー デモ | https://crypto.haudi.jp/openloop/demo/ctap2/ |
| Openloop Connect | https://crypto.haudi.jp/openloop/ |
Copyright © 2026 Haudi Crypto, Inc. All rights reserved.