(It's trivial to deal with the audio sync issues.)
Cams may have a lot of spatial unreliability, but they have a lot of temporal resolution.
And that's just my stupid of-the-cuff answer, which is already off to a decent start. And there are in fact purely-spatial solutions that do work, to which the temporal solutions can be added. The upshot is don't expect to beat these anytime soon. There's just too many bits to hide in, and so few bits needed for the identification.
I agree. Some of the off the top of my head ideas that I literally just came up with now:
- if printing an image, drop a few dots in some rows (or columns); data is hidden in the pattern of dropped dots
- if printing text (as in, actual text goes to be rendered on the driver or printer firmware level, and not by the OS / text editor), slightly alter the shape of some letters (by adding or dropping a dot) to hide a pattern
- if printing an image, try to hide some data in its FFT (e.g. by adjusting differences between low frequencies and hiding a pattern there)
- if recording a video, slightly alter some otherwise stable global characteristic (like avg brightness of a bunch of consecutive frames in an animated movie)
- if recording a video, screw with timing patterns, as you mentioned
There are just so many properties, that the difficulty is probably mostly in picking something that's stable through usual transformations a document will undergo (e.g. scanning, JPG compression).
For a real example that really works, see, for example, digimarc:
https://www.digimarc.com/support/product/digimarc-guardian-f...
Images can be cropped, rotated, recompressed, scaled, etc. and the digital watermark remains.
Also see: https://en.wikipedia.org/wiki/Digimarc
and read some of their patents, referenced in the Wikipedia article.
And none of those would impact the timing of black interim time lengths.
Also, this makes digimarc sound crappy (from their site):
>Facebook compresses images once they are posted, sometimes heavily, which can damage our invisible identifiers. Fortunately, there is a simple solution: if you pre-compress your images, then apply our identified, they should survive.
So they don't survive compression.
I would say about 20% of the files we sent over had enough recoverable watermark to be useful.
I was surprised to see printers being involved--I thought something like this leak would all be digital. I was also surprised that the Intercept would not be more savvy about printer identification because it's been publicized so much over the years.
The hand-waving part of this is "if you can determine a portion of this randomness by inspecting the output of the algorithm", because I don't really understand how easy this could be made without knowing the exact underlying signal that the dithering algorithm needs to quantize.
An alternative might be slightly changing some of the values in the matrices at
https://en.wikipedia.org/wiki/Ordered_dithering
in a way that barely reduces perceptual image quality (although I'm not certain how well that can be done). Perhaps there is an algorithm that uses statistics to deduce what matrix was used, and then the perturbations can be read out of the matrix.
This is related to research in digital watermarking that's been going on for decades, and I'm definitely not an expert in that or in digital image processing, so I'd love to hear from people who know more.
Nonetheless, looking up close at how printers produce different colors out of CMYK dots, I'm pretty confident that they have some degrees of freedom, and that some of them probably don't make a lot of different perceptually, and can probably be used to encode a message.