Theta Pi Encryption System Manual 2. The general interface 2.1 The Main Menu 2.2 Enc/Dec options 2.3 What's going on when the thing is running? 3. ENCPROSB - the original algorythm 3.1 how to enter data and enryption codes 3.2 what happens 3.3 how to use encrypted material 4. ENCPROS1 - the cryptogram algorythm 4.1 How to get to algorythm 4.2 algorythm options 4.3 how to use output 5. ENCPROS2 - the simple shift 5.0 WARNING - this algorythm is for novelty purposes only and is not a secure algorythm 5.1 how to use this algorythm 5.2 how to use output 6. ENCPROS3 - the list encrypt system 6.1 how to get to this algorythm 6.2 overview of options 6.3 how enclist and declist works 6.4 how to use output 7. PICPROS 1 & 2 - graphical extensions to list encryption 7.1 what they are 7.2 what you need to do before using them 7.3 how to use them 7.4 how to use their output 8. ENCPROSP - another graphical extension to list encrypt 9. Credits, acknowledgements, etc. APPENDIX A - Writing your own algorithms and the ADK 2. The General Interface The general interface is what you will use to interface with most of the algorithms available for the encryption system. The bulk of it, however, is comprised in the program's main menu. To start using the encryption system, run NUENCODE, which is the main program. The encryption system will not work correctly if one of the other programs are run instead. 2.1 The Main Menu After the opening introduction screen, you will be faced with a menu called STEPS. It has six options: ENTER TEXT, GENERATE [A], ENCRYPTION, DECRYPTION, READ MSG/QUIT, and v1.0b. 2.1.1 the ENTER TEXT option This is the option to use to enter the text you want to encrypt or the encrypted text (or 'string') that you want to decrypt. Especially for encrypted text, the characters must be entered exactly as written. After entering this command, you will be faced with a screen that looks like this: ALPHANUMERIC + .,-?/*+()¼uvw^e TEXT: The top two lines tell you mwhat you can enter into the input below. You can enter any standard upper-case alphabetical characters (using the ALPHA key) including the theta character, the numbers 0-9, and the other characters listed, including lower-case u,v,w, and e. You may enter any length of message you want, but it is inadvisable to enter anything greater that 255 characters while using some of the options, and if your calculator is fully loaded, too big of a message may cause a memory error. It takes 2.253 seconds to encrypt or decrypt each character. After entering your message, the program will display how many characters the message it and how long it will take to encrypt it. 2.1.2 the GENERATE [A] option This is used to genrate sets of encryption keys for the standard encryption algorithm, and creates 20 different sets in [A]. More on this later. 2.1.3 the ENCRYPT and DECRYPT options Once you are ready to run the program, choose ENCRYPT for encrypting your regular text and DECRYPT for decrypting an encrypted string. Note that you must have entered your text before using these options. 2.1.4 the READ MSG option This option exits the program. upon exiting, you will see this display: COPYRIGHT 1998 ؽ SOFTWARE a string of text The string of text is either an encrypted stirng or your decrypted message, depending on which option you chose. If it is longer than 16 characters, there will be a ... at the end of it. Use the <> keys to move back and forth through the string. 2.1.5 the v1.0b option This displays product and contact information. 2.2 Encryption and Decryption options When you choose either ENCRYPT or DECRYPT in the main menu, you will be presented with three options: ENTER VALUES, USE MATRIX, or CODES IN ALG. If you are using the standard or simple shift algorithms, you would choose one of the first two options to define your encryption keys. If you are using the cryptogram or list encryption programs, however, who use their own encryption keys, you would choose CODES IN ALG. to use their internal coding systems. When you choose the ENTER VALUES option you will be asked to provide four values: the + offset key, the - offset key, the instance addl, and then enter either 3, 5, or 7. you can enter any value between 1 and 52 to the first three values, but remember what they are. You will have to use them the same way if you want to decrypt your message later. The second option, USE MATRIX, lets you choose a set of pre-generated code keys if you previously used the GENERATE [A] option. You can choose between 1 and 20, and the program will display the keys before encrypting/decrypting. It is best to write down and verify these keys that just writing the number of the matrix code you used, in case the matrix becomes corrupted. The values should look like this: CODES: {17 27 12 3} 2.3 What's going on? As soon as you finish choosing your options for encryption or decryption, the display clears and is replaced with the string LOADING TEXT -, with a number counting slowly upwards below it. What the program is doing is taking your string and converting it to a list of numerical values, which can be manipulated easier. After a while, another menu will come up. It looks like this: ALGORYTHM? STANDARD CRYPTOGRAM SHIFT LIST ENCRYPT AUX 1 AUX 2 AUX 3 From this menu, you can choose which algorith you want to use: the STANDARD, original algorith, the CRYPTOGRAM creator, the simple SHIFT algorythm, and the secure LIST ENCRYPT algorithm. In addition, AUX 1-3 are slots for additional algorithms that you can either develop yourself or download from my website as they are created. For more ionformation on these, see Appendix A. After choosing your algorithm, the screen will look something like this: CRYPTOGRAMMER v1 By ؼ SOFTWARE ENCRYPTING - ## When you see this screen, the particular algorithm is manipulating the list of numebr to encrypt the data. After this is finished, the string RELOADING TEXT - and another number will pop up. While this is displayed, the program is taking the now-encrypted values and turning them back into a text string. When the process is complete, the following will be displayed: DONE MESSAGE STORED IN Str1 Hitting enter will take you back to the main menu, where you can use the READ MSG option to see the contents of your message. 3. ENCPROSB - the original algorythm This subroutine is the original algorythm of EncPRo Alpha. It is tried and true, is relatively secure, and you only have to remember 4 numbers at the most for encrypting and ecrypting your message. 3.1 how to enter data and enryption codes Using the explanations of section two, input your data and encryption keys. Be sure to fill in all sections exactly as you want them to appear. 3.2 what happens After entering your codes, the program will take you to the algorithms menu. Select the STANDARD option, and the program will do the rest. Using your keys, the algorithm shifts certain characters up or down based on their position in the list. 3.3 what to do with the output When you exit the program, your encrypted string will be displayed. You must write it down letter for letter if you want to use it again, along with the encryption codes. If you do not want them on the same piece of paper, write them down in a safe place. You can use the same codes for many messages or a different code for each one. AN EXAMPLE: Let's take the text "GREAT SOULS SUFFER IN SILENCE" by Johann Christoph Friedrich von Schiller. After entering, the program tells us that we have 29 characters, and that it will take 65.337 seconds, or a little over a minute, to process. Next, we go to encryption and encrypt with the values {13 34 28 3}. After loading the text, we choose STANDARD from the algorithms menu, and watch it finish encrypting. After we use the READ MSG option, we get the string T9)T5¼46I34¼4-¼YRLM0BS4CYXBVR. There you have it, your first encrypted message! Now you try it: decrypt the string 67+-2ØE-253XP*9YwT7/E6 using the codes {30 33 23 7} to read a famous quote by Joseph Patrick Kennedy. 4. ENCPROS1 - the cryptogram algorythm This algorithm, while not exactly an encryption program, creates cryptogram word puzzles automatically. Instead of sitting around with a pen and paper assigning letters and shifting each character by hand, now any quote, famous or otherwise, can be turned into a publication-quality cryptogram. A cryptogram, for those who don't know, is a puzzle where each letter corresponds to a different letter in the alphabet. 4.1 How to get to algorythm Enter your quote. Since this program has its own internal shifting codes, use the CODES IN ALG. option under ENCRYPTION. NOTE: THIS PROGRAM CAN NOT DECRYPT CRYPTOGRAMS. Remember to choose CRYPTOGRAM in the alogrithms menu. 4.2 algorythm options There are two options: AUTO and MANUAL. Manual is for those people who insist on assigning which letter corresponds to which painstakingly by hand. By using this, you will enter a letter for each letter of the alphabet that the encrypted version will correspond to. It is error-correcting, and luckily won't allow you to assign the same letter to two different alphabet letters. Auto will do all the work for you, and spit out a nice cryptogram. 4.3 how to use output This program can only detect the letters A-Z and Ø. All other characters will remain as is. To generate a clue, compare your original quaote to your cryptogram and find which letters correspond to the plain-text version. AN EXAMPLE: For a fun addition to our website, we are going to include a cryptogram. For this one, we are going to use the quote "THE HISTORIAN IS A PROPHET IN REVERSE - FREDERICH VON SCHLEGEL." It is 62 characters long and will take a little over 2 minutes to encrypt. We encrypt it using CODES IN ALG., and choose CRYPTOGRAM from the algorithms menu, then choose AUTO to automatically generate the codes. When the encryption is finished, we get the string "DAV AXODRMXHT XO H LMRLAVD XT MVEVMOV - QMVZMXIA ERT OIAUVYVU." Then, to get our clue, we compare the two and find that M in the cryptogram is the same as R in the regular version. Then we write the output in proper cryptogram format like this: "DAV AXODRMXHT XO H LMRLAVD XT MVEVMOV" - QMVZMXIA ERT OIAUVYVU Hint: M equals R And there it is - FUYN CJNHD RNFXDUZNOL (hint: U equals O)! 5. ENCPROS2 - the simple shift This is another type of extremely simple encryption algorithm. It simply shifts letters of the alphabet up a certain number of characters. Another name for this algorithm is Caesar's Code, and it is relatively easy to crack. Therefore, do not use it if you do not want other people to read it. 5.1 how to use this algorythm Use the same procedure as you did for ENCPROSB, but only the + OFFSET counts, as it is the amount of characters to shift up by. The rest of the values have no meaning and you can fill them in however you want to. However, the + OFFSET must still be between 1 and 52. Remember to select the SHIFT option in the algorithms menu. 5.2 how to use output Write the text as you would normally. Make sure that you remember how much you shifted it by so that you can decrypt it again. AN EXAMPLE: "IT IS THE NEWSPAPERS DUTY TO PRINT THE NEWS AND RAISE HELL" shifted up by 8 would be "QB QA BPM VMEAXIXMZA LCBG BW XZQVB BPM VMEA IVL ZIQAM PMTT." 6. ENCPROS3 - the list encrypt system This is by far the most secure encryption system in the entire package. Instead of just an algorithm, this system encrypts each character with a unique shift, meaning that without the list of encryption codes, there is absolutely no way to undo this kind of encryption, because each letter could stand for 52 others and therefore an infinite number of messages. Can work for any message under 255 characters, or encrypt one larger message in parts. Works with all 52 usable characters. 6.1 how to get to this algorythm Write your message as usual, then choose CODES IN ALG. and choose LIST ENCRYPT from the algorithms menu. If you chose ENCRYPT, you will see a menu with a number of options. If you chose DECRYPT, then it will run automatically with the pre-installed list. NOTE: if you encrypted a file and wrote the numbers from the list down, set List 5 to the right size and enter the numbers sequentially. If you used another method of securing the list data, read on. 6.2 overview of options The options that are displayed in the list encrypt menu are: Gen. List, En/Decrypt, Enc. List, Dec. List, Wipe List, and Info. REMEMBER THAT YOU CAN ONLY GET HERE BY USING THE ENCRYPT COMMAND. 6.2.1 Gen. List This command prompts you for how many characters long the list should be (as many or more than what you are trying to encrypt), and then generates a list of random shifts. It then encrypts your data. To generate your own, set the dim() of List 5 to your desired length, then enter values from 1 to 52 in each of the entries. 6.2.2 En/Decrypt Use this option if your list is already defined and you just want to encrypt the data. 6.2.3 Enc. and Dec. List This encrypts or decrypts your list codes into text strings with ENCPROSB. More on this later. 6.2.4 Wipe List Erases the list codes. You should save or back up these codes (with encryption or otherwise) before doing this, or lose all hope of ever decrypting your data. 6.2.5 Info Tells you how long the current list is, and how long your text string is. The list length must be greater than or equal to the string length. 6.3 how enclist and declist works Enc. and Dec. List are a method of securing your list codes for transfer. While they are only as secure as ENCPROSB, most people will not be able to distinguish the encrypted lists from a standard string of encrypted text. If you decrypt a list normally, however, it will end up looking like random characters. To encrypt a list: Enter a few characters of random text into the text entry, then choose encrypt and CODES IN ALG. Choose LIST ENCRYPT. Go to Enc. List and enter your 4 code values like you do normally in ENCPROSB. The program will then encrypt as if it were running ENCPROSB, but the output string is the encoded list. To decrypt a list: Enter your encrypted list string into the text entry, then choose encrypt and CODES IN ALG. Choose LIST ENCRYPT. Go to Dec. List and enter your 4 code values from before. It will run as if you had run ENCPROSB, but the output will just be random characters. However, the encrypted list has now been decrypted and is ready to encrypt or decrypt your text. 6.4 how to use output The output is similar to the type of output created by ENCPROSB, but is much more secure. Make sure you do not get the two types mixed up, and remember which encrypted list goes with which encrypted text string. AN EXAMPLE: I have the encrypted string [BFHB8.We] which has been encoded using list encrypt. The list, in turn, has been wiped, but not before being encrypted with the values {14 27 35 7}, resulting in the string [wLDH((ev]. To start, we boot NUENCODE and enter the string for the encrypted list, then encrypt with CODES IN ALG. and choose LIST ENCRYPT. We go to Dec. List and enter our code numbers. ENCPROSB starts, then gives us the string [8,*73SCW]. These are just random characters, but what you can't see is that the list has been reloaded. Now we start the program again, this time entering our string of encrypted text. Then we choose DECRYPT and CODES IN ALG., and then LIST ENCRYPT from the algorithms menu. The text string will automatically decrypt, leaving you with the string [STRTEST1], or STRing TEST 1, the original message. 7. PICPROS 1 & 2 - graphical extensions to list encryption Another way of encrypting your lists for safekeeping. 7.1 what they are the PICPROS system is a method for securing your lists, by transforming the list values into a seemingly random Pic file, Pic3. However, in actuality, this picture can be read and transfromed back into list data. This method of securing lists means that you can send it as an image to others instead of using a randomized text string. Just download it with your link onto your computer and use the Pic<>PICT converter, and then you can transport it as an FTP or E-mail attachment. 7.2 what you need to do before using them You must have a previously created code list in List 5, no larger than 95 entries. 7.3 how to use them To use this feature, open PICPROS1. This will give you a menu with 3 options: ENC. LIST, DEC. LIST, and MAX. LENGTH. Enc. List will take your list and convert it to a Pic file, while Dec. List will take the pic file you have stored in Pic3 and convert it back to a list of codes. Max. Length is just a reminder to keep the lists under 95 characters. All options will run automatically without further input. 7.4 how to use their output Upload the Pic files to your computer, and save your lists as graphical data. Or, keep a popular list hanging around while freeing up the actual list for other uses. 8. ENCPROSP - another graphical extension to list encrypt This creates both a unique 63-character list and a set of pictures to go along with it. Not as secure as the previous type, but the pictures look much more attractive and gather less suspicion, as they look like pictures that other games and screensaver programs might generate. ENCPROSP is completely automatic. As soon as you run it, you are faced with two options: READ a pre-existing picture set, or WRITE a new picutre-and-list code pair. Make sure the program has completed running before trying to encrypt with this code pair. This program uses both Pic1 and Pic2. 9. Credits, acknowledgements, etc. The ؼ Encryption System and all accompanying documentation © David Kibrick Parts of ؼ © 1998 Most of ؼ EncPro and documentation © 1999 Written entirely on the TI-83, converted to computer format by TI Graph Link 83 software. Rom Version 1.0600 Total application size: 7473 bytes The author would like to thank: My computers, calculator, math teachers for not getting too mad, Duracell Ultra batteries, my parents for encouragement, my brother for trying to carck all of my algorithms in vain, the Texas Instruments corporation, various brands of crunchy tortilla pieces and sugary carbonated beverages, CD93 Santa Cruz for helping me not to concentrate too hard (until I turned it off), 7-11, my goldfish for not caring about this whatsoever, and, last but not least, to the 4.3 billion other people who did the same. Contact: thetapi@idlecircuits.com APPENDIX A - Writing your own algorithms and the ADK WARNING: THIS SECTION IS FOR SERIOUS TI PROGRAMMERS ONLY. IF YOU HAVE NO IDEA WHAT A BYTECODE INTERPRETER OR A COMMAND-LINE INTERFACE IS (DESPITE THE FACT THAT NEITHER OF THEM OCCUR IN THIS SECTION), THEN LEAVE NOW! Step One: Boot up the Æon Flux Spacial Interface System on your SGI, and wait for the goedesic coordinate mip-mapping matrices to coincide. Then, whip out your trusty TI-83, and hit <MODE> <ALPHA> <S>, and then, after verifying your ROM version, press enter. Step Two: If you tried to make believe you understood all of that stuff, but only got the explicit TI instructions and entered them, then you're one: a complete idiot, and two: royally screwed. Anyone who knows anything about computers would know that the fist part is almost totally gibberish, and anyone who knows about TIs knows that if you follow the instructions that I gave you, then you have just started a calculator self-test and erased all of your programs and other data. So, if your calculator is now slowly counting its way up to 1000, skip the rest of this before you do something really stupid. And now, the fun part. Remember those AUX commands way back in Chapter 2? Well, now they are coming back to haunt you. By having these commands, you are now able to write your very own encryption and decryption algorithms! The following is the ADK - or Algorithm Development Kit - which is basically a set of rules you have to follow to create your own algorithms. First off, your program must be named AUXENC1, AUXENC2, or AUXENC3. These program names fit into Auxiliary slots 1, 2, and 3 respectively. Next, the encryption bit. This bit is defined in List 2(1). If L2(1) is 0, then the user has selected encryption, and if L2(1) is 1, then they have selected decryption. Use this to send the program to the appropriate areas depending on the mode. All regular encryption programs should also be able to decrypt data. The data set you are working with is stored in List 1, and the data is all integers between 1 and 52. You may manipulate it in any way you want, except that at the end of your program all of the entries must be integers between 1 and 52. To facilitate decryption all of your manipulations to this data set must be able to be reversed. Finally, you can store your own codes in lists 4 through 6, but you can also use the ENCPROSB numbering system. List 3 contains the 4 control numbers; the first three are from 1 to 52, the fourth is either 3, 5, or 7. You may use these numbers however you wish. You may not write in [A], but you may write in any of the other matrices. Or, you can use the 80 code numbers in [A] to create an even larger algorithm. You should have a counter that goes up as the characters are encrypted, in this design on the screen (you should use ClrHome first): YOUR ALGORITHMvX BY YOUR NAME EN/DECRYPTING - ## (your counter display) Your algorithm must not use the Stop command, but it can use Return. Aside from that, it's all up to you. Good luck.