2022-06-04
増え続けるID/パスワード。使いまわしや、弱いパスワードが、なりすまし、のっとり被害(加害)の元。サービス毎のID/パスワードを、DIDによって過去のものにしましょう!

ウェブ標準、W3CのDIDを元に仕様を決めたDIDを使って、応用サービスDID掲示板「 DID掲示板 / DIDBBS」を作りました。


「DID掲示板」
(src on GitHub)
ひとまず、先日決めた仕様によるDID(Ed25519の公開鍵)を持っている人なら誰でも書き込める設定でサーバーを立てて動かしてみました。DID電子署名ツールを使って、電子署名付きの本文を作成し、コピペしてみてください。


「DID電子署名検証ツール - DID verify tool」

検証ツールのみ切り出してみました。サーバーでは送られてきた本文に電子署名がついているかどうか、電子署名が有効化どうかをチェックしています。ブラウザで表示している内容も正しいかどうか、DIDと電子署名から誰でも検証も可能です。

わずか25行のサーバープログラムがこちら。DIDと電子署名付き本文を検証する、checkSignを使った1行がポイントです。 import { Server } from "https://js.sabae.cc/Server.js"; import { JSONDB } from "https://js.sabae.cc/JSONDB.js"; import { checkSign } from "https://code4fukui.github.io/Ed25519/checkSign.js"; const bbs = new JSONDB("bbs.json"); class MyServer extends Server { api(path, req) { if (path == "/api/list") { return bbs.data; } else if (path == "/api/add") { try { checkSign(req.did, req.body); bbs.data.push(req); bbs.write(); return "ok"; } catch (e) { return e; } } } } const port = Deno.args[0] || 8001; new MyServer(port); DIDのパスワード(秘密鍵)は第三者に渡す必要がありません。ただ、電子署名(サイバーハンコ)を計算して付与するためには必要なので、そのツールの信頼性が重要です。本プログラムはオープンソースなので、悪意あるプログラムが動いていないことを検証することができます。

次のようにコンソール上でDIDの生成、電子署名を計算することも可能です。Denoはファイルアクセスやネットワークアクセス前に確認が入るので安心です。

deno run https://code4fukui.github.io/Ed25519/makeKey.js

※鍵生成、pemファイル(秘密鍵+公開鍵)、pubファイル(公開鍵)

deno run -A https://code4fukui.github.io/Ed25519/sign.js key.private.pem 'test'

did:key:z6Mko4PMbnRYQVFSjs98XqWkj5topwGyhEy542x6gygWUDr4 test signature:z2c6QgDNZoab3NHGXcL6qviPa2bavakMKejXdAxGmJrj1r7n3V945h9MocYkg8tZwP8wxRscYddm2tpqCJq4quC9rMrH

1行目がDID、2行目以降の電子署名付き本文をDID掲示板に貼り付けると信頼できる書き込みのできあがり!

links
- 作って持とうマイDID、分散型ID=公開鍵
- 福井から始まる信頼のインターネット、発足「Internet3 ユーザ会」 at サイバーフライデー
- 学校DX!分散型ID「DID」と電子署名ツールWebアプリ

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS