Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SSH公開鍵認証による接続 / Connecting with SSH Public Key ...

SSH公開鍵認証による接続 / Connecting with SSH Public Key Authentication

SSHの仕組み。
・鍵交換
・ホスト認証、ユーザ認証
・SSHエージェント
・SSHエージェント転送

kaityo256

March 27, 2025
Tweet

More Decks by kaityo256

Other Decks in Technology

Transcript

  1. 3 端末エミュレータ Macの「ターミナル」やWSLのUbuntuの画面は、 「端末エミュレータ」と呼ばれ、VT100の動作 をエミュレートするものがほとんど ClickRick – CC-BY-SA 3.0 https://commons.wikimedia.org/w/index.php?curid=6693684

    ホスト IBM System/360 端末 IBM 2260 DEC PDP-11 VT100 VT100 • 昔はタイプライターが端末であった(テレタイプ端末, TTYの語源) • その後ディスプレイを使ったビデオ端末が出現 • ホストコンピュータにはビデオ端末が付属していたが、DECのVT100が端末 のスタンダードに
  2. 6 SSHとは SSH (Secure Shell) telnetやrlogin、rsh、ftpなどを代替するために生まれた SSHは規格であり、その実装の一つがOpenSSH $ ssh –V

    OpenSSH_9.7p1, LibreSSL 3.3.6 SSHの役割 • 通信路の暗号化 • 全ての通信を傍受されても、盗聴者が内容を復元できないようにする • 認証(ホスト認証、ユーザ認証) • ホスト認証:接続しようとしているホストが正しいことを確認 • ユーザ認証:接続しようとしているユーザが正しいことを確認 接続時のフロー 鍵交換による通信路暗号化 ホスト認証 ユーザ認証 以後の通信は暗号化 ……
  3. 7 鍵交換 通信路が全て傍受されている前提で、秘密の情報を共有したい Alice Bob 𝑎, 𝐴 𝑏, 𝐵 AliceとBobが鍵のペア(𝑎,

    𝐴)と(𝑏, 𝐵)を生成 𝐴 𝐵 𝐵 𝐴 公開鍵𝐴, 𝐵を互いに伝える(傍受可能) 𝑠 = 𝑎𝐵 𝑠 = 𝐴𝑏 𝑠 = 𝑎𝐵 = 𝐴𝑏を計算し、共通の秘密情報とする 𝐴, 𝐵 𝑠 傍受者は通信傍受で得た𝐴, 𝐵から秘密情 報𝑠を再現できない 以上のアルゴリズムをDiffie–Hellman (DH)鍵交換と呼ぶ
  4. 8 鍵交換 離散対数問題を使った実装例 Alice: 秘密の整数𝑎に対して𝐴 = 𝑔𝑎 mod 𝑝を計算し、公開鍵とする Bob:

    秘密の整数𝑏に対して𝐵 = 𝑔𝑏 mod 𝑝を計算し、公開鍵とする 𝑠 = 𝐵𝑎 mod 𝑝 = 𝑔𝑎𝑏 mod 𝑝 AliceはBobから受け取った𝐵を使って以下を計算する BobはAliceから受け取った𝐴使って以下を計算する 𝑠 = 𝐴𝑏 mod 𝑝 = 𝑔𝑎𝑏 mod 𝑝 傍受者は𝐴, 𝐵の情報から𝑠を計算することができない(離散対数問題) →AliceとBobは、傍受されている通信路を使って秘密の情報𝑠を共有できた 楕円曲線上の演算を用いる Elliptic-curve Diffie-Hellman (ECDH)もよく使われている 𝑔と𝑝は既知とする
  5. 15 公開鍵認証のまとめ • 公開鍵認証には、署名に使う秘密鍵と、検証に使う公開 鍵のペアを使う • 検証側は、あらかじめ相手の公開鍵を保持しておく • 公開鍵で検証できる形で署名が可能なのは、秘密鍵の所 持者のみ

    • 正しく署名できた人を「公開鍵に対応する秘密鍵の所持 者である」と認証できる ユーザ認証 ホスト認証 • ホスト認証でも、あらかじめ相手の公開鍵を登録してお くことが望ましい • しかし、初回接続時に公開鍵のフィンガープリントを確 認し、問題なければ登録する、という運用が多い https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints 例:GitHubのSSHフィンガープリント
  6. 17 秘密鍵の暗号化 (1) ターミナルからGitHubにアクセスしようとする $ git push (2) パスフレーズにより秘密鍵を復号 (3)

    秘密鍵を使って認証 パスフレーズによる知識認証でGitHubにアクセスしている わけはないことに注意
  7. 21 SSHエージェントのまとめ SSHエージェントの役割は以下の2つ 1. 復号済みの秘密鍵を記憶する 2. 別の接続先に署名を転送する SSHエージェントを使うためには、SSHエージェントが起動し、 常駐している必要がある MacはKeyChainがSSHエージェントを兼ねる

    Windows (WSL)は別途SSHエージェントを起動する必要がある SSHエージェントの使い方 復号した秘密鍵の記憶には ssh-add SSHエージェント転送をする場合は ssh –Aオプション ログアウトしたら秘密鍵の情報は消える