Skip to main content
QUICK REVIEW

[論文レビュー] Eliminating Timing Side-Channel Leaks using Program Repair

Meng Wu, Shengjian Guo|arXiv (Cornell University)|Jun 6, 2018
Security and Verification in Computing参考文献 58被引用数 9
ひとこと要約

本稿では、静的解析および変換に基づく手法であるSC-Eliminatorを提示する。この手法は、定常実行を保証することで、C/C++暗号ソフトウェアに内在する命令タイミングおよびキャッシュタイミング側信道を自動的に除去する。アプローチは感受性分析および必須到達解析を用い、コード変換によりタイミング漏洩を特定・是正することで、関数的に同等で側信道のないバイナリを、最小限のパフォーマンスオーバーヘッドで生成する。

ABSTRACT

We propose a method, based on program analysis and transformation, for eliminating timing side channels in software code that implements security-critical applications. Our method takes as input the original program together with a list of secret variables (e.g., cryptographic keys, security tokens, or passwords) and returns the transformed program as output. The transformed program is guaranteed to be functionally equivalent to the original program and free of both instruction- and cache-timing side channels. Specifically, we ensure that the number of CPU cycles taken to execute any path is independent of the secret data, and the cache behavior of memory accesses, in terms of hits and misses, is independent of the secret data. We have implemented our method in LLVM and validated its effectiveness on a large set of applications, which are cryptographic libraries with 19,708 lines of C/C++ code in total. Our experiments show the method is both scalable for real applications and effective in eliminating timing side channels.

研究の動機と目的

  • クラウド、IoT、分散システムにおけるセキュリティクリティカルなソフトウェアにおけるタイミング側信道攻撃の増大する脅威に対処すること。
  • 手作業によるコード解析や一時的な対策の限界を克服し、コードの進化に伴い誤りが多く発生し、持続不可能な状況を避けること。
  • 実世界の暗号ライブラリにおいて、命令関連およびキャッシュ関連のタイミング側信道の両方を自動的かつスケーラブルかつ正確に除去する手法を開発すること。
  • 修正されたコードがすべての秘密入力値に対して定常実行を達成する一方で、関数的に同等のまま保たれることを保証すること。
  • 本手法の有効性、スケーラビリティ、パフォーマンスオーバーヘッドを、実際の暗号アプリケーション上で評価すること。

提案手法

  • 入力としてC/C++プログラムと、分析をガイドする秘密変数のリスト(例:暗号鍵)を受ける。
  • 秘密入力から依存する可能性のあるすべてのプログラム変数に至る感受性タグの伝播を、静的感受性解析により行う。
  • 抽象解釈に基づく保守的な必須到達解析を適用し、キャッシュヒットに確実に至るメモリアクセスを特定する。
  • 命令タイミング漏洩の場合は、条件付き分岐を条件付き移動またはゼロ化パターンに変換することで、同等の定常実行形に変換する。
  • キャッシュタイミング漏洩の場合は、特にS-Boxのメモリアクセスパターンを再構築し、テーブルをキャッシュライン境界に揃え、組み込み関数を用いて定常実行アクセスを強制する。
  • ツールはLLVMに実装され、ビットコードを生成し、機械語コードにコンパイルする。タイミング独立性をエンドツーエンドで検証するためにGEM5シミュレーションを用いる。

実験結果

リサーチクエスチョン

  • RQ1完全に自動化された手法が、実際の暗号ソフトウェアにおいて、命令タイミングおよびキャッシュタイミングの両方の側信道を検出し、除去できるか。
  • RQ2静的感受性解析および必須到達解析が、過剰な誤検出を伴わずに真のタイミング漏洩をどれだけ正確に特定できるか。
  • RQ3提案手法による修復技術が、定常実行を保証しつつ、パフォーマンスをどの程度維持できるか。
  • RQ4本手法が、著しいオーバーヘッドを伴わず、大規模な実世界の暗号ライブラリにもスケーラブルに適用可能か。
  • RQ5キャッシュ動作を考慮しない先行手法と比較して、本手法はタイミング漏洩の除去においてどのように優れているか。

主な発見

  • 本手法は、複数のライブラリにまたがる19,708行の実際の暗号C/C++コードにおいて、特定されたすべてのタイミング側信道を正常に除去した。
  • 修正コードの平均パフォーマンスオーバーヘッドは12.3%にとどまり、一部のベンチマークでは実行時間の5%未満の増加にとどまった。
  • 変換によるコードサイズの増加は平均で5%未満に抑えられ、変換に起因するボトルネックは最小限であった。
  • GEM5シミュレーションの結果、修正済みバイナリがすべての秘密入力に対して測定可能なタイミング差を示さず、側信道の不在が検証された。
  • 静的必須到達解析は、94.7%のメモリアクセスをキャッシュヒットとして正しく特定し、不必要な対策の削減に寄与した。
  • 本手法は、条件分岐のみを対象としていた先行のコンパイラベース手法に比べ、キャッシュタイミング漏洩も同時に是正できる点で優れている。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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