SSL
セキュリティ
TLS
暗号

SSL (TLS) 対応プロトコルのリスト

御社の常時SSL (TLS) への対応はお済みですか。というわけで本稿ではRFCで標準化されているプロトコルのうち、SSL (TLS) に対応済みのものを列挙していきたいと思います。

用語の定義

本稿では、以下の用語を使います。

  • Implicit TLS (暗黙のTLS)
    TCPコネクション開始と同時にTLSセッションがいきなり始まる方式です。httpsなどはこれです。平文通信用と暗号通信用に別々のポートを割り当てる必要がありますが、そのぶん低レイテンシーを実現できます。

  • Explicit TLS (明示的TLS)
    TCPコネクションが確立すると、最初は平文で通信が始まり、そこからTLSへ移行する方式です。STARTTLSとか、そんな感じのコマンドが用意されているのがこれです。特徴としては、平文通信と暗号通信を同じポートでカバーできます。平文で始まって暗号へ切り替わるという手順を踏む分、レイテンシーは大きくなります。

  • DTLS
    TCPではなくUDP上で動くTLSです。TLS1.1に対応するDTLS1.0がRFC4347 (Google翻訳)、TLS1.2に対応するDTLS1.2がRFC6347 (Google翻訳)として定義されています。UDPですので、パケットロスすることもあるしパケット到着順序の入れ替わりもあります。ただし、UDPのくせにブロードキャストは使えません。
    本稿では特に断らない限り、暗号ポートでudpとなっているポート番号はDTLSを使っていることを指します。ただし、HTTPについては、DTLSではなくQUICを使っています。

  • SCTP
    TCPともUDPとも別の、レイヤ4(トランスポート層)のプロトコルです。RFC3286 (Google翻訳), RFC4960 (Google翻訳) で定義されています。輻輳制御や再送がサポートされますが、TCPと異なり、バイトストリーム指向ではなくデータグラム指向のプロトコルです。
    SCTP上でもDTLS (RFC6083, Google翻訳) による暗号通信が可能です。本稿では特に断らない限り、暗号ポートでsctpとなっているポート番号はDTLSを使っていることを指します。

  • DCCP
    TCPともUDPともSCTPとも別の、レイヤ4(トランスポート層)のプロトコルです。これもデータグラム指向のプロトコルです。RFC4340 (Google翻訳) で定義されます。
    DCCP上でもDTLS (RFC5238, Google翻訳) による暗号通信が可能です。本稿では特に断らない限り、暗号ポートでdccpとなっているポート番号はDTLSを使っていることを指します。

メール送受信プロトコル

メールのMTA・MUA間の通信プロトコルであるSMTP (Submission), POP3, IMAP4にはいずれもSTARTTLSコマンドが用意されていてExplicit TLSが可能ですが、それとは別にImplicit TLS用のポートもあり、両方が使われている状況です。RFC8314 (Google翻訳) では、STARTTLSよりもImplicit TLSのほうを推奨する方針が打ち出されています。

SMTP

MTA・MUA間通信 (Submission) については前述の通りです。MTA・MTA間のSMTP(ポート25)は、従来どおり平文またはSTARTTLSが使われます。

  • 平文ポート:25/tcp, 587/tcp (Submission)
  • 暗号ポート
    • Implicit TLS: 465/tcp (Submission)
    • Explicit TLS: 25/tcp, 587/tcp (Submission)
  • RFC

POP3

あまり知られていませんが、POP3にもRFC上はSTARTTLSコマンドがあってExplicit TLSが可能です。

  • 平文ポート:110/tcp
  • 暗号ポート:110/tcp (STARTTLS), 995/tcp
  • RFC

IMAP4

  • 平文ポート:143/tcp
  • 暗号ポート:143/tcp (STARTTLS), 993/tcp
  • RFC
    • RFC3501 (Google翻訳) INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1
    • RFC8314 (Google翻訳) Cleartext Considered Obsolete: Use of Transport Layer Security (TLS) for Email Submission and Access

その他Implicit TLSとExplicit TLSが両方とも使われているプロトコル

FTP

RFC4217 (Google翻訳) として標準化されているのはExplicit TLSです。Implicit TLSはポートは割り当てられていますがRFCにはなっていません。現実には、Explicit TLSとImplicit TLSの両方が使われています。

  • 平文ポート:21/tcp (ftp), 20/tcp (ftp-data)
  • 暗号ポート
    • Implicit TLS: 990/tcp (ftps), 989/tcp (ftps-data)
    • Explicit TLS: 21/tcp (ftp), 20/tcp (ftp-data)
  • RFC

LDAP

LDAPはTCP上のプロトコルですが、Active DirectoryではUDPも使うらしいです。
LDAPにもStartTLSがあってImplicit TLSとExplicit TLSの両方が使えますが、Active Directoryなどのメジャーな製品はどちらを使っているんでしょうか。知りません。というわけで、この件恐れ入りますが緩募とさせていただきます。

  • 平文ポート:389/tcp
  • 暗号ポート:389/tcp (StartTLS), 636/tcp
  • RFC

NNTP

  • 平文ポート:119/tcp
  • 暗号ポート:119/tcp (STARTTLS), 563/tcp
  • RFC

平文とImplicit TLSだけのプロトコル

HTTP

HTTPは低レイテンシーを非常に重視する世界なので、Explicit TLSのような高レイテンシー技術はもちろん使いません。また、UDP上ではQUICの導入が進みつつあります。

DNS

DNSにはクライアント・プロキシサーバー間の通信(再帰的DNSクエリー)とプロキシサーバー・オーソリティーサーバー間の通信(非再帰的DNSクエリー)がありますが、TLSで暗号化されるのは前者です。後者は従来通り平文です。

  • 平文ポート:53/tcp, 53/udp
  • 暗号ポート:853/tcp, 853/udp
  • RFC

RADIUS

RADIUSといえば普通はUDPですが、RFC上はTCPも用意されています。暗号化も、TCPのTLSとUDPのDTLSの2種類が用意されています。
平文の場合、普通のRADIUSとRADIUS AccountingとRADIUS Dynamic Authorizationそれぞれに別のポートが割り当てられていますが、TLSはそんなことはなく、ポート2083一つで全部処理します。

  • 平文ポート
    • 1812/tcp, 1812/udp
    • 1813/tcp, 1813/udp (Accounting)
    • 3799/tcp, 3799/udp (Dynamic Authorization)
  • 暗号ポート:2083/tcp (TLS), 2083/udp (DTLS)
  • RFC

Diameter

  • 平文ポート:3868/tcp, 3868/sctp
  • 暗号ポート:5868/tcp, 5868/sctp (DTLS)
  • RFC

SNMP

SNMPといえば普通はUDPですが、RFC上はTCPも用意されています。暗号化も、TCPのTLSとUDPのDTLSの2種類が用意されています。

  • 平文ポート
    • 161/tcp, 161/udp (snmp)
    • 162/tcp, 162/udp (snmptrap)
  • 暗号ポート
    • 10161/tcp, 10161/udp (snmptls)
    • 10162/tcp, 10162/udp (snmptls-trap)
  • RFC
    • RFC1157 (Google翻訳) A Simple Network Management Protocol (SNMP)
    • RFC3430 (Google翻訳) Simple Network Management Protocol (SNMP) over Transmission Control Protocol (TCP) Transport Mapping
    • RFC6353 (Google翻訳) Transport Layer Security (TLS) Transport Model for the Simple Network Management Protocol (SNMP)

Syslog

STUN, TURN

  • 平文ポート:3478/tcp, 3478/udp
  • 暗号ポート:5349/tcp, 5349/udp
  • RFC
    • RFC5389 (Google翻訳) Session Traversal Utilities for NAT (STUN)
    • RFC5766 (Google翻訳) Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)
    • RFC5780 (Google翻訳) NAT Behavior Discovery Using Session Traversal Utilities for NAT (STUN)
    • RFC7350 (Google翻訳) Datagram Transport Layer Security (DTLS) as Transport for Session Traversal Utilities for NAT (STUN)

SIP

  • 平文ポート:5060/tcp, 5060/udp, 5060/sctp
  • 暗号ポート:5061/tcp, 5061/udp, 5061/sctp
  • RFC

MPLS-in-UDP

  • 平文ポート:6635/udp
  • 暗号ポート:6636/udp
  • RFC

GRE-in-UDP

  • 平文ポート:4754/udp
  • 暗号ポート:4755/udp
  • RFC

その他

SCTP

DTLS over SCTPが RFC6083 (Google翻訳) で定義されていることは上記「用語の定義」のところで説明しましたが、それとは別に、SCTP over DTLSが RFC8261 (Google翻訳) で定義されています。

  • RFC
    • RFC8261 (Google翻訳) Datagram Transport Layer Security (DTLS) Encapsulation of SCTP Packets

。。。他にもまだまだありますが、残りは気が向いた時に書き足していきたいと思います。

リファレンス

Service Name and Transport Protocol Port Number Registry
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml