133
edits
(→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. | ||
edits