セキュリティ:何を守り、何を守らないか
このページは宣伝文句ではなく、アプリが実際に行っていることの説明です。誇張しないよう、限界も併せて書いています。
基本方針
LiveSSHは、お使いの端末から指定したサーバーへ直接SSH接続します。接続情報がLiveSSHのサーバーを経由することはありません。
LiveSSH Cloud(有料)をオンにすると、ホスト、スニペット、SSHキーなどの項目は端末で暗号化してから同期されます。復号鍵は、マスターパスワードと復旧キーからしか作れません。この設計をエンドツーエンド暗号化、またはゼロ知識と呼びます。
保管庫の暗号化方式
同期される項目は次のように保護されます。
- 項目は、ランダムに生成したデータキーを使い、端末上で
XChaCha20-Poly1305(認証付き暗号)により暗号化されます。 - データキーは、マスターパスワードから
Argon2id(メモリ64 MiB、反復3回)で導出した鍵でラップして保管されます。 - 同じデータキーを復旧キーでも別にラップします。復旧キーはbase32の52文字で、HKDFで鍵を導出します。
- ラップされたデータキーは、keyset(JSON)としてサーバーに保存されます。
- マスターパスワードを変更しても、再ラップされるのはkeysetだけです。項目はそのままで、復旧キーも引き続き有効です。
復旧キー
マスターパスワードを忘れても、復旧キーで保管庫を開き、新しいマスターパスワードを設定できます。
マスターパスワードと復旧キーの両方をなくすと、誰にもデータを復旧できません。復号に必要な鍵がサーバーにないため、LiveSSHも同様です。復旧キーは各自で安全に保管してください。
サーバーに保存されるもの
LiveSSH Cloudのサーバーは、自社でホストしているSupabaseです。保存内容は次のとおりです。
保存するもの
- GoogleまたはAppleアカウントのメールアドレス(サインインはGoogleまたはAppleのみで、ログインパスワードは保存しません)
- keyset(データキーをマスターパスワードと復旧キーでそれぞれラップしたもの)
- 保管庫の項目の暗号文。項目の種類(ホスト、スニペット、キーなど)、ID、更新時刻、削除マークはサーバーから見える
- プッシュ通知用の端末トークンと端末の種類、通知フックトークンのハッシュ(SHA-256)とラベル(ホストの表示名)、購読の有効期限
- セキュリティと障害対応のためのアクセスログ(IPアドレス、リクエスト時刻)
保存しないもの
- マスターパスワードと復旧キー
- 項目を復号できる鍵
- SSHパスワード、秘密鍵、ホストアドレス、ユーザー名(Cloudには暗号文としてのみ届く)
- ターミナルの入出力、コマンド履歴、SFTPで送受信するファイル
データベースは行単位のアクセス制御でアカウントごとに分離され、サーバーとの通信はTLSで保護されます。保管期間と委託先はプライバシーポリシーに記載しています。
ホストキーの固定(TOFU)
サーバーに初めて接続するとき、ホストキーのフィンガープリント(SHA-256)を表示し、確認するとそのホストに保存します(Trust On First Use)。
以後フィンガープリントが変わると、接続を拒否して警告します。サーバーが入れ替わったか、通信が傍受されている可能性があります。保存したフィンガープリントは、ホストの編集画面でリセットできます。
最初の接続時のフィンガープリントが本物かどうかは、ご自身で確認する必要があります。TOFUは、その最初の接続時の攻撃を防げません。
プッシュ通知に含まれる内容
プッシュ通知は、暗号化された保管庫とは別の経路を通ります。サーバー上の通知フックがLiveSSHのサーバーに通知を送り、LiveSSHのサーバーがGoogle Firebase Cloud Messaging(iOSではApple Push Notification service経由)で端末に届けます。
通知にはタイトル、本文(エージェントが出した確認依頼の文面など、最大300文字)、tmuxセッション名、ホストのラベルが含まれ、この経路ではエンドツーエンド暗号化されません。そのためLiveSSHのサーバーとGoogleまたはAppleを経由します。サーバーは通知本文をログに残さないように作られています。エージェントの確認依頼に機密情報が含まれうる場合は、通知機能をオンにしないでください。
クラッシュレポート
クラッシュレポートは、初回起動時に同意した場合にのみFirebase Crashlyticsへ送信され、設定 → セキュリティでいつでもオフにできます。オフにすると、未送信のレポートは削除されます。
レポートには、クラッシュの原因(スタックトレース)、OSとアプリのバージョン、端末モデルが含まれます。エラーメッセージは最初の1行だけを残し、IPアドレス、メールアドレス、パス、ホスト名を伏せてから送信します。ホストアドレス、ユーザー名、コマンド、ターミナル出力、ファイル名、鍵は含まれません。広告SDKや利用状況分析SDKは使用していません。
この設計では守れないもの
- マルウェアに感染した端末やロックが解除された端末は、アプリでは守れません。保管庫を開いている間、アプリは復号済みのデータを扱います。生体認証をオンにすると、マスターパスワードが端末のセキュアストレージに保管されます。
- 弱いマスターパスワードは総当たり攻撃に弱くなります。Argon2idは試行を遅くするだけで、防ぐものではありません。
- LiveSSHのサーバーは、項目の種類、ID、更新時刻、項目数といったメタデータを見られます。
- SSHサーバー側のセキュリティ(鍵の管理、サーバーの侵害、サーバーに置かれた通知フックトークンの保管)は、利用者とサーバー管理者の責任です。
- アプリのソースコードは公開されておらず、第三者によるセキュリティ監査も受けていません。このページの説明は開発者が書いたもので、独立した検証を受けたものではありません。
セキュリティ上の問題の報告
脆弱性や、この説明と異なる動作を見つけたら、contact@xiu.kr までご連絡ください。
最終更新日: 2026-10-07