Moonshot Project Trust Router Functional Specification Revision History: 0.1 Margaret Wasserman 0.9 Margaret Wasserman 1.0 Margaret Wasserman 29-May-2012 1-June-2012 3-June-2012 First Draft for Review Reflects feedback on First Draft More updates based on feedback/discussion Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 1 TABLE OF CONTENTS 1. Trust Router Overview .................................................................................................... 4 1.1 1.2 1.3 Introduction ................................................................................................................................................................... 4 Related IETF Work ...................................................................................................................................................... 4 Terminology ................................................................................................................................................................... 5 2. Trust Router Operations ................................................................................................. 6 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3. Trust Router Protocol Operational Overview...................................................................................................6 Trust Path Query Operational Overview ............................................................................................................9 Step 0: Trust Router Protocol ..................................................................................................................................9 Step 1: Trust Path Query Request ..........................................................................................................................9 Step 2 & 3: Trust Path Traversal ........................................................................................................................ 10 Step 4: Temporary Identity Provisioned .......................................................................................................... 10 Step 5: Trust Path Query Response..................................................................................................................... 10 Step 6: AAA Authentication .................................................................................................................................... 10 Step 7: Temporary Identity Look-Up ................................................................................................................. 10 Trust Router Protocol Details ........................................................................................ 11 3.1 Trust Router Messages ............................................................................................................................................ 11 3.1.1 Hello Message ............................................................................................................................................................... 11 3.1.2 Trust Link Database Message ............................................................................................................................... 11 3.1.3 Trust Link Update Message.................................................................................................................................... 11 3.1.4 Serial Numbers ............................................................................................................................................................ 12 3.1.5 TCP Connection Handling ....................................................................................................................................... 12 3.2 Communities of Interest.......................................................................................................................................... 13 3.2.1 Communities of Registration................................................................................................................................. 13 3.2.2 COIs Managed by a COR........................................................................................................................................... 13 3.2.3 COIs Independent from CORs ................................................................................................................................ 13 4. Trust Path Query Details ............................................................................................... 14 4.1 Trust Path Query Messages ................................................................................................................................... 14 4.1.1 Trust Path Query Request ....................................................................................................................................... 14 4.1.2 Trust Path Query Response .................................................................................................................................... 14 4.1.3 Trust Path Forwarding Request .......................................................................................................................... 14 4.1.4 Trust Path Forwarding Response ....................................................................................................................... 14 4.1.5 Temporary Identity Request.................................................................................................................................. 14 4.1.6 Temporary Identity Response ............................................................................................................................... 15 5. High-Level Architecture................................................................................................. 16 5.1 Conceptual Datastructures .................................................................................................................................... 16 5.1.1 Peer Table ...................................................................................................................................................................... 16 5.1.2 Trust Link Database .................................................................................................................................................. 16 5.2 Architectural Elements ............................................................................................................................................ 16 5.2.1 Peer Table Manager .................................................................................................................................................. 16 5.2.2 Trust Link Database Manager.............................................................................................................................. 16 5.2.3 Trust Path Query Client ........................................................................................................................................... 16 5.2.4 Trust Path Query Server .......................................................................................................................................... 16 5.2.5 Trust Path Forwarding Client ............................................................................................................................... 16 5.2.6 Trust Path Forwarding Server ............................................................................................................................. 16 5.2.7 Temporary Identity Client ...................................................................................................................................... 16 Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 2 5.2.8 Temporary Identity Server ..................................................................................................................................... 16 5.3 Functional Elements ................................................................................................................................................. 16 5.3.1 Trust Router .................................................................................................................................................................. 16 5.3.2 Relying Party ................................................................................................................................................................ 16 5.3.3 Identity Provider ......................................................................................................................................................... 16 5.4 Naming ........................................................................................................................................................................... 17 Message Representation ..................................................................................................... 18 5.5 Common Message Encoding .................................................................................................................................. 18 5.6 Trust Router Protocol message Encoding ....................................................................................................... 18 5.6.1 Hello Message Representation.............................................................................................................................. 18 5.6.2 Trust Link Database/Update Representation ............................................................................................... 18 5.6.3 Trust Link Database Update Message............................................................................................................... 20 5.7 Trust Path Query Message Representation..................................................................................................... 21 5.7.1 Trust Path Query Request ....................................................................................................................................... 21 5.7.2 Trust Path Query Response .................................................................................................................................... 21 5.7.3 Temporary Identity Request.................................................................................................................................. 21 5.7.4 Temporary Identity Response ............................................................................................................................... 21 5.7.5 Credential Provisioning Request ......................................................................................................................... 21 5.7.6 Credential Provisioning Response....................................................................................................................... 21 6. Configuration and Management ................................................................................... 22 6.1 Configuration Information ..................................................................................................................................... 22 6.1.1 Static vs. Runtime Configuration......................................................................................................................... 22 6.1.2 Persistence ..................................................................................................................................................................... 22 6.2 Operational State........................................................................................................................................................ 22 6.2.1 Monitoring ..................................................................................................................................................................... 22 6.2.2 Persistence ..................................................................................................................................................................... 22 7. Implementation Notes .................................................................................................. 23 7.1 Datastructure Implementation ............................................................................................................................ 23 7.2 Integration with Existing Moonshot Elements .............................................................................................. 23 7.2.1 Trust Path Query Client ........................................................................................................................................... 23 7.2.2 Temporary Identity Server ..................................................................................................................................... 23 7.2.3 All Other Architectural Elements ........................................................................................................................ 23 7.3 Staged Implementation/Deployment................................................................................................................ 23 7.3.1 Initial Deployment ..................................................................................................................................................... 23 7.3.2 Limited COI Support .................................................................................................................................................. 24 Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 3 1. Trust Router Overview 1.1 Introduction A Trust Router is a proposed element in an ABFAB Federation that allows information about how a Relying Party (RP) can reach a AAA Server for a specified Identity Provider (IdP) realm to be dynamically propagated throughout an ABFAB Federation. Trust Routers also provide a mechanism for dynamic key generation between a Relying Party’s AAA client and an Identity Provider’s AAA Server, over a transitive Trust Path across the Federation. This document is intended to be a living document, which will be maintained and updated throughout the Trust Router implementation to reflect the actual functionality of Trust Routers and related elements. At this point, the document is intended to describe the functionality of a Trust Router and related elements well enough to support scoping and planning of the detailed design and implementation of those elements. 1.2 Related IETF Work Development of a Trust Router Protocol is under discussion in the IETF. The following document describes the problems that an ABFAB Trust Router is expected to address: draft-howlett-abfab-trust-router-ps-02 The following IETF documents describe an earlier version of Multihop ABFAB Federations, including an earlier version of the Trust Router protocol: draft-mrw-abfab-multihop-fed-02 draft-mrw-abfab-trust-router-01 It is expected that the Multihop Federations and Trust Router documents above will be updated in the future to match the contents of this document. This document assumes that the reader is already familiar with ABFAB Federations and how they work. In particular, people should have read and understood the following IETF documents: draft-ietf-abfab-arch-02 draft-ietf-abfab-usecases-02 draft-ietf-abfab-gss-eap-07 draft-ietf-abfab-aaa-saml-03 draft-ietf-abfab-gss-eap-naming-02 Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 4 1.3 Terminology A Trust Link asserts that one Trust Router is willing and able to forward Trust Path Requests to another Trust Router or AAA Server. Each Trust Link includes a list of Communities-of-Interest (COIs) to which the link applies. Trust Routers build trees, one tree per COI, of Trust Links that can be used to determine the best path to reach a AAA server for a specified realm. Trust Links can be represented as a starting realm and a target realm, connected by an arrow. The type of each entity is included in parenthesis after the real name. So, for example, a Trust Link between two Trust Routers for realsm A and B can be represented as: A(T) -> B(T). A Trust Link between a Trust Router in the example.net realm, and a RADIUS server in the same realm would be representaed as: example.net(T) -> example.net (R). A Trust Path is a set of Trust Links that can be used by a specific Relying Party (RP) to reach a AAA Server in the domain of a specific Identity Provider (IdP). A Community of Interest (COI) represents a group of IdPs and RPs that share a set of resources. [Open question: How is membership within a Community of Interest securely determined – a GSS-API exchange between members?] A Community of Registration (COR) represents a group of IdPs and RPs that use a common registration provider for authentication. A COR is a specialized form of COI. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 5 2. Trust Router Operations The functionality of a Trust Router can be broken into two major pieces: the Trust Router Protocol, and the Trust Path Query mechanism. The Trust Router Protocol is used between Trust Routers to propagate information about available Trust Links within a federation. It runs on an ongoing basis between Trust Routers, with updates being flooded across the Trust Router network, as necessary. The Trust Path Query mechanism is used when an RP needs to reach a AAA Server for a specified IdP. The RP sends a request to a local Trust Router. The local Trust Router then sets up a transitive Trust Path across the federation, and facilitates a DiffieHellman key exchange between the RP’s AAA Client and the IdP’s AAA Server, across the transitive Trust Path. After the keys have been exchanged, the AAA Client communicates directly with the AAA Server for user authentication. 2.1.1 Trust Router Protocol Operational Overview Trust Router Protocol B(T) -> C(T) C(T) -> C(A) B(T) -> E(T) E(T) -> F(T) F(T) -> F(A) A D(T) -> E(T) E(T) -> F(T) F(T) -> F(A) D C C(T) -> C(A) Realm C AAA B E(T) -> F(T) F(T) -> F(A) E(T) -> F(T) F(T) -> F(A) E F(T) -> F(A) Trust Links (administra vely established) F Realm F AAA Trust Path propaga on via Trust Router messages Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 6 The Trust Router Protocol is used to exchange information about available Trust Links within an ABFAB Federation. This information is used by Trust Routers to determine the best Trust Path to use for transitive trust establishment across the federation. The Trust Router Protocol runs between pairs of Trust Routers. Each Trust Router will have one or more peers with whom it exchanges information about it’s own Trust Link Database, including it’s locally-configured Trust Links, and Trust Link information that the local Trust Router has received from other peers. Each Trust Router uses the information that it has received from peers to create trees of all of the available transitive Trust Paths, rooted at the local Trust Router. A Trust Router will, at least conceptually, maintain one tree of Trust Paths per COI. The diagram above shows a portion of the Trust Link information that might be propagated between 6 Trust Routers for 2 AAA Servers, all within a single COI. The dashed red arrows represented administratively configured, unidirectional or bidirectional Trust Links between realms. The Blue arrows represent the flow of Trust Link Database information for the two AAA Servers shown in the diagram – the Realm C AAA Server, and the Realm F AAA Server. The Trust Router in realm A receives two Trust Link Databases, one from Trust Router B, and one from Trust Router D. Trust Router A can build a tree from this information that shows two possible paths from Trust Router A to a AAA Server in Realm F: A(T) -> B(T) -> E(T) -> F(T) -> F(A) A(T) -> D(T) -> E(T) -> F(T) -> F(A) The Trust Link between Realm B and Realm E is unidirectional, so there is only one Trust Path between Realm A and the AAA Server in Realm C: A(T) -> B(T) -> C(T) -> C(A) 2.1.1.1 Local Configuration Before a Trust Router starts running the Trust Router Protocol, it will need to be configured with a set of information about its own Trust Links, and a list of peers with whom it should share Trust Link information. This list will include: Trust Links for locally-attached AAA Servers, including credentials to communicate with those servers; Trust Links to realms for which this Trust Router can provide temporary identities A list of Trust Router peers, including credentials to authenticate with those peers. 2.1.1.2 Trust Router Start-Up When a Trust Router first comes up on the network, it will attempt to establish an authenticated connection with each of its peers. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 7 When a peering connection is established, the Trust Router will send a Hello message containing a previously unused sequence number, and requesting a Link Database Download from each peer. The new sequence number should result in the peer requesting a Trust Link Database upload, as well. When a new Trust Router with several peers comes up on the network, multiple Trust Link Database uploads and updates may be needed before the Trust Link Databases settle into their new configuration. 2.1.1.3 Normal Operation During normal operation, a Trust Router will maintain open TCP connections with its peers, and will send regular Hello messages to each of its peers to ensure that the TCP connections are up and that the current Trust Link Database information is up-to-date. When there is a change to the Trust Link Database (typically initiated by a configuration change on one or more Trust Routers), the new information will be propagated throughout the network of Trust Routers using Trust Link Database Update messages. When a Trust Router sends a Trust Link Database Message or a Trust Link Database Update Message to another Trust Router, it will not include information about Trust Paths that flow through the receiving Trust Router. This will avoid loops from forming in the Trust Link Database on the receiving Trust Router. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 8 2.1.2 Trust Path Query Operational Overview Trust Path Query Relying party domain Trust Router Trust Router Trust Router 0 0 2 3 1 Iden ty Provider domain 4 5 7 AAA client 0: Trust Router Protocol 1: Trust Path Query Request 2: Trust Path Traversal (first hop) 3: Trust Path Traversal (subsequent hop) AAA server 6 4: Temporary Iden ty Provisioned 5: Trust Path Query Response 6: AAA Authen ca on 7: Temporary Iden ty Look-up 2.1.3 Step 0: Trust Router Protocol Before authentication begins, the Trust Routers have exchanged information about available Trust Links via the Trust Router Protocol, as described above. 2.1.4 Step 1: Trust Path Query Request A Relying Party (RP) sends a Trust Path Query Request to its local Trust Router find a AAA server for a specific realm and COI. Trust Path Query responses may be cached on the RP for an indicated lifetime. RPs that implement a cache will check the cache for matching entries before sending a Trust Path Query Request. The Trust Path Query Request and Response messages each contain half of a DiffieHellman exchange. This information is used to generate keys that will be used for a direct AAA connection between a AAA Client (or Proxy) in the RP and a AAA Server in the IdP realm. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 9 2.1.5 Step 2 & 3: Trust Path Traversal Upon receiving an authorized Trust Path Query Request, the RP’s local Trust Router traverses the Trust Path between itself and a Trust Router local to the AAA server for the target realm. To do this, the local Trust Router builds a Trust Path Forwarding Request containing the full desired path, and forwards the request to the next Trust Router in the chosen path. Successive Trust Routers will forward the request along the chosen path, until the request reaches a Trust Router that serves the IdP realm. After a temporary identity is provisioned (see below) a Trust Path Forwarding Response is forwarded back over the reverse path. Trust Path Query Request messages also contain constraints about the RP, and Response messages contain constraints about the IdP – what hostnames/realms they are allowed to claim, etc. 2.1.6 Step 4: Temporary Identity Provisioned When a Trust Path has been determined, the Trust Router local to the AAA server for the target realm will provision a temporary identity on the AAA Server(s) in the target realm. This will be accomplished by issuing a Temporary Identity Request to the target AAA server, based on information from the Trust Path Forwarding Request. Information from the Temporary Identity Response will be used to construct the Trust Path Forwarding Response, which is then forwarded back over the Trust Router network toward the RP. 2.1.7 Step 5: Trust Path Query Response The RP’s local Trust Router will respond to the Trust Path Query Request with information about how to reach a AAA server for the target realm. This will include temporary credentials that can be used to authenticate with the target AAA server. Trust Path Query Responses also contain a lifetime that indicates the maximum amount of time that an RP can cache information received in the response. 2.1.8 Step 6: AAA Authentication The RP then performs AAA Authentication, as usual, using the provided credentials. 2.1.9 Step 7: Temporary Identity Look-Up During AAA Authentication, the AAA Server will check the credentials that were provisioned via the Temporary Identity Request, in order to authenticate the RP’s AAA Client. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 10 3. Trust Router Protocol Details The Trust Router protocol is a TCP-based protocol that is used to exchange information between Trust Routers about available Trust Links within an ABFAB Federation. When a Trust Router advertises a Trust Link, such as A(T) -> B(T), it is making an assertion that a Trust Router in realm A is able, and willing, to forward Trust Path Forwarding Requests to a Trust Router in realm B. Trust Routers use the information they receive about available Trust Links to construct Trust Paths that can be used to reach a AAA Server (i.e. a RADIUS or DIAMETER server) for a target IdP. Trust Routers mediate a Diffie-Hellman exchange between a AAA Client in the RP and a AAA Server in the IdP realm, to generate keys that can be used for the subsequent AAA user authentication. [Note: Need more information about how a D-H exchange works, to understand exactly what needs to be included in these messages.] 3.1 Trust Router Messages 3.1.1 Hello Message Hello Messages are the first messages exchanged by Trust Routers when they bring up a new TCP connection, and they may be exchanged at other times to ensure that TCP connections remain active, to ensure that database information remains synchronized, and/or to trigger a full Trust Link Database download when a Trust Link Database is lost. The first Hello messages exchanged over a new TCP connection are also used as the vehicle to establish an authenticated and encrypted GSS-API session between two Trust Routers. 3.1.2 Trust Link Database Message A Trust Link Database Message contains a full (potentially filtered) set of Trust Links that can be reached through the sending Trust Router. This message may be quite large, and is only sent when solicited by the receiver. 3.1.3 Trust Link Update Message Trust Routers send Trust Link Update messages to their peers whenever their Trust Link Database is updated. Trust Link Update messages contain the portions of the Trust Link Database that have changed since the last update. They also contain a serial number that can be used by the receiving Trust Router to determine if any updates have been missed, in which case a full Trust Router Database download will be needed. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 11 3.1.4 Serial Numbers A Serial Number is used as an epoch for a Trust Router’s Trust Link Database. When a Trust Router boots for the first time it will choose a pseudo-random serial number. From that time forward, the serial number will be incremented every time the information in the Trust Link Database is lost, reset or modified. A Trust Router sends its current Serial Number in each Hello Message, Trust Link Database Message or Trust Link Database Update. When a Trust Router syncs its database with a peer, it keeps track of the current serial number in use by that peer. A Trust Router will not apply any Trust Link Database Updates received from a peer unless they include the next expected serial number (1 more than the last Serial Number synced). If a Trust Router receives any message from a peer with an unexpected serial number, the receiving Trust Router will discard the Trust Link Database entries associated with that peer, and request a complete Trust Link Database download from the peer. This is most likely to happen if a Trust Router is off-line for some time, or if a TCP connection between two Trust Router peers goes down for an extended period. 3.1.5 TCP Connection Handling Trust Routers communicate by exchanging full JSON-encoded messages over a TCP connection. If incomplete messages are received, or if the TCP connection is interrupted before a complete message is received, the incomplete messages will be discarded, and no protocol actions will be taken based on the contents of the incomplete message. In the Trust Router Protocol, no information about the availability of Trust Links is inferred from a TCP reset, or a retransmission timeout on the TCP connection to another Trust Router. A Trust Router is only considered unreachable after attempts to reestablish a TCP connection to that Trust Router reset or time out for a configurable period of time. When a Trust Router is found to be unreachable, the Trust Links supplied by that Trust Router are not removed from the local Trust Link Database. They will however, be marked as deprecated until a connection can be reestablished with the Trust Router that sent them, and it can be verified that the sequence number of that Trust Router's Database still matches the sequence number of the most recent Trust Link information received. When Trust Links are marked as deprecated, they will not be used if another, nondeprecated path exists to reach the target Identity Provider. If there are no paths to the target Identity Provider that traverse only non-deprecated Trust Links, a path containing a deprecated Trust Link will be used. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 12 3.2 Communities of Interest 3.2.1 Communities of Registration 3.2.2 COIs Managed by a COR 3.2.3 COIs Independent from CORs Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 13 4. Trust Path Query Details 4.1 Trust Path Query Messages 4.1.1 Trust Path Query Request The Trust Path Query Request is sent from an RP to a local Trust Router, asking the Trust Router to traverse the Trust Path and return a AAA Server and credentials that the RP can use to authenticate a user in the target realm. 4.1.2 Trust Path Query Response The Trust Path Response is sent from a local Trust Router to the RP in response to a Trust Path Query Request. It primarily contains contact information for a AAA Server (or a list of AAA Servers?) in the target realm, and the credentials that the RP can use to contact the AAA Server. A lifetime is included, and an RP can cache the results for the indicated lifetime. 4.1.3 Trust Path Forwarding Request A Trust Path Forwarding Request is sent from one Trust Router to another. Although the two Trust Routers do not need to be peers in the context of the Trust Router protocol, the sending Trust Router does need credentials to establish a secure connection with the receiving Trust Router. A Trust Path Forwarding Request is used to forge a transitive chain of trust between an RP and a target IdP. Intermediate Trust Routers do not perform Trust Link Database lookups before forwarding the Trust Path Forwarding Request along the path – they use the Trust Path included in the Trust Path Forwarding Request to determine the next hop in the chain. 4.1.4 Trust Path Forwarding Response A Trust Path Forwarding Response is returned after a Trust Router in the target IdP has provisioned a temporary identity for use in a subsequent AAA authentication. It is forwarded back along the Trust Path that was used for the Trust Path Query Request. It contains contact information for a AAA Server in the target realm, and a set of security credentials that can be used to talk to that AAA Server. 4.1.5 Temporary Identity Request A Temporary Identity Request is sent from a Trust Router that serves the target IdP to a AAA Server (or a configuration database used by the AAA server?) within the target IdP. It is a request to provision temporary credentials that can be used by the indicated RP to access a AAA Server. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 14 4.1.6 Temporary Identity Response A Temporary Identity Response is returned in response to a Temporary Identify Request, and contains the credentials that the indicated RP should use to access the indicated AAA Server. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 15 5. High-Level Architecture 5.1 Conceptual Datastructures 5.1.1 Peer Table 5.1.2 Trust Link Database 5.2 Architectural Elements 5.2.1 Peer Table Manager 5.2.2 Trust Link Database Manager 5.2.3 Trust Path Query Client 5.2.4 Trust Path Query Server 5.2.5 Trust Path Forwarding Client 5.2.6 Trust Path Forwarding Server 5.2.7 Temporary Identity Client 5.2.8 Temporary Identity Server 5.3 Functional Elements 5.3.1 Trust Router A Trust Router is an infrastructure element in an ABFAB Federation that consists of a Peer Table Manager, a Trust Link Database Manager, a Trust Path Query Server, a Trust Path Forwarding Client, a Trust Path Forwarding Server, and a Temporary Identity Client. 5.3.2 Relying Party A node in the Relying Party realm, typically a AAA Proxy, will implement a Trust Path Query Client. All of the Trust Path lookups and Temporary Identity requests performed by Trust Routers begin with a Trust Path Query Client sending an authenticated Trust Path Query Request to a local Trust Router. 5.3.3 Identity Provider For each Identity Provider with an ABFAB Federation, there will be at least one AAA Server that implements a Temporary Identity Server. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 16 5.4 Naming Within the Trust Router protocol, strings are used to identify Realms and COIs. This section describes how those names are assigned and formatted. Current thinking is that Realms will be derived from DNS domains, e.g. the Janet Realm might be ‘ja.net’. COI names will scoped to the Realm that is responsible for authenticating COI membership, e.g. ‘ja.net: three-physics-researchers’. [More thought/specification is needed in this area as part of the detailed design process.] Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 17 Message Representation This section provides details about the contents and encoding of both Trust Router Protocol messages and Trust Path Query messages. 5.5 Common Message Encoding The Trust Router Protocol and Trust Path Query messages are encoded in JavaScript Object Notation (JSON) [RFC4627]. 5.6 Trust Router Protocol message Encoding 5.6.1 Hello Message Representation A Hello Message consists of the following fields: Name Realm Authentication-Information Database-Serial-Number Database-Request The Database-Serial-Number field contains the current serial number of the sending Trust Router's Trust Link Database. This information may be used by a receiving Trust Router to determine whether it should request a full Trust Link Database download. The Database-Request field indicates whether the receiving Trust Router should respond to this message with a Trust Link Database message, to share its full Trust Link Database with the sending Trust Router. If this field has a value of "true", a download is requested. If it is "false", a download is not requested. 5.6.2 Trust Link Database/Update Representation In the Trust Router Protocol, a Trust Router will send a (potentially filtered) set of Trust Links to each of its neighboring Trust Routers. The representation of these Trust Links is designed for efficient encoding, and to allow easy population of a conceptual Trust Link Table on the receiving Trust Router. Each Trust Router will only distribute a set of Trust Links that form a connected tree rooted at the sending Trust Router. Conceptually, a Trust Link consists of: A Trust Router that is willing to provide a temporary identity. The Trust Router or AAA Server for which the identity can be provided The COIs to whom the link is available. A lifetime for this link, in seconds. A list of attributes associated with the link Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 18 However, the actual Trust Links passed in the Trust Router protocol rely on inference and ordering to eliminate the need to include the first Trust Router identity in each distributed link. Instead, we use an Index variable, which indicates each Trust Link's level in a conceptual tree, and we order the Trust Links, so that a Trust Link with an Index of N is subordinate to the closest previous Trust Link with an index of N-1 that applies to the same Community-of-Interest. Each conceptual tree is rooted at the sending Trust Router, which is represented by an entry with an Index value of 0. 5.6.2.1 Entity Identity When we send Trust Router or AAA Server identities in the Trust Router Protocol, that information will be sent in an Entity Identity structure containing the following fields: Name Type Realm Attribute-List The Name field will typically contain a fully-qualified domain name (FQDN) that can be used to reach the indicated entity (e.g. "tr-A.example.net"). The Type field indicates that the entity is a Trust Router (Type = "T") or a AAA Server (Type = "R", "D", or "S" for a RADIUS Server, DIAMETER Server or RADSEC Server, respectively). The Realm field contains the security realm associated with the entity (e.g. "example.net"). The Attribute-List, which may be empty, contains any other attributes associated with this entity. 5.6.2.2 Trust Link Entry As transmitted in the Trust Router Protocol, a Trust Link entry will have the following fields: Index Target-Entity COI-List Lifetime Attribute-List The Index field contains a non-zero integer value, indicating the depth of this Trust Link in a conceptual tree of links rooted at the sending Trust Router. The maximum value of this field is 255. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 19 The Target-Entity field contains the target of this link – a Trust Router to which Trust Path Forwarding Requests can be sent, or a AAA Server on which Temporary Identities can be provisioned. The COI-List field contains an array of strings, each containing a Community-of-Interest for which this link is available. The Lifetime field contains an integer that indicates the lifetime of this Trust Link in seconds. Links are removed from the the conceptual Trust Link Table if their lifetime expires. The Attribute-List, which may be empty, contains a list of attributes associated with this Trust Link. 5.6.2.3 Trust Link Database Message A Trust Link Databases will consist two fields: Serial-Number Trust-Links The Serial-Number field contains an integer indicating the version of the information contained in this database. The maximum value for this field is (2^32 - 1). The Trust-Links field contains a list of Trust Link Entries. 5.6.3 Trust Link Database Update Message A Trust Link Database Update will consist three fields: Serial-Number Starting-Point Trust-Links The Serial-Number field contains an integer indicating the version of the information contained in this database. The maximum value for this field is (2^32 - 1). The Starting-Point field will indicate the portion of the tree previously received from this Trust Router that should be replaced by the Trust Links contained in this message. The Trust-Links field contains a list of Trust Link Entries. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 20 5.7 Trust Path Query Message Representation 5.7.1 Trust Path Query Request 5.7.2 Trust Path Query Response 5.7.3 Temporary Identity Request 5.7.4 Temporary Identity Response 5.7.5 Credential Provisioning Request 5.7.6 Credential Provisioning Response Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 21 6. Configuration and Management 6.1 Configuration Information 6.1.1 Static vs. Runtime Configuration 6.1.2 Persistence 6.2 Operational State 6.2.1 Monitoring 6.2.2 Persistence Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 22 7. Implementation Notes 7.1 Datastructure Implementation 7.2 Integration with Existing Moonshot Elements 7.2.1 Trust Path Query Client It is expected that the Trust Path Query Client will co-reside with a AAA Proxy near the RP. For our initial implementation, it is expected that the Trust Path Query Client will be integrated with a FreeRADIUS AAA Proxy. 7.2.2 Temporary Identity Server The Temporary Identity Server will either co-reside with a AAA Server for the IdP, or it will have access to the data that is used by the AAA Server when performing authentication. In our initial implementation it is expected that the Temporary Identity Server will be integrated with a FreeRADIUS AAA Server. 7.2.3 All Other Architectural Elements All other Architectural Elements (a Peer Table Manager, a Trust Link Database Manager, a Trust Path Query Server, a Trust Path Forwarding Client, a Trust Path Forwarding Server, and a Temporary Identity Client) will run as a standalone Trust Router software implementation. It is expected that our initial implementation will MIT Kerberos GSS-API Library and the Moonshot mech_eap GSS-API mechanism. 7.3 Staged Implementation/Deployment 7.3.1 Initial Deployment As Moonshot deployment becomes more widespread, we anticipate a need for Trust Routers to reduce the effort involved in adding new members to CORs or COIs. In order to make it possible to incrementally deploy Trust Routers in a way that is transparent to federation members, it may be desirable to deploy a system, as soon as possible, that includes a Trust Path Query Client in the RP and a Temporary Identity Server in the IdP, even though we do not yet have a full Trust Router implementation capable of running the Trust Router Protocol between Trust Routers. This system would involve a single “Trust Router” that has been administratively configured with a Trust Link Database that includes direct connections to all of the RPs and IdPs that it serves. This box would facilitate a Diffie-Hellman key exchange between the RP and IdP, just as a full Trust Router would, thus allowing later deployment of a full Trust Router infrastructure in a way that is transparent to existing federation members (the RPs and IdPs). Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 23 In order to accomplish this, it is recommended that our Trust Router implementation schedule be structured to make the following elements available well in advance of a full Trust Router implementation: A Trust Path Query Client (for the RP AAA Proxy) A Temporary Identity Server (for the IdP) A “Trust Router” that only includes a Trust Path Query Server, a Temporary Identity Client and a statically configured Trust Link Database where all links are terminal (i.e. point directly to AAA Servers in a target IdP). After these elements are deployed, the full Trust Router infrastructure can be implemented and rolled out on an incremental basis. 7.3.2 Limited COI Support Another possible implementation and deployment plateau would be a fully functional Trust Router implementation that only handles COIs that are managed by CORs. Support could be added, later, for COIs that are independently managed. Moonshot Project: Trust Router Functional Specification Copyright Janet(UK). All Rights Reserved. 24