ブロックチェーンを利用したデジタルIDをSITA×ShoCardの事例から学ぶ

この記事は、[仮想通貨・ブロックチェーン Advent Calendar 2016](http://qiita.com/advent-calendar/2016/blockchain)の14日目の記事です。

先日、ブロックチェーンを使ってどのようにデジタルIDを実現できるかを、SITA×ShoCardの事例を題材にチームメンバーと一緒に学びました。この記事ではそこで学んだ内容を共有したいと思います。

## SITAとShoCard
SITAは、航空輸送業界向けの通信および情報処理ソリューションを提供する団体です。SITAは、ブロックチェーンを用いたデジタル認証を提供するShoCard社と提携して、空港での旅行者の身元確認を従来よりも簡単かつセキュアな方法で行えるソリューションを提供し、旅行者の旅行体験を向上させることを目指しているそうです。

SITA×ShoCardがどのようにして上の方法を行っているか、同社が公開しているホワイトペーパーを読み進めながら理解を深めていきました。

ホワイトペーパーは下記URLの中程から参照することができます。
[https://shocard.com/how-it-works/](https://shocard.com/how-it-works/)

## TRAVEL IDENTITY OF THE FUTURE
下図は、ホワイトペーパー「TRAVEL IDENTITY OF THE FUTURE」の12ページ目から引用させていただきました。

![SITA - TRAVEL IDENTITY OF THE FUTURE](https://qiita-image-store.s3.amazonaws.com/0/6062/afdeb704-d1d4-efa0-af33-9f758c515562.png)
この図では、旅行者が空港の各チェックポイントを通過する際に、デジタルIDを用いた身元確認がどのように行われるかが示されてます。主に、①〜③の旅行者の登録プロセスと、④〜⑤の旅行者の確認プロセスの2つのプロセスに分かれます。

ホワイトペーパーに記載されている詳細内容と照らし合わせながら、読み進めていきます。

### ①パスポートの読み取りとシールの発行
旅行者は、Traveler Appをインストールするところから始めます。Traveler Appは、インストール後に自動で**ShoCardID**の発行と旅行者の秘密鍵・公開鍵の鍵ペア生成を行います。
続いて、旅行者はTraveler Appを使用してパスポートを読み取り、顔写真を撮影します。これらの個人情報はデバイスの暗号化されたストレージに保存され、外部に公開されることはありません。
読み取った内容と顔写真はハッシュ関数にかけられ、先ほど作成された旅行者の秘密鍵でハッシュをデジタル署名します。これらのフィールドを結合したものを**シール**と呼び、シールはブロックチェーン上に記録されます。

### ②身分証の提示（初回）
次に、旅行者は航空会社で旅行者登録を行います。航空会社による身元確認を行うため、身分証明書を提示する必要があります。旅行者は、Traveler Appを使用してShoCardID、パスポート情報、顔写真が参照できるQRコードを作成し、身分証の代わりに提示することになります。

### ③身元確認と証明（初回）
航空会社は、Agent Appを使用して提示されたQRコードを読み取ります。パスポート情報と顔写真を取得し、旅行者が持つパスポートとの比較、顔写真のチェックを行い、対面確認を済ませます。
また、ShoCardIDから参照できるシールが、旅行者のものであるかどうかも検証します。ホワイトペーパーには記載されていませんが、シールの生成と同様、パスポート情報と顔写真をハッシュ化して比較したり、旅行者の公開鍵を用いてデジタル署名の検証を行うものと思われます。

これらの作業を通して身元が無事に確認された場合、航空会社は旅行者登録の結果として、今回の旅行で利用できる**トークン**を発行します。このトークンは、いわば**搭乗券**の代わりです。各チェックポイントを通過したり、他サービスとの連携に使用することができるようです。

また、航空会社は旅行者に対しての証明書を発行します。証明書は２つ発行され、旅行者のShoCardIDを証明する証明書、今回のトークンと顔写真を掛け合わせたものを証明する証明書に分かれます。なぜ2つに分けているかについてもホワイトペーパーに記載はありませんが、おそらくShoCardIDとトークン（と顔写真）の有効期限に違いがあるからだと思います。（トークンと顔写真は今回の旅行のみ有効なものになる）
証明書は航空会社の秘密鍵でデジタル署名され、ブロックチェーン上に記録されます。

旅行者は、Traveler Appを介して発行された情報を受け取った後、以下の内容を**エンベロープ**としてひとまとめにしてShoStore Serverと呼ばれる（ShoCardが管理する）ストレージに保管しておきます。

- ShoCardIDとシールのブロックチェーン上のアドレス
- 顔写真のコピー
- 航空会社が発行したトークン
- 航空会社が発行した証明書のブロックチェーン上のアドレス

エンベロープは、ユーザーが決めたパスコードで暗号化され、ユーザーの秘密鍵でデジタル署名された状態で保管されます。Traveler Appはエンベロープを参照するためのEnvelopeIDを保持します。

### ④身分証の提示（2回目）
旅行者は、会員専用ラウンジや搭乗ゲートなどの各チェックポイントを通過する際、身分証の提示を再び要求されます。旅行者は、一度航空会社から証明されているため、再びパスポートを見せる必要はありません。Traveler Appを使用して先ほどのEnvelopeIDとパスコードを含んだQRコードを作成し、チェックポイントの係員に提示します。

### ⑤身元確認（2回目）
航空会社の係員は、Agent Appを使用してQRコードを読み取り、エンベロープを受け取ります。その後、ブロックチェーン上から旅行者のシールと旅行者の証明書を取得して以下の検証を行います。

- エンベロープの署名とシールの署名が同一のものであることを確認する
- 追加でパスポート情報を提示してもらい顔写真と組み合わせてシールを確認する
- 航空会社が発行した証明書のデジタル署名が正しいものであることを確認する
- 航空会社が発行した証明所の内容とシール、トークン、顔写真が一致することを確認する
- 航空会社が発行した証明書が失効していないことを確認する
- 顔写真が旅行者と一致することを確認する

上記の検証が問題なく済んだ場合、ユーザーはチェックポイントを通過することができます。

## ホワイトペーパーを読み進めてみて
「TRAVEL IDENTITY OF THE FUTURE」を読み進めてみて、以下のことを学ぶことができました。

:bulb: ブロックチェーン上に記録された「旅行者のシール」と「航空会社がシールに対して証明した証明書」を合わせることで、旅行者の身分証明書（デジタルID）を表すことができます。これら2つの内容は、ブロックチェーンの「透明性があり極めて改ざんが困難」な特性を上手く活かし、信頼できる情報として扱うことができるようになります。

:bulb: ブロックチェーン上のデジタルIDには個人情報は含まれません。個人情報は旅行者の端末にのみ保持され、航空会社は旅行者の個人情報を管理する必要はありません。旅行者は自身の個人情報の利用をコントロールすることが可能になります。

:bulb: ブロックチェーン上のデジタルIDの検証プロセスは、機械による自動化が可能です。旅行者は、航空会社との最小限かつ効率的なやりとりを行うだけで済み、旅行体験が大きく向上します。

:bulb: 従来の物理的な身分証明書と比べて、デジタルIDは即時発行・失効が可能です。また、今回の事例にあるようなトークン（搭乗券）をデジタルIDの付加情報として発行・証明することもできるようになります。

このように、SITA×ShoCardはブロックチェーンの特性を上手く活用し、従来よりも簡単かつセキュアな方法で空港での旅行者の身元確認を行っていることがわかりました。

## まとめ
SITA×ShoCardの事例を題材に、ブロックチェーンを使ってどのようにデジタルIDを実現できるかを学ぶことができました。

ブロックチェーンを利用したデジタルIDを実現することで、エンドユーザーにとってもサービス事業者にとってもより便利な世界を提供できるのはとても素晴らしいですね！
まだまだ勉強中ですが、ブロックチェーンの特性を上手く活かしてサービスに展開していけるよう、これからも理解を深めていきたいと思います。