NET // communication networks
LESSON 26 / 標準編

アプリ層プロトコルのセキュア化 ─ HTTPS・SMTPS・IMAPS・FTPS・SFTP

第12〜16回で学んだ HTTP・SMTP・POP3・IMAP・FTP は、すべて そのままでは平文 でネットワークを流れます。前回(第25回 TLS / PKI)で学んだ TLS の力を借りて、これら古典プロトコルをどう安全にするか ── ここをまとめて整理する回です。Implicit TLS(最初から TLS)と STARTTLS(平文セッションを途中から TLS に切り替え)の2方式、HTTPS / SMTPS / POP3S / IMAPS / FTPS のポート番号と歴史、メールの SPF / DKIM / DMARC、そして TLS 系列とは 系統が違う SFTP / SCP まで扱います。

学習目標

本講を終えると、以下を達成できるようになります。

本講は 第25回 TLS/PKI応用回 です。TLS の仕組み(ハンドシェイク、証明書、PKI) は前回ですでに学んだ前提で、ここでは「その TLS を 各アプリ層プロトコルにどう被せるか」というレシピ集に集中します。各プロトコルの平文版の詳細は第12〜16回で扱っています(HTTP / メール / FTP / telnet 観察)。

このレッスンの目次

01 なぜセキュア化が必要か HTTP・SMTP・POP3・IMAP・FTP は、いずれも 1970〜80 年代の… 02 Implicit TLS と STARTTLS 平文プロトコルに TLS を被せる方法は、大きく2つに分かれます。歴史的経緯と運用し… 03 HTTPS Web の世界では HTTPS (HTTP over TLS、ポート 443、Imp… 04 メール系のセキュア化 メールは TLS 化に加えて、SPF / DKIM / DMARC による送信元ドメイン認証も重要… 05 FTPS 第15回 FTP で学んだ平文 FTP に、TLS を追加したのが FTPS (FT… 06 SFTP / SCP は別系統 最大の混同ポイントを正面から取り扱います。 SFTP は FTPS と まったく別物… 07 openssl s_client で覗く 第16回 telnet で覗くアプリ層プロトコル で「telnet では TLS 越… 08 現代の運用 TLS で「経路上の暗号化と認証」は固められましたが、現代の脅威モデルにはまだ穴があ… 09 まとめ 本講の重要語句を整理 10 確認問題 理解度を問題でチェック

なぜアプリ層を「セキュア化」する必要があったか

HTTP・SMTP・POP3・IMAP・FTP は、いずれも 1970〜80 年代の 「インターネットは信頼できる学術ネットワーク」 という前提で設計されました。パスワードも本文も平文で TCP に流す 設計が当然だった時代です。1990 年代後半から商用利用が爆発し、この前提は完全に崩れました。
POINT 平文プロトコルが現代で抱える3つの脅威:
盗聴(eavesdropping)── 同じ Wi-Fi の他人がパスワードを丸見えで読める
改ざん(tampering)── 経路上の中継機が本文を書き換えても気づけない
なりすまし(impersonation)── サーバを名乗る偽の機器に騙されても判別できない

TLS(第25回)はこの3つを 「暗号化 + メッセージ認証 + サーバ認証(PKI)」 でまとめて解決するために設計されました。だから対策の基本パターンは 「既存の平文プロトコルの下に TLS を1段挟む」 ── これだけ。アプリ側の仕様は基本そのままで、TCP の代わりに TLS 越しの TCP を使うように差し替える、というだけのことです。

つながる知識: TLS が「アプリ層と TCP の間に挟まる薄い層」として機能するからこそ、同じ TLS という部品 を HTTP、SMTP、IMAP、FTP、… に使い回せます。これは 第11回 階層化 で学んだ「層分離の威力」が綺麗に効いている例です。下層を入れ替えても上層をほぼ書き換えなくて済む。

Implicit TLS と STARTTLS ─ 被せ方の2方式

平文プロトコルに TLS を被せる方法は、大きく2つに分かれます。歴史的経緯と運用しやすさから、現代は両方が並走しています。

① Implicit TLS(暗黙的)

  • 専用ポート を別に用意し、最初から TLS でハンドシェイクを始める
  • TCP 接続が確立した直後に TLS の ClientHello が来る前提
  • 例:HTTPS(443)、SMTPS(465)、POP3S(995)、IMAPS(993)、FTPS 暗黙(990)
  • 長所:仕様が単純、実装が綺麗、ダウングレード攻撃に強い
  • 短所:ポートを2つ用意する必要があり、平文版とは別物として運用

② STARTTLS(明示的)

  • 平文ポートで普通に接続し、サーバが対応していれば STARTTLS コマンドで TLS に 昇格 する
  • TLS ハンドシェイク完了後、同じ TCP 接続上で以降は暗号化セッション
  • 例:SMTP Submission(587)、SMTP MTA間(25 のオプション)、IMAP(143)、POP3(110)
  • 長所:ポート1つで平文と TLS が両立、徐々に TLS 化を進められる
  • 短所:「平文部分があるので最初の STARTTLS 自体を中間者が抑える(downgrade)攻撃」のリスク

シーケンスで比較

同じ「平文プロトコル + TLS」でも、被せるタイミングが違う ① Implicit TLS(例:HTTPS / 443) C → TCP SYN(443) ↓ TCP 確立 C → TLS ClientHello ← 即 TLS 開始 S → TLS ServerHello + 証明書 ↓ TLS 確立(暗号化開始) C → GET / HTTP/1.1 ← 暗号化済み S → 200 OK 最初から最後まで暗号化、平文部は無し ② STARTTLS(例:SMTP / 587) C → TCP SYN(587) ↓ TCP 確立 S → 220 ESMTP ← 平文 C → EHLO me S → 250-STARTTLS … C → STARTTLS ← ここで昇格要求 ↑↓ TLS ハンドシェイク C → EHLO me(再送、暗号化済み) 前半は平文、STARTTLS 後だけ暗号化

図の見方:Implicit は「TLS 専用ポート」を1つ用意して綺麗に分離。STARTTLS は「平文版とポートを共有」して同じ入り口から段階的に暗号化する。後者は移行時の互換性に強い反面、初期の平文部に「STARTTLS を消す中間者攻撃(STRIPTLS)」のリスクがあり、近年は 強制 STARTTLS(対応していない接続を即切断)で防御するのが標準。

HTTPS ─ Implicit TLS の代表例(443)

Web の世界では HTTPS(HTTP over TLS、ポート 443、Implicit)が事実上の標準になりました。1994 年に Netscape が SSL を作って Web に被せたのが始まり。現在の HTTPS は HTTP/1.1 / HTTP/2 / HTTP/3 のすべての上位バージョンで前提 です。
POINT 現代 Web で HTTPS が「事実上必須」になった3つの理由:
HTTP/2 / HTTP/3 はほぼ全ブラウザが TLS 必須 として実装(仕様上は不要だが事実上)
HSTS(HTTP Strict Transport Security)で「このドメインは HTTPS だけ使え」とブラウザに教えられる
③ Google 等が HTTPS を SEO の優遇要因 にし、ブラウザは平文 HTTP を 「保護されていない通信」と表示 するように

HTTPS のポート構成

ポート用途方式
80/tcp平文 HTTP暗号化なし(現代では多くが 443 へのリダイレクト用)
443/tcpHTTPSImplicit TLS。HTTP/1.1・HTTP/2 はこの上で動く
443/udpHTTP/3(QUIC)QUIC 自体に TLS 1.3 が内蔵 ── 詳細は 発展編 QUIC/HTTP3
HTTPS には STARTTLS 的な仕組み(HTTP Upgrade)も RFC 上は定義されていますが、ほぼ使われていません。HTTPS の世界は 「最初から専用ポート + Implicit」一択 で簡潔に統一されたのが運用上の成功要因でした。

メール系のセキュア化 ─ TLS化と送信元ドメイン認証

メールは「歴史が長い」ぶん、Implicit TLS と STARTTLS の 両方 が並存しています。さらに、通信路を暗号化するだけでは 差出人ドメインのなりすまし までは防げないため、SPF / DKIM / DMARC のような送信元ドメイン認証も組み合わせます。メール詳細回 でポート番号(25 / 110 / 143)とコマンド体系を学んだ前提で、ここでは安全化の層を整理します。

SMTP のポート3兄弟 ── 25 / 465 / 587 の使い分け

ポート用途暗号化備考
25/tcpMTA ↔ MTA(サーバ間中継)STARTTLS で日和見的(オプション)家庭の ISP では 外向き 25 番がブロック(OP25B)。現代は MTA-STS / DANE で「強制 TLS」を宣言するのが推奨
465/tcpMUA → MSA(SMTPS)常時 TLS(Implicit)古い「Submission over TLS」。RFC 8314 で公式に再認可された
587/tcpMUA → MSA(Submission)STARTTLS で TLS 化が標準現代の 標準的な投函ポート。SMTP-AUTH(認証)が必須

こぼれ話: 465 は一度 IANA から「使うな」と言われた歴史があり、その後 587 + STARTTLS が推されて主流になりました。しかし STARTTLS のダウングレード攻撃や運用上の煩雑さから、近年(RFC 8314, 2018) 465(Implicit) を再評価 し「Implicit と Submission(587) を併用するのが望ましい」とされています。一周回って Implicit が見直されたわけです。

POP3 / IMAP の TLS 版

プロトコル平文ポートImplicit TLS ポートSTARTTLS
POP3110/tcp995/tcp(POP3S)110 上で STLS コマンドで昇格可能(あまり使われない)
IMAP143/tcp993/tcp(IMAPS)143 上で STARTTLS コマンドで昇格
運用の現実: 大手プロバイダ(Gmail、Outlook、iCloud など)は もはや平文 110 / 143 を完全に閉じている ことが多く、実質的に POP3S(995) または IMAPS(993) しか使えません。さらに多くは OAuth2 認証(後述)を要求します。「telnet で 110 番を叩いて学ぶ」のはローカル / 自前サーバ限定と思っておくのが安全。

送信元ドメイン認証 ─ SPF / DKIM / DMARC

SMTP-AUTH は 「投函してきた利用者が正規ユーザか」 を見る仕組みです。一方、受信側に届いたメールが 名乗っているドメインから本当に来たのか を見るには、SPF / DKIM / DMARC を使います。たとえば「example.com から来た」と見えるメールが、実際には別の場所から勝手に送られていないかを確認するための仕組みです。

仕組み見るものDNSに置く情報得意なこと
SPF送ってきたサーバの IPそのドメインが許可する送信元 IP 範囲「このIPから出るはずか」を確認
DKIMメールについた電子署名署名を検証する公開鍵本文や主要ヘッダの改ざん検知
DMARCSPF/DKIM の結果と From: の整合失敗時の扱い方隔離・拒否などのポリシー適用
POINT SPF / DKIM / DMARC は 本文が安全か を判定するウイルス検査ではありません。主な役割は、送信元ドメインのなりすましを見抜きやすくする ことです。

受信側MTAは何を順番に見るか

  1. SPF: SMTP 接続元 IP が、MAIL FROM のドメインで許可された送信元かを DNS の TXT レコードで確認する。
  2. DKIM: メールに付いた DKIM-Signature を読み、DNS で公開鍵を取得して署名を検証する。
  3. DMARC: 利用者に見える From: のドメインと、SPF/DKIM の合格ドメインが整合しているかを見る。
  4. 最終処置: 送信ドメインのポリシーに従い、通常配送・隔離・拒否などを決める。
もっと詳しく: DMARC のポリシー

DMARC レコードは DNS の _dmarc.example.com の TXT として公開されます。代表的なポリシーは次の3つです。

DMARC は SPF または DKIM のどちらかが通り、かつ利用者に見える From: のドメインと整合していることを重視します。単に SPF だけ、DKIM だけを見るより、利用者が見る差出人表示と結びつけて判断できる点が重要です。

FTPS ─ FTP に TLS を被せた拡張

第15回 FTP で学んだ平文 FTP に、TLS を追加したのが FTPS(FTP over TLS / SSL)です。FTP の 制御接続(21)データ接続(20 / 動的) の両方を TLS で覆います。HTTPS のように専用ポートを用意した 暗黙 モードと、SMTP のように途中から昇格する 明示 モードの2種類があります。

なぜ平文 FTP をそのまま使わないのか

FTP は RFC 959 の時代の設計で、ユーザ名・パスワード・ファイル本体を 暗号化せずに 流します。学習用に telnet で観察しやすい反面、インターネット越しの本番運用では危険です。

平文 FTP の主な問題:

整理: FTP の 制御接続とデータ接続 という設計はプロトコルとして重要ですが、安全に使う話は別です。現代では「FTP の考え方を知る」と「平文 FTP を運用で使う」は分けて考えます。

明示的(Explicit、FTPES)

  • 従来通り 21/tcp の平文 で接続を始める
  • クライアントが AUTH TLS コマンドで「TLS にしてください」と要求
  • そこから TLS ハンドシェイクに切り替え、以降は暗号化
  • SMTP の STARTTLS と同じ思想

暗黙的(Implicit、FTPIS)

  • 専用ポート 990/tcp(制御)・989/tcp(データ) を使い、最初から TLS
  • 歴史的経緯で残るが、新規導入は明示モードを推奨する流れ
  • HTTPS(443)が最初から TLS なのと同じ発想

FTPS の難しさ ─ 制御接続が暗号化されると NAT/FW が悩む

平文 FTP では、NAT 機器が ALG(Application Layer Gateway) として制御接続の PORTPASV コマンドを 盗み見て データ接続のポートを事前に開けてやる、という運用がありました。FTPS では制御接続も暗号化されるので、ALG が中身を読めなくなる ── 結果、Active モードのデータ接続が NAT 越しでうまく中継されない問題が起きやすくなります。

運用上の解決策はだいたい1つに収束していて、「Passive モード固定」+「サーバ側で動的ポート範囲を狭く明示開放」+「クライアント側 NAT は問題なし」。それでも FTP は徐々に新規採用が減り、後述の SFTP や HTTPS 配信に置き換わっていきました。

SFTP / SCP ─ 名前は似ているが 系統が違う

最大の混同ポイントを正面から取り扱います。SFTP は FTPS と まったく別物 です。FTP に TLS を被せたものではなく、SSH の上に新しく設計されたファイル転送プロトコル です。
POINT 名前が似ているので混同しやすい3兄弟の正体:
FTPS(FTP over TLS) = FTP + TLS。21 / 990 番。第15回 の FTP コマンドそのまま
SFTP(SSH File Transfer Protocol) = SSH 上の 独自プロトコル。22 番。FTP とは無関係
SCP(Secure Copy) = SSH 上の シンプルなコピーコマンド。22 番。プロトコルとしては素朴

3者の比較

SFTPFTPSSCP
正式名称SSH File Transfer ProtocolFTP over TLS / SSLSecure Copy Protocol
下位プロトコルSSH(TCP 22)FTP + TLSSSH(TCP 22)
ポート22/tcp(SSH と共用)21/tcp(明示) / 990/tcp(暗黙)22/tcp(SSH と共用)
FTP との関係名前が似ているだけで 無関係FTP の 拡張(同じコマンド + TLS)無関係
認証SSH の鍵認証 / パスワードサーバ証明書(X.509) + ユーザ ID/パスワードSSH の鍵認証 / パスワード
NAT 越え1本の TCP で完結 ─ 容易制御は TLS で暗号化 ─ ALG が効かず工夫が要る1本の TCP で完結 ─ 容易
使用ツールOpenSSH の sftp、WinSCP、FileZillaFileZilla(FTPS モード)、curl、WinSCPOpenSSH の scp
現代の主流?★ 最有力(運用が楽)FTP 資産を残したい組織で利用OpenSSH では将来 deprecate の方針 [要確認]、SFTP に移行推奨

なぜ SFTP は FTPS より楽か

Q. SFTP と FTPS、どちらを選ぶべきか?

現代のファイル転送は何を選ぶか

「ファイルを送る」と言っても、配布・同期・バックアップ・クラウド連携では向いた方式が違います。生の FTP を新規に選ぶ場面はかなり少なく、次のように目的別に選ぶのが現代的です。

シナリオ候補理由
不特定多数に配布HTTPS + CDNブラウザだけで取得でき、CDN で世界に分散できる
サーバ管理者が手元から同期SFTP / rsync over SSH1本の SSH 接続で完結し、鍵認証と暗号化を使える
差分バックアップ・大量同期rsync over SSH前回との差分だけを送り、通信量を抑えられる
クラウドネイティブなアプリS3 / GCS API などHTTPS ベースで、IAM・署名付き URL・監査ログと組み合わせやすい
既存 FTP 資産を残す必要があるFTPSFTP のコマンド体系を保ったまま TLS 化できるが、NAT/FW 設定は重くなりやすい

つながる知識: 1980年代の FTP は「制御とデータを分ける」発想、1990年代以降の HTTP は「1本の接続にまとめる」発想、SSH 系の SFTP/rsync は「暗号化された1本のトンネルに入れる」発想です。プロトコルの形は、その時代のネットワーク事情をかなり正直に映します。

openssl s_client で TLS の中を覗く ─ telnet の HTTPS 版

第16回 telnet で覗くアプリ層プロトコル で「telnet では TLS 越しは見えない」と書いた理由は、TCP の上が暗号化されているから。これを「TLS だけ自動でやってもらって、その中の平文 TCP を手打ち」できるツールが openssl s_client です。OpenSSL に同梱されており、macOS / Linux / Git Bash / WSL のどこでも使えます。

基本形

# HTTPS(443)に接続して TLS の中を平文として開く
$ openssl s_client -crlf -connect example.com:443

(TLS ハンドシェイクのログがズラっと流れた後…)
GET / HTTP/1.1
Host: example.com

(空行)
HTTP/1.1 200 OK
...

-crlf オプションは「Enter キーを CRLF に変換」するためのもの。telnet と同じ感覚で HTTP を打てます。

STARTTLS 版(SMTP / IMAP / POP3)

STARTTLS で昇格するタイプのサーバには、-starttls オプションで「最初の STARTTLS までを openssl が代行」してくれます。

# SMTP Submission(587)を STARTTLS で TLS 化して開く
$ openssl s_client -crlf -starttls smtp -connect smtp.example.com:587

# IMAP の STARTTLS
$ openssl s_client -crlf -starttls imap -connect imap.example.com:143

# POP3 の STLS
$ openssl s_client -crlf -starttls pop3 -connect pop.example.com:110

# FTP の AUTH TLS(明示モード)
$ openssl s_client -crlf -starttls ftp -connect ftp.example.com:21

証明書を確認する用途にも便利

# 期限・SAN・発行者などを取り出す
$ openssl s_client -connect example.com:443 -servername example.com </dev/null \
    | openssl x509 -text -noout

サーバ証明書のフィールドが読めるので、X.509 の中身(第25回で学んだ Subject、SAN、Issuer、有効期限) を実物で確認できます。本物の運用調査でもよく使う手筋です。

SNI 注意: 同じ IP に複数のサイトが共存する現代では、-servernameSNI(Server Name Indication) を明示しないと違うサイトの証明書が返ってくることがあります。HTTPS の Host ヘッダと同じ理屈で、TLS にも「どのサイト宛て?」のヒントを乗せる必要がある。

現代の運用 ─ TLS だけでは守れない領域を埋める

TLS で「経路上の暗号化と認証」は固められましたが、現代の脅威モデルにはまだ穴があります。それを埋めるための追加プロトコル / ヘッダ / 規格が、最近の標準化の主戦場です。

HSTS(HTTP Strict Transport Security)

サーバが応答ヘッダで Strict-Transport-Security: max-age=31536000; includeSubDomains と宣言すると、ブラウザは 「このドメインは今後1年間、HTTP を試さず必ず HTTPS で接続する」 と覚えます。STRIPTLS 攻撃やリダイレクト経路の盗聴を封じる効果があります。Chrome / Firefox には HSTS preload list という「最初から HSTS 扱いするドメイン名簿」もあり、Google / GitHub などはここに登録済み。

MTA-STS / DANE(メール送信の TLS 強制)

メール MTA 間(25/tcp + STARTTLS)は、相手サーバが STARTTLS に対応していなければ 平文に落ちる ── これが昔から悩みでした。MTA-STS(RFC 8461)はサーバ側が DNS と HTTPS で「私の MX は必ず TLS で来てね」と宣言する仕組みで、対応 MTA は STARTTLS 失敗時に 送信そのものを中止 します。DANE(DNSSEC + TLSA レコード)も同種の TLS 強制策ですが、DNSSEC が前提となるため普及は MTA-STS よりやや遅め。

OAuth2(SMTP/IMAP の認証強化)

大手メールプロバイダ(Gmail、Outlook 365 など)は、SMTP-AUTH や IMAP のパスワード認証から OAuth2 アクセストークン 認証への移行を進めています。背景は (1) パスワードを各クライアントに保存させたくない、(2) 段階的なアクセス権限管理(スコープ)、(3) 多要素認証(MFA)との統合容易性。telnet で対話できる SMTP-AUTH PLAIN とは別世界の認証フローになっています。

HTTPS Everywhere の文化

2010 年代後半から、ブラウザベンダ・SEO・Let's Encrypt(無料証明書) の3つが噛み合って、「個人サイトでも HTTPS が当たり前」 という空気が一気に作られました。Mozilla の HTTPS-Only Mode、Chrome の 「HTTPS にアップグレードを試行」 設定など、ブラウザは 平文への回帰を能動的に阻止 する方向に進化しています。

まとめと用語チェック

SUMMARY 1. アプリ層の古典プロトコルは そのままでは平文。盗聴・改ざん・なりすましの脅威に弱い
2. TLS を被せる方法は2つ:Implicit TLS(専用ポートで最初から)/ STARTTLS(平文セッションを途中から昇格)
3. HTTPS(443)は Implicit 一択で綺麗にまとまった成功例。HTTP/2・HTTP/3 はほぼ TLS 必須
4. メール系は両方並存:SMTPS(465 / Implicit)・SMTP+STARTTLS(587)、POP3S(995 / Implicit)、IMAPS(993 / Implicit)
5. メールの送信元ドメイン認証は SPF / DKIM / DMARC。TLS は経路、SPF/DKIM/DMARC は「名乗っているドメインらしさ」を見る
6. FTPS は FTP + TLS(明示=21、暗黙=990)。NAT/FW との相性問題があり新規導入は減少
7. SFTP は FTPS と別物。SSH ファミリーで 22 番、1本接続で完結。新規構築の最有力
8. ファイル配布は HTTPS + CDN、同期やバックアップは SFTP / rsync over SSH、クラウド連携はストレージ API を選ぶのが現代的
9. openssl s_client は telnet の HTTPS 版。-starttls オプションで昇格型にも対応
10. TLS だけでは塞げない領域(ダウングレード攻撃・MTA 間平文・パスワード)は HSTS / MTA-STS / DANE / OAuth2 で補強する流れ

用語チェック

用語1行説明
Implicit TLS専用ポートで最初から TLS。例:HTTPS 443、SMTPS 465、IMAPS 993、POP3S 995、FTPS 暗黙 990
STARTTLS平文セッションを途中で TLS に昇格させるコマンド。例:SMTP 587、IMAP 143、FTP 21
HTTPSHTTP over TLS。443/tcp。HTTP/2・HTTP/3 ではほぼ前提
SMTPS / SubmissionSMTPS=465(Implicit)、Submission=587(STARTTLS)。両方並存
POP3S / IMAPS995 / 993。Implicit TLS の POP3 / IMAP
SPF送信元 IP が、そのドメインから送ってよいサーバかを DNS の TXT レコードで確認する仕組み
DKIMメールについた電子署名を DNS 上の公開鍵で検証し、本文や主要ヘッダの改ざんを見つける仕組み
DMARCSPF/DKIM の結果と利用者に見える From: の整合を見て、失敗時の扱い方を決める仕組み
FTPS(明示・暗黙)明示=21 で AUTH TLS、暗黙=990 で最初から TLS
SFTPSSH File Transfer Protocol。22/tcp、SSH 上の独自プロトコル。FTPS とは別物
SCPSSH 上の素朴なコピーコマンド。22/tcp。OpenSSH では SFTP 経由への移行推奨
rsync over SSH差分転送を SSH で暗号化して行う同期方式。バックアップやサイトミラーで使いやすい
HTTPS + CDN不特定多数へのファイル配布で主流。ブラウザで取得でき、CDN で負荷分散できる
openssl s_clientTLS の中の平文を手打ちで観察できる CLI。telnet の TLS 版
SNITLS ハンドシェイクで「どのサイト宛て?」をサーバに伝える拡張。HTTPS 仮想ホストで必須
HSTS「このドメインは今後 HTTPS のみ」と宣言する応答ヘッダ。STRIPTLS 攻撃を封じる
MTA-STS / DANEメール MTA 間の STARTTLS を強制する仕組み(DNS 経由で宣言)
OAuth2(メール)パスワードでなくアクセストークンで SMTP/IMAP を認証する現代型方式
NEXT: 次回(第27回)は同じセキュリティ系の応用、ファイアウォール / IDS / IPS / WAF を扱います。「経路上で暗号化されている」TLS と、「どのフローを通すか」を判定するファイアウォールは、現代では協調しながらネットワークを守ります。 第27回 ファイアウォール へ。

確認問題

問1. Implicit TLS と STARTTLS の違いとして最も適切なものを1つ選べ。

次の選択肢から最も適切なものを選択してください。
A. Implicit TLS は TCP 不要で、STARTTLS は TCP の上で動く
B. Implicit TLS は専用ポートで最初から TLS、STARTTLS は平文ポートで接続後にコマンドで TLS に昇格する
C. Implicit TLS は HTTP 専用、STARTTLS は SMTP 専用
D. どちらも UDP の上で動く新しい仕組み
正解:B
Implicit は HTTPS(443)・SMTPS(465)・IMAPS(993)・POP3S(995)・FTPS 暗黙(990) のように 専用ポート + 最初から TLS。STARTTLS は SMTP Submission(587)・IMAP(143)・POP3(110)・FTP(21) のように 平文ポートで接続後にコマンドで TLS に昇格。A・C・D は明確に誤り。

問2. SFTP と FTPS の関係として最も適切なものを選べ。

次の選択肢から最も適切なものを選択してください。
A. 同じプロトコルの別名で、ポートも 21/tcp で共通
B. SFTP は FTPS の旧称で、現代は使われない
C. どちらも FTP に TLS を被せた拡張だが、ポートが違う
D. 別物。SFTP は SSH 上の独自プロトコル(22/tcp)、FTPS は FTP に TLS を被せた拡張(21 / 990 番)
正解:D
最大の混同ポイント。SFTP は SSH(22/tcp) の上で動く 新しい設計のファイル転送プロトコル で、FTP コマンド体系とは無関係。FTPS従来 FTP のコマンド体系をそのまま残し、TLS で覆う 方式。両者は「セキュアなファイル転送」という目的が同じなだけで、プロトコル系統も標準化団体も別。

問3. SMTP の3つのポート(25 / 465 / 587)に関する記述として最も適切なものを選べ。

次の選択肢から最も適切なものを選択してください。
A. 25 は MTA 間中継、465 は Implicit TLS の Submission、587 は STARTTLS で TLS 化する Submission
B. 3 つとも MTA 間中継用で、暗号化の有無だけが違う
C. 25 と 587 は廃止され、現代は 465 のみが使われる
D. 587 は POP3、465 は IMAP のセキュア版である
正解:A
25: MTA ↔ MTA(サーバ間)、家庭からは OP25B でブロック、STARTTLS は日和見(オプション)。465: MUA → MSA(SMTPS)、Implicit TLS。587: MUA → MSA(Submission)、STARTTLS で TLS 化が標準。RFC 8314(2018) 以降、465 と 587 は両方並走推奨。

問4. openssl s_client -starttls smtp -connect host:587 はどんな動作をするか。

次の選択肢から最も適切なものを選択してください。
A. 587 番ポートに最初から TLS で接続し、TLS 上で SMTP コマンドを打てるようにする
B. SMTP のメールを開封したかどうかをサーバに問い合わせる
C. 587 番ポートに 平文で接続し、EHLO 〜 STARTTLS までを openssl が代行 し、その後 TLS 越しに SMTP コマンドを打てるようにする
D. SMTP サーバの証明書を破棄する
正解:C
587 番は STARTTLS で昇格するタイプのポート。-starttls smtp を付けると openssl が「平文接続 → EHLO → STARTTLS コマンド送信 → TLS ハンドシェイク」までを自動代行し、ユーザは TLS 確立後の暗号化セッション内 で SMTP コマンドを手打ちできる。Implicit ポート(465 / 993 / 995)に対しては -starttls 不要で -connect だけで OK。

問5. HSTS(HTTP Strict Transport Security)の役割として最も適切なものを選べ。

次の選択肢から最も適切なものを選択してください。
A. HTTPS の TLS ハンドシェイク回数を減らすキャッシュ機構
B. サーバが「このドメインは今後一定期間 HTTPS のみで接続せよ」とブラウザに宣言し、平文 HTTP への回帰や STRIPTLS 攻撃を封じる
C. 証明書の失効情報をクライアントが取得するためのプロトコル
D. HTTP/2 を必ず使わせるためのオプション
正解:B
HSTS はサーバが応答ヘッダ Strict-Transport-Security: max-age=...; includeSubDomains で宣言し、ブラウザがそれを覚えて 「以後このドメインは HTTPS でしかアクセスしない」 ことを強制する仕組み。STARTTLS のダウングレード(STRIPTLS)や、ブックマークされた http:// URL からの平文接続を防ぐ。
← PREV
第25回 TLS と PKI
NEXT →
第27回 ファイアウォール・IDS/IPS