private repo for my cs486 final project
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
CryptoChat.xcodeproj
CryptoChat.xcworkspace
CryptoChat
CryptoChatTests
Pods
Spring
.DS_Store
.gitignore
Podfile.lock
README.md
podfile

README.md

cryptochat

The app is fully packaged, so as long as you have xCode, you should just be able to download it, and open the workspace, and then you can run in it the top left corner with the play button, changing the device for a 2nd run if you want to have multiple simulators going at the same time to simulate the chat aspect. All the code I wrote is in the CryptoChat folder, with most of the crypto-related code in the Registration file, ChatsTableViewController file, and CreateChat file.

Whatsapp's End to End encryption, which is based on the Signal protocol by Whisper systems, was the inspiration for my encryption methodology. If you look at the whitepaper on their site(https://www.whatsapp.com/security/), I replicated their steps for generating the session - generating a master secret from the concatenation of multiple ECDH results. The ecdh pairs used were the user's identity key pair, an ephemeral key pair, and a sha256 hashed signed key pair, with the public keys being transmitted over Firebase. The initial chat setup takes place in CraeteChat.swift, after one user invites another to chat by their username. The subseqeuent matching(or inverted, depending on how you look at it), takes place in ChatsTableViewController. The messages of the chat themselves are encrypted with a 32bit aes256 key