Group Security Policy Token v1
Extracted elements (30)
ASN.1 with DER encoding was chosen because it allows the token to import group definitions spanning different applications and environments, and permits specification of branches usable by any multicast security protocol.
The Core token is structured to mirror the MSEC Architecture layers (registration, rekey, data), giving each layer its own branch so that future protocol specifications at any layer do not require changes to the Core token, which acts as a single point of reference.
The Mechanism abstracted construct (mechanismIdentifier OID + mechanismParameters OCTET STRING) was chosen to allow mechanisms specified in other documents to be imported into the policy token without modifying the core token structure, enabling extensibility across environments.
The rekey reliability policy (None, Resend, Post) was introduced because GSAKMP rekey messages are single push messages with no acknowledgment, creating reliability concerns; the policy lets the Group Owner select the appropriate mechanism for the network's reliability characteristics.
The token specifies GSAKMP (RFC 4535) as an example GroupMngmtProtocol for registration and rekey; the ASN.1 modules for registration (OID 1.3.6.1.5.5.12.0.2), de-registration (.0.3), and rekey (.0.4) are defined as separate importable modules to support interoperability with GSAKMP implementations.
A member MUST be able to support at least one set of Registration mechanisms in order to join the group; when multiple mechanisms are present, a member MUST choose the highest listed mechanism that local policy supports.
For the data field, a member MUST be able to support all listed applications and, if any choices of mechanisms are provided per application, MUST support at least one of the mechanisms.
Implementations encountering unknown protocol identifiers in registration, rekey, or data fields MUST handle this gracefully by providing indicators that an unknown protocol is present; if the unknown protocol is the only allowable protocol, the member cannot join the group.
Protocols in addition to registration, rekey, and data SHOULD NOT be added to subsequent versions of the Token unless the MSEC architecture changes.
The CMS SignerInfo sid value identifying the public key for signature validation MUST be that of the Group Owner.
The groupName field MUST be unique relative to the Group Owner. If the optional edition field is present, group entities MUST accept a policy token only when the edition value is greater than the last value seen in a valid token for that group.
The policy token MUST be signed by the Group Owner, and the signed token MUST conform to the CMS SignedData type (RFC 3852) to ensure authenticity of the specified policy.
The signedAttrs field MUST be present, and within it the signing-time attribute MUST be present.
Upon receipt of a policy token, the recipient MUST verify: (1) the Group Owner identity matches the expected entity; (2) the signing-time is more recent than any previously received token for that group; (3) the CMS signature validates per RFC 3852; and (4) the specified mechanisms are supported and comply with local policy.
AccessControl is a SEQUENCE of optional permissions (SEQUENCE OF Permission), mandatory accessRule (SEQUENCE OF UserCAPair), and optional exclusionsRule (SEQUENCE OF UserCAPair), specifying member access control as a set of name rules with certificate authority constraints.
GroupMngmtProtocol is a CHOICE of none (NULL) or supported (Protocol), where Protocol is a SEQUENCE of an OBJECT IDENTIFIER and an OCTET STRING for protocol parameters. This abstraction allows any group management protocol to be plugged in.
GSAKMPv1RegistrationInfo is a SEQUENCE containing joinAuthorization (JoinAuthorization), joinAccessControl (SEQUENCE OF AccessControl), joinMechanisms (JoinMechanisms), and transport (Transport), covering all GSAKMP registration policy dimensions.
GSAKMPv1RekeyInfo is a SEQUENCE containing authorization, mechanism (RekeyMechanisms with sigAlgorithm and hashAlgorithm integers), rekeyEventDef, rekeyMethod, rekeyInterval (LifeDate), reliability, and subGCKSInfo, fully specifying the rekey security association policy.
JoinAuthorization contains gCKS (GCKSName), an optional subGCKS list, and senders (SenderAuthorization, either all or an explicit list of UserCAPairs), defining who may act as group controller and who may send data.
RekeyEventDef is a CHOICE of none (never rekey), timeOnly (LifeDate interval), event (INTEGER count of events), or timeAndEvent (whichever comes first), allowing flexible triggering of group rekey operations.
The top-level Token structure is a SEQUENCE containing tokenInfo (TokenID), registration (SEQUENCE OF Registration), rekey (SEQUENCE OF GroupMngmtProtocol), and data (SEQUENCE OF DataProtocol), reflecting the MSEC Architecture layers for a Group Security Association.
TokenID is a SEQUENCE containing tokenDefVersion (INTEGER, value 1 for this specification), groupName (OCTET STRING, must be unique per Group Owner), and an optional edition (INTEGER) for sequencing policy token updates.
Transport for GSAKMP registration is a CHOICE of tcp, udp, or udpRTJtcpOther (UDP for Request-to-Join, TCP for all other messages); de-registration transport only supports tcp or udp.
IANA has assigned a set of OIDs under the arc 1.3.6.1.5.5.12, including id-ct-msec-token (.1.1), id-securitySuiteOne (.2.1), GSAKMP registration/de-registration/rekey protocol IDs (.3.x), rekey method IDs (.4.x), reliability mechanism IDs (.5.x), sub-GCKS scheme IDs (.6.x), and id-genericDataSA (.7.1). Extensions can be registered through IANA.
A group is only as strong as the weakest accepted mechanism among those the Group Owner lists as alternatives; the Group Owner is therefore responsible for providing only security mechanisms of acceptable strength.
The policy token relies on CMS digital signatures for authenticity; security depends on a secure CMS implementation, an appropriately strong signature mechanism, secure keys, and a well-known Group Owner as the root of policy enforcement.
GenericDataSAInfo is a SEQUENCE with optional authentication and encryption fields, each a KeyInfo SEQUENCE containing kMKeyID (OCTET STRING) and optional keyExpirationDate (LifeDate), mapping key management identifiers to data security services.
LifeDate is a CHOICE of GeneralizedTime (gt), UTCTime (utc), or INTEGER (interval), providing a standard encoding for timestamps and time intervals used throughout the token (e.g., rekeyInterval, OpInfo timeOut).
The Mechanism abstracted construct is a SEQUENCE of mechanismIdentifier (OBJECT IDENTIFIER) and mechanismParameters (OCTET STRING), used throughout the token to allow protocol-agnostic extensibility for group mechanisms.
The policy token is specified in ASN.1 (X.208) and MUST be DER (X.660) encoded, wrapped in a CMS SignedData structure. The ContentType OID is id-ct-msec-token (1.3.6.1.5.5.12.1.1).