NECは2013年11月6日、データベース(DB)のデータを暗号化し、そのまま処理できる秘匿計算技術を発表した。DB側で復号処理を行わないので、「クラウド上のDBを狙った標的型攻撃や、情報漏洩への対策としても有効だ」(NEC クラウドシステム研究所 部長の宮内幸司氏)。2015年度中に、研究所の技術として実用化レベルを目指す。

 「これまでのDB暗号化技術では暗号/復号鍵がDB側にあるため、鍵と暗号化したデータが同時に盗まれると、復号される危険がある」(NEC クラウドシステム研究所 セキュアシステムテクノロジーグループ 主任研究員の古川潤氏)。これに対して、NECの秘匿計算技術は、鍵をクライアント側のプロキシーで管理することでリスクを抑えた。

 暗号化したデータを処理する流れはこうだ(画像)。アプリケーションが発行したSQLの内容は、暗号化したカラム名やテーブル名にプロキシーが変換する。あらかじめDB側に登録しておいた「秘匿計算アルゴリズム」がSQLに基づく処理を行い、結果を暗号化した状態でクライアントに送信。プロキシーがクライアント上で暗号文を復号し、アプリケーションに渡す。

画像●秘匿計算技術の処理イメージ
画像●秘匿計算技術の処理イメージ
[画像のクリックで拡大表示]

 暗号化したままではDB上で処理が難しいようなSQLに対しては、クライアント側とDB側で協調し、高速処理を実現する。例えば、SELECT文の中で、列の値に応じて行を並べ替える「Order by」が指定された場合。データの抽出や計算はDB側で行うが、並べ替えはクライアント側で行う。「協調処理に占めるクライアント側の処理量はアプリケーションによるが、一般にカラム数の割合で0.5%程度だ」(古川氏)。

 秘匿計算アルゴリズムは、ユーザー定義関数とストアドプロシージャーで実装されている。「MySQLをターゲットに開発してきたが、理論的にはOracleやSQL Serverなどでも利用可能である」(宮内氏)。