SSLとSSH
1. 序章
SSHとSSLは、インターネット経由で送信されるデータの暗号化と承認に使用される暗号化プロトコルです。どちらのプロトコルにも多くの共通点がありますが、目的は異なります。
このチュートリアルでは、それらについて詳しく説明し、比較します。
2. SSH
SSHは、TCP/IPネットワークを介したリモートサーバーとの接続を保護するために使用されます。端末を介してサーバーを制御できます。 これは、Telnetという名前の古いプロトコルの後継です。 Telnetとは対照的に、SSH接続は暗号化されています。 これは、マシンでのリモート作業、安全なデータ転送、リモートデータベースの管理、電子メールプロバイダーの使用など、さまざまな目的で一般的に使用されます。
SSHは、クライアントサーバーアーキテクチャまたはサーバークライアントアーキテクチャで機能します。 SSHアプリケーションとSSHサーバーの間で接続が確立されます。 SSHは、リモートサーバーに接続するための2つの認証方法を提供します。
- 公開鍵による
- パスワードまたはパスフレーズによる
それらがどのように機能するか見てみましょう。
2.1. 認証
公開鍵による認証は、暗号化非対称技術に依存しています。公開鍵と秘密鍵の2つの鍵のキーペアを使用します。
秘密鍵はクライアント側に保持され、安全に保管され、決して共有されないようにする必要があります。 データの復号化と署名に使用されます。 秘密鍵が公開されると、許可されていない人が公開鍵に関連付けられたマシンにアクセスできるようになる可能性があります。
対照的に、公開鍵は自由に共有できます。 サーバーは公開鍵を専用ファイルに保存します。 公開鍵は、関連付けられた秘密鍵のみが復号化できる方法でデータを暗号化します。 したがって、その機能を使用して、サーバーはクライアントを認証できます。 したがって、関連付けられた秘密鍵を所有するクライアントのみがサーバーへの認証を行うことができます。
この認証方法は、パスワードやパスフレーズを使用するよりも強力なレベルのセキュリティを提供します。 さらに、 SSHキーを使用すると、SSHサーバー全体にシングルサインオンメカニズムを実装する可能性があります。
認証の2番目の方法は、パスワードまたはパスフレーズを使用することです。 これは、SSHキー技術よりも単純で安全性が低くなります。 ユーザーは、複雑で十分な長さのパスワードを使用する必要があります。 そうしないと、ブルートフォースなどの一般的な攻撃に対して脆弱になるか、推測しやすくなります。 要約すると、SSH接続を認証するために両方の方法を使用できます。 公開鍵認証が主に推奨されていますが、これは最も強力なレベルのセキュリティを提供します。
2.2. 建築
SSHは3つの層で構成されています。最初の層はトランスポート層です。 暗号化、圧縮、およびデータの整合性を担当します。 さらに、それはセッションを維持します。 1時間または1ギガバイトの転送データの後、接続パラメータが再割り当てされます。たとえば、SSHキーが再度交換されます。
2つ目は認証レイヤーです。 認証層はトランスポート層の上で機能します。認証方法を提供および処理します。 つまり、サーバーに対してクライアントを認証します。 前のセクションで認証方法について説明しました。
最後は接続レイヤーです。 接続チャネルのプロパティと構成を管理します。 3つの主要なチャネルタイプがあります。つまり、 shell、direct-tcpip、、およびforwarded-tcpipです。
それでは、SSHパケットの構造を見てみましょう。
SSHパケットには5つのフィールドが含まれています。 最初の長さは、HMAC値と長さフィールド自体を除いて、パケット長をバイト単位で指定する4バイトのフィールドです。
2番目のフィールドであるパディングの長さは、ランダムなパディングの長さをバイト単位で記述します。 ペイロードフィールドには有用なデータが含まれており、サイズは可変です。
次のフィールドはパディングです。 ランダムなバイトで構成する必要があり、任意の長さです。 このフィールドの最大サイズは255バイトです。 パディングは、時間分析攻撃など、一部のタイプの脅威に対する追加の保護を提供します。
最後のフィールドはMAC(メッセージ認証コード)です。 MACは、メッセージ認証ネゴシエーションの後に計算されます。 したがって、最初はありません。
3. SSL
SSL(Secure Socket Layer)は、サーバーとエンドユーザー間で暗号化されたデータの安全な接続と転送を提供する一般的なネットワークプロトコルです。 最もよく知られているSSLプロトコルの使用法は、HTTPSプロトコルです。 たとえば、オンライン決済を行う際には、私たち全員がHTTPSを頻繁に使用します。 HTTPSを使用するWebサイトはSSL証明書で保護されています。クレジットカード番号などの機密データが攻撃や露出から保護されていることを保証します。
つまり、 SSLは、暗号化と認証のメカニズムを使用して、インターネットネットワークでのデータ送信を保護するように設計されています。
SSLを使用する主な利点は次の3つです。
- 暗号化–転送されたデータをあらゆる露出から保護します
- 認証–転送されたデータが正しいサーバーからのものであることを確認します
- データの整合性–転送中に転送されたデータが変更または失われないことを保証します
3.1. SSL証明書
SSL証明書を使用していないWebサイトを閲覧している間、データはプレーンテキストを使用して送信されます。 したがって、潜在的な攻撃者はデータを簡単に取得して読み取ることができます。 一方、SSL証明書がwwwサーバーにインストールされている場合、サーバーとクライアント(Webブラウザーなど)の間の通信は安全で暗号化されています。 さらに、認定された機関のみがSSL証明書を発行できます。
SSL証明書のワークフローは、非対称暗号化に依存しています。 前のセクションでは、その基本について説明しました。 WWWサーバーは秘密鍵を保存します。 公開鍵は、Webサイトへのアクセス中にSSL証明書を受信するクライアントと共有されます。 デジタル証明書は公開鍵を保持します。 SSLハンドシェイクと呼ばれるメカニズムを使用して接続が確立されます。
それがどのように機能するか見てみましょう:
クライアントはSSLハンドシェイクを開始します。 SSLバージョン、圧縮方法、暗号スイート、セッション関連データなど、サーバーに必要な仕様を送信します。 この初期段階は、「クライアントハロー」と呼ばれることがよくあります。
2番目のフェーズは「サーバーハロー」と呼ばれます。 その間、サーバーは双方が処理できるSSLプロトコルの最高バージョンを検証し、圧縮と暗号化の可能な方法を選択します。 次に、サーバーはその情報でクライアントに応答します。
次のステップでは、クライアントがサーバーを認証します。 したがって、サーバーのSSL証明書を検証します。 認証が成功すると、クライアントは暗号に基づいてプリマスターシークレットを作成し、サーバーの秘密鍵を使用して復号化します。次に、それをサーバーに送信します。 サーバーはそのプリマスターシークレットを受信し、秘密鍵で復号化します。 これで、両側で対称暗号化のマスターシークレットを生成できます。
最後に、双方は、今後暗号化される情報とメッセージを交換します。
3.2. 建築
SSLプロトコルのアーキテクチャを簡単に定義しましょう。 これは、4つのサブプロトコルで構成されています。 それらの最初のものはRecordプロトコルです。 転送されたデータの安全性と整合性を保証します。 一般に、データを分割し、専用のヘッダーでラップし、レコードと呼ばれるオブジェクトを作成する役割を果たします。 レコードは、暗号化、圧縮、MACコードの提供、およびTCPプロトコルを介した転送が可能です。
2番目のプロトコルはアラートプロトコルと呼ばれます。 その主な目的は、転送中に発生したエラーについて通知することです。 最も重要なものはSSLハンドシェイクプロトコルです。 これは、前のセクションで説明したSSLハンドシェイクプロセスを管理します。 最後に、ChangeCipherプロトコルがあります。 値が1つだけの単一のメッセージを保持します。 セッションの状態の設定のみを担当します。
4. SSHと SSL
SSHおよびSSLプロトコルの基本について説明しました。 それでは、それらを比較して違いを指摘しましょう。
まず、SSHプロトコルは2台のマシン間の通信を暗号化します。 その主な目的は、ネットワークを介して別のコンピューターからサーバーをリモート操作しながら、安全な通信を提供することです。 一方、SSLプロトコルは、クライアントとサーバー間の通信を暗号化します。 クライアントはほとんどの場合Webブラウザです。 SSLプロトコルの主な目的は、データ、特に機密データを攻撃や露出から保護することです。
SSHプロトコルはリモートプロトコルと呼ぶことができます。 パスワードまたは秘密鍵と公開鍵を使用した認証を提供します。 対照的に、SSLプロトコルはセキュリティプロトコルと呼ぶことができます。 通常、デジタル証明書を使用してクライアントとサーバーを認証します。 次の違いは、SSHプロトコルの動作がネットワークトンネルに依存していることです。 SSLプロトコルはデジタル証明書に基づいています。
最後に、SSLプロトコルは、オンラインバンキング、eコマース、ソーシャルメディア、ヘルスケア、および機密データを処理するその他すべてのサービスで広く使用されています。 ただし、SSHプロトコルはネットワーク業界で採用されており、端末アクセス、ファイル転送、トンネリングアプリケーション、VPNの確立などの特定の場合に使用されます。
5. 結論
この記事では、SSHプロトコルとSSLプロトコルのコア原則について詳しく説明し、それらを比較しました。 それらは機能性に関して多くの共通点があり、いくつかの違いもあります。 最も重要な違いは、それらがさまざまな目的で設計および使用されていることです。