本文へスキップ
ecdsa.com

秘密鍵

非対称鍵ペアのうち秘密にしておく側の鍵で、署名、復号、鍵共有に使われ、これを保持する者は誰でもその所有者として振る舞えるため、保護されていない状態で信頼境界の外に出してはいけません。
別表記private keysecret keysigning key

形式はアルゴリズムによって異なります。P-256 と secp256k1 では 32 バイトのスカラー、Ed25519 と X25519 では 32 バイトのシード、RSA では (n, e, d, p, q, dP, dQ, qInv)、ML-DSA では 32 バイトのシード(または展開された 2,560〜4,896 バイトの鍵)です。ファイルでは、PKCS #8(BEGIN PRIVATE KEY、パスワード付きなら BEGIN ENCRYPTED PRIVATE KEY)、PKCS #1(BEGIN RSA PRIVATE KEY)、SEC 1(BEGIN EC PRIVATE KEY)、PKCS #12 のバンドル、OpenSSH 形式、d メンバーを持つ JWK として格納されます。

保護の方法を、弱いものから強いものの順に挙げます。アクセス権限を厳しく制限した平文のファイル、パスワードで暗号化したファイル(低速な KDF を使う PBES2)、OS のキーストア(Keychain、DPAPI、Android Keystore)、そしてエクスポートできないハードウェア(TPM、Secure Enclave、スマートカード、HSM、クラウドの KMS)です。エクスポートできないハードウェアでは、鍵による署名はデバイスの内部で行われ、鍵を外にコピーすることはできません。

秘密鍵をウェブサービスに送信したり、チケットに貼り付けたり、ログに記録したりしてはいけません。このサイトで鍵を解析するツールはローカルで動作し、公開鍵で足りる場面では秘密鍵を受け付けません。秘密鍵が漏洩した場合は、その鍵を結び付けているもの(証明書、JWKS のエントリ、authorized_keys の行)を失効させ、鍵をローテーションしてください。

規格と参考文献

すべての用語