Confirmed users
177
edits
No edit summary |
No edit summary |
||
Line 29: | Line 29: | ||
# Device announces itself via service discovery | # Device announces itself via service discovery | ||
#* Announcements only go to the local LAN / same subnet | #* Announcements only go to the local LAN / same subnet | ||
#* The announcement contains hash(DeviceCert) as additional data | |||
The Device remains listening as long as the feature is enabled. | The Device remains listening as long as the feature is enabled. | ||
Line 36: | Line 37: | ||
# Computer detects Device as available for connection via service discovery | # Computer detects Device as available for connection via service discovery | ||
# User | # User choose device to start connection on Computer | ||
# | # TLS connection established, authentication begins | ||
# Device | # Device sees that ComputerCert is from a unknown client (since it is new) | ||
# Computer | # Device waits for out-of-band data | ||
# | # Computer verifies that Device's cert matches hash(DeviceCert) from the advertisement | ||
# | # Computer creates hash(ComputerCert) + K(random 128-bit number) | ||
# Computer | # Out-of-band channel is used to move result of step 7 from Computer to Device | ||
# User is shown a Allow / Deny / Always Allow prompt on the Device with Computer name and hash | #* For Firefox Desktop -> Firefox OS, Desktop will make a QR code, and FxOS will scan it | ||
#* For non-mobile servers, some other approach is likely needed, perhaps a short code form for the user to transfer | |||
# Device verifies that Computer's cert matches hash(ComputerCert) from out-of-band channel | |||
# User is shown a Allow / Deny / Always Allow prompt on the Device with Computer name and hash(ComputerCert) | |||
#* If Deny is chosen, the connection is terminated and exponential backoff begins (larger with each successive Deny) | #* If Deny is chosen, the connection is terminated and exponential backoff begins (larger with each successive Deny) | ||
#* If Allow is chosen, the connection proceeds, but nothing is stored for the future | #* If Allow is chosen, the connection proceeds, but nothing is stored for the future | ||
#* If Always Allow is chosen, the connection proceeds, and | #* If Always Allow is chosen, the connection proceeds, and hash(ComputerCert) is saved for future attempts | ||
# Device sends K to Computer over the TLS connection | |||
# Computer verifies received value matches K | |||
# Debugging begins | |||
=== Using Wi-Fi Debugging (known computer) === | === Using Wi-Fi Debugging (known computer) === | ||
Line 52: | Line 59: | ||
# Computer detects Device as available for connection via service discovery | # Computer detects Device as available for connection via service discovery | ||
# User | # User choose device to start connection on Computer | ||
# | # TLS connection established, authentication begins | ||
# Device | # Device sees that ComputerCert is from a known client via hash(ComputerCert) | ||
# Debugging begins | |||
# | |||
=== Other Details === | === Other Details === | ||
Line 68: | Line 73: | ||
=== Possible Attacks === | === Possible Attacks === | ||
Someone could try to DoS the phone via many connection attempts. The exponential backoff should mitigate this concern. | Someone could try to DoS the phone via many connection attempts. The exponential backoff should mitigate this concern. ([https://bugzilla.mozilla.org/show_bug.cgi?id=1022692 bug 1022692]) | ||
=== Comparison to ADB === | === Comparison to ADB === | ||
While it would be nice if we could instead leverage ADB here, that doesn’t seem viable because: | |||
* ADB comes with a lot of setup / troubleshooting pain | * ADB comes with a lot of setup / troubleshooting pain |