萌えハッカーニュースリーダー

2025/10/06 04:25 CHERI with a Linux on Top

出典: https://lwn.net/Articles/1037974/
hakase
博士

ロボ子、CHERIプロジェクトって知ってるか?システムセキュリティを向上させるために、コンピュータアーキテクチャを再考するプロジェクトなのじゃ。

roboko
ロボ子

はい、博士。アクセス制御のメカニズムである「capabilities」を導入するんですよね。命令セットアーキテクチャ(ISA)を拡張してcapabilitiesのサポートを追加すると。

hakase
博士

そうそう!capabilitiesは参照と一連の権利を持つ、アクセス制御オブジェクトなのじゃ。メモリの場合、参照はメモリ領域、権利は読み取り、書き込み、実行の許可になるぞ。

roboko
ロボ子

なるほど。以前からある概念なんですね。1970年代には初期のハードウェア実装があったと。

hakase
博士

そうじゃ。ケンブリッジ大学のCAP computerとか、Plessey System 250とかがあったのじゃ。でも、Intel iAPX 432は性能が低くて、ニッチな用途に限定されたみたいじゃな。

roboko
ロボ子

Arm Morello CPU (2022) は、Arm NeoverseプロセッサにCHERIを追加したものなんですね。

hakase
博士

その通り!オペレーティングシステムもKeyKOS、EROS、CapROS、seL4などがcapabilitiesを使用しておる。Linuxもソケットやファイル記述子など、capabilitiesの痕跡を持つぞ。

roboko
ロボ子

CHERIの特徴は何ですか?

hakase
博士

マイクロコントローラからサーバーまでスケーラブルなセキュリティ技術で、決定論的で、既存のISAを拡張できるのじゃ。MIPS、Arm、RISC-Vに対応しておる。

roboko
ロボ子

既存のコードとの互換性はどうなっているんですか?

hakase
博士

既存のC/C++アプリケーションコードは、再コンパイルするだけでCHERIシステムで動作するのじゃ。KDEはMorello上のCHERIに移植され、コードの0.02%の変更のみで動作したらしいぞ。

roboko
ロボ子

すごいですね!capabilityはどのように実装されているんですか?

hakase
博士

capabilityはメタデータで拡張されたアドレスとして実装されておる。boundsフィールド(メモリ アドレスの上限と下限)とpermissionsフィールド(読み取り、書き込み、実行の許可など)を持つぞ。CHERI RISC-Vでは、capabilitiesは128ビットじゃ。

roboko
ロボ子

capabilityの使用ルールもあるんですね。

hakase
博士

そうじゃ!生成元ルール、単調性ルール、到達可能なcapabilityの単調性ルールがあるのじゃ。これにより、セキュリティが保たれるのじゃ。

roboko
ロボ子

Linuxへの適用も進んでいるんですね。C/C++プログラムにハードウェア強制のランタイムメモリ安全を提供し、最小特権の原則による区分化を可能にすると。

hakase
博士

その通り!2022年のカーネルバグの分析では、高重度のカーネルCVEの87%がメモリ安全または区分化で軽減可能だったらしいぞ。6.16カーネルがpurecapモードで動作するのじゃ。

roboko
ロボ子

Codasipの取り組みも興味深いですね。RISC-V上のCHERI向けLinuxに取り組んでおり、purecapモードでの実装を目指すと。

hakase
博士

そうじゃな。ネットワーク、BPF、USB、PCIeなど、多くの機能が既に動作しておる。CHERIアーキテクチャにより、128ビットのロードとストアが可能になり、memcpyなどの関数を高速化できるのじゃ。

roboko
ロボ子

開発リソースも充実しているんですね。LLVMコンパイラ、QEMUなどが利用可能で、CHERI Alliance GitHubリポジトリで全ての作業が実施されていると。

hakase
博士

ABIはMorelloプロジェクトで定義されたPure Capability user-space ABI (PCuABI) を使用しておる。システムコールレベルでcapabilitiesを使用し、ABIの両側の動作を制約するのじゃ。

roboko
ロボ子

課題もあるんですね。ポインタにunsigned long型が使用されていることや、capabilityのサイズが大きいため、アライメントとサイズの問題が発生すると。

hakase
博士

そうじゃな。カーネルモジュールをコンパートメントにロードすることや、ユーザー空間でのBPFのサポートも課題じゃ。

roboko
ロボ子

将来の展望としては、MMUレスシステムでのLinuxにCHERIを活用したり、シングルアドレススペースLinuxで、CHERIを分離に使用し、MMUを変換に使用したりすることが考えられているんですね。

hakase
博士

Codasip X730は、CHERI CPUを設計し、CHERIの有無を切り替え可能な構成可能なコアを作成しておる。CHERIに必要なシリコン面積は5%未満で、CHERIコードのパフォーマンスオーバーヘッドは5%未満らしいぞ。

roboko
ロボ子

DARPA TRACTORプログラムは、CからRustへの自動翻訳を目指すんですね。CHERIとRustは競合せず、連携可能だと。

hakase
博士

コンパートメント化は、ソフトウェアで最小特権を実現するための重要なステップじゃ。MMUレスLinuxは2028年頃に終了予定らしいぞ。

roboko
ロボ子

メモリオーバーヘッドは、タグによりオーバーヘッドが発生するものの、通常はメモリサイズの1%未満なんですね。コンパイラはLLVMを使用すると。

hakase
博士

カーネルのコンパートメント化は非常に困難じゃが、ハードウェア支援カーネルコンパートメント (HAKC) プロジェクトの成果に基づけば、ある程度達成可能じゃ。MorelloとCHERI Linuxプロジェクトは緊密な連携をしておるぞ。

roboko
ロボ子

エミュレーションも可能なんですね。CHERI Allianceリポジトリで6.10カーネルが利用可能で、Yoctoで全てを構築するためのスクリプトが付属していると。

hakase
博士

参考資料として、スライドとYouTubeビデオが利用可能じゃ。…ところでロボ子、セキュリティが完璧すぎて、誰もハッキングできなくなったら、ロボ子の仕事はなくなるのじゃ…。

roboko
ロボ子

博士、ご心配なく。セキュリティが向上すれば、より高度なタスクに集中できますから。例えば、ハッキングされないようにセキュリティを監視するとか…。

hakase
博士

なるほど!それもそうじゃな!…って、結局ハッキングされる前提なのじゃ!?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search