Are there any video chat clients with end-to-end encryption?
I was trying to do this by piping the output of my webcam to openssl and then to netcat, which sends the packets to a publicly addressable server (Amazon instance) that relays the encrypted packets to another computer behind a firewall, that decrypts the video stream and plays it in MPlayer. It works, but the latency is about 10 seconds. To reduce the latency, I could delta-encode the video stream, leverage the GPU somehow, but I'm not sure how to get the latency down to the 200ms required for seamless conversation. Also, it should be noted that there is little code behind this, mainly just unix utilities and pipes.
PS: Also I could remove the Amazon piece and forge a direct P2P connection using NAT hole punching if the routers on both ends permit, but this is not always reliable and isn't a huge source of latency.
Apparently FaceTime [1] and iMessage are end-to-end encrypted with unique session keys. Whether Apple has access to those keys is not known though (the key exchange isn't documented as far as I can tell).
I keep expecting to see more research into side channel attacks for encrypted video. A fair amount of work has been done for similar attacks on audio streams with VBR codecs. Secure encrypted voice requires using a codec in CBR mode, but that's not really possible for video. It's perhaps likely that video is too complex to leak anything usable through that type of side channel, but I haven't seen much discussion either way.
I had end-to-end encrypted video chat bodged together using libvlc and SRTP streams at one point, but it was incredibly user-unfriendly and getting latency down below 1 second was easier said than done. VLC really wasn't designed for this kind of application.
I was trying to do this by piping the output of my webcam to openssl and then to netcat, which sends the packets to a publicly addressable server (Amazon instance) that relays the encrypted packets to another computer behind a firewall, that decrypts the video stream and plays it in MPlayer. It works, but the latency is about 10 seconds. To reduce the latency, I could delta-encode the video stream, leverage the GPU somehow, but I'm not sure how to get the latency down to the 200ms required for seamless conversation. Also, it should be noted that there is little code behind this, mainly just unix utilities and pipes.
PS: Also I could remove the Amazon piece and forge a direct P2P connection using NAT hole punching if the routers on both ends permit, but this is not always reliable and isn't a huge source of latency.