search
LoginSignup
4

More than 5 years have passed since last update.

posted at

updated at

アポスティーユの正体

最近何かと話題のnemのウリの機能「アポスティーユ」について、すこし掘り下げてみます。

nemにアポスティーユという機能は無い

これだけnemのアポスティーユはすげぇすげぇ言ってますが、実のところアポスティーユなんて機能は実装されていないんです。
ではどうゆうことなのか、を解説していきます。

パブリックとプライベート

アポスティーユにはパブリックアポスティーユとプライベートアポスティーユがあります。
ここでは、nemネットワークにアクセスできれば誰でも確認できるパブリックアポスティーユについて述べます。

アポスティーユの正体

ではなんとなくOpenApostilleを開いたら目についた、ジャパンカップ予想のアポスティーユを例にしてみます。

ジャパンカップ予想.docx - OpenApostille

NEM Blockchain Explorer v3

NIS API(HugeAlice)への問い合わせ

NIS API(HugeAlice)への問い合わせを開いたトランザクションのmessage.payloadを確認してください。

fe4e545903560fc41a6f8c9495ee7e7e18322973c50e9e2f4fbb91fa892343412586d9a808

このメッセージは固定長で5つのセクションに分けます。

fe 4e5459 0 3 560fc41a6f8c9495ee7e7e18322973c50e9e2f4fbb91fa892343412586d9a808

最初のfeはメッセージが16進数文字列であることを示す固定値です。

次の4e5459はアポスティーユであることを示す固定値です。

0はパブリックアポスティーユであることを示します。プライベートの場合は9となります。

3はハッシュアルゴリズムを示します。それぞれの割り当ては以下の通りです。

アルゴリズム
md5 1
sha1 2
sha256 3
sha3-256 8
sha3-512 9

後に続く文字列はファイルのハッシュ値です。
この場合、ハッシュアルゴリズムは3なのでsha256によるファイルのハッシュとなります。

ということで、元ファイルはsha256でハッシュ値を取ると、560fc41a...a808になるはずです。
試してみましょう。元ファイルはオープンアポスティーユからダウンロードできます。

$ sha256sum "ジャパンカップ予想 -- Apostille TX 797ae3b488f7808bf3b7ad46c7f487f2b02645175f09256ca532eb74b274d319 -- Date 2017-11-25.docx"
560fc41a6f8c9495ee7e7e18322973c50e9e2f4fbb91fa892343412586d9a808  ジャパンカップ予想 -- Apostille TX 797ae3b488f7808bf3b7ad46c7f487f2b02645175f09256ca532eb74b274d319 -- Date 2017-11-25.docx

一致しました。

NanoWalletでは、ファイル名のトランザクションハッシュからハッシュ値が記録されたメッセージを取得し、
先のようにメッセージから取り出したハッシュ値と算出したファイルのハッシュ値を突き合わせて完全性を証明しています。
また存在証明はそのトランザクションのタイムスタンプを利用します。

この二つが合わさることで「ある時点」で「このファイル」が存在していたことを証明できるのがnemのアポスティーユです。

なので、トランザクションハッシュが分かっていれば、ファイル名がこの形式でなくても問題ありません。
(もっともNanoWalletのD&Dすればすぐ確認できるのでわざわざ変更するメリットはなさそうですが)

もし自前でアポスティーユの実装や検証を行う場合は参考にしてみてください。

まとめ

というわけで、アポスティーユは単なるトランザクションの応用に過ぎませんでした。
NanoWalletに実装されている投票機能も同様に専用の機能があるわけではなく、通常のトランザクションを応用しています。

わざわざ専用の機能を実装することなく、このようなことが実現できてしまう応用性がすごいと思います(小並感)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4