分散型アイデンティティを簡単に

分散型アイデンティティ入門
執筆:ArcBlock データエンジニア Riley Chu
「分散型アイデンティティ」は、ブロックチェーンに関連する最も謎めいた概念の一つですが、本来それほど難しいものではありません。DID によってユーザーは自分のデータを管理し、オンラインやデジタル上のやり取りを簡単に扱えるようになるため、その恩恵はユーザーに大きな影響をもたらします。先ごろ Microsoft がブロックチェーン上に構築した注目度の高い DID ソリューションを発表した後も、一般の人々の多くは、この新しい言葉とその意味をまだ十分に理解していません。

簡単に言えば、DID は一連の認証情報から算出される一意のアイデンティティアドレスです。DID の所有者は、この DID を使って認証や取引など、さまざまな操作を行えます。
DID を生成するプロセスは、料理を作る手順によく似ています。調理器具一式、いくつかの食材、そして秘密のレシピが必要です。これらはすべて Forge SDK にあらかじめ組み込まれています。
必要な「調理器具」:署名方式、ハッシュ関数、ロールタイプ
料理に鍋やフライパンを使うように、DID を生成する最初のステップは、適切な調理器具一式を選ぶことです。DID の場合は、Signer、Hasher、Role というタイプが必要になります。
Signer は署名方式で、秘密鍵と公開鍵の算出に使用するアルゴリズムを指します。現在、Forge SDK は Secp256k1 と、デフォルトである Ed25519 の 2 種類の署名方式をサポートしています。
Hasher はハッシュ関数で、データのハッシュ算出に使用するアルゴリズムを指します。ハッシュ関数はブラックボックスのようなもので、任意の長さのデータを固定サイズに変換します。同じ入力でも、Hasher の種類が異なれば出力も異なります。特に指定がない限り、Forge SDK は SHA3 256 をハッシュ関数として使用します。
暗号アルゴリズムを選んだら、最後に選ぶ調理器具は DID のロールタイプです。これは、DID がアプリケーション、個人、デバイスなどのどの役割を担うかを指定します。現在サポートしているロールタイプを以下に示します。

食材:秘密鍵と公開鍵
使用する調理器具について理解できたところで、DID を生成するための食材を見てみましょう。一般に DID は公開鍵から算出されますが、公開鍵は秘密鍵から算出されるため、秘密鍵だけが与えられた場合でも DID を算出できます。これは何を意味するのでしょうか。
秘密鍵は、自分だけで厳重に管理するデータです。秘密鍵を持つ人は誰でもあなたのウォレットを再生成し、送金や取引の承認を含め、ウォレットに完全にアクセスできます。そのため、取り扱いには細心の注意が必要です。
公開鍵は秘密鍵から算出されるデータで、通常は外部の第三者や一般の人が署名を検証するために使用します。ただし、秘密鍵がなければ、公開鍵だけで非公開情報にアクセスすることはできません。
レシピ
これで、DID の作成に必要な基本的な調理器具と食材を理解できました。次は、これまでの要素をどのように組み合わせるのか、レシピを見てみましょう。
ここまでで、Hasher タイプ、Signer タイプ、ロールタイプを選び、秘密鍵と公開鍵の一式を用意できているはずです。それでは、いくつかの重要な手順に従って、すべてを組み合わせてみましょう。
ステップ 1
Hasher を使って公開鍵のハッシュを取得し、hash1 とします。

ステップ 2
hash1 の先頭 20 バイトを取り出します。後で使用するため、hash2 として取っておきます。

ステップ 3
hash1 の前に DID タイプのバイト列を追加し、hash3 とします。

ステップ 4
ステップ 3 で拡張したハッシュのハッシュを取得し、hash4 とします。

ステップ 5 hash4 の先頭 4 バイトを hash3 に追加し、hash5 とします。

ステップ 6
Bitcoin の Base58 方式を使って hash5 をエンコードします。ここでは、IPFS の multibase を使用して base58_btc タイプとしてエンコードしている点に注意してください。これで完了です!

まとめ
これで DID を生成する全プロセスを確認できました。バックエンドの仕組み自体は技術的ですが、ユーザーは使いやすいオンボーディングプロセスを通じて、自分だけの一意な DID を簡単に作成して取得できます。たとえば、最近リリースされた ArcBlock の ABT Wallet では、わずか 4 つの簡単なステップで完全に分散化されたウォレットを作成できます。このウォレットは、ここで説明した DID のプロセスを活用し、ユーザーのデータを安全かつ確実に、完全な分散型の形で保護します。
このページに関わるもの
用語
-
Decentralized Identity
識別子とそれに関する主張を、単一の事業者のアカウント体系の中ではなく、主体自身が保持し検証者が確認する方式。DID と検証可能な資格情報がそれを成り立たせる部品です。
-
DID
DID はデジタル識別子です。保持者と検証者が、そのアイデンティティを誰が管理し、ある主張が誰に関わるかを確認するために使います。DID はウォレットではなく、アプリケーションのアカウント、サインイン方法、権限ルールを置き換えるものではありません。
-
DID Document
DID Document は、DID に関連する検証方法やサービスを記述します。W3C が共通のデータモデルを定めていますが、DID の解決には対応するメソッドのサポートが必要です。受け入れる鍵、用途、発行者はアプリが判断します。
-
did:abt
ArcBlock の DID メソッド。did:abt: 名前空間でアカウントや資産などを識別します。解決にはこのメソッドに対応したリゾルバーが必要です。