bitaddress.org icon indicating copy to clipboard operation
bitaddress.org copied to clipboard

Screen-to-screen communication (discussion and scratchpad)

Open fluffypony opened this issue 9 years ago • 0 comments

Peter and I discussed real-time communication between two devices (one that is airgapped, and one that is connected to the Internet) in order to sign transactions on the airgapped machine, but broadcast them on the other. Since the communication need only be one-way there is no risk to the airgapped machine. In the event that the airgapped machine needs information on which wallet utxos are now spent, that can also be done in a secure and robust manner. Being inside the browser on the airgapped machine is, in this instance, quite beneficial, as Javascript is VERY well sandboxed.

I found a couple of interesting papers on the subject:

  • http://www.cs.dartmouth.edu/~xia/papers/mobisys15-hilight.pdf
  • https://www.eecs.berkeley.edu/~qifan/papers/lightsync.pdf
  • http://conferences.sigcomm.org/sigcomm/2010/papers/sigcomm/p451.pdf

In my head Peter and I imagined two laptops being pointed towards each other with their cameras on. After handshaking they'd be able to exchange information - spent utxos first, and then the transaction is built and sent. If the information only has to flow one way (eg. just a utxo update or just a transaction being sent to flush a cold wallet) then there is no need for a handshake, and the transmitter can just send the entire packet + checksum twice, which should help in situations where there is a brief break in communication (eg. overhead light goes on).

Admittedly, this will be tricky in Javascript, but since there is webcam capture support in HTML5 it isn't impossible. We should probably seek out any libraries that have implemented such communication, maybe we get fortunate and find someone who's done the grunt work:)

fluffypony avatar Mar 08 '16 11:03 fluffypony