💖Inspiration💝

The inspiration for CiphyrAI originated from University of Chicago's Nightshade and Glaze image processing algorithms, which were adversarial programs designed to attempt to control generative AI and limit its propagation into social media and the modern zeitgeist as a whole. We wanted to create something that would be effective even after breakthroughs with image generation. CiphyrAI accommodates this by acting as an invisible watermark, which allows for the democratization of personal art protection and copyright.

⚙️What it does⚙️

CiphyrAI provides a way for digital photo attribution via watermarking images and our watermark reading algorithm using Luhn error correction codes, stenography, and AES encryption through TypeScript. Created a system wherein changes to pixels can be detected down to a 2x2 pixel grid across any image with a .1% false negative rate per grid square. This is unnoticeable to the human eye, but recognizable by our app to ensure attribution.

🧑‍💻How we built it🧑‍💻

We built it with React and Typescript deployed in Vercel.

🎢Challenges we ran into🎢

Typescript documentation is quite lacking and outdated with no publication dates for reference... hence our 6 hour detour to fix issues related to Typescript discrepancies around imports and modules 😅

🌐Accomplishments that we're proud of🌐

We're proud of our beautiful front-end and local visualizer for detected image changes. We're also proud and amazed at how well the algorithm to encrypt the images worked for that use case.

🧑‍🎓What we learned🧑‍🎓

We learned the troubles and tribulations of implementing a web-app with Typescript and know not to fully trust it's documentation without ample research to validate it's for the current documentation version since there's no publication dates on Microsoft's Typescript articles.

🗣️What's next for CiphyrAI🗣️

Given the immense learning we've had during the development of this app, we plan to re-develop this web-app utilizing Firebase for user account authentication, encoded image storage, and other useful functions. We truly see a use case in this idea and think it'd be very cool to see through our implementation as originally envisioned without compromising to time constraints!

Share this project:

Updates