[
RFC 8224] defines the Identity header field for SIP, which provides a cryptographic attestation of the source of communications. This document includes a profile of STIR, called the SIPBRANDY profile, where the STIR verification service will act in concert with an SRTP media endpoint to ensure that the key fingerprints, as given in SDP, match the keys exchanged to establish DTLS-SRTP. To satisfy this condition, the verification service function would in this case be implemented in the SIP User Agent Server (UAS), which would be composed with the media endpoint. If the STIR authentication service or verification service functions are implemented at an intermediary rather than an endpoint, this introduces the possibility that the intermediary could act as a man in the middle, altering key fingerprints. As this attack is not in STIR's core threat model, which focuses on impersonation rather than man-in-the-middle attacks, STIR offers no specific protections against such interference.
The SIPBRANDY profile for media confidentiality thus shifts these responsibilities to the endpoints rather than the intermediaries. While intermediaries
MAY provide the verification service function of STIR for SIPBRANDY transactions, the verification needs to be repeated at the endpoint to obtain end-to-end assurance. Intermediaries supporting this specification
MUST NOT block or otherwise redirect calls if they do not trust the signing credential. The SIPBRANDY profile is based on an end-to-end trust model, so it is up to the endpoints to determine if they support signing credentials, not intermediaries.
In order to be compliant with best practices for SIP media confidentiality with comprehensive protection, UA implementations
MUST implement both the authentication service and verification service roles described in [
RFC 8224]. STIR authentication services
MUST signal their compliance with this specification by including the "msec" claim defined in this specification to the PASSporT payload. Implementations
MUST provide key fingerprints in SDP and the appropriate signatures over them as specified in [
RFC 8225].
When generating either an offer or an answer [
RFC 3264], compliant implementations
MUST include an "a=fingerprint" attribute containing the fingerprint of an appropriate key (see
Section 4.1).
In order to implement the authentication service function in the UA, SIP endpoints will need to acquire the credentials needed to sign for their own identity. That identity is typically carried in the From header field of a SIP request and contains either a greenfield SIP URI (e.g., "sip:alice@example.com") or a telephone number (which can appear in a variety of ways, e.g., "sip:+17004561212@example.com;user=phone").
Section 8 of
RFC 8224 contains guidance for separating the two and determining what sort of credential is needed to sign for each.
To date, few commercial certification authorities (CAs) issue certificates for SIP URIs or telephone numbers; though work is ongoing on systems for this purpose (such as [
ACME-Auth-Token]), it is not yet mature enough to be recommended as a best practice. This is one reason why STIR permits intermediaries to act as an authentication service on behalf of an entire domain, just as in SIP a proxy server can provide domain-level SIP service. While CAs that offer proof-of-possession certificates similar to those used for email could be offered for SIP -- for either greenfield identifiers or telephone numbers -- this specification does not require their use.
For users who do not possess such certificates, [
RFC 5763] permits the use of self-signed public keys. The profile of STIR in this document, called the SIPBRANDY profile, employs the more relaxed authority requirements of [
RFC 8224] to allow the use of self-signed public keys for authentication services that are composed with UAs, by generating a certificate (per the guidance in [
RFC 8226]) with a subject corresponding to the user's identity. To obtain comprehensive protection with a self-signed certificate, some out-of-band verification is needed as well. Such a credential could be used for trust on first use (see [
RFC 7435]) by relying parties. Note that relying parties
SHOULD NOT use certificate revocation mechanisms or real-time certificate verification systems for self-signed certificates, as they will not increase confidence in the certificate.
Users who wish to remain anonymous can instead generate self-signed certificates as described in
Section 4.2.
Generally speaking, without access to out-of-band information about which certificates were issued to whom, it will be very difficult for relying parties to ascertain whether or not the signer of a SIP request is genuinely an "endpoint". Even the term "endpoint" is a problematic one, as SIP UAs can be composed in a variety of architectures and may not be devices under direct user control. While it is possible that techniques based on certificate transparency [
RFC 6962] or similar practices could help UAs to recognize one another's certificates, those operational systems will need to ramp up with the CAs that issue credentials to end-user devices going forward.
In some cases, the identity of the initiator of a SIP session may be withheld due to user or provider policy. Following the recommendations of [
RFC 3323], this may involve using an identity such as "anonymous@anonymous.invalid" in the identity fields of a SIP request. [
RFC 8224] does not currently permit authentication services to sign for requests that supply this identity. It does, however, permit signing for valid domains, such as "anonymous@example.com", as a way of implementing an anonymization service as specified in [
RFC 3323].
Even for anonymous sessions, providing media confidentiality and partial SDP integrity is still desirable. One-time self-signed certificates for anonymous communications
SHOULD include a subjectAltName of "sip:anonymous@anonymous.invalid". After a session is terminated, the certificate
SHOULD be discarded, and a new one, with fresh keying material,
SHOULD be generated before each future anonymous call. As with self-signed certificates, relying parties
SHOULD NOT use certificate revocation mechanisms or real-time certificate verification systems for anonymous certificates, as they will not increase confidence in the certificate.
Note that when using one-time anonymous self-signed certificates, any man in the middle could strip the Identity header and replace it with one signed by its own one-time certificate, changing the "mky" parameters of PASSporT and any "a=fingerprint" attributes in SDP as it chooses. This signature only provides protection against non-Identity-aware entities that might modify SDP without altering the PASSporT conveyed in the Identity header.
[
RFC 8224] provides integrity protection for the fingerprint attributes in SIP request bodies but not SIP responses. When a session is established, therefore, any SDP body carried by a 200-class response in the backwards direction will not be protected by an authentication service and cannot be verified. Thus, sending a secured SDP body in the backwards direction will require an extra RTT, typically a request sent in the backwards direction.
[
RFC 4916] explored the problem of providing "connected identity" to implementations of [
RFC 4474] (which is obsoleted by [
RFC 8224]); [
RFC 4916] uses a provisional or mid-dialog UPDATE request in the backwards (reverse) direction to convey an Identity header field for the recipient of an INVITE. The procedures in [
RFC 4916] are largely compatible with the revision of the Identity header in [
RFC 8224]. However, the following need to be considered:
-
The UPDATE carrying signed SDP with a fingerprint in the backwards direction needs to be sent during dialog establishment, following the receipt of a Provisional Response Acknowledgement (PRACK) after a provisional 1xx response.
-
For use with this SIPBRANDY profile for media confidentiality, the UAS that responds to the INVITE request needs to act as an authentication service for the UPDATE sent in the backwards direction.
-
Per the text in Section 4.4.1 of RFC 4916 regarding the receipt at a User Agent Client (UAC) of error code 428, 436, 437, or 438 in response to a mid-dialog request, it is RECOMMENDED that the dialog be treated as terminated. However, Section 6.1.1 of RFC 8224 allows the retransmission of requests with repairable error conditions. In particular, an authentication service might retry a mid-dialog rather than treating the dialog as terminated, although only one such retry is permitted.
-
Note that the examples in [RFC 4916] are based on [RFC 4474] and will not match signatures using [RFC 8224].
Future work may be done to revise [
RFC 4916] for STIR; that work should take into account any impacts on the SIPBRANDY profile described in this document. The use of [
RFC 4916] has some further interactions with Interactive Connectivity Establishment (ICE) [
RFC 8445]; see
Section 7.
[
RFC 8224] grants STIR verification services a great deal of latitude when making authorization decisions based on the presence of the Identity header field. It is largely a matter of local policy whether an endpoint rejects a call based on the absence of an Identity header field, or even the presence of a header that fails an integrity check against the request.
For this SIPBRANDY profile of STIR, however, a compliant verification service that receives a dialog-forming SIP request containing an Identity header with a PASSporT type of "msec", after validating the request per the steps described in
Section 6.2 of
RFC 8224,
MUST reject the request if there is any failure in that validation process with the appropriate status code per
Section 6.2.2 of
RFC 8224. If the request is valid, then if a terminating user accepts the request, it
MUST then follow the steps in
Section 4.3 to act as an authentication service and send a signed request with the "msec" PASSporT type in its Identity header as well, in order to enable end-to-end bidirectional confidentiality.
For the purposes of this profile, the "msec" PASSporT type can be used by authentication services in one of two ways: as a mandatory request for media security or as a merely opportunistic request for media security. As any verification service that receives an Identity header field in a SIP request with an unrecognized PASSporT type will simply ignore that Identity header, an authentication service will know whether or not the terminating side supports "msec" based on whether or not its UA receives a signed request in the backwards direction per
Section 4.3. If no such requests are received, the UA may do one of two things: shut down the dialog, if the policy of the UA requires that "msec" be supported by the terminating side for this dialog; or, if policy permits (e.g., an explicit acceptance by the user), allow the dialog to continue without media security.