ブロックチェーンの秘密鍵を紛失した場合の回復方法

耐GOX性


それはブロックチェーンがいつかは立ち向かわなければいけない課題です。
多くのブロックチェーンプラットフォームは、それが解決不可能な課題かのように議論を避け、投機家が夢中になるような仕掛けばかり追いかけています。

> 【セルフGOX】俗に、自分の不注意により、所持する仮想通貨を紛失または引き出せなくしてしまうこと。平成26年（2014）に大量のビットコインを消失したマウントゴックスになぞらえた造語。


確かに、秘密鍵の扱いは少し難しいものがあります。
私は、未来の秘密鍵はスマートフォンのチップ内に取り出せない形として埋め込まれて使用されるようになると考えています。チップ製造時の個体差が秘密鍵となり、その値を取り出そうとすると壊れてしまうような仕組みになるでしょう。

> 耐タンパ性とは何か？（ICカードの保護機能）
https://ssaits.jp/promapedia/technology/tamper-resistant.html

> ICの個体差から暗号を作るセキュア認証用チップ
https://eetimes.jp/ee/articles/1802/20/news068.html

しかし、それでも防げないのが秘密鍵の紛失です。自分を証明する秘密鍵を含めた端末を紛失してしまったら、もう誰も手を差し伸べることはできません。下手にこれを回復する方法を実装してしまうことは本人の意図しないところで第三者が資産へアクセスする手段を与えてしまうことになりかねません。
ブロックチェーンはデータの主権をアカウント所有者に帰属させることで、より可能性にあふれた未来を感じさせる一方で、その管理手法についてはいまだ改善の余地を残したままの状態が続いています。

今回はその秘密鍵の紛失とリカバリ（回復）の方法について、次世代ブロックチェーンと言われるSymbol from NEMを活用した場合の解決策についてご紹介します。

# 全体像
今回はスマートフォンに埋め込まれた、ユーザのアセットを操作するための秘密鍵を紛失、回復するストーリーを想定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/7ad54332-893c-b1d1-342c-eece229ee87b.png)



# 登場人物
### ユーザー(Alice)
今回スマートフォンを紛失する主役です。
彼は従前よりアカウント(Alice)で公的機関が発行した証明書の類を管理しています。
スマートフォンには決済のために(User1,User2)を割り当てられており、これらの鍵で署名することによって、`Aliceの資産`アカウントに格納されたアセットを操作します。今回の紛失劇でその決済用アカウントを操作するための鍵(User1,User2)を失うことになります。

### 携帯キャリア
Aliceが所有しているスマートフォンの販売企業です。Aliceがスマートフォンを購入した時に公的機関の所有証明を条件に、決済用アカウントを2つスマートフォンに埋め込みました。そのときの照合結果は電話番号と紐づけて社内データベースに保存され、いつでも参照可能です。

### 公的機関
今回登場することはありませんが、Aliceが免許証を取得した際に公的機関からの承認が免許証アカウントへ発行しています。公的機関の公開鍵は社会的影響力ある媒体を通じて周知されており、誰でも検証に利用することが可能です。
DIDを勉強されている方ならわかると思いますが、公的機関がIssure、後述する情報銀行がVerifier、免許証がHolderとなります。

> NEMでDIDを表現する解説についてはこちらもご参考ください。
[分散型識別子DID的に見たNEMはんこの技術的な解説](https://qiita.com/nem_takanobu/items/b1e85d5605f37a5da12f)


### 情報銀行
公的機関が承認したアカウント（免許証）所有を証明することで、任意の企業からの署名要求に対して連署を実行してくれるサービスがあり、Aliceはそのサービスを利用しています。現在のところ架空の組織です。

http://www.intellilink.co.jp/article/column/security-info_bank01.html
>情報銀行（情報利用信用銀行）とは、個人とのデータ活用に関する契約などに基づき、PDS（Personal Data Store）などのシステムを活用して個人のデータを管理するとともに、個人の指示又は予め指定した条件に基づき、個人に代わり妥当性を判断の上、データを第三者（他の事業者）に提供する事業。と「情報信託機能の認定に係る指針ver1.0」に定義されています。

# 構成

### Aliceの資産
**2-of-4**のマルチシグ{User1,User2,携帯キャリア,情報銀行}で構成されています。
2つはAlice自身が所持し、普段はその2つの連署用アカウントを用いて送金に使用します。
残りの2つは、携帯キャリアと情報銀行が所有しておきます。
それぞれ鍵を1つずつしか持たないために、顧客の資産を動かすことはできません。
顧客がスマートフォンを紛失し、自身が持つ連署用アカウントが2つとも使えなくなったとしても、キャリアと情報銀行のマルチシグで新しいスマートフォンに埋め込むアカウントに組み替えることができます。
ちなみに、行政は携帯キャリアと情報銀行に令状を出すことで行政執行（資産没収）することが可能です。

### 情報銀行
情報銀行が所有する顧客Alice用のアカウントは`Aliceの資産`の連署用アカウントである一方、Aliceが別途所有する**実印的なアカウント**からの連署を必要とするマルチレベル・マルチシグで構成されています。これにより、情報銀行は独自の判断で連署を行うことはできず、KYCの検証とその結果を他の企業に提供するだけに特化した組織としてふるまうことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/7a1c2d48-f6e4-c077-9937-6bff2a8c5610.png)



### 免許証
これもAlice(実印アカウント)にマルチシグされたアカウントです。Aliceが免許を取得した際に、公的機関からの承認トークンを受領しています。Aliceはこのアカウントの唯一の操作権があるため、「所有」しているとみなすことができます。

注）ここでは、マルチシグでアカウント(実印)がアカウント(免許証)を所有するような表現をしていますが、Alice(実印)アカウントに免許証トークンを付与するといった運用も考えられます。


# イベント

それではAliceがスマートフォンを紛失して、資産へのアクセスを回復させるまでを追いかけてみましょう。

### Aliceスマートフォンを紛失
ある日、Aliceはスマートフォンを紛失してしまいました。

### 機種変更依頼

Aliceは携帯キャリアに機種変更を申し出ます。スマートフォンにアカウントを埋め込む業務を担ってる携帯キャリアは、今まで使用していた操作用のアカウント2つを破棄し、新しいスマートフォンに差し替える必要があります。携帯キャリアは社内データベースからAliceの電話番号に紐づくアセットアカウントのマルチシグ変更するトランザクションを発行します。このトランザクションは署名数が足りないため、未完成なトランザクションとしてノードあるいはオフライン上で保留されます。

### 本人確認

トランザクションを完成させるためには、情報銀行の署名が必要になります。ただし、情報銀行の署名はマルチレベルマルチシグとなっており、`Alice(実印)`と`銀行システム`の連署がさらに必要です。銀行システムはAliceが本人であるかどうかを免許証の所有で判断します。



##### Aliceの免許証所有証明

Aliceから免許証アカウントを操作して銀行システムに対して所有証明トランザクションを発行します。

##### Aliceの本人認証

免許証アカウントからの所有証明TXを受け取った銀行システムは署名者がAliceであることを確認し、かつ免許証アカウントが過去に公的機関からの承認トランザクション受信し有効期限内であることを確認します。
これにより、Aliceの本人確認ができたので、マルチシグ変更TXへの連署を実行します。




### 機種変完了！

上記トランザクションをすべて完遂（アグリゲートトランザクションでも可）することができれば、Aliceの資産アカウントは、新しく追加されたアカウントから無事操作することができるようになります。




# さいごに

今回は、将来ブロックチェーンのアカウントがスマートフォンに埋め込まれる、という予想のもと、スマートフォンの紛失から機種変更におけるアカウントの回復までを想定してみました。思ったよりも大がかりな社会実装が必要になる、と思われた方もいるかもしれません。しかし、このスキームは汎用性が高くさらに多方面への展開ができると同時に、顧客の情報を預かる部分がかなりシンプルになることも忘れてはいけません。セキュリティと利便性についてさらに議論を深めて、より便利な社会が実現していくことを願ってやみません。

おわり