Project Details: Implementation/Analyses of RSA Purpose To demonstrate understanding of RSA and its resistance to cryptanalytic attacks. Introduction When one transmits data over a packet-switched network, like the Internet, a packet sniffer at any node along the transmission path can detect packets with potentially useful information. Unfortunately, some of this information (for example, credit card numbers or other private information) is most useful to people with dishonorable (and often criminal) intentions. As commerce over the Internet - and other vulnerable long-distance networks - increases, this problem becomes more critical. Private data stored on a computer that's accessible over a network is also vulnerable One solution to this problem is to use so-called "traditional" encryption techniques, the same key is used for enciphering (or encryption) and deciphering (or decryption).The key is typically a large number that is used to mathematically transform the [url removed, login to view] problem then becomes the secure transmission of the key itself. One solution to this problem is to use two different keys-one for encryption and the other for [url removed, login to view] could then send her encryption key to Bob, who could use it to send an encoded message back to [url removed, login to view] Alice keeps her decryption key private, no one who intercepts the message will be able to decode [url removed, login to view] fact, Alice could make her encryption key publicly available, so that Carol, David, Egbert, or anyone else who wants to do so can send her an encoded [url removed, login to view] long as she keeps her decryption key secret, no one else will be able to read messages meant only for [url removed, login to view] this reason, this type of system is called a no one else will be able to read messages meant only for [url removed, login to view] this reason, this type of system is called a public-key encryption system. Often, the encryption key is called the public key,and the decryption key is called the private key RSA is one of public-key encryption systems
Requirements Implement RSA using C/C++. You will need to find two large (at least 100-digit) prime numbers p and q to generate the modulus for RSA. Also, show that a 50-digit (167-bit) key can be broken within a week. Since n is known to be the product of two prime numbers, factoring this is sufficient for cracking an RSA secret key. What are the average and worst-case times to factor large (e.g., 40-digit) integers? What makes the times better or worse? You will need to implement the following functions: § CreateKey - Generate RSA public and secret keys, using a 100-digit prime number generator. § Encrypt - Take a plaintext perform RSA encrypt on it § Decrypt - Take a ciphertext and perform RSA decrypt on it § Factor - Implements a factoring heuristic to factor large (in excess of 50-digit) numbers. Grading A perfect score depends on if you adequately implement the following: 1) Finding and multiplying two hundred-digit prime numbers to generate a 200-digit RSA public key and a corresponding secret key. 2) Encrypting, using the public key, and decrypting, using the secret key, a sample message. To show that the algorithm is implemented properly, it is sufficient to show that E(D(m)) = D(E(m)) = m. 3) Write a program for factoring large numbers using some factoring heuristic. Determine the average and worst-case times for factoring 40-digit keys. Tell what variables affected these times. 4) Show that a 50-digit (167-bit) key can be broken within a week. 5) Tell how secure the RSA public-key crypto-system is according to the results from 3). 6) Supply any other conclusions you can make from this exercise. Note: The length of the key accepted in the unix environment in my school is 32 so we have been told to put the key in an array.