用語解説 ひみつかぎ

秘密鍵とは

秘密鍵とは、公開鍵暗号の鍵ペアのうち持ち主だけが保管する側の鍵です。SSH、HTTPS、暗号資産での使い方と、生成自体は無料で費用は鍵管理にかかる点を解説します。認証局の秘密鍵がわずか1バイトで値が「4」だった事例も紹介します。

秘密鍵とは、公開鍵暗号で使う一対の鍵のうち、持ち主だけが保管して外に出さない側の鍵です。対になる公開鍵は誰に配ってもかまいません。秘密鍵で付けた署名は公開鍵で検証でき、公開鍵で暗号化したデータは秘密鍵でしか復号できません。

秘密鍵とは:公開鍵との関係

RSA や楕円曲線暗号(ECDSA、Ed25519 など)では、秘密鍵と公開鍵は数学的に対になっています。公開鍵から秘密鍵を計算で求めることは現実的にできません。安全性はこの性質だけを前提にしています。

そのため、秘密鍵が漏れた場合や、推測できるほど単純な値だった場合は、第三者が持ち主になりすませます。署名の偽造や、通信の復号も可能になります。暗号の強さは、アルゴリズムの名前や鍵長の表記だけでは決まりません。秘密鍵が実際に予測できない値で作られ、守られているかで決まります。

秘密鍵の使い方:どこで使われているか

エンジニアが日常的に秘密鍵を扱う場面は次のとおりです。

- SSH:ssh-keygen で鍵ペアを作り、公開鍵をサーバの authorized_keys に登録します。秘密鍵は手元の端末に置いてログインに使います。 - HTTPS(TLS):Web サーバは、証明書に対応する秘密鍵を持ちます。証明書そのものは、認証局(CA)が自分の秘密鍵で署名して発行します。 - コード署名・トークン署名:配布物や JWT などに署名し、改ざんされていないことを示します。 - 暗号資産:ウォレットの秘密鍵が送金に署名する権限そのものです。秘密鍵を失うと資産を動かせなくなり、盗まれると資産を動かされます。

運用の基本も決まっています。ファイルの権限を絞る、パスフレーズを掛ける、Git リポジトリにコミットしない、の 3 点です。重要な鍵は HSM(専用の鍵保管装置)やクラウドの鍵管理サービスに置き、鍵そのものを外に取り出せない形で運用します。

秘密鍵の料金:生成は無料、費用がかかるのは管理

秘密鍵そのものは、OpenSSL や ssh-keygen などの標準ツールを使えば無料で作れます。企画や DX の担当者が予算を組む対象になるのは、その周辺です。

- サーバ証明書の発行(無料のものと有料のものがある) - HSM やクラウドの鍵管理サービスの利用料 - 鍵の更新・失効を管理する運用体制

具体的な価格は製品や契約によって異なるため、この記事では扱いません。

誰が作っているのか:製品ではなく仕組み

秘密鍵は特定の企業が作る製品ではありません。標準化された暗号方式の構成要素なので、「競合」という関係もありません。

事業として見る場合、市場があるのは秘密鍵を守る側と、秘密鍵で信頼を証明する側です。前者は HSM ベンダーやクラウドの鍵管理サービス、後者は認証局です。認証局にとっては、ブラウザや OS に信頼され続けることが事業の前提です。その信頼は、認証局が自分の秘密鍵をどう扱うかにかかっています。

事例:認証局の秘密鍵の値が「4」だった

当サイトで取り上げた報道を紹介します。GIGAZINE によると、eMudhra で侵害された 8 つの認証局は、いずれも秘密鍵が 1 バイトしかなく、そのうち 1 つは値が「4」でした。これらの認証局は、Mozilla・Microsoft・Apple・Chrome のルートプログラムで信頼されているルート証明書につながっていたとされます。

別の記事では、Microsoft がインドの認証局の証明書を無効化したと伝えました。日経クロステックの見出しによると、その認証局の 384 ビットの秘密鍵の値は「4」でした。この 2 つの報道が同じ件を指しているかどうかは、当サイトが確認した範囲では断定できません。

1 バイトの値は 256 通りしかないため、総当たりで一瞬のうちに特定できます(これは計算上の事実です)。鍵長を「384 ビット」と表記していても、値が 4 であれば安全性はないに等しい状態です。秘密鍵の安全性は鍵長の表記ではなく、生成と管理の実態で決まることを示す事例です。

秘密鍵に関する記事

3 件