サイバー攻撃から守る新たな方法

サイバー攻撃から守る新たな方法
このページは、生成AIにより自動翻訳されています。

過去10年間に、コンピューターセキュリティの研究者たちは、悪意あるハッカーはデータを盗むために、そのデータを見る必要はないことを示してきました。コンピューターがメモリーバンクにアクセスするパターンから、攻撃者はそこに保存されている情報について、 驚くほど多くのこと を推測できます。

こうした攻撃のリスクは、特にクラウドで深刻です。自分のアプリケーションとサーバー領域を共有しているのが誰のアプリケーションなのか、利用者には管理できないからです。攻撃者は複数のクラウドサーバーに小さなプログラムを読み込ませ、他人のデータを盗み見る以外には何もしないようにできます。

2年前、MIT電気工学・コンピューター科学科のエドウィン・シブリー・ウェブスター教授であるスリニ・デバダス氏の研究グループの研究者たちは、メモリーアクセスのパターンを偽装してこうした攻撃を阻止する方法を 提案し ました。現在、彼らはその方法をハードウェアに実装し始めています。

3月、プログラミング言語とオペレーティングシステムのアーキテクチャ支援に関する会議で、研究者たちはこの方式を採用する特注チップの設計を発表しました。このチップは現在、製造段階に進んでいます。また5月のIEEEフィールド・プログラマブル・カスタム・コンピューティング・マシン国際シンポジウムでは、再構成可能なチップで検証した、この方式への追加の改良点を説明する予定です。

この方式の原理は、チップが特定のメモリーアドレスからデータを取得する必要があるとき、他の多数のアドレスにも問い合わせるというものです。そうすれば、攻撃者はチップが実際にどのアドレスに関心を持っているかを特定できません。当然ながら、これには通常よりはるかに多くのデータをチップとメモリーの間で転送する必要があります。

余分なデータ量を最小限に抑えるため、研究者たちはメモリーアドレスを「木」と呼ばれるデータ構造に格納します。家系図は木構造の身近な例です。各「ノード」(人の名前)はその上にある1つのノード(その人の親を表すノード)だけにつながり、下にある複数のノード(その人の子ども)につながることがあります。

各アドレスには、木の中を通る経路がランダムに割り当てられます。経路とは、木の最上部から最下部まで伸びるノードの列で、後戻りはしません。チップが特定のアドレスに格納されたデータを必要とするとき、同じ経路上にある他のすべてのノードのデータも要求します。

以前の研究では、デバダス氏のグループの研究者たちは、1つの経路からデータを取得することは、チップが使用中のすべてのメモリーアドレス、つまり木のすべてのノードからデータを取得した場合と同じほど、攻撃者を混乱させると証明しました。

ボトルネックを解消

しかし、経路からデータを読み取った後、チップはその経路全体にデータを書き込む必要もあります。そうしなければ、攻撃者はどのノードが本当に関心の対象だったのかを特定できてしまうからです。ただし、チップがデータを読み取ったノードと同じノードにデータを格納することはめったにありません。

ノードは複数の経路に属することがよくあります。最も基本的な例を挙げると、木の最上部にある唯一のノード、すなわち根ノードは、すべての経路上にあります。チップがメモリーにデータブロックを書き込むときは、可能な限り木の下方へ送ります。そのためには、データブロックに割り当てられた経路が、直前に読み取った経路から分岐する地点より手前にある最後の空き場所を見つけます。

「木の根は、木の下部よりずっと小さいのです」と、MITの電気工学・コンピューター科学の大学院生で、論文の共著者の一人であるアルバート・クォン氏は言います。「ですから直感的には、できるだけ下方へ押し下げて、上部が混み合わないようにしたいのです。」

データを書き込む際にも、チップは経路上のノードの順序に従わなければなりません。そうしなければ、攻撃者が格納中のデータについて何かを推測できる可能性があるからです。同様のシステムを過去に試みた際には、メモリーアドレスを木の中で最終的に置かれる場所に従って並べ替える必要がありました。

「ハードウェアで並べ替えを行うのは簡単ではありません」と、デバダス氏のグループのもう一人の大学院生で、新しい論文の筆頭著者であるクリス・フレッチャー氏は言います。「そのため、すべてを並べ終える頃には、性能が大きく損なわれてしまいます。」

最新の論文で説明されたチップでは、フレッチャー氏、デバダス氏、クォン氏と共著者たち――同じくMITの電気工学・コンピューター科学の大学院生であるリン・レン氏、コネチカット大学、カリフォルニア大学バークレー校、カタール計算研究所の同僚たち――は、別の方法を採りました。チップに追加のメモリー回路を設け、木の中のどの経路のノード列にも対応づけられる記憶スロットを備えました。データブロックの最終的な格納場所が決まると、回路内の対応するスロットに格納するだけです。その後、すべてのブロックを順番に読み出します。

蓄えられた秘密

新しいチップには、効率を高めるもう一つの工夫があります。データを読み込むたびに書き出すのではなく、5回読み込むごとに1回だけ書き込みます。それ以外の読み込みでは、偽装用データをすべて破棄します。最終的にデータを書き戻す際には、平均して5つ分の余分なデータブロックを、最後に読み取った経路に格納することになります。しかし通常、木にはそれらのブロックを収めるだけの空きがあります。空きがない場合でも、データを可能な限り木の下方へ送る通常のシステム手順によって、上部で時折生じる詰まりに対処できます。

今日のチップにはキャッシュと呼ばれる小さなローカルメモリーバンクがあり、頻繁に使われるデータを格納します。キャッシュを効率的に利用するアプリケーションでは、余分な読み書きによる計算時間の増加は通常、約20%にとどまります。キャッシュを効率的に利用しないアプリケーションでは、計算時間が5倍、あるいはそれ以上に増える可能性があります。

しかし研究者たちによれば、この方式の利点の一つは、実装回路を大きな再設計なしに既存のチップ設計へ追加できることです。これにより、必要に応じて追加のセキュリティ層をオン・オフできます。クラウドアプリケーションによっては常時利用するものもあれば、まったく利用しないものもあり、クレジットカード番号などの機密情報を扱うときだけ有効にするものもあるでしょう。

「これは画期的な研究です」と、同様のセキュリティ方式を研究してきたメリーランド大学のコンピューター科学助教、エレイン・シー氏は言います。「長年、この種のセキュアなアルゴリズムは実用が困難でした。オーバーヘッドを2倍に抑えられることを示したのは、基本的に今回が初めてです。以前はオーバーヘッドがとてつもなく大きく、おそらく数万倍に達していました。彼らはこれを構築し、ある種のベンチマークでは平均低下率がわずか2倍だと示したのです。」

「JavaとCを比べてみれば、速度低下はおそらく2倍を超えるでしょう」と彼女は言います。「2倍など大したことではありません。しかも、そのコストを負担する必要があるのは、クレジットカード番号やゲノムデータなど、機密データに触れるコードの一部だけです。」

この記事は、 MIT Newsとの協力により掲載されています。この記事の掲載は、世界経済フォーラムによる見解への賛同を意味するものではありません。

アジェンダの最新情報を受け取るには、 週刊ニュースレターにご登録ください。

著者:ラリー・ハーデスティは、MIT Newsの寄稿ライターです。

画像:2013年6月24日、ワルシャワのオフィスでノートパソコンを持つ男性にバイナリーコードが投影されている様子を捉えたイラスト写真。ロイター/カツペル・ペンペ。

シェア:

ライセンスと再掲載について
世界経済フォーラムの寄稿文は、クリエイティブ・コモンズ表示-非営利-改変禁止 4.0 国際ライセンスおよび同フォーラムの利用規約に従い、再掲載が可能です。