This lesson focuses on the modern cryptographic systems that are used to
secure the Internet. It describes how the *Diffie-Hellman* algorithm solves
the *key exchange problem*, a crucial step in making the Internet possible.
Without the ability to securely exchange secret keys, it would be impossible to conduct
financial transactions over a network. As we shall see, it is the *intractability* of
solving a certain *one-way math function* that makes Diffie-Hellman possible.

It also describes the *Rivest-Shamir-Adleman (RSA)* *public key*
algorithm. In this case we'll see that it's the *intractability* of the *prime
factorization* problem that makes RSA possible.

The lesson concludes by describing the handshake that takes place between your
browser and a web server whenever a secure transaction is involved. Secure transactions
include accessing a Web page through the *HTTPs* protocol. Or exchanging
information through the Internet's *Secure Socket Level (SSL)*. As we will see
both *symmetric* and *public key* algorithms are used in this process.

The lesson will also describe the Internet's *trust model* -- i.e., a model
that uses *digital certificates* to ensure that your browser can trust Google or
Amazon when their servers share their public keys with the browsers.

The system that guarantees the security of the Internet is an amazingly complex and fascinating system that pulls together many of the concepts we've been studying in this course.

This video includes video clips from Brit Cruise's excellent explanation
of the *Diffie-Hellman key exchange algorithm*. You may wish to
pause the video where suggested to try the hands-on color-mixing demo
below.

This Web app provides an implementation of the *color-mixing analogy*
presented in the Brit Cruise video. You can select a shared public color and then your
own private (secret) color. When you click "Show Shared Secret!" the app will
display the secret color that it shares with you.

The app will also give you an opportunity to use the * hexadecimal
number system* that we talked back in Unit 2. Colors are represented
in an RGB system -- i.e., by mixing Red (R), Green (G), and Blue (B) primary colors
in varying quantities. The mixtures are represented by 6-digit hexadecimal numbers,
where the first two digits represent the amount of red, the next two represent the
amount of green, and the last two represent the about of blue. For example, pure
red is FF0000. In
this case FF is the maximum amount of
red (equal to 255 in decimal).
The hex number 00FF00 would represent
pure green.
If you mix lots of blue and green, 00FFFF, you should
get aqua. If you mix lots of red with some green,
FF8500, you should get
orange.

Give it a try. Just your hex numbers into the text boxes and click the "Show Shared Secret!" button.

**Reflection **

Answers the following questions on Google Classroom:

- Explain in your own words how public key encryption is not symmetric.
- Cryptography relies on
*open standards*- protocol or standard that is publicly available. Why are open standards necessary?

Posted in apcsp