One way I can think of, is to record data on the CMYK pins on the inkjet head itself. IIRC, they activate between 17v and 22v, and pulse per high.
The goal here is to make the printer think its printing, while recording all the data of the pulse operations. We would get a lengthy file out.
Ideally, the pulse coding should be consistent if printing the same image. "Printing" the same thing over multiple times could show time/date codes embedded.
I should also be able to compare underlying system internals too, with multiple clones of VMs with small config details different. They should be the same data. If they aren't, we know its encoding system stuffs.
But yeah, there is a way to attack this, and that's by going lower in the stack and treating the printers as a black box. It's not the best way, but a way I've thought of that could at least detect this new technique.
But I would imagine that a simple 3d printed harness would work a lot better with allowing signals to be recorded and make the printer think its printing. Then the bypass harness could have an ARM on it and spool instructions to either a SD card, or via USB serial.
The goal here is as transparent as possible, just in case there are other security systems that try to detect this attack. But I'd guess they havent got to that point yet.
The "yellow dot" method would be picked up pretty quickly by the yellow being triggered while printing entirely B&W documents.
Things like dithering, if they encode things like printer serial numbers might be catchable by printing an identical set of documents across two examples of the printer.
That's what my shim would do, is record the signals to the ink solenoids. The reason to make the printer think its printing, is primarily because of all the DRM lockout crap all manufacturers use. Ideally, I'd even let it print so that when the firmware sees ink levels going down, nothing on the firmware side would look amiss.
> The "yellow dot" method would be picked up pretty quickly by the yellow being triggered while printing entirely B&W documents.
Indeed. However, its old hat about the yellow dots. I know they've moved on to something much harder to detect, and also likely scan and reprint resilient. What is this new type? No bloody clue. I'd assume a bad actor using heavy stego on chip. And if I were designing it, I'd watch for things like test images coming through and not mark them.
My first attempt would be with a high res 100$ bill scan. I betcha that'd trigger something interesting.
> Things like dithering, if they encode things like printer serial numbers might be catchable by printing an identical set of documents across two examples of the printer.
Yeah, I figure there's a serial number, time/date, hostname, IP, logged-in username.. All sorts of data. This is also corporate espionage area as well as national security, so I'd figure they would put out all the stops to catch, if they can't prevent the print itself.
Just chalk it up to me, and my paranoid mind. Still doesnt mean they arent out to get you!
Printing in different inks also wouldn't show us a way to diff 2 printed images. Whereas, saving the pulses from the CMYK pins would do that.
When you have a datalog of lots of pulses that represent a picture, you can back-calculate it into an image. You can also diff it without relying on losing data from scanning (or paying attention to the wrong thing). And with enough samples, we can recalculate the algorithm. With the knowledge of what they're doing, we can then start scanning other images for this... But only once we know what they're doing.
I wonder how many million extra gallons of yellow toner and ink are wasted every year printing these tracker dots?
However, the governments did not succeed in limiting their technology to use in counterfeiting investigations, and may not even have attempted to do so.
My previous printer did this, and my current Canon refuses to boot when any cartridge is missing or empty.
But a back-of-the-envelope calculation suggested to me an upper limit of about 1000 kg to 10000 kg of extra toner per year in the United States. However, there are several factors that make me think that even the low figure is an overestimate.
I agree with your frustration about paying for this. Mako Hill used it as an example of an antifeature
https://wiki.mako.cc/Antifeatures
(It might be more accurate to define antifeatures in terms of buyers' willingness to pay to have the features removed, rather than sellers' insistence on being paid to remove them, since we can't, in fact, routinely pay for many of the antifeatures he mentions to be removed.)
I mostly print black & white.
More annoying are the privacy concessions that are the result of secret anti-counterfeiting measures (which is what I assume the measures are for).
I would start, but I'm currently not around a printer...
Also to convince anyone that it works, you would need to test it out on an extremely large number of printers, including ones of the same model. In practice that could be expensive.
A few variants at most.
Print the same page, compare the signals sent to the motors? Won't that be a more easily/accurately measure proxy for what's actually being printed. One might need the timing data for the jets on an inkjet too, etc.
So for an inkjet you'd have to look at the nozzle timing, which might be difficult depending on how integrated the drivers are (e.g. if they're a custom chip on a flexprint behind the heads... uhm...). For a laser printer you'd have to look at the laser modulation signal. That should be much easier, bugs have done that before.
Reverse engineering the firmware might be easier... on the other hand, the firmware is probably bolted shut rather well — the printer manufacturers cartridge DRM is in there somewhere.
Reversing the firmware though, good call.
I think it's possible to send saturated pixels using PCL, and tell the printer to disable half-toning. It requires that a full page fits in memory, which isn't much (512MB) but typically more than the default.
For some reasons all printers use really vintage memory, so 512MB extra memory is crazy-expensive.
It would likely make identifying tracking marks and algorithms a lot easier.
https://duckduckgo.com/?q=docucolor+"not+visible+under+norma...
We originally found that in German,
https://duckduckgo.com/?q=docucolor+"unter+normalen+bedingun...
However, I don't think that most printers currently disclose this, at least for sales in the U.S.
There's a lot of work that would go into designing, implementing, and testing this. Then you've got logistics in manufacturing. That's time and money.
The GSA Schedules: https://www.gsa.gov/portal/content/197989
It definitely does not feel right that some non government entity is deciding to encoding personally identifying information about you without public oversight.
But it does not redirect anymore, I had to use archive.org
See the reply to SomeStupidPoint by schoen a few hours ago (and a couple of other posts on this thread) for more detail.
I'm not sure what would be possible for pure vector graphics.
(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.
That makes me think that it may have been a mistake to create this list in the first place, because the main practical use of the list would be to help people buy color laser printers that don't do forensic tracking, yet it's not clear that any such printers are actually commercially available.