御社の常時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翻訳)として定義されています。TLS1.3に対応するDTLS1.3は2022年になってRFC9147 (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
- RFC3207 (Google翻訳) SMTP Service Extension for Secure SMTP over Transport Layer Security
- RFC5321 (Google翻訳) Simple Mail Transfer Protocol
- RFC6409 (Google翻訳) Message Submission for Mail
- RFC8314 (Google翻訳) Cleartext Considered Obsolete: Use of Transport Layer Security (TLS) for Email Submission and Access
POP3
あまり知られていませんが、POP3にもRFC上はSTARTTLSコマンドがあってExplicit TLSが可能です。
- 平文ポート: 110/tcp
- 暗号ポート: 110/tcp (STARTTLS), 995/tcp
- RFC
IMAP4
- 平文ポート: 143/tcp
- 暗号ポート: 143/tcp (STARTTLS), 993/tcp
- RFC
その他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
HTTP
HTTPは低レイテンシーを非常に重視する世界なので、Explicit TLSのような高レイテンシー技術はもちろん使いません。。。と思っていたのですが、コメントでご指摘いただいた情報によると、RFC2817 (Google翻訳) というものが、あるにはあります。誰も使っていないようですが。。。
また、UDP上ではQUICの導入が進みつつあります。
- 平文ポート: 80/tcp
- 暗号ポート: 443/tcp, 443/udp (QUIC)
- RFC
平文とImplicit TLSだけのプロトコル
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
- RFC2865 (Google翻訳) Remote Authentication Dial In User Service (RADIUS)
- RFC2866 (Google翻訳) RADIUS Accounting
- RFC5176 (Google翻訳) Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)
- RFC6613 (Google翻訳) RADIUS over TCP
- RFC6614 (Google翻訳) Transport Layer Security (TLS) Encryption for RADIUS
- RFC7360 (Google翻訳) Datagram Transport Layer Security (DTLS) as a Transport Layer for RADIUS
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
Syslog
Syslogの平文ポートに514/tcpを含むかどうかは微妙な問題で、RFCでも微妙な書きっぷりになっています。IANAの番号表では、514/tcpはshell (rshのこと)に割り当てられています。514/udpの方は、間違いなくSyslogに割り当てられています。
- 平文ポート: 514/udp
- 暗号ポート: 6514/tcp, 6514/udp, 6514/dccp
-
RFC
- RFC3164 (Google翻訳) The BSD syslog Protocol
- RFC5424 (Google翻訳) The Syslog Protocol
- RFC5425 (Google翻訳) Transport Layer Security (TLS) Transport Mapping for Syslog
- RFC6012 (Google翻訳) Datagram Transport Layer Security (DTLS) Transport Mapping for Syslog
- RFC6587 (Google翻訳) Transmission of Syslog Messages over TCP
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
GRE-in-UDP
その他
SCTP
DTLS over SCTPが RFC6083 (Google翻訳) で定義されていることは上記「用語の定義」のところで説明しましたが、それとは別に、SCTP over DTLSが RFC8261 (Google翻訳) で定義されています。
。。。他にもまだまだありますが、残りは気が向いた時に書き足していきたいと思います。
リファレンス
Service Name and Transport Protocol Port Number Registry
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml