RFC 5191
Protocol for Carrying Authentication for Network Access (PANA)
RFC 5191 ๐ Protocol for Carrying Authentication for Network Access (PANA) ๐
Okay bestie, here's the vibe check ๐ง. It's a Standards Track doc, so it's the real deal, not an experiment. The authors are D. Forsberg (Nokia), Y. Ohba (Ed.) (Toshiba), B. Patil, H. Tschofenig (Nokia Siemens Networks), and A. Yegin (Samsung). It came out in May 2008 and is from the Network Working Group ๐ธ. The copy I was given doesn't list anything it obsoletes or updates, so I'm not going to guess ๐.
Status of This Memo โจ
This document is a standards track protocol spec for the Internet community ๐ฆ. It's asking for discussion and suggestions to make it better ๐ฌ. If you want the official standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐. Distribution of this memo is unlimited ๐.
Abstract ๐
Okay so this doc defines PANA (the Protocol for Carrying Authentication for Network Access) ๐ฅ. It's a network-layer transport for EAP (Extensible Authentication Protocol) ๐ซถ, and its whole job is enabling network access authentication between clients and access networks ๐. In EAP terms, PANA is a UDP-based EAP lower layer that sits between the EAP peer and the EAP authenticator ๐ . That's giving layered and iconic ๐.
Table of Contents ๐
1. Introduction ....................................................3
1.1. Specification of Requirements ..............................4
2. Terminology .....................................................4
3. Protocol Overview ...............................................6
4. Protocol Details ................................................7
4.1. Authentication and Authorization Phase .....................7
4.2. Access Phase ..............................................11
4.3. Re-Authentication Phase ...................................11
4.4. Termination Phase .........................................13
5. Processing Rules ...............................................13
5.1. Fragmentation .............................................13
5.2. Sequence Number and Retransmission ........................14
5.3. PANA Security Association .................................15
5.4. Message Authentication ....................................17
5.5. Message Validity Check ....................................17
5.6. PaC Updating Its IP Address ...............................19
5.7. Session Lifetime ..........................................19
6. Message Format .................................................20
6.1. IP and UDP Headers ........................................20
6.2. PANA Message Header .......................................20
6.3. AVP Format ................................................22
7. PANA Messages ..................................................24
7.1. PANA-Client-Initiation (PCI) ..............................27
7.2. PANA-Auth-Request (PAR) ...................................28
7.3. PANA-Auth-Answer (PAN) ....................................28
7.4. PANA-Termination-Request (PTR) ............................28
7.5. PANA-Termination-Answer (PTA) .............................29
7.6. PANA-Notification-Request (PNR) ...........................29
7.7. PANA-Notification-Answer (PNA) ............................29
8. AVPs in PANA ...................................................29
8.1. AUTH AVP ..................................................30
8.2. EAP-Payload AVP ...........................................30
8.3. Integrity-Algorithm AVP ...................................31
8.4. Key-Id AVP ................................................31
8.5. Nonce AVP .................................................31
8.6. PRF-Algorithm AVP .........................................32
8.7. Result-Code AVP ...........................................32
8.8. Session-Lifetime AVP ......................................32
8.9. Termination-Cause AVP .....................................33
9. Retransmission Timers ..........................................33
9.1. Transmission and Retransmission Parameters ................35
10. IANA Considerations ...........................................35
10.1. PANA UDP Port Number .....................................36
10.2. PANA Message Header ......................................36
10.2.1. Message Type ......................................36
10.2.2. Flags .............................................36
10.3. AVP Header ...............................................36
10.3.1. AVP Code ..........................................37
10.3.2. Flags .............................................37
10.4. AVP Values ...............................................37
10.4.1. Result-Code AVP Values ............................37
10.4.2. Termination-Cause AVP Values ......................38
11. Security Considerations .......................................38
11.1. General Security Measures ................................38
11.2. Initial Exchange .........................................40
11.3. EAP Methods ..............................................40
11.4. Cryptographic Keys .......................................40
11.5. Per-Packet Ciphering .....................................41
11.6. PAA-to-EP Communication ..................................41
11.7. Liveness Test ............................................41
11.8. Early Termination of a Session ...........................42
12. Acknowledgments ...............................................42
13. References ....................................................42
13.1. Normative References .....................................42
13.2. Informative References ...................................43
1. Introduction ๐
Providing secure network access takes access control based on authenticating and authorizing both the clients and the access networks ๐. Client-to-network authentication hands over the parameters needed to police traffic flow through the enforcement points ๐ฆ. So we need a protocol to carry authentication methods between the client and the access network, and that's the gap this doc fills ๐ซถ.
The scope here is designing a network-layer transport for network access authentication methods ๐ง. EAP [RFC3748] already provides those methods โจ. In other words, PANA carries EAP, and EAP can carry various authentication methods ๐ . Since EAP is transported above IP, any authentication method that can be carried as an EAP method becomes available to PANA, and therefore to any link-layer technology ๐. The division of labor is clear: PANA is an EAP lower layer, and EAP and EAP methods do their own thing, as [RFC3748] describes ๐.
Various environments and usage models for PANA are listed in Appendix A of [RFC4058] ๐ธ. Potential security threats for network-layer access authentication protocols are discussed in [RFC4016] ๐. Those were essential in defining the requirements of the PANA protocol [RFC4058] ๐ฅ. Also, bestie, note that some of these requirements are imposed by the chosen payload, EAP [RFC3748] ๐.
There are components that are part of a complete secure network access solution but sit outside the PANA protocol spec โจ. These include PANA Authentication Agent (PAA) discovery, authentication method choice, the PANA Authentication Agent-Enforcement Point (PAA-EP) protocol, access control filter creation, and data traffic protection ๐ฆ. They're covered in separate documents (see [RFC5193] and [RFC5192]) ๐.
1.1. Specification of Requirements ๐
In this document, several words signify the requirements of the specification ๐. They're often capitalized, and honestly that's the whole point ๐ . 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 [RFC2119] ๐ซถ.
Keep reading, more parts are coming ๐ธโจ
2. Terminology ๐
okay bestie, let's get the vocab down first because these terms are EVERYWHERE in this doc ๐
PANA Client (PaC): The client side of the protocol, living in the access device (think laptop, PDA, etc. ๐ป). Its whole job is handing over credentials to prove who it is (that's the authentication part) so it can get its network access authorized. The PaC and the EAP peer are colocated in the same access device.
PANA Authentication Agent (PAA): The protocol entity sitting in the access network. It checks the credentials the PaC gives it and authorizes network access for the access device. The PAA and the EAP authenticator (and optionally the EAP server) are colocated in the same node. Also, note that according to the EAP model, the authentication and authorization procedure can be offloaded to the back end Authentication, Authorization, and Accounting (AAA) infrastructure. ๐ง
PANA Session: A PANA session is established between the PaC and the PAA, and it ends when any of these happen: an authentication and authorization or liveness test failure, a message delivery failure after retransmissions hit their maximum values, session lifetime expiration, an explicit termination message, or any event that discontinues the access service. A fixed session identifier is kept for the whole session. A session cannot be shared across multiple network interfaces. ๐ฆ
Session Lifetime: A duration associated with a PANA session. For an established PANA session, the session lifetime is bound to the lifetime of the current authorization given to the PaC. The session lifetime can be extended by a new round of EAP authentication before it expires. Until a PANA session is established, the lifetime SHOULD be set to a value that allows the PaC to detect a failed session in a reasonable amount of time. โณ
Session Identifier: This identifier uniquely identifies a PANA session on the PaC and the PAA. It's included in PANA messages to bind the message to a specific PANA session. It's bidirectional, allocated by the PAA in the initial request message, and freed when the session terminates. The session identifier is assigned by the PAA and is unique within the PAA. ๐
PANA Security Association (PANA SA): A PANA security association is formed between the PaC and the PAA by sharing cryptographic keying material and associated context. The resulting duplex security association protects the bidirectional PANA signaling traffic between the PaC and the PAA. ๐
Enforcement Point (EP): A node on the access network where per-packet enforcement policies (i.e., filters) are applied on the inbound and outbound traffic of access devices. The EP and the PAA may be colocated. EPs should prevent data traffic from and to any unauthorized client, unless that traffic is either PANA or one of the other allowed traffic types (e.g., Address Resolution Protocol (ARP), IPv6 neighbor discovery, DHCP, etc.). ๐ง
Master Session Key (MSK): A key derived by the EAP peer and the EAP server and transported to the EAP authenticator [RFC3748]. ๐๏ธ
For additional terminology definitions, see the PANA framework document [RFC5193]. ๐
3. Protocol Overview โจ
The PANA protocol runs between a client (PaC) and a server (PAA) in order to perform authentication and authorization for the network access service. ๐ค
The protocol messaging is a series of requests and answers, and some of them may be initiated by either end. Each message can carry zero or more AVPs (Attribute-Value Pairs) in the payload. The main payload of PANA is EAP, which does the authentication. PANA helps the PaC and the PAA establish an EAP session. ๐
PANA is a UDP-based protocol. It has its own retransmission mechanism to reliably deliver messages. ๐ฆ
PANA messages are sent between the PaC and the PAA as part of a PANA session. A PANA session has distinct phases:
- Authentication and authorization phase: This is the phase that starts a new PANA session and runs EAP between the PAA and the PaC. Either the PaC or the PAA can initiate the PANA session. The EAP payload (which carries an EAP method inside) is what does the authentication. The PAA tells the PaC the result of authentication and authorization at the end of this phase. ๐ชช
- Access phase: After successful authentication and authorization, the access device gets access to the network and can send and receive IP traffic through the EP(s). At any time during this phase, the PaC and the PAA may optionally send PANA notification messages to test the liveness of the PANA session on the peer. ๐
- Re-authentication phase: During the access phase, the PAA may, and the PaC should, start re-authentication if they want to update the PANA session lifetime before it expires. EAP is carried by PANA to perform re-authentication. This phase may optionally be triggered by both the PaC and the PAA, regardless of the session lifetime. The re-authentication phase is a sub-phase of the access phase. The session moves into this sub-phase from the access phase when re-authentication starts, and it returns to the access phase upon successful re-authentication. ๐
- Termination phase: The PaC or the PAA may choose to discontinue the access service at any time. An explicit disconnect message can be sent by either end. If either the PaC or the PAA disconnects without going through termination messaging, the expiration of a finite session lifetime or failed liveness tests is expected to clean up the session at the other end. ๐
Cryptographic protection of messages between the PaC and the PAA is possible as soon as EAP, together with the EAP method, exports a shared key. That shared key is used to create a PANA SA. The PANA SA helps generate per-message authentication codes that provide integrity protection and authentication. ๐ก๏ธ
4. Protocol Details ๐ธ
The following sections explain in detail the various phases of a PANA session. ๐
4.1. Authentication and Authorization Phase ๐โจ
okay bestie, this phase is the main event ๐ Its whole job is to set up a PANA session and carry EAP messages between the PaC and the PAA. Either side can start the session, and it's giving teamwork ๐ซถ
PaC-initiated Session:
When the PaC starts things, it sends a PANA-Client-Initiation message to the PAA. If the PaC doesn't have the PAA's IP address configured before it starts, DHCP [RFC5192] is the default way to dynamically configure that address ๐ง Other ways of discovering the PAA's IP address can be used for PaC-initiated sessions too, but they're outside the scope of this spec ๐ The PAA that receives the PANA-Client-Initiation MUST respond to the PaC with a PANA-Auth-Request message.
PAA-initiated Session:
When the PAA knows the PaC's IP address, it MAY send an unsolicited PANA-Auth-Request to the PaC ๐ฆ How the PAA learns that address is outside the scope of this spec.
The PAA assigns a session identifier, and it's carried in the initial PANA-Auth-Request message. That same session identifier MUST be carried in every message exchanged between the PAA and the PaC for the rest of the session ๐
When the PaC gets the initial PANA-Auth-Request from a PAA, it replies with a PANA-Auth-Answer if it wants to keep going. If not, it silently discards the PANA-Auth-Request. Simple, but lowkey iconic ๐
The initial PANA-Auth-Request and PANA-Auth-Answer messages MUST have the 'S' (Start) bit set, no matter whether the PaC or the PAA started the session โจ Non-initial PANA-Auth-Request and PANA-Auth-Answer messages, as well as any other messages, MUST NOT have the 'S' (Start) bit set.
It is recommended that the PAA limit how fast it processes incoming PANA-Client-Initiation messages, so it stays robust against denial of service (DoS) attacks ๐ก๏ธ The details of rate limiting are outside the scope of this spec.
If a PANA SA needs to be established with a key-generating EAP method, the Pseudo-Random Function (PRF) and integrity algorithms get picked like this. They're used for PANA_AUTH_KEY derivation (see Section 5.3) and for the AUTH AVP calculation (see Section 5.4) ๐ The PAA sends the initial PANA-Auth-Request carrying one or more PRF-Algorithm AVPs and one or more Integrity-Algorithm AVPs, one for each PRF and integrity algorithm it supports. The PaC then selects one PRF algorithm and one integrity algorithm from those AVPs, and replies with the initial PANA-Auth-Answer carrying one PRF-Algorithm AVP and one Integrity-Algorithm AVP for the picks. The negotiation is protected once the MSK is available, as described in Section 5.3 ๐ฅ
If the PAA wants to stay stateless in response to a PANA-Client-Initiation message, it doesn't include an EAP-Payload AVP in the initial PANA-Auth-Request, and it should not retransmit that message on a timer ๐ธ Because of this, the PaC MUST retransmit the PANA-Client-Initiation message until it receives the second PANA-Auth-Request (not a retransmission of the initial one) from the PAA.
It's possible for the PAA and the PaC to start the session at the same time. That means the PAA sends the initial PANA-Auth-Request without being asked, while the PaC sends a PANA-Client-Initiation message ๐ญ To resolve this race condition, the PAA MUST silently discard the PANA-Client-Initiation message from the PaC after it has already sent the initial PANA-Auth-Request. The PAA uses the source IP address and source port number of the PANA-Client-Initiation message to tell apart PaCs when several PANA-Client-Initiation messages come in from different PaCs ๐งธ
EAP messages ride along in PANA-Auth-Request messages. PANA-Auth-Answer messages are just there to acknowledge receipt of those requests ๐ As an optimization, a PANA-Auth-Answer sent from the PaC MAY include the EAP message. This optimization SHOULD NOT be used when the EAP message takes a while to generate (for example, because a human has to type something in). In that case, sending a PANA-Auth-Answer without an EAP message piggybacked on it can stop the PANA-Auth-Request from being retransmitted for no reason โณ
A Nonce AVP MUST be included in the first PANA-Auth-Request and PANA-Auth-Answer messages that follow the initial pair (i.e., with the 'S' (Start) bit set), and it MUST NOT be included in any other message, except during re-authentication procedures (see Section 4.3) ๐
The result of PANA authentication is carried in the last PANA-Auth-Request sent from the PAA to the PaC. That message carries both the EAP authentication result and the PANA authentication result ๐ The last PANA-Auth-Request MUST be acknowledged with a PANA-Auth-Answer message. The last PANA-Auth-Request and PANA-Auth-Answer MUST have the 'C' (Complete) bit set, and any other message MUST NOT have the 'C' (Complete) bit set. Figure 1 shows an example sequence for a PaC-initiated session ๐ฆ
PaC PAA Message(sequence number)[AVPs]
---------------------------------------------------------------------
-----> PANA-Client-Initiation(0)
<----- PANA-Auth-Request(x)[PRF-Algorithm,Integrity-Algorithm]
// The 'S' (Start) bit set
-----> PANA-Auth-Answer(x)[PRF-Algorithm, Integrity-Algorithm]
// The 'S' (Start) bit set
<----- PANA-Auth-Request(x+1)[Nonce, EAP-Payload]
-----> PANA-Auth-Answer(x+1)[Nonce] // No piggybacking EAP
-----> PANA-Auth-Request(y)[EAP-Payload]
<----- PANA-Auth-Answer(y)
<----- PANA-Auth-Request(x+2)[EAP-Payload]
-----> PANA-Auth-Answer(x+2)[EAP-Payload]
// Piggybacking EAP
<----- PANA-Auth-Request(x+3)[Result-Code, EAP-Payload,
Key-Id, Session-Lifetime, AUTH]
// The 'C' (Complete) bit set
-----> PANA-Auth-Answer(x+3)[Key-Id, AUTH]
// The 'C' (Complete) bit set
Figure 1: Example sequence for the authentication and authorization
phase for a PaC-initiated session ("Piggybacking EAP" is
the case in which an EAP-Payload AVP is carried in PAN)
If a PANA SA needs to be established with a key-generating EAP method, and an MSK is successfully generated, the last PANA-Auth-Request with the 'C' (Complete) bit set MUST contain a Key-Id AVP and an AUTH AVP for the first derivation of keys in the session. Any message after that MUST contain an AUTH AVP ๐
EAP authentication can fail at a pass-through authenticator without sending an EAP Failure message [RFC4137]. When that happens, the PAA SHOULD silently terminate the session, and it's expected that a session timeout on the PaC will clean up the state there ๐งน
Here's a plot twist ๐ฑ EAP authentication can succeed with an EAP Success message, but network access authorization still fails. That could be because an AAA server rejected the authorization, or because the PAA rejected it locally. When this happens, the PAA MUST send the last PANA-Auth-Request with a result code of PANA_AUTHORIZATION_REJECTED. If an MSK is available, the last PANA-Auth-Request and PANA-Auth-Answer messages with the 'C' (Complete) bit set MUST be protected with an AUTH AVP and carry a Key-Id AVP. The PANA session MUST be terminated immediately after the last PANA-Auth message exchange ๐
Heads up: once that last PANA-Auth message exchange is done, the session is over, so don't hang around waiting for it to come back to life.
For reasons described in Section 3 of [RFC5193], the PaC may need to reconfigure its IP address after a successful authentication and authorization phase. That's so it can get an IP address that works for sending data traffic through the EP ๐ In that case, the PAA sets the 'I' (IP Reconfiguration) bit on PANA-Auth-Request messages during the authentication and authorization phase, to let the PaC know it needs to reconfigure. How that reconfiguration is actually done is outside the scope of this document โจ
4.2. Access Phase ๐ท
Once the authentication and authorization phase wraps up successfully, the PaC gets access to the network and can send and receive IP data traffic through the EP(s). The PANA session then moves into the access phase ๐ช In this phase, PANA-Notification-Request and PANA-Notification-Answer messages with the 'P' (Ping) bit set (ping request and ping answer messages, respectively) can be used to check that the PANA session is still alive on the PANA peer ๐ Both the PaC and the PAA are allowed to send a ping request to the other peer whenever they need to make sure the session is still available there, and they expect the peer to send back a ping answer. The ping request and answer messages MUST be protected with an AUTH AVP when a PANA SA is available. A ping request MUST NOT be sent during the authentication and authorization phase, the re-authentication phase, or the termination phase ๐ โโ๏ธ
Implementations MUST limit how often they perform this test. The PaC and the PAA can handle that rate limiting on their own, with no coordination between them, and there's no negotiation of timers for this purpose ๐ซง On top of that, an implementation MAY rate limit how it processes incoming ping requests. Also, if a PAA or PaC decides its connectivity is lost after a fairly small number of unanswered pings, and its peer is aggressively rate limiting ping requests and answers, you can get false positives ๐ฌ So a PAA or PaC should not rely on frequent pinging to quickly figure out that connectivity has been lost. Be patient, bestie ๐ญ
4.3. Re-Authentication Phase โจ
okay so the PANA session in the access phase can hop into re-authentication to stretch its lifetime by just running EAP again ๐๐. once re-auth wraps up successfully, the session goes right back to the access phase ๐ . if it doesn't work out, the session gets terminated ๐.
When the PaC starts re-auth, it sends a PANA-Notification-Request with the 'A' (re-Authentication) bit set (aka a re-authentication request message) to the PAA ๐ฆ. this message MUST contain the session identifier that was assigned to the session being re-authenticated ๐ซถ. if the PAA already has an established PANA session for that PaC with a matching session identifier, it MUST first reply with a PANA-Notification-Answer message with the 'A' (re-Authentication) bit set (the re-authentication answer message) ๐ธ. then it sends a PANA-Auth-Request to kick off a brand new EAP authentication ๐ฅ. if the PAA can't identify the session, it MUST silently discard the message ๐. also, the first PANA-Auth-Request and PANA-Auth-Answer messages in the re-authentication phase MUST have the 'S' (Start) bit cleared and carry a Nonce AVP ๐.
the PaC might get a PANA-Auth-Request before the answer to its own re-auth request shows up ๐ญ. this can happen because of packet re-ordering, or because the PaC and PAA both try to re-authenticate at the same time (a race condition, very dramatic ๐). the PaC MUST keep discarding those received PANA-Auth-Request messages until it gets the answer to its request ๐ง.
When the PAA starts re-auth, it sends a PANA-Auth-Request containing the session identifier for the PaC ๐. the PAA MUST initiate EAP re-authentication before the current session lifetime expires โฐ. the clock is literally ticking, bestie.
re-authentication of an ongoing PANA session MUST NOT reset the sequence numbers ๐ซโจ. the numbers keep counting, no restarting allowed.
For any re-authentication, if there's an established PANA SA, the re-authentication request and answer messages, plus the later PANA-Auth-Request and PANA-Auth-Answer messages, MUST be protected with an AUTH AVP ๐. the final PANA-Auth-Request and PANA-Auth-Answer messages, and any PANA message after them, MUST be protected by using the key generated from the latest EAP authentication ๐๏ธ๐. main character security energy.
Here's the example sequence for it (the PaC starts it all) ๐
PaC PAA Message(sequence number)[AVPs]
---------------------------------------------------------------------
-----> PANA-Notification-Request(q)[AUTH]
// The 'A' (re-Authentication) bit set
<----- PANA-Notification-Answer(q)[AUTH]
// The 'A' (re-Authentication) bit set
<----- PANA-Auth-Request(p)[EAP-Payload, Nonce, AUTH]
-----> PANA-Auth-Answer(p)[AUTH, Nonce]
-----> PANA-Auth-Request(q+1)[EAP-Payload, AUTH]
<----- PANA-Auth-Answer(q+1)[AUTH]
<----- PANA-Auth-Request(p+1)[EAP-Payload, AUTH]
-----> PANA-Auth-Answer(p+1)[EAP-Payload, AUTH]
<----- PANA-Auth-Request(p+2)[Result-Code, EAP-Payload,
Key-Id, Session-Lifetime, AUTH]
// The 'C' (Complete) bit set
-----> PANA-Auth-Answer(p+2)[Key-Id, AUTH]
// The 'C' (Complete) bit set
Figure 2: Example sequence for the re-authentication phase initiated by PaC
4.4. Termination Phase ๐
okay so a PANA session can be explicitly terminated, and either side can start it ๐ช. the PaC can do it (that's a disconnect indication) or the PAA can do it (that's a session revocation) ๐ซฃ. the PANA-Termination-Request and PANA-Termination-Answer message exchanges handle both the disconnect-indication and the session-revocation procedures ๐
.
the reason for termination goes in the Termination-Cause AVP ๐. if there's an established PANA SA between the PaC and the PAA, all messages exchanged during the termination phase MUST be protected with an AUTH AVP ๐. when the sender of the PANA-Termination-Request gets a valid acknowledgment, all states kept for the PANA session MUST be terminated immediately ๐โจ. poof, gone, no drama.
5. Processing Rules ๐ง
5.1. Fragmentation ๐งฉ
PANA doesn't do fragmentation of its own messages ๐ โโ๏ธ. instead, it leans on the fragmentation that EAP methods and the IP layer already provide, when it's needed ๐.
5.2. Sequence Number and Retransmission ๐ข
PANA uses sequence numbers to get ordered and reliable delivery of messages ๐.
the PaC and PAA each keep track of two sequence numbers ๐ฏ. one is for the number on the next outgoing request, and the other is for matching the number on the next incoming request ๐ฌ. these are 32-bit unsigned numbers ๐. they go up by 1 as new requests are made and received, and they wrap back to zero on the next message after 2^32-1 ๐. answers always carry the same sequence number as their request ๐ซถ. retransmissions reuse the sequence number from the original packet ๐ฆ.
the initial sequence numbers (ISN) are picked at random by the PaC and PAA when they send their very first request messages ๐ฒ. the PANA-Client-Initiation message carries sequence number 0 ๐ธ.
a received request is only valid, sequence-wise, if and only if its sequence number matches the expected value โ . this check doesn't apply to the PANA-Client-Initiation message or the initial PANA-Auth-Request message ๐.
a received answer is only valid, sequence-wise, if and only if its sequence number matches the one from the currently outstanding request โจ. a peer can only have one outstanding request at a time ๐ซง.
PANA request messages get retransmitted on a timer until an answer shows up (then the retransmission timer stops) โฑ๏ธ. or, if the number of retransmissions hits the maximum value, the PANA session MUST be terminated immediately ๐.
the retransmission timers SHOULD be calculated as described in Section 9 ๐, unless a deployment decides to use its own retransmission timers, tuned for the underlying link-layer characteristics ๐ ๏ธ.
unless a message gets dropped due to rate limiting, the PaC and PAA MUST respond to all duplicate request messages they receive ๐. the last answer sent MAY be cached, in case it never reaches the peer and the peer retransmits the last request ๐ฆ. when it's available, the cached answer can be used instead of fully processing the retransmitted request and building a new answer from scratch โก.
5.3. PANA Security Association ๐๐
a PANA SA is created as an attribute of a PANA session when EAP authentication succeeds and an MSK is created ๐. a PANA SA is NOT created when PANA authentication fails, or when the EAP method doesn't produce an MSK ๐
โโ๏ธ. when a new MSK gets derived in the PANA re-authentication phase, any key derived from the old MSK MUST be updated to a new one that's derived from the new MSK ๐โจ. to tell the new MSK apart from the old ones, one Key-Id AVP MUST be carried in the last PANA-Auth-Request and PANA-Auth-Answer messages that have the 'C' (Complete) bit set, at the end of the EAP authentication that produced the new MSK ๐ท๏ธ. the Key-Id AVP is of type Unsigned32, and it MUST contain a value that uniquely identifies the MSK within the PANA session ๐. the last PANA-Auth-Answer with the 'C' (Complete) bit set, sent in response to the last PANA-Auth-Request with the 'C' (Complete) bit set, MUST contain a Key-Id AVP with the same MSK identifier that was in the request ๐ช. the last PANA-Auth-Request and PANA-Auth-Answer messages that carry a Key-Id AVP MUST also carry an AUTH AVP, and its value is computed using the new PANA_AUTH_KEY derived from the new MSK ๐. the spec doesn't force any particular way to calculate the Key-Id AVP value, but a simple method is to use monotonically increasing numbers ๐ข๐.
the PANA session lifetime is bounded by the authorization lifetime granted by the authentication server (same as the MSK lifetime) โณ. the lifetime of the PANA SA (and so the PANA_AUTH_KEY) is the same as the lifetime of the PANA session ๐ซถ. the created PANA SA gets deleted when its PANA session is terminated ๐๏ธ.
here are the PANA SA and PANA session attributes ๐:
PANA Session attributes:
- Session Identifier
- IP address and UDP port number of the PaC
- IP address and UDP port number of the PAA
- Sequence number for the next outgoing request
- Sequence number for the next incoming request
- Last transmitted message payload
- Retransmission interval
- Session lifetime
- PANA SA attributes
PANA SA attributes:
- Nonce generated by PaC (PaC_nonce)
- Nonce generated by PAA (PAA_nonce)
- MSK
- MSK Identifier
- PANA_AUTH_KEY
- Pseudo-random function
- Integrity algorithm
the PANA_AUTH_KEY is derived from the available MSK, and it's used to integrity protect PANA messages ๐ก๏ธ. it's computed like this ๐งฎ:
PANA_AUTH_KEY = prf+(MSK, "IETF PANA"|I_PAR|I_PAN|
PaC_nonce|PAA_nonce|Key_ID)
where:
- The prf+ function is defined in IKEv2 [RFC4306]. The pseudo-random function used for prf+ gets negotiated using the PRF-Algorithm AVP in the initial
PANA-Auth-RequestandPANA-Auth-Answerexchange with the'S'(Start) bit set ๐ค. - MSK is the master session key generated by the EAP method ๐๏ธ.
- "IETF PANA" is the ASCII code representation of the non-NULL terminated string (leaving out the double quotes around it) ๐ค.
- I_PAR and I_PAN are the initial
PANA-Auth-RequestandPANA-Auth-Answermessages (the PANA header plus the PANA AVPs that follow it) with the'S'(Start) bit set, respectively ๐จ. - PaC_nonce and PAA_nonce are the values of the Nonce AVP carried in the first non-initial
PANA-Auth-AnswerandPANA-Auth-Requestmessages in the authentication and authorization phase, or the firstPANA-Auth-AnswerandPANA-Auth-Requestmessages in the re-authentication phase, respectively ๐ฒ. - Key_ID is the value of the Key-Id AVP ๐ท๏ธ.
the length of PANA_AUTH_KEY depends on the integrity algorithm in use ๐. Section 5.4 has the detailed usage of PANA_AUTH_KEY ๐
.
5.4. Message Authentication ๐ก๏ธ๐ซถ
a PANA message can carry an AUTH AVP to cryptographically protect it ๐.
when an AUTH AVP is in a PANA message, its Value field is calculated with PANA_AUTH_KEY like this โจ:
AUTH AVP value = PANA_AUTH_HASH(PANA_AUTH_KEY, PANA_PDU)
here, PANA_PDU is the PANA message including the PANA header, with the AUTH AVP Value field first set to 0 ๐งฎ. PANA_AUTH_HASH stands for the integrity algorithm negotiated using the Integrity-Algorithm AVP in the initial PANA-Auth-Request and PANA-Auth-Answer exchange with the 'S' (Start) bit set ๐ค. the PaC and PAA MUST use the same integrity algorithm to calculate every AUTH AVP they originate and receive ๐๐ฆ.
5.5. Message Validity Check โจ
okay so when a PANA message lands, it's considered invalid if at least one of these checks fails ๐ซ Let's go through them!
- Each field in the message header has to contain a valid value: sequence number, message length, message type, flags, session identifier, etc. ๐
- The message type has to be one of the expected types for the current state. These are the messages that are unexpected and invalid ๐
- In the authentication and authorization phase:
PANA-Client-Initiationafter the initialPANA-Auth-RequestandPANA-Auth-Answerexchange withS(Start) bit set has finished.- Re-authentication request.
- Ping request.
- The last
PANA-Auth-RequestwithC(Complete) bit set, before the initialPANA-Auth-RequestandPANA-Auth-Answerexchange withS(Start) bit set has finished. - The initial
PANA-Auth-RequestwithS(Start) bit set, after a PaC receives a valid non-initialPANA-Auth-RequestwithS(Start) bit cleared. PANA-Termination-Request.
- In the re-authentication phase:
PANA-Client-Initiation.- The initial
PANA-Auth-Request.
- In the access phase:
PANA-Auth-Request.PANA-Client-Initiation.
- In the termination phase:
PANA-Client-Initiation.- All requests except
PANA-Termination-Requestand ping request.
- In the authentication and authorization phase:
- The message payload has to contain a valid set of AVPs allowed for that message type. No required AVP can be missing, and no AVP that needs to sit in a fixed position can show up somewhere else ๐ฆ
- Each AVP has to be recognized and decoded correctly ๐
- Once PANA authentication succeeds using a key-generating EAP method, the
PANA-Auth-Requestmessage carrying the EAP Success and any later message in that session has to contain anAUTHAVP. Its value has to match the hash value computed against the received message ๐
Invalid messages MUST be discarded. This is how you stay robust against DoS attacks ๐ก๏ธ
5.6. PaC Updating Its IP Address ๐ฆ
A PaC's IP address used for PANA can change in certain situations. For example, IP address reconfiguration might be needed so the PaC can get an IP address after successful PANA authentication (see Section 3 of [RFC5193]), or the PaC might move from one IP link to another within the same PAA's realm. To keep the PANA session alive through all this, the PAA needs to be told about the change of PaC address ๐บ๏ธ
After the PaC has changed its IP address used for PANA, it MUST send any valid PANA message. If the message carrying the new PaC IP address in the Source Address field of the IP header is valid, the PAA MUST update the PANA session with the new PaC address. If there is an established PANA SA, the message MUST be protected with an AUTH AVP ๐โจ
5.7. Session Lifetime โณ
The authentication and authorization phase decides the PANA session lifetime, and that lifetime gets indicated to the PaC when network access authorization succeeds. So when the last PANA-Auth-Request message (the one with the C (Complete) bit set) in the authentication and authorization phase or the re-authentication phase carries a Result-Code AVP with a value of PANA_SUCCESS, a Session-Lifetime AVP MUST also be carried in that message. A Session-Lifetime AVP MUST be ignored when it's included in other PANA messages ๐
โโ๏ธ
The lifetime is non-negotiable, and the PaC can use it to manage its PANA-related state. If the PaC wants to extend the session, it MUST initiate the re-authentication phase before the current session lifetime expires ๐โโ๏ธ๐จ
The PaC and the PAA MAY use information obtained outside PANA (for example, lower-layer indications) to speed up detecting a disconnected peer. The availability and reliability of those indications MAY depend on a specific link-layer or network topology, so they are only hints ๐ก A PANA peer SHOULD use the ping request and answer exchange to verify that a peer is really no longer alive, unless information obtained outside PANA is already being used to speed up detecting a disconnected peer ๐
The session lifetime parameter has nothing to do with sending ping request messages. Those messages are used for checking the liveness of the peer asynchronously, and the decision to send one is made locally without any coordination between the peers ๐ง
6. Message Format ๐
This section defines the message formats for the PANA protocol ๐
6.1. IP and UDP Headers ๐ธ
Any PANA message is unicast between the PaC and the PAA.
For any PANA message sent from the peer that initiated the PANA session, the UDP source port is set to any number on which that peer can receive incoming PANA messages, and the destination port is set to the assigned PANA port number (716). For any PANA message sent from the other peer, the source port is set to the assigned PANA port number (716), and the destination port is copied from the source port of the last received message. If both the PaC and PAA initiate the session (meaning PANA-Client-Initiation and unsolicited PANA-Auth-Request messages cross each other), then the PaC is identified as the initiator ๐ค All PANA peers MUST listen on the assigned PANA port number (716) ๐
6.2. PANA Message Header ๐
Here's a summary of the PANA message header format. The fields are sent in network byte order ๐ง
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Message Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Session Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AVPs ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
Reserved ๐ซง
This 16-bit field is reserved for future use. It MUST be set to zero and ignored by the receiver.
Message Length ๐
The Message Length field is two octets, and it indicates the length of the PANA message, including the header fields.
Flags ๐ฉ
The Flags field is two octets. The following bits are assigned:
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R S C A P I r r r r r r r r r r|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
R (Request) If set, the message is a request. If cleared, the message is an answer. ๐จ
S (Start) If set, the message is the first PANA-Auth-Request or PANA-Auth-Answer in the authentication and authorization phase. For other messages, this bit MUST be cleared. ๐
C (Complete) If set, the message is the last PANA-Auth-Request or PANA-Auth-Answer in the authentication and authorization phase. For other messages, this bit MUST be cleared. ๐
A (re-Authentication) If set, the message is a PANA-Notification-Request or PANA-Notification-Answer to initiate re-authentication. For other messages, this bit MUST be cleared. ๐
P (Ping) If set, the message is a PANA-Notification-Request or PANA-Notification-Answer for a liveness test. For other messages, this bit MUST be cleared. ๐
I (IP Reconfiguration) If set, it indicates that the PaC is required to perform IP address reconfiguration after the successful authentication and authorization phase, in order to configure an IP address that is usable for exchanging data traffic across EP. This bit is set by the PAA only for PANA-Auth-Request messages in the authentication and authorization phase. For other messages, this bit MUST be cleared. ๐ ๏ธ
r (reserved) These flag bits are reserved for future use. They MUST be set to zero and ignored by the receiver. ๐
Message Type ๐ท๏ธ
The Message Type field is two octets, and it's used to communicate the message type. Message Type allocation is managed by IANA [IANAWEB] ๐
Session Identifier ๐ชช
This field contains a 32-bit session identifier.
Sequence Number ๐ข
This field contains a 32-bit sequence number.
AVPs ๐งฉ
AVPs are a method of encapsulating information relevant to the PANA message. See Section 6.3 for more information on AVPs ๐
6.3. AVP Format ๐
Okay so every AVP of type OctetString MUST get padded so it lines up on a 32-bit boundary, bc the other AVP types just align naturally ๐ซถ You tack zero-valued bytes onto the end of the AVP Value field until you hit that word boundary. The padding doesn't show up in the AVP Length field [RFC3588], so don't count it ๐
The fields in the AVP are sent in network byte order ๐ธ Here's the layout:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AVP Code | AVP Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AVP Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vendor-Id (opt) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Value ...
+-+-+-+-+-+-+-+-+
AVP Code
The AVP Code, together with the optional Vendor-Id field, identifies the attribute that follows โจ If the V-bit isn't set, there's no Vendor-Id, and the AVP Code refers to an IETF attribute ๐
AVP Flags
The AVP Flags field is two octets, and these bits are assigned ๐
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V r r r r r r r r r r r r r r r|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
V (Vendor)
The 'V' (Vendor) bit tells you whether the optional Vendor-Id field is in the AVP header ๐ฆ When it's set, the AVP Code belongs to that specific vendor's code address space. Every AVP defined in this document MUST have the 'V' (Vendor) bit cleared ๐ โโ๏ธ
r (reserved)
These flag bits are saved for future use ๐ง They MUST be set to zero and ignored by the receiver.
AVP Length
The AVP Length field is two octets and counts the octets in the Value field ๐ The AVP Code, AVP Length, AVP Flags, Reserved and Vendor-Id fields don't get counted in the AVP Length value, so don't double-dip ๐
Reserved
This two-octet field is reserved for future use ๐ It MUST be set to zero and ignored by the receiver.
Vendor-Id
The Vendor-Id field only shows up if the 'V' (Vendor) bit is set in the AVP Flags field ๐ This optional four-octet field holds the IANA assigned "SMI Network Management Private Enterprise Codes" [IANAWEB] value, encoded in network byte order. Any vendor who wants a vendor-specific PANA AVP MUST use their own Vendor-Id along with their privately managed AVP address space. That way they won't collide with another vendor's vendor-specific AVP(s) or with future IETF applications ๐ฅ
Value
The Value field is zero or more octets and holds info specific to the Attribute ๐ The format of the Value field depends on the AVP Code and Vendor-Id fields, and its length comes from the AVP Length field ๐ซง
7. PANA Messages ๐
Every Request/Answer message pair gets its own sequence number, and the sub-type (request or answer) is shown by the 'R' (Request) bit in the Message Flags field of the PANA message header ๐ฆข
Every PANA message MUST contain a message type in its header's Message Type field, since that's what decides the action to take for a particular message ๐ฏ Figure 3 lists every PANA message defined in this document:
Message Name Abbrev. Message PaC<->PAA Ref.
Type
---------------------------------------------------------------------
PANA-Client-Initiation PCI 1 --------> 7.1
PANA-Auth-Request PAR 2 <-------> 7.2
PANA-Auth-Answer PAN 2 <-------> 7.3
PANA-Termination-Request PTR 3 <-------> 7.4
PANA-Termination-Answer PTA 3 <-------> 7.5
PANA-Notification-Request PNR 4 <-------> 7.6
PANA-Notification-Answer PNA 4 <-------> 7.7
---------------------------------------------------------------------
Figure 3: Table of PANA Messages
The language used for PANA message definitions (basically, which AVPs are valid for each PANA message type) in Section 7.1 through Section 7.7 is ABNF [RFC5234] ๐ Here's the grammar:
message-def = Message-Name LWSP "::=" LWSP PANA-message
Message-Name = PANA-name
PANA-name = ALPHA *(ALPHA / DIGIT / "-")
PANA-message = header LWSP *fixed LWSP *required
LWSP *optional LWSP *fixed
header = "<" LWSP "PANA-Header:" LWSP Message-Type
[r-bit] [s-bit] [c-bit] [a-bit] [p-bit] [i-bit]
LWSP ">"
Message-Type = 1*DIGIT
; The Message Type assigned to the message
r-bit = ",REQ"
; If present, the 'R' (Request) bit in the Message
; Flags is set, indicating that the message
; is a request, as opposed to an answer.
s-bit = ",STA"
; If present, the 'S' (Start) bit in the Message
; Flags is set, indicating that the message
; is the initial PAR or PAN in authentication
; and authorization phase.
c-bit = ",COM"
; If present, the 'C' bit in the Message
; Flags is set, indicating that the message
; is the final PAR and PAN in authentication
; and authorization phase or re-authentication
; phase.
a-bit = ",REA"
; If present, the 'A' (re-Authentication) bit
; in the Message Flags is set, indicating that
; the message is a re-authentication request or
; answer.
p-bit = ",PIN"
; If present, the 'P' (Ping) bit in the Message
; Flags is set, indicating that the message
; is a ping request or answer.
i-bit = ",IPR"
; If present, the 'I' (IP Reconfiguration) bit
; in the Message Flags is set, indicating that
; the PaC requires IP address reconfiguration
; after successful authentication and
; authorization phase.
fixed = [qual] "<" LWSP avp-spec LWSP ">"
; Defines the fixed position of an AVP.
required = [qual] "{" LWSP avp-spec LWSP "}"
; The AVP MUST be present and can appear
; anywhere in the message.
optional = [qual] "[" LWSP avp-name LWSP "]"
; The avp-name in the 'optional' rule cannot
; evaluate any AVP Name that is included
; in a fixed or required rule. The AVP can
; appear anywhere in the message.
qual = [min] "*" [max]
; See ABNF conventions, RFC 5234 Section 3.6.
; The absence of any qualifiers depends on whether
; it precedes a fixed, required, or optional
; rule. If a fixed or required rule has no
; qualifier, then exactly one such AVP MUST
; be present. If an optional rule has no
; qualifier, then 0 or 1 such AVP may be
; present.
;
; NOTE: "[" and "]" have a different meaning
; than in ABNF (see the optional rule, above).
; These braces cannot be used to express
; optional fixed rules (such as an optional
; AUTH at the end). To do this, the convention
; is '0*1fixed'.
min = 1*DIGIT
; The minimum number of times the element may
; be present. The default value is zero.
max = 1*DIGIT
; The maximum number of times the element may
; be present. The default value is infinity. A
; value of zero implies the AVP MUST NOT be
; present.
avp-spec = PANA-name
; The avp-spec has to be an AVP Name, defined
; in the base or extended PANA protocol
; specifications.
avp-name = avp-spec / "AVP"
; The string "AVP" stands for *any* arbitrary
; AVP Name, which does not conflict with the
; required or fixed position AVPs defined in
; the message definition.
7.1. PANA-Client-Initiation (PCI) ๐
The PANA-Client-Initiation (PCI) message is for PaC-initiated sessions ๐ The Sequence Number and Session Identifier fields in this message MUST be set to zero (0).
PANA-Client-Initiation ::= < PANA-Header: 1 >
*[ AVP ]
7.2. PANA-Auth-Request (PAR) ๐
The PANA-Auth-Request (PAR) message gets sent by either the PAA or the PaC ๐ซ
The message MUST NOT have both the 'S' (Start) and 'C' (Complete) bits set. ๐ซ
PANA-Auth-Request ::= < PANA-Header: 2,REQ[,STA][,COM][,IPR] >
[ EAP-Payload ]
[ Nonce ]
*[ PRF-Algorithm ]
*[ Integrity-Algorithm ]
[ Result-Code ]
[ Session-Lifetime ]
[ Key-Id ]
*[ AVP ]
0*1< AUTH >
7.3. PANA-Auth-Answer (PAN) ๐
The PANA-Auth-Answer (PAN) message is sent by either the PaC or the PAA in response to a PANA-Auth-Request message ๐ฌ
The message MUST NOT have both the 'S' (Start) and 'C' (Complete) bits set. ๐ โโ๏ธ
PANA-Auth-Answer ::= < PANA-Header: 2[,STA][,COM] >
[ Nonce ]
[ PRF-Algorithm ]
[ Integrity-Algorithm ]
[ EAP-Payload ]
[ Key-Id ]
*[ AVP ]
0*1< AUTH >
7.4. PANA-Termination-Request (PTR) ๐
The PANA-Termination-Request (PTR) message is sent by either the PaC or the PAA to terminate a PANA session ๐ฆ
PANA-Termination-Request ::= < PANA-Header: 3,REQ >
< Termination-Cause >
*[ AVP ]
0*1< AUTH >
7.5. PANA-Termination-Answer (PTA) ๐ท
The PANA-Termination-Answer (PTA) message is sent by either the PaC or the PAA in response to a PANA-Termination-Request ๐ซถ
PANA-Termination-Answer ::= < PANA-Header: 3 >
*[ AVP ]
0*1< AUTH >
7.6. PANA-Notification-Request (PNR) ๐
The PANA-Notification-Request (PNR) message is used for signaling re-authentication and performing a liveness test โจ See Section 4.3 and Section 4.2 for details on re-authentication and liveness test, respectively.
The message MUST have one of the 'A' (re-Authentication) and 'P' (Ping) bits exclusively set. ๐
PANA-Notification-Request ::= < PANA-Header: 4,REQ[,REA][,PIN] >
*[ AVP ]
0*1< AUTH >
7.7. PANA-Notification-Answer (PNA) โจ
bestie, the PNA is the reply ๐ The PAA (PaC) sends it back to the PaC (PAA) after it gets a PANA-Notification-Request from that side. It's giving "got your message, here's my answer."
The message MUST have one of the 'A' (re-Authentication) and 'P' (Ping) bits exclusively set. So it's one or the other, never both ๐ โโ๏ธ
PANA-Notification-Answer ::= < PANA-Header: 4[,REA][,PIN] >
*[ AVP ]
0*1< AUTH >
8. AVPs in PANA โจ
okay, AVPs time ๐ This document uses the AVP Value Formats 'OctetString' and 'Unsigned32' as defined in Section 4.2 of [RFC3588]. We're not repeating those definitions here, so go check them out if you need them ๐ค
Next up is a table that shows which AVPs show up in which PANA messages, and whether they MAY or MAY NOT be there. The symbols mean:
0 The AVP MUST NOT be present in the message.
0-1 Zero or one instance of the AVP MAY be present in the message.
It is considered an error if there is more than one instance of
the AVP.
1 One instance of the AVP MUST be present in the message.
0+ Zero or more instances of the AVP MAY be present in the
message.
Here's the actual table ๐
+---------------------------+
| Message Type |
+---+---+---+---+---+---+---+
Attribute Name |PCI|PAR|PAN|PTR|PTA|PNR|PNA|
----------------------+---+---+---+---+---+---+---+
AUTH | 0 |0-1|0-1|0-1|0-1|0-1|0-1|
EAP-Payload | 0 |0-1|0-1| 0 | 0 | 0 | 0 |
Integrity-Algorithm | 0 |0+ |0-1| 0 | 0 | 0 | 0 |
Key-Id | 0 |0-1|0-1| 0 | 0 | 0 | 0 |
Nonce | 0 |0-1|0-1| 0 | 0 | 0 | 0 |
PRF-Algorithm | 0 |0+ |0-1| 0 | 0 | 0 | 0 |
Result-Code | 0 |0-1| 0 | 0 | 0 | 0 | 0 |
Session-Lifetime | 0 |0-1| 0 | 0 | 0 | 0 | 0 |
Termination-Cause | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
----------------------+---+---+---+---+---+---+---+
Figure 4: AVP Occurrence Table
8.1. AUTH AVP
The AUTH AVP (AVP Code 1) is the one that integrity protects PANA messages ๐ Its data payload holds the Message Authentication Code, encoded in network byte order. The length changes depending on which integrity algorithm is in use. The data is of type OctetString.
8.2. EAP-Payload AVP
The EAP-Payload AVP (AVP Code 2) wraps up the actual EAP message being swapped between the EAP peer and the EAP authenticator ๐ Its data is of type OctetString.
8.3. Integrity-Algorithm AVP
The Integrity-Algorithm AVP (AVP Code 3) tells everyone which integrity algorithm to use when computing an AUTH AVP ๐งฎ Its data is of type Unsigned32, and it holds an Internet Key Exchange Protocol version 2 (IKEv2) Transform ID of Transform Type 3 [RFC4306] for that algorithm.
Here's the big rule: all PANA implementations MUST support AUTH_HMAC_SHA1_160 (7) [RFC4595]. Non-negotiable, periodt ๐
8.4. Key-Id AVP
The Key-Id AVP (AVP Code 4) is of type Integer32 and holds an MSK identifier ๐๏ธ The PAA assigns that identifier, and it MUST be unique within the PANA session. No duplicate keys in the same session, bestie ๐ โโ๏ธ
8.5. Nonce AVP
The Nonce AVP (AVP Code 5) carries a randomly chosen value that gets used in cryptographic key computations ๐ฒ The recommendations in [RFC4086] apply when it comes to generating random values. Its data is of type OctetString, and it's a randomly generated value in opaque format. The data length MUST be between 8 and 256 octets, inclusive.
The length of the nonces depends on which pseudo-random functions (PRFs) are available, plus how much trust the PaC and the PAA put in each other to compute random values. There are two ways the length gets decided, depending on whether:
- The PaC and the PAA each are likely to be able to compute a random nonce (according to [RFC4086]). The length of the nonce has to be 1/2 the length of the PRF key (e.g., 10 octets in the case of HMAC-SHA1).
- The PaC and the PAA each are not trusted with regard to the computation of a random nonce (according to [RFC4086]). The length of the nonce has to have the full length of the PRF key (e.g., 20 octets in the case of HMAC-SHA1).
The strongest available PRF for PANA also has to be considered in this math ๐ง Right now only a single PRF (namely HMAC-SHA1) is available, so the maximum output length is 20 octets. Therefore, the maximum length of the nonce value SHOULD be 20 octets.
8.6. PRF-Algorithm AVP
The PRF-Algorithm AVP (AVP Code 6) conveys the pseudo-random function used to derive PANA_AUTH_KEY ๐ Its data is of type Unsigned32, and it contains an IKEv2 Transform ID of Transform Type 2 [RFC4306]. All PANA implementations MUST support PRF_HMAC_SHA1 (2) [RFC2104]. Same energy as the integrity algorithm, no exceptions ๐
8.7. Result-Code AVP
The Result-Code AVP (AVP Code 7) is of type Unsigned32, and it tells you whether an EAP authentication finished successfully โ The values are:
PANA_SUCCESS 0
Both authentication and authorization processes are successful.
PANA_AUTHENTICATION_REJECTED 1
Authentication has failed. When authentication fails,
authorization is also considered to have failed.
PANA_AUTHORIZATION_REJECTED 2
The authorization process has failed. This error could occur when
authorization is rejected by a AAA server or rejected locally by a
PAA, even if the authentication procedure has succeeded.
8.8. Session-Lifetime AVP
The Session-Lifetime AVP (AVP Code 8) is the countdown โณ It holds the number of seconds left before the current session is considered expired. The data is of type Unsigned32.
8.9. Termination-Cause AVP
The Termination-Cause AVP (AVP Code 9) explains why the requester is ending a session ๐ช Its data is of type Enumerated. These are the Termination-Cause values used with PANA:
LOGOUT 1 (PaC -> PAA)
The client initiated a disconnect.
ADMINISTRATIVE 4 (PAA -> PaC)
The client was not granted access or was disconnected due to
administrative reasons.
SESSION_TIMEOUT 8 (PAA -> PaC)
The session has timed out, and service has been terminated.
9. Retransmission Timers
so retransmissions ๐ The PANA protocol provides them for the PANA-Client-Initiation message and for all request messages.
PANA's retransmission timers are based on the model used in DHCPv6 [RFC3315], and it borrows the variables from that spec too ๐ค PANA is request/response based. The message exchange ends when the requester successfully receives the answer, or when it's considered to have failed under the retransmission mechanism described below.
The retransmission behavior is controlled by these variables:
RT Retransmission timeout from the previous (re)transmission
IRT Base value for RT for the initial retransmission
MRC Maximum retransmission count
MRT Maximum retransmission time
MRD Maximum retransmission duration
RAND Randomization factor
Every time a message is sent or resent, the sender sets RT using the rules below. If RT expires before the message exchange ends, the sender recomputes RT and retransmits the message ๐
Each new RT computation includes a randomization factor (RAND). It's a random number picked with a uniform distribution between -0.1 and +0.1. The randomization is there to minimize the synchronization of messages, so everyone isn't yelling at the same time ๐
The algorithm for picking a random number does not need to be cryptographically sound. The algorithm SHOULD produce a different sequence of random numbers from each invocation.
RT for the first message retransmission is based on IRT:
RT = IRT + RAND*IRT
RT for each later retransmission is based on the previous value of RT:
RT = 2*RTprev + RAND*RTprev
MRT sets an upper bound on the value of RT (ignoring the randomization added by RAND). If MRT is 0, there's no upper limit on RT. Otherwise:
if (RT > MRT)
RT = MRT + RAND*MRT
MRC sets an upper bound on how many times a sender may retransmit a message. Unless MRC is zero, the message exchange fails once the sender has transmitted the message MRC times.
MRD sets an upper bound on how long a sender may keep retransmitting a message. Unless MRD is zero, the message exchange fails once MRD seconds have passed since the client first transmitted the message โฑ๏ธ
If both MRC and MRD are non-zero, the message exchange fails whenever either of the two conditions above is met.
If both MRC and MRD are zero, the client keeps transmitting the message until it gets a response.
9.1. Transmission and Retransmission Parameters
This section has a table of values for how PANA requests (REQ_*) and the PANA-Client-Initiation message (PCI_*) behave when retransmitting. These are the default values ๐
Parameter Default Description
---------------------------------------------------------------------
PCI_IRT 1 sec Initial PCI timeout.
PCI_MRT 120 secs Max PCI timeout value.
PCI_MRC 0 Max PCI retransmission attempts.
PCI_MRD 0 Max PCI retransmission duration.
REQ_IRT 1 sec Initial Request timeout.
REQ_MRT 30 secs Max Request timeout value.
REQ_MRC 10 Max Request retransmission attempts.
REQ_MRD 0 Max Request retransmission duration.
So, for example, the first RT for the PANA-Auth-Request (PAR) message gets calculated using REQ_IRT as the IRT:
RT = REQ_IRT + RAND*REQ_IRT
10. IANA Considerations
this section is for the Internet Assigned Numbers Authority (IANA) ๐๏ธ It gives guidance on registering values related to the PANA protocol, following BCP 26 [IANA]. The policies used here, with the meanings BCP 26 gives them, are: "Private Use", "First Come First Served", "Expert Review", "Specification Required", "IETF Consensus", and "Standards Action".
This section also explains the criteria IANA should use when assigning numbers within the namespaces this document defines.
For registration requests where a Designated Expert should be consulted, the responsible IESG Area Director should appoint the Designated Expert. For Designated Expert with Specification Required, the request is posted to the PANA WG mailing list (or, if it's been disbanded, to a successor the Area Director designates) for comment and review. The request MUST include a pointer to a public specification. Before 30 days have passed, the Designated Expert will either approve or deny the request, and publish a notice of the decision to the PANA WG mailing list or its successor. A denial notice must come with an explanation and, where it's possible, concrete suggestions on how to change the request so it becomes acceptable ๐
IANA has created a registry for PANA ๐
10.1. PANA UDP Port Number
PANA uses one well-known UDP port number (see Section 6.1), which has been assigned by the IANA (716) ๐
10.2. PANA Message Header โจ
okay so the PANA message header has two fields that need IANA namespace management, the Message Type and Flags fields ๐ (see Section 6.2 for the header itself)
10.2.1. Message Type ๐
bestie, the Message Type namespace is how we identify PANA messages ๐ฆ Message Type 0 is not used and is not assigned by IANA. The values 1 - 65,519 are for permanent, standard message types, allocated by IETF Consensus [IANA]. This document defines the range of values 1 - 4. The same Message Type is used for both the request and the answer messages, except for type 1, and the Request bit is what tells requests apart from answers. See Section 7 for the assignment of the namespace in this specification ๐
The range of values 65,520 - 65,535 (hexadecimal values 0xfff0 - 0xffff) is reserved for experimental messages ๐งช These codes are only for experimental and testing purposes, so no guarantee is made for interoperability between the communicating PaC and PAA using experimental commands, as outlined in [IANA-EXP] ๐
10.2.2. Flags ๐ฉ
There are 16 bits in the Flags field of the PANA message header ๐ธ This document assigns bit 0 ('R'), 1 ('S'), 2 ('C'), 3 ('A'), 4 ('P'), and 5 ('I') in Section 6.2. The remaining bits MUST only be assigned via a Standards Action [IANA]. Hard rule, no cap ๐
10.3. AVP Header ๐
okay so the AVP header has three fields that need IANA namespace management: the AVP Code, AVP Flags, and Vendor-Id fields. Only the AVP Code and AVP Flags actually create new namespaces though ๐ง (see Section 6.3 for the header layout)
10.3.1. AVP Code ๐
The 16-bit AVP code namespace is used to identify attributes, and there are multiple namespaces ๐ Vendors can have their own AVP codes namespace, which is identified by their Vendor-Id (also known as Enterprise-Number), and they control the assignments of their vendor-specific AVP codes within their own namespace. No Vendor-Id means you're in the IETF IANA controlled AVP codes namespace. The AVP codes, and sometimes also the possible values inside an AVP, are controlled and maintained by IANA ๐ซถ
AVP Code 0 is not used and is not assigned by IANA. This document defines the AVP Codes 1-9. See Section 8.1 through Section 8.9 for the assignment of the namespace in this specification โจ
AVPs may be allocated following Designated Expert Review with Specification Required [IANA] or Standards Action.
Quick heads up: PANA has a mechanism for Vendor-Specific AVPs, where the Vendor-Id field in the AVP header is set to a non-zero value ๐ฆ Vendor-Specific AVP codes are for Private Use and should be encouraged instead of allocating global attribute types, for functions that are specific to only one vendor's implementation of PANA where no interoperability is deemed useful. Where a Vendor-Specific AVP is implemented by more than one vendor, allocation of global AVPs should be encouraged instead ๐
10.3.2. Flags ๐ฉ
There are 16 bits in the AVP Flags field of the AVP header, defined in Section 6.3. This document assigns bit 0 ('V'). The remaining bits should only be assigned via a Standards Action .
10.4. AVP Values ๐
Certain AVPs in PANA define a list of values with various meanings ๐ For attributes other than the ones specified in this section, adding additional values to the list can be done on a First Come, First Served basis by IANA [IANA] ๐
10.4.1. Result-Code AVP Values ๐
As defined in Section 8.7, the Result-Code AVP (AVP Code 7) defines the values 0-2.
All remaining values are available for assignment via IETF Consensus [IANA] โจ
10.4.2. Termination-Cause AVP Values ๐ธ
As defined in Section 8.9, the Termination-Cause AVP (AVP Code 9) defines the values 1, 4, and 8.
All remaining values are available for assignment via IETF Consensus [IANA] ๐
11. Security Considerations ๐
bestie, this section is seriously important ๐ญ The PANA protocol defines a UDP-based EAP encapsulation that runs between two IP-enabled nodes. Various security threats relevant to a protocol like this are outlined in [RFC4016]. Security considerations from using EAP and EAP methods are discussed in [RFC3748] [EAP-KEYING]. This section covers the security-related issues tied to PANA framework and protocol design ๐ซถ
An important element when you're assessing PANA's security in a network is whether lower-layer security is present ๐ก๏ธ Here, lower layers are said to be secure if the environment gives adequate protection against spoofing and confidentiality based on its operational needs. For example, DSL and cdma2000 networks' lower-layer security is enabled even before running the first PANA-based authentication. If there's no such preestablished secure channel before running PANA, one can be created after a successful PANA authentication using a link-layer or network-layer cryptographic mechanism (e.g., IPsec) ๐
11.1. General Security Measures ๐ก๏ธ
PANA provides multiple mechanisms to secure a PANA session ๐
PANA messages carry sequence numbers, which are monotonically incremented by 1 with every new request message. These numbers are randomly initialized at the beginning of the session, and they are verified against expected numbers upon receipt. A message whose sequence number is different from the expected one is silently discarded. Besides orderly delivery of EAP messages and duplicate elimination, this scheme also helps stop an adversary from spoofing messages to disturb ongoing PANA and EAP sessions, unless it can also eavesdrop to synchronize with the expected sequence number. Furthermore, the impact of replay attacks is reduced: any stale message (i.e., a request or answer with an unexpected sequence number and/or a session identifier for a non-existing session) and any duplicate answer are immediately discarded, and a duplicate request can trigger transmission of the cached answer (i.e., no need to process the request and generate a new answer) ๐
The PANA framework defines EP, which is ideally located on a network device that can filter traffic from the PaCs before the traffic enters the Internet/intranet ๐ง A set of filters can be used to discard unauthorized packets, such as the initial PANA-Auth-Request message that is received from the segment of the access network where only the PaCs are supposed to be connected (i.e., preventing PAA impersonation) ๐
The protocol also provides authentication and integrity protection to PANA messages when the used EAP method can generate cryptographic session keys. A PANA SA is generated based on the MSK exported by the EAP method. This SA is used for generating an AUTH AVP to protect the PANA message header and payload (including the complete EAP message) ๐
The cryptographic protection prevents an adversary from acting as a man-in-the-middle, injecting messages, replaying messages, and modifying the content of the exchanged messages. Any packet that fails the AUTH verification is silently discarded. The earliest this protection can be enabled is when the PANA-Auth-Request message that signals a successful authentication (EAP Success) is generated. Starting with these messages, any subsequent PANA message can be cryptographically protected until the session gets torn down ๐
The lifetime of the PANA SA is set to the PANA session lifetime, which is bounded by the authorization lifetime granted by the authentication server. An implementation MAY add a grace period to that value. Unless the PANA session is extended by executing another EAP authentication, the PANA SA is removed when the current session expires โณ
The ability to use cryptographic protection within PANA is determined by the used EAP method, which is generally dictated by the deployment environment. Insecure lower layers necessitate the use of key-generating EAP methods. In networks where lower layers are already secured, cryptographic protection of PANA messages is not necessary ๐
11.2. Initial Exchange ๐ฑ
The initial PANA-Auth-Request and PANA-Auth-Answer exchange is vulnerable to spoofing attacks, because these messages are not authenticated and integrity protected ๐ฌ To prevent very basic DoS attacks, an adversary should not be able to cause state creation by sending PANA-Client-Initiation messages to the PAA. This protection is achieved by allowing the responder (PAA) to create as little state as possible in the initial message exchange. However, it is difficult to prevent all spoofing attacks in the initial message exchange entirely ๐ซ
11.3. EAP Methods ๐ญ
Eavesdropping on EAP messages might cause problems when the EAP method is weak and enables dictionary or replay attacks, or even allows an adversary to learn the long-term password directly ๐ฑ Furthermore, if the optional EAP Response/Identity payload is used, it allows the adversary to learn the identity of the PaC. In that case, a privacy problem is prevalent ๐
To prevent these threats, [RFC5193] suggests using proper EAP methods for particular environments. Depending on the deployment environment, an EAP authentication method that supports user-identity confidentiality, protection against dictionary attacks, and session-key establishment must be used. It is therefore the responsibility of the network operators and users to choose a proper EAP method ๐ง
11.4. Cryptographic Keys ๐๏ธ
When the EAP method exports an MSK, this key is used to produce a PANA SA with PANA_AUTH_KEY with a distinct key ID. The PANA_AUTH_KEY is unique to the PANA session, and it takes PANA-based nonce values into computation to cryptographically separate itself from the MSK โจ
The PANA_AUTH_KEY is solely used for the authentication and integrity protection of the PANA messages within the designated session ๐
The PANA SA lifetime is bounded by the MSK lifetime. Another execution of the EAP method yields a new MSK, and it updates the PANA SA, PANA_AUTH_KEY, and key ID ๐
11.5. Per-Packet Ciphering ๐
Networks that are not secured at the lower layers prior to running PANA can rely on enabling per-packet data-traffic ciphering upon successful PANA SA establishment. The PANA framework allows generation of cryptographic keys from the PANA SA, and it uses those keys with a secure association protocol to enable per-packet cryptographic protection, such as link-layer or IPsec-based ciphering [PANA-IPSEC]. These mechanisms ultimately establish a cryptographic binding between the data traffic generated by and for a client and the authenticated identity of the client. Data traffic can be data origin authenticated, replay and integrity protected, and optionally encrypted using the cryptographic keys. How these keys are generated from the PANA SA and used with a secure association protocol is outside the scope of this document ๐
11.6. PAA-to-EP Communication ๐ก
The PANA framework allows separation of PAA from EP. The protocol exchange between the PAA and EP for provisioning authorized PaC information on the EP must be protected for authentication, integrity, and replay protection ๐ซถ
11.7. Liveness Test ๐
okay so a PANA session has a session lifetime, and it gets terminated unless a new round of EAP authentication refreshes it before it expires ๐ญ which means the latest a disconnected client can get detected is when its session expires. ngl that's kind of a long time to wait, so a disconnect can also get caught earlier with PANA ping messages โจ
Either the PaC or the PAA can send a request message at any point in the access phase, and it expects the peer to send back an answer message ๐ฆ if that round-trip succeeds, it's a simple check that the peer is still alive. literally that's it, so iconic ๐
You'd use this test when there's a chance the peer has dropped off, like after data traffic has been quiet for a long time ๐ Using it as a periodic keep-alive needs extra care tho, because it can cause congestion and that might lead to false alarms ๐ฌ
This exchange is cryptographically protected whenever a PANA SA is available ๐ that's how it avoids threats from people abusing this functionality. main character security energy ๐
Any valid PANA answer message that comes back in response to a recently sent request message can count as proof the peer is alive ๐ธ So the PaC or PAA MAY skip sending an explicit ping request if a recent exchange already confirmed the peer is alive. big brain move ๐ง โจ
11.8. Early Termination of a Session ๐ช
PANA lets both the PaC and the PAA send a tear-down message before the session lifetime runs out ๐ When that happens, the state gets removed, the accounting procedure stops, and the installed per-PaC state gets removed from the EP(s) ๐ This message is cryptographically protected whenever a PANA SA is present ๐ bestie, the full exit with no loose ends ๐
12. Acknowledgments ๐ซถ
We'd love to thank Mark Townsley, Jari Arkko, Mohan Parthasarathy, Julien Bournelle, Rafael Marin Lopez, Pasi Eronen, Randy Turner, Erik Nordmark, Lionel Morand, Avi Lior, Susan Thomson, Giaretta Gerardo, Joseph Salowey, Sasikanth Bharadwaj, Spencer Dawkins, Tom Yu, Bernard Aboba, Subir Das, John Vollbrecht, Prakash Jayaraman, and everyone in the PANA working group for their valuable comments on this document ๐ the real ones ๐
13. References ๐
13.1. Normative References ๐ฅ
- [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, February 1997.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. Arkko, "Diameter Base Protocol", RFC 3588, September 2003.
- [RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H. Levkowetz, Ed., "Extensible Authentication Protocol (EAP)", RFC 3748, June 2004.
- [RFC4086] Eastlake, D., 3rd, Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, June 2005.
- [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.
- [RFC5192] Morand, L., Yegin A., Kumar S., and S. Madanapalli, "DHCP Options for Protocol for Carrying Authentication for Network Access (PANA) Authentication Agents", RFC 5192, May 2008.
- [IANA] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
13.2. Informative References ๐
- [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3315, July 2003.
- [RFC4016] Parthasarathy, M., "Protocol for Carrying Authentication and Network Access (PANA) Threat Analysis and Security Requirements", RFC 4016, March 2005.
- [RFC4058] Yegin, A., Ed., Ohba, Y., Penno, R., Tsirtsis, G., and C. Wang, "Protocol for Carrying Authentication for Network Access (PANA) Requirements", RFC 4058, May 2005.
- [RFC4137] Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba, "State Machines for Extensible Authentication Protocol (EAP) Peer and Authenticator", RFC 4137, August 2005.
- [RFC4306] Kaufman, C., Ed., "Internet Key Exchange (IKEv2) Protocol", RFC 4306, December 2005.
- [RFC4595] Maino, F. and D. Black, "Use of IKEv2 in the Fibre Channel Security Association Management Protocol", RFC 4595, July 2006.
- [RFC5193] Jayaraman, P., Lopez R., Ohba Y., Ed., Parthasarathy, M., and A. Yegin, "Protocol for Carrying Authentication for Network Access (PANA) Framework", RFC 5193, May 2008.
- [EAP-KEYING] Aboba, B., Simon D., and P. Eronen, "Extensible Authentication Protocol (EAP) Key Management Framework", Work in Progress, November 2007.
- [PANA-IPSEC] Parthasarathy, M., "PANA Enabling IPsec based Access Control", Work in progress, July 2005.
- [IANAWEB] IANA, "Number assignment", http://www.iana.org.
- [IANA-EXP] Narten, T., "Assigning Experimental and Testing Numbers Considered Useful", BCP 82, RFC 3692, January 2004.
Authors' Addresses ๐
Dan Forsberg
Nokia Research Center
P.O. Box 407
FIN-00045 NOKIA GROUP
Finland
Phone: +358 50 4839470
EMail: dan.forsberg@nokia.com
Yoshihiro Ohba
Toshiba America Research, Inc.
1 Telcordia Drive
Piscataway, NJ 08854
USA
Phone: +1 732 699 5305
EMail: yohba@tari.toshiba.com
Basavaraj Patil
Nokia Siemens Networks
6000 Connection Drive
Irving, TX 75039
USA
EMail: basavaraj.patil@nsn.com
Hannes Tschofenig
Nokia Siemens Networks
Linnoitustie 6 Espoo 02600
Finland
Phone: +358 (50) 4871445
EMail: Hannes.Tschofenig@nsn.com
URI: http://www.tschofenig.priv.at
Alper E. Yegin
Samsung
Istanbul, Turkey
EMail: a.yegin@partner.samsung.com
Full Copyright Statement ยฉ
Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property ๐งพ
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
๐ฆ where this page comes from
- ietf: rfc5191 2008-05
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms