Skip to content

Jaboc Secure Chat Program

Hi everyone! Over the last few weeks I’ve been working on writing a secure chat program for fun and educational purposes. I wouldn’t recommend using it if you’re serious about security, since it was written by a high schooler rather than a team of qualified mathematicians/computer scientists/cryptography experts, but if you’re interested in how a secure chat program would work, I’d definitely recommend taking a look at the source code or downloading the program. If you find a security issue or a bug in my program, I’d definitely interested to hear it! Feel free to leave it in the comments or email me.

Download

You can download the source code on Github at https://github.com/AgentD1/SecureChatProgram. You can also download a jar file for Java 11 here: https://jaboc.tech/Blog/SecureChatProgram/ChatProgram.jar This should work on any operating system with Java and any Java version >= Java SE 11. I’ve tested it on Windows with Java SE 14.

Getting the Program to Work Properly

If you want to be able to accept incoming connections, you will need to forward a port. The default port for the program is 1273, but this can be changed to anything between 1000 and 65535. If you don’t want to forward a port but still want your friends to be able to chat to you, you can install a VPN program like Hamachi.

I wrote this in JetBrains Intellij IDEA and I used the IDEA UI designer, so to run the source code, you will need to either be using IDEA or have the UIDesigner core package installed somewhere. It can be downloaded here: https://github.com/JetBrains/intellij-community/tree/master/platform/forms_rt. This won’t be a problem if you use the Jar file, since the UIDesigner package is in it.

Security

This chat program is peer to peer, which means that your data doesn’t go through a central server. It uses a Diffie-Hellman key exchange to securely share an encryption key over potentially insecure networks. It uses AES encryption to encrypt and decrypt your messages. I think it’s pretty secure, but don’t use it for your spy ring or whatever just in case.

Screenshots

Choosing a name and port
A productive (and secure) conversation with another human that isn’t me. I have friends, I promise.

Note About Narwhal Simulator

This is about my ongoing series about developing Narwhal Simulator. If you don’t follow it, this section won’t interest you. I’ve decided to start releasing my posts every Sunday at 10pm (22:00 for people who can count over 12) instead of on Tuesday because it better aligns with my new school schedule. I know it’s been a while since my last post, so you can hopefully expect next weekend’s post to be pretty cool. School is a lot of work, so don’t set your expectations too high.

Thanks for reading all the way to the bottom! See you later!

Leave a Reply