技術要素 - 11.セキュリティ - 5.セキュリティ実装技術 - 1.セキュアプロトコル

Last Update : January 02 2021 16:00:29

     

a. セキュアプロトコル

セキュアプロトコルとは、通信経路上のセキュリティを確保しながら通信を行うためのプロトコル。
インターネットの通信機構はOSI 基本参照モデルに基づき構築されている。各層でそれぞれ独立したいくつかのセキュアプロトコルが規定されている。それらのセキュアプロトコルは、位置する通信層より上位層の通信内容に対して通信のセキュリティを保証する。IPsec, TLS, SSH はそうしたセキュアプロトコルのなかでも特に代表的なもので、広く普及しているものである。


IPSec
IPsec はネットワーク層において通信セキュリティを保証するプロトコルである。そのため、上位層に位置するアプリケーションの種類に依存せず、全てのアプリケーション通信は透過的に通信セキュリティを確保することができる。
IPsec は、通信送信元の認証、通信の暗号化、メッセージ認証、トンネリングによる安全な通信路の構築の機能を提供する。
IPsec では、暗号化機能とメッセージ認証機能によってIP パケット全体か、パケット中に格納されているデータ部分を保護する。
IPsec による通信には、トランスポートモード とトンネルモード がある。

  • トランスポートモード
    ホスト間でIPsec パケット出力処理とIPsec パケット入力処理を行うもので、このときIPsec暗号化、復号化処理が送信・受信ホストで行われるならば、ホスト間トランスポートIPsec 通信となる。この場合は、それぞれのホストがIPsec 実装を備えることが必要となる。トランスポートモードでは、IPパケットで運ぶデータ部分のみを暗号化し、これにあて先などを指定したIPへッダを付けて送信をする。

  • トンネルモード
    ホスト間にセキュリティゲートウェアを挟み、セキュリティゲートウェイが、IPsec パケット出力処理とIPsec パケット入力処理を行うものである。このときはホストにはIPsec 実装は必要ない。これらの処理はIPsec サブプロトコルによって実現されている。トンネル・モードでは、ほかのホストからいったん受信したIPへッダとデータ部分を合わせたものをまとめて暗号化したうえで、新たに相手先のセキュリティゲートウェイ宛のIPへッダを再度つけ直して送信を行う。

TLS / SSL 】 (Transport Layer Security ) (Secure Socket Layer)
SSL(Secure Socket Layer) は Netscape Communications 社が提案するセキュリティプロトコルであり、暗号化、 認証、 完全性(改竄防止)を提供する。
TLSはトランスポート層での安全な通信を実現するためのセキュアプロトコルとして標準化したものである。 TLSは、トランスポート層プロトコルTCP とアプリケーション層プロトコルの間で動作するセキュアプロトコルで、HTTP, SMTP, POP3, IMAP などのTCP を利用するアプリケーションに対して安全な通信を提供する。TLS は、データ送信元の認証、データの暗号化、メッセージ認証の機能を提供することによりセキュリティを実現する。TLS を使用するには、アプリケーションのサーバプログラムとクライアントプログラムの両方がTLS に対応する必要がある。
TLS 通信を有効にするには、サーバプログラムが通常のTCP 通信とは異なるポート番号で待ち受けする方式と、サーバプログラムは通常のTCP 通信と同じポートでアプリケーションからの通信を受信して、その後、TLS を利用する通信へ遷移する方式がある。
TLS によるセッション通信は、DES,RC4,RC2,3DES などの秘密鍵暗号方式を利用する。これらの暗号で利用される秘密鍵をクライアント・サーバで共有するために、鍵交換アルゴリズム(TLSハンドシェイクプロトコル) が提案されている。また、メッセージの保護のためにMD5 やSHA-1といったハッシュ関数を使ってのメッセージダイジェストの計算も行う。鍵交換には、RSA やDiffie-Hellman などの公開鍵暗号が利用される。公開鍵や証明書の交換には、X.509 形式が利用される。
TLS は上位層と下位層の2つの通信層に分けて考えることができる。
上位層は「警告プロトコル」、「アプリケーションデータ・プロトコル」、「暗号仕様変更プロトコル」、「ハンドシェイクプロトコル」からなり、これらは総合してTLS ハンドシェイクプロトコルと呼ばれる。
下位層に位置するサブプロトコルが「レコードプロトコル」である。上位層のTLS ハンドシェイクプロトコルは通信相手の認証やセッション確立後、安全な通信を行うための暗号方式と秘密鍵の合意を行い、下位層はTLS ハンドシェイクプロトコルによって確立された暗号方式と秘密鍵を用いてセッション通信における通信内容の秘匿と認証を行う

SSH
SSH (Secure SHell) は、TCP のポート22 番を利用するセキュアプロトコルで、クライアント-サーバ間における通信の安全性を確保するために利用されている。ユーザから見れば、OSI 参照モデルのアプリケーション層に位置する。
SSH では、ユーザ認証や安全な通信、安全なクライアント-サーバ間通信路の確立、これらのために公開鍵暗号を始め種々の暗号技術を利用する。SSH を利用することで通信内容の秘匿、通信元・通信先の認証、通信内容の保証を行うことができる。
SSHは、ポートフォワーディングと呼ばれる、他のアプリケーションに対して暗号通信路を提供する機能を持ち、他のアプリケーションはその通信路を利用することで安全に通信を行うことができる。
SSH プロトコルはSSH トランスポート層プロトコル、SSH ユーザー認証プロトコル、SSH コネクションプロトコルの3層のサブプロトコルから構成される。

  • SSH トランスポート層プロトコル
    SSH トランスポート層プロトコルはTCP など信頼性のあるトランスポート層プロトコルの上で動作し、サーバの認証や、データの機密性・完全性を保証しながら通信を行う。また、通信データの圧縮機能も有する。
  • SSH ユーザー認証プロトコル
    サーバがクライアントのユーザーを認証することを可能にするためのプロトコルである。このプロトコルはSSH トランスポート層プロトコル上で動作する。
  • SSH コネクションプロトコル
    SSH コネクションプロトコルは、SSH ユーザー認証プロトコル上で動作し、他のアプリケーションに対して提供する複数の暗号化通信路を論理チャンネルとして多重化することを可能とする。

SSH では以下の要領で通信を行います。

  1. 初めて接続するサーバなら、クライアントはサーバからそのホスト公開鍵を受けとり、鍵リストに加える。
  2. クライアントは、適当なデータを鍵リストにあるホスト公開鍵で暗号化してサーバに送り、サーバは自分のホスト秘密鍵で復号化して返す。クライアントは、送信したデータと返信が一致すればサーバを正しいと認める。(ホスト認証成功)
  3. ホスト認証終了と同時に、サーバ・クライアント間の通信を暗号化する共通鍵が生成され、以降の通信は全てこの共通鍵で暗号化する。
  4. ユーザは「パスフレーズ」を入力する。パスフレーズは、暗号化されて記録されているユーザ秘密鍵を復号化し、使えるようにする。
  5. サーバは、適当なデータをユーザ公開鍵で暗号化してクライアントに送り、クライアントはユーザ秘密鍵で復号化してサーバに返す。サーバは送信したデータと返信が一致すればユーザを正しいと認める。 (ユーザ認証成功)



     

www.it-shikaku.jp