rfc8827v5.txt | rfc8827.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) E. Rescorla | Internet Engineering Task Force (IETF) E. Rescorla | |||
Request for Comments: 8827 Mozilla | Request for Comments: 8827 Mozilla | |||
Category: Standards Track December 2020 | Category: Standards Track January 2021 | |||
ISSN: 2070-1721 | ISSN: 2070-1721 | |||
WebRTC Security Architecture | WebRTC Security Architecture | |||
Abstract | Abstract | |||
This document defines the security architecture for WebRTC, a | This document defines the security architecture for WebRTC, a | |||
protocol suite intended for use with real-time applications that can | protocol suite intended for use with real-time applications that can | |||
be deployed in browsers -- "real-time communication on the Web". | be deployed in browsers -- "real-time communication on the Web". | |||
skipping to change at line 31 ¶ | skipping to change at line 31 ¶ | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | Internet Standards is available in Section 2 of RFC 7841. | |||
Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
https://www.rfc-editor.org/info/rfc8827. | https://www.rfc-editor.org/info/rfc8827. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at line 267 ¶ | skipping to change at line 267 ¶ | |||
figures below. This topology is derived from the topology shown in | figures below. This topology is derived from the topology shown in | |||
Figure 1, but separates Alice's and Bob's identities from the process | Figure 1, but separates Alice's and Bob's identities from the process | |||
of signaling. Specifically, Alice and Bob have relationships with | of signaling. Specifically, Alice and Bob have relationships with | |||
some Identity Provider (IdP) that supports a protocol (such as OpenID | some Identity Provider (IdP) that supports a protocol (such as OpenID | |||
Connect) that can be used to demonstrate their identity to other | Connect) that can be used to demonstrate their identity to other | |||
parties. For instance, Alice might have an account with a social | parties. For instance, Alice might have an account with a social | |||
network which she can then use to authenticate to other Web sites | network which she can then use to authenticate to other Web sites | |||
without explicitly having an account with those sites; this is a | without explicitly having an account with those sites; this is a | |||
fairly conventional pattern on the Web. Section 7.1 provides an | fairly conventional pattern on the Web. Section 7.1 provides an | |||
overview of IdPs and the relevant terminology. Alice and Bob might | overview of IdPs and the relevant terminology. Alice and Bob might | |||
have relationships with different IdPs as well. | have relationships with different IdPs as well. Note: The IdP | |||
mechanism described here has not seen wide adoption. See Section 7 | ||||
for more on the status of IdP-based authentication. | ||||
This separation of identity provision and signaling isn't | This separation of identity provision and signaling isn't | |||
particularly important in "closed world" cases where Alice and Bob | particularly important in "closed world" cases where Alice and Bob | |||
are users on the same social network and have identities based on | are users on the same social network and have identities based on | |||
that domain (Figure 3). However, there are important settings where | that domain (Figure 3). However, there are important settings where | |||
that is not the case, such as federation (calls from one domain to | that is not the case, such as federation (calls from one domain to | |||
another; see Figure 4) and calling on untrusted sites, such as where | another; see Figure 4) and calling on untrusted sites, such as where | |||
two users who have a relationship via a given social network want to | two users who have a relationship via a given social network want to | |||
call each other on another, untrusted, site, such as a poker site. | call each other on another, untrusted, site, such as a poker site. | |||
skipping to change at line 910 ¶ | skipping to change at line 912 ¶ | |||
* The "security characteristics" MUST indicate whether FS is | * The "security characteristics" MUST indicate whether FS is | |||
provided. | provided. | |||
* The "security characteristics" MUST include some mechanism to | * The "security characteristics" MUST include some mechanism to | |||
allow an out-of-band verification of the peer, such as a | allow an out-of-band verification of the peer, such as a | |||
certificate fingerprint or a Short Authentication String (SAS). | certificate fingerprint or a Short Authentication String (SAS). | |||
These are compared by the peers to authenticate one another. | These are compared by the peers to authenticate one another. | |||
7. Web-Based Peer Authentication | 7. Web-Based Peer Authentication | |||
NOTE: The mechanism described in this section was designed relatively | ||||
early in the RTCWEB process. In retrospect, the WG was too | ||||
optimistic about the enthusiasm for this kind of mechanism. At the | ||||
time of publication, it has not been widely adopted or implemented. | ||||
It appears in this document as a description of the state of the art | ||||
as of this writing. | ||||
In a number of cases, it is desirable for the endpoint (i.e., the | In a number of cases, it is desirable for the endpoint (i.e., the | |||
browser) to be able to directly identify the endpoint on the other | browser) to be able to directly identify the endpoint on the other | |||
side without trusting the signaling service to which they are | side without trusting the signaling service to which they are | |||
connected. For instance, users may be making a call via a federated | connected. For instance, users may be making a call via a federated | |||
system where they wish to get direct authentication of the other | system where they wish to get direct authentication of the other | |||
side. Alternately, they may be making a call on a site which they | side. Alternately, they may be making a call on a site which they | |||
minimally trust (such as a poker site) but to someone who has an | minimally trust (such as a poker site) but to someone who has an | |||
identity on a site they do trust (such as a social network). | identity on a site they do trust (such as a social network). | |||
Recently, a number of Web-based identity technologies (OAuth, | Recently, a number of Web-based identity technologies (OAuth, | |||
skipping to change at line 1215 ¶ | skipping to change at line 1224 ¶ | |||
3. The path, starting with "/.well-known/idp-proxy/" and appended | 3. The path, starting with "/.well-known/idp-proxy/" and appended | |||
with the IdP protocol. Note that the separator characters '/' | with the IdP protocol. Note that the separator characters '/' | |||
(%2F) and '\' (%5C) MUST NOT be permitted in the protocol field, | (%2F) and '\' (%5C) MUST NOT be permitted in the protocol field, | |||
lest an attacker be able to direct requests outside of the | lest an attacker be able to direct requests outside of the | |||
controlled "/.well-known/" prefix. Query and fragment values MAY | controlled "/.well-known/" prefix. Query and fragment values MAY | |||
be used by including '?' or '#' characters. | be used by including '?' or '#' characters. | |||
For example, for the IdP "identity.example.com" and the protocol | For example, for the IdP "identity.example.com" and the protocol | |||
"example", the URL would be: | "example", the URL would be: | |||
<https://identity.example.com/.well-known/idp-proxy/example> | https://identity.example.com/.well-known/idp-proxy/example | |||
The IdP MAY redirect requests to this URL, but they MUST retain the | The IdP MAY redirect requests to this URL, but they MUST retain the | |||
"https:" scheme. This changes the effective origin of the IdP, but | "https:" scheme. This changes the effective origin of the IdP, but | |||
not the domain of the identities that the IdP is permitted to assert | not the domain of the identities that the IdP is permitted to assert | |||
and validate. I.e., the IdP is still regarded as authoritative for | and validate. I.e., the IdP is still regarded as authoritative for | |||
the original domain. | the original domain. | |||
7.5.1. Authenticating Party | 7.5.1. Authenticating Party | |||
How an AP determines the appropriate IdP domain is out of scope of | How an AP determines the appropriate IdP domain is out of scope of | |||
skipping to change at line 1788 ¶ | skipping to change at line 1797 ¶ | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers | [RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers | |||
(URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | |||
<https://www.rfc-editor.org/info/rfc8615>. | <https://www.rfc-editor.org/info/rfc8615>. | |||
[RFC8825] Alvestrand, H., "Overview: Real-Time Protocols for | [RFC8825] Alvestrand, H., "Overview: Real-Time Protocols for | |||
Browser-Based Applications", RFC 8825, | Browser-Based Applications", RFC 8825, | |||
DOI 10.17487/RFC8825, December 2020, | DOI 10.17487/RFC8825, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8825>. | <https://www.rfc-editor.org/info/rfc8825>. | |||
[RFC8826] Rescorla, E., "Security Considerations for WebRTC", | [RFC8826] Rescorla, E., "Security Considerations for WebRTC", | |||
RFC 8826, DOI 10.17487/RFC8826, December 2020, | RFC 8826, DOI 10.17487/RFC8826, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8826>. | <https://www.rfc-editor.org/info/rfc8826>. | |||
[RFC8829] Uberti, J., Jennings, C., and E. Rescorla, Ed., | [RFC8829] Uberti, J., Jennings, C., and E. Rescorla, Ed., | |||
"JavaScript Session Establishment Protocol (JSEP)", | "JavaScript Session Establishment Protocol (JSEP)", | |||
RFC 8829, DOI 10.17487/RFC8829, December 2020, | RFC 8829, DOI 10.17487/RFC8829, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8829>. | <https://www.rfc-editor.org/info/rfc8829>. | |||
[RFC8834] Perkins, C., Westerlund, M., and J. Ott, "Media Transport | [RFC8834] Perkins, C., Westerlund, M., and J. Ott, "Media Transport | |||
and Use of RTP in WebRTC", RFC 8834, DOI 10.17487/RFC8834, | and Use of RTP in WebRTC", RFC 8834, DOI 10.17487/RFC8834, | |||
December 2020, <https://www.rfc-editor.org/info/rfc8834>. | January 2021, <https://www.rfc-editor.org/info/rfc8834>. | |||
[RFC8844] Thomson, M. and E. Rescorla, "Unknown Key-Share Attacks on | [RFC8844] Thomson, M. and E. Rescorla, "Unknown Key-Share Attacks on | |||
Uses of TLS with the Session Description Protocol (SDP)", | Uses of TLS with the Session Description Protocol (SDP)", | |||
RFC 8844, DOI 10.17487/RFC8844, December 2020, | RFC 8844, DOI 10.17487/RFC8844, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8844>. | <https://www.rfc-editor.org/info/rfc8844>. | |||
[webcrypto] | [webcrypto] | |||
Watson, M., "Web Cryptography API", W3C Recommendation, 26 | Watson, M., "Web Cryptography API", W3C Recommendation, 26 | |||
January 2017, | January 2017, | |||
<https://www.w3.org/TR/2017/REC-WebCryptoAPI-20170126/>. | <https://www.w3.org/TR/2017/REC-WebCryptoAPI-20170126/>. | |||
[webrtc-api] | [webrtc-api] | |||
Jennings, C., Boström, H., and J-I. Bruaroey, "WebRTC 1.0: | Jennings, C., Boström, H., and J-I. Bruaroey, "WebRTC 1.0: | |||
Real-time Communication Between Browsers", W3C Candidate | Real-time Communication Between Browsers", W3C Proposed | |||
Recommendation, <https://www.w3.org/TR/webrtc/>. | Recommendation, <https://www.w3.org/TR/webrtc/>. | |||
11.2. Informative References | 11.2. Informative References | |||
[fetch] van Kesteren, A., "Fetch", | [fetch] van Kesteren, A., "Fetch", | |||
<https://fetch.spec.whatwg.org/>. | <https://fetch.spec.whatwg.org/>. | |||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
Schooler, "SIP: Session Initiation Protocol", RFC 3261, | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
skipping to change at line 1860 ¶ | skipping to change at line 1869 ¶ | |||
[RFC7617] Reschke, J., "The 'Basic' HTTP Authentication Scheme", | [RFC7617] Reschke, J., "The 'Basic' HTTP Authentication Scheme", | |||
RFC 7617, DOI 10.17487/RFC7617, September 2015, | RFC 7617, DOI 10.17487/RFC7617, September 2015, | |||
<https://www.rfc-editor.org/info/rfc7617>. | <https://www.rfc-editor.org/info/rfc7617>. | |||
[RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, | [RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, | |||
"Authenticated Identity Management in the Session | "Authenticated Identity Management in the Session | |||
Initiation Protocol (SIP)", RFC 8224, | Initiation Protocol (SIP)", RFC 8224, | |||
DOI 10.17487/RFC8224, February 2018, | DOI 10.17487/RFC8224, February 2018, | |||
<https://www.rfc-editor.org/info/rfc8224>. | <https://www.rfc-editor.org/info/rfc8224>. | |||
[RFC8828] Uberti, J., "WebRTC IP Address Handling Requirements", | [RFC8828] Uberti, J. and G. Shieh, "WebRTC IP Address Handling | |||
RFC 8828, DOI 10.17487/RFC8828, December 2020, | Requirements", RFC 8828, DOI 10.17487/RFC8828, January | |||
<https://www.rfc-editor.org/info/rfc8828>. | 2021, <https://www.rfc-editor.org/info/rfc8828>. | |||
[TLS-DTLS13] | [TLS-DTLS13] | |||
Rescorla, E., Tschofenig, H., and N. Modadugu, "The | Rescorla, E., Tschofenig, H., and N. Modadugu, "The | |||
Datagram Transport Layer Security (DTLS) Protocol Version | Datagram Transport Layer Security (DTLS) Protocol Version | |||
1.3", Work in Progress, Internet-Draft, draft-ietf-tls- | 1.3", Work in Progress, Internet-Draft, draft-ietf-tls- | |||
dtls13-39, 2 November 2020, | dtls13-39, 2 November 2020, | |||
<https://tools.ietf.org/html/draft-ietf-tls-dtls13-39>. | <https://tools.ietf.org/html/draft-ietf-tls-dtls13-39>. | |||
Acknowledgements | Acknowledgements | |||
End of changes. 12 change blocks. | ||||
13 lines changed or deleted | 22 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |