MASTG-TEST-0015 鍵の目的のテスト (Testing the Purposes of Keys)

概要

静的解析

暗号が使用されているすべてのインスタンスを特定します。以下のものを探すことができます。

  • クラス Cipher, Mac, MessageDigest, Signature

  • インタフェース Key, PrivateKey, PublicKey, SecretKey

  • 関数 getInstance, generateKey

  • 例外 KeyStoreException, CertificateException, NoSuchAlgorithmException

  • java.security.*, javax.crypto.*, android.security.*, android.security.keystore.* をインポートしているクラス

特定した各インスタンスについて、その目的とタイプを特定します。以下を使用できます。

  • 暗号化/復号化 - データの機密性を確保するため

  • 署名/検証 - データの完全性を (場合によっては責任追跡性も) 確保するため

  • 保守 - 特定の機密性の高い操作 (KeyStore へのインポートなど) を行う際に鍵を保護するため

さらに、特定した暗号のインスタンスを使用するビジネスロジックを特定する必要があります。

検証の際には以下のチェックを実行する必要があります。

  • すべての鍵が作成時に定義した目的に従って使用されていますか? (これは KeyProperties を定義できる KeyStore 鍵に関連します)

  • 非対称鍵の場合、秘密鍵 (private key) は署名にのみ使用され、公開鍵 (public key) は暗号化のみに使用されていますか?

  • 対称鍵は複数の目的のために使用されていませんか?別のコンテキストで使用する場合には新しい対称鍵を生成する必要があります。

  • 暗号がビジネスの目的に応じて使用されていますか?

動的解析

暗号メソッドで メソッドトレース (Method Tracing) を使用して、使用されている鍵などの入出力値を判別できます。暗号操作の実行中にファイルシステムへのアクセスを監視し、鍵マテリアルの書き込み先または読み取り元を評価します。たとえば、RMS Runtime Mobile SecurityAPI monitor を使用してファイルシステムを監視します。

Last updated

Was this helpful?