データの存在証明
ある情報がある時点で存在したことを証明したい場合があります。契約書や遺言状などの証拠を残したい場合や、アイデアや作品などの権利の所在をはっきりしたいような場合に、このような証明が必要になります。紙の書類であれば公証役場で証明してもらうことができますし、電子的なデータに関しては、認証局(PKI)を利用した電子公証制度などを利用することができますが、あまり気軽に利用できるものではありません(秘密鍵と公開鍵で解説したような秘密鍵と公開鍵を利用したデジタル署名(PKIを利用してデータの作成者や内容を保証する仕組み)を利用すれば安全に暗号化したデータを公開することができますが、認証局のお世話になる必要があります)。重要な発明などの場合はこのような公的システムを利用する方が安心ですが、ちょっとしたアイデアやソフトウェアについて、いちいちこのような方法で存在を証明しておくことは現実的ではないでしょう。 デジタルデータは後でいくらでも生成することができますから、データそのもので古さを証明することはできません。偽造が不可能ななんらかの別の手段を使って証明する必要があります。たとえば、データをDNAに埋め込んだ木を育てると良いかもしれません。樹齢10年の木の枝の細胞内DNAにデータが入っていれば、そのデータが10年前から存在したという主張は説得力があるでしょう。しかしアイデアを思いつくたびに木を植えるわけにはいきませんから、もう少し手軽で偽造が難しい方法が欲しいところです。
情報公開による存在証明
自分が何かを発明したことを沢山の人に宣伝しておけば、そういう事実があったことを誰かが覚えているでしょうから、ある時点でその発明が存在したことを証明できるはずです。発明内容を公開してしまっては意味がありませんから、内容を別の形に変換したデータを広く公開して配ってしまうと良いでしょう。
データの内容を公開せずにデータの独自性を主張するには、「一方向性関数」というものを利用することができます。一方向性関数とは、あるデータXをもとにYを計算することは簡単だがYからXを計算することはほぼ不可能であるような計算のことで、MD5やSHAのような関数が知られています。これらの関数は、異なるデータからは必ず異なる結果が計算されるようになっているので、秘密のデータの存在を証明したいときは、秘密データを一方向性関数で変換したものだけ広く公開しておけば、そのデータを作成したことが自分であること及び、そのデータがある時点で存在したことを証明できることになります。たとえば、ある時点において すごい発明した! 詳細は....
というテキストが存在したことを証明したい場合、このデータのSHA値を計算すると
7534c40ddf8887ac2dc5f05e4fce7648a085d992
となるので、この文字列をTwitterやFacebookなどに投稿して拡散しておけば、確かにある時点でその情報が存在したことを友達が証言してくれるでしょう。
情報の重要度の計算
沢山の人に登録されたURLは重要なサイトだと判断されるのが普通ですが、複数の人から同じハッシュ値が登録されている場合は、誰もが持ってるデータだと判断することができるので、そのデータは重要でないということがわかります。多くの人が、手持ちの様々なデータについてハッシュ値をソーシャルブックマークシステムに登録するようになれば、あるデータが沢山の人に共有されているかどうかをブックマーク数で判定できるようになり、これをもとにして情報の重要度が判定できるようになります。ファイルのバックアップを作成する場合、「自分にとって重要かどうか」を基準にしてバックアップするかどうか判断するのが普通ですが、ブックマーク数を利用できれば「世の中に沢山あるかどうか」も判定基準に加えることができます。誰もが持っているファイルであれば、とりあえずバックアップの対象からはずしておいても大丈夫でしょう。 Web上の情報共有サービスは今後もどんどん増えてくることでしょう。現在のところ、共有された情報自体を楽しむという単純なサービスがほとんどですが、データの存在の証明や重要度の計算といった新しい応用が増えてくることを期待したいと思います。