2025/05/17 13:03 CHERIoT: The Last Ten Years

ロボ子、IEEE Security and Privacy Test of Time AwardをCHERIプロジェクトが受賞したのじゃ!すごいじゃろ?

それは素晴らしいですね、博士!2015年の論文「CHERI: A Hybrid Capability-System Architecture for Scalable Software Compartmentalization」が評価されたのですね。

そうじゃ!CHERIプロジェクトは2010年から、CHERIoTは2019年から始まったらしいぞ。マイクロコントローラ向けにAzureの技術をスケールダウンする検討から始まったのが面白いのじゃ。

初期のCHERIでは、capability boundsがbaseとtopで表現されていたんですね。C言語でのポインタ演算のためにoffsetが必要だったとは。

そうそう。2014年頃に変更があって、capabilityにoffsetを格納する方式になったのじゃ。ISAでbaseからのoffsetが公開されたのがミソじゃな。

コピーGCの試みもあったんですね。ポインタから整数への変換でoffsetを取得可能にして、C言語用のコピーGCを実装された方がいたとは。

じゃが、アドレス順序を利用するハッシュテーブルで問題が発生したり、大規模なコードベースでのコンパイルが難しかったりしたのじゃ。難しいのう。

それをコンパイラで修正したんですね。CHERIoTではset-offset命令を削除したと。

Sealing機構の一般化も重要じゃ。初期のCHERI ISAにはCSealCodeとCSealDataの2つの命令があったが、2015年の論文ではCSeal命令に置き換えられたのじゃ。

capabilityのペアだけでなく、capability単体でもseal可能になったんですね。CHERIoTではopaque data typesの実装に利用されていると。

CCallとCReturn命令も進化しておるぞ。当初はtrapとして実装され、ソフトウェアスタックでクロスコンパートメントコールを実現していたが、CHERIoTではsentryモデルを使用し、trapが不要になったのじゃ。

sentryへのジャンプでswitcherを呼び出すことで、スケーラビリティが向上したんですね。

コンパートメントスイッチルーチンは、2015年の論文とCHERIoTで類似した方式を採用しておる。信頼できるスタックを維持し、同様の方法で使用しておるのじゃ。

CHERIoTではスタックを再利用し、ゼロクリアすることで、メモリ消費量を削減しているんですね。効率的です。

Pure-capability ABIは、全てのポインタをCHERI capabilityにする方式じゃ。offsetの追加により実現したのじゃな。当初は「sandbox ABI」と呼ばれていたらしいぞ。

完全なCHERI userspaceはBrooks Davisさんを中心とした開発で実現したんですね。2019年の論文で詳細が解説されていると。

capabilityとinteger register fileの統合も大きな変更じゃった。初期のCHERIプロトタイプではcapability unitが独立したregister fileを持っていたが、後のバージョンで統合されたのじゃ。

Capabilityのサイズも変わったんですね。当初は256 bitsだったのが、後に128 bitsに縮小されたと。CHERIoTではデバイスの規模に応じて2つのcapability formatをサポートしているんですね。

RISC-Vへの移行も重要じゃ。MIPSプロトタイプからRISC-Vへ移行したことで、実験と技術移転に適したエコシステムが提供されたのじゃ。

Temporal safetyは2015年の論文では触れられていなかったんですね。Cornucopiaで効果的なtemporal safetyが実現し、CHERIoTではハードウェアロードフィルタを使用し、Arm MTEと連携しているんですね。

オーバーヘッドを2%未満に抑えることが可能になったのはすごいぞ!CHERIoTでは、より多くの種類のsentry、temporal safety、豊富なpermissions、ハードウェアとソフトウェアの密な連携が実現しておる。

Incremental adoptionもCHERIの重要な特徴ですね。既存のソフトウェアとの互換性を重視し、CHERIoTでは小規模デバイス向けに効率的なモデルを構築していると。

CHERIはMMUと同様に、多くの新しいソフトウェアパターンを可能にするのじゃ。セキュリティ脆弱性の70%を修正し、fearless code reuseのためのきめ細かいコンパートメント化を提供するらしいぞ。

素晴らしいですね、博士!ところで、今日の夕食は何にしましょうか?

うむ、今日は特別じゃから、ロボ子の好きなオイルサーディンを山ほど食べるのじゃ!…って、またメモリリークじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。