A proof-of-concept system for counter-surveillance against spy drones
wired.com
wired.com
My younger years spent screwing around with video for a hobby are coming back to me now.
Ultimately you're putting some signal into a potentially noisy channel and trying to reconstruct whether or not your observations contain that signal. The example is simple enough that normal human eyeballs looking at the output can detect it. Using more sophisticated techniques might be able to tease out smaller signals from noisier channels.
No sacrificing video quality or freshness required.
Why compress at all? Wouldn't just having a pixel perfect stream solve the same issue and give better quality video?
Because compression reduces the amount of data that needs to be transmitted, reducing network and battery usage, especially if the radio channel is congested.
Instead of filling the stream and having a constant stream size, you could just code the drone do add random bursts of data, making any prediction from the observer useless.
If it's actually random, wouldn't the average bitrate of "still scene + occasional random data" still be lower than "active scene + occasional random data"? Given enough samples, of course.
The random noise becomes the background and unless it is a constant addition of noise (which wouldn't save any bandwidth, might as well use uncompressed stream) you could still time changes in the signal.
2. In order to make the real spikes fit into your random pattern you'd need to be able to predict when they will happen.
Given that you have a channel between A and B and an eavesdropper C:
Transmission between A and B can be done by any of several obfuscatory protocols, where (for example) a certain flag sent by A tells B to ignore some component of the transmission, to do no error correction on that part, etc. That flag is sent when updates are sparse, and filler (which is to be ignored) is added by B. Without determining how to identify between filler and data, C sees no variations in traffic volume.
Overcoming real-time spikes is easy with this protocol. Just keep a buffer of a few seconds before you begin transmitting.
This approach is a common answer to any sort of traffic analysis. There's actually a Tor alternative that operates on this principle of constant traffic between nodes (traffic analysis is an effective attack versus Tor), but the name escapes me at the moment.
> Because compression reduces the amount of data that needs to be transmitted, reducing network and battery usage
> Instead of filling the stream and having a constant stream size, you could just code the drone do add random bursts of data
You cannot simultaneously reduce network bandwidth and also increase it. Of course padding with noise increases bandwidth, but it's silly to do that when you could instead be padding it with more bits relevant to the video stream.
The vulnerability here isn't inherent to video compression; it's that the compression rate (and therefore network packet rate) is variable (so as to minimize global size of a video stream). It would not be that difficult to modify an encoder to guarantee fixed bit rate over whatever time chunk you want (depending on how many frames is tolerable to buffer before sending out), then send out those chunks at regular intervals.
It all looks the same post-encryption.
Just drone battery life
-edit- Even durning world war you if you were listening on enemy radio commucations and they had not been decrypted you could tell if the enemy was planning somthing by noticing a large increase in radio communication. This a long known issue if you dont pad your data and send it at a constant stream. You may leak some information.
What do you mean it's not clever? Sure, they applied a known weakness of non-constant data rate encoded messages to drone monitoring, but that's never been done before. What have you done that's so impressive that gives you the confidence to scoff at the accomplishment of the talented engineers and developers who created something brand new?
What grabs the attention is isn't so much the procedure or technology itself, but the narrative that we're in a future where this kind of thing might be genuinely useful to somebody someday.
The most interesting part of this is how encrypted traffic leaks enough info to be reliably analyzed. Really cool stuff.
Granted, you could obfuscate things by varying the buffer length and padding the data stream (as suggested near the end of the article) - but at some point, a high-value surveillance target will probably just assume that a nearby drone is probably not operated by an avid bird-watcher or something like that and just blast the drone out of the sky. (Preferably using a laser or better still lots and lots of microwave RF - tends to get the surroundings less aggravated than using a shotgun...)
Or maybe sending the blocks out of order to be reconstructed according to a shared ordering key?
The fix is a constant bitrate with a sensible block cipher mode.
For instance, let's say I can insert any word into an encrypted message. Let's say I insert the word "THE". I can compare the size of the two messages one with the inserted "THE", and the one without. If the size instead of increasing by three bytes increases by less than three. I can be certain the word "THE" is in the message or at least some of the characters. I can keep doing this till I can extract useful information out the message.
This is just the same thing. Video that is static compresses well, but video with lots of change does not compress as well.
So the camera basically let's you insert extra information into the encrypted data stream. Based of the changing size it leaks info. This one is quite simple. It just tells you where the camera is looking, making the scene more dynamic. However, the issue of compression and encryption applies to much more than just drones.
So if you're worried about being spied on, high-resolution mosaic patterns are your friend. Mirror or high specularity pigments will enhance the effect. For fixed installations a few discoballs and a laser will mess up someone's day.
Of course, if you want real security you'll triangulate on the drone signals and jam, because if you really need to do so getting busted by the FCC is probably the least of your worries.
One obvious extreme example of this would be no compression at all, but it's easy to imagine much better designs.
For example, imagine I define a spec where I require quality no worse than a lossless 500x500x24bit/frame video stream. If we budget a bit rate higher than is required for the naive raw transmission of those frames, we can first encode the naive frames, then encode the deltas between them (upscaled to full resolution) such that the reconstruction error is minimized while not exceeding any maximum tolerated error per pixel.
With this approach, you are not crippled when facing an adversarial pattern generator of some kind, yet when transmitting regular natural scenes, you can benefit from significant quality increase.
As you suggest though, it's true that generating the most complex patterns possible will reduce any drone's video quality as much the codec's design permits -- however accomplishing this seems much more expensive for relatively little benefit versus other counter-drone approaches.
That's not feasible for Netflix to do, of course, but it'd be trivial for the NSA or other spy agencies.
This technique could also be used in legal proceedings to establish that someone or some org was spying illegally.
Interesting article - thanks for sharing.
Rather, they monitor the bitrate of the video stream and exploit the fact that static/unchanging scenes compress well and have a low bitrate while scenes which are changing have a higher bitrate. They then deliberately change the scene (by blacking out a window) and see whether the bitrate of the video stream increases.
If there's a strong correlation between blacking out the window and changes in bitrate, they can conclude the drone is observing their window.