MASTG-TEST-0210 不備のある対称暗号アルゴリズム (Broken Symmetric Encryption Algorithms)
概要
iOS アプリで不備のある暗号アルゴリズムの使用についてテストするには、暗号化および復号操作を実行するために使用される暗号フレームワークやライブラリのメソッドに注目する必要があります。
CommonCrypto:
CCCrypt関数は 対称アルゴリズム に使用され、二番目のパラメータalgでアルゴリズムを指定します。これは以下のCCAlgorithm定数のいずれかになります。kCCAlgorithmAES128kCCAlgorithmDESkCCAlgorithm3DESkCCAlgorithmCASTkCCAlgorithmRC4kCCAlgorithmRC2kCCAlgorithmBlowfish
CryptoKit: このライブラリは弱い暗号アルゴリズムをサポートしていません。AES-GCM や ChaChaPoly などの安全な 対称アルゴリズム のみをサポートしています。
サードパーティライブラリ: アプリケーションは OpenSSL, BoringSSL, Libsodium などのサードパーティライブラリ、あるいはカスタム暗号実装を通じて暗号機能を含む可能性があります。これらは DES, 3DES, RC2, RC4, Blowfish などの弱い暗号アルゴリズムをサポートしたり露出する可能性があります。
注: Security フレームワークは非対称アルゴリズムのみをサポートしているため、このテストではスコープ外です (対称鍵についての注釈 参照)。
手順
radare2 for iOS などの静的解析ツールをアプリバイナリに対して実行するか、Frida for iOS などの動的解析ツールを使用して、暗号化および復号操作を実行する暗号関数の使用を探します。
結果
出力には関連する暗号関数を使用する関数の逆アセンブルされたコードを含む可能性があります。
評価
ソースコード内に不備のある暗号アルゴリズムの使用を見つけることができた場合、そのテストケースは不合格です。たとえば、以下のものです。
DES
3DES
RC2
RC4
Blowfish
これは Apple が提供する API (CommonCrypto など)、サードパーティライブラリ (OpenSSL, Libsodium など)、安全でないアルゴリズム (C コードの DES など) を複製したり安全でない構成 (ECB モード、短い鍵サイズなど) を使用する暗号ルーチンのカスタム実装に適用します。
最新を保つ: これは不備のあるアルゴリズムの非網羅的なリストです。国立標準技術研究所 (NIST)、ドイツ連邦情報セキュリティ庁 (BSI)、またはお住まいの地域のその他の関連機関などの組織からの最新の標準や勧告を必ず確認してください。
アルゴリズムによっては、全体としては不備があるとはみなされないかもしれませんが、避けるべき リスクのある構成 があるかもしれません。たとえば、暗号論的に安全な擬似乱数生成器 (CSPRNG) によって生成されていないシードや IV、あるいは量子安全であるとみなされていないものを使用することです。たとえば、AES 128 ビット鍵サイズは量子コンピューティング攻撃を対して不十分です。これは長期間保存されるデータを使用するアプリを構築する際に重要です。NIST IR 8547 "Transition to Post-Quantum Cryptography Standards", 2024 の NIST 勧告に従うようにしてください。
コンテキストに関する考察:
誤検知を減らすには、関連するコードを安全でないと報告する前に、そのアルゴリズムが使用されているコンテキストを理解していることを確認してください。機密データを保護するために、セキュリティ関連コンテキストで使用されていることを確認してください。
Last updated
Was this helpful?