Skip to content

Latest commit

 

History

History
3 lines (2 loc) · 2.35 KB

project_synopsis.md

File metadata and controls

3 lines (2 loc) · 2.35 KB

Project Synopsis

Secure photo encryption, decryption, and distribution of these photos is not easily accessible to the everyday user. Hosung Lee and I are building a Python 3 package, and GUI that implements this package to solve this. The GUI allows users to see what can be done with the package, and its reusability. The GUI allows less tech-savvy users to use the program without having to implement the package. The package is there for more advanced users if they want to create a custom implementation. The classes inside the package are highly extensible and reusable. The program also works through command line input, and the package can easily be imported into any Python 3 project. The program was built as a local application, instead of a web application for increased security. The web application would need data sent across the internet, which can cause major security issues because it can be difficult to keep the data private. There is documentation for all the methods inside the package. The program utilizes a one time 128 bit AES key for each photo, known as a session key, and this key is encrypted with the 2048 bit RSA public key following the PKCS#1 OAEP scheme. PKCS #1 stands for Public-Key Cryptography Standards, and it is the first one in this group of standards. These standards provide a guide for how the RSA algorithm should be implemented. OAEP is optimal asymmetric encryption padding, which adds an element of randomness to the encryption and prevents partial decryption of ciphertexts. The encrypt method takes a photo, and returns an encrypted photo, which is an extended bitmap named “CryptoBitmap.” The bitmap has two header blocks: file header and info header. Alongside the info header, we added a custom header to store data relating to the encrypted photo. This header contains the encrypted AES session key and extra information for decryption. This allows users to send photos back and forth without having to keep track of a new private AES key created each use. Also, this solves the problem of securely sharing the private AES key because the user can share their RSA public key with anyone. The receiver of the photo uploads their RSA private key to the program, and the encrypted photo to the program. The program decrypts the image by decrypting the encrypted session key first, and then decrypting the image with this decrypted session key.