9.2. 連邦情報処理標準 (FIPS: Federal Information Processing Standard)

連邦情報処理標準 (FIPS) のパブリケーションである 140-2 は、暗号モジュールの品質を検証するために連邦政府と業界の作業部会によって開発されたコンピューターセキュリティ標準です。FIPS のパブリケーション (140-2 を含む) は以下の URL にあります。http://csrc.nist.gov/publications/PubsFIPS.html。本書の作成時点で 140-3 のパブリケーションは草稿状態にあるため、これが完成版の標準として使用できない可能性があることに注意してください。FIPS 標準は、さまざまな業界や暗号モジュールの各種の実装およびさまざな組織規模や要件に対応すべく、4 つのセキュリティレベルを規定しています。これらのレベルについては、以下で説明します。
  • レベル 1 – セキュリティレベル 1 はセキュリティの最も低いレベルです。暗号モジュールについての基本的なセキュリティ要件が規定されます (例: 1 つ以上の承認済みのアルゴリズムか、承認済みのセキュリティ機能を使用するものとする)。セキュリティレベル 1 の暗号モジュールでは、本番稼働レベルのコンポーネントの基本要件を超える具体的な物理セキュリティのメカニズムは必要とされません。セキュリティレベル 1 の暗号モジュールの例には、パソコン (PC) 用の暗号化ボードがあります。
  • レベル 2 – セキュリティレベル 2 は、セキュリティレベル 1 の暗号モジュールについての物理セキュリティのメカニズムを強化します。レベル 2 では、耐タンパー性のあるコーティングまたはシールを使用することや、モジュールの除去可能なカバーやドアにこじあけ耐性のある錠をかけることをはじめとする物理的改ざんの痕跡を残すという要件が加わります。耐タンパー性のあるコーティングやシールは暗号モジュールに付けられ、コーティングやシールを破らない限り、モジュール内のテキスト形式の暗号鍵とクリティカルセキュリティパラメーター (CSP) に物理的にアクセスできないようにします。耐テンパー性のあるシールまたはこじあけ耐性のある錠をカバーまたはドアに取り付けて、許可されない物理的なアクセスからモジュールを保護します。
  • レベル 3 – セキュリティレベル 2 で要求される改ざん跡を残す物理セキュリティのメカニズムに加えて、セキュリティレベル 3 は、暗号モジュール内で保持される CSP に侵入者がアクセスすることを防ぐことを目的とします。セキュリティレベル 3 で要求される物理セキュリティのメカニズムは、物理的なアクセスの試行や暗号モジュールの使用または変更を高い確率で検出し、これらに対応することを意図しています。この物理セキュリティのメカニズムには、頑丈な囲い (enclosure) の使用、および暗号モジュールの除去可能なカバー/ドアが開かれたときにテキスト形式の CSP をすべてゼロ化するタンパー検出/タンパー応答を持つ回路の使用が含まれることがあります。
  • レベル 4 – セキュリティレベル 4 は、この標準で定義される最も高いセキュリティレベルです。このセキュリティレベルでは、すべての許可されていない物理的なアクセスを検出し、これに応答することを目的として、物理セキュリティのメカニズムが暗号モジュール全体に保護用の遮蔽 (envelope) を提供します。 あらゆる方向からの暗号モジュールの囲いへの侵入が非常に高い確率で検出され、その結果、テキスト形式のすべての CSP が即座にゼロ化されます。セキュリティレベル 4 の暗号モジュールは、物理的に保護されていない環境下での使用に役立ちます。
FIPS 標準の上記の各レベルや他の仕様についての詳細は、FIPS 140-2 標準の全体 (http://csrc.nist.gov/publications/fips/fips140-2/fips1402.pdf を参照してください。

9.2.1. FIPS モードの有効化

Red Hat Enterprise Linux 6 を連邦情報処理標準 (FIPS) パブリケーション 140-2 準拠とするには、いくつかの変更を加えて認定済み暗号モジュールを使用することが必要です。お使いのシステム (カーネルおよびユーザースペース) を FIPS モードに切り替えるには、以下のステップを実行します。
  1. モジュール内の整合性検証の適切な実行にあたり、prelink を無効にする必要があります。/etc/sysconfig/prelink 設定ファイルで PRELINKING=no を設定してください。既存の事前リンク (prelinking) がある場合は、 prelink -u -a コマンドを使用してすべてのシステムファイル上でこれを元に戻す必要があります。
  2. 次に、dracut-fips パッケージをインストールします。
    ~]# yum install dracut-fips

    注記

    FIPS 整合性の検証は、システムが FIPS モードで稼働中かどうかにかかわらず、dracut-fips パッケージがシステム上にあれば実行されます。ただし、dracut-fips パッケージがあったとしても、システムもしくは共有ライブラリーが FIPS モードでなければ、整合性の検証結果は無視 (またはログ記録されるだけ) されます。
  3. initramfs ファイルを再作成します。
    ~]# dracut -f

    警告

    この操作により、既存の initramfs ファイルが上書きされます。
  4. 以下のオプションを追加して、/boot/grub/grub.conf ファイルにある現在のカーネルのカーネルコマンドラインを変更します。
    fips=1

    注記

    /boot または /boot/efi が別のパーティションにある場合、カーネルパラメーターの boot=</boot または /boot/efi のパーティション> のカーネルパラメーター をカーネルコマンドラインに追加する必要があります。パーティションは、それぞれ df /boot または df /boot/efi コマンドでそれぞれ識別されます。以下は例になります。
    ~]$ df /boot
    Filesystem           1K-blocks      Used Available Use% Mounted on
    /dev/sda1               495844     53780    416464  12% /boot
    上記の例では、/boot パーティションは /dev/sda1 にあります。従って、以下の文字列をカーネルコマンドラインに追加する必要があります。
    boot=/dev/sda1
  5. システムを再起動します。

注記

暗号とメッセージ認証コード (MACs) は、デフォルトで /etc/ssh/sshd_config ファイル内で FIPS モードに設定されています。sshd_config に他の暗号と MACs が含まれている場合は、FIPS モードでサポートされているアルゴリズムのみを使用するように修正します。以下がその例になります。
Protocol 2
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Macs hmac-sha1,hmac-sha2-256,hmac-sha2-512
FIPS へのより厳格なコンプライアンスが求められる場合は、システムのインストール時に fips=1 カーネルオプションをカーネルコマンドラインに追加する必要があります。これにより、FIPS で承認されているアルゴリズムを使って鍵を生成し、継続的なモニタリングテストを実施することができます。また、ユーザーは、インストールプロセス時にマウスを動かすか、またはマウスを使用できない場合は多数のキー入力を行うことにより、システムに十分なエントロピーを確保する必要があります。推奨されるキー入力の回数は 256 回以上です。 255 回以下の場合は、一意でない鍵が生成される可能性があります。

警告

Red Hat Enterprise Linux 上で FIPS モードを有効にする上記の手順は、Network Security Services (NSS) の FIPS 状態に影響を及ぼさないので、NSS を使用するアプリケーションにも影響がありません。必要な場合は、以下のコマンドを使って NSS アプリケーションを FIPS モードに切り替えることができます。
~]# modutil -fips true -dbdir dir
ここでの dir は、アプリケーションに使用する NSS データベースを指定するディレクトリーです。複数の NSS アプリケーションがこのデータベースを使用している場合は、これらアプリケーションのすべてが FIPS モードに切り替えられます。NSS FIPS モードを有効にするには、アプリケーションを再起動する必要があります。