鍵認証方式の仕組み/パスワードとパスフレーズの違いについて

SSHでログインする方法には、パスワード認証方式と鍵認証方式があります。
パスワード認証方式は、クライアントからサーバへユーザ名とパスワードを送信して認証するものであり、これらの情報はネットワーク上を流れます。 鍵認証方式は公開鍵暗号方式を利用した認証であり、パスワードがネットワーク上を流れる事はありません。

鍵認証の仕組み

  1. 鍵認証の準備(鍵の作成)をします。公開鍵と秘密鍵のペアを作成し、公開鍵はサーバ側に、秘密鍵はクライアント側に暗号化して保管します。
    ※サーバにて鍵を生成しクライアントへ鍵を渡す方法と、クライアントで鍵を生成し、サーバへ鍵を渡す方法があります。

    秘密鍵を生成する際には、暗号化して保管される秘密鍵を復号して使用可能にするためのパスフレーズを設定します。
    ※パスワード認証方式のパスワードとは全く別のものです。

  2. クライアントがサーバに接続するため接続要求を行います。(ユーザ名を送信します)
  3. サーバは乱数を生成し、公開鍵で暗号化してクライアントへ返します。またサーバは生成した乱数を使用して、サーバ側でハッシュ値を作成します。
  4. クライアントは、サーバから受け取った乱数を保管していた秘密鍵で復号化(※)します。 秘密鍵を使用する際に事前に設定したパスフレーズによって暗号化して保管されている秘密鍵を復号化します。
  5. クライアントは復号化された乱数からハッシュ値を計算します。
  6. クライアントは計算して得られたハッシュ値をサーバへ送信します。
  7. サーバは自分で生成したハッシュ値と、クライアントから受信したハッシュ値を比較して、一致していたら認証します。

各ステップにおける設定・登録方法などは別ページにてまとめます。