公開鍵暗号と公開鍵認証の概要

Linux101

Ryo Nakagami

2026年02月10日

公開鍵暗号の概要

公開鍵暗号

  • 非対称型暗号方式とも呼ばれる
  • 秘密鍵を乱数で生成し,公開鍵は秘密鍵から,素数の席や離散対数により生成される
  • データをやり取りする際に,公開鍵で暗号化し,秘密鍵で復号する

公開鍵暗号方式の仕組み

データ送信側

データ受信側

公開鍵

③暗号化

データ

②公開鍵をコピー

①キーペア作成

公開鍵

秘密鍵

⑤ 復号

データ

④暗号化したデータを送信

公開鍵認証の概要

公開鍵認証

  • 公開鍵暗号の鍵ペアを用いて,通信相手の正当性を検証する仕組み
  • 被認証側が秘密鍵で認証データを作成し,認証側が公開鍵で検証する
  • SSH接続1やデジタル署名などで広く利用される

公開鍵認証の仕組み

認証側

被認証側

公開鍵

⑤検証

認証データ

②公開鍵をコピー2

①キーペア作成3

公開鍵

秘密鍵

③作成

認証データ

④認証データを送信

ホスト認証とクライアント認証の違い

SSH接続における二段階の認証

  • ホスト認証: クライアントが接続先サーバーの正当性を確認する
  • クライアント認証: サーバーがクライアント(ユーザー)の正当性を確認する
  • SSH接続時,ホスト認証 → クライアント認証の順で実行される

ホスト認証 vs クライアント認証

ホスト認証 クライアント認証
目的 サーバーの正当性を確認 クライアントの正当性を確認
検証する側 クライアント サーバー
鍵ペアの所有者 サーバー クライアント
公開鍵の保管場所 ~/.ssh/known_hosts ~/.ssh/authorized_keys
防ぐ脅威 中間者攻撃(なりすましサーバー) 不正ユーザーのアクセス

sequenceDiagram
    participant C as Client
    participant S as Server

    C->>S: TCP接続

    Note over C,S: 1. ホスト認証 (Server Authentication)
    S->>C: サーバ公開鍵送信
    C->>C: サーバ鍵を known_hosts と照合

    C->S: セッション鍵生成 & 交換

    Note over C,S: 2. クライアント認証 (Client Authentication)
    C->>S: ユーザ名送信
    S->>C: 認証方式要求 (password / publickey )
    C->>S: 公開鍵署名送信
    S->>S: 署名を公開鍵で検証
    S->>C: Authentication OK & セッション開始