RFC 5580
Carrying Location Objects in RADIUS and Diameter
RFC 5580: Carrying Location Objects in RADIUS and Diameter โจ
Okay bestie, the title block is giving proper paperwork energy, so here's the tea ๐ซ. This is RFC 5580, published in August 2009 by the Network Working Group as a Standards Track document. Its editor is H. Tschofenig from Nokia Siemens Networks, and the co-authors are F. Adrangi from Intel, M. Jones and A. Lior from Bridgewater, and B. Aboba from Microsoft Corporation. The title block doesn't list anything it obsoletes or updates ๐ .
Abstract
Okay so this doc explains how to pass along who owns an access network and where it is, using civic and geospatial location formats, inside RADIUS and Diameter ๐บ๏ธ.
Location data is a seriously privacy-sensitive thing, so the doc also covers how to protect the user's privacy. That part is a big deal ๐.
Status of This Memo
This is an Internet standards track protocol for the Internet community, and the authors want your discussion and suggestions for improvements ๐ฌ. For the current standardization state and status, check the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited ๐ธ.
Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved ๐.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents in effect on the date of publication of this document (http://trustee.ietf.org/license-info). Please review these documents carefully, since they describe your rights and restrictions with respect to this document ๐ง.
Table of Contents
1. Introduction ....................................................3
2. Terminology .....................................................3
3. Delivery Methods for Location Information .......................3
3.1. Location Delivery Based on Out-of-Band Agreements ..........4
3.2. Location Delivery Based on Initial Request .................5
3.3. Location Delivery Based on Mid-Session Request .............6
3.4. Location Delivery in Accounting Messages ..................10
4. Attributes .....................................................11
4.1. Operator-Name Attribute ...................................12
4.2. Location-Information Attribute ............................14
4.3. Location-Data Attribute ...................................16
4.3.1. Civic Location Profile .............................17
4.3.2. Geospatial Location Profile ........................17
4.4. Basic-Location-Policy-Rules Attribute .....................18
4.5. Extended-Location-Policy-Rules Attribute ..................20
4.6. Location-Capable Attribute ................................21
4.7. Requested-Location-Info Attribute .........................23
5. Table of Attributes ............................................28
6. Diameter RADIUS Interoperability ...............................30
7. Security Considerations ........................................31
7.1. Communication Security ....................................31
7.2. Privacy Considerations ....................................32
7.2.1. RADIUS Client ......................................33
7.2.2. RADIUS Server ......................................34
7.2.3. RADIUS Proxy .......................................34
7.3. Identity Information and Location Information .............34
8. IANA Considerations ............................................36
8.1. New Registry: Operator Namespace Identifier ...............36
8.2. New Registry: Location Profiles ...........................37
8.3. New Registry: Location-Capable Attribute ..................38
8.4. New Registry: Entity Types ................................39
8.5. New Registry: Privacy Flags ...............................39
8.6. New Registry: Requested-Location-Info Attribute ...........39
9. Acknowledgments ................................................40
10. References ....................................................42
10.1. Normative References .....................................42
10.2. Informative References ...................................42
Appendix A. Matching with GEOPRIV Requirements ...................45
A.1. Distribution of Location Information at the User's
Home Network ..............................................45
A.2. Distribution of Location Information at the Visited
Network ...................................................46
A.3. Requirements Matching .....................................47
1. Introduction ๐ง
This document defines attributes in RADIUS and Diameter that can be used to pass location-related information around during authentication and accounting exchanges ๐ก.
Location info is useful in a bunch of scenarios. Wireless networks (including wireless LAN) are popping up in public places like airports, hotels, shopping malls, and coffee shops, run by all kinds of operators: cellular network operators, Wireless Internet Service Providers (WISPs), and fixed broadband operators โ. In these situations, the home network may need to know where the user is so it can do location-aware billing, location-aware authorization, or other location-aware services ๐. It's also handy in other situations, like wired networks, where the home network may need to know who owns the operator network and where it is ๐ข.
To keep user privacy safe, location information needs protection against unauthorized access and distribution ๐. The requirements for access to location information are defined in [RFC3693]. That model includes a Location Generator (LG) that creates location information, a Location Server (LS) that authorizes access to location information, a Location Recipient (LR) that requests and receives information, and a Rule Maker (RM) that gives authorization policies to the LS, which enforces access-control policies on requests for location information ๐ญ. Appendix A compares the requirements for a GEOPRIV using protocol [RFC3693] with what this document provides ๐.
2. Terminology ๐
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].
RADIUS-specific terminology is borrowed from [RFC2865] and [RFC2866].
Terminology about privacy issues, location information, and authorization policy rules is taken from [RFC3693].
3. Delivery Methods for Location Information ๐
Next up, the exchanges below show how location info gets carried in RADIUS. For the usage scenarios, we assume the privacy policies let location be conveyed in RADIUS. Heads up though, as Section 6 notes, similar exchanges can also happen inside Diameter ๐. Privacy issues are covered in Section 7.2 ๐.
3.1. Location Delivery Based on Out-of-Band Agreements ๐ค
Figure 1 shows an example message flow for delivering location information during the network-access authentication and authorization procedure. When an access-network client asks for network authentication, the Network Access Server (NAS) sends a RADIUS Access-Request message with Location-Information Attributes, along with the other required attributes ๐จ. In this scenario, the location information is attached to the Access-Request message without the RADIUS server asking for it first ๐.
Here's the catch, though: this approach depends on a prior agreement between the RADIUS client and the RADIUS server, so it only works in certain environments, like when the RADIUS client and server sit in the same administrative domain ๐ . Also, the Basic-Location-Policy-Rules Attribute gets filled in using the defaults described in Section 4.4, unless someone has explicitly configured it otherwise โ๏ธ.
+---------+ +---------+ +---------+
| | | Network | | RADIUS |
| User | | Access | | Server |
| | | Server | | |
+---------+ +---------+ +---------+
| | |
| Authentication phase | |
| begin | |
|---------------------->| |
| | |
| | Access-Request |
| | + Location-Information |
| | + Location-Data |
| | + Basic-Location-Policy-Rules|
| | + Operator-Name |
| |----------------------------->|
| | |
| | Access-Accept |
| |<-----------------------------|
| Authentication | |
| Success | |
|<----------------------| |
| | |
Figure 1: Location Delivery Based on Out-of-Band Agreements
3.2. Location Delivery Based on Initial Request โจ
okay so this one is about the server asking for location info during the first request, bestie ๐บ๏ธ if the RADIUS client shows up with a Location-Capable attribute in the Access-Request, the RADIUS server MAY ask the client for location info, but only if it actually needs that info to decide on authorization AND the Access-Request didn't already include any location info ๐
the Location-Capable attribute is basically the NAS saying "hey, I can send location data if you ask nicely" ๐ซถ then the server replies with an Access-Challenge that gives a little hint about what kind of Location-Information attributes it wants ๐ the NAS doesn't need to understand the Basic-Location-Policy-Rules or Extended-Location-Policy-Rules attributes at all, so it just treats them as opaque blobs and echoes them right back in the next Access-Request ๐ that's giving "pass the note without reading it" energy lol
then the location attributes show up in that next Access-Request, and the server gets to use them in its authorization decision, which could be based on a bunch of stuff, including the brand new attributes from Section 4 ๐ the diagram below shows the whole vibe, from the user starting auth all the way to Access-Accept ๐ฆ
+---------+ +---------+ +---------+
| | | Network | | RADIUS |
| User | | Access | | Server |
| | | Server | | |
+---------+ +---------+ +---------+
| | |
| Authentication phase | |
| begin | |
|---------------------->| |
| | |
| | Access-Request |
| | + Location-Capable |
| |--------------------------------->|
| | |
| | Access-Challenge |
| | + Basic-Location-Policy-Rules |
| | + Extended-Location-Policy-Rules|
| | + Requested-Location-Info |
| |<---------------------------------|
| | |
| | Access-Request |
| | + Location-Information |
| | + Location-Data |
| | + Basic-Location-Policy-Rules |
| | + Extended-Location-Policy-Rules|
| |--------------------------------->|
| | |
: : :
: Multiple Protocol Exchanges to perform :
: Authentication, Key Exchange, and Authorization :
: ...continued... :
: : :
| | |
| | Access-Accept |
| |<---------------------------------|
| Authentication | |
| Success | |
|<----------------------| |
| | |
Figure 2: Location Delivery Based on Initial Request
3.3. Location Delivery Based on Mid-Session Request โจ
okay so this is the on-demand, mid-session method, and it's giving main character energy ๐ It uses the CoA-Request message and the CoA-NAK (Change-of-Authorization Negative Acknowledgement) message, both defined in [RFC5176]. At any time during the session, the Dynamic Authorization Client MAY send a CoA-Request containing session-identification attributes to the NAS (aka the Dynamic Authorization Server) ๐ฆ
To turn this on, the RADIUS server MUST return a Requested-Location-Info Attribute with the 'FUTURE_REQUESTS' flag set, plus Basic-Location-Policy-Rules and Extended-Location-Policy-Rules Attributes, in the Access-Accept message for the session ๐ Then, when the NAS gets a CoA-Request with a Service-Type Attribute set to "Authorize Only" for that same session, the NAS MUST include location information and echo back the Basic-Location-Policy-Rules and Extended-Location-Policy-Rules Attributes it got earlier, in the next Access-Request.
When the RADIUS server gets that Access-Request with Service-Type set to Authorize-Only from the NAS, it replies with either an Access-Accept or an Access-Reject. Simple and clean ๐ซถ
Dynamic authorization [RFC5176] is needed when location info is wanted on-demand and can't be pulled from accounting info in time. Basically it's the only way to get fresh location data when you need it right now ๐
Here's Figure 3 showing this whole flow ๐
+---------------+ +---------------+ +------+
| Dynamic | | Dynamic | |RADIUS|
| Authorization | | Authorization | |Server|
| Server/NAS | | Client | | |
+---------------+ +---------------+ +------+
| | |
| Access-Request | |
| + Location-Capable | |
|----------------------------------------------------------->|
| | |
| Access-Challenge | |
| + Basic-Location-Policy-Rules | |
| + Extended-Location-Policy-Rules | |
| + Requested-Location-Info | |
|<-----------------------------------------------------------|
| | |
| Access-Request | |
| + Location-Information | |
| + Location-Data | |
| + Basic-Location-Policy-Rules | |
| + Extended-Location-Policy-Rules | |
|----------------------------------------------------------->|
| | |
| | |
: | :
: Multiple Protocol Exchanges to perform :
: Authentication, Key Exchange, and Authorization :
: ...continued... | :
: | :
| | |
| | |
| Access-Accept | |
| + Requested-Location-Info | |
(FUTURE_REQUESTS,...) | |
| + Basic-Location-Policy-Rules | |
| + Extended-Location-Policy-Rules | |
|<-----------------------------------------------------------|
| | |
: : :
: <<Some time later>> : :
: : :
| | |
| CoA + Service-Type "Authorize Only" + State | |
|<--------------------------------------------| |
| | |
| CoA NAK + Service-Type "Authorize Only" | |
| + State | |
| + Error-Cause "Request Initiated" | |
|-------------------------------------------->| |
| | |
| Access-Request | |
| + Service-Type "Authorize Only" | |
| + State | |
| + Location-Information | |
| + Location-Data | |
| + Basic-Location-Policy-Rules | |
| + Extended-Location-Policy-Rules | |
|----------------------------------------------------------->|
| Access-Accept | |
|<-----------------------------------------------------------|
| | |
Figure 3: Location Delivery Based on CoA with
Service-Type 'Authorize Only'
Now for changing things up ๐ฆ When the Dynamic Authorization Client (DAC) wants to change the values of the requested location info, or set them for the very first time, it may do so without triggering a reauthorization. Yas, no re-auth drama ๐
Here's the deal: if the NAS already sent an Access-Request containing a Location-Capable Attribute earlier, the DAC can send a CoA-Request to the NAS without a Service-Type Attribute. It just needs to include the NAS identifiers and session identifiers (per [RFC5176]) along with the Requested-Location-Info, Basic-Location-Policy-Rules, and Extended-Location-Policy-Rules Attributes ๐ธ
Heads up, bestie: the Requested-Location-Info, Basic-Location-Policy-Rules, and Extended-Location-Policy-Rules Attributes MUST NOT be used for session identification ๐
Figure 4 shows this approach ๐ง
+---------------+ +---------------+ +------+
| Dynamic | | Dynamic | |RADIUS|
| Authorization | | Authorization | |Server|
| Server/NAS | | Client | | |
+---------------+ +---------------+ +------+
| | |
| | |
| Access-Request | |
| + Location-Capable | |
|----------------------------------------------------------->|
| | |
| Access-Challenge | |
| + Basic-Location-Policy-Rules | |
| + Extended-Location-Policy-Rules | |
| + Requested-Location-Info | |
|<-----------------------------------------------------------|
| | |
| Access-Request | |
| + Location-Information | |
| + Location-Data | |
| + Basic-Location-Policy-Rules | |
| + Extended-Location-Policy-Rules | |
|----------------------------------------------------------->|
| | |
| | |
: | :
: Multiple Protocol Exchanges to perform :
: Authentication, Key Exchange, and Authorization :
: ...continued... | :
: | :
| | |
| | |
| Access-Accept | |
| + Requested-Location-Info | |
| + Basic-Location-Policy-Rules | |
| + Extended-Location-Policy-Rules | |
|<-----------------------------------------------------------|
| | |
: : :
: <<Some time later>> : :
: : :
| | |
| CoA | |
| + Requested-Location-Info | |
| + Basic-Location-Policy-Rules | |
| + Extended-Location-Policy-Rules | |
|<--------------------------------------------| |
| | |
| CoA ACK | |
|-------------------------------------------->| |
| | |
: : :
: <<Further exchanges later>> : :
: : :
Figure 4: Location Delivery Based on CoA
3.4. Location Delivery in Accounting Messages โจ
okay so location info can also ride along in accounting messages ๐ง Accounting messages get generated when the session starts, when it stops, and periodically while it's going. They can also pop up when the user roams during a handoff ๐ฆ
Why does any of this matter? The billing system needs accounting info to work out the user's bill ๐ And location can change the math, because there may be different tariffs or tax rates depending on where someone is. Iconic for the bill, not so iconic for your wallet ๐ญ
If the RADIUS server wants location info in accounting messages, it has to include a Requested-Location-Info Attribute in the Access-Accept message. The Basic-Location-Policy-Rules and Extended-Location-Policy-Rules Attributes get echoed back in the Accounting-Request if they were indicated in the Access-Accept ๐
Figure 5 shows the whole exchange, and it's giving very clear vibes ๐
+---------+ +---------+ +---------+
| | | Network | | RADIUS |
| User | | Access | | Server |
| | | Server | | |
+---------+ +---------+ +---------+
| | |
: : :
: Initial Protocol Interaction :
: (details omitted) :
: : :
| | |
| | Access-Accept |
| | + Requested-Location-Info |
| | + Basic-Location-Policy-Rules |
| | + Extended-Location-Policy-Rules|
| |<---------------------------------|
| Authentication | |
| Success | |
|<----------------------| |
| | |
| | Accounting-Request |
| | + Location-Information |
| | + Location-Data |
| | + Basic-Location-Policy-Rules |
| | + Extended-Location-Policy-Rules|
| |--------------------------------->|
| | |
| | Accounting-Response |
| |<---------------------------------|
| | |
Figure 5: Location Delivery in Accounting Messages
4. Attributes ๐ธ
Okay, important tea: the location-specific parts of the attributes below are NOT meant to be processed by the RADIUS server ๐ Instead, a location-server component working alongside the RADIUS server handles receiving, processing, and distributing location info (with access control and privacy protection on top). So from the RADIUS server's point of view, location info is just opaque data. It doesn't peek inside ๐
4.1. Operator-Name Attribute ๐
This attribute carries the operator namespace identifier and the operator name. Together they uniquely identify the owner of an access network, which is a whole main character moment ๐ฆ The value of the Operator-Name is a non-NULL terminated text whose length MUST NOT exceed 253 bytes. Don't go over 253 bytes, bestie ๐
The Operator-Name Attribute SHOULD be sent in Access-Request and Accounting-Request messages where the Acc-Status-Type is set to Start, Interim, or Stop โจ
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Text ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Text (cont.) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: the value is 126 - Operator-Name ๐
Length: it's >= 4 ๐ซถ
Text: this is the actual payload, and the data type is text. Everything gets sent left to right, so here's how it's laid out ๐
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Namespace ID | Operator-Name ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Operator-Name ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Namespace ID: this field holds the operator namespace identifier, encoded in ASCII. For example, '1' (0x31) means REALM ๐
Operator-Name: this variable-length text field carries an Access Network Operator Name. It's a RADIUS-based Text data type โญ
The Namespace ID field tells you about the operator namespace. This document defines four values for it, listed below. Any additional namespace identifiers must be registered with IANA (see Section 8.1) and must be associated with an organization responsible for managing the namespace. No freelancing namespaces, babe ๐
TADIG ('0' (0x30)): this namespace is for operator names based on Transferred Account Data Interchange Group (TADIG) codes, as defined in [GSM]. The TADIG codes are assigned by the TADIG Working Group within the Global System for Mobile Communications (GSM) Association. A TADIG code has two fields, adding up to five ASCII characters: a three-character country code and a two-character alphanumeric operator (or company) ID ๐บ๐ณ
REALM ('1' (0x31)): this namespace can be used for operator names based on any registered domain name. Those names are required to be unique, and you get the right to use a realm name at the same time you get the right to use a particular Fully Qualified Domain Name (FQDN) ๐ฅ Since this namespace is limited to ASCII, any registered domain name with non-ASCII characters must be converted to ASCII. The Punycode encoding [RFC3492] is used for that ๐ฆ
E212 ('2' (0x32)): this namespace can indicate operator names based on the Mobile Country Code (MCC) and Mobile Network Code (MNC) defined in [ITU212]. The MCC/MNC values are assigned by the Telecommunications Standardization Bureau (TSB) within the ITU-T and by designated administrators in different countries. An E212 value is three ASCII digits for the MCC, followed by two or three ASCII digits for the MNC ๐ธ
ICC ('3' (0x33)): this namespace can indicate operator names based on International Telecommunication Union (ITU) Carrier Codes (ICC) defined in [ITU1400]. ICC values are assigned by national regulatory authorities and coordinated by the Telecommunication Standardization Bureau (TSB) within the ITU Telecommunication Standardization Sector (ITU-T). When you use the ICC namespace, the attribute is three uppercase ASCII characters for a three-letter alphabetic country code, as defined in [ISO], followed by one to six uppercase alphanumeric ASCII characters for the ICC itself ๐ง
4.2. Location-Information Attribute โจ
okay so the Location-Information Attribute MAY be sent in the Access-Request message, the Accounting-Request message, both of these messages, or no message ๐ . for the Accounting-Request message, the Acc-Status-Type may be set to Start, Interim, or Stop ๐ฆ.
this attribute is basically the meta-data about the location info, like sighting time, time-to-live, location-determination method, etc. ๐ง it's giving context, bestie ๐
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | String ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| String (cont.) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type:
127 - Location-Information ๐ธ
Length:
>= 23 ๐
String:
the format is shown below. the data type of this field is a string. everything gets transmitted from left to right, so no skipping ahead ๐ซถ
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Index | Code | Entity |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sighting Time ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sighting Time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time-to-Live ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time-to-Live |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Method ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Index (16 bits):
the 16-bit unsigned integer value lets this attribute give info about the stuff in the Location-Data Attribute it points to (via the Index) ๐ฅ
Code (8 bits):
this field tells you what kind of location profile is inside the Location-Data Attribute. two profiles are defined in this document, periodt ๐
- a civic location profile (see Section 4.3.1) uses value (0) ๐
- a geospatial location profile (see Section 4.3.2) uses the value (1) ๐
Entity (8 bits):
this field encodes which location this attribute refers to, as an unsigned 8-bit integer value. location info can refer to different entities (so many options, ngl ๐ ). this document registers two entity values:
Value (0)describes the location of the user's client device ๐ฑValue (1)describes the location of the RADIUS client ๐ฐ๏ธ
the registry used for these values is established by this document, see Section 8.4 ๐
Sighting Time (64 bits):
this field says when the location information was accurate โฐ. the data type is a string, and the content is written in the 64-bit Network Time Protocol (NTP) timestamp format [RFC1305] ๐ฐ๏ธ
Time-to-Live (64 bits):
this field gives a hint about how long the location information should be considered current โณ. the data type is a string, and the content is in the 64-bit Network Time Protocol (NTP) timestamp format [RFC1305].
โ ๏ธ bestie, don't mix these up: the Time-to-Live field is different from the Retention Expires field used in the Basic-Location-Policy-Rules Attribute (see Section 4.4). the Retention Expires field is the time the recipient is no longer permitted to possess the location information ๐ โโ๏ธ
Method (variable):
describes the way the location information was determined ๐. this field MUST contain the value of exactly one IANA-registered 'method' token [RFC4119] โจ
the length of the Location-Information Attribute MUST NOT exceed 253 octets ๐ so keep it under that limit, okay?
4.3. Location-Data Attribute ๐
the Location-Data Attribute MAY be sent in Access-Request and Accounting-Request messages ๐. for the Accounting-Request message, the Acc-Status-Type may be set to Start, Interim, or Stop ๐.
here's the format:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | String ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| String (cont.) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type:
128 - Location-Data ๐ง
Length:
>= 5 ๐ท
String:
the format is shown below. the data type is a string, and everything is transmitted from left to right ๐
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Index | Location ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Location ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Index (16 bits):
the 16-bit unsigned integer value lets this attribute link the Location-Data Attribute back to the Location-Information Attributes ๐
Location (variable):
the format of the location data depends on the location profile ๐บ๏ธ. this document defines two location profiles, and the details are below ๐
4.3.1. Civic Location Profile ๐ก
civic location is a super popular way to describe where an entity is ๐. this section defines the civic location-information profile, which corresponds to the value (0) in the Code field of the Location-Information Attribute ๐ . the location format is based on the encoding format defined in Section 3.1 of [RFC4776], but the first 3 octets are not put into the Location field of the RADIUS Location-Data Attribute (so the code for the DHCP option, the length of the DHCP option, and the 'what' element are left out) ๐
4.3.2. Geospatial Location Profile ๐
this section defines the geospatial location-information profile, which corresponds to the value (1) in the Code field of the Location-Information Attribute ๐. geospatial location info is encoded as an opaque object ๐ซง. the format is based on the Location Configuration Information (LCI) format defined in Section 2 of [RFC3825], but it starts with the third octet (so the code for the DHCP option and the length field are not included) โจ
4.4. Basic-Location-Policy-Rules Attribute โจ
Okay bestie, this one's the privacy bouncer ๐ The Basic-Location-Policy-Rules Attribute MAY be sent in Access-Request, Access-Accept, Access-Challenge, Change-of-Authorization, and Accounting-Request messages. ๐
Policy rules decide who gets to see location info ๐ So RADIUS clients are obligated to use a default value of Basic-Location-Policy-Rules unless they're explicitly configured otherwise, and they have to echo back the one they get from a server. ๐ซถ By default, the Note Well field doesn't point to any human-readable privacy policies, retransmission-allowed is set to zero (0) (aka no further sharing, periodt ๐ โโ๏ธ), and the Retention Expires field is set to 24 hours. โฐ
For the authorization policies, this doc is borrowing work from [RFC4119] and encoding it in a non-XML format ๐ Two fields, 'Sighting Time' and 'Time-to-Live', are also added to the Location-Information Attribute so it meets the GEOPRIV requirements in [RFC3693], Section 2.7. ๐
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | String ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| String (cont.) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 129 - Basic-Location-Policy-Rules
Length: >= 12
String: The data type here is a string, and the fields go left to right ๐
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Retention Expires ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Retention Expires ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Retention Expires | Note Well ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Note Well ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This doc reuses fields from the RFC 4119 [RFC4119] 'usage-rules' element. Here's what they mean ๐ง
Flags (16 bits): This is a bit mask, and only the first bit (R) is defined here. It maps to the Retransmission Allowed field:
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|o o o o o o o o o o o o o o o|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
R = Retransmission Allowed
o = reserved.
Reserved bits are a hard rule. All reserved bits MUST be zero ๐ซ When Retransmission Allowed is 0, the recipient of this Location Object is not permitted to share the enclosed location information, or the object as a whole, with other parties. Setting it to '1' lets the attribute share location info with other parties by considering the extended policy rules. ๐ฆ
Retention Expires (64 bits): This is an absolute date after which the Recipient is no longer allowed to have the location info ๐ The data type is a string, and the format is a 64-bit NTP timestamp [RFC1305]. โณ
Note Well (variable): This field holds a URI that points to human-readable privacy instructions, and it's a string. It's super useful when location info goes to third parties, which can include actual humans using a location-based service ๐โโ๏ธ RADIUS entities aren't supposed to process it.
Whenever a Location Object leaves the RADIUS ecosystem, the URI in the Note Well Attribute MUST be expanded to the human-readable text. For example, if the Location Object goes into a SIP-based environment, the human-readable text goes into the 'note-well' element of the 'usage-rules' element inside the PIDF-LO (Presence Information Data Format - Location Object) document (see [RFC4119]). The Note Well field MAY be empty. ๐ซง
4.5. Extended-Location-Policy-Rules Attribute ๐ธ
The Extended-Location-Policy-Rules Attribute MAY be sent in Access-Request, Access-Accept, Access-Challenge, Access-Reject, Change-of-Authorization, and Accounting-Request messages.
The Ruleset Reference field is variable in length ๐ It holds a URI that says where the richer ruleset lives. This URI SHOULD use the HTTPS URI scheme. ๐ This is a little twist from [RFC4119]: this field is only a reference, and it doesn't carry an attached extended ruleset. Why? RADIUS has size limits, so this change is the move ๐
To understand and process the Extended-Location-Policy-Rules Attribute, RADIUS clients are obligated to attach the URI to the attribute when they're explicitly configured to do so, and to echo back the attribute they receive from a server. There's no expectation that RADIUS clients will fetch the data at the URL or parse the XML policies. Relief, honestly ๐ฎโ๐จ
Here's the format:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | String ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| String (cont.) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 130 - Extended-Location-Policy-Rules
Length: >= 3
String: This field is at least two octets long. Its data type is a string, and the fields go left to right:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ruleset Reference ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ruleset Reference: This field holds a URI that points to the policy rules. ๐บ๏ธ
4.6. Location-Capable Attribute ๐ฆ
The Location-Capable Attribute lets a NAS (or the client function of a proxy server) say "hey, I can do this location stuff" โจ The Location-Capable Attribute with the value for 'Location Capable' MUST be sent with the Access-Request messages if the NAS supports the functionality in this document and can send location information. And a RADIUS server MUST NOT challenge for location information unless the Location-Capable Attribute has been sent to it. No asking for stuff you never said you could handle, lol ๐ โโ๏ธ
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Integer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Integer (cont.) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 131 - Location-Capable Attribute
Length: 6
Integer: This field encodes the requested capabilities, and each capability value is a bit position. ๐ข
This doc specifies the following capabilities ๐
Name: CIVIC_LOCATION
Description: The RADIUS client uses CIVIC_LOCATION to say it can return civic location based on the location profile in Section 4.3.1. ๐
Numerical Value: 1
Name: GEO_LOCATION
Description: The RADIUS client uses GEO_LOCATION to say it can return geodetic location based on the location profile in Section 4.3.2. ๐
Numerical Value: 2
Name: USERS_LOCATION
Description: The numerical value for USERS_LOCATION means the RADIUS client can provide a Location-Information Attribute with the Entity Attribute set to zero (0). In other words, it can return the location info of the user's client device ๐ฑ
Numerical Value: 4
Name: NAS_LOCATION
Description: The numerical value for NAS_LOCATION means the RADIUS client can provide a Location-Information Attribute with the Entity Attribute set to one (1). So it can return the location info of the NAS itself ๐ฅ๏ธ
Numerical Value: 8
4.7. Requested-Location-Info Attribute โจ
okay so this one is the RADIUS server's wishlist ๐ It tells the client which location info it wants and which entity that info is about. The entity part refers to the Entity field inside the Location-Information Attribute ๐
The Requested-Location-Info Attribute MAY be sent in an Access-Accept, Access-Challenge, or Change-of-Authorization packet.
If the server wants to decide on a per-request basis whether to ask the client for location info, there are a few cases to sort out ๐ง If the client and server have already agreed out-of-band to require location info transfer for every network-access authentication request, then none of the processing below applies.
- If the server needs location info to compute the authorization decision and the client didn't send it in the Access-Request, the Requested-Location-Info Attribute goes into the Access-Challenge, with a hint about what's needed.
- If the server doesn't get the requested info back in response to the Access-Challenge (including the Requested-Location-Info Attribute), the server may respond with an Access-Reject that carries an Error-Cause Attribute (including the "Location-Info-Required" value).
- If the server wants location info in the Accounting-Request but doesn't need it for the authorization decision, the Access-Accept message MUST include a Required-Info Attribute. This is typically the case when location is only used for billing ๐ธ The client SHOULD attach location information, if available, to the Accounting-Request (unless authorization policies dictate something different).
If the server does not send a Requested-Location-Info Attribute, then the client MUST NOT attach location information to messages going to the server. The server MUST consult the user's authorization policies, if available, before requesting location information delivery from the client ๐ซถ
Figure 6 shows a simple exchange where the server wants the user's civic location to grant access ๐บ๏ธ Since the Requested-Location-Info Attribute rides along on the Access-Challenge, the server is basically saying location info is needed to make the authorization decision.
+---------+ +---------+
| RADIUS | | RADIUS |
| Client | | Server |
+---------+ +---------+
| |
| |
| Access-Request |
| + Location-Capable |
| ('CIVIC_LOCATION', |
| 'GEO_LOCATION', |
| 'NAS_LOCATION', |
| 'USERS_LOCATION') |
|--------------------------------->|
| |
| Access-Challenge |
| + Requested-Location-Info |
| ('CIVIC_LOCATION', |
| 'USERS_LOCATION') |
| + Basic-Location-Policy-Rules |
| + Extended-Location-Policy-Rules |
|<---------------------------------|
| |
| Access-Request |
| + Location-Information |
| + Location-Data |
| + Basic-Location-Policy-Rules |
| + Extended-Location-Policy-Rules |
|--------------------------------->|
| |
| .... |
Figure 6: RADIUS Server Requesting Location Information
The Requested-Location-Info Attribute MUST be sent by the RADIUS server, in the absence of an out-of-band agreement, if it wants the RADIUS client to return location information and if authorization policies permit it. This attribute MAY appear in the Access-Accept or in the Access-Challenge message ๐ธ
Here's the attribute summary:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Integer ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Integer (cont.) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Type: 132 - Requested-Location-Info Attribute
- Length: 6
- Integer: The content of the Integer field encodes the requested information attributes. Each capability value represents a bit position.
This document specifies the following capabilities ๐ฆ
- Name:
CIVIC_LOCATIONThe server uses Requested-Location-Info with this value to ask the client for specific location info. The numerical value requires the client to attach civic location attributes.CIVIC_LOCATIONrefers to the location profile defined in Section 4.3.1. Numerical Value:1 - Name:
GEO_LOCATIONThe server uses Requested-Location-Info with this value to ask the client for specific location info. The numerical value requires the client to attach geospatial location attributes.GEO_LOCATIONrefers to the location profile described in Section 4.3.2. Numerical Value:2 - Name:
USERS_LOCATIONThis numerical value indicates that the client MUST send a Location-Information Attribute with the Entity Attribute set to zero (0). So there's a one-to-one relationship between theUSERS_LOCATIONtoken and the value zero (0) of the Entity Attribute inside the Location-Information Attribute. A value of zero means the location info refers to the user's client device ๐ฑ Numerical Value:4 - Name:
NAS_LOCATIONThis numerical value indicates that the client MUST send a Location-Information Attribute containing location info with the Entity Attribute set to one (1). So there's a one-to-one relationship between theNAS_LOCATIONtoken and the value one (1) of the Entity Attribute inside the Location-Information Attribute. A value of one means the location info refers to the RADIUS client ๐ข Numerical Value:8 - Name:
FUTURE_REQUESTSThis numerical value indicates that the client MUST provide future Access-Requests for the same session with the same type of information as returned in the initial Access-Request message ๐ Numerical Value:16 - Name:
NONEThe server uses this token to request that the client stop sending location information ๐ Numerical Value:32
If neither the NAS_LOCATION nor the USERS_LOCATION bit is set, then per-default the location of the user's client device is returned (if authorization policies allow it). If both the NAS_LOCATION and the USERS_LOCATION bits are set, the returned location information has to be put into separate attributes. If neither the CIVIC_LOCATION nor the GEO_LOCATION bit is set in the Requested-Location-Info Attribute, then no location information is returned. If both the CIVIC_LOCATION and the GEO_LOCATION bits are set, the location information has to be put into separate attributes. The values of NAS_LOCATION and USERS_LOCATION refer to the location information requested via CIVIC_LOCATION and GEO_LOCATION.
For example, if the NAS_LOCATION, USERS_LOCATION, and GEO_LOCATION bits are all set, then the location information of the RADIUS client and the user's client device is returned in a geospatial-location format ๐โจ
5. Table of Attributes ๐
The following table is a guide to which attributes may appear in which RADIUS messages, and how many of each. ๐
Request Accept Reject Challenge Accounting # Attribute
Request
0-1 0-1 0 0 0+ 126 Operator-Name
0+ 0 0 0 0+ 127 Location-Information
0+ 0 0 0 0+ 128 Location-Data
0-1 0-1 0-1 0-1 0-1 129 Basic-Location-
Policy-Rules
0-1 0-1 0-1 0-1 0-1 130 Extended-Location-
Policy-Rules
0-1 0 0 0 0 131 Location-Capable
0 0-1 0 0-1 0 132 Requested-Location-Info
0 0 0-1 0 0 101 Error-Cause (*)
(*) Note: The Error-Cause Attribute contains the value for the
'Location-Info-Required' error.
Change-of-Authorization Messages
Request ACK NAK # Attribute
0-1 0 0 129 Basic-Location-Policy-Rules
0-1 0 0 130 Extended-Location-Policy-Rules
0-1 0 0 132 Requested-Location-Info
Legend:
0 This attribute MUST NOT be present.
0+ Zero or more instances of this attribute MAY be present.
0-1 Zero or one instance of this attribute MAY be present.
1 Exactly one instance of this attribute MUST be present.
1+ One or more of these attributes MUST be present.
Figure 7: Table of Attributes
The Error-Cause Attribute is defined in [RFC5176].
The Location-Information and the Location-Data Attribute MAY appear more than once. For example, if the server asks for civic and geospatial location information, two Location-Information Attributes need to be sent ๐ฅฐ
The attributes defined in this document are not used in any messages other than the ones listed in Figure 7.
IANA allocated a new value (509) from the Error-Cause registry with the semantics of 'Location-Info-Required' ๐ฅ
6. Diameter RADIUS Interoperability โจ
okay so when Diameter is in the picture, the attributes in this spec can be used as Diameter AVPs from the code space 1-255, which is the RADIUS attribute-compatibility space ๐ง no new Diameter code values get allocated, so it's giving efficiency. the data types and flag rules for the Diameter AVPs, as defined in [RFC3588], look like this:
+---------------------+
| AVP Flag rules |
+----+-----+------+-----+----+
| | |SHOULD| MUST| |
Attribute Name Value Type |MUST| MAY | NOT | NOT|Encr|
+---------------------------------+----+-----+------+-----+----+
|Operator-Name OctetString| | P | | V,M | Y |
|Location-Information OctetString| | P | | V,M | Y |
|Location-Data OctetString| | P | | V,M | Y |
|Basic-Location- | | | | | |
| Policy-Rules OctetString| | P | | V,M | Y |
|Extended-Location- | | | | | |
| Policy-Rules OctetString| | P | | V,M | Y |
|Requested- | | | | | |
| Location-Info OctetString| | P | | V,M | Y |
|Location-Capable OctetString| | P | | V,M | Y |
+---------------------------------+----+-----+------+-----+----+
the RADIUS attributes here have no special translation requirements for Diameter-to-RADIUS or RADIUS-to-Diameter gateways. they just get copied as is, except for stuff like headers, alignment, and padding ๐ see also Section 4.1 of [RFC3588] and Section 9 of [RFC4005].
what this spec says about the applicability of the attributes for RADIUS Access-Request packets applies in Diameter to AA-Request [RFC4005] or Diameter-EAP-Request [RFC4072]. what is said about Access-Challenge applies in Diameter to AA-Answer [RFC4005] or Diameter-EAP-Answer [RFC4072] with the Result-Code AVP set to DIAMETER_MULTI_ROUND_AUTH ๐ฆ what is said about Access-Accept applies in Diameter to AA-Answer or Diameter-EAP-Answer messages that indicate success. and the same vibe for RADIUS Access-Reject packets: they apply in Diameter to AA-Answer or Diameter-EAP-Answer messages that indicate failure.
what is said about CoA-Request applies in Diameter to Re-Auth-Request [RFC4005]. and what is said about Accounting-Request applies in Diameter to Accounting-Request [RFC4005] as well ๐ธ
these AVPs may also be used by Diameter applications other than RFC 4005 [RFC4005] and RFC 4072 [RFC4072]. the ones I just mentioned are, however, likely to be relevant in the context of this document ๐
7. Security Considerations ๐ฅ
okay this section is SERIOUS and I'm not gonna sugarcoat it ๐ญ a number of security aspects are relevant for the distribution of location information via RADIUS. they're discussed in separate subsections, so let's go ๐
7.1. Communication Security ๐
requirements for protecting a Location Object are defined in [RFC3693]. namely: mutual end-point authentication, data object integrity, data object confidentiality, and replay protection ๐
if there's no authentication, integrity, and replay protection between the participating RADIUS entities, then adversaries can spoof and modify transmitted attributes. no thoughts, just chaos ๐ฑ two security mechanisms are proposed for RADIUS:
- [RFC2865] proposes the usage of a static key. that raised concerns about the lack of dynamic key management. at the time of writing, work is ongoing to address some shortcomings of the [RFC2865] attribute regarding security protection ๐ง
- RADIUS over IPsec [RFC3579] enables the use of standard key-management mechanisms, such as Kerberized Internet Negotiation of Keys (KINK), the Internet Key Exchange Protocol (IKE), and IKEv2 [RFC4306], to establish IPsec security associations. Confidentiality protection MUST be used to stop an eavesdropper from getting access to location information ๐ confidentiality protection is already there for other reasons in lots of environments, like for transporting keying material in the context of Extensible Authentication Protocol (EAP) authentication and authorization. so this requirement is, in many environments, already fulfilled โจ Mutual authentication MUST be provided between neighboring RADIUS entities to prevent man-in-the-middle attacks. since mutual authentication is already required for key transport within RADIUS messages, it's not a deployment obstacle ๐ซถ since IPsec protection is already suggested as a way to protect RADIUS, no additional considerations need to be addressed beyond those described in [RFC3579].
in case IPsec protection isn't available for some reason and RADIUS-specific security mechanisms have to be used, here's what to watch for. the Access-Request message is not integrity protected. that would let an adversary change the contents of the Location Object, or insert, modify, and delete attributes or individual fields. to fix this, theMessage-Authenticator (80)can be used to integrity protect the entire Access-Request packet. theMessage-Authenticator (80)is also required when EAP is used, so lots of modern RADIUS servers already support it ๐
the rules for that are:
- Access-Request packets including location attribute(s) without a
Message-Authenticator (80)Attribute SHOULD be silently discarded by the RADIUS server. - A RADIUS server supporting location attributes MUST calculate the correct value of the
Message-Authenticator (80)and MUST silently discard the packet if it does not match the value sent. - Access-Accept messages, including location attribute(s), without a
Message-Authenticator (80)Attribute SHOULD be silently discarded by the NAS. - An NAS supporting location attributes MUST calculate the correct value of a received
Message-Authenticator (80)and MUST silently discard the packet if it does not match the value sent.
RADIUS and Diameter make some assumptions about trust between the traversed RADIUS entities, because object-level security is not provided by either RADIUS or Diameter. so some trust has to be placed in the RADIUS entities to behave according to the defined rules ๐ฅบ also, the RADIUS protocol doesn't involve the user in their protocol interaction, except for tunneling authentication information (like EAP messages) through their infrastructure. RADIUS and Diameter have even become a de facto protocol for key distribution for network-access authentication applications. so in the past there were some concerns about the trust placed in the infrastructure, especially from the security area, when it comes to keying. the EAP keying infrastructure is described in [RFC4282] โจ
7.2. Privacy Considerations ๐
this section talks about privacy implications for distributing location information within RADIUS. note also that the RADIUS server can get some amount of location information from the NAS identifier. this document, though, describes procedures to convey more accurate location information about the end host and/or the network. in a number of deployment environments, location information about the network also reveals the user's current location with a certain degree of precision. how precise depends on the location-determination mechanism used, the update frequency, the size of the network, and other factors, like movement traces ๐
three types of use cases have to be differentiated:
- The RADIUS server does not want to receive location information from the RADIUS client.
- If there's an out-of-band agreement between the entity responsible for the NAS and the entity operating the RADIUS server, location information may be sent without an explicit request from the RADIUS server.
- The RADIUS server dynamically requests location information from the NAS.
7.2.1. RADIUS Client ๐
the RADIUS client MUST behave according to the following guidelines:
- If neither an out-of-band agreement exists nor location information is requested by the RADIUS server, then location information is not disclosed by the RADIUS client.
- The RADIUS client MUST pass location information to other entities (e.g., when information is written to a local database or to the log files) only together with the policy rules. The entity receiving the location information, together with the policies, MUST follow the guidance given with these rules.
- A RADIUS client MUST include Basic-Location-Policy-Rules and Extended-Location-Policy-Rules Attributes that are configured within an Access-Request packet.
- NAS implementations supporting this specification, which are configured to provide location information, MUST echo Basic-Location-Policy-Rules and Extended-Location-Policy-Rules Attributes unmodified within a subsequent Access-Request packet. in addition, an Access-Request packet sent with a Service-Type value of "Authorize Only" MUST include the Basic-Location-Policy-Rules or Extended-Location-Policy-Rules Attributes that were received in a previous Access-Accept if the FUTURE_REQUESTS flag was set in the Requested-Location-Info Attribute.
7.2.2. RADIUS Server ๐ฐ
the RADIUS server is a natural place for storing authorization policies, since the user typically has some sort of trust relationship with the entity operating the RADIUS server. once the infrastructure is deployed and location-aware applications are available, there might be a strong desire to use location information for other purposes too ๐
the Common Policy framework [RFC4745], which was extended for geolocation privacy [GEO-POLICY], is tailored for exactly this purpose. the Extensible Markup Language (XML) Configuration Access Protocol (XCAP) [RFC4825] lets users change their privacy policies using a standardized protocol. these policies are an important tool for limiting further distribution of the user's location to other location-based services ๐ฆ
the RADIUS server MUST behave according to the following guidelines:
- The RADIUS server MUST attach available rules to the Access-Accept, Access-Reject, or Access-Challenge message when the RADIUS client is supposed to provide location information.
- When location information is made available to other entities (e.g., writing to stable storage for later billing processing), then the RADIUS server MUST attach the privacy rules to location information.
7.2.3. RADIUS Proxy ๐งโโ๏ธ
a RADIUS proxy, behaving as a combined RADIUS client and RADIUS server, MUST follow the rules described in Sections 7.2.1 and 7.2.2 ๐
7.3. Identity Information and Location Information โจ
okay bestie, this part is lowkey the scariest one ๐ญ for the use cases we're imagining, your identity and your device's identity are basically glued to the location info. so if the visited network or RADIUS brokers can figure out who you are, they can match your location to you. and then they can see your movement patterns ๐ not cute.
ways your identity can "leak" to the visited network or RADIUS brokers:
- your device might use a fixed Media Access Control (MAC) address, or build its IP address from one. that means the same device is easy to spot at every location it shows up in. there are ways to dodge an IP address that's based on a MAC address [RFC4941]. some link layers also let you skip MAC addresses or change them on the fly ๐ฆ
- network-access authentication, like the PPP Challenge Handshake Authentication Protocol (CHAP) [RFC1994] or EAP [RFC4187], can reveal who you are during the auth process. EAP has ways to protect this: you can use private Network Access Identifiers (NAIs) [RFC4282] in the EAP Identity Response message, and some EAP methods do private identity exchanges inside the method itself (for example [RFC4187], [RFC5281], [PEAP], and [RFC5106]). CHAP has no identity privacy support at all ๐
- RADIUS can send info from your home network back to the visited one in a way that either identifies you or at least lets someone link your sessions together. this happens with static data in a Class Attribute [RFC2865] or with certain accounting attribute usages [RFC4372] ๐
- mobility protocols might expose some long-term identifier, like a home address ๐ธ
- application-layer protocols might expose other permanent identifiers too ๐ซถ
so to stop identities from getting linked to location info, you have to stop identity leaks from every source, not just one. one leaky spot is enough to ruin it, periodt ๐
ngl most users don't really know how much identity confidentiality matters, and some protocols just don't support identity-privacy mechanisms at all ๐ค it gets worse because users often can't pick their protocols freely. the operator they use, the kind of network they want, their equipment, or their authentication method usually decides for them. not fair, but that's the reality ๐ง๏ธ
here's the good news: if you're attached to your home network, privacy is way simpler than when you roam into a visited network. the NAS and the home RADIUS server are in the same administrative domain, so there's less stuff going on behind the scenes โจ when you're roaming, there might not be any direct relationship between the visited and home network operators, so some RADIUS brokers have to get involved. with subscription-based network access like we have today, you have a contract with your home provider, and that could (in theory) unlock stronger privacy protections, including policy rules stored at the home network itself to limit further distribution ๐
in lots of cases, you also need to secure the transport of location information along the RADIUS infrastructure. the ways to do that are covered in Section 7.1 ๐
8. IANA Considerations ๐
the Attribute Types and Attribute Values in this document were registered by the Internet Assigned Numbers Authority (IANA) from the RADIUS namespaces, following the "IANA Considerations" section of RFC 3575 [RFC3575] and BCP 26 [RFC5226]. the Attribute Type also got registered in the Diameter namespace ๐ for the RADIUS attributes and registries this document made, IANA put them in the Radius Types registry ๐
this document defines these attributes:
- Operator-Name
- Location-Information
- Location-Data
- Basic-Location-Policy-Rules
- Extended-Location-Policy-Rules
- Location-Capable
- Requested-Location-Info
check Section 5 for the registered list of numbers ๐ฅ
IANA also assigned a new value (509) for the Error-Cause Attribute [RFC5176] called "Location-Info-Required", based on this document โจ
IANA also made some brand new registries, all listed in the subsections below. iconic ๐
8.1. New Registry: Operator Namespace Identifier ๐ง
this document also defines an Operator Namespace Identifier registry. it's used in the Namespace ID field of the Operator-Name Attribute. quick note: this document only asks IANA to maintain a registry of namespaces that already exist for this field. it does NOT ask IANA to create any new namespaces or put any values inside them ๐ โโ๏ธ
IANA added these values to the Operator Namespace Identifier registry. each entry has a numerical identifier (handed out in sequence), a token for the operator namespace, and a contact person for the registry ๐
+----------+--------------------+------------------------------------+
|Identifier| Operator Namespace | Contact Person |
| | Token | |
+----------+--------------------+------------------------------------+
| 0x30 | TADIG | TD.13 Coordinator |
| | | (td13@gsm.org) |
| 0x31 | REALM | IETF O&M Area Directors |
| | | (ops-ads@ietf.org) |
| 0x32 | E212 | ITU Director |
| | | (tsbdir@itu.int) |
| 0x33 | ICC | ITU Director |
| | | (tsbdir@itu.int) |
+----------+--------------------+------------------------------------+
okay so the identifier values above are the ASCII characters '0' (decimal 48, or hex 0x30), '1' (decimal 49, or hex 0x31), '2' (decimal 50, or hex 0x32), and '3' (decimal 51, or hex 0x33). this encoding was picked to make parsing easier ๐ฅฐ
requests to IANA for a new Namespace ID value (anything from 0x34 to 0xFE) will go through Expert Review. the IESG will appoint a designated expert for this ๐ซถ
the Expert Reviewer's job is to check that a new entry is actually needed, or whether it could fit in an existing database. for example, is there a real need for a token for a Namespace ID because one is already up and running? or should the requester be pointed toward the REALM identifier plus the name instead? ๐ค the Expert Reviewer should also do a reasonable amount of digging to make sure any new entry is a correct reference to an operator namespace every time one gets registered ๐
8.2. New Registry: Location Profiles ๐ธ
Section 4.2 defines the Location-Information Attribute, which has a Code field holding an 8-bit integer. only two values are defined in this document:
- Value (0): Civic location profile described in Section 4.3.1
- Value (1): Geospatial location profile described in Section 4.3.2
all the other values are reserved for future use ๐ฎ
following the policies outlined in [RFC3575], the available values, along with a description of what they mean, will be assigned after Expert Review. updates can only be made with expert approval. with expert approval, entries can also be marked "deprecated". the IESG will appoint a designated expert for this too ๐
every registration must include the value and the matching semantics of the defined location profile โจ
8.3. New Registry: Location-Capable Attribute ๐ฆ
Section 4.6 defines the Location-Capable Attribute, which holds a bit map. 32 bits are available, and this document defines 4 of them. this document creates a brand new IANA registry for the Location-Capable Attribute, and IANA added these values to it:
+----------+----------------------+
| Value | Capability Token |
+----------+----------------------+
| 1 | CIVIC_LOCATION |
| 2 | GEO_LOCATION |
| 4 | USERS_LOCATION |
| 8 | NAS_LOCATION |
+----------+----------------------+
following the policies outlined in [RFC3575], the available bits and their semantics will be assigned after Expert Review. updates are only allowed with expert approval, and entries can be marked "deprecated" with expert approval. the IESG appoints the designated expert ๐
every registration must include:
- Name: the Capability Token (basically, an identifier for the capability) ๐ท๏ธ
- Description: a brief description explaining what the 'info' element means ๐
- Numerical Value: a number placed into the Capability Attribute, representing one bit in the bit-string of the Requested-Location-Info Attribute ๐ข
8.4. New Registry: Entity Types ๐งธ
Section 4.2 defines the Location-Information Attribute, which has an 8-bit Entity field. this document registers two values:
- Value (0) describes the location of the user's client device.
- Value (1) describes the location of the RADIUS client.
all other values are reserved for future use ๐
again, following the policies outlined in [RFC3575], the available bits and their semantics will be assigned after Expert Review. updates need expert approval, entries can be marked "deprecated" with expert approval, and the IESG appoints the designated expert ๐
every registration must include the value and a matching description โจ
8.5. New Registry: Privacy Flags ๐
Section 4.4 defines the Basic-Location-Policy-Rules Attribute, which holds flags for privacy settings. 16 bits are available. this document defines just one of them, bit (0), which means 'retransmission allowed'. bits 1-15 are reserved for future use ๐ซง
following the policies outlined in [RFC3575], the available bits and their semantics will be assigned after Expert Review. updates require expert approval, entries can be marked "deprecated" with expert approval, and the IESG appoints the designated expert ๐
every registration must include the bit position and the semantics of that bit ๐
8.6. New Registry: Requested-Location-Info Attribute โจ
Okay, so, bestie, Section 4.7 defines the Requested-Location-Info Attribute, and it's a bit map ๐ That means 32 bits are available, and this document defines 6 of them. ๐ฆ So this document creates a brand new IANA registry just for this attribute. IANA already put these values in the registry:
+----------+----------------------+
| Value | Capability Token |
+----------+----------------------+
| 1 | CIVIC_LOCATION |
| 2 | GEO_LOCATION |
| 4 | USERS_LOCATION |
| 8 | NAS_LOCATION |
| 16 | FUTURE_REQUESTS |
| 32 | NONE |
+----------+----------------------+
The semantics of these values are explained in Section 4.7, so go check that out ๐ธ
Now, the rules for new stuff. Following the policies outlined in [RFC3575], new Capability Tokens get assigned after the Expert Review process, and each one comes with a description of what it means for the Requested-Location-Info Attribute ๐ Updates only happen with expert approval, no exceptions ๐ Also, with expert approval, an entry can be marked as "deprecated" โจ The IESG appoints a designated expert for this.
Every registration has to include these three things:
- Name: the Capability Token, which is basically an identifier for the capability ๐ง
- Description: a short explanation of what the 'info' element means ๐
- Numerical Value: the number that goes into the Capability Attribute and stands for one bit in the bit-string of the Requested-Location-Info Attribute ๐
9. Acknowledgments ๐ซถ
The authors want to thank these people for helping with an early version of this document and for sharing their input: Chuck Black, Paul Congdon, Jouni Korhonen, Sami Ala-luukko, Farooq Bari, Ed Van Horne, Mark Grayson, Jukka Tuomi, Jorge Cuellar, and Christian Guenther ๐
Henning Schulzrinne wrote the civic location information content in this document ๐ธ The geospatial location-information format is based on work by James Polk, John Schnizlein, and Marc Linsner ๐ฆ And the authorization policy format is based on work by Jon Peterson โจ
The authors also thank Victor Lortz, Anthony Leibovitz, Jose Puthenkulam, Bernrad Aboba, Jari Arkko, Parviz Yegani, Serge Manning, Kuntal Chowdury, Pasi Eronen, Blair Bullock, and Eugene Chang for their feedback on an early version ๐ Jari Arkko also gave textual contributions, which is iconic ๐ Lionel Morand gave super detailed feedback on lots of issues, and it really made the document better ๐ฅ Jouni Korhonen, Victor Fajardo, Tolga Asveren, and John Loughney helped with the Diameter RADIUS interoperability section ๐ง Andreas Pashalidis reviewed a later version and left a bunch of comments ๐ Alan DeKok, Lionel Morand, Jouni Korhonen, David Nelson, and Emile van Bergen guided the Requested-Location-Info Attribute and joined the capability-exchange discussions ๐ Allison Mankin, Jouni Korhonen, and Pasi Eronen wrote text for the Operator Namespace Identifier registry ๐ Jouni Korhonen reached out to the GSMA to find a contact person for the TADIG operator namespace, and Scott Bradner asked the ITU-T for a contact for the E212 and the ICC operator namespace ๐
This document grew out of discussions in the IETF GEOPRIV Working Group, so the authors thank Henning Schulzrinne, James Polk, John Morris, Allison Mankin, Randall Gellens, Andrew Newton, Ted Hardie, and Jon Peterson for chatting through a bunch of issues with them โญ Stephen Hayes gets a shout-out for lining this work up with 3GPP activities ๐
The Wimax Forum Global Roaming Working Group (GRWG) also gave feedback on the Operator-Name attribute, and Ray Jong Kiem wrote a super detailed description that helped fix the document ๐ธ
The RADEXT Working Group chairs, David Nelson and Bernard Aboba, reviewed several drafts, and the authors are very grateful for their help and patience ๐ซถ
Last but not least, thank you to Dan Romascanu, Glen Zorn, Russ Housley, Jari Arkko, Ralph Droms, Adrial Farrel, Tim Polk, and Lars Eggert for the IETF Last Call comments ๐ฆ Derek Atkins did the security area directorate review ๐ฅ And Yoshiko Chong spotted a bug in the IANA Considerations section ๐
10. References ๐
10.1. Normative References
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson, "Remote Authentication Dial In User Service (RADIUS)", RFC 2865, June 2000.
- [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", RFC 3492, March 2003.
- [RFC3575] Aboba, B., "IANA Considerations for RADIUS (Remote Authentication Dial In User Service)", RFC 3575, July 2003.
- [RFC3588] Calhoun, P., Loughney, J., Guttman, E., Zorn, G., and J. Arkko, "Diameter Base Protocol", RFC 3588, September 2003.
- [RFC3825] Polk, J., Schnizlein, J., and M. Linsner, "Dynamic Host Configuration Protocol Option for Coordinate-based Location Configuration Information", RFC 3825, July 2004.
- [RFC4776] Schulzrinne, H., "Dynamic Host Configuration Protocol (DHCPv4 and DHCPv6) Option for Civic Addresses Configuration Information", RFC 4776, November 2006.
- [RFC5176] Chiba, M., Dommety, G., Eklund, M., Mitton, D., and B. Aboba, "Dynamic Authorization Extensions to Remote Authentication Dial In User Service (RADIUS)", RFC 5176, January 2008.
- [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, May 2008.
10.2. Informative References
- [GEO-POLICY] Schulzrinne, H., Tschofenig, H., Morris, J., Cuellar, J., and J. Polk, "Geolocation Policy: A Document Format for Expressing Privacy Preferences for Location Information", Work in Progress, February 2009.
- [GMLv3] "Open Geography Markup Language (GML) Implementation Specification", OGC 02-023r4, January 2003,
<http://www.opengis.org/techno/implementation.htm>. - [GSM] "TADIG Naming Conventions", Version 4.1, GSM Association Official Document TD.13, June 2006.
- [ISO] "Codes for the representation of names of countries and their subdivisions - Part 1: Country codes", ISO 3166-1, 1997.
- [ITU1400] "Designations for interconnections among operators' networks", ITU-T Recommendation M.1400, January 2004.
- [ITU212] "The international identification plan for mobile terminals and mobile users", ITU-T Recommendation E.212, May 2004.
- [PEAP] Josefsson, S., Palekar, A., Simon, D., and G. Zorn, "Protected EAP Protocol (PEAP) Version 2", Work in Progress, October 2004.
- [RFC1305] Mills, D., "Network Time Protocol (Version 3) Specification, Implementation", RFC 1305, March 1992.
- [RFC1994] Simpson, W., "PPP Challenge Handshake Authentication Protocol (CHAP)", RFC 1994, August 1996.
- [RFC2866] Rigney, C., "RADIUS Accounting", RFC 2866, June 2000.
- [RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication Dial In User Service) Support For Extensible Authentication Protocol (EAP)", RFC 3579, September 2003.
- [RFC3693] Cuellar, J., Morris, J., Mulligan, D., Peterson, J., and J. Polk, "Geopriv Requirements", RFC 3693, February 2004.
- [RFC4005] Calhoun, P., Zorn, G., Spence, D., and D. Mitton, "Diameter Network Access Server Application", RFC 4005, August 2005.
- [RFC4017] Stanley, D., Walker, J., and B. Aboba, "Extensible Authentication Protocol (EAP) Method Requirements for Wireless LANs", RFC 4017, March 2005.
- [RFC4072] Eronen, P., Hiller, T., and G. Zorn, "Diameter Extensible Authentication Protocol (EAP) Application", RFC 4072, August 2005.
- [RFC4119] Peterson, J., "A Presence-based GEOPRIV Location Object Format", RFC 4119, December 2005.
- [RFC4187] Arkko, J. and H. Haverinen, "Extensible Authentication Protocol Method for 3rd Generation Authentication and Key Agreement (EAP-AKA)", RFC 4187, January 2006.
- [RFC4282] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, "The Network Access Identifier", RFC 4282, December 2005.
- [RFC4306] Kaufman, C., "Internet Key Exchange (IKEv2) Protocol", RFC 4306, December 2005.
- [RFC4372] Adrangi, F., Lior, A., Korhonen, J., and J. Loughney, "Chargeable User Identity", RFC 4372, January 2006.
- [RFC4745] Schulzrinne, H., Tschofenig, H., Morris, J., Cuellar, J., Polk, J., and J. Rosenberg, "Common Policy: A Document Format for Expressing Privacy Preferences", RFC 4745, February 2007.
- [RFC4825] Rosenberg, J., "The Extensible Markup Language (XML) Configuration Access Protocol (XCAP)", RFC 4825, May 2007.
- [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy Extensions for Stateless Address Autoconfiguration in IPv6", RFC 4941, September 2007.
- [RFC5106] Tschofenig, H., Kroeselberg, D., Pashalidis, A., Ohba, Y., and F. Bersani, "The Extensible Authentication Protocol-Internet Key Exchange Protocol version 2 (EAP-IKEv2) Method", RFC 5106, February 2008.
- [RFC5281] Funk, P. and S. Blake-Wilson, "Extensible Authentication Protocol Tunneled Transport Layer Security Authenticated Protocol Version 0 (EAP-TTLSv0)", RFC 5281, August 2008.
Appendix A. Matching with GEOPRIV Requirements ๐
Okay, this appendix is where we line things up ๐ It compares the requirements for a GEOPRIV using protocol, which are described in [RFC3693], against the approach of distributing Location Objects with RADIUS ๐ธ
In Appendices A.1 and A.2, we talk about the privacy implications when RADIUS entities make location information available to other parties ๐ฆ Then in Appendix A.3, the requirements get matched up against those two scenarios โจ
A.1. Distribution of Location Information at the User's Home Network ๐
okay so once location info gets sent from the RADIUS client to the RADIUS server, it can get passed around for all kinds of reasons ๐ this section is about the privacy stuff that comes with sharing it with other entities. it's giving "who else is looking at this" energy, and it matters ๐ซถ
to keep it generic, we assume the visited RADIUS and the home RADIUS server belong to different administrative domains ๐ธ the Location Recipient gets location info about a particular Target through protocols that are outside this document's scope (like SIP, HTTP, or an API) ๐ฆ
here's the figure so you can see who's who:
visited network | home network
|
| +----------+
| | Rule |
| | Holder |
| +----+-----+
| |
| rule|interface
+----------+ | V +----------+
|Location | | +----------+ notification |Location |
|Generator | | |Location |<------------->|Recipient |
+----------+ publication |Server | interface | |
|RADIUS |<------------->+----------+ +----------+
|Client | interface |RADIUS | E.g., SIP/HTTP
+----------+ | |Server |
| +----------+
E.g., NAS RADIUS
|
|
Figure 8: Location Server at the Home Network
quick tea โ: the term 'Rule Holder' in Figure 8 is the entity that creates the authorization ruleset ๐ main character energy for whoever gets to write the rules ๐
A.2. Distribution of Location Information at the Visited Network ๐ฐ๏ธ
this section is about a setup where a Location Server in the visited network makes location info available to Location Recipients ๐ you need some identifier to use as an index in the location database, and one option is the Network Access Identifier. [RFC4282] and [RFC4372] give background on whether entities in the visited network can read the user's NAI in cleartext ๐ (the full cites are RFC 4282 [RFC4282] and RFC 4372 [RFC4372], bestie ๐)
the visited network hands location info to a Location Recipient (think SIP or HTTP) โจ this document lets the NAS grab the user's privacy policy through its chat with the RADIUS server ๐ซถ without that, you're stuck with default policies, and those are very restrictive ๐ this way the Location Server in the visited network can make sure it's acting by the user's rules ๐
here's the figure:
visited network | home network
|
+----------+ |
|Location | |
|Recipient | |
| | |
+----------+ |
^ | +----------+
| | | Rule |
notification | | Holder |
interface | | |
| | +----+-----+
| | |
| | rule|interface
v | |
+----------+ | |
|Location | | v
|Server | | +----------+
+----------+ Rule Transport|RADIUS |
|RADIUS |<------------->|Server |
|Client | RADIUS +----------+
+----------+ |
|Location | |
|Generator |
+----------+
Figure 9: Location Server at the Visited Network
last but not least ๐ location info always travels with privacy policies ๐ง this document lets the RADIUS client get those policies ๐ then the Location Server can act on them to do access control using the Extended-Location-Policy-Rules, and it adheres to the privacy statements in the Basic-Location-Policy-Rules ๐ฅ that's the whole vibe, and it's iconic ๐ญโจ
A.3. Requirements Matching ๐
Okay bestie, this is where we check the GEOPRIV requirements off one by one. โจ Section 7.1 of [RFC3693] lays out what a "Location Object" needs to do, and we go through each one in the list below. ๐
Req. 1. (Location Object generalities):
- Regarding requirement 1.1, the syntax and semantics of the Location Object are taken from [RFC3825] and [RFC4776]. It's also possible to convert it to the format used in the Geography Markup Language (GMLv3) [GMLv3], as used with PIDF-LO [RFC4119]. ๐ธ
- Regarding requirement 1.2, a bunch of fields in the civic location-information format are optional. ๐ซถ
- Regarding requirement 1.3, including the type of place item (CAtype 29) used in the DHCP civic format gives the location an extra classification. This attribute can be seen as an extension. ๐ง
- Regarding requirement 1.4, this document does not define the format of the location information. ๐
- Regarding requirement 1.5, location information is only sent from the RADIUS client to the RADIUS server. ๐
- Regarding requirement 1.6, the Location Object holds both location information and privacy rules. The location information is described in Sections 4.2, 4.3.1, and 4.3.2, and the matching privacy rules are detailed in Sections 4.4 and 4.5. ๐
- Regarding requirement 1.7, the Location Object works across a variety of protocols. The format of the object is reused from other documents, as detailed in Sections 4.2, 4.3.1, 4.3.2, 4.4, and 4.5. ๐ฆ
- Regarding requirement 1.8, the Location Object is encoded to be lightweight, with an emphasis on use with RADIUS. โญ
Req. 2. (Location Object fields):
- Regarding requirement 2.1, the target identifier is carried inside the network-access authentication protocol (for example, inside the EAP-Identity Response when EAP is used, and/or inside the EAP method itself). As described in Section 7.2 of this document, there are a bunch of perks if this identifier isn't sent in the clear. ๐ This works with certain EAP methods where the identity in the EAP-Identity Response only holds what's needed to route the response to the user's home network. The user identity is protected by the authentication and key exchange protocol. ๐
- Regarding requirement 2.2, in the main scenario the Location Recipient is the home RADIUS server. For a scenario where the Location Recipient gets location information from the Location Server via HTTP or SIP, the respective mechanisms defined in those protocols are used to identify the recipient. The Location Generator can't know the recipients ahead of time if they aren't defined in this protocol. ๐คทโโ๏ธ
- Regarding requirement 2.3, the RADIUS entities know the credentials of the Location Recipient based on the security mechanisms defined in the RADIUS protocol itself. Section 7 of this document describes those security mechanisms offered by RADIUS. The same is true for requirement 2.4. ๐ก๏ธ
- Regarding requirement 2.5, Sections 4.2, 4.3.1, and 4.3.2 describe the content of the Location fields. Since the location format itself isn't defined in this document, the motion and direction vectors listed in requirement 2.6 aren't defined either. ๐งญ
- Regarding requirement 2.6, this document gives the RADIUS server a way to indicate what type of location information it would like to see from the RADIUS client. ๐
- Regarding requirement 2.7, timing information is provided with the 'Sighting Time' and 'Time-to-Live' fields defined in Section 4.2. โฐ
- Regarding requirement 2.8, a reference to an external, more detailed ruleset is provided with the Extended-Location-Policy-Rules Attribute in Section 4.5. ๐
- Regarding requirement 2.9, security headers and trailers are provided as part of the RADIUS protocol or even as part of IPsec. ๐ฅ
- Regarding requirement 2.10, a version number in RADIUS is provided with the IANA registration of the attributes. New attributes get a new IANA number. ๐ข
Req. 3. (Location Data Types):
- Regarding requirement 3.1, this document reuses civic and geospatial location information as described in Sections 4.3.2 and 4.3.1. ๐
- With the support of civic and geospatial location information, requirement 3.2 is fulfilled. โ
- Regarding requirement 3.3, the geospatial location information used by this document only refers to absolute coordinates. However, the granularity of the location information can be reduced with the help of the AltRes, LoRes, and LaRes fields described in [RFC3825]. ๐
- Regarding requirement 3.4, further Location Data Types can be added via new coordinate reference systems (CRSs, see the Datum field in [RFC3825]) and via extensions to [RFC3825] and [RFC4776]. ๐
Section 7.2 of [RFC3693] lays out the requirements of a "using protocol". Those requirements are listed below. ๐ง
Req. 4.: The using protocol has to obey the privacy and security instructions coded in the Location Object (LO) regarding the transmission and storage of the LO. This document requires that entities that aim to make location information available to third parties be required to obey the privacy instructions. ๐โโ๏ธ
Req. 5.: The using protocol will typically make sure the keys associated with the credentials get transported to the respective parties, which means key establishment is the responsibility of the using protocol. Section 7 of this document specifies how security mechanisms are used in RADIUS and how they can be reused to provide security protection for the Location Object. The privacy considerations (see Section 7.2) are also relevant for this requirement. ๐๏ธ
Req. 6. (Single Message Transfer): Especially for tracking small target devices, the design should allow a single message or packet transmission of location as a complete transaction. The encoding of the Location Object is specifically tailored to fit into a single message that even respects the (Path) MTU size. ๐ฆ
Section 7.3 of [RFC3693] lays out the requirements of a "Rule-based Location Data Transfer". Those requirements are listed below. ๐
Req. 7. (LS Rules): In the scenario shown in Figure 8, the decision of a Location Server to give a Location Recipient access to location information is based on Rule Maker-defined privacy rules stored at the home network. For the scenario shown in Figure 9, the Rule Maker-defined privacy rules are sent from the RADIUS server to the NAS (see Sections 4.4, 4.5, and 7.2 for more details). ๐
Req. 8. (LG Rules): For all usage scenarios, it's possible to check the privacy rule before location information is transmitted from the NAS to the RADIUS server or even to third parties. In the case of an out-of-band agreement between the owner of the NAS and the owner of the RADIUS server, privacy might be applied at a higher granularity. For the scenario shown in Figure 8, the visited network already has the user's location information before the user is authenticated and authorized. A correlation between the location and the user identity might still not be possible for the visited network (as explained in Section 7.2). A Location Server in the visited network has to evaluate the available rulesets. ๐ง
Req. 9. (Viewer Rules): The Rule Maker might define (via mechanisms outside the scope of this document) which policy rules are disclosed to other entities. ๐
Req. 10. (Full Rule language): GEOPRIV has defined a rule language that can express a wide range of privacy rules, which applies to distributing Location Objects. A basic ruleset is provided with the Basic-Location-Policy-Rules Attribute (Section 4.4). A reference to the extended ruleset is carried in Section 4.5. The format of these rules is described in [RFC4745] and [GEO-POLICY]. ๐
Req. 11. (Limited Rule language): A limited (or basic) ruleset is provided by the Policy-Information Attribute in Section 4.4 (and as introduced with PIDF-LO [RFC4119]). ๐ท
Section 7.4 of [RFC3693] lays out the requirements of a "Location Object Privacy and Security". Those requirements are listed below. ๐
Req. 12 (Identity Protection): Support for unlinkable pseudonyms is provided by using a corresponding authentication and key-exchange protocol. Such protocols are available, for example, with the support of EAP as network-access authentication methods. Some EAP methods support passive user-identity confidentiality, whereas others even support active user-identity confidentiality. This issue is discussed further in Section 7. The importance of user-identity confidentiality and identity protection has already been recognized as an important property (see, for example, a document on EAP method requirements for wireless LANs [RFC4017]). ๐ซฃ
Req. 13. (Credential Requirements): As described in Section 7 , RADIUS signaling messages can be protected with IPsec. This allows a number of authentication and key exchange protocols to be used as part of IKE, IKEv2, or KINK. ๐๏ธ
Req. 14. (Security Features): GEOPRIV defines a few security requirements for protecting Location Objects, such as mutual end-point authentication, data object integrity, data object confidentiality, and replay protection. As described in Section 7, these requirements are fulfilled by using IPsec if mutual authentication refers to the RADIUS entities (acting as various GEOPRIV entities) that communicate directly with each other. ๐
Req. 15. (Minimal Crypto): A minimum of security mechanisms is mandated by the usage of RADIUS. Communication security for Location Objects between RADIUS infrastructure elements is provided by the RADIUS protocol (including IPsec and its dynamic key-management framework), rather than relying on object security via S/SIME (which isn't available with RADIUS). ๐
Authors' Addresses ๐ฆ
Hannes Tschofenig (editor)
Nokia Siemens Networks
Linnoitustie 6
Espoo 02600
Finland
Phone: +358 (50) 4871445
EMail: Hannes.Tschofenig@gmx.net
URI: http://www.tschofenig.priv.at
Farid Adrangi
Intel Corporatation
2111 N.E. 25th Avenue
Hillsboro OR
USA
EMail: farid.adrangi@intel.com
Mark Jones
Bridgewater Systems Corporation
303 Terry Fox Drive
Ottawa, Ontario K2K 3J1
CANADA
EMail: mark.jones@bridgewatersystems.com
Avi Lior
Bridgewater Systems Corporation
303 Terry Fox Drive
Ottawa, Ontario K2K 3J1
CANADA
EMail: avi@bridgewatersystems.com
Bernard Aboba
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
USA
EMail: bernarda@microsoft.com
๐ฆ where this page comes from
- ietf: rfc5580 2009-08
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms