暗号化プロトコル@アプリケーションデータの暗号化技術¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. 暗号化プロトコルの種類と扱われる階層¶
プロトコルとしての暗号化技術である『暗号化プロトコル』は、赤色で示してある。
02. 【アプリケーション層】メールデータの暗号化技術¶
S/MIME:Secure MIME¶
▼ S/MINEとは¶
暗号化ダイジェスト (デジタル署名) を含むデジタル証明書をメールに添付することによって、公開鍵の成りすましを防ぐセキュリティ技術。
▼ S/MIMEにおけるデジタル証明書¶
デジタル証明書をS/MIMEに使用する場合、特にS/MIME証明書という。
02-02. 【アプリケーション層】リモート通信/操作やファイル転送の暗号化技術¶
SSH:Secure Shell¶
▼ SSHとは¶
公開鍵暗号方式に基づく暗号化プロトコル。
公開鍵暗号方式と、公開鍵認証方式やパスワード認証方式の技術を使用して、インターネットを経由して、サーバーのリモート通信/操作を実行する。
物理webサーバーであっても、webサーバーであっても、SSH公開鍵認証によるリモート通信/操作の仕組みは同じである。
要素 | Apache MINA/SSHDの場合 | OpenSSHの場合 | Puttyの場合 | TeraTermの場合 |
---|---|---|---|---|
送信元マシン内 | - | OpenSSH | Putty | TeraTerm |
宛先マシン内 | Apache MINA/SSHD | OpenSSH | - | - |
▼ SSHポートフォワーディング (SSHポート転送)¶
ローカルマシンと踏み台サーバーのSSH公開鍵認証と、ポートフォワーディングを組み合わせることによって、外部ネットワークのプライベートネットワーク内リモートサーバーに間接的にパケットを送受信する。
*例*
このリモートサーバーが、仮想環境の場合もあり、ホストと仮想環境の接続でもSSHポートフォワーディングを使用している。
ホスト外部のパソコンから、ホスト上の仮想環境に接続したい場合、SSHポートフォワーディングを使用することによって、ホストを踏み台とした仮想環境への接続が行えるようになる。
SCP:Secure Copy Protocol¶
▼ SCPとは¶
SSHを経由して、ファイル転送を実行する。
SSHの能力をより拡張したプロトコルである。
(1)
-
クライアントは、リモート通信先のサーバーにファイル送信を命令する。
(2)
-
サーバーは、Shellを使用してSCPプログラムを起動し、クライアントにファイルを送信する。
▼ ファイルを要求する側に必要なソフトウェア¶
- WinSCP
- Filezilla
▼ ファイルを送信する側に必要なソフトウェア¶
SFTP:SSH File Transfer Protocol¶
▼ SFTPとは¶
SSHを経由して、ファイル転送を実行する。
SSHとFTPを組み合わせたプロトコルではなく、SSHの能力をより拡張したものである。
要素 | Filezillaの場合 | WinSCPの場合 |
---|---|---|
送信元マシン内 | Filezilla | WinSCP |
宛先マシン内 | - | - |
RDP:Remote Desktop Protocol (リモートデスクトッププロトコル)¶
▼ リモートデスクトップとは¶
ゲートウェイマシン上で稼働するリモートデスクトップツールを経由して、異なるネットワーク内のアプリケーションと通信する。
ローカルマシンとリモートにあるアプリケーション間でコピーアンドペーストができない場合がある。
その場合、ローカルマシンのコピーを一度リモート先にあるメモ帳などにペーストし、これを改めてコピーアンドペーストすると良い。
要素 | Chromeリモートデスクトップの場合 | Guacamoleの場合 |
---|---|---|
送信元マシン内 | Chromeリモートデスクトップ | - |
ゲートウェイマシン内 | - | Guacamole (guardを含む) |
宛先マシン (サーバー、デスクトップPC) 内 | - | - |
▼ 他の暗号化プロトコルとの組み合わせ¶
ゲートウェイマシンとさえ通信できれば、該当のアプリケーションと通信できてしまうため、ゲートウェイマシン自体へのリクエストでも暗号化プロトコル (例:VPN) を使用した方がよい。
例えば、VPNで許可されたユーザーのみがゲートウェイマシンに通信できるようにしておく。
03. 【トランスポート層】ヘッダー情報の暗号化技術¶
SSL/TLS:Secure Sockets Layer / Transport Layer Security¶
▼ SSL/TLSとは¶
ハイブリッド暗号方式に基づく暗号化プロトコル。
SSL/TLSを使用した通信では、通信の宛先にSSL証明書を設定する必要がある。
トランスポート層で、パケットペイロードのアプリケーションデータの暗号化を担う。
パケットペイロード全体を暗号化したい場合は、IPSecを使用する必要がある。
▼ 相互TLS認証 (mTLS)¶
トランスポート層で、双方向のピア認証を実施する。
通常のSSL/TLSを使用した通信では、通信の宛先のみSSL証明書を設定すればよいが、相互TLS認証では宛先のみでなく送信元にも設定が必要になる。
送信元がSSL証明書を持っていなければ、認証エラーになる。
▼ SNI (SSL/TLSの拡張)¶
宛先のサーバーに複数のSSL証明書を配置できるようになる。
従来のSSL/TLSでは、宛先のサーバーに単一のSSL証明書しか配置できなかった。
仮想ホストを使用してサーバーに複数のドメインを設定していても、SSL証明書は一つになってしまう。
各ドメインを異なるユーザーが使用するようなシステム (例:レンタルサーバー) では、ユーザーのドメインごとにSSL/TLSを分離できない。
▼ L5
〜L7
のプロトコルの暗号化¶
L5
〜L7
のプロトコル (例:HTTP、HTTPS、SMTP、DNS、POP3など) を暗号化する。
『S
』 (例:SMTPS) や『over TLS/SSL
』 (例:HTTP over TLS/SSL、SMTP over TLS/SSL) をつけて表記する。
暗号化プロトコルを使用する場合、L6
にてL7
のアプリケーションデータを暗号化/復号かする。
*例*
Chromeでは、HTTPSプロトコルの使用時にSSL証明書に不備がある (例:自己署名SSL証明書を使用している) と、以下のような警告が表示される。
04. 【ネットワーク層】ヘッダー情報の暗号化技術¶
IPsec:Internet Protocol Security¶
▼ IPSecとは¶
共通鍵暗号方式に基づく暗号化プロトコル。
ネットワーク層で、パケットペイロード全体の暗号化を担う。
SSL/TLSはアプリケーションデータしか暗号化できないため、より安全である。
例えば、リモートワーク時に、自宅PCと会社のネットワークをVPN接続するために使用される。
VPN接続されると、自宅PCからのTCPスリーウェイハンドシェイクが会社のルーターを通過するため、送信元IPアドレスが会社のものにかわる。
盗聴を防げる。
▼ IPsecによるパケットのカプセル化¶
VPN:Virtual Private Network (仮想プライベートネットワーク)¶
▼ VPNとは¶
異なるネットワーク間で安全な通信を実行するための仕組み。
異なるネットワーク内の特定のアプリケーションにのみと通信できるリモートデスクトッププロトコルよりも、広範囲に通信できる。
要素 | Fortiの場合 | OpenVPNの場合 | Zscalerの場合 |
---|---|---|---|
送信元マシン内 | FortiClient | OpenVpnClient | Zapp (クラウドZscalerのクライアントツール) |
中継VPNマシン内 | FortiGate | OpenVpn | SDPゲートウェイ (クラウドZscalerのVPNマシン) |
宛先マシン内 | - | - | - |
▼ アプリケーションデータの暗号化/復号化¶
リクエスト時、SSL/TLSプロトコルによって通信は暗号化され、接続先のネットワーク内にあるVPNゲートウェイというプロキシサーバーで復号化される。
反対にレスポンス時、VPNゲートウェイで再び暗号化され、クライアントに返信される。
接続先のネットワーク内のサーバがリクエストを受信する時、リクエストのIPアドレスはVPNゲートウェイのものになっている。
▼ クライアント証明書¶
SSL/TLSプロトコルで暗号化するために、VPNツール (例:Zscaler) が中間認証局として機能し、署名したクライアント証明書 (おそらくリーフ証明書と呼ぶ) を発行する。
このクライアント証明書をVPNのクライアント側に設定する必要がある。