I know that sixes_and_sevens probably wants a software solution here, but if they are willing to put up with sending lots of extra data they could just declare the third letter of every sixth word or use some other similarly arbitrary rule to determine which letters were pieces of data in the secret message.
There’s also lots of tools to steganographically embed data in images.
So, my actual motivation is solving a specific problem I set myself: if I have two or more processes running on different machines, with access to the public internet, but no guarantee of locally open ports beyond 80 and 443, no knowledge of any existing sibling processes, and no guarantee that any previously-established communication channel (like a mail server, message queue or coordinating service) is still active, how do they form a peer group?
The first not-completely-terrible solution I hit upon was for them to monitor existing chatter-heavy online services such as Reddit or Wikipedia, use some sort of pre-established scoring rule to identify esoteric topics, and obliquely pass data to one another in comments or discussion of that topic whenever it arises. Image steganography is a good inroad here, since Reddit is very image-heavy and doesn’t draw too much attention to itself, but most services you can use to anonymously host images (like imgur) strip metadata from the images, so dumping some cyphertext in the image header won’t work.
I’m still keen on putting together a text solution, because it interests me, and I find the idea of Reddit bots carrying out human conversations while passing covert information to each other highly appealing.
If cyphertext in image metadata would be acceptably well-hidden, this should be as well: you can hide four bits per pixel using the least significant bits of the RGBA channels. A human won’t be able to tell the difference between #FE007BFE and #FF017AFF.
(This assumes .png. I don’t think it would work very well, if at all, for either jpeg or gif.)
It seems like other people have built solutions that use steganography with the image pixels themselves, given that I see examples on Wikipedia.
I can’t be remotely useful with the text stuff, though, my coding skills are such that I still have trouble generating token frequency histograms from text files and my most persuasive “chatbot” relayed an entirely pregenerated script to the user, only took 1 bit of user input, and was written on a graphing calculator. (I still got my Theory of Knowledge to feel empathy for it and be unwilling to let me delete it in exchange for a cookie, though, so it did prove my point that people can feel empathy for morally irrelevant things, like a program shorter than your above comment.)
I know that sixes_and_sevens probably wants a software solution here, but if they are willing to put up with sending lots of extra data they could just declare the third letter of every sixth word or use some other similarly arbitrary rule to determine which letters were pieces of data in the secret message.
There’s also lots of tools to steganographically embed data in images.
So, my actual motivation is solving a specific problem I set myself: if I have two or more processes running on different machines, with access to the public internet, but no guarantee of locally open ports beyond 80 and 443, no knowledge of any existing sibling processes, and no guarantee that any previously-established communication channel (like a mail server, message queue or coordinating service) is still active, how do they form a peer group?
The first not-completely-terrible solution I hit upon was for them to monitor existing chatter-heavy online services such as Reddit or Wikipedia, use some sort of pre-established scoring rule to identify esoteric topics, and obliquely pass data to one another in comments or discussion of that topic whenever it arises. Image steganography is a good inroad here, since Reddit is very image-heavy and doesn’t draw too much attention to itself, but most services you can use to anonymously host images (like imgur) strip metadata from the images, so dumping some cyphertext in the image header won’t work.
I’m still keen on putting together a text solution, because it interests me, and I find the idea of Reddit bots carrying out human conversations while passing covert information to each other highly appealing.
If cyphertext in image metadata would be acceptably well-hidden, this should be as well: you can hide four bits per pixel using the least significant bits of the RGBA channels. A human won’t be able to tell the difference between #FE007BFE and #FF017AFF.
(This assumes .png. I don’t think it would work very well, if at all, for either jpeg or gif.)
It seems like other people have built solutions that use steganography with the image pixels themselves, given that I see examples on Wikipedia.
I can’t be remotely useful with the text stuff, though, my coding skills are such that I still have trouble generating token frequency histograms from text files and my most persuasive “chatbot” relayed an entirely pregenerated script to the user, only took 1 bit of user input, and was written on a graphing calculator. (I still got my Theory of Knowledge to feel empathy for it and be unwilling to let me delete it in exchange for a cookie, though, so it did prove my point that people can feel empathy for morally irrelevant things, like a program shorter than your above comment.)