partially-encryptedNFT: Proof-of-concept of partial encryption of image NFTs, to display and prove ownership while avoiding the artwork being stolen

Why?

"Why did you pay for that? I can just copy and paste it"
- Some guy on Twitter

This project explores a technique for making NFTs effectively uncopyable, while maintaining viewability and proof of ownership.

How It Works

1. User uploads an image
Monkey pic
Could be any image, but probably going to be a cartoon monkey.
2. We distort it
Monkey pic distorted
In the case, we've distorted it by making every other pixel black, but other transforms could include blurring, overlaying a watermark, reducing the size etc. The point is to get it to a state where it's still obvious what the content is, but no longer valuable or able to be converted back to its original form.
3. We AES encrypt the original image and embed it in the EXIF metadata of the distorted image
Monkey pic with EXIF data
Any EXIF field that contains binary data and doesn't have a size limit would work. The AES key that we used for encryption is returned to the user. Responsibility for secure key storage is currently on them. We heard you like monkey pictures, so we put a monkey picture in your monkey picture.
4. We upload to IPFS
Monkey pic on IPFS
Done using tatum.io's REST API, leveraging nft.storage from Protocol Labs for free storage on the IPFS.
5. User passes the AES key into our demo site to view the real image
Monkey decryption screenshot
6. NFT Minting
Currently disabled due to gas complexities, but automatically mint an NFT using tatum.io's NFT Minting endpoint.

Demo

Future Enhancements