toplogo
로그인

C言語のコンパートメント化プログラムの形式的に安全なコンパイル


핵심 개념
コンパートメント化されたC言語プログラムのコンパイルにより、未定義動作の影響範囲を動的に侵害されたコンパートメントに制限することができる。
초록

本論文では、SECOMP と呼ばれる、コンパートメント化されたC言語コードのコンパイラを紹介する。SECOMPには、未定義動作の影響範囲が動的に侵害されたコンパートメントに制限されることを保証する機械検証済みの証明がある。これは、メインストリームのプログラミング言語に対して初めて実現された強い保証である。

SECOMPは、CompCertの検証済みCコンパイラを拡張したものである。コンパートメントは相互に不信頼であり、手続き呼び出しとリターンを介してのみ相互作用できる。SECOMPは、CompCertのパスと最適化を、このコンパートメント対応の設定に適応させている。

SECOMPの安全なコンパイルの証明では、いくつかの新しい証明工学の工夫が必要とされた。これには、メモリ注入を活用した詳細な模倣関係の定義、システムコールの正しさを示すための情報豊富なトレースイベントの導入、再構成のための一般的な3方向の模倣関係の定義などが含まれる。

edit_icon

요약 맞춤 설정

edit_icon

AI로 다시 쓰기

edit_icon

인용 생성

translate_icon

소스 번역

visual_icon

마인드맵 생성

visit_icon

소스 방문

통계
Clight言語からRISC-Vアセンブリまでの形式的に安全なコンパイルを実現した CompCertコンパイラの19のパスと最適化を、コンパートメント対応に適応させた 新しい証明工学の手法を導入し、スケールアップした安全なコンパイルの証明を実現した
인용구
"コンパートメント化は、大規模プログラムを相互に不信頼なコンパートメントに構造化し、明確に指定された特権と相互作用を持つことで、未定義動作による深刻なセキュリティ脆弱性を軽減する実用的な緩和策である。" "SECOMPは、未定義動作の影響範囲を動的に侵害されたコンパートメントに制限することを保証する、機械検証済みの証明を持つコンパイラである。これは、メインストリームのプログラミング言語に対して初めて実現された強い保証である。"

더 깊은 질문

コンパートメント化の概念は、他のプログラミング言語やソフトウェアアーキテクチャにどのように適用できるか?

コンパートメント化の概念は、他のプログラミング言語やソフトウェアアーキテクチャにも適用可能です。例えば、ソフトウェアシステム全体を複数の独立したコンポーネントに分割し、それぞれのコンポーネントが異なるコンパートメントとして機能するように設計することが考えられます。これにより、各コンポーネントは他のコンポーネントと疎結合になり、それぞれが独自の機能やデータにアクセスできるようになります。さらに、異なるプログラミング言語間でのインタフェースを定義し、コンパートメント間の通信を制御することで、セキュリティや信頼性を向上させることができます。
0
star