k-tokitoh

2024-05-06

SSHとかSSL/TLSとか

だいぶややこしいな?と以前思って放置してたのを調べ直したのでざっくりした理解をメモする。比較的正確そうな情報を参考にしたが、仕様の確認や動作の検証などの裏とりはしておらず、不正確な恐れがある。

なお、以下はスコープ外とする。

何を実現するための技術か?

セキュリティの 3 要素は機密性/完全性/可用性。

SSH や SSL/TLS はこのうちの機密性/完全性に加えて、通信者の一方または双方の正当性の確認を行うための技術。

SSH

機密性/完全性

なぜ一時的なキーペアを利用するの?

一時的なキーペアを利用することで、AEAD に用いる共通鍵を一時的なものとして、漏洩時のリスクを抑えるため。

公開鍵の通信に介入した第三者が公開鍵を差し替えることで傍聴/改ざんされるリスクがあるのでは?

後述のユーザー認証において公開鍵の差し替えがバレる。

通信者の正当性

client の正当性 : ユーザー認証

パスワード認証方式や公開鍵認証方式などがある。以下では公開鍵認証方式について述べる。

公開鍵による認証はパスワードによる認証よりも安全なの?

以下の点で yes.

client の正当性を担保するための機密情報に関して、

なぜセッション ID に対して署名するの?

セッション ID 限りの署名とすることにより、署名が不正に流用されるリスクを抑えるため。

server の正当性 : ホスト認証

SSL/TLS

実現したいこととその方法は概ね SSH と同様。

ただし通信者の正当性については、SSH が「server を保護するための client の正当性確認に重点を置く」のに対して、SSL/TLS では「client を保護するための server の正当性確認のみ」である点が異なる。

client の正当性

SSL/TLS では対応しない。多くの場合アプリケーションのレイヤで実現される。

server の正当性

参考