Lから始まるLinux

5章5話
SSH
5章6話 公開鍵認証
もくじ
5章7話
SSH鍵生成(Windows)
公開鍵認証
若木 しげる
今回は「公開鍵認証」を学ぼう!
若木 みどり
「認証」って そもそもどういう 意味なのかな?
若木 しげる
「認証」はログインしようとしてきた人が 「本当にその人かどうか」を確認することなんだ 「パスワード認証」も認証方式の一つだけど 「公開鍵認証」はより安全性が高いんだ
若木 みどり
セキュリティ強化になるのね ぜひ教えて欲しいなぁ!
しくみ
若木 しげる
公開鍵認証は暗号技術と 深く関わっているんだ まずは暗号に関する 基本的な用語から確認しよう
用語 意味
平文 普通に読める文章
暗号文 暗号化によって読めなくなった文章
暗号化 平文を暗号文に変えること
復号化 暗号文を平文に戻すこと
暗号解読 正規以外の方法で暗号文を平文に戻すこと
若木 みどり
暗号って HTTPS とかで 使われるやつだよね? クレジットカード情報などを ブラウザ経由で送信しても 相手にしか読めないようにしたりとか
若木 しげる
そうだね 暗号は安心な通信に 必須の技術になっているよ
若木 しげる
今回見ていく公開鍵認証は 二つの「鍵」と呼ばれる ファイルを使うんだ それが「公開鍵(public key)」 「秘密鍵(secret key)」だよ
役割
公開鍵 暗号化だけできる(復号化はできない)
秘密鍵 復号化だけできる(暗号化はできない)
若木 みどり
なるほど! 公開鍵が「南京錠」 秘密鍵が「南京錠の鍵」 ような感じかな?
若木 しげる
いい例えだね! まさにそのとおりだよ これらの鍵を使って 以下のような仕組みで認証するよ
  1. 自分が秘密鍵と公開鍵を作成する
  2. 自分から相手に公開鍵を渡す
  3. 相手は共通鍵を作る
  4. 相手は公開鍵で共通鍵を暗号化する
  5. 相手は自分に暗号化された共通鍵を渡す
  6. 自分は公開鍵で暗号化された共通鍵を復号化する
  7. 自分と相手が共通鍵暗号でやりとりできれば認証成功
若木 みどり
へぇ… 第三者が公開鍵を手にしても 暗号化しかできないから 暗号化された共通鍵の通信は 覗けないんだね!
若木 しげる
この仕組みを使えば相手が 「自分が渡した公開鍵で暗号化した」 という確認ができるので 「なりすまし」も難しいんだ
若木 みどり
でも悪意のある相手が 最初からなりすましていて 公開鍵の受け取りも その後の認証も すべてなりすまされていたら 通信が覗かれちゃうよね?
若木 しげる
実際その通りだよ だから初回接続のときに 接続先の情報が表示され 「本当に信用しても良いですか?」 と厳重に尋ねられるんだ
公開鍵認証を使う理由
若木 みどり
認証はいつも使っている 「パスワード認証」じゃ ダメなのかな?
若木 しげる
ダメではないけど 「公開鍵認証」の方が 安全性が圧倒的に高いんだ
若木 しげる
例えばパスワード認証には 以下のような問題があるよ
  • 人間は長いパスワードを覚えづらい
  • 人間はランダムなパスワードを覚えづらい
  • 人間は特定の単語やフレーズなど推測されやすいパスワードを使いがち
  • 人間は「パスワードの使い回し」をしがち
若木 みどり
うっ… いくつか当てはまる ものがあるわ…
若木 しげる
ssh のようなリモート接続は 頻繁にパスワード試行の 攻撃に晒されるんだ 「公開鍵認証」 十分に長くランダムな値を鍵に使うので 突破される可能性はほぼゼロに近いんだ リモート接続をするのなら 公開鍵認証を使うことを推奨するよ
まとめ
若木 みどり
今回は公開鍵認証を 教えてもらったよ パスワード認証よりも ずっと安全に使えるとわかったよ
若木 しげる
セキュリティの分野では 「一番の弱点は人間」 と言われているんだ 特にリモート操作を使う場合は 公開鍵認証を使おう! 次回は公開鍵・秘密鍵の 作り方を説明するよ!