Image Cryptography application based on chaotic maps
A cryptography application for images based on chaotic maps
Report Bug
·
Request Feature
Nova’s idea is to become a software equivalent for a part of my research on hardware implementations of chaotic ciphers, it utilizes chaotic maps
and pixel by pixel encryption algorithms to cipher images.
I have already published part of my research if you would like to read more
CLA based Floating-point adder suitable for chaotic generators on FPGA on IEEEXplore
Double humped based image encryption system on FPGA (under review)
Nova currently implements three chaotic maps
Download the latset stable distribution for your OS.
See the attached gif above.
Step 1 ) Choose the desired image for encryption / decryption by drag-drop or clicking browse in the designated area.
Step 2 ) Enter the desired params for your choosen map as well as an output directory for the processed image.
Step 3 ) Press Encrypt / Decrypt and wait for your image to be processed. Once finished you will find the processed image in the output directory with a suffix of either _encrypted / _decrypted.
It is highly recommended to always turn on the resize option mainly because encryption performance is inversly propotional with the number of pixels an image has. The only time you need to disable resizing is when pixel information is critical but that will result in a much reduced perfomance.
Values choosen for each map must be valid see this section to learn more.
Make sure when decrypting to enter the exact same values used for encryption, any simple variation or mismatch will result in decryption not being successful.
One aspect of measuring the security of any encrypton is called key space analysis
which is simply the number of keys - permutations - that an attacker has to through in order to find the parameters your are using.
A map like the double humped map has three input parameters at 64 bits length yields it’s size to be 192 bits long which constitues a key space of keys in total which is large enough to resist any kind of brute force attackes. (infact
is larger than the total number of atoms in our galaxy!)
Of course there are other aspects of measuring security for an encryption system such as entropy, key sensitivity analysis, differential attacks … etc. For a thorough analysis of our Double humped map example, read this journal
Original | Encrypted |
---|---|
![]() |
![]() |
![]() |
![]() |
Each chaotic map has certain valid ranges that it can operate within. For successful encryption, you need to choose values such that the ouptut of the map will be chaotic.
Logistic map
Double humped map
exact chaotic regions will depend on , as an example for
.
For the Henon map there is no way - as far as I have researched - to check wether the initial parameters will diverge to the attractor or infinity, therfore the encryption is stopped anytime the sequence diverges to infinity.
If you would like to develop a new feature or see how the code is running under the hood follow these steps.
Node
Install node from the offical mirror - this comes with npm
too.
Fork the project / Download
Install NPM packages
cd Nova
npm install
or to watch your files
npm run build
npm run watch
Test
Test to see that everything is working
npm run test
npm run start
I have implemented this project in c++ which runs from CLI and perofrms at 3 - 5 times the speed of this implementation in javascript. Check it out in this github repo.
GNU GENERAL PUBLIC LICENSE Version 2.