web-dev-qa-db-ja.com

FIPSコンプライアンスAndroidプロジェクト

私はセキュリティ関連のプロジェクトに取り組んでおり、FIPS 140-2に準拠していることを確認する必要があります。

私の理解によると、FIPSコンプライアンスはハードウェアおよびソフトウェアレベルでのコンプライアンスです。現在、Samsungは2つありますAndroidデバイスはFIPS準拠、つまりハードウェアおよびソフトウェアレベルで準拠しています。いくつか質問があります。

  1. Android app FIPS=に準拠させたい場合、プロジェクトで使用されている唯一の暗号モジュールが準拠していれば十分ですか?

    Android SDKによって提供される暗号モジュールはBouncyCastleライブラリであり、FIPSに準拠していません。

    https://stackoverflow.com/questions/11091905/Android-build-openssl-fips-2- のように、プロジェクトでFIPS準拠のOpenSSLライブラリを使用しています。 OpenSSLライブラリを使用してプロジェクトライブラリを構築しました。つまり、FIPSモードを使用して構成されたlibssl.aおよびlibcrypto.aです。

  2. FIPS OpenSSL module for Android documentation によると、モジュールは異なるAndroid armv7アーキテクチャのデバイス。Androidハードウェアが存在しないFIPS準拠事項はここにありますか?

  3. AESアルゴリズムはFIPSコンプライアンスの下にあります。これは、FIPS準拠のOpenSSLライブラリを使用する代わりにJavaコードでAESアルゴリズムを使用すると、 「FIPS準拠ですか?

    AESがFIPSに準拠している場合、AESのJavaまたはC#実装)とどう関係しますか。両方ともCMVPを通過する必要がありますか?

5
Alok Kulkarni

プロジェクトをFIPSに準拠させる場合は、ソリューション全体をFIPSについてテストする必要があります-ハードウェアまたはソフトウェア。 FIPS準拠のソフトウェアパッケージを使用すると、FIPS準拠のステータスをサポートする方法でそのソフトウェアを確実に使用する必要がありますが、プロセスが簡略化されます。たとえば、AESを使用している場合、暗号化メカニズムは強力であると検証されます。ただし、これは適切なキー管理が適切に行われていることを意味するものではないため、セキュリティとコンプライアンスに関係するレイヤーを考慮する必要があります。

あなたの質問に答えるには:

1)Android準拠の暗号モジュールを使用して、FIPSアプリを作成できます。これは、暗号モジュールが準拠していることを意味します。アプリケーションが準拠しているという意味ではありません。これが人々に提供する唯一の安心は、独自の暗号化を導入せず、既知の認識されているライブラリを使用していることです。

2)AndroidハードウェアがFIPSでないことは、プロジェクトがFIPSハードウェアを必要とするかどうかという点でのみ重要です。ソフトウェアが検証されているように見える(FIPSレベル1)

3)JavaまたはOpenSSLを使用してAES実装を記述し、検証することができます。どちらか一方を使用しているからといって、準拠しているとは限りません。それはCMVPによって行われたテストに依存します。

何をするにしても、FIPSに準拠したい場合は、プロジェクトをテストして検証する必要があります。 FIPSプロジェクト内での使用が許可されている、または許可されているライブラリまたは暗号化アルゴリズムを使用しているという理由だけで、FIPSに準拠することはできません。

5
AndyMac

FIPSによって、私はあなたが FIPS 14 を意味すると思います。

FIPS 140は、4つのセキュリティレベルを定義しています。

  • レベル1は基本的に、いくつかの基本的な機能テストに合格する場合と同様に、暗号化と認証を正しく実装することです。暗号化と乱数生成には、承認されたアルゴリズムを使用する必要があります。レベル1のソフトウェア製品を認定できます。
  • レベル2以上には、徐々に強力なセキュリティメカニズムが含まれます。ハードウェアは認証に含まれている必要があります。

FIPS 140-2(“ fips one-forty dash two”)を混同しないでください。ここで、2は標準のバージョン番号で、FIPS 140- 2レベル1(「fips 1フォーティダッシュ2レベル1」)。1はセキュリティのレベルです。

FIPS 140レベル1が必要になります。

あなたの質問3についてFIPS 140は検証済みの実装が必要であり、承認されたアルゴリズムの実装のみを検証できます。AES(適切なモードで)は承認されたアルゴリズムであり、それはあなた次第ですソフトウェアがFIPSに準拠するためには、標準に従うだけで準拠していると言う必要はありません。検証プログラムを実行する必要があることに注意してください。 。

検証済みの暗号化ライブラリを使用しても、おそらく乱数ジェネレータを除いて、あまり役に立ちません。承認されたアルゴリズムを選択し、とにかく適合性テストに合格する必要があります。

FIPS 140レベル1は、認定に関係なく、妥当なアルゴリズムを使用して、いくつかのテストを実行して、本格的な製品で実行することをはるかに上回っていません。 FIPS準拠ライブラリが少し役立つかもしれない2つの要件を追加します。

  • 各アルゴリズムは、各電源投入後に使用前にテストする必要があります。テストとは、1つのテストベクトルを実行して結果を検証することです。対応するテストが失敗した場合、ソフトウェアはアルゴリズムの使用を拒否する必要があります。
  • モジュールに保存されているすべてのキーは、使用後に消去する必要があります。ここには強力なセキュリティ検証はありませんが、オブジェクトを移動できるガベージコレクターで言語を使用している場合、問題が発生する可能性があります。

FIPS準拠のライブラリを使用している場合、クライアントがそのライブラリに満足し、ソフトウェアの検証を要求しない可能性があります。あなたはあなたのクライアントでそれを取り上げる必要があります。