Hi. In this and the next model, we're going to study cryptography. Cryptography, in simple words, is a science about sharing secrets in such a way that no one can learn those secrets other than the parties involved. But, of course, all this not just about childish games, and almost everyone uses some type of cryptography everyday for private communications via cell phone, e-mail, messengers, for secure money transfers, for example, to pay for an online course, for online commerce, for secure authorization in some online services, such as social networks or Coursera, and for software installations so that when you install some program on your computer, you can trust the provider of that software and to check that this is actually the provider of the software and use a kind of digital signature. And that digital signature also uses cryptographic algorithms so that you can actually check that this is the trusted party who provided the software and not some malicious person who wants to install a virus on your computer. So the model we're going to use is that two parties called, typically, Alice and Bob who want to securely communicate some secret information, but there is always someone who is trying to eavesdrop on that connection. For example, some secret agent called Mallory, or this person is typically called Eve in cryptography for eavesdropping, who taps on the wire or taps on the radio signal and tries to get the information which flows from Alice to Bob and back. But if we, somehow, make a cipher out of that information, we can hope that Mallory or Eve cannot decipher that information and get the initial message that Alice wanted to send to Bob or vice versa. And a common way to do that is that we all use is Alice and Bob should have some shared secret code so that Bob, if he wants to transfer a message like, Hello Alice, he can encrypt this message using the secret code, and after encryption, this message starts to look like a sequence of random numbers and letters and bits, and nobody can understand what's there. And then Alice can decrypt this message using the same secret code. And then she can understand that Bob has just sent her a message, Hello Alice. But there is a problem with this. The problem is if you use the same secret code many times, people around can actually guess what it is, and some examples is from your childhood. For example, you maybe had a secret code with your friends when you just changed the words to their opposites, and you talked to one. There are some grownups using those opposite words, but then, actually, they were understanding what you're saying after a few minutes listening to a secret code. Another way is to replace some words with some other special words or original letters. This is an example of an ancient Greek cipher called Caesar cipher. But all these can actually be broken using statistics if there are many, many examples of encrypted messages. And so you actually need to change your code pretty often. One significant example of this is what you could see in the movie called The Imitation Game about World War 2. One of the Nazis used ciphering machine called Enigma, and it was very complex and had a very complex cipher, and more than that, they changed their code every day during the war. But the allies, led by Alan Turing, could still break the cipher because during the day, the Nazis sent many, many messages encoded by the same code, and then Alan Turing basically invented a computer which could go through all possible combinations of the Enigma machine and try to decipher some of the intercepted ciphertext. And if the resulting plain text message looked like plain English, then it should be the code. Otherwise, it looked like still some random sequence of bits and letters and numbers. And so the computer went through all the possible combinations in a brute force, and in some day, it was fast enough to recover the code. So one should really use different code for each communication, but that can be a problem because how do you even share the secret code itself? This is also some communication, and the eavesdropper can get these communication while he is listening. So what if you're communicating not just to a person standing next to you, but you are communicating from different continents, and you need a new code for each communication? What to do? So one solution for this from the cryptographic science is called public key cryptography, and we're going to study it in the next module. But the basic idea is that every party generates two keys: a public key and a private key. So both Alice and Bob have their own Alice's public key and Alice's private key. And Bob also has a public key and a private key. And then to send a message, for example, from Alice to Bob, Alice can use Bob's public key which is known to everyone. She uses this public key to encrypt the message and then Bob uses his private key to recover Alice's message. And in that way, they share some information that only both Alice and Bob know but no one else can know at all. And symmetrically, if Bob once send a message to Alice, he uses Alice's public key to encrypt this message. And this message can be Bob's private key, and then Alice can decipher this message using her private key, and then they both will know Bob's private key. And then they can use it for their regular cryptography with the secret code that they've shown you on one of the previous slides, which is called a symmetric cryptography. And then when they already have a shared secret code, no one can actually decipher the messages going back and forth between them, and that's already secure. So cryptography is a science about sharing secrets in such a way that no one can eavesdrop or change your messages on your behalf so that no one notices. And this is used for authorization and for making sure a person cannot deny having send the message. And millions of money transactions use encryption everyday. And the particular kind of encryption that we're going to study in the next module called RSA encryption is arguably the most frequently used program in the world. So in this module, we're going to study some tools for cryptography, some building blocks. And the next module, you're going to study, actually, the keys and the secure ciphers and also how to break them if they're used incorrectly.