Session Authorization Policy Element
Extracted elements (27)
Four operational models are defined (coupled, associated with one PS, associated with two PS, non-associated) because different deployment scenarios require different levels of information in the AUTH_SESSION and different trust relationships between the authorizing entity and the network policy server.
In the coupled model only SESSION_ID is required because the Authorizing Entity and Policy Server are co-located; the Policy Server directly correlates the reservation request to the authorized media without needing address or resource details in the token.
The AUTH_SESSION policy element MUST conform to the POLICY_DATA object format defined in RFC 2750 and is inserted into RSVP PATH messages. It relies on RFC 2750's P-type registry for the AUTH_SESSION type value (0x04).
All AUTH_SESSION implementations MUST support HMAC-MD5-128 (RFC 2104, RFC 1321) as the cryptographic algorithm for computing authentication data when using shared symmetric keys.
All AUTH_SESSION implementations using Kerberos MUST support des-cbc-md5 encryption and rsa-md5-des checksum types (RFC 1510). Triple-DES SHOULD be used over single DES where available.
All session authorization attributes MUST be a multiple of 4 octets in length; attributes that are not MUST be padded to a 4-octet boundary with zero-valued bytes.
An RSVP message MUST contain at most one AUTH_SESSION policy element, and the AUTH_SESSION element received from the authorizing entity MUST be copied without modification into the POLICY_DATA object.
AUTH_SESSION implementations MUST at least provide the ability to manually configure shared symmetric keys and their parameters locally. Keys MUST be configurable with overlapping lifetimes to allow smooth key transitions.
If a PDP fails to verify the AUTH_SESSION policy element, it MUST return a policy control failure (Error Code 02) to the PEP. If RSVP is used, the PEP MUST include the Policy Data object with error details in the outgoing RSVP Error message.
If AUTHENTICATION_DATA is included in the AUTH_SESSION policy element, it MUST be the last attribute in the list.
In the non-associated model, all AUTH_SESSION fields MUST match the resource request; if any field does not match, the request SHOULD be denied.
Replay attacks MUST be prevented. In the non-associated model, AUTH_SESSION MUST include a START_TIME field and Policy Servers MUST support NTP for clock synchronization. In other models, SESSION_ID MUST be used to correlate requests with authorized sessions.
To preserve integrity in untrusted environments, the AUTHENTICATION_DATA attribute MUST be included. The shared symmetric key authentication option MUST be supported by all AUTH_SESSION implementations.
When a source or destination address is required (per the applicable model), at least one IP-address sub-type (1 or 2) MUST be included in the AUTH_SESSION. The address in the resource reservation datagram (e.g., RSVP PATH) MUST match one of the included SOURCE_ADDR or DEST_ADDR attributes.
When shared symmetric keys are used, the first 32 bits of the AUTHENTICATION_DATA field MUST be a key ID to identify the appropriate key among multiple configured keys for a given AUTH_ENT_ID.
AUTH_ENT_ID (X-Type 1) identifies the entity that authorized the session. It supports nine sub-types: IPV4_ADDRESS (32-bit), IPV6_ADDRESS (128-bit), FQDN, ASCII_DN, UNICODE_DN, URI, KRB_PRINCIPAL, X509_V3_CERT, and PGP_CERT.
AUTHENTICATION_DATA (X-Type 8) contains a cryptographic signature over all preceding fields in the AUTH_SESSION policy element. Its computation method depends on the AUTH_ENT_ID sub-type (shared key, Kerberos, or public key).
RESOURCES (X-Type 7) specifies the characteristics of the authorized session using sub-types: BANDWIDTH (max kbps), FLOW_SPEC (RFC 2205), SDP (RFC 2327 media descriptor), or DSCP (RFC 2474 codepoint).
SESSION_ID (X-Type 2) is a unique identifier generated by the authorizing entity for replay detection or to correlate the reservation request with a policy decision; its format is implementation-dependent. The SubType field MUST be set to zero.
SOURCE_ADDR (X-Type 3) and DEST_ADDR (X-Type 4) carry the authorized session endpoint addresses. Both support IPv4 (32-bit), IPv6 (128-bit), UDP_PORT_LIST (16 bits per entry), and TCP_PORT_LIST (16 bits per entry) sub-types.
START_TIME (X-Type 5) records the session start time using NTP Timestamp Format (RFC 1305, sub-type 1) to enable replay attack detection. END_TIME (X-Type 6) records the authorized session end time to bound resource usage.
The AUTH_SESSION policy element (P-Type = 0x04) is a POLICY_DATA-conformant policy element that carries session authorization information. It consists of a 16-bit Length, a 16-bit P-Type field, and a variable-length Session Authorization Attribute List describing the authorized session.
IANA maintains registries for: P-Type values (AUTH_SESSION = 0x04); X-Type attribute types (AUTH_ENT_ID=1 through AUTHENTICATION_DATA=8); and per-X-Type SubType registries (AUTH_ENT_ID subtypes 1–9, SOURCE_ADDR/DEST_ADDR subtypes 1–4, START_TIME/END_TIME NTP_TIMESTAMP=1, RESOURCES subtypes 1–4). Values 0–127 require IETF Consensus; 128–255 are Private Use.
Replay attacks are the primary threat; the START_TIME field (for the non-associated model) and SESSION_ID (for other models) are the defense mechanisms. Failure to synchronize clocks via NTP undermines START_TIME-based replay protection entirely.
Shared symmetric keys minimize policy element size — important in wireless environments. PKI provides non-repudiation and good scalability but significantly increases AUTH_SESSION size due to embedded certificates. Kerberos offers a middle ground.
Each session authorization attribute is encoded with a 16-bit Length, an 8-bit X-Type, an 8-bit SubType, and a variable-length Value field. The attribute MUST be a multiple of 4 octets; padding bytes MUST be zero.
The AUTH_SESSION policy element header encodes a 16-bit Length (in octets, MUST be a multiple of 4) and a 16-bit P-Type set to 0x04, followed by the Session Authorization Attribute List.