(Nostr には書いたけど改めて)
#Nostr のIDの考え方は Blockchain/Bitcoin の仕組みに近い。 Botcoin が公開鍵をIDとするだけで運用できているのは「元帳」である Blockchain が要求しているのが「取引」の一貫性と無矛盾性だから。だからID=公開鍵に対して何も証明しなくてもよい。
でも Nostr はコミュニケーション・ツールでありIDが「誰」に紐づくのかという証明が絶対に必要。加えて鍵の生成から廃棄(revoke)までのライフサイクルを管理する必要がある。これって PKI (公開鍵基盤) そのものなのよ。
Nostr はID=公開鍵を証明する仕組みとしてサイトとの連携を行う NIP-05 と呼ばれるプロトコルを定義している。
https://github.com/nostr-protocol/nips/blob/master/05.md
またIDが乗っ取られる可能性を考慮して複数IDを取っておけとアドバイスしているが無効になったIDを廃棄する仕組みがないしID間の「メタデータの引っ越し」機能もないようだ。つまり乗っ取られたら,そのIDについては,そこで試合終了で,せいぜい NIP-05 の設定を外すくらいしかできない。言い方を変えると NIP-05 で認証されないIDは信用できないってことだな。
本当は公開鍵をIDにする(is-a)のではなく,IDと公開鍵を分離して「IDが公開鍵を所有する」 has-a 関係にするのが正しいのだろう。まぁ,それをしたら #Nostr じゃなくなるかもしれないけどw Nostr を Web3 実装のひとつみたいにみなす人もいるみたいなので,そういう意味でも「ID=公開鍵」の仕様は外せないかなw
替えの効かないIDを使って失敗するってのは,かつての住基番号や今の個人番号を彷彿させる。漏洩やなりすまし・乗っ取りは絶対に起きるんだから,起きた後にどうリカバーするかというのは最初に考えておかないと,後付けできないので,いざというときに詰むことになる