keyoxideセットアップ
Table of Contents
背景・動機
友人のこまもか君(@Comamoca_)がTwitterでなりすましをされていた。
なりすましを発見したので本物であることを主張しておきますね〜
— こまもか🦊 (@Comamoca_) May 27, 2025
署名済みテキスト:https://t.co/Q5jcSsJACw
keybase:
僕のGitコミットは基本的にkeybase管理下のPGP鍵で署名してるので、なんか怪しい人いたら各自検証してください
🙏https://t.co/ufJ5K1j5ig
自分はまだされたことがないが、将来的になりすまされた時の為に今のうちに手を打っておこうということで今回対応した。
試したこと・やったこと
0. 方針を決める
インターネットでなりすましではないことを証明するのは根本的に難しい。
ChatGPTによると、本人性を証明するためのアプローチは次の3つが上げられる。
- A. 他媒体連携型証明(クロスメディア検証)
- B. 動画・写真による自己証明
- C. 本人だけが知る事実・履歴を提示
今回の要件としては、自分のことをあまり知らない不特定多数から見て自己をどう証明するのかというものがある。 私の場合Twitter/GitHub/ブログがメインなので、これらを証明する手段が求められている。(A. 他媒体連携型証明)
GPG KeyのYubiKey運用をはじめた にも書いたとおり、可能な限りGPGに寄せたいと考えている。 自分のソーシャルアカウントや公開鍵との関連性を証明するサービスはいくつかあるようだ。
- Keybase
- Keyoxide
- Sigstore
- etc..
当初keybaseを採用しようとしていたが、自分にとってSNS機能は不要だったり、Zoomが買収してから開発が停滞気味という噂を聞き、Keyoxideを採用することにした。
また友人のnatsukiumも利用していたので決断の後押しになった。
https://keyoxide.org/DCCB2D69E06EEAA48904F8A12D5ADD7530F56A42
1. Keyoxideに認識させる
基本的にはドキュメントを参考に上から順に行えばよい。
https://docs.keyoxide.org/getting-started/creating-profile-openpgp/
GPG KeyのYubiKey運用をはじめた ですでにSigned Keyは持っていたのでGPG Key生成手順はスキップできた。
次のコマンドで public.asc
を生成して管理画面からアップロードする。
https://keys.openpgp.org/upload
$ gpg --armor --output public.asc --export <key>
keyoxide側が勝手にopenpgpを参照してページを作ってくれる。
https://keyoxide.org/0B10DAA7BA0236D7382287660F79C0AB03FD7A1C
2. Twitter紐付け作業
こちらを参考に対応する。
https://docs.keyoxide.org/service-providers/twitter/
openpgp4fpr:<fpr>
を含めたツイートをする。
keyoxide用
— たけてぃ𓁈𓈷 (@takeokunn) May 27, 2025
openpgp4fpr:0B10DAA7BA0236D7382287660F79C0AB03FD7A1C
ツイートのリンクを notation
で付与する。
$ gpg --edit-key <key>
> notation
@Enter the notation: proof@ariadne.id=https://twitter.com/takeokunn/status/1927387715441414384
> save
次のコマンドで public.asc
を生成して管理画面からアップロードする。
https://keys.openpgp.org/upload
$ gpg --armor --output public.asc --export <key>
3. GitHub紐付け作業
こちらを参考に対応する。
https://docs.keyoxide.org/service-providers/github/
openpgp4fpr:<fpr>
を含めたGistを作成する。
https://gist.github.com/takeokunn/51d8c50bb4e6f08ff50d68a125d7fb54
Gistのリンクを notation
を付与する。
$ gpg --edit-key <key>
> notation
@Enter the notation: proof@ariadne.id=https://gist.github.com/takeokunn/51d8c50bb4e6f08ff50d68a125d7fb54
> save
次のコマンドで public.asc
を生成して管理画面からアップロードする。
https://keys.openpgp.org/upload
$ gpg --armor --output public.asc --export <key>
4. DNS紐付け作業
こちらを参考に対応する。
https://docs.keyoxide.org/service-providers/dns/
openpgp4fpr:<fpr>
を含めたTXT Recordを作成する。
$ dig TXT takeokunn.org | grep openpgp
takeokunn.org. 300 IN TXT "openpgp4fpr:0B10DAA7BA0236D7382287660F79C0AB03FD7A1C"
DNSの情報を notation
を付与する。
$ gpg --edit-key <key>
> notation
@Enter the notation: proof@ariadne.id=dns:takeokunn.org?type=TXT
> save
次のコマンドで public.asc
を生成して管理画面からアップロードする。
https://keys.openpgp.org/upload
$ gpg --armor --output public.asc --export <key>
得られた結果・所感
多少作業が詰まったが、無事keyoxide上で証明できた。
https://keyoxide.org/0B10DAA7BA0236D7382287660F79C0AB03FD7A1C

showpref
で現在の notations
を確認できる。
@gpg> showpref
[ultimate] (1). takeo obara <bararararatty@gmail.com>
Cipher: AES256, AES192, AES, 3DES
AEAD: OCB, EAX
Digest: SHA512, SHA384, SHA256, SHA224, SHA1
Compression: ZLIB, BZIP2, ZIP, Uncompressed
Features: MDC, AEAD, Keyserver no-modify
Notations: proof@ariadne.id=https://gist.github.com/takeokunn/51d8c50bb4e6f08ff50d68a125d7fb54
proof@ariadne.id=https://twitter.com/takeokunn/status/1927387715441414384
proof@ariadne.id=dns:takeokunn.org?type=TXT
今後の展開・検討事項
今回はkeyoxideに入門しただけなので、keyoxide自体の仕組みや実際の実装を読んで理解を深めたい。