CHERIとは

ちぇりー

Capability Hardware Enhanced RISC Instructionsの略。ポインタを、アドレスに加えて指せる範囲と権限を持つケイパビリティに置き換え、範囲外のアクセスやポインタの偽造をハードウェアで防ぐ命令セットの拡張。ケンブリッジ大学とSRIインターナショナルが研究を進めてきた。Armはこれをもとにした試作のプロセッサMorelloを2020年代前半に研究者向けに提供した。

「CHERI」は、1分野の1問の練習問題に出てきます(ハードウェアセキュリティの最新動向など)。

この用語の分野: ハードウェアセキュリティの最新動向

ケイパビリティの中身

従来のポインタは単なるアドレスで、どこを指しているかを確かめる仕組みはハードウェアにはありませんでした。CHERIのケイパビリティは、アドレスに加えて、指してよい範囲の下限と上限、読み・書き・実行などの権限を持ちます。64ビットのアドレスの場合、範囲を圧縮した形で表して128ビットに収め、さらにメモリの外にもう1ビットのタグを持ちます。CPUはロードやストアのたびに範囲と権限を確かめ、外れていれば例外を起こすので、バッファオーバーフローのような誤りがその場で止まります。

偽造を防ぐタグ

タグは、正しい命令でケイパビリティを作ったり、既存のケイパビリティから範囲を狭めたりしたときにだけ付きます。ケイパビリティを普通のデータとして書き換えるとタグが消え、タグのない値はポインタとして使えません。範囲や権限は広げることができず、狭めることしかできないので、プログラムは自分が受け取った以上の権限を作り出せません。この性質を使うと、1つのプログラムの中を小さな区画に分け、区画ごとに使える範囲を限る使い方(区画化)もできます。

普及に向けた課題

ポインタの大きさが2倍になるため、メモリの使用量やキャッシュの効率に影響があり、ポインタを整数として扱うような書き方をしているソフトウェアは修正が必要です。研究では、CやC++の多くのプログラムが小さな修正で動くことが示されてきました。2020年代半ば時点では、研究用の試作や一部のマイコン向けの実装が中心で、一般のパソコンやスマートフォンのCPUには搭載されていません。

CHERIの練習問題に挑戦

CHERIと呼ばれる命令セットの拡張で使われるケイパビリティの説明として、正しいものはどれか。

  1. Aポインタの値をCPUの中の鍵で暗号化してからメモリに置き、使うたびに復号することで、ほかのプログラムやOSからポインタの値を読まれないようにする
  2. Bプログラムの実行ファイルに付けた電子署名を、命令を1つ実行するたびにCPUが確かめ、署名のない命令を実行しないようにする
  3. Cポインタに、アクセスしてよい範囲と権限を持たせ、メモリ上ではソフトウェアから書き換えられない1ビットのタグで、正しく作られたものかを区別する
答えと解説を見る

正解:C. ポインタに、アクセスしてよい範囲と権限を持たせ、メモリ上ではソフトウェアから書き換えられない1ビットのタグで、正しく作られたものかを区別する

CHERIでは、アドレスだけのポインタの代わりに、アドレス、指せる範囲の上限と下限、読み書きや実行の権限をまとめたケイパビリティを使います(64ビットのアドレスの場合、圧縮して128ビットに収め、別に1ビットのタグを持ちます)。CPUはアクセスのたびに範囲と権限を確かめるので、配列の範囲外の読み書きのようなメモリ安全性の誤りを、ハードウェアで止められます。タグは正しい命令でケイパビリティを作ったときだけ付き、普通のデータとして書き換えると消えるので、ポインタを偽造できません。ケンブリッジ大学などが研究を進め、ArmはこれをもとにしたMorelloという試作のプロセッサと評価用のボードを、2020年代前半に研究者向けに提供しました。

よくある質問

CHERIとMTE(メモリタギング拡張)の違いは何ですか?

MTEは、メモリとポインタに付けた4ビットのタグを比べて、誤りを確率的に見つける仕組みです。CHERIは、ポインタそのものに範囲と権限を持たせ、範囲外のアクセスを決定的に止めます。MTEは既存のソフトウェアに入れやすく、CHERIはより強い保証を与える代わりに、命令セットやソフトウェアの変更が大きくなります。

CHERIを使えばメモリ安全性の問題はすべてなくなりますか?

範囲外のアクセスやポインタの偽造は防げますが、解放した後のメモリの使用を防ぐには、割り当ての仕組みの工夫が別に必要です。また、論理の誤りや、正しく与えた権限の使いすぎは防げません。ほかの対策と組み合わせて使います。

解説の中の「CHERI」

「CHERI」が出てくる問題(1問)

  1. CHERIと呼ばれる命令セットの拡張で使われるケイパビリティの説明として、正しいものはどれか。

ハードウェアセキュリティの最新動向の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

ポインタ 配列 Arm CCA HBOM(ハードウェア部品表) MTE(メモリタギング拡張) 過渡的実行攻撃 機密コンピューティング シャドウスタック 数論変換 制御フロー完全性

用語集の一覧へ