このセクションでは、SSH ファイル送信プロトコル (「SFTP」) を FTP over SSL (「FTPS」) と比較します。
名前は似ていますが、SFTP (SSH ファイル送信プロトコル) は、FTP over SSL (FTPS) とはまったく異なるプロトコルです。SFTP はファイル送信コマンドのセットを含む SSH で構成され、FTPS はセキュリティの方法に追加された SSL を含む従来の FTP プロトコルです。
SFTP では、設置時にセキュアシェルプロトコル (SSH) を使用します。また、ユーザーコマンドの特定のセットと一緒に組み込みの伝送中セキュリティ用に SSH を活用します。これらのコマンドを使用してユーザーは、SSH プロトコルに設計されたすべてのセキュリティとともに、FTP を使用する場合と同じように、ファイルを送信することができます。
MOVEit Transfer では、SFTP のドラフト標準であるリビジョン 3 (「バージョン 3」とも呼ばれる) を実装しています。
IETF 標準/ドラフト標準 |
概要 |
メモ |
SSH (RFC 4251) |
保護されていないネットワークを通じてセキュアに通信するために使用されるプロトコル。(SFTP で、「S」は SSH プロトコルを示します。) SSH は、暗号化された通信の業界標準です。 |
MOVEit Transfer SSH では、よりセキュアで広く使用されているバージョン、SSH、SSH2 (バージョン 2.x) をサポートしています。 SSH では、データとコマンドの両方で単一の接続チャネルを使用します。この特性は、ファイアウォールを通過する場合に最適なものとなります。 |
SFTP (SSH ファイル転送プロトコル) |
SSH のセキュリティを備えた FTP のようなユーザー機能。 |
SFTP は事実上、セキュアなファイル送信のインターネット標準です。 MOVEit Transfer では、SFTP のドラフト標準であるリビジョン 3 (「バージョン 3」とも呼ばれる) を実装しています。これには、ドラフト 00、ドラフト 01、ドラフト 02 のファイル送信機能が含まれます。 |
SSH2 プロトコルは IETF Community を通じて RFC を既に定着していますが、その上に設置される SFTP プロトコルには、さまざまなモデルの使用をサポートするため定期的にリビジョンが依然として加えられています。これらのドラフト拡張の一部は、以前のドラフトバージョンと互換性のない機能が含まれています。MOVEit Transfer では、早期に広範囲にわたって導入された SFTP (バージョン 3) の機能セットを実装しています。
FTPS では、伝送中のセキュリティを追加するため、SSL/TLS とともに実行される従来の FTP が記述されています。
IETF 標準/ドラフト標準 |
概要 |
メモ |
FTP (RFC 959) |
ファイル送信プロトコル (固有セキュリティなし) |
FTP は正式なインターネット標準です。 |
FTPS |
FTPS は SSL の最新の発展 (「TLS」) として最も広く呼ばれている、セキュアソケットレイヤープロトコル (RFC 2246) を追加します。 |
FTP では、コントロール (コマンド) とデータで個別のチャネルを使用します。通常、データチャネルでは、ポート範囲からランダムで取得されたポートを使用します。この理由のため、厳しいファイアウォールを通過する際は必ずしも最善なソリューションであるわけではありません。 |
SFTP セッションは、コマンドと応答の一連のパケットで構成されています。各パケットは、整数のコマンドコードと応答コードを含む、構造化バイナリ情報からなります。コマンドは、Open()、Read()、Write()、Close() などのファイルシステム I/O ルーチンに対応します。例えば、ファイルをダウンロードする場合、SFTP クライアントは、Open コマンド 1 つ、多数の Read コマンド、Close コマンド 1 つを順に実行してファイルを開く必要があります。
それとは対照的に、FTP と FTP over SSL は、CR LF で区切られた ASCII コマンドを使用します。例えば、ファイルをダウンロードする場合、クライアントは「PORT」または「PASV」コマンドを送信してデータ接続を確立してから、「RETR」コマンドを送信してファイル名を指定します。
SSH は、あらゆるタイプの接続に単一の TCP ポート番号 (通常はポート 22) を使用します。一方、SSL は用途ごとに異なるポート番号を使用します。例えば、ポート 443 は一般的に HTTP over SSL に使用され、ポート 990 は FTP over SSL のバージョンの 1 つに使用されます。さらに、FTP では、ファイル送信のたびに新しいポートで新しい接続が確立されるため、ファイル送信時に複数のポート番号が必要となります。
ポート 22 はあらゆる SSH サービスで使用されるため、複数の SSH サーバー製品を同じコンピューター上で実行することは多少困難です。ただし、MOVEit Transfer を実行しているシステムの場合、これが問題となることはめったにありません。さらに重要なこととして、ポート 22 は SFTP に必要な唯一のポートであるという意味で (個別のデータポートは不要)、SFTP は FTP over SSL よりも「ファイアウォールフレンドリー」なプロトコルであると言えます。
SSH と SSL はいずれも、公開キー暗号方式を使用してセッションキーを交換します。交換したセッションキーは、ネットワーク経由で転送されるコマンドとデータを暗号化するために使用されます。SSH によって使用されるアルゴリズムのセキュリティは、SSL によって使用されるものと似ています。ただし、SSH は証明機関 (CA) の概念をサポートしていません。
SSL には証明書が必要です。証明書は通常、www.thawte.com などの証明機関から購入されます。証明書は、サーバーが本物であることを保証します。SSH では、各サーバーが独自の公開キーを作成するという、SSL とは異なるアプローチを採用しています。SSH サーバーが本物であることを保証する、信頼された証明機関はありません。この不足を補うため、各 SSH クライアントは、接続したことのある各サーバーの公開キーを記憶するようになっています。2 回目以降の接続試行の際にサーバーが前回と異なる公開キーを提示した場合、SSH クライアントは、SSH サーバーが元のサーバーを偽装した敵対的サーバーである可能性があることをユーザーに警告します。
これらの相違点のため、FTP over SSL (FTPS) サーバーには、SSH/FTP (SFTP) サーバーよりも管理しにくいという側面があります。ただし、より高度な認証方法のおかげで、FTPS サーバーの方が多少安全性に優れています。