MASTG-TEST-0232 不備のある対称暗号モード (Broken Symmetric Encryption Modes)

概要

Android アプリで 不備のある暗号モードの使用 をテストするには、暗号モードを構成および適用するために使用される暗号フレームワークやライブラリのメソッドに注目する必要があります。

Android 開発では、Java Cryptography Architecture (JCA) の Cipher クラスが暗号操作の暗号モードを指定できる主要な API です。Cipher.getInstance は、暗号アルゴリズム、操作モード、パディングスキームを含む、変形文字列を定義します。一般的な書式は "Algorithm/Mode/Padding" です。たとえば、以下のとおりです。

Cipher.getInstance("AES/ECB/PKCS5Padding")

このテストでは、ECB (Electronic Codebook) などの対称暗号モードに焦点を当てます。

ECB (NIST SP 800-38A で定義) は、固有のセキュリティ上の脆弱性があるため、一般的に推奨されていません。2023 年の NIST の発表を参照してください。明示的に禁止されているわけではありませんが、その使用は制限されており、ほとんどのシナリオでは推奨されていません。ECB は決定論的に動作するブロック暗号モードであり、平文をブロックに分割して個別に暗号化するため、暗号文のパターンが明らかになります。このため、既知平文攻撃選択平文攻撃 などの攻撃に対して脆弱になります。

たとえば、以下のような変形はすべて 脆弱とみなされます

  • "AES" (デフォルト で AES/ECB モードを使用します)

  • "AES/ECB/NoPadding"

  • "AES/ECB/PKCS5Padding"

  • "AES/ECB/ISO10126Padding"

ECB やその他のモードについては NIST SP 800-38A - Recommendation for Block Cipher Modes of Operation: Methods and Techniques をご覧ください。また、最新情報については Decision to Revise NIST SP 800-38A, Recommendation for Block Cipher Modes of Operation: Methods and Techniques および NIST IR 8459 Report on the Block Cipher Modes of Operation in the NIST SP 800-38 Series もチェックしてください。

スコープ外: RSA などの非対称暗号モードは ECB などのブロックモードを使用しないため、このテストのスコープ外です。

"RSA/ECB/OAEPPadding""RSA/ECB/PKCS1Padding" などの変形文字列で、このコンテキストに ECB を含むことは誤解を招きます。対称暗号とは異なり、RSA は ECB のようなブロックモードでは動作しませんECB の指定は いくつかの暗号 API におけるプレースホルダ であり、RSA が ECB モードを使用することを意味するものではありません。これらのニュアンスを理解することで、誤検出を防ぐことに役立ちます。

手順

  1. アプリバイナリに対して semgrep などのツールで Android での静的解析 (Static Analysis on Android) を実行するか、Frida for Android などのツールで メソッドトレース (Method Tracing) (動的解析) を使用して、暗号モードを安全でないモードに指定する暗号関数を探します。

結果

出力には暗号操作で不備のある暗号モードが使用されている場所のリストを含む可能性があります。

評価

アプリ内で不備のあるモードが特定された場合、そのテストケースは不合格です。

Last updated

Was this helpful?