w3c / webrtc-nv-use-cases

Use cases for WebRTC NV
https://w3c.github.io/webrtc-nv-use-cases/
Other
32 stars 13 forks source link

Local IP obfuscation #59

Open shacharz opened 4 years ago

shacharz commented 4 years ago

Host-to-Host connectivity is essential for use cases like enterprise streaming over large local networks. On the other hand, privacy concerns require that local IPs are not revealed.

A few solutions have been considered:

  1. Limiting the exposed candidates
  2. mDNS
  3. Encrypted ice-candidates

The current status is that Chrome, Edgium, Firefox and Safari are using mDNS hostnames in host candidates and use the mDNS protocol to resolve the local IP. We have seen in multiple corporate networks that this causes significant performance issues due to the inability to connect devices within the corporate network (mostly because of the 1-hop limit).

As an interim solution, Chrome has disabled mDNS in Chrome Enterprise deployments and is exposing the local IP in host candidates for those browsers. This has resolved the above issues.

The suggested long term solution is encrypted ice-candidates. While IMO this solution is a good way forward, there are a few concerns I’d like to raise:

  1. The mechanism of sharing keys is outside the scope of the document. An example of an existing mechanism that can be used is Chrome Enterprise Policies.
    1. Will the zero configuration characteristic of WebRTC remain? Or will IT configuration and personnel be needed to obtain connectivity in corporate networks? One can think of a mechanism to automatically create keys using the enterpriseID (Is that viable in terms of key rolling and security?)
    2. Will browsers be interoperable (i) by default, (ii) via configuration (passing an external shared key to all browsers in the corporate) or (iii) not interoperable at all?
  2. How will corporations without an enterprise version of the browser gain local connectivity capabilities?
lgrahl commented 4 years ago

Due to 2., Chrome Enterprise can never be a complete solution for this kind of problem, so I'd search for a more broadly applicable solution.

Note: This is basically within the scope of #1.

juberti commented 4 years ago

You don't need a special version of the browser to push policies to Chrome, so I think this can be a pretty general solution. I think the exact mechanism is out of scope of WebRTC NV though.