Firefox OS/Remote Control: Difference between revisions

Jump to navigation Jump to search
→‎Architecture Designs: Add block diagram and sequence diagram
(→‎Aja Protocol: Add encrypted control events)
(→‎Architecture Designs: Add block diagram and sequence diagram)
Line 13: Line 13:


== Architecture Designs ==
== Architecture Designs ==
[[File:RemoteControl BlockDiagram.png]]
* Remote Control Service: Entry point of remote control feature. Control service related logic and data in runtime.
* Remote Control Service: Entry point of remote control feature. Control service related logic and data in runtime.
* HTTP Server: Serves connections from user. Two types files can be served:
* HTTP Server: Serves connections from user. Two types files can be served:
Line 26: Line 29:
=== Establish secure connection ===
=== Establish secure connection ===
Remote control is designed to protect data transmitted between client and server, for example: user input string may contains privacy data. Consider user scenario for remote control is in local network, TV is not able to get a unique name to provide HTTPS; remote control uses proprietary protocol to establish secure connection. Client is forced to exchange symmetric key (AES-GCM) with server in the first time. After key exchange, server uses UUID in cookie to identify client and key to decrypt messages. Following describes how keys are exchanged:
Remote control is designed to protect data transmitted between client and server, for example: user input string may contains privacy data. Consider user scenario for remote control is in local network, TV is not able to get a unique name to provide HTTPS; remote control uses proprietary protocol to establish secure connection. Client is forced to exchange symmetric key (AES-GCM) with server in the first time. After key exchange, server uses UUID in cookie to identify client and key to decrypt messages. Following describes how keys are exchanged:
[[File:RemoteControl SecureConnectionInitialization.png]]


# User opens the URL.
# User opens the URL.
Line 44: Line 49:
=== PIN code pairing ===
=== PIN code pairing ===
PIN code is a mechanism to ensure the device connects to TV is physical near TV. While connects to TV, user needs to enter 4 digits PIN code on TV screen. After pass pairing, user is redirected to control page and not need to enter PIN code until: 1) 90 days, pairing expired or 2) user revokes all pairing in remote control app. Pairing can be turned off in remote control app. Following describes how PIN code pairing is done:
PIN code is a mechanism to ensure the device connects to TV is physical near TV. While connects to TV, user needs to enter 4 digits PIN code on TV screen. After pass pairing, user is redirected to control page and not need to enter PIN code until: 1) 90 days, pairing expired or 2) user revokes all pairing in remote control app. Pairing can be turned off in remote control app. Following describes how PIN code pairing is done:
[[File:RemoteControl PINCodePairing.png]]


# User opens the URL.
# User opens the URL.
Line 64: Line 71:
=== Control event processing ===
=== Control event processing ===
Control page provides: 1) a virtual touchpad, 2) a virtual vertical scrollbar, 3) 3 function keys. Every touch, swipe or click will be generated to an event in JSON format, encrypted and send to TV. Following describes how control event is sent and processed:
Control page provides: 1) a virtual touchpad, 2) a virtual vertical scrollbar, 3) 3 function keys. Every touch, swipe or click will be generated to an event in JSON format, encrypted and send to TV. Following describes how control event is sent and processed:
[[File:RemoteControl ControlEventProcessing.png]]


# User opens the URL.  
# User opens the URL.  
133

edits

Navigation menu