CypherChat is a cryptographic convenience tool which operates on the classic stream- cipher method of a Rotor Machine. While some associate this technology with physical machines (Hagelin, Enigma) of the early part of this century, a modern computer can be used to simulate a much more complex and secure Rotor Machine. Rotor Machines are fast, difficult to attack, and well suited to a character-by-character or byte-by-byte encryption channel, such as a private chat system or file encryption.
CypherChat serves both as a file-encryption tool and also as a private one-to-one private chat tool that encrypts/decrypts all the conversations. CypherChat permits you to chat with an associate over a TCP/IP network (such as the internet), enciphering all of the messages that travel over the network.
CypherChat uses a high quality (Marsaglia Fibonacci) random number generator, with a seed of 168 bytes from any file you choose, to establish an array of 256-element rotors (for byte stream encipherment). The array may consist of from 3 to 47 rotors.
The rotors act as lookup tables. When a byte is presented for encipherment, it serves as an index into the first 256-element rotor: a byte goes in and a byte comes out. The element at that position of the first rotor then serves as an index to the second rotor. And so on. The byte output of the last rotor is the enciphered result.
Following encipherment of each byte presented to the rotor system, the rotors are 'rotated' by an increment that is different for each rotor. In CypherChat, the rotation increments amounts are all relatively prime, ensuring that the rotors do not return to the same mutual positions for many many iterations of encipherment operations.
In a three-rotor system, the rotation increments are 7, 11, and 13. The rotors will return to their initial positions after 1001 iterations. This is useful for demonstration, but not advisable for use in practise.
In a eight-rotor system, the increments are 7, 11, 13, 19, 23, 29, 31, and 37. The rotors return to their starting positions after 14 billion iterations.
Suffice it to say that the repeat length of the 47-rotor system is *very* large.
The rotor system can be thought of as a polyalphabetic substitution cipher where each successive byte fed to the system is 'substituted' with a 'random' byte, and for which the 'alphabet' of 'random' substitutions changes with each byte that is enciphered and the alphabet does not often repeat.
A rotor system is a classical, or private key, system. No cryptographic system is secure against all means of compromise. You may wish to use public key systems widely available to exchange CypherChat private keys with your associates. It is wise practise to never use the same key (seed file) twice if you desire maximum security, and you may wish to pre-run the rotors by encrypting a file (while your chat associate decrypts a file of equal size) to pre-set the rotation indices of the rotor arrays.
1. Be sure you have the associated .dll files properly installed
2. Start CypherChat.exe by simply double-clicking.
Review the license terms on the preliminary software license field, and if you accept,
Two windows open:
1. CypherChat main GUI
2. DOS message display
CypherChat has a 'Status/Results' text display field that starts by showing the amount of time available in the time-limited demo version and a request that you create a key.
To create a key,
1. Select the number of rotors you desire using the drop-down menu selector
2. Click on the New Key button.
CypherChat will open a file requester; please select a file which CypherChat will use as the seed for the random number generator used to build the larger 'Rotor' key. When you've selected your seed file, CypherChat will build the rotor system and inform you of its progress in the Status/Results text field.
Once a key has been created, the E and D buttons labelled 'File Operations' will become available and you may proceed to file encryption operations.
To encrypt a file, click on the E button. You get a file requester, select the file, and CypherChat will encrypt it and save the result as a new file with the same name and file extension, but with an addition extension of .LUE . In other words, if you encrypt a file named HELLO.TXT, the result will be an encrypted file of the same size named HELLO.TXT.LUE.
Likewise, to decrypt a file, be sure you have built your rotors with the same key seed file used to make the original rotor set that encrypted the file. Just click the D button and proceed to select the file for decryption. The result will be a new file with an additional extension of .LUD . For example, if you decrypt the file HELLO.TXT.LUE you will get HELLO.TXT.LUE.LUD - which in this case should be identical to the original file named HELLO.TXT.
The more interesting application of CypherChat is for private encrypted communications between individuals over a public insecure network, like the internet.
CypherChat's GUI has a text field named Host IP and IP# Lookup where you may type in the fully qualified IP address of another person's computer on the network. For example, you may wish to communicate with someone who has an IP address of 18.104.22.168 (just an example). You may type that into the Host IP text field.
The Host IP text field also serves as a IP address lookup function, to help you identify your own IP address. If you are using a typical internet service, your IP number is different each time you dial in and get onto the internet. You may type your computer's name into the Host IP and IP# Lookup text field and CypherChat will show your IP# in the field just below (labelled IP Address).
If you don't know your computer's network 'name', just look it up using the Windows Control Panel's Network icon - your computer's name appears in the Identification tab.
Type your computer's name into the Host IP and IP# Lookup field and CypherChat will present your IP address in the field just below. You can then tell your associate your current IP address if they wish to use it to contact you.
Use the drop-down menu to select port # 2001, 2002, 2003, 2004, or 2005. When you do so, your CypherChat program will go into 'server' mode automatically and begin awaiting a connection from your associate on the same network socket port.
If your associate contacts you, you'll be the server and she will be the client.
CypherChat can work both ways, you may contact your associate or they can contact you. If you're a server, you just sit and wait for someone to contact you (on the port # you've chosen).
If you wish, you may initiate the contact. You must select a port # from the drop down menu of port numbers (2001, 2002, etc.). Your associate must have also selected the same one - her computer will be awaiting contact (see above, Being The Server) as a server and expecting contact on the port she selected. It is essential you both choose the same port number or you won't be able to connect.
The person who initiates the contact is called the client, the person who passively waits for a contact is the server.
First, select a port number. That will start CypherChat waiting for contacts in server mode, but you don't have to wait or function as a server - you may initiate contacts.
You will need to know the IP address of the other computer - the server's computer (the one you're trying to connect to).
Once you've selected a port number and wish to initiate contact (be a client) to someone who's awaiting contact (being a server, see above), you must do two more things:
1. Type in the other party's IP# into the Host IP field (and hit 'Enter')
Now wait a moment or two for the IP lookup function to be completed. You'll see a longer more complete version of the other party's IP address in the IP Number field below. Now,
2. Click on the Connect to Host button
You'll be informed of the progress of establishing the connection to your associate (who is being the server by simply awaiting your contact). The Status/Results text field will present messages indicating if your connection has succeeded or failed.
If the connection succeeds, you're ready to start typing into the bottom small text entry window and start exchanging encrypted chat with your associate.
There are two text windows at the lower part of the CypherChat GUI display. The bottom one is where you may type messages to send to your associate.
When you type a message and hit 'Enter', your message will be encrypted and sent to your associate over the network. Your message will also be copied up into the larger text display area and the little text entry window will be cleared, ready for you to type in a new short message.
When you receive a message from your associate, it will be deciphered and appear in your large text area display as well.
Your outgoing messages appear in your large text area preceded by a > character - so you can easily see your messages set apart from those that are arriving from your associate in the same display area.
NOTE: If you have not created a CypherChat key (see above), your chat messages will still be transmitted but they will be 'in the clear'. So you may use CypherChat as an ordinary one-to-one chat tool, or you may use it in a high privacy mode with rotor encryption.
NOTE: For CypherChat encrypted chat to work properly, of course, you and your associate must both use the same seed file to create your CypherChat keys. And you must not do a bunch of file encryptions and then start chatting as the rotor positions won't match your associate's (unless she performs an identical series of file decryptions). Encrypting files rotates the rotors and they must be synchronized with your associate's for the encrypted chat function to work properly. You may always quickly re-establish your initial key position after doing file encryptions if you wish - just create your key anew.
The party acting as server (the one who passively waited for a connection to come in) is the one who should click on the Close button to close the network connection.
Either party may click Close and their connection will be terminated, but if the server party does it, the network close will take place cleanly at both ends of the connection.
If the client party clicks the Close, the server party's connection may not automatically close. If the server clicks Close, both CypherChat programs will gracefully close their connections.
Additional enhancements to CypherChat are planned including the facility to pre-set rotor indices and save/load those values to freshly synchronize chat sessions.
Download a FREE Full-function time-limited demo version of CypherChat
Ordering CypherChat is easy!
Call 805 349 1104, 10AM to 5PM, California time