TLS Working Group TLS Pathsec Protocol Joseph Hui
INTERNET-DRAFT Digital Island
Expires March, 2002 September, 2001
Intended Category: Standards track
TLS Pathsec Protocol
<draft-ietf-tls-pathsec-00.txt>
Status of this Memo
This document is an Internet-Draft and is subject to all provisions
of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet- Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
Hui Expires: March 2002 [Page 1]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
Abstract
The TLS Pathsec Protocol (or Pathsec Protocol in short) extends the
TLS protocol into securing data in transit not only between two end
points, but also between the intermediaries en route, based on TLS
1.0 with appropriate extensions that include injecting source routing
policies above the Transport layer.
A typical Pathsec session comprises several sub-sessions, each of
which is a TLS session with Pathsec extended semantics. It involves a
client, a server, one or more intermediaries, and three individually
secured channels for data and signal transports.
Integral to the Pathsec protocol are audit and opt-out features. The
client or the server may selectively monitor the fidelity of the data
arriving at the destination after (the data) having undergone
purposed transformations performed by authorized and authenticated
intermediaries designated in a routing metric; and if either end
point finds the data exceedingly distorted, it may opt out
gracefully.
Hui Expires: March 2002 [Page 2]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
Table of Contents
1 Introduction .......................................... 4
1.1 Venue of Discourse .................................... 5
2 Terminology ........................................... 6
2.1 Key Word Convention ................................... 8
2.2 Data Type Convention .................................. 8
3 Pathsec Session ....................................... 9
3.1 Pathsec Main Channel ................................. 12
3.2 Pathsec Outbound Channel ............................. 12
3.3 Pathsec Inbound Channel .............................. 14
3.4 Pathsec Routing Metrics .............................. 14
3.4.1 Pathsec Strict Source (and Record) Routing ........... 17
3.4.2 Pathsec Loose Source (and Record) Routing ............ 18
3.5 Pathsec Extended TLS ClientHello/ServerHello ......... 21
3.6 Pathsec Extended TLS Alert ........................... 21
3.6.1 Pathsec Signals ...................................... 23
3.7 Pathsec Set-up ....................................... 30
3.8. Pathsec In-session ................................... 31
3.8.1 Pathsec Verify ....................................... 31
3.8.2 Pathsec Audit ........................................ 32
3.8.3 Pathsec Opt-out ...................................... 33
3.9 Pathsec Tear-down .................................... 33
3.10 Pathsec Close ........................................ 33
3.11 Pathsec Re-open ...................................... 33
4 Pathsec Extensions to TLS ............................ 34
5 Application Considerations ........................... 34
6 Security Considerations .............................. 34
6.1 Compromised Private Key .............................. 35
6.2 Compromised Sub-session Key .......................... 35
6.3 Compromised Master Secret ............................ 35
6.4 Compromised Pre-Master Secret ........................ 36
6.5 Ciphersuite Degradation .............................. 36
6.6 Perils of Sharing Master Secret Across Channels ...... 36
6.7 Intermediary Weakness ................................ 36
6.8 Remote Execute ....................................... 37
7 Internationalization Considerations .................. 37
8 Intellectual Property Rights ......................... 38
9 Acknowledgments ...................................... 38
10 References ........................................... 39
11 Author's Address ..................................... 40
Hui Expires: March 2002 [Page 3]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
1 Introduction
This document describes the TLS Pathsec Protocol (or Pathsec Protocol
in short) which extends the TLS protocol into securing data in
transit not only between two end points, but also between the
intermediaries en route.
Based on TLS 1.0 [TLS1] with extensions defined in [TLSX] and
inspired by IP source routing [IP,STEVENS,XMPR], Pathsec in general
emulates the well established end-to-end model, with augmentation for
injecting routing policy necessary for traversing designated
intermediaries where data may undergo authorized transformation.
Thus Pathsec, with security and robustness being the paramount goals,
embeds no more intelligence than what is necessary for securing the
payloads entrusted by both the client and its server during a secured
session. For example. In a Pathsec session, Pathsec uses routing
metrics for specifying the hops between end points and the orders of
traversal; but the construction of the metrics, such as by
provisioning or by discovery, is outside the scope of Pathsec.
Pathsec is designed to be well suited for the request-response
computing model where a client, a server, and zero or more
intermediaries dot a linear processing path. Finite loops in a
processing path are permissible, as they can be unfolded to form a
linear pattern in Pathsec Routing Metrics.
A typical Pathsec session comprises several sub-sessions, of which
each is a TLS session with Pathsec extended semantics. It involves a
client, a server, one or more intermediaries, and three individually
secured channels for data and signal transports. The server and all
intermediaries are individually authenticated according to the TLS
protocol.
Integral to the Pathsec protocol is an audit feature that allows the
client or the server to selectively verify the fidelity of the data
arriving at the destination. The feature is based on a "trust-but-
verify" principle, for monitoring whether the extent of data
distortion, which is the direct result of well-intended
transformations performed by authorized and authenticated
intermediaries designated in a routing metric, is within the limits
of tolerance.
Also integral to the Pathsec protocol is an opt-out feature that
allows the client or the server, during a session, at unilateral
discretion, gracefully, to opt out of Pathsec mode and switch into
the conventional TLS mode, or to opt out of the session entirely,
i.e. to abort the session in progress.
Hui Expires: March 2002 [Page 4]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
Not unlike TLS or any cryptosystem, a Pathsec session is susceptible
to catastrophic failure in the face of attacks aided by, for
instance, compromised session key, compromised private key,
compromised master secret, compromised pre-master secret, or security
negligence.
As a Pathsec session involves more hops than a conventional TLS
session does, it inevitably presents a larger target for attackers,
even though all hops are meant to be equally securable by design;
thus, it is imperative that Pathsec practitioners (in implementation
and in deployment) abide by the specification in strictest adherence.
It is conceivable that Pathsec may, with reference to the end-to-end
model, evolve into covering virtual end points, which may be
surrogates or proxies of origin servers or user agents, in a secured
content processing context.
To the TLS protocol semantics, Pathsec adds a "pathsec_signal(120)"
TLS alert, a "notification" alert level, an optional "extension"
element to the Alert struct (for piggy-backing supplemental data for
alert processing), and a pathsec_rm(6) extension to ClientHello and
to ServerHello (for facilitating Pathsec source routing).
IANA may be requested to assign a default port for Pathsec
Intermediaries.
1.1. Venue of Discourse
Please send comments on this document to the IETF TLF working group's
mailing list, at the writing of this document:
ietf-tls@lists.certicom.com ,
or directly to the author if the sender prefers:
jhui@digisle.net .
Hui Expires: March 2002 [Page 5]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
2 Terminology
data fidelity
The quality of data arriving at the destination of a content
delivery path, measurable either quantitatively or qualitatively
against the data at the source of the same content delivery path,
for determining the extent of distortion.
data integrity
The quality of data arriving intact at the destination of a
content delivery path. That is. if measured in terms of data
fidelity, absolute data integrity means zero distortion. Message
Digests are usually used for verifying data integrity.
inbound/outbound
Inbound and outbound refer to the request and response paths for
messages: "inbound" means "traveling toward the origin server,"
and "outbound" means "traveling toward the user agent." [HTTP]
In Pathsec, "inbound" means "traveling toward the Pathsec server,
which may be an origin server or its surrogate/proxy," and
"outbound" means "traveling toward the Pathsec client, which may
not necessarily be a user agent."
(Pathsec) Channels
There are three duplex communication channels in a Pathsec
Session: 1) the Main Channel; 2) the Outbound Channel; and 3) the
Inbound Channel. Ref: Figure 1.
*** Forward Compatibility Note:
*** Pathsec may in the future support multiple Outbound Channels.
(Pathsec) Client
An end point in a Pathsec session. A Pathsec client is usually a
user agent, but may also be some other application entity, such as
a caching proxy in a content delivery network.
(Pathsec) Hop
The direct path between two (Pathsec) nodes.
(Pathsec) Inbound Channel (IC) An inbound [HTTP] data channel from
the client to the server, with one or more intermediaries en
route. The hop connecting any two adjacent nodes is secured by a
Pathsec Sub-session, in the form of a TLS session. Thus, an
Inbound Channel is a chain of Pathsec Sub-sessions, starting at
the client and ending at the server.
(Pathsec) Inbound Intermediary (II)
An intermediary in an Inbound Channel, identifiable in an Inbound
Hui Expires: March 2002 [Page 6]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
Routing Metric. The numbering of Inbound Intermediaries always
starts from the client. For example, the first II immediately
next to the client is II1.
(Pathsec) Inbound Routing Metric (IRM)
An Inbound Routing Metric designates the hops from the client to
the server, using a strict/loose source routing policy.
(Pathsec) Main Channel (MC)
A Pathsec Sub-session, in the form of a TLS session, between the
client and the server, with no intermediaries involved.
(Pathsec) Node
A Pathsec client, server, or intermediary.
(Pathsec) Outbound Channel (OC)
An outbound [HTTP] data channel from the server to the client,
with one or more intermediaries en route. The hop connecting any
two adjacent hops is secured by a Pathsec Sub-session, in the form
of a TLS session. Thus, an Outbound Channel is a chain of Pathsec
Sub-sessions, starting at the server and ending at the client.
(Pathsec) Outbound Intermediary (OI)
An intermediary in an Outbound Channel, identifiable in an
Outbound Routing Metric. The numbering of Outbound Intermediaries
always starts from the client. For example, the first OI
immediately next to the client is OI1.
(Pathsec) Outbound Routing Metric (ORM)
An Outbound Routing Metric designates the hops from the server to
the client, using a strict/loose source routing policy.
(Pathsec) Routing Metrics
There are two types of Pathsec Routing Metrics: 1) Outbound
Routing Metrics; and 2) Inbound Routing Metrics.
(Pathsec) Server
An end point in a Pathsec Session. A Pathsec server is usually an
origin server but may also be some other application entity, such
as an origin server's surrogate (or proxy).
(Pathsec) Signal
A Pathsec Signal is issued by a client, a server, or an
intermediary in the form of a TLS alert. A Pathsec signal may be
accompanied by supplemental message(s), synchronously.
(Pathsec) Session and Sub-session
A Pathsec Session is comprised of one or more Pathsec Sub-
Hui Expires: March 2002 [Page 7]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
sessions, of which each is secured in the form of a TLS session
between two adjacent Pathsec nodes.
(Pathsec) Sub-session Key
The TLS session key set for a Pathsec Sub-session, shared by two
connecting Pathsec nodes.
relay
An intermediary that relays data or signal between client and
server.
upstream/downstream
Upstream and downstream describe the flow of a message: all
messages flow from upstream to downstream. [HTTP]
virtual end point
A virtual end point -- with reference to the end-to-end y -- is a
surrogate (or proxy) of a server or client. It is a terminal in a
processing path (that involves a client, a server, and zero or
more intermediaries).
2.1 Key Word Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC-2119 [KWORD].
2.2 Data Type Conventions
All data types specified in this document are to be interpreted as
described in RFC-1832 [XDR] and RFC-2246 [TLS1].
Hui Expires: March 2002 [Page 8]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
3 Pathsec Session
+-----------------------------------------------------------------+
| Client (C) |
| if (verify(R,R'') > limit_of_tolerence) opt_out(); |
+-----------------------------------------------------------------+
| ^ | ^ ^ | | ^
| | | | | | |Q 8|
| | | | | | 3| |R''
| | | | | | v |
| | | | | | +----------------+ +----------------+
| | | | | | | Inbound | | Outbound |
| | | | | | | Intermediary 1 | | Intermediary 1 |
1| | | | | | | (II1) | | (OI1) |
| | | | | |12 +----------------+ +----------------+
| |2 | | | | | ^
| | | | | |R'' |Q' 7|
| | | | | | 4| |R'
| | | | 11| | v |
| | | | | | +----------------+ +----------------+
| | | | A| | | Inbound | | Outbound |
| | | | | | | Intermediary 2 | | Intermediary 2 |
| | | |10 | | | (II2) | | (OI2) |
| | 9| | | | +----------------+ +----------------+
| | | |R | | | ^
| | V| | | | |Q'' 6|
| | | | | | 5| |R
v | v | | v v |
+-----------------------------------------------------------------+
| Server (S) |
| if (audit(R,R'') > limit_of_tolerence) opt_out(); |
+-----------------------------------------------------------------+
KEYS:
A -- Request (from server to client) to audit responses -- R vs. R''.
Q -- Original request/query from client.
Q' -- Result of transforming Q by Inbound Intermediary 1 (II1).
Q'' -- Result of transforming Q' by Inbound Intermediary 2 (II1).
R -- Original response from server.
R' -- Result of transforming R by Outbound Intermediary 2 (OI2).
R'' -- Result of transforming R' by Outbound Intermediary 1 (OI1).
V -- Request (from client to server) to verify responses -- R vs. R''.
Pathsec Main Channel encompasses paths: 1, 2, 9, 10, 11, and 12.
Pathsec Inbound Channel encompasses paths: 3, 4, and 5.
Pathsec Outbound Channel encompasses paths: 6, 7, and 8.
Figure 1: Pathsec Session Conceptual/Data Flow Diagram
Hui Expires: March 2002 [Page 9]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
+--------------+
| |
| Open/Re-Open |
| | +--------+
+--------------+ 16 | |
| /----------------------------->| Close! |
1| | | |
v | +--------+
+----------+ | +-------------+ ^
| | | | | |
| SetUp-MC |--------/ | TearDown-OC | |
| | | | |
+----------+ +-------------+ |
| | ^ |
2| 13| |12 |
v v | |
+----------+ 10 +-------------------------+ |
| |<------| | |
| SetUp-OC | | In-Session | |6
| |------>| |-----\ |
+----------+ 11 +-------------------------+ | |
| | | ^ | ^ | |
| | | | 14| |15 | |
| | | |4 v | | |
| | | | +-------------+ | |
| 3| 9| | | | |5 |
| | | | | TearDown-IC | | |
7| v | | | | | |
| +----------+ | | +-------------+ | |
| | |<-----/ | v |
| | SetUp-IC |--------/ 8 +--------------+
| | |------------------------------>| |
| +----------+ | TearDown-All |
\------------------------------------------->| |
7 +--------------+
KEYS:
Label Alert/Signal Label Alert/Signal
1 -- pathsec_set_up_mc*, or nill 10 -- pathsec_set_up_oc*
2 -- pathsec_set_up_oc* 11 -- pathsec_oc_set_up*
3 -- pathsec_set_up_ic* 12 -- pathsec_tear_down_oc*
4 -- pathsec_ic_set_up* 13 -- pathsec_oc_torn_down*
5 -- pathsec_tear_down_all* 14 -- pathsec_tear_down_ic*
6 -- close_notify#, or nill 15 -- pathsec_ic_torn_down*
7 -- pathsec_tear_down_all* 16 -- close_notify#, or nill
8 -- pathsec_tear_down_all*
9 -- pathsec_set_up_ic* # Existing TLS Alert * Pathsec Signal
! Terminal State
Figure 2: Pathsec State Machine
Hui Expires: March 2002 [Page 10]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
Frequent referals to Figures 1 and 2 are deemed helpful for the
discussions throughout the document.
A Pathsec Session comprises one or more Pathsec Sub-session. A
Pathsec Sub-session, secured in the same manner as a conventional TLS
session with Pathsec-extended semantics, is held between two adjacent
nodes along a Pathsec Channel.
Architecturally, a Pathsec Session is conducted over three secured
communication channels: the Main Channel; the Outbound Channel; and
the Inbound Channel. The channels are constructed during a Pathsec
Set-up, which occurs at the start of the session, or in the middle of
the session at the cue of Pathsec signals. The Main Channel connects
the server and the client directly. The Outbound Channel carries
outbound data from the server to the client through one or more
intermediaries. Conversely, the Inbound Channel carries inbound data
from the client to the server through one or more intermediaries.
The existence of the Main Channel is mandatory. The Outbound and
Inbound channels are optional. In the absense of the Outbound
Channel, the Main Channel takes over its functionality in the secured
delivery of outbound data, e.g. server responses. In the absense of
the Inbound Channel, the Main Channel takes over its functionality in
the secured delivery of inbound data, e.g. client requests. In the
absense of both Outbound and Inbound Channels, the Pathsec session is
operating in TLS mode, i.e. just like a conventional TLS session,
with the exception that a Pathsec signal -- pathsec_set_up_oc or
pathsec_set_up_ic -- may switch the session into Pathsec mode.
Pathsec signals are carried individually in a Pathsec extended TLS
alert: pathsec_signal.
A Pathsec Session is always started by the client (at the Open/Re-
open state in the Pathsec State Machine. [Ref:Fig 2]).
A Pathsec Session is set up by the construction of the Main,
Outbound, and Inbound Channels, undergoing a series of state
transitions: SetUp-MC -> SetUp-OC -> SetUp-IC -> In-Session. [Ref:Fig
2]
While Pathsec is In-Session, either the client or the server MAY
signal its counterpart to tear down the OC or the IC, or to set up
the OC or the IC if none exists. In addition, Audit or Verify
signals MAY also be sent by the server or the client, respectively.
[Ref:3.8.1,3.8.2]
The closure of a Pathsec Session, either by natural ending or by
opt-out, is preceded by a TearDown-All process, which MUST
sequentially close down the Inbound Channel, the Outbound Channel,
Hui Expires: March 2002 [Page 11]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
and the Main Channel. [Ref:3.9,3.10]
A closed Pathsec Session MAY be re-opened in manner similar to
resuming a TLS session. [Ref:3.11]
3.1 Pathsec Main Channel
The Main Channel (MC) is defined by a Pathsec sub-session in the form
of a TLS session between the client and the server.
There MUST NOT be any intermediary in MC.
As a part of Pathsec Set-up, the construction of MC starts from the
client, in the same manner as starting a TLS handshake, whose
successful conclusion marks the establishment of MC, which MAY be
optionally milestoned by the server issuing to itself and to the
client a pathsec_mc_set_up signal.
All TLS alerts, including Pathsec signals, may travel bi-
directionally in MC.
In the absence of OC, outbound data, such as application server
responses, travel in MC.
In the absence of IC, inbound data, such as application client
requests, travel in MC.
The server's responses to a client's request to verify data fidelity
travel in MC.
The client's responses to a server's request to audit (data fidelity
e.g.) travel in MC.
A fatal alert affecting MC SHALL always result in the closure of the
entire Pathsec Session.
MC MUST not share its pre-master and master secrets with OC.
MC SHOULD NOT share its pre-master and master secrets with IC.
3.2 Pathsec Outbound Channel
The Outbound Channel (OC) is defined by a chain of Pathsec sub-
sessions in the form of hop-by-hop TLS sessions between the client
and the server, inclusively.
Hui Expires: March 2002 [Page 12]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
There SHOULD be one or more intermediaries in OC. There MAY also be
zero intermediary in OC, i.e. a single-hop OC where the client also
plays the role of OI1 and OIn. (OI1 is the intermediary that is next
to the client in OC. OIn is the intermediary that is next to the
server in OC.) The number of intermediaries is limited only by the
size of the hopList element in the PathsecRoutingMetric data
structure. [Ref:3.4]
Note that when speaking of source routing in Pathsec, the client is
always the source, where the channel construction (of hops eventually
linking to the server) starts, irrespective of the channel being OC
or IC. Once the channel has been set up, the concept of routing
ceases to exist in a Pathsec node, which cares only to read from
upstream and write to downstream.
The number and the sequence of hops, as well as other route
properties, are defined in an ORM. The client and the intermediaries
MAY or MAY NOT modify certain aspects of the ORM, dependent upon the
ORM properties specified by the server and the client.
The ORM is carried outbound (via MC) in a TLS ServerHello pathsec_rm
extension, or inbound (via OC) in a TLS ClientHello pathsec_rm
extension, or in pathsec_signal_data accompanying a pathsec_set_up_oc
signal (via MC). [Ref:3.4,3.6.1,TLSX]
All TLS alerts, including Pathsec signals, may travel in OC, in any
direction.
Outbound application data, such as application server responses,
travel in OC.
The construction of OC is hop-by-hop, with the first hop starting
from the client to OI1. During the client-OI1 TLS handshake, the ORM
is passed from the client to OI1. Upon completion of the first hop,
OI1 connects to the next intermediary, if any, designated in ORM, and
iterates the Pathsec-augmented TLS handshake with OI2, passing along
the ORM. The iteration ends at the last hop with the server as the
terminus.
The ShareMasterSecret property in ORM indicates if master secret is
shared.
If all nodes in OC are to share a common master secret, then the
client is responsible for propagating a fixed set of keying material
-- pre-master secret, client random, and server random towards the
server. All nodes belonging to the channel are to use such set of
keying material for sub-session key generation.
Hui Expires: March 2002 [Page 13]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
If the nodes in OC do not share a common master secret, then each
sub-session in OC holds its own keying secrets.
OC SHOULD NOT share its pre-master and master secrets with IC.
Prior to transporting application data in OC, the server MUST first
audit the channel, by sending the client via MC a pathsec_ping signal
that designates OC as the echo channel. The client MUST reply with a
pathsec_echo via OC. By comparing the PathsecPing and PathsecEcho
supplemental data accompanying the signals, the server is able to
authenticate the channel. Upon positive authentication, the server
sends the client a pathsec_echo_ok signal; otherwise, a fatal TLS
alert is raised. [Ref:3.6.1]
3.3 Pathsec Inbound Channel
The Outbound Channel semantics apply equally to the Inbound Channel.
(That is, 3.3 is an almost-identical twin of 3.2, substituting:
inbound for outbound; IC for OC; IRM for ORM; II1, II2, IIn for OI1,
OI2, OIn, respectively; "client requests" for "server responses;" and
pathsec_set_up_ic for pathsec_set_up_oc.)
Whereas OC SHOULD NOT share its pre-master and master secrets with
IC, IC MUST NOT share its pre-master and master secrets with OC.
3.4 Pathsec Routing Metrics
There are two types of Pathsec Routing Metrics (RMs): 1) Outbound
Routing Metrics (ORM), for routing application data from the server
to the client; and 2) Inbound Routing Metrics (IRM), for routing
application data from the client to the server. All Pathsec Routing
Metrics share an identical format and have same semantics, as in the
following:
struct {
RoutingPolicy routingPolicy;
RouteLength routeLength;
RoutePointer routePointer;
RouteDirection routeDirection;
ShareMasterSecret shareMasterSecret;
ServerMayModHopList serverMayModHopList;
ClientMayModHopList clientMayModHopList;
IntermMayModHopList intermMayModHopList;
opaque serverRandom[32]; /* also serves as
* channel ticket */
opaque pathsecReserved[64];
Hui Expires: March 2002 [Page 14]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
opaque hopList<1..2^14>
} PathsecRoutingMetric;
enum {
loose_source_routing(0x83), /* 0x83 & 0x89 are from IP */
strict_source_routing(0x89) /* default */
} RoutingPolicy;
typedef uint8 RouteLength;
typedef unit8 RoutePointer;
enum {
outbound(1),
inbound(2)
} RouteDirection; /* no default */
enum {
dont_share_master_secret(0),
share_master_secret(1) /* default */
} ShareMasterSecret;
enum {
server_may_not_modify_hop_list(0),
server_may_modify_hop_list(1) /* default */
} ServerMayModRM;
enum {
client_may_not_modify_hop_list(0),
client_may_modify_hop_list(1) /* default */
} ClientMayModRM;
enum {
interm_may_not_modify_hop_list(0), /* default */
interm_may_modify_hop_list(1)
} IntermMayModRM;
hopList := hops
hops := hostport [ , hops ]
hostport := host [ : port ]
host := hostname | hostnumber
hostname := ialpha [ . hostname ]
hostnumber := digits . digits . digits . digits
port := digits
(Refer to [URI] for ialpha and digits.)
Pathsec server and intermediaries share with TLS the same default
Hui Expires: March 2002 [Page 15]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
port: 443.
*** Forward Compatibility Note:
*** IANA may be requested to assign a new default port for
*** Pathsec Intermediaries.
An examples of (comma-delimited) hopList:
"I1.x.com,I2.y.com:4567,server.z.com:7890" is a three-hop list
such that in an ORM, application data flow in the way of:
server.z.com:7890 -> I2.y.com:4567 -> I1.x.com -> client
and in an IRM, application data flow in the way of:
client -> I1.x.com -> I2.y.com:4567 -> server.z.com:7890
A Routing Metric (RM) may be carried in a pathsec_rm extension in a
ServerHello or a ClientHello. It may also be carried in the
pathsec_signal_data accompanying a pathsec_set_up_oc or
pathsec_set_up_ic signal, which is delivered in a TLS alert typed
pathsec_signal.
Either the server or the client MAY be the RM originator, whose
wishes (as specified in routingPolicy, routeDirection,
shareMasterSecret, serverMayModHopList, clientMayModHopList,
intermMayModHopList, and hopList) must be respected by all nodes in a
channel, with the following exceptions. The server MAY negotiate
loose_source_routing to strict_source_routing; the server MAY
negotiate server_may_not_modify_hop_list to
server_may_modify_hop_list; the server MAY negotiate the server MAY
negotiate interm_may_modify_hop_list to
interm_may_not_modify_hop_list; or the server MAY negotiate
share_master_secret to dont_share_master_secret. The client MUST NOT
perterb the "server-side" hops specified by the server, though it MAY
prepend "client-side" hops to hopList. The server SHOULD NOT perterb
the "client-side" hops specified by the client, though it MAY append
"server-side" hops to them.
RoutingPolicy is for the originator of an RM, usually the server but
sometimes the client, to specify the routing policy governing a
Pathsec channel: loose source routing, or strict source routing (the
default). RoutingPolicy, once set, SHOULD NOT be changed. All nodes
MUST execute the routing policy in the exact manner as described in
[3.4.1] and [3.4.2]. (Also refer to [IP,STEVENS] for the workings of
IP source routing.)
RouteLength specifies the number of hops in hopList, e.g. 3 for
three hops.
Hui Expires: March 2002 [Page 16]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
RoutePointer points at the destination node of the current hop.
RoutePointer increments by 1 per hop.
RouteDirection indicates if the route is for inbound or outbound
application data. For example, if routeDirection = outbound, then
the RM is for OC, i.e. ORM.
ShareMasterSecret indicates if all nodes belonging to the channel
that employs the RM are to share a common master secret for keying
purpose.
ServerMayModHopList indicates if the server may modify hopList.
ClientMayModHopList indicates if the client may modify hopList.
IntermMayModHopList indicates if the intermediaries may modify
hopList.
ServerRandom contains the server random for keying purpose, in case
of share_master_secret.
ServerRandom also serves as the channel ticket, by which the server,
which may face multiple connection requests, determines which channel
a connecting party belongs to during a TLS handshake.
PathsecReserved is a dummy at the writing of this document.
HopList contains the list nodes en route, in format defined above.
The first node is always II1 or OI1, and the last node is always the
server, because the construction of IC or OC always starts from the
client. All nodes in a channel must observe the rules set in:
serverMayModHopList, clientMayModHopList, and intermMayModHopList,
with few forementioned server exceptions.
3.4.1 Pathsec Strict Source (and Record) Routing
In Pathsec strict source (and record) routing (PSSRR), the client of
a Pathsec channel to be constructed is first given an RM, i.e.
PathsecRoutingMetric, either through a ServerHello pathsec_rm
extension or in the pathsec_signal_data accompanying a
pathsec_set_up_ic/pathsec_set_up_oc signal, where routingPolicy is
set to strict_source_routing. The RM is to be forwarded inbound
through a ClientHello pathsec_rm extension during the TLS handshakes
that will establish the sub-sessions in the channel.
Before forwarding the RM in a ClientHello, a Pathsec node MUST
increment routePointer by 1.
Hui Expires: March 2002 [Page 17]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
Each node (in the channel) uses routePointer as the locator for
determining its TLS server (in a Pathsec sub-session) to connect to,
only if routePointer is not greater than routeLength. For example,
if routePointer is 2, then the second node in hopList is the TLS
server of the sub-session to be established. If routePointer is
greater the routeLength, then the end of the route has been reached.
(Note that routePointer pointing at the Pathsec server does not
necessarily indicate the end of the route.)
An intermediary MUST be aware that if routeLength equals routePointer
in the RM given, then it is the last intermediary in the channel,
e.g. OIn, or IIn, and may be called upon to perform a special task
(such as flipping an authentication string) in channel authentication
later. [Ref:3.6.1-pathsec_echo]
Figure 3 illustrates the algorithm of Pathsec strict source (and
record) routing by example.
The recording of the route is done by leaving hopList alone and
incrementing routePointer properly in each hop.
3.4.2 Pathsec Loose Source (and Record) Routing
Pathsec loose source (and record) routing (PLSRR) works in similar
ways as PSSRR does, with the crucial exception that the client or an
intermediary may, if permitted by the client_may_modify_hop_list or
interm_may_modify_hop_list respectively, properties in the RM, insert
hops between the Pathsec server and itself. (The routingPolicy in
the RM MUST be pre-set to loose_source_routing prior to channel
construction.)
Figure 4 illustrates the algorithm of Pathsec loose source (and
record) routing by example.
The recording of the route is done by properly updating hopList and
routeCount, and incrementing routePointer in each hop.
Hui Expires: March 2002 [Page 18]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
+-------+
| C |
+-------+ routeLength = 3
| routePointer = 1 *
| hopList = {I1,I2,S}
| Pathsec sub-session TLS client = C
| Pathsec sub-session TLS server = I1
v
+-------+
| I1 |
+-------+ routeLength = 3
| routePointer = 2 *
| hopList = {I1,I2,S}
| Pathsec sub-session TLS client = I1
| Pathsec sub-session TLS server = I2
v
+-------+
| I2 |
+-------+ routeLength = 3
| routePointer = 3 *
| hopList = {I1,I2,S}
| Pathsec sub-session TLS client = I2
| Pathsec sub-session TLS server = S
v
+-------+
| S |
+-------+ routeLength = 3
routePointer = 4
hopList = {I1,I2,S}
The hopList given to Pathsec client C is {I1,I2,S} where S is the
Pathsec server; I1 and I2 are intermediaries; routeLength is 3;
and routePointer is initially 1.
Figure 3: Pathsec Strict Source (and Record) Routing
Hui Expires: March 2002 [Page 19]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
+-------+
| C |
+-------+ routeLength = 3
| routePointer = 1 *
| hopList = {I1,I2,S}
| Pathsec sub-session TLS client = C
v Pathsec sub-session TLS server = I1
+-------+
| I1 |
+-------+ routeLength = 3
| routePointer = 2
| hopList = {I1,I2,S}
| I1 inserts I1a and I1b into hopList, then
| routeLength = 5
| routePointer = 2 *
| hopList = {I1,I1a,I1b,I2,S}
| Pathsec sub-session TLS client = I1
v Pathsec sub-session TLS server = I1a
+-------+
| I1a | routeLength = 5
+-------+ routePointer = 3 *
| hopList = {I1,I1a,I1b,I2,S}
| Pathsec sub-session TLS client = I1a
v Pathsec sub-session TLS server = I1b
+-------+
| I1b | routeLength = 5
+-------+ routePointer = 4 *
| hopList = {I1,I1a,I1b,I2,S}
| Pathsec sub-session TLS client = I1b
v Pathsec sub-session TLS server = I2
+-------+
| I2 | routeLength = 5
+-------+ routePointer = 5 *
| hopList = {I1,I1a,I1b,I2,S}
| Pathsec sub-session TLS client = I2
v Pathsec sub-session TLS server = S
+-------+
| S | routeLength = 5
+-------+ routePointer = 6
hopList = {I1,I1a,I1b,I2,S}
The hopList given to Pathsec client C is {I1,I2,S} where
S is the Pathsec server; I1 and I2 are intermediaries;
I1a and I1b are intermediaries inserted by I1;
routeLength is initially 3, and is changed to 5 by I1;
and routePointer is initially 1.
Figure 4: Pathsec Loose Source (and Record) Routing
Hui Expires: March 2002 [Page 20]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
3.5 Pathsec Extended TLS ClientHello/ServerHello
Pathsec adds "pathsec_rm" to the existing TLS extensions defined in
[TLSX]. It is to be included in ServerHello or ClientHello as
applicable. [Ref:3.4]
The following list enumerates the TLS extension types defined in
[TLSX] at the writing of this document, plus pathsec_rm:
enum {
dns_name(0),
max_record_size(1),
client_certificate_url(2),
trusted_ca_keys(3),
truncated_hmac(4),
status_request(5),
pathsec_rm(6), /* new for Pathsec */
(65535)
} ExtensionType;
Origin servers, surrogates, proxies, and user agents that do not
understand the pathsec_rm extension SHOULD simply ignore the
extension.
3.6 Pathsec Extended TLS Alert
The Pathsec Protocol extends the TLS Alerts data structure (defined
in [TLS1]) to include an optional element: "extension." Pathsec also
introduces a new alert level: "notification;" and a new alert type:
"pathsec_signal." The notification level is for accommodating alerts
that are difficult to precisely characterize as warning or fatal. The
recipient MUST NOT ignore the alert, unless it does not support the
alert type specified in the description field. The optional
Alerts.extension is for piggy-backing supplemental data for alert
processing. The sender and recipient(s) MUST cast the opaque
Alerts.extension data into alert-type-specific data structure(s) for
further processing. In the case of Pathsec, the extension data is
cast into the PathsecAlert data structure defined in 3.6.1.
*** Author's Note:
*** [TLS1] did not script a forward compatibility note for alert
*** extensions; so backward compatibility issues related to an
*** extended TLS Alert struct are open at the writing of this
*** document.
Origin servers, surrogates, proxies, and user agents that do not
support pathsec_signal SHOULD raise an unexpected_message alert to
Hui Expires: March 2002 [Page 21]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
the pathsec_signal sender.
The following describes the Pathsec extended TLS Alert data structure
and enumerates TLS alerts, including pathsec_signal, which is an
addition to the TLS alerts having been compiled in [TLSX], at the
writing of this document:
struct {
AlertLevel level;
AlertDescription description;
opaque extension<0..2^16-1>; /* new for Pathsec */
} Alert;
enum {
warning(1),
fatal(2),
notification(3), /* new for Pathsec */
(255)
} AlertLevel;
enum {
close_notify(0),
unexpected_message(10),
bad_record_mac(20),
decryption_failed(21),
record_overflow(22),
decompression_failure(30),
handshake_failure(40),
certificate_unobtainable(41), /* new for TLSX */
bad_certificate(42),
unsupported_certificate(43),
certificate_revoked(44),
certificate_expired(45),
certificate_unknown(46),
illegal_parameter(47),
unknown_ca(48),
access_denied(49),
decode_error(50),
decrypt_error(51),
export_restriction(60),
protocol_version(70),
insufficient_security(71),
internal_error(80),
user_canceled(90),
no_renegotiation(100),
unsupported_extension(110), /* new for TLSX */
bad_extension_order(111), /* new for TLSX */
unrecognised_domain(112), /* new for TLSX */
Hui Expires: March 2002 [Page 22]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
bad_ocsp_response(113), /* new for TLSX */
pathsec_signal(120), /* new for Pathsec */
(255)
} AlertDescription;
[Ref:TLS1,TLSX]
3.6.1 Pathsec Signals
This section describes the Pathsec Signals. All Pathsec nodes MUST
relay Pathsec signals downstream. A Pathsec signal affects all nodes
in its path, including the end point(s) where it expires. A Pathsec
signal is delivered in a pathsec_signal TLS alert, with a TLS alert
extension that is to be cast into the PathsecAlert data structure
defined as follows.
struct {
PathsecSignal pathsec_signal_type;
opaque pathsec_signal_data<0..2^15-1>;
} PathsecAlert;
enum {
pathsec_set_up_mc(1),
pathsec_mc_set_up(2),
pathsec_set_up_oc(3),
pathsec_oc_set_up(4),
pathsec_set_up_ic(5),
pathsec_ic_set_up(6),
pathsec_tear_down_mc(7),
pathsec_mc_torn_down(8),
pathsec_tear_down_oc(9),
pathsec_oc_torn_down(10),
pathsec_tear_down_ic(11),
pathsec_ic_torn_down(12),
pathsec_tear_down_all(13),
pathsec_verify_request_start(14),
pathsec_verify_request_end(15),
pathsec_verify_response_start(16),
pathsec_verify_response_end(17),
pathsec_opt_out_oc(18),
pathsec_opt_out_oc_ack(19),
pathsec_opt_out_oc_nack(20),
pathsec_opt_out_ic(21),
pathsec_opt_out_ic_ack(22),
pathsec_opt_out_ic_nack(23),
pathsec_source_route_failed(24),
pathsec_feature_unsupported(25),
Hui Expires: March 2002 [Page 23]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
pathsec_ping(26),
pathsec_echo(27),
pathsec_echo_ok(28),
(255)
} PathsecSignal;
pathsec_set_up_mc(1)
The client or server may optionally send pathsec_set_up_mc to
itself (for invoking a pathsec_set_up_mc callback, e.g.). Upon
receipt of this signal, the client or server enters the SetUp-MC
state (in the Pathsec State Machine).
pathsec_mc_set_up(2)
Either the client or server may optionally send or receive
pathsec_mc_set_up upon exit of SetUp-MC, which is to be followed
by SetUp-OC.
pathsec_set_up_oc(3)
The server sends this signal to the client via MC, and optionally
to itself. The receiver of this signal MUST enter SetUp-OC. The
pathsec_signal_data accompanying this signal contains a
PathsecRoutingMetric, where routeDirection = outbound, i.e. an
ORM. The client MUST start constructing the OC according to the
ORM. The server MUST listen for an outstanding OC connection
request, at the server port specified/implied in the ORM.
pathsec_oc_set_up(4)
The server sends pathsec_oc_set_up to the client via MC, and
optionally to itself, upon the completion of SetUp-OC.
pathsec_set_up_ic(5)
The server sends this signal to the client via MC, and optionally
to itself. The receiver of this signal MUST enter SetUp-IC. The
pathsec_signal_data accompanying this signal contains a
PathsecRoutingMetric, where routeDirection = inbound, i.e. an IRM.
The client MUST start constructing the IC according to the IRM.
The server MUST listen for an outstanding IC connection request,
at the server port specified/implied in the IRM.
The client MAY also send this signal to the server, enclosing in
pathsec_signal_data an IRM with "client-side" hops. In such case,
the server MAY optionally prepend "server-side" hops to the
"client-side" hops, by inserting "server-side" nodes in front of
Hui Expires: March 2002 [Page 24]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
the last node in hopList. For example, "cs1,cs2,svr" becomes
"cs1,cs2,ss1,ss2,svr." The server then sends back to the client a
pathsec_set_up_ic, with a newly negotiated IRM if applicable.
pathsec_ic_set_up(6)
The server sends pathsec_ic_set_up to the client via MC, and
optionally to itself, upon the completion of SetUp-IC.
pathsec_tear_down_mc(7)
This signal SHOULD NOT be used, pending future specification. (If
MC goes, so go all channels and the entire Pathsec session. Thus
pathsec_tear_down_all seems to be more appropriate for virtually
all foreseeable cases at the writing of this document.)
pathsec_mc_torn_down(8)
This signal SHOULD NOT be used, pending future specification.
pathsec_tear_down_oc(9)
The server MAY at any time send via OC the client
pathsec_tear_down_oc, and vice versa. Both the signal sender and
receiver must enter TearDown-OC immediately. Each intermediary en
route MUST immediately forward the signal downstream, and then
enter TearDown-OC itself. The server and client MUST notify their
respective applications of this signal, and data pending for
read/write MAY be flushed.
pathsec_oc_torn_down(10)
The server sends pathsec_oc_torn_down to the client via MC, and
optionally to itself, upon the completion of TearDown-OC.
pathsec_tear_down_ic(11)
The server MAY at any time send via IC the client
pathsec_tear_down_ic, and vice versa. Both the signal sender and
receiver must enter TearDown-IC immediately. Each intermediary en
route MUST immediately forward the signal downstream, and then
enter TearDown-IC itself. The server and client MUST notify their
respective applications of this signal, and data pending for
read/write MAY be flushed.
pathsec_ic_torn_down(12)
The server sends pathsec_ic_torn_down to the client via MC, and
Hui Expires: March 2002 [Page 25]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
optionally to itself, upon the completion of TearDown-IC.
pathsec_tear_down_all(13)
The server MAY at any time send via MC the client
pathsec_tear_down_all, and vice versa. Both the signal sender and
receiver must enter TearDown-All immediately.
Pathsec_tear_down_all signals the imminent closure of the Pathsec
session. All channels are to be torn down as soon as possible,
with provision for I/O flushing as appropriate. The server and
client MUST notify their respective applications of this signal,
and data pending for read/write MAY be flushed.
pathsec_verify_request_start(14)
The server MAY send via MC the client, and vice versa, a
pathsec_verify_request_start to initiate a process to verify the
data fidelity in OC.
pathsec_verify_request_end(15)
The server MAY send via MC the client, and vice versa, a
pathsec_verify_request_end to terminate the process of verifying
the data fidelity in OC.
pathsec_verify_response_start(16)
The receiver of pathsec_verify_request_start responses with a
pathsec_verify_response_start to signal that verification data is
forthcoming.
pathsec_verify_response_end(17)
The receiver of pathsec_verify_request_end responses with a
pathsec_verify_response_end to signal the end of verification
data.
pathsec_opt_out_oc(18)
The server MAY send via MC the client, and vice versa, a
pathsec_opt_out_oc to tear down OC. The signal sender SHOULD time
out (with a pathsec_opt_out_oc_nack) if it does not receive a
pathsec_opt_out_oc_ack in 10 seconds.
pathsec_opt_out_oc_ack(19)
The client or the server MUST send via MC pathsec_opt_out_oc_ack
to acknowledge the receipt of pathsec_opt_out_oc, prior to
Hui Expires: March 2002 [Page 26]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
entering TearDown-OC. Upon receiving pathsec_opt_out_oc_ack, the
pathsec_opt_out_oc sender SHOULD enter TearDown-OC.
pathsec_opt_out_oc_nack(20)
Upon timing out of a pathsec_opt_out_oc, the pathsec_opt_out_oc
sends itself and optionally the pathsec_opt_out_oc receiver a
pathsec_opt_out_oc_nack, via MC.
pathsec_opt_out_ic(21)
The server MAY send via MC the client, and vice versa, a
pathsec_opt_out_ic to tear down IC. The signal sender SHOULD time
out (with a pathsec_opt_out_ic_nack) if it does not receive a
pathsec_opt_out_ic_ack in 10 seconds.
pathsec_opt_out_ic_ack(22)
The client or the server MUST send via MC pathsec_opt_out_ic_ack
to acknowledge the receipt of pathsec_opt_out_oc, prior to
entering TearDown-OC. Upon receiving pathsec_opt_out_ic_ack, the
pathsec_opt_out_oc sender SHOULD enter TearDown-IC.
pathsec_opt_out_ic_nack(23)
Upon timing out of a pathsec_opt_out_ic, the pathsec_opt_out_ic
sends itself and optionally the pathsec_opt_out_ic receiver a
pathsec_opt_out_ic_nack, via MC.
pathsec_source_route_failed(24)
This signal SHOULD NOT be used, pending future specification. A
Pathsec intermediary, in case of locally fatal error, sends a
pathsec_source_route_failed in both upstream and downstream
directions. This signal is fatal to the channel. Upon receiving
pathsec_source_route_faile, the server and the client SHOULD
independently signal pathsec_tear_down_oc (or pathsec_tear_down_ic
as applicable). The client and server applications MUST be
notified of the source route failure. The channel torn down MAY
be re-constructed, provide at least one application layered above
Pathsec commands the server or the client to signal
pathsec_set_up_oc (or pathsec_set_up_ic as applicable).
pathsec_feature_unsupported(25)
A Pathsec node is being requested (by the client or the server) to
perform a task it does not support, then it sends a
pathsec_feature_unsupported upstream, which will be relayed to the
Hui Expires: March 2002 [Page 27]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
requester.
pathsec_ping(26) & pathsec_echo(27)
The server MAY send a pathsec_ping to the client, and vice versa,
only via MC, for the purposes of: 1) the pinger inquiring the
highest Pathsec version supported by the echo-er; and 2) the
server authenticating a channel that might have been constructed
without Client Authentication during TLS Handshake(s) earlier.
(For example, a bogus last intermediary could gain "acquaintance"
with a Pathsec server using replay attack with an intercepted
channel ticket embedded in a ClientHello's plain-text
serverRandom, if the server did not demand Client Authentication
Handshake. Note that in Pathsec, the server by default does not
demand Client Authentication Handshake, because the last
intermediary may also be the Pathsec client (in a one-hop channel)
which may happen to be a user agent, and it is not common practice
that user agents are in possesion of certificates.)
The pinger packs pathsec_signal_data with a PathsecPing (defined
below). The echo-er copies (or cast) a PathsecPing into a
PathsecEcho (also defined below), assigning proper values to
echo_major and echo_minor, and then emits the PathsecEcho (in
pathsec_signal_data) via the channel indicated by echo_channel_id.
The PathsecPing sender (aka pinger) SHOULD time out, if the
expected PathsecEcho fails to arrive within a reasonable time
limit: 10 seconds * approximated-number-of-hops-in-echo-channel.
All intermediaries relaying a PathsecEcho towards its destination,
except the last intermediary next to the pinger in the echo
channel, MUST NOT modify the content of a PathsecEcho.
PathsecPing and PathsecEcho are defined as follows.
struct {
uint16 ping_id;
uint16 echo_channel_id;
uint8 ping_major;
uint8 ping_minor;
unit8 echo_major;
uint8 echo_minor;
opaque random[24];
} PathsecPing;
struct {
uint16 ping_id;
uint16 echo_channel_id;
uint8 ping_major;
Hui Expires: March 2002 [Page 28]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
uint8 ping_minor;
unit8 echo_major;
uint8 echo_minor;
opaque random[20];
} PathsecEcho;
Ping_id is for tracking pings and echos. Its value is set by the
pinger and MUST NOT be modified by the echo-er or relays. The
value set is unique within an echo channel, and may wrap around.
Echo_channel_id indicates the channel via which the PathsecEcho
MUST travel. Its value is set by the pinger and MUST NOT be
modified by the echo-er or relays. There are three permanently
pre-defined values: 0 -- via MC; 1 -- via OC; 2 -- via IC.
*** Forward Compatibility Note:
*** Future Pathsec versions may support more than three channels.
Ping_major and ping_minor indicate the highest major and minor
numbers of the Pathsec version the pinger supports, starting from
major 1, minor 0. The pinger MUST instantiate ping_major and
ping_minor with correct values; and set echo_major and echo_minor
to 0.
Echo_major and echo_minor indicate the highest major and minor
numbers of the Pathsec version the echo-er (of a PathsecPing)
supports, starting from major 1, minor 0. The echo-er, who is the
originater of a PathsecEcho in reply to a PathsecPing, MUST
instantiate echo_major and echo_minor with correct values.
Major number being 0 indicates the version is experimental.
Experimental versions MUST have non-zero minor numbers.
PathsecEcho.random contains 20 random bytes copied from
EchosecPing.random, which was generated by the pinger, for the
purpose of authenticating the echo channel. The last intermediary
in the echo channel MUST reverse the byte sequence of
PathsecEcho.random, i.e. the first byte becomes the last, the last
byte becomes the first, and so on, prior to forwarding the
PathsecEcho to its destination -- the server.
pathsec_echo_ok(28)
The pinger MUST keep a copy of the PathsecPing sent. Upon receipt
of a PathsecEcho, the pinger MUST compare the ping_id and
echo_channel_id in the PathsecPing and PathsecEcho for identical
matches. Additionally, if the echo channel is not MC (i.e.
echo_channel_id != 0), then the pinger MUST reverse the byte
sequence in PathsecEcho.random and compare PathsecPing.random to
Hui Expires: March 2002 [Page 29]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
PathsecEcho.random. If they are equal, then the echo channel is
authenticated, and a pathsec_echo_ok signal is to be sent over MC
to the echo-er, accompanied by the PathsecEcho with the
PathsecEcho.random in original byte sequence (originally set by
the pinger). Otherwise, the last intermediary is deemed an
imposter, because it has failed to decipher the PathsecEcho (in
order to reverse the bytes in PathsecEcho.random); and an
"insufficient_security" TLS fatal alert MUST be raised.
Application data SHOULD NOT travel in OC or IC unless the channel
in question has been "certified" for use by a pathsec_echo_ok.
The pinger MAY discard the PathsecPing copy it keeps after
processing the corresponding PathsecEcho.
3.7 Pathsec Set-up
The Pathsec Set-up involves three major steps of state transitions:
Open/Re-open ->
SetUp-MC -> SetUp-OC -> SetUp-IC ->
In-Session
[Ref:Fig 2]
Step 1: the client, in SetUp-MC state, initiates connection to the
server to establish the the Main Channel, using TLS handshake with
Pathsec-extended ClientHello and ServerHello. [Ref:3.1,3.5;3.6.] In
case of a fatal alert, the session -- server and client -- transits
to the Close state; else, the session enters SetUp-OC.
Step 2: the client, in SetUp-OC state, scans the ServerHello
extensions for ORM. If one exists, then it proceeds to set up the
Outbound Channel. Using the ORM embedded in a ServerHello extension
as the guideline, it initiates connection to the first Outbound
Intermediary (the OI1 designated in the ORM), which in turn initiates
connection to the next OI (if one exists), and so on, eventually
connecting to the server. [Ref:3.2] In case of a fatal error, the
session -- client, server, and all intermediaries -- enters
TearDown-All state; else, the session enters SetUp-IC state.
Step 3: the client, in SetUp-IC state, scans the ClientHello
extensions for IRM. If one exists, optionally sets up the Inbound
Channel. Using the Inbound Routing Metric embedded in a ClientHello
Extension, which the client has previously sent to the server while
setting up the Main Channel, it (the client) initiates connection to
the first Inbound Intermediary (i.e. the II1 designated in the IIM),
which in turn initiates connection to the next II, and so on,
Hui Expires: March 2002 [Page 30]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
eventually connecting to the server. [Ref:3.3]
The successful completion of a Pathsec Set-up is always followed by
In-Session state. [Ref:Fig 2]
3.8 Pathsec In-Session
When a Pathsec session is in In-Session state, application data flow
is guaranteed.
Alerts and signals flow freely at any time.
During In-Session, the server MAY at any time via MC send the client
a pathsec_set_up_oc or a pathsec_set_up_ic signal to cause both the
server and the client to enter SetUp-OC or SetUp-IC, respectively.
During In-Session, the server MAY at any time via MC send the client,
or vice versa, a pathsec_tear_down_oc or a pathsec_tear_down_ic
signal to cause both the server and the client to enter TearDown-OC
or TearDown-IC, respectively.
During In-Session, the server MAY at any time via MC send the client,
or vice versa, a pathsec_tear_down_all signal to cause both the
server and the client to enter TearDown-ALL.
The following signals always bring the Pathsec session back to In-
Session: pathsec_oc_set_up, pathsec_ic_set_up, pathsec_oc_torn_down,
and pathsec_ic_torn_down,
During In-Session, the arrival of verify/audit and opt-out signals
SHALL cause no state transition.
[Ref:3.6.1]
A multi-threaded implementation MAY, in the interest of optimizing
application data throughput, off-load signal handling, which often
requires the session to enter a new state (e.g. SetUp-IC) and then
to return to In-Session. However, the implenmentor is responsible
for synchronizing the In-Session thread with the off-loaded signal
thread(s) such that there MUST NOT be dead-locking or inconsistency
in payload presentatiion (to the application layered above Pathsec).
3.8.1 Pathsec Verify
A Pathsec Verify is always initiated by the client. (If initiated by
the server, then it is termed Pathsec Audit.)
Hui Expires: March 2002 [Page 31]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
The client MAY at any time send a pathsec_verify_request_start signal
to the server via MC, in order to verify the data fidelity in OC, per
request from its appication above the Pathsec layer. The server MUST
signal its own application layered above Pathsec to start a data
verification process. The verification data, which is identical to
the data that the server releases into OC, is transmitted over MC.
The server, commanded by its application layered above, signals the
client that verification data is forthcoming with a
pathsec_verify_response_start.
The server and client applications MUST device their own means for
delimiting the data being verified, e.g. starting from the next HTTP
response.
The data verification request is in force until the client signals
the server with a pathsec_verify_request_end.
The data verification response is in force until the server signals
the client with a pathsec_verify_response_end.
3.8.2 Pathsec Audit
A Pathsec Audit is always initiated by the server. (If initiated by
the client, then it is termed Pathsec Verify.)
A Pathsec Audit may take one of two forms: 1) verifying the data
fidelity in OC; or 2) authenticating IC or OC.
The server MAY at any time send a pathsec_verify_request_start signal
to the client via MC, in order to verify the data fidelity in OC, per
request from its appication above the Pathsec layer. The client MUST
signal its own application layered above Pathsec to start a data
verification process. The verification data, which is the data that
the client receives from OC, is transmitted over MC.
The client, commanded by its application layered above, signals the
server that verification data is forthcoming with a
pathsec_verify_response_start.
The server and client applications MUST device their own means for
delimiting the data being verified, e.g. starting from the next HTTP
response.
The data verification request is in force until the server signals
the client with a pathsec_verify_request_end.
Hui Expires: March 2002 [Page 32]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
The data verification response is in force until the client signals
the server with a pathsec_verify_response_end.
[Ref:3.6.1]
Refer to the pathsec_ping, pathsec_echo, and pathsec_echo_ok sub-
sections in [3.6.1] for the details of authenticating an
inbound/outbound channel without using certicate or password.
3.8.3 Pathsec Opt-out
Either the client or the server MAY opt out of OC, or IC, or the
entire Pathsec session, at any time, without cause, by raising
pathsec_opt_out_oc, pathsec_opt_out_ic, or pathsec_tear_down_all,
respectively.
Refer to the raising pathsec_opt_out_oc, pathsec_opt_out_oc_ack,
pathsec_opt_out_oc_nack, pathsec_opt_out_ic, pathsec_opt_out_ic_ack,
pathsec_opt_out_ic_nack, pathsec_tear_down_all, respectively. and
pathsec_tear_down_all sub-sections in [3.6.1] for the workings of
opt-out signal processing.
The opt-out feature is not available for intermediaries.
A Pathsec implementation MUST provide the necessary API for
applications layered above Pathsec to exercise opt-outs.
3.9 Pathsec Tear-down
All nodes in an IC or OC receiving a pathsec_tear_down_ic or
pathsec_tear_down_oc respectively MUST propagate the received signal
downstream, and then proceed to close down its upstream and
downstream connections. The server and the client should signal
themselves with pathsec_ic_torn_down or pathsec_oc_torn_down as
appropriate.
3.10 Pathsec Close
The closure of a Pathsec session SHOULD be preceeded by the tear-
downs of the channels, in strict sequence: IC, OC, and MC.
3.11 Pathsec Re-open
A naturally closed Pathsec session, i.e. the closure was not due to a
Hui Expires: March 2002 [Page 33]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
fatal alert, MAY be re-opened in manner similar to resuming a TLS
session, using section ID as resumption hint. In order to support
Re-open, both the client and the server MUST be able to cache the
routing metrics of a resumable session off-line.
4 Pathsec Extensions to TLS
Refer to sections 3.5 and 3.6.
5 Application Considerations
Pathsec, co-locating with TLS (above the transport layer) of the OSI
stack, is semantically indifferent to the payload it carries.
Nonetheless, Pathsec is designed to be well suited for the request-
response computing model where a client, a server, and zero or more
intermediaries dot a linear processing path. Finite loops in a
processing path are permissible, as they can be unfolded to form a
linear pattern in a Pathsec Routing Metric.
It is conceivable that Pathsec MAY be used by applications that
involve value-added services provided by intermediaries trusted and
verified by servers and clients. It MAY also be used by content
delivery networks (CDNs) for transporting secured payloads, such as
propagating secured resource updates, say, multicasting authenticated
cache invalidation signals from an origin server to its caching
proxies. (For reference of application models that are being
discussed by IETF working groups and may find Pathsec relevant,
consult literature in [OPES], [WEBI], [CDI].)
It is conceivable that Pathsec may evolve into covering virtual end
points -- in end-to-end simile -- which may be surrogates and proxies
of origin servers or user agents, in a secured content processing
context.
6 Security Considerations
Unless stated otherwise, all failure modes discussed in this section
are catastrophic, though variable in scope of damage. They all
warrant fatal alerts, in spite some damaged sessions may be
salvageable. The server MAY opt to NOT salvage a salvageable session
without cause. Note that detection of failure modes discussed herein
is outside the scope of the Pathsec protocol.
All Pathsec practitioners (in implementation and in deployment)
Hui Expires: March 2002 [Page 34]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
SHOULD be well acquainted with historic and up-to-date issues related
to network, data, and system security.
[Ref:DENNING,NICHOLS,RESCORLA,STARTLS,TLS1,TLSX]
6.1 Compromised Private Key
If the private key of a Pathsec node is compromised, then the Pathsec
Channel involving the compromised node is also compromised for good
and MUST be torn down.
If the compromised node is either the client or the server, then the
session is compromised. All nodes in session MUST enter the
TearDown-All state, to be followed by Close. The routing metric
containing the compromised node is compromised indefinitely, until a
new and valid private key is available. The server (and the client
if applicable) MUST mark the routing metric unusable until proper key
replenishment.
If the compromised node is an intermediary, then the session may be
salvageable, only by the server. If the compromised metric can be
replaced by an alternative one or be repaired with a new private key,
then the server MUST issue pathsec_tear_down_oc or
pathsec_tear_down_ic as appropriate, and all nodes in the damaged
channel MUST enter TearDown-OC (or TearDown-IC as appropriate), and
then return to In-Session. After receiving a pathsec_oc_torn_down
(or pathsec_ic_torn_down) from the client, the server MAY signal
pathsec_set_up_oc (or pathsec_set_up_ic) to lead the session into
SetUp-OC (or SetUp-IC), and In-Session next.
Salvaging a private-key-compromised Pathsec Session without
sufficient justification (which is outside the Pathsec scope) is NOT
RECOMMENDED.
6.2 Compromised Sub-session Key
If a sub-session key is compromised, then an attacker may conduct
man-in-the-middle activities in the channel involving the compromised
hop. The scopes of damage due to compromised sub-session key range
from per sub-session to per session. However, keep in mind that
compromised sub-session key may only be symptomatic to compromised
private key(s), compromised master secret, or compromised pre-master
secret.
6.3 Compromised Master Secret
Hui Expires: March 2002 [Page 35]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
If the master secret, originated from the client during client-server
handshake, is compromised, then an attacker may derive Sub-session
Key(s) shared by any two adjacent Pathsec nodes using the publicly
available key derivation function (KDF). (The KDF takes the captured
master secret and two random blocks separately generated by the
client and the server during handshake as input parameters.) Because
the randoms are always transmitted in plain text in TLS, they are
fairgames to network snoopers. The scope of damage due to
compromised master secret is per session.
6.4 Compromised Pre-Master-Secret
If the pre-master secret, originated from the client during client-
server handshake, is compromised, then an attacker may derive the
master secret (and thus sub-session key(s)) using the publicly
available key derivation function (KDF). (The KDF takes the captured
pre-master secret and two random blocks separately generated by the
client and the server during handshake as input parameters.) Because
the randoms are always transmitted in plain text in TLS, they are
fairgames to network snoopers. The scope of damage due to
compromised pre-master secret is per session.
6.5 Ciphersuite Degradation
Each intermediary of an Outbound Channel or an Inbound Channel SHOULD
support at least one ciphersuite that is functionally equivalent to
and is at least as strong as the one deployed in the Main Channel.
Otherwise, the session is vulernable to downgrade attack.
6.6 Perils of Sharing Master Secret Across Channels
The sharing of a master secret (or pre-master secret in a similar
vein) across-channel SHOULD NOT be allowed. For instance, the master
secret of the Main Channel or the Inbound Channel MUST NOT be shared
with the Outbound Channel. Otherwise, outbound intermediaries, say
language translaters or ad inserters, may derive the necessary sub-
session key(s) to snoop inbound traffic, which may contain passwords
that outbound intermediaries are not privy to.
All nodes of a Pathsec session MUST know that both the server and the
client know the common master secrets of all channels.
6.7 Intermediary Weakness
Hui Expires: March 2002 [Page 36]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
The data in transit to and from the call-outs and value-added
services fashioned by a Pathsec intermediary MUST be secured with a
cryptosystem that is at least as strong as the weakest link in the
Pathsec channel in question. Otherwise, the session is vulernable to
downgrade attack. The server and the client must realize that they,
individually or jointly, have little control over the activities
conducted by trusted intermediaries. Thus frequent audit, or
certification if applicable, of trust-worthiness is RECOMMENDED.
Each intermediary MUST excercise continuous diligence and self-
discipline in securing its own premises in various aspects.
It is possible for "conspiring" intermediaries to modify a routing
policy -- e.g. adding or removing hops from a routing metric,
practically executing loose source routing instead of strict source
routing without the end points' knowledge -- even if the routing
metric has been MACed by the server or the client. Some
intermediaries that are genuinely trustworthy may find this "feature"
a "door" to creative applications, and Pathsec is safe with this
"door" unlocked so long as the intermediaries are genuinely
trustworthy, albeit occasionally mischievous for their own good.
However, there remains the challenge to make this "door" lockable by
the server or the client.
6.8 Remote Execute
Semantics for remote execute are not intrinsic to the Pathsec
protocol. For example, support for dereferencing a Pathsec node
identified as "www.funcity.bom:443/trojanhorse" SHALL NOT be
RECOMMENDED. Both the server and the client SHOULD assume that
intermediaries are very likely to execute remote procudures at their
own discretion. Intermediaries that execute remote procedures MUST
adhere to the guidelines set in 6.7.
7 I18N & L10N Considerations
The hopList of a Pathsec Routing Metric is encoded using UTF-8
[UTF8]. Internationalization (I18N) and localization (L10N) should
be considered only if future domain names are to be specified in text
strings.
Hui Expires: March 2002 [Page 37]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
8 Intellectual Property Rights
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice
this document. Please address the information to the IETF Executive
Director.
9 Acknowledgments
The author wishes to thank in advance his Digital Island and Cable &
Wireless Global colleagues, and the IETF TLS Working Group chair and
members for their comments and supports that shall contribute to the
advancement of the Pathsec protocol from its current stage.
Hui Expires: March 2002 [Page 38]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
10 References
[CDI] Content Distribution/Delivery Internetworking
Working Group, IETF.
[DENNING] D. E. Denning, "Cryptography and Data Security,"
Addison-Wesley, 1982.
[HMAC] H. Krawczyk, M. Bellare, and R. Canetti -- HMAC:
Keyed-hashing for message authentication. IETF RFC 2104,
February 1997.
[HTTP] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter,
P. Leach, and T. Berners-Lee, "Hypertext Transfer Protocol --
HTTP/1.1," IETF RFC 2616, June 1999.
[IP] ISI, "Internet Protocol, DARPA Internet Program, Protocol
Specification," IETF RFC 791, September 1981.
[KWORD] S. Bradner, "Key words for use in RFCs to Indicate
Requirement Levels," IETF RFC 2119, March 1997.
[NICHOLS] R.K. Nichols, "ICSA Guide to Cryptography,"
McGraw Hill, 1999.
[OPES] Open Pluggable Edge Services Working Group, IETF.
[RESCORLA] E. Rescorla, "SSL and TLS, Designing and Building
Secure Systems," Addison-Wesley, 2001.
[STARTLS] P. Hoffman, "SMTP Service Extension for Secure SMTP over
TLS,"IETF RFC 2487, January 1999.
[STEVENS] W.R. Stevens, "TCP/IP Illustrated, Vol 1" Addison Wesley,
1994.
[TLS1] T. Dierks, and C. Allen, "The TLS Protocol - Version 1.0,"
IETF RFC 2246, January 1999.
[TLSX] S. Blake-Wilson, M. Nystrom, D. Hopwood, and J. Mikkelsen,
"TLS Extensions, draft-ietf-tls-extensions-00.txt,"
IETF Internet Draft Work-in-progress, June 2001.
[URI] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource
Identifiers (URI): Generic Syntax," IETF RFC 2396, August
1998.
[UTF8] F. Yergeau, "UTF-8, a transformation format of ISO 10646,"
Hui Expires: March 2002 [Page 39]
INTERNET-DRAFT TLS Pathsec Protocol September 28, 2001
IETF RFC 2279, January 1998.
[WEBI] Web Intermediaries Working Group, IETF.
[XDR] R. Srinivasan, "XDR: External Data Representation Standard,"
IETF RFC 1832, March 1995.
[XMPR] D.L. Mills, "An Experimental Multiple-Path Routing Algorithm,"
IETF RFC 981, March 1986.
11 Author's Address
Joseph Hui
Digital Island
a Cable & Wireless company
225 W. Hillcrest Drive
Thousand Oaks, CA 91360
USA
Phone: +1 805 370 2165
Email: jhui@digisle.net
Hui Expires: March 2002 [Page 40]