Application-Layer Protocol Negotiation
Application-Layer Protocol Negotiation (ALPN) は、Transport Layer Security (TLS) の拡張の一つである。アプリケーション層でのプロトコルネゴシエーションに関する拡張であり、セキュア通信においてアプリケーション層がどの通信プロトコルを使用するのかを決定する際に、余分なラウンドトリップタイムの発生を避け、アプリケーション層のプロトコルに依らずにネゴシエーションを行うことを可能とする。ALPNは主にSPDYおよびHTTP/2で利用されている。
2021年現在では、ALPACAと命名されたTLSにおけるクロスプロトコル攻撃の対策の1つとして、それ以外のアプリケーションプロトコルでもALPNの利用が推奨されている[1]。
標準仕様
[編集]2014年7月11日、ALPNの仕様はRFC 7301にてProposed standardとして公開されている。
HTTP CONNECTリクエストメソッドで通信を行う場合のため、ALPN HTTPヘッダーがRFC 7639で規定されている。
NPN
[編集]Next Protocol Negotiation (NPN) はかつて開発されていたALPNと同目的の拡張である。
TLSの高速化を目的としてGoogle Chromeで従来有効化されていたTLS False Startにはバージョンロールバック攻撃が可能であるなどセキュリティ上の問題があることから、Googleは新たにNPNを提唱し、Chrome 20以降ではNPNに対応しているサイトを除いてはTLS False Startを無効化した[2]。
NPNは後にALPNによって置き換えられた[3]。Google Chromeでは、バージョン51でNPNへの対応が廃止となった[4]。
サポート
[編集]ALPNは以下のライブラリでサポートされている。
- GnuTLS 3.2.0(2013年5月リリース)以降[5]
- MatrixSSL 3.7.1(2014年12月リリース)以降[6]
- Network Security Services 3.15.5(2014年4月リリース)以降[7]
- OpenSSL 1.0.2(2015年1月リリース)以降[8]
- LibreSSL 2.1.3(2015年1月リリース)以降[9]
- mbed TLS 1.3.6(2014年4月リリース)以降[10]
- SChannel 8.1 / 2012 R2以降
脚注
[編集]- ^ “ALPACA (アルパカ) - TLS の脆弱性を狙う奇妙な名前の攻撃”. Naked Security (2021年6月11日). 2023年2月10日閲覧。 “3. 可能であればApplication Layer Protocol Negotiation (ALPN) を使用すること。”
- ^ Langley, Adam (2012年4月11日). “False Start's Failure (11 Apr 2012)”. 2015年2月10日閲覧。
- ^ Langley, Adam (2013年3月20日). “» NPN and ALPN”. 2015年2月10日閲覧。
- ^ 末岡洋子 (2016年5月27日). “開発者向けの機能を強化した「Google Chrome 51」が公開”. OSDN Magazine. 2023年2月4日閲覧。
- ^ “gnutls 3.2.0”. 2015年2月10日閲覧。
- ^ “MatrixSSL - News” (2014年12月4日). 2015年2月10日閲覧。
- ^ “NSS 3.15.5 release notes”. Mozilla Developer Network. Mozilla. 2015年2月10日閲覧。
- ^ “OpenSSL 1.0.2 release notes”. The OpenSSL Project. The OpenSSL Project (2015年1月22日). 2015年2月10日閲覧。
- ^ “LibreSSL 2.1.3 released” (2015年1月22日). 2015年2月10日閲覧。
- ^ “Download overview - PolarSSL” (2014年4月11日). 2015年2月10日閲覧。
外部リンク
[編集]- RFC 7301 "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension"
- RFC 7639 The ALPN HTTP Header Field