How Bona! : Pythonで学ぶRSAを利用したユーザー認証

キーワード:Python,RSA, SSH,チャレンジ・レスポンス認証,公開鍵・秘密鍵

公開鍵と秘密鍵


「金庫」と「鍵」

大事な「書類」を送ってもらうとき,まず,「金庫」を送って,「金庫」の中に「書類」を入れてもらい,金庫をロックして,返信してもらう.
そして,受け取った金庫を「鍵」で開けて,無事「書類」が手に入る.
ポイント:
・「金庫」は「鍵」があれば開けられる
・「金庫」は「鍵」がないと開けられない
・「金庫」からは「鍵」を作られない


公開鍵と秘密鍵

「平文」は「公開鍵」を使って「暗号化」されて「暗号文」となる.
「暗号文」は「秘密鍵」を使って「復号」されて「平文」に戻せる.
ポイント:
・「公開鍵で暗号化された暗号文」は「秘密鍵」を知っていれば,「復号」できる
・「公開鍵で暗号化された暗号文」は「秘密鍵」を知らなければ,「復号」できる
・「公開鍵」からは「秘密鍵」を作られない

「公開鍵」は公開して誰に見られても良い.一方,「秘密鍵」は利用者以外には秘密にしておかなければならない.


安全な情報伝達

「公開鍵」は誰に見られても良いので,そのまま送り手に送る. 送り手は,「平文」を「公開鍵」で「暗号化」する. 暗号化された「暗号文」を受け手に送る.暗号化されているので,「秘密鍵」が無ければ復号できない. 受け手だけが知っている「秘密鍵」を用いて,「暗号文」を「復号」し,「平文」を安全に受け取ることができる.


RSAを利用すると上記の仕組みを実現することができる.
RSAの基礎と仕組み
QLOOKアクセス解析