Visual XOR against random data using the supplied "information pixels" instead of actual pixels (2x2 pixel groups). Cryptography at its most simple and most effective, with a visual twist.
Makes me want to fiddle, and make something which lets you hide information in the interference between 3 such images... one message for each pair, and one for all three stacked.
A few years ago, these James Bond magazines for kids came out, and i bought a bunch of them. I seem to remember them using this idea in the magazine to hide "secret" messages, which you could only decrypt if you had the transparent key that came with the magazine. Pretty awesome stuff.
The last-linked "additional information" mentions rotated 1/2-circles with black & white halves to define greyscale images. There's an easier way, and it'll scale to as many layers and colors as you want:
pixel(r,g,b) = ((r1^r2), (g1^g2), (b1^b2)). (bit-level xoring) More layers just add in their values. Until you add all of them, there's no way to know what the final value for a pixel will be.
As for the "general access structures"... maybe this can be tweaked, haven't looked closely enough and my brain is tired.
---
edit: fixed algorithm. wrote quick ruby script. first attempt at something like this, glad it works.
edit again: and for those interested, the last linked "additional info" article describes how to make multi-layer images like the one in the main article. It's kinda interesting.
The interesting thing about the original technique (to me) is that you can do the decryption without a computer. If you want to do this in color, I think you need to use the LCD approach of having red, green, and blue subpixels next to each other.
I was thinking steganography too initially, but that's strictly information hiding. This "encrypts" it by XOR-ing it with random data. Without the "key" image, there is no information in the actual "data" image because it's literally just random data. In steganography the data is "discoverable", it's just hard to find; in this, it's impossible to derive the data without the key.
Makes me want to fiddle, and make something which lets you hide information in the interference between 3 such images... one message for each pair, and one for all three stacked.