セキュリティとデータ
信頼済みホスト(known_hosts)
ホストへの初回接続では、その公開鍵フィンガープリント(SHA-256)を取得し、確認後に保存します。以降の接続ではフィンガープリントを比較し、万一変化した場合は明確な警告が表示されます。
一覧は 設定 → セキュリティ → 信頼済みホスト で管理します。各エントリにはホスト、鍵のアルゴリズム(Ed25519、RSA、ECDSA…)、フィンガープリントが表示され、削除できます。
接続の保護のしくみ
DR-Terminal は独自の SSH 実装を使用しており、能動的な攻撃者や敵対的なサーバーに対して堅牢化されています。
- ホスト鍵はハンドシェイク中、秘密が何も送信される前に検証されます。 中間者(man-in-the-middle)が誤った鍵を提示した場合、接続は鍵交換の時点で中止されます。パスワードや秘密鍵がデバイスから外に出ることはありません。
- 既定で強力なアルゴリズムのみを使用します。 ダウングレードされやすい旧来のアルゴリズム(SHA-1 の署名と MAC、
ssh-rsa、1024 ビットの Diffie-Hellman)は無効化されています。接続では、最新の鍵交換(まずポスト量子ハイブリッドのsntrup761x25519-sha512とmlkem768x25519-sha256、次に Curve25519、ECDH、Diffie-Hellman ≥ 2048 ビット)、暗号(AES-GCM、ChaCha20-Poly1305、AES-CTR)、ホスト鍵の種類(Ed25519、ECDSA、RSA-SHA2)を使用します。より弱いものしか提供しないサーバーには接続できません。ただし、SSHアルゴリズム(下記)で旧来のアルゴリズムを意図的に再有効化した場合は別です。 - 暗黙のダウングレードはありません。 サーバーが使用する署名はネゴシエートされたものと一致しなければならず、気づかないうちに弱いものへ切り替わることはありません。
- Terrapin(CVE-2023-48795)は緩和されています。厳格な鍵交換によるものです。
- 敵対的または不具合のあるサーバーに対して耐性があります。 ネットワークから届くパケット長、メッセージフィールド、チャネルウィンドウはすべて境界チェックされるため、悪意あるサーバーがアプリをクラッシュさせたりメモリを枯渇させたりすることはできません。認証前であってもです。
これらの保護は自動的に有効になっています。ユーザーがそれらに触れるのは、上記の信頼済みホストの確認だけです。
SSHアルゴリズム(上級者向け)
設定 → セキュリティ → SSHアルゴリズム では、クライアントがサーバーに提案する内容を調整できます。古い暗号しか話せないレガシー機器向けや、信頼する順序を固定したい場合に使います。このページにはネゴシエーションのカテゴリごとにセクションがあります。
- 鍵交換、暗号、MAC(完全性) — 各アルゴリズムをオン/オフし、上下に移動できます。この順序がサーバーへ送られる優先順位です(双方が対応する最初のアルゴリズムが採用されます)。
- ホスト鍵 — オン/オフのみ。
- 圧縮 — はい/いいえのスイッチ(既定はオフ)。はい は
[email protected]を最初に提案し、zlib のないサーバー向けの代替としてnoneを付けます。いいえ はnoneのみを提案するため、サーバー側が圧縮を有効にすることはできません。圧縮は低速な回線で役立ちますが、両端で CPU を消費します。
ライブラリが無効の状態で出荷しているアルゴリズムには、小さな琥珀色の legacy タグが付きます。オンにするまで無効のままです。カテゴリが空になることはありません。最後に残った有効なアルゴリズムはオフにできません。セクションタイトルの横の リセット でライブラリの既定値に戻ります。
保存済みの各接続はグローバルな選択を上書きできます。接続フォームの SSHアルゴリズム → カスタム は、そのホストだけを対象に同じエディターを開きます(デフォルト はグローバル設定に従います)。エディターを確定するとフォームが更新されるので、その後で接続を 保存 してください。実際にネゴシエートされた内容(鍵交換、ホスト鍵、暗号、MAC、圧縮)は、セッションメニューの 接続情報 に表示されます。
新しい設定は、その後に開いた接続に適用されます。同じホストへの 2 つ目のタブは稼働中の SSH 接続、つまりそのアルゴリズムを再利用します。再ネゴシエートするには切断して再接続してください。
ポスト量子警告
“store now, decrypt later”(今保存して、後で復号する)型の攻撃者は、今日の通信を記録しておき、量子コンピューターが古典的な鍵交換を破れるようになった時点で復号します。DR-Terminal はポスト量子ハイブリッド鍵交換(sntrup761x25519-sha512、mlkem768x25519-sha256 — OpenSSH が搭載しているものと同じ)を優先し、OpenSSH と同様に、セッションが古典的な鍵交換になった場合に警告します。接続ごとに 1 回、鍵交換がポスト量子ではなく、サーバーの更新が必要かもしれないことを伝えるダイアログが表示されます。今後表示しない で警告を恒久的にオフにできます。この設定は 設定 → セキュリティ → ポスト量子警告 にあります(既定はオン)。
エクスポートした鍵
秘密鍵を変換またはエクスポートし(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 のプロファイル、SSH アルゴリズムの優先設定、ターミナルの外観と設定、そして(モバイルでは)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 に切り替えてください。