Matrixの始め方:アカウントを作ったら、まずリカバリーキーを保存する
言語: 日本語
対象者: これからMatrixを使い始める人。この記事の手順を上から順に進めれば、アカウント作成から最初の会話までたどり着けます。すでに使っている人は既存利用者向けの安全確認・回復チェックリストへ。
最初に結論
アカウントを作ったら、その場でリカバリーキーを作って保存してください。
リカバリーキーは、新しい端末を認証し、過去の暗号化メッセージを読めるようにするための鍵です。パスワードとは別物で、サーバー管理者も後から教えることはできません。理由は次の2節で説明します。手順だけ知りたい人は「始め方」へ進んでください。
Matrixとは
Matrixは、オープンな分散型のチャットプロトコルです。メールと同じように、世界中に多数のサーバー(ホームサーバー)があり、利用者はどこか1つのホームサーバーにアカウントを作ります。研究室で運用しているサーバーでも、matrix.orgのような公開サーバーでも構いません。
自分が送ったメッセージやアップロードしたファイル、受信したメッセージは、自分のホームサーバーに保存されます。別のホームサーバーにアカウントを持つ人とも、同じルームで透過的に会話できます。相手がどのサーバーにいるかを意識する必要はありません。研究室、共同研究先、国際プロジェクトがそれぞれ別のサーバーを使っていても、1つのアカウントとクライアントで全部を扱えます。これがSlackのワークスペースが増え続ける問題に対する、Matrixの答えです。
クライアント(アプリ)は複数あり、後述するElement、Element X、Koushiはいずれも同じアカウントで使えます。
暗号化とリカバリーキー
Matrixのメッセージは、DMや非公開ルームでは既定で端末上で暗号化され、ホームサーバーには暗号文しか保存されません。復号するための鍵は自分の端末が持っています。だからサーバー管理者もメッセージの中身を読めません。
ここに落とし穴があります。パスワードでログインできても、過去のメッセージを復号する鍵を持っていなければ読めません。 鍵はパスワードから作られるものではなく、端末が受信して保持しているものだからです。
このため、Matrixには鍵をホームサーバーへバックアップする仕組み(Secure Backup)があります。ただし、バックアップも暗号化されており、開くにはリカバリーキーで自分の端末を認証する必要があります。リカバリーキーはサーバーに保存されず、発行した瞬間に画面に表示されるだけです。管理者が知らないからこそ、管理者もバックアップを読めません。
リカバリーキーがないと起きること
リカバリーキーを保存していない人が新しい端末を追加すると、次のようになります。
- パスワードでログインはできる。ルーム一覧も見える。
- しかし、過去のメッセージはすべて「Unable to decrypt」と表示され、読めない。
- 鍵のバックアップはサーバーにあるが、リカバリーキーがないので開けない。
- ログイン中の別の自分の端末が残っていれば、そこから鍵を渡せる。残っていなければ、過去のメッセージは永久に読めない。
また、認証されていない端末を放置していると、自分だけでなく周りにも影響します。同じルームにいる相手がメッセージを送るとき、「認証されていない端末がいます」という警告が表示されたり、その端末に鍵が届かなかったりします。認証はリカバリーキーを使うと数秒で終わります。ログインしたら、その場で認証まで済ませてください。
リカバリーキーを忘れても、認証済みでログイン中の端末が残っていれば救えます。 その端末が持っている鍵は、新しい端末を端末間認証すれば共有されますし、Element DesktopならSettings → Security & Privacy → Export E2E room keysでファイルに書き出して新しい端末に読み込むこともできます。その端末からリカバリーキーを再発行すれば、持っている鍵が新しいバックアップに登録されます。
戻らないのは、自分のどの端末も持っていない鍵です。 鍵を持つ端末を1台も残さずにリカバリーキーを失うと、古いバックアップは開けず、新しいバックアップにはその鍵を入れる手段がありません。だからこそ、ログイン中の端末をうっかりログアウトや初期化しないことが重要です。
始め方
1. クライアントを選んでインストールする
| 環境 | おすすめ | 入手先 |
|---|---|---|
| Mac | Element X または Koushi | Element XはApp Store(Apple Silicon、macOS 15.5以降)。Koushiは研究室内で案内 |
| Windows | Element(Element Desktop) | element.io/download。Windows版Element Xはありません |
| iPhone / Android | Element X | App Store / Google Play。従来のElement(Element Classic)は同期が遅いので使わない |
まずPCかMacに1台入れてください。スマートフォンは手順4で追加します。
2. アカウントを作る
研究室や共同研究でホームサーバーを案内された場合は、その案内どおりに作ります。案内がなければ公開サーバーのmatrix.orgで構いません。
アカウント作成は、ブラウザでElement Webを開いて行うのが最も確実です。「Create Account」からユーザー名とパスワードを決めます。作成後、手順1で入れたクライアントに同じユーザー名とパスワードでログインします。ホームサーバーを聞かれたら、案内されたサーバー名(matrix.orgならmatrix.org)を入力します。
MatrixのIDは@ユーザー名:サーバー名という形式です。たとえばmatrix.orgにhiroshiで作ると@hiroshi:matrix.orgになります。この文字列を相手に伝えれば、相手はどのサーバーからでもあなたを見つけられます。
3. その場でリカバリーキーを作って保存する
リカバリーキーはクライアントの中で作ります。ホームサーバーのWebページで作るものではありません。
リカバリーキーはアカウントに1つで、クライアント間で共通です。 Element、Element X、Koushiのどれで作っても同じ鍵バックアップを指します。たとえばMacのKoushiで作ったリカバリーキーを、スマートフォンのElement Xの認証にそのまま使えます。クライアントごとに別のキーを作る必要はなく、最初に使うクライアントで1回作れば十分です。
- Element(Desktop / Web): 初回ログイン時にSecure Backupの設定案内が出ます。閉じずに最後まで進めてください。案内が出なければSettings → Encryption → Get recovery keyから作れます。
- Element X: 初回ログイン後の案内、または設定 → 暗号化から作れます。この画面では、Secure Backupは「鍵の保管庫」、リカバリーキーは「回復鍵」と表示されます。「鍵の保管庫を使用」をオンにし、「回復鍵を設定」から作ります。すでに「回復鍵を変更」と表示されていれば設定済みです。
- Koushi: ログイン直後に「Set up secure backup」というゲート画面が開きます。Choose recovery key destinationでリカバリーキーを書き出すファイルの保存先を選び、Create secure backupを押し、書き出されたファイルを確認してからI saved the recovery keyを押します。これが終わるまでチャット画面は開きません。
表示または書き出されたリカバリーキーは、次のどこかに保存します。Koushiで書き出したファイルも、そのままダウンロードフォルダに置かず、次のいずれかへ移してください。
- パスワードマネージャー(1Password、Bitwardenなど)
- 紙に書いて施錠できる場所へ
- 暗号化した外部メディア
チャットや自分宛てメール、暗号化されていないメモには保存しないでください。
ElementのEncryption画面がChange recovery key(Element Xでは回復鍵を変更)になっていれば完了、Get recovery key(回復鍵を設定)のままなら未完了です。
4. 2台目の端末を認証する
スマートフォンにElement Xを入れ、同じアカウントでログインします。「この端末を認証してください」と出たら、手順3で保存したリカバリーキーを入力します。認証が終わったら、1台目で送受信したメッセージがスマートフォンでも読めることを確認してください。読めれば成功です。
これで、1台を失ってもリカバリーキーか残った端末のどちらかから復元できる状態になりました。
認証が終わると、その端末はSessions一覧で緑の盾になります。灰色や赤の盾の端末が残っていると、同じルームの相手に送信時の警告が出続けます。使っていない古い端末は、認証するか、Sessions一覧から削除してください。
5. 会話を始める
- DMを始める: 「Start chat」や「+」から、相手のMatrix ID(
@name:server)を入力します。 - ルームに参加する: 招待が届いていれば承諾します。公開ルームは
#ルーム名:サーバー名で検索できます。 - 人を招待する: ルームの設定から相手のMatrix IDを入力します。相手が別のサーバーでも招待できます。
ここまでで、Matrixを日常的に使う準備は完了です。
Koushiについて
Koushiは私の研究室で開発しているMacのMatrixクライアントです。日本語を含む多言語のメッセージ検索など、研究用途に必要な機能を優先しています。私自身が日常的に使いながら開発している段階で、細かい不具合が残っている可能性はありますが、使いやすさでは既存クライアントより手になじむと感じています。
Koushiはこの記事の主張を設計に組み込んでいます。ログイン後、端末認証とリカバリーキーの保存を確認するまでチャット画面を開きません。「あとでやろう」ができない作りです。
Koushiの配布方法は研究室内で案内しています。開発中のため、鍵の受信に問題が起きたときの保険として、Element Xも同じアカウントで併用してください。
よくある質問
クライアントを変えたらリカバリーキーを作り直す必要がありますか? ありません。リカバリーキーはアカウントに1つで、Element、Element X、Koushiのどれからでも同じものを使います。
パスワードを変えたらリカバリーキーも変わりますか? 変わりません。パスワードはログイン用、リカバリーキーは鍵バックアップの復号用で、独立しています。
管理者にリカバリーキーを教えてもらえますか? できません。リカバリーキーはサーバーに保存されず、発行した瞬間に画面に表示されるだけです。
リカバリーキーを忘れました。 まず、ログイン中の端末からログアウトしたりアプリを削除したりしないでください。その端末が最後の鍵の保管場所かもしれません。その状態で既存利用者向けの安全確認・回復チェックリストを上から順に実施してください。
日本語の検索がうまくいきません。 公式のElementは日本語などの非ラテン文字の検索に弱い問題があります。研究室ではこの問題を解決するためにKoushiを開発しています。
関連記事
- Slackに疲れた研究者のためのMatrix入門(研究者にとってのMatrixの利点)
- Matrixを使い始める前の暗号化設定チェックリスト(手順3と4のチェックリスト版)
- Element downloads