As my regular readers will know, I've been having some trouble with minting and sharing NFT versions of my digital artwork (in both audio and visual form). I decided that I would go the traditional/Web2 route of publishing it (through BMC and Patreon). However, that raised the issue of being able to claim and prove intellectual property and/or ownership rights on it if it makes the rounds on the Internet. That was a bit of a poser for me, particularly since I don't want to put watermarks on the originals I intend to sell. I looked into digitally signing the files, but came to the conclusion that that would have the same results as adding watermarks, so that's no good as an approach. Steganography is clearly the way to go here, so I went looking for tools.
I'm familiar with steghide
on *NIX
systems, but wasn't sure if I could also use it on Windows. Fortunately, I can. That's just as well, since I initially downloaded rSteg (because of the goal of coping with scaling/down-sampling) from GitHub. Unfortunately, the released *.jar
file would not locate and use the required argparse4j
library, so I compiled it from source. That at least gave me usage text when supplied incorrect or no arguments. However, it doesn't support PNG images, so is no good to me. Even when I did supply a PNG, it gave me an ArrayIndexOutOfBounds
error and stack trace, which didn't go away when I reduced the size of the image. I haven't got time to debug someone else's code; I need something that "just works".
On to steghide
, then. I downloaded it from Sourceforge, followed the usage instructions in the "quick start" guide and viola, one text file embedded in an image. Fortunately, steghide
seems to support embedding any file type within another, so that should serve my purposes. (I've yet to test it with audio content or how well it copes if I resize/down-sample the image, though). One of the cool things about it is that it requires a password for encryption, so even if somebody knows you've used steghide
to hide sensitive information in a particular file, they won't be able to extract that without knowing the password you used (and it doesn't display it in the CLI interface).
Screenshot of steghide usage on Windows
"This multimedia content is the intellectual property of the artist known as Great White Snark (AKA Jizzy Rascal), whom reserves the right to be identified as its creator, originator and copyright holder in perpetuity until death. Any altering of this content (other than compression/downsampling/scaling) is strictly prohibited!"
Having done a quick visual comparison of the files, the only apparent difference is that the file with the hidden message occupies slightly less space on my HD than the original. Presumably, it uses greater compression and/or is of slightly lower quality than the original, but that's probably only noticeable under high magnification. (You can have a look for yourself, at the below image, titled "Test Icicles"for the LoLs. It clearly has no watermark on it, yet has the copyright notice embedded in it. I've not yet downloaded it from this post and seen if I can still extract the copyright notice file from it.)
Test Icicles
Right, having done that, I'm finally ready to begin embedding the copyright notice and putting my digital art up for sale on Patreon and BMC. That's probably going to take me some time (on the scale of weeks to months), since there is a lot of it. It's probably not a bad idea to even embed the notice in such content that one does intend to turn in to NFTs, just to be on the safe side.
Thumbnail image: Test image generated by AI and containing the hidden and encrypted copyright notice.