公開鍵・秘密鍵って何?

短い答え

あくまで比喩であると断った上で、公開鍵は ユーザ ID で、秘密鍵はパスワードだと思うことができます。重大な違いは、どちらも一度与えられたものから決して変更できず、失くしたときの復旧手段も一切存在しないことです。また、公開鍵・秘密鍵は特定のリレーと紐づくものではなく、一度作った鍵はどこのリレーでも使うことができます。

少し長い答え

Nostr において、公開鍵はユーザ ID です。同じ ID を持っている人は世界であなたしかいないので、どこのクライアントやリレーを訪れたとしてもあなたを示す ID として使うことができます。逆に言うと、あなたの ID として働くものは公開鍵だけです[1]@ から始まる Twitter の ID (screen name) のようなものを設定した覚えがあるかもしれませんがあれはただの名前で、複数のユーザが同じ名前を名乗ることができます。

秘密鍵はパスワードだと先程は言いましたが、少し違います。秘密鍵は、Nostr の上でのあなたの発言が確かにあなた自身の発言であることを証明するために使う不思議な鍵です。もう少し踏み込むと、「公開鍵」と「内容 (例えば投稿の本文などです)」のペアに対して、そのペアを確かに公開鍵の持ち主 (つまりあなたです) が作成したことを証明する「印」を生み出すことができる鍵です。

こうして生み出した「印」を技術的には (電子)署名 と呼びます。Nostr 上でやりとりされるあらゆる情報 (イベント) には必ず「公開鍵」「内容」「署名」が含まれています。

さて、情報がこの 3 つ組を含むということは、情報の内容の正当性を情報自身で証明できるということを意味します。言い換えると、正当性をどこかに問い合わせる必要がないということです。実際、Nostr の全体に関して何かの正当性を示すことができたり何かを制御できたりする「どこか」はどこにも存在しません (Nostr が decentralized と言われる所以です)。

もちろんアカウントのログイン状態を管理してくれる「どこか」もどこにもないので、厳密に言えば Nostr にはログインもアカウントもありません。ただあなたがあなたを証明できる鍵を持っているだけなのです。この事実は秘密鍵を絶対に漏らしてはいけない理由そのものでもあります。秘密鍵を他人に知られることは、他人があなたとして振る舞う能力を恒久的に手に入れることに等しいのです。


  1. 細かい話をすると NIP-05 識別子も ID として機能します ↩︎