6/10/2017

Keybase入門

Nikhita Raghunathによる。PGPの普及を阻んでいた身元の確立と利用の手軽さを、SNSで解決している。

Keybaseのことを聞いてから、私は参加したいと思っていた。残念ながら、私が最初にそれを手に入れようとした際、サインアップに招待状が必要だった。(これを書いている時点で、ウェブサイトのページは別の方法を書いているが、Keybaseは招待状を必要としない。連絡してほしい!)

Keybaseのコンセプトは一度理解すれば、理解しやすいようだ。私が最初にそれを聞いた時は混乱した。本当に何なのかを理解するのにグーグル検索が必要だった。この記事で、あなたがKeybaseについて持っている不明瞭な考えを明確にしたいと考えている。

Keybaseとは何か

Keybaseは公開鍵の信頼できる保管庫である。もし、私があなたに暗号メッセージを送りたい場合、公開鍵を簡単に見つけることができる。また一方、私がメセージを送りたい相手があなたであると確かめたいと思っている。これが信頼係数が入り込む場所である。

Keybaseは、あなたのソーシャルアカウントに結び付けることで信頼を確立する。それぞれのアカウントに投稿するよう要求する - それらを求め、Keybaseのアカウントにリンクする。そうして、私はあなたの身元を確認し、Twitter上で(githubなどで)実際にあなたであると主張している人があなたであることを知る。これはあなたの公開鍵への私の確信を強化し、あなたにメッセージを送るのに安心させる。

Keybaseは4つの主な機能がある:

  • 身元の確立: Keybaseは、twitter、githubなどのあなたのオンラインの身元を証明する(注)ことで、偽アカウントの問題を解決する。基本的に、あなたは自分のアカウントと身元は同一だと主張しているのだ。一度これを行えば、皆は現実世界であなたに会っていなくてもあなたにメッセージを送るのに安心することができる。これが「信頼の輪 (Web of Trust)」と知られている。あなたがこれらのアカウントをコントロールしていることを誰にも伝えるために、twitter、github gistsなどに何かを投稿する必要がある。

    (注): twiter、github、reddit、facebook、hackernews、webサイト、dnsで証明する

  • 公開鍵の保管庫: Keybaseは簡単に検索できる公開鍵の保管庫と見做すことができる。これは暗号メッセージを送信/受信したい場合に便利である。鍵を個人と別々に共有する必要がなくなる。

  • ハッキングに対する防御: Keybaseはあなたが所有する暗号鍵を各デバイスに関連づける。あなたのデバイスの一つがハッキングされても、そのデバイスをKeybaseのIDから削除できる。従って、皆はあなたのデバイスの一つがハッキングされたことを知っているため、もはやそのデバイスへのメッセージを送信しなくなる。

  • 素晴らしいファイルシステム: KeybaseはKBFSと呼ばれるファイルシステムもある。簡単に言うと、ファイル共有をするための安全な方法である。パブリックとプライベートの2種類のフォルダがある。パブリックフォルダ内にある全てがあなたによって署名され、プライベートフォルドはエンドツーエンドで暗号化され、Keybaseでもそれらを見ることができない。

アカウントを設定する

注意: 以下は主にLinux向けのものである。

ウェブサイトに行って、参加する。参加後、デスクトップ用のKeybaseアプリをインストールする。そして、Keybaseを開始する:

$ run_keybase

これは、ログインするためのGUIを開く。CLIを使いたい場合は次のようにする:

$ keybase login
$ keybase pgp select         # if you already have keys

秘密鍵をKeybaseサーバに追加することは十分に気を付けてほしい。安全かも知れないが、秘密鍵はあなたの目だけを頼りにしている。その方がキープするためには良い。

Keybaseアカウントにデバイスを追加できる。各デバイスには暗号鍵が付属する。いずれかのデバイスがセキュリティ侵害を受けた場合、アカウントから削除してほしい。Keybaseはあなたが従うユーザを追跡する。従って、ユーザがデバイスをセキュリティ侵害した場合、あなたに通知される。

モバイルアプリはまだ開発中である(注: iOSAndroid向けにベータ版がリリースされている)。それまでは、ペーパーキーと呼ばれるものを使うことができる。これは新しいコンピュータを用意するのに利用できるNaCL鍵(ソルト)である。最初の2つの単語がパブリックラベルで、残りが秘密鍵をエンコードする一連の単語である。

$ keybase device add
$ keybase paperkey

あなたの身元を確立する

ツイートやgistsを投稿するか、皆に何を伝えるべきかを促すプロンプトが出る:「これらのアカウントを所有するの人物は同じ、私!、私!、私!」(明らかにそのままではない)

$ keybase prove twitter
$ keybase prove github

Keybaseはどのようにアカウントとデバイスを接続されているかを示す優れたハッシュ木を作成する。ペーパーキーを使って、ペーパーキー自体に由来する矢印として表示される第2のコンピュータを準備することができることに注意してほしい。

暗号化メッセージの送信

サーバ上に秘密鍵を追加した場合、メッセージの暗号と復号にウェブサイトを使うことができる。あなたがそうすると決めた場合、ブラウザのJSで暗号化/復号化が行われることを覚えて置いてほしい。よく考えること!

秘密鍵を追加していない場合、CLIを使用してメッセージを暗号化または復号化する必要がある。

$ keybase pgp encrypt nikhita -m "This is a test message!"
-----BEGIN PGP MESSAGE-----
Comment: https://keybase.io/download
Version: Keybase Go 1.0.18 (linux)
...
-----END PGP MESSAGE-----

それでおしまい! Keybaseは自動的に私の公開鍵を検索し、それを使ってメッセージを暗号化する。今、あなたは暗号化されたこのテキストの暗号化ブロックをメール、Twitter、IMなどどんなものでも、私に送ることができる! :)

私は公開鍵を求めて尋ね回る必要はないので、これは特に便利である。実際、私はKeybaseのユーザ名を知る必要はない。私は、Twitterアカウントを使ってメッセージを送ることもできる。

$ keybase pgp encrypt TheNikhita@twitter -m "Hi again!"

復号するには:

$ keybase pgp decrypt -m "encrypted-message-here"

より詳細なコマンドがマニュアルにある。

ファイルシステムを使う

Keybaseは安全な分散ファイル・ストレージ・システム(Dropboxのようなもの)を提供する。Dropboxと異なり、ここには同期モデルはない。ファイルはオンデマンドで利用できる。つまり、システム上のメモリを占有しない。また、アルファ・プロダクトの各ユーザには10GBのスペースが提供される。

  • /keybase/public/<username>/keybase/private/<username>にマウントされたファイルシステムを探すことができる。私のkeybaseユーザ名を使う代わりに、twitterの(あるいは別の)ユーザ名を使うこともできる。/keybase/public/TheNikhita@twitterでも動作する。

  • パブリックフォルダに格納されているもの全てがあなたによって署名され、プライベートフォルダに格納されているものは全てエンドツーエンドで暗号化される。

  • パブリックフォルダに格納されるものは、https://keybase.pub/で見ることができることに注意する。特定のユーザファイルを表示するには、https://keybase.pub/<username>にアクセスする。

  • プライベートフォルダは/keybase/public/nikhita,chrisあるいは/keybase/public/TheNikhita@twitter,chrisと名前が付けられている。これは、暗号化されたエンドツーエンドのフォルダで、クリスと安全にファイルを共有できる。このようなフォルダを作成する必要ない。暗黙のうちに存在する。
# to access public folders
cd /keybase/public/nikhita
cd /keybase/public/TheNikhita@twitter
cd /keybase/public/nikhita@github

# to access private folders between you and me
cd /keybase/private/nikhita,
cd /keybase/private/TheNikhita@twitter,

この中で一番素晴らしい点は? 私がTwitterで誰かと会話している場合、公開鍵を尋ねる煩わしさを省くだけでなく、「そのファイルはKeybaseのプライベートフォルダにあるよ」とシンプルに言うことができる!

結論

私はKeybaseの目標とデザインが好きだ。またオープンソースで、快適だ! アカウントやデバイスがセキュリティ侵害された場合、セキュリティ上の懸念があるかも知れないが、それらを無効にすることで軽減できる。

全体として、私はそれが好きで、将来どのようなアルファプロダクトから製品に移行するかを見るのが楽しみである。