# Keyoxide
この記事の内容は2021年3月頃のものです。2022年12月に内容の一部を更新しました。
Keyoxide (opens new window)は、分散されたオンラインアイデンティティを確立する方法のひとつです。Keyoxideに則ってデジタル署名を追加した公開鍵をOpenPGPに則って公開すれば、特定のサービスに依存せずオンラインのアイデンティティを確立し確認できます。
自分の公開鍵にはidentity proofとして下記のような形式のnotation[1]を添付したデジタル署名を追加してOpenPGP公開鍵サーバに公開します。
proof@ariadne.id=自分の管理するSNSアカウントのURL
自分の管理するSNSアカウントには、proofとして自分の鍵対の指紋を掲示します。
Keyoxideでは、identity proofとSNSアカウントに掲示されたproofとに一貫性があることを確認することで、identity proofを追加した鍵対を管理している人と、SNSアカウントにproofを掲示する権限のある人とが同一であることを確認できます。日常的にSNSで交流している相手の公開鍵を信頼の網に追加する場合には、Keyoxideによるアイデンティティの確認を参考にできそうです。
# アイデンティティの確立
例として、主著者のMastodonアカウントにproofを追加してみます。同様の手順で、Mastodonの他、Pleroma、Pixelfed、Peertube、WriteFreelyなどにproofを追加 (opens new window)できます。
# Identity Proofの追加
まず、自分の公開鍵にidentity proofを追加します。鍵対の指紋はF60960D80B224382CA8D831CB56C20316D6E8279
で、Mastodonアカウントはhttps://mastodon.zunda.ninja/@zundan
にあります。
$ gpg --edit-key F60960D80B224382CA8D831CB56C20316D6E8279
gpg> notation
Enter the notation: proof@ariadne.id=https://mastodon.zunda.ninja/@zundan
gpg> save
追加したnotationは下記のように--edit-key
のshowpref
コマンドで表示される内容のNotations:
の行で確認することができます。
$ gpg --edit-key F60960D80B224382CA8D831CB56C20316D6E8279
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
sec rsa3072/B56C20316D6E8279
created: 2020-06-24 expires: 2022-06-24 usage: SC
trust: ultimate validity: ultimate
ssb rsa3072/164F21FF001C8CD1
created: 2020-06-24 expires: 2022-06-24 usage: E
[ultimate] (1). zunda <zundan@gmail.com>
gpg> showpref
[ultimate] (1). zunda <zundan@gmail.com>
Cipher: AES256, AES192, AES, 3DES
Digest: SHA512, SHA384, SHA256, SHA224, SHA1
Compression: ZLIB, BZIP2, ZIP, Uncompressed
Features: MDC, Keyserver no-modify
Notations: proof@ariadne.id=https://mastodon.zunda.ninja/@zundan
gpg> quit
ヒント
Notationは、自己署名として、公開鍵に付随しているユーザーID (メールアドレス)のいずれかに添付されます。公開鍵に付随しているすべてのnotationは、インポートした公開鍵に対するgpg --check-sigs --list-options show-notations
コマンドやファイルに対するgpg --show-key --with-sig-list
コマンドで表示することができますが、あるユーザーIDに複数の自己署名が添付されている場合には、最新のもののみが有効になる場合が多く (opens new window)、表示されたnotationの一部には公開鍵から取り除かれたものもある (opens new window)場合があります。
追加したnotationを含む公開鍵をOpenPGP公開鍵サーバに公開します。
$ gpg --send-key F60960D80B224382CA8D831CB56C20316D6E8279
gpg: sending key B56C20316D6E8279 to hkps://keys.openpgp.org
# SNS Proofの追加
Mastodonにproofを追加する場合には、アカウントのプロフィール補足情報に、自分の鍵対の指紋を設定します。この他のActivityPubアカウントへのproofの追加手順は、ActivityPub — Keyoxide Docs (opens new window)を参考にしてみてください。
# アイデンティティの確認
KeyoxideによるProfile URL generator (opens new window)で得られるProfile URL (https://keyoxide.org/鍵対の指紋
)を閲覧することでアイデンティティの確認ができます。 今回の例ではhttps://keyoxide.org/F60960D80B224382CA8D831CB56C20316D6E8279
です。
主著者のMastodonアカウントの右に「verified ✔」と表示されていて、identity proofとMastodonに掲示したproofとの間に矛盾がないことがわかります[2]。
注意
公開鍵のidentity proofとSNSアカウントのproofはそれぞれなりすましをしたい人でも設定することができてしまいます。アイデンティティの確認のためには、identity proofに設定されているSNSアカウントと、そのSNSアカウントに掲示されているproofの鍵対の指紋との両方が一致する必要があります。
注意
Keyoxideによるプロファイルページに表示されているアイコンは、アイデンティティの確認対象ではありません。見た目にだまされないよう注意が必要です。
ヒント
Keyoxideによるプロファイルページに表示されているアイコンは、Gravatar (opens new window)から設定することができます。
KeyoxideのProfile URL generatorに指定した公開鍵にidentity proofが追加されていない場合には「No claims associated」と、notationに指定したSNSアカウントにproofが掲示されていない場合には「unverified」と表示されます。
# 手作業での確認
Keyoxideによるアイデンティティの確認は、万が一Keyoxideのウェブサイトが停止してしまっている場合でも可能です。
# Identity Proofの取得
OpenPGP公開鍵サーバなどから取得した公開鍵に追加されているidentity proofは、下記のように確認することができます。
ダウンロードした公開鍵について確認する場合は、確認対象のユーザーID (下記ではuid zunda <zundan@gmail.com>
)に添付された自己署名のうち最新のもの(下記では2021-03-06
)のみが有効です。その自己署名に含まれるSignature notation proof@ariadne.id=
あるいはSignature notation proof@metacode.biz=
で始まる行が有効なidentity proofです。
$ gpg --show-keys --with-sig-list ~/Downloads/F60960D80B224382CA8D831CB56C20316D6E8279.asc
pub rsa3072 2020-06-24 [SC] [expires: 2022-06-24]
F60960D80B224382CA8D831CB56C20316D6E8279
uid zunda <zundan@gmail.com>
sig 3 N B56C20316D6E8279 2021-03-06 zunda <zundan@gmail.com>
Signature notation: proof@metacode.biz=https://mastodon.zunda.ninja/@zundan
sig 3 B56C20316D6E8279 2021-03-01 zunda <zundan@gmail.com>
:
sub rsa3072 2020-06-24 [E] [expires: 2022-06-24]
sig B56C20316D6E8279 2020-06-24 zunda <zundan@gmail.com>
自分の鍵束に追加されている公開鍵について確認する場合は、下記の手順で有効なnotationのみを表示させることができます。Notation proof@ariadne.id=
あるいはNotation proof@metacode.biz=
で始まる行が有効なidentity proofです。
$ gpg --edit-key F60960D80B224382CA8D831CB56C20316D6E8279
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
sec rsa3072/B56C20316D6E8279
created: 2020-06-24 expires: 2022-06-24 usage: SC
trust: ultimate validity: ultimate
ssb rsa3072/164F21FF001C8CD1
created: 2020-06-24 expires: 2022-06-24 usage: E
[ultimate] (1). zunda <zundan@gmail.com>
gpg> showpref
[ultimate] (1). zunda <zundan@gmail.com>
Cipher: AES256, AES192, AES, 3DES
Digest: SHA512, SHA384, SHA256, SHA224, SHA1
Compression: ZLIB, BZIP2, ZIP, Uncompressed
Features: MDC, Keyserver no-modify
Notations: proof@metacode.biz=https://mastodon.zunda.ninja/@zundan
gpg> quit
# SNSに掲示されたProofの確認
上記で得られたSNSアカウントをブラウザなどで閲覧し、確認対象の鍵対の指紋をページ内検索で見つけます。
注意
なりすましを防ぐため、確認対象のSNSアカウントのみが書きこめる場所に鍵対の指紋が書いてあることの確認が必要です。
本稿の執筆時には
proof@metacode.biz
notationが推奨されていましたが、2021年11月からproof@ariadne.id
notationが推奨となりました (opens new window)。proof@metacode.biz
notationも引き続き有効です。 ↩︎本稿の執筆後にnotationの追加や削除をおこなっています。現状ではアイデンティティの確認ができない状態になっているかもしれません。 ↩︎