diff --git a/webrtc.html b/webrtc.html index 48f2c65fb..7ff505cb4 100644 --- a/webrtc.html +++ b/webrtc.html @@ -5333,8 +5333,13 @@
Set certificate.[[\KeyingMaterial]] to - generatedKeyingMaterial.
+Store the generatedKeyingMaterial in a + secure module, and let handle be a reference + identifier to it.
+Set certificate.[[\KeyingMaterialHandle]] to + handle.
Set certificate.[[\Certificate]] to @@ -5378,7 +5383,8 @@
The RTCCertificate
interface represents a
certificate used to authenticate WebRTC communications. In addition to
the visible properties, internal slots contain a handle to the
- generated private keying materal ([[\KeyingMaterial]]), a certificate
+ generated private keying materal ([[\KeyingMaterialHandle]]),
+ a certificate
([[\Certificate]]) that RTCPeerConnection
uses to authenticate with a peer, and the origin ([[\Origin]])
that created the object.
For the purposes of this API, the [[\Certificate]] slot
contains unstructured binary data. No mechanism is provided for
- applications to access the [[\KeyingMaterial]] internal slot.
+ applications to access the [[\KeyingMaterialHandle]] internal
+ slot or the keying material it references.
Implementations MUST support applications storing and retrieving
- RTCCertificate
objects from persistent storage.
- In implementations where an RTCCertificate
might not
- directly hold private keying material (it might be stored in a
- secure module), a reference to the private key can be held in
- the [[\KeyingMaterial]] internal slot, allowing the
- private key to be stored and used.
RTCCertificate
objects from persistent storage, in a manner
+ that also preserves the keying material referenced by
+ [[\KeyingMaterialHandle]].
+ Implementations SHOULD store the sensitive keying material in a secure
+ module safe from same-process memory attacks. This allows the private
+ key to be stored and used, but not easily read using a memory attack.
RTCCertificate
objects are serializable objects
[[!HTML]]. Their serialization steps, given value and
serialized, are:
Their deserialization steps, given serialized and @@ -5485,8 +5493,9 @@
Supporting structured cloning in this manner allows RTCCertificate instances to be persisted to stores. It @@ -12936,6 +12945,11 @@
A mechanism, peerIdentity
, is provided that gives
Javascript the option of requesting media that the same javascript cannot
access, but can only be sent to certain other entities.
Communication certificates may be opaquely shared using
+ postMessage
in anticipation of future needs. User agents are
+ strongly encouraged to isolate the private keying material these objects
+ hold a handle to, from the processes that have access to the
+ RTCCertificate
objects, to reduce memory attack surface.