Skip to main content
QUICK REVIEW

[論文レビュー] CrySL: Validating Correct Usage of Cryptographic APIs

Stefan Krüger, Johannes Späth|arXiv (Cornell University)|Oct 2, 2017
Advanced Malware Detection Techniques被引用数 2
ひとこと要約

CrySLは、Java暗号アーキテクチャ(JCA)APIの正しく使用されるべきパターンを形式的に指定できる分野特化型言語であり、CogniCryptsast静的解析器がこれをコンテキスト感受性およびフローセンシティブな解析にコンパイルし、暗号的誤用を検出する。10,001個のAndroidアプリケーションを評価した結果、96%のアプリケーションで少なくとも1件の誤用が検出された。これは、広範にわたる不正な使用状況と、本ツールが深刻なセキュリティ欠陥を特定する有効性を示している。

ABSTRACT

Various studies have empirically shown that the majority of Java and Android apps misuse cryptographic libraries, causing devastating breaches of data security. Therefore, it is crucial to detect such misuses early in the development process. The fact that insecure usages are not the exception but the norm precludes approaches based on property inference and anomaly detection. In this paper, we present CrySL, a definition language that enables cryptography experts to specify the secure usage of the cryptographic libraries that they provide. CrySL combines the generic concepts of method-call sequences and data-flow constraints with domain-specific constraints related to cryptographic algorithms and their parameters. We have implemented a compiler that translates a CrySL ruleset into a context- and flow-sensitive demand-driven static analysis. The analysis automatically checks a given Java or Android app for violations of the CrySL-encoded rules. We empirically evaluated our ruleset through analyzing 10,001 Android apps. Our results show that misuse of cryptographic APIs is still widespread, with 96% of apps containing at least one misuse. However, we observed fewer of the misuses that were reported in previous work.

研究の動機と目的

  • JavaおよびAndroidアプリケーションにおける暗号APIの広範かつ体系的な誤用を是正すること。これは深刻なデータ漏洩を引き起こす。
  • 異常検出やプロパティ推論の限界を克服し、正確で専門家が作成した使用法の仕様を可能にすること。
  • ソフトウェア開発ライフサイクルの初期段階で暗号的誤用を検出するための実用的でスケーラブルかつ拡張可能なソリューションを提供すること。
  • 暗号の専門家と開発者が、高水準の分野特化型言語を通じて安全な使用パターンを定義・強制できるようにすること。

提案手法

  • CrySLは、メソッド呼び出しのシーケンス、データフロー制約、暗号固有の制約(例:鍵長、アルゴリズムパラメータ)を組み合わせて、正しいAPI使用法のパターンを定義する分野特化型言語である。
  • この言語は、述語、イベント、制約をサポートし、暗号オブジェクト間の相互作用をモデル化し、正しい順序とパラメータ値の強制を可能にする。
  • CogniCryptsastは、CrySLルールをコンテキスト感受性およびフローセンシティブで、要請駆動型の静的解析エンジンにコンパイルし、JavaおよびAndroidアプリケーションをチェックする。
  • 解析は、オブジェクトの状態とメソッド呼び出しシーケンスを追跡するための記号実行を実行し、CrySLで指定されたルールの違反を検出する。
  • このシステムは、Javaに似た構文を用いたルール作成をサポートしており、非専門家および暗号専門家がルールを定義・拡張できる。
  • タイプステート解析を統合することで、禁止されたメソッド呼び出しを検出し、大規模なスケールで安全な使用パターンを強制する。

実験結果

リサーチクエスチョン

  • RQ1形式的で専門家が作成した仕様を用いて、JavaおよびAndroidアプリケーションにおける暗号的誤用をスケールアップして体系的に検出する方法は何か?
  • RQ2分野特化型言語が、安全な暗号API使用法に必要な複雑でパラメータ化された制約を効果的に表現できるか?
  • RQ3正確でルールベースの静的解析を用いた場合、実世界のAndroidアプリケーションがどの程度の割合で暗号的誤用を示すか?
  • RQ4CrySLベースの解析のパフォーマンスと正確性は、CryptoLint や CMA といった既存ツールと比べてどうか?
  • RQ5形式的仕様言語は、ハードコードされたソリューションと比較して、セキュリティルールセットの保守および拡張のオーバーヘッドを低減できるか?

主な発見

  • CrySLベースの解析により、分析対象の10,001個のAndroidアプリケーションの96%で少なくとも1件の暗号的誤用が検出された。これは、不正なAPI使用の広範な存在を裏付けている。
  • 本研究で報告された代表的な誤用の件数は、先行研究と比較して少ないため、ルールエンコードの精度が向上していると考えられる。
  • 分析対象の75%以上が4分未満でスキャン完了した。これは、大規模な解析においても許容可能なパフォーマンスを示している。
  • JCAを使用する4,071個のアプリケーションにおいて、合計20,000件の異なる誤用インスタンスが正常に同定された。
  • CogniCryptsastは、コンテキスト感受性およびフローセンシティブな静的解析を活用することで高い正確性を達成し、先行手法と比較して誤検出を低減した。
  • 評価により、CrySLにおける専門家が作成したルールが、鍵長やアルゴリズムモード要件といった複雑な暗号制約を効果的に捉えられることを確認した。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。