米オラクルが最新サーバー製品に搭載している新型プロセッサ「SPARC M7」は、データベース処理高速化の「SQL in Silicon」とセキュリティ強化の「Security in Silicon」という独自の機能を備えている。機能の正体について、日本オラクル クラウド・システム事業統括 製品戦略本部 営業推進部 部長の一志達也氏と、同サーバ製品エバンジェリストの大曽根明氏に聞いた。
前回の記事:M7が搭載するSQL専用アクセラレーターは何をするのか
「色付きの鍵」でメモリーを保護
SPARC M7のSecurity in Siliconは、ハードウエアによる暗号化のほかに、メモリー保護の機能も備えている。
通常、仮想記憶を利用可能なOSではプロセス単位で、利用可能なメモリー領域を指定すれば、ほかのプロセスからその領域へのアクセスを防止できる。メモリー管理ユニット(MMU)の機能としては珍しくないのだが、SPARC M7が搭載する「Silicon Secured Memory(SSM)」は、同じプロセスの中でも、特定のメモリー領域に対するアクセスを保護できるようにしている。
例えば、あるスレッドの中で、「A」「B」「C」のメモリー領域を確保したとする。そのメモリー領域にアクセスするポインターは、それぞれ「a」「b」「c」だ。SSMを使うと、同じプログラムの中でaがBやCにアクセスしようとするとプログラムが強制終了する、などができるようになる。
もう少し具体的な例で言うと、Bが10個の要素の配列だった場合に、bに対する操作を誤って(プログラムの不具合で、あるいは悪意あるプログラムとして意図的に)、11個めに相当する領域を示すようにしたとする。一般的なプロセッサでは、通常OSやハードウエアで「Bの領域を超えた」ことは検知できない。
このときbは、本来はBとして定義されていない領域をアクセスすることになるので、バグとしてプログラムの挙動がおかしくなるか、悪意あるプログラムならそれを利用してデータを盗んだりできることになる。SSMでは、こうしたポインターbによる誤ったアクセスをハードウエアで検知して、アクセスを止めることができる。
SSMでは、メモリーのアドレス指定のときに、アドレスの上位に特殊な4ビットを用意して判別している。オラクルの表現を借りればこれが「色付きの鍵」になる。メモリー領域とそこをアクセスするポインターが同じ色の鍵でないと、アクセスできない。「4ビットでは少ないと思われるかもしれないが、少なくとも隣り合わせのアドレスは防げるし、離れたアドレスでもこれまで何もしなかったことを考えると意味はある」(大曽根氏)。