Digital Photograph Fingerprinting
April 21, 2006 at 06:19 PM | categories: python, security | View CommentsOur printers have been spying on us for years, but soon we may be revealing our identity when we publicly post pictures we take with our digital cameras.
According to Jessica Fridrich, the holder of two new patents related to digital image fingerprinting, she has been able to statistically show whether or not a particular camera took a picture in question. She asserts that each camera has a unique signature in the way it captures the image and that this signature will be visible in every image that the camera takes. If true, this brings up many privacy concerns; it is most certainly beneficial to individuals, and society in general, to be able to post pictures anonymously.
Computer images are just a long string of RGB values, which are easily modifiable. What if we were to randomize those values within a small delta (using appropriate software)? If the delta were small enough, the change would be unnoticeable to the human eye, but would render any statistical analysis for identification purposes impossible.
Here's some python code to test my theory.
Here's an example test I ran. This is a scaled down copy of the original image (click the image for the original one):
Here's the same image run through at delta = 2:
Here's the same image run through at delta = 20:
Here's the same image run through at delta = 100... Now it's really grainy (click the image to see it better):
Obviously, you want to pick the right delta level. I personally can't see much of a difference between the original and delta=2. The question is: at what point does the image lose its "statistical identity"? I would tend to think that it would lose the identity at even delta=2. At delta = 100 the picture becomes really grainy (although at low resoultion it's easy to miss) ... When it comes time for the revolution though, I think we'll have more important things to worry about than grainy pictures.