HSM と鍵保護の原理(耐タンパ・鍵階層・FIPS 140)
秘密鍵を「絶対に外へ出さない」をハードウェアで保証する仕組みが分かる。耐タンパとゼロ化、マスター鍵による鍵ラッピング階層、FIPS 140 のレベル分けまで原理で押さえられる。
- 1.HSM は鍵生成・署名・復号を専用ハードウェア境界の内側だけで実行し、平文の秘密鍵を境界の外へ出さない。アプリは鍵そのものでなく「鍵を使った演算」をハンドル越しに依頼する。
- 2.鍵階層はマスター鍵(KEK)で各鍵を暗号化(ラップ)して保管する入れ子構造。マスター鍵だけを耐タンパ境界内に固定すれば、ラップ済み鍵は外部 DB に置いても安全になる。
- 3.FIPS 140-2/3 は暗号モジュールの安全性をレベル1〜4で格付けする米国標準。レベルが上がるほど物理的な耐タンパと侵入検知・ゼロ化の要件が厳しくなる。クラウド KMS はこの認証済み HSM を共有基盤として貸し出す。
HSM が解く問題:鍵は「使う」が「触らせない」
暗号の安全性は、アルゴリズムが堅牢であることだけでなく、秘密鍵が漏れないことに全面的に依存します。ところがソフトウェアだけで鍵を扱うと、鍵は必ずどこかで平文としてメモリに載ります。プロセスのメモリダンプ、スワップ領域、コアダンプ、特権を奪った攻撃者——平文の鍵が触れる経路はいくつもあります。シークレット管理で鍵を暗号化保管しても、「使う瞬間」には復号してメモリに展開せざるを得ない、という根本的な穴が残ります。
**HSM(Hardware Security Module/ハードウェアセキュリティモジュール)**は、この穴を物理で塞ぐ装置です。発想は単純で、鍵を一度も境界の外に出さない。鍵の生成・署名・復号といった暗号演算をすべて HSM 内部の専用プロセッサで完結させ、アプリケーションには結果だけを返します。
HSM を使うアプリは、秘密鍵の値(バイト列)を一切受け取りません。代わりに鍵を指す不透明な識別子(ハンドル/鍵 ID)を持ち、「このハンドルの鍵でこのデータに署名して」と依頼します。鍵そのものは HSM 内に留まったまま演算され、署名値だけが返る。だからアプリ側がいくら侵害されても、引き出せるのは「署名を依頼する権限」までで、鍵の値そのものは盗めません。これが鍵抽出(key extraction)とオンライン悪用(online misuse)を分離する核心です。
耐タンパとゼロ化:物理境界の防御
鍵が論理的に外へ出ないだけでは不十分です。チップを削って配線をプローブする、電源やクロックに細工して誤動作を誘う——物理的に鍵を吸い出す攻撃が存在するからです。HSM はこれに**耐タンパ(tamper resistance)**機構で対抗します。要件は段階的に分かれます。
| 段階 | 意味 | 代表的な実装 |
|---|---|---|
| 耐タンパ(resistance) | 物理的にこじ開けにくくする | 硬化樹脂による封止、特殊ネジ、内部配線の難読化 |
| 改ざん証拠(evidence) | 開封の痕跡を必ず残す | 破れると復元不能なシール、刻印 |
| 改ざん検知(detection) | 侵入をセンサーで能動的に感知 | メッシュ配線・温度・電圧・光センサー |
| 改ざん応答(response) | 侵入検知時に即座に鍵を破壊 | ゼロ化(zeroization)回路の起動 |
最後のゼロ化(zeroization)が決定的です。HSM はチップ周囲を細い導線のメッシュで覆い、削開や穿孔でメッシュが断線・短絡した瞬間を検知します。検知すると、鍵を保持する揮発性メモリへの給電を断つ、あるいは鍵バイトを能動的に上書きして鍵を瞬時に消去します。攻撃者がプローブを当てられる頃には、読むべき鍵はもう存在しない。電源喪失でも鍵が消える設計(バッテリバックアップされた RAM に鍵を置く)と組み合わせ、「分解=鍵消滅」を物理的に保証します。
侵入応答としてのゼロ化は強力ですが、正規の鍵まで巻き添えで消える危険と表裏一体です。落雷・電源異常・誤った輸送時の振動が誤検知を引き起こせば、本物の鍵が失われます。だから HSM 運用では、後述する鍵ラッピングで**鍵のバックアップ(暗号化された形での複製)**を必ず取り、別 HSM へ安全に復元できる手順を整えておくことが必須です。鍵保護と可用性はトレードオフであり、設計で両立させます。
鍵ラッピング階層:マスター鍵で鍵を入れ子に守る
HSM の内部メモリは小さく、何百万本もの鍵をすべて境界内に常駐させることはできません。そこで使うのが鍵ラッピング(key wrapping)による階層構造です。基本原理は「鍵を別の鍵で暗号化して保管する」こと。暗号化に使う鍵を鍵暗号化鍵(KEK: Key Encryption Key)、暗号化される側を**データ暗号化鍵(DEK: Data Encryption Key)**と呼びます。
鍵階層(key hierarchy)の入れ子:
マスター鍵 (Master Key / Root KEK) ← HSM 耐タンパ境界内に固定。外へ出ない
│ ラップ(暗号化)
▼
KEK_1 KEK_2 ... ← マスター鍵で暗号化して外部保管も可
│ ラップ
▼
DEK_a DEK_b ... ← 実データを暗号化する鍵
│ 暗号化
▼
実データ(DB レコード・ファイル)
肝は、最上位のマスター鍵だけを耐タンパ境界内に固定する点です。下位の KEK や DEK はマスター鍵でラップ(暗号化)された状態なら、HSM の外——通常のディスクや DB——に置いても安全です。使うときだけ HSM 内に取り込み、内部でアンラップ(復号)して演算に使い、終われば破棄する。これにより少数の鍵を物理保護するだけで、無数の鍵を論理的に保護できます。
この入れ子は鍵ローテーションとも相性が良い。マスター鍵を更新したいなら、外部保管された全 DEK を「旧マスター鍵でアンラップ→新マスター鍵で再ラップ」するだけで済み、DEK が暗号化している実データには一切触れずに最上位の鍵だけを差し替えられます。これを**エンベロープ暗号化(envelope encryption)**と呼び、クラウド KMS の中核機能になっています。
FIPS 140-2/3:耐タンパの強度を格付けする標準
「その HSM はどこまで物理攻撃に耐えるのか」を客観的に示すのが、米国 NIST のFIPS 140(Federal Information Processing Standard 140)です。暗号モジュールの安全性をレベル1〜4で格付けし、レベルが上がるほど物理セキュリティと侵入応答の要件が厳しくなります。
| レベル | 物理セキュリティ要件 | 想定脅威モデル |
|---|---|---|
| Level 1 | 基本的な暗号要件のみ。物理保護は実質要求せず | ソフトウェア暗号ライブラリ相当 |
| Level 2 | 改ざん証拠(封印・ピックしにくい錠)と役割ベース認証 | 開封の痕跡を残せばよい用途 |
| Level 3 | 改ざん検知・応答(侵入時ゼロ化)と ID ベース認証、平文鍵 I/O の物理分離 | 本格的な HSM の実用基準 |
| Level 4 | 全方位の侵入検知エンベロープ、電圧・温度の異常も防御 | 高度な物理攻撃に晒される環境 |
実務上の分水嶺はLevel 3です。Level 2 までは「開けた痕跡が残る」止まりですが、Level 3 で初めて「開けようとした瞬間に鍵を消す」改ざん応答が必須要件となり、平文鍵の入出力を他のインターフェースから物理的に分離することも求められます。多くの商用 HSM とクラウド KMS の裏側は Level 3 認証品です。
FIPS 140-3(2019 年承認、2026 年現在の現行版)は、140-2 を置き換える最新版です。最大の変更は、物理・論理要件の本体を国際標準 ISO/IEC 19790 と試験規格 ISO/IEC 24759 に委ね、FIPS 140-3 はその採用を定める薄い文書になった点です。レベル1〜4の枠組みは踏襲しつつ、サイドチャネル耐性(非侵襲攻撃への緩和策)の扱いなどが強化されました。認証の有効期間や移行スケジュールが定められており、新規調達では 140-3 認証品を選ぶのが定石です。資格試験では「140-2 はレベル4が最高」「Level 3 で改ざん応答が必須化」という対応関係が頻出ポイントです。
FIPS 140 が物理を保証しても、演算中の物理リーク——消費電力や処理時間からの鍵推定——という別軸の脅威は残ります。これはサイドチャネル攻撃の領域で、高レベル HSM は定数時間実装や電力解析対策(ノイズ注入・電源平滑化)でこれにも備えます。
クラウド KMS との関係:HSM を共有基盤として貸す
クラウドのKMS(Key Management Service)——AWS KMS、Azure Key Vault、Google Cloud KMS など——は、FIPS 140 認証済みの HSM 群をマルチテナントの共有基盤として提供するサービスです。利用者は HSM を所有・運用せず、API で鍵の生成・ラッピング・署名を依頼します。
中核はやはりエンベロープ暗号化です。利用者のデータは手元で生成した DEK で暗号化し、その DEK を KMS のマスター鍵(CMK / KEK)でラップしてもらって、ラップ済み DEK をデータと並べて保管します。マスター鍵は KMS の HSM 境界から決して出ないため、ラップ済み DEK がいくら漏れても、KMS の認可なしには復号できません。
| 観点 | 共有テナント KMS | 専用 HSM / Cloud HSM |
|---|---|---|
| 鍵の所在 | クラウド事業者管理の共有 HSM | 利用者専有の単一テナント HSM |
| 鍵の制御 | 事業者が運用、利用者は利用権限を管理 | 利用者がパーティション/鍵を直接管理 |
| 主な用途 | 一般的なデータ暗号化・署名 | 規制対応・鍵を自社管理したい要件 |
| コスト | 従量課金で安価 | 占有のため割高 |
クラウド KMS の鍵管理思想は、PKI における認証局(CA)の秘密鍵保護とも地続きです。ルート CA の署名鍵は典型的に FIPS 140 Level 3 以上の HSM で守られ、オフライン保管されます。CA の信頼が秘密鍵1本の保護に懸かる構造は公開鍵基盤(PKI)で詳しく、本記事の鍵保護はその物理的な土台にあたります。
まとめ
HSM の本質は、鍵を「使えるが取り出せない」状態に物理的に固定することです。アプリには鍵でなくハンドルを渡し、暗号演算を境界内で完結させる。耐タンパ機構とゼロ化が物理的な吸い出しを阻み、分解された瞬間に鍵を消滅させます。鍵ラッピングによる階層は、マスター鍵1本を境界内に固定するだけで無数の下位鍵を論理的に保護し、エンベロープ暗号化やローテーションを支えます。
FIPS 140-2/3 はこの物理保護の強度をレベル1〜4で格付けし、Level 3 で「侵入時ゼロ化」が必須化される点が実用上の分水嶺です。クラウド KMS は、この認証済み HSM を共有基盤として貸し出し、エンベロープ暗号化を API 一本で使えるようにしたもの——鍵を所有せずに鍵保護の恩恵だけを受け取る仕組みだと整理できます。鍵をどこに保管するかの運用論はシークレット管理、鍵で何を守るかの基礎は暗号の基礎を合わせて参照してください。
セキュリティ Article
HSM と鍵保護の原理(耐タンパ・鍵階層・FIPS 140)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
HSM
比較で見る軸
難易度: advanced / カテゴリ: セキュリティ / タグ数: 5
導入後に効く点
鍵階層はマスター鍵(KEK)で各鍵を暗号化(ラップ)して保管する入れ子構造。マスター鍵だけを耐タンパ境界内に固定すれば、ラップ済み鍵は外部 DB に置いても安全になる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- セキュリティ
- タグ数
- 5
判断チェックリスト
- 自社の用途が「HSM / 鍵管理」に近いか確認する。
- 強みである「HSM は鍵生成・署名・復号を専用ハードウェア境界の内側だけで実行し、平文の秘密鍵を境界の外へ出さない。アプリは鍵そのものでなく「鍵を使った演算」をハンドル越しに依頼する。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。