SSHの仕組み

SSHの仕組み

サーバサイド班 甲本健太 🔗

2023/01/16 NUOCW
SSHの仕組み

目次

  • SSHとは

    • SSH接続の流れ
      1. クライアントによるサーバの認証
      2. セッションキーの生成
      3. サーバによるクライアントの認証
  • SSHのログを見てみよう

  • (おまけ)RSAとECDSA

  • 参考

2023/01/16 NUOCW
SSHの仕組み

SSHとは

SSHとはSecure Shell(安全なシェル)の略称であり、安全にリモートコンピュータと接続するためのプロトコル。

  • サーバに接続して作業するときなどに利用する

2023/01/16 NUOCW
SSHの仕組み

実演

コマンド

$ ssh -i {秘密鍵} {ユーザ名}@{接続先のIPアドレス}

ssh-configを使う

Host {登録名}
    HostName ocw.nagoya-u.jp  # 接続先
    User {ユーザ名}
    IdentityFile {秘密鍵のパス}
2023/01/16 NUOCW
SSHの仕組み

SSH接続の流れ

認証段階

  1. クライアントによるサーバの認証
  2. セッションキーの生成
  3. サーバによるクライアントの認証

通信段階

  1. データを暗号化して通信
2023/01/16 NUOCW
SSHの仕組み

1. クライアントによるサーバの認証

クライアント側が、サーバが怪しいものでないかを調べる

2023/01/16 NUOCW
SSHの仕組み

初めてサーバにアクセスするとき

サーバの公開鍵を検証し、手動で検証を行う
Are you sure you want to continue connecting (yes/no)?
ローカルのknown_hostsファイルにその情報を保存する。

(他にもssh-keyscanコマンドを用いるなどの方法もある)


2回目以降

ローカルのknown_hostsにある公開鍵情報からサーバの身元を確認

2023/01/16 NUOCW
SSHの仕組み

2. セッションキーの生成

通信の暗号化をするための鍵を生成する。
ディフィー・ヘルマンの鍵交換を用いて、中間者攻撃に対処

2023/01/16 NUOCW
SSHの仕組み

3. サーバによるクライアントの認証

サーバ側が、正しいクライアントに接続しているかを調べる

2023/01/16 NUOCW
SSHの仕組み

クライアント認証の流れ

  1. 鍵ペア(公開鍵、秘密鍵)を生成する
  2. サーバ側に公開鍵を渡す
  3. サーバがトークン(乱数)を生成しクライアントに送る
  4. 自分の秘密鍵を用いてトークンを暗号化し
    暗号化したトークンをサーバに送り返す
  5. サーバ側で公開鍵を用いて5を復号し、
    その結果が3と一致すれば 「認証成功

c.f. 電子署名

2023/01/16 NUOCW
SSHの仕組み

4. データを暗号化して通信

  • 2. セッションキーの生成で生成された鍵を使って暗号化通信をする
  • 高速な暗号化、復号が可能な共通鍵暗号を使う

2023/01/16 NUOCW
SSHの仕組み

SSHのログを見てみよう

sshコマンドに-vオプションをつけると接続の際のログを確認できる

2023/01/16 NUOCW
SSHの仕組み

(おまけ)RSAとECDSA

  • RSA
    • 「素因数分解の困難性」ベース
    • 公開鍵暗号の最初の実装
  • ECDSA
    • 「楕円曲線上での離散対数問題」ベース
    • 比較的最近開発された方法

同じ長さの鍵では、ecdsaの方が強度が高い
→ 最近はecdsaが推奨されています!

2023/01/16 NUOCW
SSHの仕組み

まとめ

  • SSHは公開鍵暗号共通鍵暗号電子署名鍵交換アルゴリズム
    といった暗号技術をフルに使ったすごい技術!
  • サーバにSSH接続をするときは、より安全な公開鍵認証を使おう!
2023/01/16 NUOCW
SSHの仕組み

参考

2023/01/16 NUOCW

mermaid.js