暗号モジュールの設計,実装,運用に関わるセキュリティ分野を網羅して
FIPS 140-1ではセキュリティ要件11項目が定められている.
セキュリティ要件とセキュリティレベルの対応についてまとめたものが
表IV.1である.
- 暗号モジュール
モジュールの物理的構成やセキュリティ方針
などの規定,文書化
暗号モジュールとは,暗号処理を行う
ハードウェア,ソフトウェア,ファームウェア,およびそれらの組み合わせと
定義される.
また暗号バウンダリーとは,暗号モジュールの物理的結合を
明確に定義する連続した境界を指し,
暗号モジュールがソフトウェアないしファームウェアを含む場合は,
コードを実行するプロセッサを含む形で暗号バウンダリーが定義される.
暗号モジュールの物理的形態として,
シングルチップ・モジュール,マルチチップ内臓モジュール,
マルチチップ・スタンドアローン・モジュールという3つが規定されており,
これらに関してはセキュリティ要件5の
物理的セキュリティで説明する.
ドキュメントでは,暗号モジュールの
ハードウェア,ソフトウェア,ファームウェアの構成要素,
それらの暗号バウンダリー,および,
モジュールの物理的構成の規定が求められる.
また暗号モジュールのセキュリティ方針
(用語解説2参照),
すなわちモジュールの運用上のセキュリティルールの
完全な規定が必要とされ,
特に,FIPS 140-1およびその他の規格・標準による
セキュリティ要件から生じるセキュリティルールに
準拠しなければならない.
- モジュール・インターフェース
モジュールとの全ての情報の流れおよび物理的アクセスのコントロール
暗号モジュールは,全ての情報の流れと物理的アクセスが
モジュールからの全入出力を定義する論理的
インターフェースによって制限されるように設計される必要があり,
論理的インターフェースとして次の4つを備えなければならない.
- データ入力インターフェース
- モジュールへ入力され処理される全てのデータ
(平文データ,暗号文データ,暗号鍵,鍵運用データ,認証データ,
他のモジュールからのステータス情報)
がこのデータ入力インターフェースを介して入力される.
- データ出力インターフェース
- モジュールから出力される全てのデータ
(平文データ,暗号文データ,暗号鍵,鍵運用データ,認証データ,
他のモジュールのコントロール情報)
がこのデータ出力インターフェースを介して出力される.
エラー発生時や自己検査時には全データの出力が抑制されなければならない.
- 制御入力インターフェース
- モジュールの動作をコントロールするための
全ての入力コマンド,シグナル,データ
(スイッチ,ボタン,キーボード等によるマニュアル制御を含む)
がこの制御入力インターフェースを介して入力される.
- 状態出力インターフェース
- モジュールのステータスを表示するための
全ての出力信号,データ
(光,LED,ブザー,表示装置等のステータスコードや
物理的表示を含む)がこの状態出力インターフェースを
介して出力される.
セキュリティレベル1と2では,
暗号鍵,認証データ,他の重要セキュリティパラメータに用いられる
データ入出力ポートは,モジュールの他のポートと共有されるが,
セキュリティレベル3と4では,
平文形式暗号鍵,平文形式認証データ,その他の保護されていない
重要セキュリティパラメータに用いられるデータ入出力ポートは,
モジュールの他のポートから物理的に分離されていなければならない.
さらにこれらのポートは,平文形式暗号鍵,平文形式認証データ,
その他の保護されていない重要セキュリティパラメータを
直接入出力できなければならない.
また暗号モジュールは上記の必須インターフェースに加え,
次のインターフェースをオプションとして備える.
- パワーインターフェース
- 全ての外部電力がこのパワーインターフェースを介して入出力される.
暗号モジュール内部で全ての電源が供給・維持される場合は不要となる.
- 保守管理アクセスインターフェース
- モジュールの保守,サービス,修理を行うための
あらゆるデータ,コントロール,ステータス情報が
この保守管理アクセスインターフェースを介して入出力される.
カバーやドアの除去などを含む全ての物理的アクセスのパスは,
この保守管理アクセスインターフェースの一部として定義されなければならない.
- 役割とサービス
認証された役割とそれに対応したサービスのサポート
暗号モジュールは,認証された役割とその役割が実行可能なサービスを
サポートするように設計される必要がある.
モジュールが同時に複数のオペレータをサポートする場合は,
各々のオペレータの役割とそれが行うサービスが
モジュールで内部的に分離されていなければならない.
- 限定状態マシンモデル
有限個の状態におけるモジュールの使用
暗号モジュールは,
モジュールの全ての処理状態およびエラー状態を明確にするため,
次に挙げる有限個の状態でのマシンモデルを用いて設計されなければならない.
- 電源オン/オフ状態
- 第一,第二,予備電源の状態
- 暗号管理者状態
- 暗号初期化や鍵管理機能などの暗号管理者機能が実行されている状態
- ユーザーサービス状態
- 認証されたユーザーがセキュリティサービスの受益,
暗号処理の実行,ないし,その他の認証されたユーザー機能を実行している状態
- 自己検査状態
- モジュールにおける自己検査実行状態
- エラー状態
- 自己検査の不成功,鍵や重要セキュリティパラメータが失われている
状況での暗号化など,エラーが発生した状態
- 未初期化状態
- モジュールにセキュリティパラメータがロードされていない状態
- アイドル状態
- 暗号鍵やセキュリティパラメータがロードされており,
モジュールがデータや制御の入力を待っている状態
- セイフティ状態
- 暗号鍵やセキュリティパラメータはロードされているが,
処理は行われない状態
(オペレータが一時的に不在になるような場合に
不正アクセスからモジュールを保護するために用いられる)
- バイパス状態
- 暗号処理を行うことなくサービスを提供する状態
- 保守管理状態
- モジュールの保守管理を行う状態
以上の全ての状態が,モジュールのFIPS 140-1への準拠を
検証するために詳細に明示されなければならない.
- 物理的セキュリティ
モジュールへの権限のない物理的アクセスの制限・抑止
暗号モジュールは,
モジュール内部への不正な物理的アクセスを制限し,
権限のない利用や書き換えを検知するための
物理的セキュリティ機構を備えるように設計される必要がある.
暗号モジュールの物理的セキュリティ機構は,
モジュールの物理的形態に大きく依存し,
物理的セキュリティ要件は
シングルチップ・モジュール,マルチチップ内臓モジュール,
マルチチップ・スタンドアローン・モジュールの3つに分類される.
以下,3つの形態について説明し,それぞれの形態で
要求されるセキュリティレベル毎のセキュリティ要件を
表IV.2〜表IV.4にまとめる.
表 IV.2:
シングルチップ・モジュールに対するセキュリティ要件
| レベル1 |
|
| レベル2 |
| ・レベル1+ |
| ・タンパリングの痕跡が残る不透明コーティング |
|
| レベル3 |
| ・レベル1+2+ |
| ・タンパリングの痕跡が残る不透明ハードコーティング |
|
| レベル4 |
| ・レベル1+2+3+ |
| ・除去防止不透明ハードコーティング |
| ・温度・電圧に対するEFP/EFT |
|
表 IV.3:
マルチチップ内臓モジュールに対するセキュリティ要件
| レベル1 |
|
| レベル2 |
| ・レベル1+ |
| ・タンパリングの痕跡が残る不透明コーティング |
|
| レベル3 |
| ・レベル1+2+ |
| ・不透明ハード容器,取り去り不可能な遮蔽,ないし, |
| 検知回路とゼロ化回路を備えた取り去り可能なカバー |
| ・保護された通気孔 |
|
| レベル4 |
| ・レベル1+2+3+ |
| ・タンパリング応答回路およびゼロ化回路を備えた |
| タンパリング検知用遮蔽 |
| ・温度・電圧に対するEFP/EFT |
|
表 IV.4:
マルチチップ・スタンドアローン・モジュールに対するセキュリティ要件
| レベル1 |
|
| レベル2 |
| ・レベル1+ |
| ・カバーやドアに対する機械的ロックないし |
| タンパリングの痕跡が残るシールを備えた不透明遮蔽 |
|
| レベル3 |
| ・レベル1+2+ |
| ・不透明ハード容器,ないし,カバーやドアに対する |
| タンパリング応答やゼロ化回路を備えた強固な遮蔽 |
| ・保護された通気孔 |
|
| レベル4 |
| ・レベル1+2+3+ |
| ・ゼロ化回路を備えたタンパリング検知/応答用遮蔽 |
| ・温度・電圧に対するEFP/EFT |
|
- シングルチップ・モジュール
- スタンドアローン・デバイスや物理的に保護されていない
モジュールないし遮蔽に内蔵されて利用されるシングルICチップ.
スマートカードや,暗号処理のためにシングルICチップが組み込まれた
システムがこれに該当する.
- マルチチップ内臓モジュール
- 2個以上のICチップが接続され,物理的に保護されていない
モジュールないし遮蔽に内蔵されたもの.
- マルチチップ・スタンドアローン・モジュール
- 2個以上が結合されたチップを内蔵する
システム全体が物理的に保護されたモジュール.
表IV.2〜IV.4の
レベル4におけるEFP (Environmental Failure Protection)とは,
温度や電圧などの環境条件を常に測定する回路やデバイスを有し,
暗号モジュールの適正動作範囲から外れた場合は
直ちにモジュールをシャットダウンするか
秘密情報のゼロ化を行う機構である.
またEFT (Environmental Failure Testing)は,
温度や電圧が適正動作範囲から外れた場合でも
暗号モジュールの安全性を保障するための
解析やシミュレーションなどの検査を指す.
- ソフトウェア・セキュリティ
モジュールのセキュリティ方針に沿ったソフトウェアの使用
セキュリティレベル毎に次のようなソフトウェア・セキュリティ要件が
要求される.
- セキュリティレベル1&2
- ドキュメントにおいて次の項目を明記する必要がある.
- ソフトウェア設計の詳細説明
- ソフトウェア設計と暗号モジュールのセキュリティ方針との
対応関係の詳細説明
- モジュール中の全てのソフトウェアがリストアップされた
完全なソースコード
- セキュリティレベル3
- セキュリティレベル1と2に加え,
全てのソフトウェアのハイレベル言語での実行が必要.
ただし,モジュールのパフォーマンスに本質的に影響する場合や,
ハイレベル言語が利用できない場合は,
ローレベル言語の使用が限定的に認められる.
- セキュリティレベル4
- セキュリティレベル1,2,3に加え,
セキュリティレベル4では次の項目が要求される.
- 暗号モジュールのセキュリティ方針に関する公式モデル
(数式による厳密な表記)のドキュメント
- 公式モデルとセキュリティ方針との対応関係の詳細ドキュメント
- 個々のソフトウェアモジュール,ソフトウェア機能,ソフトウェア手続き
に関して,モジュールで実行される処理の前後条件を明記したソースコード
- ソフトウェア設計と公式モデルとの対応関係の詳細なドキュメント
- オペレーティングシステム・セキュリティ
暗号ソフトウェアの実行の保護
オペレーティングシステムのセキュリティ要件は
セキュリティレベル毎に次のように規定されている.
- セキュリティレベル1
- レベル1ではマルチユーザー,マルチプロセス・システムは
元々対象外となっており,
- 全ての暗号ソフトの実行コードでのインストール
- FIPS認定技術の暗号ソフトウェアへの適用
- シングルユーザーのみでの暗号モジュールの利用
- 暗号処理に限定した利用
が要求される.
- セキュリティレベル2
- セキュリティレベル1に加え,
- コントロールされたアクセス保護を行う
OS (TCSECのC2,ないし,それと同等なFIPS認定)上での,
暗号ソフトウェア,暗号鍵,その他の重要セキュリティパラメータ,
コントロール・ステータス情報の利用
- 不正アクセスから平文データ,暗号ソフトウェア,暗号鍵,
認証データ,およびその他の重要セキュリティパラメータを保護するための
アクセス制御機構
が要求される.
- セキュリティレベル3
- レベル1,2に加え,
- 暗号ソフトウェア,暗号鍵,
その他の重要セキュリティパラメータ,
コントロール・ステータス情報のラベル化と,
ラベル化された保護を行う
OS (TCSECのB1,ないし,それと同等なFIPS認定)上での利用
- 暗号鍵,認証データ,その他の重要セキュリティパラメータ,
制御入力,状態出力の,信頼性のあるメカニズム(専用I/Oポートやパス)
を介してのやり取り
- 暗号鍵,その他の重要セキュリティパラメータ,
制御入力,状態出力を検査する機能の提供
が要求される.
- セキュリティレベル4
- セキュリティレベル1,2,3に加え
- 暗号ソフトウエア,暗号鍵,その他の重要セキュリティパラメータ,
コントロール・ステータス情報のラベル化と,
構造化された保護を行う
OS (TCSECのB2,ないし,それと同等なFIPS認定)上での利用
が必要となる.
- 鍵管理
暗号鍵のライフサイクル全般にわたる暗号鍵セキュリティの確保
鍵管理は秘密鍵,公開鍵共に全ての暗号モジュールにおいて必要であり,
秘密鍵やプライベート鍵
(秘密鍵とは秘密鍵暗合における秘密鍵を,
プライベート鍵とは公開鍵暗合における秘密鍵を指す)
は権限のない開示,変更,置換から,
公開鍵は権限のない変更や置換から保護されなければならない.
- 鍵生成
- 暗号モジュールはオプションとして内部鍵の発生機能を持ち,
その際FIPS認定の鍵生成アルゴリズムを採用する必要がある
- 鍵配布
- 鍵配布の方法には手動,自動,および両者の組み合わせがあり,
暗号モジュールはFIPS認定の鍵配布技術を採用しなければならない
- 鍵入出力
- 暗号鍵の手動入力では,暗号モジュールに鍵を入力している間,
手動入力テストを用いてその正確性を確認する必要がある
- 鍵記憶
- 秘密鍵やプライベート鍵が平文形式で暗号モジュールに記録される際は,
外部のモジュールからそれらの鍵へのアクセスが可能であってはならない
- 鍵廃棄
- 暗号モジュールは,モジュール中の全ての平文形式暗号鍵と
その他の保護されていない重要セキュリティパラメータを
ゼロ化する機能を備える必要がある
- 鍵保管
- 暗号モジュールは保管のための鍵の出力をオプションとして備える.
その際,鍵は暗号化されて出力されねばならない.
- 暗号アルゴリズム
FIPS認定の暗号アルゴリズムの使用
- 電磁気的インターフェース(EMI)/電磁気的互換性(EMC)
米国連邦通信委員会(FCC) [FCC]規格への準拠
暗号モジュールはセキュリティレベル毎に
次のようなFCCのEMI/EMC要件に最低限準拠しなければならない.
- セキュリティレベル1&2
- ビジネス利用であるFCC Part 15, Subpart J, Class Aへの準拠
- セキュリティレベル3&4
- ホーム利用であるFCC Part 15, Subpart J, Class Bへの準拠
- 自己検査
暗号処理の正常動作の確認と保障
暗号モジュールが正常に機能していることを確認するための
自己検査機能は,パワーアップテストと条件付テストとに分類される.
FIPS 140-1で規定する以外の自己検査をオプションとして装備する場合もある.
自己テストが不成功に終わった場合,モジュールはエラー状態の入力と
エラー表示の出力を状態インターフェースを介して行う.
エラー状態の間は暗号処理を行ってはならず,
データ出力インターフェースからのデータの出力も許されない.
- パワーアップテスト
- 暗号モジュールがパワーアップされた後,
モジュールは自己検査状態に入り次のようなテストを実行する.
- 暗号アルゴリズムテスト
正しい出力が分かっているデータを用いてアルゴリズムを実行する
ことでテストを行う(既知回答テスト).
モジュールが2つの独立な暗号アルゴリズムを含み,
暗号アルゴリズムの正しい動作を確認するために
それらが常に比較されている場合は,
暗号アルゴリズムテストは省略してもよい.
- ソフトウェア/ファームウェアテスト
エラー検知コード(EDC)ないし,データ認証コードやNIST
デジタル署名アルゴリズムなどのFIPS認定技術を
ソフトウェアおよびファームウェアへ適用する.
- 重要機能テスト
モジュールのセキュリティ面での動作への影響が大きく,
パワーアップテストの一部として検査が可能なその他全ての機能に対する検査.
- 統計的乱数生成テスト
乱数ないし擬似乱数生成のランダム性の統計的テスト.
セキュリティレベル1,2では必要とされないが,
セキュリティレベル3では要求に応じて,
セキュリティレベル4ではパワーアップ時ないし要求に応じて
検査が行われる.
- 条件付テスト
- 次のテストがそれぞれのテストに応じた条件下で実行される.
- ペア一致テスト
公開鍵やプライベート鍵を生成する暗号モジュールでは,
比較によるテストを行う.
公開鍵を平文に適用し,
得られた暗号文を元の平文と比較して,
両者が異なることを確認する.
次にプライベート鍵を暗号文に適用してオリジナルの平文と比較し,
両者が等しいことを確認する.
- ソフトウェア/ファームウェア・ロードテスト
暗号モジュールへ外部からロードが可能な
ソフトウェアやファームウェアに対して
FIPS認定の認証技術(データ認証コードやNISTデジタル署名アルゴリズムなど)
による暗号機構を適用する.
- 手動鍵入力テスト
暗号鍵が手動で暗号モジュールへ入力される場合は,
鍵はパリティチェック値などのエラー検知コードを有するか,
入力された鍵の正確性を確認するために二重に入力される必要がある.
- 連続乱数生成テスト
乱数ないし擬似乱数の生成を行う暗号モジュールでは,
一定値が発生していないかどうかのテストを行う.
(
)ビットのブロックを発生する場合,
パワーアップ後に生成された初めのブロックは使用せずに
次のブロックとの比較を行うために保存される.
新しいブロックを生成する度に,前のブロックとの比較を行い,
二つが等しくないことを確認する.