MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/25 おすすめ情報に 『 【案件】Azure AD関連の認証設計/azureの基本設計 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


公開鍵と秘密鍵を使った認証方式
profile-img
投稿者: thoriさん
投稿日:2021/09/07 12:00
更新日:
like-img
分類
技術
テクノロジー
全般
キャリア
運用・保守
投稿内容

家の中に入るにはかぎが必要なように、インターネットの世界にも似たようなセキュリティの仕組みが存在します。


共通鍵と公開鍵

共通鍵とはいわゆるスペアキーで暗号と復号でまったく同じキーを用います。

対して、公開鍵は非対称型暗号方式と呼ばれ、暗号化と復号化のカギが異なる方式となります。


秘密鍵と公開鍵

・公開鍵

公開鍵は誰にでも公開しているという意味合いで、外と通信する際に暗号化して使われるものです。秘密鍵から複雑な演算処理で公開鍵が作られます。


・秘密鍵

秘密鍵はその名の通り、外に漏らしてはいけない秘密の鍵です。

秘密鍵は一対となる公開鍵で暗号化された通信を復号するときに使います。

秘密鍵→公開鍵で作られますが、逆に公開鍵→秘密鍵で特定の秘密鍵を計算するのは数学的に不可能なので、その特性を利用して公開鍵暗号や公開鍵認証の通信が行われます。


公開鍵暗号と公開鍵認証

・公開鍵暗号

公開鍵は秘密鍵というオリジナルのカギから算出されます。

公開鍵で暗号化され、秘密鍵で復号化されます。

①受信側でキーペア(秘密鍵と公開鍵)を作成

②公開鍵のコピーを送信側に送る

③公開鍵から暗号化したデータを作成

④暗号化したデータを受信側に送る

⑤暗号化されたデータを秘密鍵で復号する


・公開鍵認証

秘密鍵で認証データを作成し、公開鍵で認証を行います。

①非認証側でキーペア(秘密鍵と公開鍵)を作成

②公開鍵のコピーを認証側に送る

③秘密鍵から認証データを作成

④認証データを認証側に送信

⑤渡された公開鍵で認証データを復号する


公開鍵の認証の仕組みを利用してホスト認証やユーザ認証が行われます。


sshコマンド

sshコマンドはリモートホストにログインしたり、リモートホスト上でコマンドを実行します。

クライアントがsshでサーバへログインする際、ホスト認証とユーザ認証が行われます。


・ホスト認証

SSHクライアントが接続先のリモートホスト(SSHサーバ)が正しいホストかどうか確認する

①クライアントからサーバにSSH接続

②サーバは自身の公開鍵をSSHクライアントに送信

③クライアントは受け取った公開鍵とSSHクライアントの「~/.ssh/know_hosts」ファイルに

 格納されているSSHサーバの公開鍵が一致したらログインする


・ユーザ認証

SSHクライアントで接続してくるユーザが正当なユーザーか確認する

ID/パスワード方式と公開鍵方式がある

①ユーザごとに「ssh.key-genコマンド」を使用してキーペア(公開鍵と秘密鍵)を作成

②ユーザの公開鍵をサーバの「~/.ssh/authorized_keys」に登録

③ユーザの公開鍵を利用できるかクライアントからサーバに問い合わせ

④サーバから返答後、クライアントは秘密鍵で署名を作成

⑤サーバはユーザの公開鍵で署名を検証し、OKであればログイン許可

サーバはauthorized_keysに登録されている公開鍵が、署名とともに送られてきた公開鍵が合致しているか確認をとります。

それがOKだったらログインが成功するという流れになります。


ホスト認証はクライアントが認証を行い、ユーザ認証はサーバが認証を行い、それぞれ主語が違います。


■参考

https://it-trend.jp/encryption/article/64-0089




コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3