セキュリティとデータ
信頼済みホスト(known_hosts)
ホストへの初回接続では、その公開鍵フィンガープリント(SHA-256)を取得し、確認後に保存します。以降の接続ではフィンガープリントを比較し、万一変化した場合は明確な警告が表示されます。
一覧は 設定 → セキュリティ → 信頼済みホスト で管理します。各エントリにはホスト、鍵のアルゴリズム(Ed25519、RSA、ECDSA…)、フィンガープリントが表示され、削除できます。
接続の保護のしくみ
DR-Terminal は独自の SSH 実装を使用しており、能動的な攻撃者や敵対的なサーバーに対して堅牢化されています。
- ホスト鍵はハンドシェイク中、秘密が何も送信される前に検証されます。 中間者(man-in-the-middle)が誤った鍵を提示した場合、接続は鍵交換の時点で中止されます。パスワードや秘密鍵がデバイスから外に出ることはありません。
- 既定で強力なアルゴリズムのみを使用します。 ダウングレードされやすい旧来のアルゴリズム(SHA-1 の署名と MAC、
ssh-rsa、1024 ビットの Diffie-Hellman)は無効化されています。接続では、最新の鍵交換(Curve25519、ECDH、Diffie-Hellman ≥ 2048 ビット)、暗号(AES-GCM、ChaCha20-Poly1305、AES-CTR)、ホスト鍵の種類(Ed25519、ECDSA、RSA-SHA2)を使用します。より弱いものしか提供しないサーバーには接続できません。 - 暗黙のダウングレードはありません。 サーバーが使用する署名はネゴシエートされたものと一致しなければならず、気づかないうちに弱いものへ切り替わることはありません。
- Terrapin(CVE-2023-48795)は緩和されています。厳格な鍵交換によるものです。
- 敵対的または不具合のあるサーバーに対して耐性があります。 ネットワークから届くパケット長、メッセージフィールド、チャネルウィンドウはすべて境界チェックされるため、悪意あるサーバーがアプリをクラッシュさせたりメモリを枯渇させたりすることはできません。認証前であってもです。
これらの保護は自動的に有効になっています。ユーザーがそれらに触れるのは、上記の信頼済みホストの確認だけです。
エクスポートした鍵
秘密鍵を変換またはエクスポートし(SSH 鍵 → 変換)、パスフレーズを設定すると、暗号化は形式ごとに選ばれた強力な鍵導出関数を使用します(OpenSSH には bcrypt、PKCS#8 には PBKDF2、PuTTY PPK v3 には Argon2id)。すべての salt と IV は、暗号論的に安全な乱数生成器から得られます。コンバーターは OpenSSH、PKCS#8、PKCS#1、PuTTY PPK(v2/v3)を、PEM とバイナリ DER の両方から読み書きします。
秘密情報の保存先
パスワード、秘密鍵、パスフレーズは 決して 接続 JSON にシリアライズされません。これらは直接プラットフォームのセキュアストアに保存されます。
- Android — EncryptedSharedPreferences。ハードウェア Keystore を基盤とします。
- iOS — Keychain(有効にしていれば生体認証で保護)。
- デスクトップ — AES-256-GCM で暗号化されたファイル。鍵はユーザープロファイルから導出されます。
暗号化された設定バックアップ
設定 → 構成 → バックアップをエクスポート は、パスワードで保護された .drterminal ファイルを作成します。内容は、接続(認証情報を含む)、グループ、信頼済みホスト、SSH 鍵、SFTP ブックマーク、コマンド履歴、ハイライトルール、スニペット、シリアルと Telnet のプロファイル、ターミナルの外観と設定、そして(モバイルでは)DevOps キーボードの構成です。バックアップをインポート は同じバンドルを復元します。マシン間を移動するときに便利です。
形式:AES-256-GCM で暗号化された JSON です。パスワードはファイルに保存されず、暗号鍵の導出(PBKDF2、SHA-256 で 100,000 回の反復)にのみ使われます。
~/.ssh/config のインポート
デスクトップでは、既存の OpenSSH の config からホストを一括インポートできます。インポーターは Host、HostName、User、Port、IdentityFile、ProxyJump のエントリを解析し、保存済み接続として追加します。IdentityFile で参照された鍵ファイルはディスクから読み込まれ、SecureStorage に保存されます。
ログレベル
設定 → ターミナル → ファイルログレベル で、~/.dr-terminal/logs/(デスクトップ)またはモバイルの相当箇所に出力される内容を選びます。既定は ERROR で、ノイズは最小限です。診断には DEBUG に切り替えてください。