CS Principles Encryption Project Plan Last updated: 02/10/2014 Software Engineer(s): Ada Lovelace & Alan Turing Problem A software solution is needed for secure communication between you and a friend. Requirements The software must require no special knowledge of encryption by the user and have a clean, attractive and easy to use interface. The software must use a robust encryption system able to withstand attempts at interception and code breaking; it may be poly alphabetic or RSA numeric style or something you come up with that s equivalent. Keys and other settings must be able to be changed easily on regular basis. The software may be mobile or stand alone. The software must be documented and easily extended by other programmers. The software is needed in 12 days time. Software Description We proposed to create a Simple Secure Word Processor too using the Python programming language. For our encryption system, we will use a substitution cipher with single key at least 20 characters long. The user will be prompted to enter the key first. The user will be asked to re enter they key if it is not 20 or more characters. Duplicates will be removed from the key and a single cipher alphabet will be built by appending the key in front of the remaining plain alphabet. Once the cipher alphabet has been made the user may then type a message. AS THEY TYPE, they will see their message displayed in both plain text AND cipher text. They will be given the option to save either form of the message to a text file at any time. Features like spell check and bolding or italic or font size will not be added unless time permits.
Rationale (Claim Evidence Reasoning) We believe the modified substitution cipher with single 20+ character key is the best encryption system for our software because it is superior to simplistic simple numeric shift Caesar ciphers and it will be easy for the user to understand. Our research of the code breaking technique of frequency analyst has show that this kind of cipher is vulnerable when the key is too short. When that happens it quickly becomes just simple alphabetic shifts that are easily broken. By making the key long (20+) when compared to the length of the alphabet we have insured strength. While more complex poly alphabetic cipher such as one using Tabula Recta would be stronger, the Tabula Recta is confusing to the user. Since our software will build the cipher alphabet for the user and display the both the plain and encrypted message as it is typed, the user will find it easy to understand and to use. Attack Plan for Learning and Software Development (with division of work) 1. We need to make sure we know what we are doing by reviewing the cipher and practicing it a bit. (Ada 1 day) 2. We need to learn the basics of writing a simple program in Python. (Alan 1 day) 3. We need to learn how to work with text in Python. (both of us 3 days) 4. We need to learn how to read input from the keyboard and display output to the screen in Python. (both of us 1 day) 5. We need to figure out how to read in the key and make sure it is the correct length. (both of us 1 day) 6. We need to figure out how to create the cipher alphabet (both of us 2 days) 7. We need to figure out how to echo what is typed to the screen (both of is 1 day 8. We need to finish, test, and debug as needed. (both of us 3 days) Learning resources we have found http://practicalcryptography.com/ciphers/simple substitution cipher/ http://www.learnpython.org/ http://www.codecademy.com/
Visuals (optional extra credit) Enter your 15+ character key: thedogissleepingupstairs With out duplicates your key is: thedogislpnuar Your cipher alphabet is: thedogislpnuarbcfjkmqvwxyz Word processing mode Type your message below and it the encypted version will appear under it as you type. Hit Ctrl+S to save to a file called message.txt. Plain text message: defend the east wall of the castle Cipher text message: dogord mso otkm wtuu bg mso etkmuo
CS Principles Encryption Project ` Plan Last updated: 02/10/2014 Software Engineer(s): Charles Babbage Problem A software solution is needed for secure communication between you and a friend. Requirements The software must require no special knowledge of encryption by the user and have a clean, attractive and easy to use interface. The software must use a robust encryption system able to withstand attempts at interception and code breaking; it may be poly alphabetic or RSA numeric style or something you come up with that s equivalent. Keys and other settings must be able to be changed easily on regular basis. The software may be mobile or stand alone. The software must be documented and easily extended by other programmers. The software is needed in 12 days time. Software Description I propose to create an Android App which can be used to encrypt a secret number using RSA style encryption. It will use the RSA formula e * d = Phi(N) * K +1 It will ask the user for two prime numbers so it can multiply them and calculate N. It will choose a random integer K that is between 1 and 10. It will calculate Phi(N) and display choices of e to the user. The user will enter e and d will be calculated. Finally the user will enter a secret number to encrypt and the encrypted version of the number will be displayed. Rationale (Claim Evidence Reasoning) We believe the RSA is the best encryption system for our software because it the formula is easy to compute but nearly impossible to break in a reasonable amount of time. Our research of RSA encryption has shown that while computers
can multiple two large prime numbers in factions of seconds, they can take hundreds a years to find the prime numbers through factoring. Attack Plan for Learning and Software Development (with division of work) 1. We need to make sure we know what we are doing by reviewing the RSA formula and practicing it a bit. (1 day) 2. We need to create our UI in App Inventor. (1 day) 3. We need to write a procedure to calculate the product of N and make sure the primes entered are not too big for the number data type in AI. (1 day) 4. We need procedures to generate K and Phi(N) and display them. (1 day) 5. We need to learn about nested looping in App Inventor. (1 day) 6. We need to figure out how to write a procedure to calculate and display the prime factors of a number. (3 days) 7. We need to finish, test, and debug as needed. (4 days) Learning resources we have found https://www.khanacademy.org/math/applied math/cryptography https://sites.google.com/site/appinventor/iteration Visuals (optional extra credit)