FIPS 140-2 は、連邦の運用環境で機密性が高いが機密指定されていない情報（Sensitive But Unclassified、SBU）に対して必要とされるデータ暗号化の最小強度レベルを指定する文書です。ただし、その影響力が及ぶ範囲は、この重要ながら限定された領域をはるかに超えています。
米国連邦情報処理規格（FIPS）140-2 は、暗号化製品および使用に関する第三者検証のために広範に使用される基準となり、暗号化ハードウェアの有効性を検証するものとして広く認識されています。法律、金融、ユーティリティ（電気・ガス・水道など）などの規制が厳しい産業では、特に広く使用されています。
FIPS 140-2 は広く信頼されていますが、一方で誤解も多いようです。FIPS 140-2 の起源、適用方法、製品の検証方法などについて基礎的な理解ができていることは重要です。
## 暗号化と暗号モジュール
暗号化は、数学的アルゴリズムを使用して、暗号化を逆転させる（復号化する）知識を持つ人のみがデータを読むことができる形式に変換する手段です。アルゴリズムには様々なタイプがあり、暗号化の手法については盛んに研究開発が行われています。コンピュータの能力が高まるにつれて、以前は安全だった暗号化アルゴリズムも、許可されていないユーザーが容易に解読できてしまう可能性があります。
FIPS 140-2 は、暗号モジュールとそれらの基礎となるアルゴリズムをカバーしています。暗号モジュールは、暗号化、ハッシュ、鍵管理、メッセージ認証などの暗号機能を実装するハードウェア、ファームウェア、およびソフトウェアの任意の組み合わせです。
関連ブログ（英語）: FIPS Validated Vs. FIPS Compliant
## 暗号モジュールの検証
しかし、連邦政府はスタンダードを確立しただけではなく、堅牢なテストと認証プロセスを開発しました。
国立標準技術研究所（National Institute of Standards and Technology、NIST）は、カナダ通信安全保証部（Communications Security Establishment、CSE）の対応機関と緊密に協力して、ハードウェアとソフトウェアが FIPS 140-2 の要件を満たしていることをテストし、証明するメカニズムを開発しました。
両グループのメンバーが暗号モジュール検証プログラム（Cryptographic Module Validation Program、CMVP）を担当しています。実際の機能検証テストは、独立したサードパーティーのテストラボのネットワークによって実行されますが、結果は常にCVMPによってレビューされ、その後、FIPS 140-2 証明書が発行されます。
## 認証プロセス
FIPS 140-2 証明書を取得するには、次の4つのステップを実行する必要があります。
- 設計が要件を満たしていることを確認する。
- 要件を満たしていることを示すあらゆる文書を収集する。これらには、有限状態モデル、暗号モジュールのポートとインタフェース、ソースコードのリスト、重要な管理ライフサイクルの記述、EMI（電磁干渉）とEMC（電磁適合性）コンプライアンスに関するFCC証明書、暗号化キーなど、多くのものが考えられます。
- テストラボに確認のために文書とデバイスを比較してもらう。
- 政府に検査所見をレビューしてもらい、証明書を発行してもらう。
文書は、製品開発ライフサイクルの一環として定期的に生成する必要があります。検証で問題が見つかった場合、再設計して文書を更新する必要が生じますが、そうなると大幅に遅延する可能性が高いです。認証のプロセスは、長期にわたり、緊張感をもって集中的に対処する必要があり、高い費用もかかります。
そのため、製造会社は、コンポーネントと製品について認証を受ける代わりに、自社製品に使用されている基礎になっている暗号モジュールを認証することもできます。
FIPS 140-2 は2001年に署名されました。当初の予定では5年ごとに標準を改訂するはずでしたが、予定は大幅に遅れ、NISTは FIPS 140-3 を完全にスキップして、次のリビジョンを FIPS 140-4 にすることを計画しています。ただし、それがいつになるのか、日付は確定されていません。
そうこうする間にも、ベンダーが知っておく必要がある様々な特別な通告やアルゴリズム要件の変更がありました。
## FedRAMP、FISMA、HITECH と FIPS 140-2
FedRAMP (Federal Risk and Authorization Management Program)、FISMA (Federal Information Security Management Act of 2002)、HITECH (Health Information Technology for Economic and Clinical Health Act) などは、すべての暗号機能に FIPS 140-2 認証済みの暗号化が使われていることを要件としています。FIPS 140-2 はもともと連邦政府機関を対象としていましたが、現在は国防総省も要件にしています。
政府が使用するクラウドサービスには、FedRAMP 認定が必要です。
## FIPS 140-2 のセキュリティレベル
FIPS 140-2 暗号モジュールには、4つのセキュリティレベルがあります。140-2 のダッシュの後ろにある数字(2)は、セキュリティレベルではなくリビジョン番号ですので、誤解しないようにしてください。
モジュールは、11種類の異なる暗号セキュリティ分野でレベル1から4に格付けされます。モジュールの全体的な格付けには、11の中で最も低い格付けが採用されます。セキュリティレベルが高くなるほど、より高度な物理的な改ざん防止機能、しっかりした役割とアイデンティティに基づく認証やインタフェースの分離が求められます。レベル3とレベル4は、主にハードウェアと物理的なセキュリティに適用されます。
レベル3の暗号化デバイスの例は、IBM Cloud Hardware Security Module 7.0です。
## FIPS と SSL/TLS
CMVPの暗号モジュール検証に加えて、暗号アルゴリズム認証プログラム（Cryptographic Algorithm Validation Program、CAVP）によって行われる、より特化された暗号アルゴリズムと暗号操作の検証もあります。
FIPS対応コンピュータは、FIPS準拠のSSL/TLS（Secure Sockets Layer/Transport Layer Security）用の暗号を使用している Webサイトにのみ接続できます。Webサーバーが FIPS 準拠であるためには、署名、ハッシュ、暗号化のために少なくとも1つの暗号SSL/TLSメカニズムを使用する必要があります。トリプルDESを使う場合が多いですが、一般的に使用されるアルゴリズムには要件を満たさないものも多いようです。
CAVPは、SSH（Secure Shell）、SNMP、SSL/TLSなどのプロトコルをテストします。
OpenSSL は、SSLのインプリメンテーションによく使われます。
## FIPS 140-2 の広がり
FIPS 140-2 は、既述のように、連邦政府機関にサービスするベンダーの暗号化要件を設定するという表向きの目的を持っていますが、特に金融、法律、ユーティリティなどの規制が厳しい産業では、事実上のセキュリティ基準となっています。しかし、暗号化が厳格に実施されていない領域はまだ多くあります。
そのような領域の１つは、おそらく医療分野でしょう。HITECHには FIPS 140-2 が組み込まれていますが、HIPAA（Health Insurance Portability and Accountability Act 1996、医療保険の相互運用性と説明責任に関する法令）ではデータ暗号化は特に要求項目にはなっていません。ただし、FIPS 140-2 暗号化が使用されていれば、データ侵害に対する免責条項になります。FIPS 140-2 要件を満たすことは容易ではなく、時間も費用もかかります。しかし、暗号化はセキュリティにとって不可欠です。医療機関も、やがてはは FIPS 140-2（140-4 になっているかもしれませんが）コンプライアンスを満たすことが必須になっていくでしょう。