TNAuthList profile of ACME Authority TokenComcastOne Comcast CenterPhiladelphia, PA 19103USAchris-ietf@chriswendt.netComcastdavidhancock.ietf@gmail.comIndependentmary.ietf.barnes@gmail.comNeustar Inc.1800 Sutter St Suite 570Concord, CA 94520USjon.peterson@neustar.biz
sec
STIRThis document defines a profile of the Automated Certificate Management Environment (ACME) Authority Token for the automated and authorized creation of certificates for VoIP Telephone Providers to support Secure Telephony Identity (STI) using the TNAuthList defined by STI certificates. is a mechanism for automating certificate management on the Internet. It enables administrative entities to prove effective control over resources like domain names, and automates the process of generating and issuing certificates. extends ACME to provide a general method of extending the authority and authorization of entities to control a resource via a third party Token Authority beyond the Certification Authority.This document addresses the STIR problem statement which identifies the need for Internet credentials that can attest authority for the originator of VoIP calls in order to detect impersonation, which is currently an enabler for common attacks associated with illegal robocalling, voicemail hacking, and swatting. These credentials are used to sign PASSporTs , which can be carried in using protocols such as SIP . Currently, the only defined credentials for this purpose are the certificates specified in .This document also describes the ability for a telephone authority to authorize the creation of CA types of certificates for delegation as defined in .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 .In , Section 7 defines the procedure that an ACME client uses to order a new certificate from a Certification Authority. The new-order request contains an identifier field that specifies the identifier objects the order corresponds to. This draft defines a new type of identifier object called TNAuthList. A TNAuthList identifier contains the identity information to be populated in the TN Authorization List of the new certificate. For the TNAuthList identifier, the new-order request includes a type set to the string “TNAuthList”. The value of the TNAuthList identifier MUST be set to the details of the TNAuthList requested.The format of the string that represents the TNAuthList MUST be constructed as a base64 encoding of the TN Authorization List certificate extension ASN.1 object. The TN Authorization List certificate extension ASN.1 syntax is defined in section 9.An example of an ACME order object “identifiers” field containing a TNAuthList certificate would look as follows,where the “value” object string represents the arbitrary length base64 encoded string.A full new-order request would look as follows,On receiving a valid new-order request, the CA creates an authorization object, Section 7.1.4, containing the challenge that the ACME client must satisfy to demonstrate authority for the identifiers specified by the new order (in this case, the TNAuthList identifier). The CA adds the authorization object URL to the “authorizations” field of the order object, and returns the order object to the ACME client in the body of a 201 (Created) response.On receiving the new-order response, the ACME client queries the referenced authorization object to obtain the challenges for the identifier contained in the new-order request as shown in the following example request and response.When processing a certificate order containing an identifier of type “TNAuthList”, a CA uses the Authority Token challenge type of “tkauth-01” with a “tkauth-type” of “atc” in to verify that the requesting ACME client has authenticated and authorized control over the requested resources represented by the “TNAuthList” value.The challenge “token-authority” parameter is only used in cases where the VoIP telephone network requires the CA to identify the Token Authority. This is currently not the case for the SHAKEN certificate framework governance, but may be used by other frameworks. If a “token-authority” parameter is present, then the ACME client MAY use the “token-authority” value to identify the URL representing the Token Authority that will provide the TNAuthList Authority Token response to the challenge. If the “token-authority” parameter is not present, then the ACME client MUST identify the Token Authority based on locally configured information or local policies.The ACME client responds to the challenge by posting the TNAuthList Authority Token to the challenge URL identified in the returned ACME authorization object, an example of which follows.The specifics of the construction of the TNAuthList specific “atc” token is defined in the next section.The Telephone Number Authority List Authority Token (TNAuthList Authority Token) is an extension of the ACME Authority Token defined in .The TNAuthList Authority Token Protected header MUST comply with the Authority Token Protected header as defined in .The TNAuthList Authority Token Payload MUST include the mandatory claims “exp”, “jti”, and “atc”, and MAY include the optional claims defined for the Authority Token detailed in the next subsections.The “iss” claim is an optional claim. It can be used as a URL identifying the Token Authority that issued the TNAuthList Authority Token beyond the “x5u” Header claim that identifies the location of the certificate of the Token Authority used to validate the TNAuthList Authority Token.The “exp” claim MUST be included and contains the DateTime value of the ending date and time that the TNAuthList Authority Token expires.The “jti” claim MUST be included and contains a unique identifier for this TNAuthList Authority Token transaction.The “atc” claim MUST be included and is the only claim specifically defined in this document. It contains a JSON object of three elements.a “tktype” key that is required with a string value equal to “TNAuthList” to represent a TNAuthList profile of the authority token defined by this document.a “tkvalue” key with a string value equal to the TNAuthList identifier “value” string which contains the base64 encoding of the TN Authorization List certificate extension ASN.1 object. “tkvalue” is a required key and MUST be included.a “ca” key with a boolean value set to either true when the requested certificate is allowed to be a CA cert for delegation uses or false when the requested certificate is not intended to be a CA cert, only an end-entity certificate. “ca” is an optional key, if it not included the “ca” value is considered false by default.a “fingerprint” key with a fingerprint value equal to the fingerprint, as defined in , of the ACME account credentials. Specifically, the fingerprint value is a secure one-way hash of the Distinguished Encoding Rules (DER) form of the public key corresponding to the key pair the SP used to create the account with the ACME server. The fingerprint value consists of the name of the hash function, which shall be ‘SHA256’ for this specification, followed by the hash value itself. The hash value is represented as a sequence of uppercase hexadecimal bytes, separated by colons. The number of bytes is defined by the hash function. “fingerprint” is a required key and MUST be included.An example of the TNAuthList Authority Token is as follows,Following Section 5, the authority token should be acquired using a RESTful HTTP POST transaction as followsThe request will pass the account id as a string in the request parameter “id”. This string will be managed as an identifier specific to the Token Authority’s relationship with a CSP. There is assumed to also be a corresponding authentication procedure that can be verified for the success of this transaction. For example, an HTTP authorization header containing a valid authorization credentials as defined in Section 14.8.The body of the POST request MUST contain the “atc” JSON object that should be embedded in the token that is requested, for example the body should contain a JSON object as shown:The response to the POST request if successful returns a 200 OK with a JSON body that contains, at a minimum, the TNAuthList Authority Token as a JSON object with a key of “token” and the base64 encoded string representing the atc token. JSON is easily extensible, so users of this specification may want to pass other pieces of information relevant to a specific application.An example successful response would be as follows:If the request is not successful, the response should indicate the error condition. Specifically, for the case that the authorization credentials are invalid, the response code MUST be 403 - Forbidden. If the Account ID provided does not exist or does not match credentials in Authorization header, the response MUST be 404 - Invalid account ID. Other 4xx and 5xx responses MUST follow standard HTTP error condition conventions.When the Token Authority creates the TNAuthList Authority Token, it is the responsibility of the Token Authority to validate that the information contained in the ASN.1 TNAuthList accurately represents the SPC or telephone number resources the ACME client is authorized to represent.Because this specification specifically involves the TNAuthList defined in which involves SPC, TNBlock, and individual TNs, the client may also request an Authority Token with some subset of its own authority the TNAuthList provided in the “tkvalue” element in the “atc” JSON object. Generally, the scope of authority representing a communications service provider is represented by a particular SPC (e.g. in North America, an OCN or SPID) which is associated with a particular set of different TN Blocks and/or TNs, although more often the former typically through a set of regulated authoritative registries or databases. TNAuthList can be constructed to define a limited scope of the TNBlocks or TNs either associated with an SPC or with the scope of TN Blocks or TNs the client has authority over.Upon receiving a response to the challenge, the ACME server MUST perform the following steps to determine the validity of the response.Verify that the token contained in the Payload “atc” field is a valid TNAuthList Authority Token.Verify the TNAuthList Authority Token signature using the public key of the certificate referenced by the token’s “x5u” parameter.Verify that “atc” claim contains an identifier type of “TNAuthList”.Verify that the “atc” claim contains the equivalent base64 encoded TNAuthList certificate extension string value as the Identifier specified in the original challenge.Verify that the remaining claims are valid (e.g., verify that token has not expired)Verify that the “atc” claim “fingerprint” is validVerify that the “ca” claim boolean corresponds to the CSR request for either CA certificate or end-entity certificateIf all steps in the token validation process pass, then the CA MUST set the challenge object “status” to “valid”. If any step of the validation process fails, the “status” in the challenge object MUST be set to “invalid”.There are many scenarios and reasons to have various combinations of SPCs, TNs, and TN Ranges. has provided a somewhat unbounded set of combinations. It’s possible that a complex non-contiguous set of telephone numbers are being managed by a CSP. Best practice may be simply to split a set of non-contiguous numbers under management into multiple STI certificates to represent the various contiguous parts of the greater non-contiguous set of TNs, particularly if length of the set of values in identifier object grows to be too large.The token represented by this document has the credentials to represent the scope of a telephone number, a block of telephone numbers, or an entire set of telephone numbers represented by a SPC. The creation, transport, and any storage of this token MUST follow the strictest of security best practices beyond the recommendations of the use of encrypted transport protocols in this document to protect it from getting in the hands of bad actors with illegitimate intent to impersonate telephone numbers.This document inherits the security properties of .This document requests the addition of a new identifier object type to the “ACME Identifier Types” registry defined in Section 9.7.7 of .We would like to thank Richard Barnes and Russ Housley for valuable contributions to this document.ACME Challenges Using an Authority TokenSome proposed extensions to the Automated Certificate Management Environment (ACME) rely on proving eligibility for certificates through consulting an external authority that issues a token according to a particular policy. This document specifies a generic Authority Token challenge for ACME which supports subtype claims for different identifiers or namespaces that can be defined separately for specific applications.STIR Certificate DelegationThe Secure Telephone Identity Revisited (STIR) certificate profile provides a way to attest authority over telephone numbers and related identifiers for the purpose of preventing telephone number spoofing. This specification details how that authority can be delegated from a parent certificate to a subordinate certificate. This supports a number of use cases, including those where service providers grant credentials to enterprises or other customers capable of signing calls with STIR.The Base16, Base32, and Base64 Data EncodingsThis document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]Hypertext Transfer Protocol (HTTP/1.1): Semantics and ContentThe Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems. This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.Authenticated Identity Management in the Session Initiation Protocol (SIP)The baseline security mechanisms in the Session Initiation Protocol (SIP) are inadequate for cryptographically assuring the identity of the end users that originate SIP requests, especially in an interdomain context. This document defines a mechanism for securely identifying originators of SIP requests. It does so by defining a SIP header field for conveying a signature used for validating the identity and for conveying a reference to the credentials of the signer.This document obsoletes RFC 4474.PASSporT: Personal Assertion TokenThis document defines a method for creating and validating a token that cryptographically verifies an originating identity or, more generally, a URI or telephone number representing the originator of personal communications. The Personal Assertion Token, PASSporT, is cryptographically signed to protect the integrity of the identity of the originator and to verify the assertion of the identity information at the destination. The cryptographic signature is defined with the intention that it can confidently verify the originating persona even when the signature is sent to the destination party over an insecure channel. PASSporT is particularly useful for many personal-communications applications over IP networks and other multi-hop interconnection scenarios where the originating and destination parties may not have a direct trusted relationship.Secure Telephone Identity Credentials: CertificatesIn order to prevent the impersonation of telephone numbers on the Internet, some kind of credential system needs to exist that cryptographically asserts authority over telephone numbers. This document describes the use of certificates in establishing authority over telephone numbers, as a component of a broader architecture for managing telephone numbers as identities in protocols like SIP.Automatic Certificate Management Environment (ACME)Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.Signature-based Handling of Asserted information using toKENs (SHAKEN) Governance Model and Certificate Management <https://access.atis.org/apps/group_public/download.php/32237/ATIS-1000080.pdf>ATIS/SIP Forum NNI Task GroupKey words for use in RFCs to Indicate Requirement LevelsIn many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.Internet Security Glossary, Version 2This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed. This memo provides information for the Internet community.Secure Telephone Identity Problem Statement and RequirementsOver the past decade, Voice over IP (VoIP) systems based on SIP have replaced many traditional telephony deployments. Interworking VoIP systems with the traditional telephone network has reduced the overall level of calling party number and Caller ID assurances by granting attackers new and inexpensive tools to impersonate or obscure calling party numbers when orchestrating bulk commercial calling schemes, hacking voicemail boxes, or even circumventing multi-factor authentication systems trusted by banks. Despite previous attempts to provide a secure assurance of the origin of SIP communications, we still lack effective standards for identifying the calling party in a VoIP session. This document examines the reasons why providing identity for telephone numbers on the Internet has proven so difficult and shows how changes in the last decade may provide us with new strategies for attaching a secure identity to SIP sessions. It also gives high-level requirements for a solution in this space.