GnuPG
Keybase

keybaseとはなにか

昔からGPGをこっそり使っていたのですが、keybaseというサーバにキーをストアするのが最近のはやりと知りました。

しかし、昔使っていたキーサーバはどうなったの?と不思議に思いました。
GPGSuiteからサーバを選択してみると以下のようなエラーを表示しました。

image.png

もう使えないのですね・・・。

そういうわけでkeybaseと言うものを使ったほうが良いみたいですね。

https://keybase.io/

keybase の install (Mac)

brew cask install keybase

また、このCLIを利用するには、KEYBASEにアカウントが必要となる。
KEYBASEのWEBサイトにいってサインアップする。

キーを持っていない場合は、KEYBASEでキーペアを作ることができる。
私の場合はすでにキーペアを持っていたのでIMPORTした。

しかし、最近のサービスは性善説に基づいているのか、秘密鍵もキーフレーズもサービスに預けろと言ってくる・・・。
まあ、すでにChromeのプラグインでFlowCryptというサービを使っていて、そこでも秘密鍵を預けてしまっているのでもう諦めて信用するしか無い。

セキュアなのかどうなのか、ちょっとわからないがそういう時代なのだろう。
(一応、エンクリプトして保存するよ・・・とは言ってくれてるが、使用するしか無い)

image.png

そしてその次はコンソールからLOGINしてみるが、下記の表示を見ると一応LOGINできたようだ。
しかし、WARNINGが幾つも表示されている。

➜  projects keybase login
Your keybase username or email address: kazuhiko.hotta@gmail.com
▶ WARNING Bad subkey: openpgp: invalid data: subkey signature invalid: openpgp: invalid signature: RSA verification failure [tags:LU=1LiT79a0hGId]
▶ WARNING Bad subkey: openpgp: invalid data: subkey signature invalid: openpgp: invalid signature: RSA verification failure [tags:LU=1LiT79a0hGId]
▶ WARNING Bad subkey: openpgp: invalid data: subkey signature invalid: openpgp: invalid signature: RSA verification failure [tags:LU=N6Yh_UylGiJs]
▶ WARNING Bad subkey: openpgp: invalid data: subkey signature invalid: openpgp: invalid signature: RSA verification failure [tags:LU=N6Yh_UylGiJs]


************************************************************
* Name your new device!                                    *
************************************************************



Enter a public name for this device: kaz-macbook-pro



✔ Success! You provisioned your device kaz-macbook-pro.

You are logged in as kazuhikohotta
  - type `keybase help` for more info.
▶ WARNING Bad subkey: openpgp: invalid data: subkey signature invalid: openpgp: invalid signature: RSA verification failure [tags:LU=EMOSVsQ2_hxF]
▶ WARNING Bad subkey: openpgp: invalid data: subkey signature invalid: openpgp: invalid signature: RSA verification failure [tags:LU=EMOSVsQ2_hxF]
▶ WARNING Bad subkey: openpgp: invalid data: subkey signature invalid: openpgp: invalid signature: RSA verification failure [tags:LU=EMOSVsQ2_hxF]
▶ WARNING Bad subkey: openpgp: invalid data: subkey signature invalid: openpgp: invalid signature: RSA verification failure [tags:LU=EMOSVsQ2_hxF]

・・・ここからしばらくぐぐってみたら、以下のissueを発見しました。

https://github.com/keybase/keybase-issues/issues/1906

どうやら、1.0.9で対応される予定らしい。
現在の自分のバージョンは

➜  projects keybase --version
keybase version 1.0.38-20171220205307+f5d54bc77

ということなので、しばらくWARNINGは無視しよう。

Macのアプリ版keybaseをinstallしたので立ち上げてみると
以下のような画面が表示された。

image.png

なるほど・・・、このKEYBASEを使って各SNSのアカウントに署名していくみたいです。ようやく全貌がわかりました。

まあ、有名人ではないのでなりすましされることは考えられないですが。

自分のTwitterアカウントをverifyしてみる

KEYBASEからTwitter用のトークンを発行して、つぶやくことでベリファイできます。

image.png

そしてアプリがこの投稿を検出して、画面のステータスが変わります。

image.png

githubのリポジトリに署名付きのコミット

git configにキーIDを記録すると、署名付きでcommitできる。

➜  projects git config --global user.signingkey FCC29AEFF7C52E6A

その後適当なcommitを行いcommit logを見てみると以下のような表示になる

# サイン付きでcommit logを表示
git log --show-signature

image.png

水色のコミットは正しい署名がされていることがわかります。
しかし、一番最初のコミットは署名が確認出来ないことがわかります。
これは便利。

しかし、残念なことにgithubの上で見ると・・・

image.png

どちらもVerifiedと表示されています。
このKEYは私のものではありません。GIthub's Keyと書いてあるのでGithubのモノみたいです。

image.png

もう少し色々試してみる必要がありそうです。

キーを検索する

キーの持ち主を探すには以下のコマンドを使用すれば良いようです。

➜  ~ keybase search FCC29AEFF7C52E6A
kazuhikohotta twitter:kaz_hotta github:kazuhiko-hotta facebook:kazuhiko.hotta

自分自身を見つけることが出来ました。
先程のKEYBASEで拾ったIDを検索してみます。

➜  ~ keybase search 4AEE18F83AFDEB23
No results.

残念ながら見つけることが出来ませんでした。

他人のPUBKEYを検索する

自分も含めてKEYIDからPUBKEYを検索することはかんたんです。
KEYBASEのウェブサイトで検索できます。

image.png

PUBKEYをPULLするコマンドもあります。

image.png

簡単ですね。

4AEE18F83AFDEB23 の持ち主(正体)

色々ググりましたが、これはgithub自身が持っている鍵だそうです。
ですので、Verifedでも良いみたいですが。

このキーのPUBKEYは下のURLで確認できます。

https://help.github.com/articles/about-gpg/

githubのpublic keyをimportする

keybaseからやりたかったのですが、keybaseもどうせgpgコマンドを叩いているだけなので、以下のように実行しました。

➜  client git:(master) gpg --import
-----BEGIN PGP PUBLIC KEY BLOCK-----

xsBNBFmUaEEBCACzXTDt6ZnyaVtueZASBzgnAmK13q9Urgch+sKYeIhdymjuMQta
x15OklctmrZtqre5kwPUosG3/B2/ikuPYElcHgGPL4uL5Em6S5C/oozfkYzhwRrT
SQzvYjsE4I34To4UdE9KA97wrQjGoz2Bx72WDLyWwctD3DKQtYeHXswXXtXwKfjQ
7Fy4+Bf5IPh76dA8NJ6UtjjLIDlKqdxLW4atHe6xWFaJ+XdLUtsAroZcXBeWDCPa
buXCDscJcLJRKZVc62gOZXXtPfoHqvUPp3nuLA4YjH9bphbrMWMf810Wxz9JTd3v
yWgGqNY0zbBqeZoGv+TuExlRHT8ASGFS9SVDABEBAAHNNUdpdEh1YiAod2ViLWZs
b3cgY29tbWl0IHNpZ25pbmcpIDxub3JlcGx5QGdpdGh1Yi5jb20+wsBiBBMBCAAW
BQJZlGhBCRBK7hj4Ov3rIwIbAwIZAQAAmQEIACATWFmi2oxlBh3wAsySNCNV4IPf
DDMeh6j80WT7cgoX7V7xqJOxrfrqPEthQ3hgHIm7b5MPQlUr2q+UPL22t/I+ESF6
9b0QWLFSMJbMSk+BXkvSjH9q8jAO0986/pShPV5DU2sMxnx4LfLfHNhTzjXKokws
+8ptJ8uhMNIDXfXuzkZHIxoXk3rNcjDN5c5X+sK8UBRH092BIJWCOfaQt7v7wig5
4Ra28pM9GbHKXVNxmdLpCFyzvyMuCmINYYADsC848QQFFwnd4EQnupo6QvhEVx1O
j7wDwvuH5dCrLuLwtwXaQh0onG4583p0LGms2Mf5F+Ick6o/4peOlBoZz48=
=HXDP
-----END PGP PUBLIC KEY BLOCK-----
gpg: key 4AEE18F83AFDEB23: public key "GitHub (web-flow commit signing) <noreply@github.com>" imported
gpg: WARNING: server 'gpg-agent' is older than us (2.2.3 < 2.2.4)
gpg: Note: Outdated servers may lack important security fixes.
gpg: Note: Use the command "gpgconf --kill all" to restart them.
gpg: Total number processed: 1
gpg:               imported: 1

改めて署名を確認する

vuejs-study git:(master) git log --show-signature

image.png

素晴らしいです。全てのCOMMITで署名が確認できました。