# RSA asymmetric key encryption protocol ### what is encryption ? we want to send message to recepient without revealing it to the network ### what does is it mean by asymmetric key ? it means there are two keys involved in the encryption protocol, one is the public key and other is called the private key ### algorithm details ### Short idea - let p and q be two very large prime numbers, and N = p*q - since two primes are distributed apart by N/logN gap it shouldn't be computationally hard to generate these - phi(N) be the euler totient function - we know that a^(phi(N)+1) = 1 (mod N) - i.e we know a^(k* phi(N)+1 ) = 1 (mod N) - if we could break k.phi(N)+1 into two smaller numbers c & d then we could use it for decryption and encryption ### Long idea - Let M be the message encoded as a single number less than N - we call N the modulus and let's say M and N are relatively prime, this can be ensured by picking N as prime - By euler's theorem we can say that M^(phi(N)) = 1 (mod N) - let us choose a random number e, then M^e is the encrypted message - here (e, N) are known to the public - let d = e^(-1) (mod phi(N)) - that is e.d = 1 (mod phi(N)) - so now to decrypt a message we just have to raise M^e to d . i.e the actual message M = (M^e)^d mod N - the above holds true because since e.d = 1 mod phi(N), M^e.d = 1 mod N - a^b^c mod N = a^ (b^c mod phi(N)) modN (you might remember this from some cp problem) - phi(N) = (p-1)*(q-1) Usually p = 2^16 +1 = 65537