Loading
|
@IT > 情報銀行:セキュアでリーガルなPtoP型オンラインストレージの開発 |
|
時限暗号と呼ばれる暗号がある。例えば選挙などの際、有権者が電子投票によって候補者に投票し、そのデータが選挙管理委員会のサーバに送られるシステムがあったとする。誰に投票したのかという情報は決して有権者本人以外に漏れてはならないから、データはきちんと暗号化する必要がある。しかし開票時間以降は、有権者の名前を除いてそのデータはオープンになり、開票集計システムに流し込まれなければならない。そんなとき、投票データを暗号化しておき、開票スタートと同時に復号化される仕組みがあれば、開票はスムーズに行うことができる。 また公共事業などの競争入札の際も、ある一定の時間になったところで入札参加者の書いた価格が自動的にオープンになれば非常に便利である。そんなときに使われるのが、時限暗号だ。開封時刻までは暗号化された状態が続き、開封時刻を過ぎると自動的に復号される仕組みである。つまり暗号に時間の概念を持ち込んだものといえる。 今回未踏ソフトウェア創造事業に採択された東京大学工学部計数工学科4年 江原遥氏の「情報銀行」は、この時限暗号をサーバを介さないPtoPの仕組みによって実現しようという試みである。さらに、情報銀行は単なる時限暗号としてだけでなく、ある種のネットストレージとしても機能できるような発展性が組み込まれている。
通常の時限暗号は、公開鍵方式によって実現されている。まず公開鍵と秘密鍵のペアを作成する。信頼できる認証局サーバを立て、認証局は指定時間(開封時間)までは秘密鍵を決して公開しない。公開鍵に関しては最初の段階からユーザーに公開する。 一方、ユーザーは公開鍵を使ってデータを暗号化する。この段階では秘密鍵が手に入らないから復号不可能。しかし開封時間がやってくると、認証局が秘密鍵をユーザーに公開するため、ユーザーは暗号化されたデータを使って復号することができる。
この仕組みの最大の問題点は、認証局サーバが暗号と復号のすべてを負ってしまっていることだといえる。江原氏は「公開鍵方式による時限暗号の場合、信頼できるサーバの存在が前提となっている。しかしそのサーバが消滅したらどうなるのか、という問題がある。時限暗号の場合は開封時間までの時間が長期的なる場合も考えられ、年単位でサーバをメンテナンスしていかなければいけない。そうなると大規模な運用が難しいというデメリットも出てきてしまう」と話す。 江原氏の「情報銀行」は、P2Pとしきい値秘密分散法(参考記事)、それにNTP(Network Time Protocol)の組み合わせによって成り立っている。 しきい値秘密分散法は、簡単に言えば、元のデータをn個の断片に分割し、このうち復元に必要な一定数kを定める。断片をk個集めれば、復号が可能になる。分割数nと復号に必要な数kを異なる値にしているのは、復号に冗長性を持たせることによって、機密性と可用性を同時に満たすことができるからだ。 この閾値秘密分散法は1970年代に開発され、秘密鍵の保管などに使われている。また最近では、ディザスタリカバリの手法のひとつとしても注目されているという。 一方、NTPはコンピュータの内部時計を、ネットワークを経由して調整するプロトコルである。階層構造になっていて、コンピュータは自分の属する階層の中か、ひとつ上の階層のNTPサーバにアクセスして時間を同期する。最上位のサーバはGPS(Global Positioning System)から正確な時刻を取り寄せる仕組みだ。階層構造を持つことによって、多数のクライアントが遅延なしに時刻合わせを行うことができる。また通信は双方向で行われ、遅延時間が生じる場合はキャンセルできる仕組みも採用されている。
情報銀行ではこれら秘密分散法とNTPを、DHT(Distributed Hash Table:分散ハッシュテーブル)と組み合わせている。DHTというのは、大規模になるとデータのやりとりが莫大になってしまい、遠くのピアと相互通信できないケースが出てくるというピュアPtoPの欠点を補うために考えられた仕組みで、ピュアPtoPが数十万ノードが限界だとされているのに対し、DHTであれば数十億ノードの通信も可能になる。 具体的には、DHTではハッシュ関数を使って各データに一様乱数によるIDを付与する。このIDを使って各ノードがデータをそれぞれ分散管理し、さらにルーティングにある程度の方向性を持たせることによって、ノードの検索性を高めている。つまりはPtoP上の各ノードが持っているデータがどの場所にあるのかを、効率的に知ることができるシステムなのである。 さて情報銀行では、まずデータをしきい値秘密分散法によってn個の断片に分割する。この断片にランダムなIDを与え、それをランダムにPtoP上のノードに渡す。断片にはメタデータとして、IDと復号時間(開封時間)が書き込まれている。IDがでたらめな文字列になっているのは、「規則性のあるIDにすると、この人がこの時間に復号するものだということがわかってしまう。となると同じようなメタデータを持っているノードを第三者が検索すれば、復号できてしまう。仲間の断片がどこにあるのかわからないようにしておくことが大事だ」(江原氏)との理由からだ。 どのIDの断片をどのノードに渡したのかという情報は、その情報の持ち主だけが持っている。各ノードも、自分がどんなデータのどの断片を持っているのかという情報を持っていない。その代わりにノードの側は、断片のメタデータが持っている開封時間が来ない限り、その断片のダウンロードを許可しない。これが時限暗号となるのである。PtoPネットワーク内の時間はNTPによって取得され、各ノードで時間の整合性はきちんととられている。開封時間が来ると、各ノードは一斉に断片のダウンロードを許可し、元の持ち主は「どの断片がどういうIDを付けられて、どのノードに渡されているのか」という情報をもとに各ノードから断片をダウンロードし、もとに戻すことができるというわけだ。
この情報銀行が興味深いのは、NTPやしきい値秘密分散法、DHTなど既存の技術しか使っていないことだ。既存のDHT基盤が持つ機能を、Javaのインターフェイスの継承機能で階層化し、どの基盤でもいずれかのインターフェイスを通して使えるように設計されている。 江原氏は「開封時刻を過ぎると、情報銀行全体がPtoP型ファイルサーバとして使えるようになる。これはある意味で、データを預けてある時間が経つと自由に引き出せるようになる銀行と似た仕組みになっており、このため情報銀行と名付けた」と説明する。アプリケーション部分のユーザーインタフェイスについてはまだどのようなかたちになるのか未定だが、さまざまな応用が考えられそうだ。
提供:IPA
2005年度未踏ソフトウェア創造事業
担当PM 酒井 裕司 企画:アイティメディア 営業局 制作:@IT 編集部 掲載内容有効期限:2006年3月31日 |
|