Title: A Gentle Introduction to Cryptography
1A Gentle Introduction to Cryptography
- Extended quote from Bruce Schneier's book,
Secrets and Lies. - Cryptography plays a role in computer security,
but buggy computer systems and vulnerable
communications are a reality that cryptography
has not solved.
2Quote from Eugene Spafford
- Using encryption on the Internet is the
equivalent of arranging an armored car to deliver
credit card information from someone living in a
cardboard box to someone living on a park bench.
3Outline of these lectures
- The general goals of cryptographic systems
- Vulnerabilities of cryptographic systems
- Two basic categories of cryptographic algorithms
- Symmetric
- Asymmetric (public key)
- Methods for sharing keys (including
Diffie-Hellman)
4Outline (cont.)
- Methods for ensuring data integrity (hash
algorithms) - Methods for authentication (digital signatures)
5The General Goals of Cryptography
- Confidentiality assuring that only authorized
parties are able to understand the data. - Integrity ensuring that when a message is sent
over a network, the message that arrives is the
same as the message that was originally sent.
6Goals (cont.)
- Authentication ensuring that whoever supplies or
accesses sensitive data is an authorized party. - Nonrepudiationensuring that the intended
recipient actually received the message
ensuring that the sender actually sent the
message.
7Basic Terms
- Encryption scrambling a message or data using a
specialized cryptographic algorithm. - Plaintext the message or data before it gets
encrypted. - Ciphertext the encrypted (scrambled) version of
the message. - Cipher the algorithm that does the encryption.
8Basic Terms (cont.)
- Decryption the process of converting ciphertext
back to the original plaintext. - Cryptanalysis the science of breaking
cryptographic algorithms. - Cryptanalyst a person who breaks cryptographic
codes also referred to as the attacker.
9More on Confidentiality
- Confidentiality means that only authorized
parties are able to understand the data
(authorized from the perspective of the party
that encrypted the data). - It is okay if unauthorized parties know that
there is data. It is even okay if they copy the
data, so long as they cannot understand it.
10Authentication
- How can we know that a party that provides us
with sensitive data is an authorized party? - How can we know that the party that is accessing
sensitive data is an authorized party? - This is a difficult problem on the Internet.
- Two solutions are
- Passwords
- Digital signatures
11Integrity
- This involves ensuring that when a message (or
any kind of data, including documents and
programs) is sent over a network, the data that
arrives is the same as the data that was
originally sent. It is important that the data
has not been tampered with. - Technical solutions include
- Encryption
- Hashing algorithms
12Nonrepudiation
- Ensuring that the intended recipient actually got
the message. - Ensuring that the alleged sender actually sent
the message. - This is a difficult problem. How do we prove
that a person's cryptographic credentials have
not been compromised?
13An Important Message
- In theory, some crytographic algorithms seem to
be EXTREMELY secure. - Vulnerabilities arise when systems administrators
do not deploy the encryption systems securely. - A fundamental rule DON'T CODE YOUR OWN
CRYPTOGRAPH ALGORITHMS. - Another rule When using a cryptographic library,
use the intuitive user interfaces provided with
those libraries.
14Message from Cryptlib Developer,Peter Gutman
- The major design philosophy behind the code
behind Cryptlib is to give users the ability to
build secure apps without needing to spend
several years learning crypto. ... The
important point is that anybody should be able to
employ them important cryptographic algorithms
without too much effort. ...
15Standard Algorithms areIncredibly Secure
- Using a 128 bit key for a symmetric encryption
algorithm, there are 2128 possible keys. - Even with the computing resources of the US
government, most of the software developers alive
today will be dead before the government could
break such an encryption Viega and McGraw
16Incredibly secure (cont.)
- Most security experts believe that 256-bit keys
are good for the lifetime of the universe (many
billions of years). - The problem is that encryption is just one link
in the chain of security. Encryption is a really
strong link in that chain, but one weak link
breaks the chain. - It is usually easier for the attacker to hack
your machine and steal the plaintext than to
break your cipher.
17A Simple Example
18A Simple Encryption Example
19Common Types of Attacks
- Known cipher attacks the attacker has the
ciphertext and she tries to decrypt the message
by generating all possible keys. - Rarely successful because the number of possible
keys is enormous. - Also, the decrypted message (for certain types of
data) may not be easy to recognize when it
appears.
20Common Types of Attacks (cont.)
- Known plaintext attack the attacker has both the
ciphertext and the plaintext. - Again, this is difficult because there are so
many keys, but the plaintext information may make
experimentation easier than in the previous case. - We are assuming that the attacker knows the
algorithm that was used for the encryption.
21Common Types of Attacks (cont.)
- Chosen plaintext attacks The cryptanalyst
introduces the plaintext into the system and then
watches for how that plaintext will be encrypted. - The Allies used this approach in WWII by sending
out false messages about allied troop movements. - Often the attacker will try to feed a planned
sequence of messages that would reveal the most
about the way in which the data is being
encrypted.
22Common Types of Attacks (cont.)
- Side channel attacks use seemingly incidental
information that can reveal important information
about the key being used. - Viega and McGraw mention DPA (Differential Power
Analysis) attacks on smart cards. A DPA attack
analyzes the power output from a processor
performing an encryption algorithm in order to
get information about the key being used by that
algorithm.
23Symmetric Cryptography
- Symmetric algorithms are used for
- Confidentiality
- Data integrity
- Even if an attacker captures the data, the
attacker will not be able to manipulate it in any
meaningful way.
24Symmetric Cryptography (cont.)
- Symmetric algorithms use a single key shared by
two communicating parties. - The shared key must remain secret to ensure the
confidentiality of the encrypted data. - The shared key problem is the main technological
challenge for this kind of encryption. - We will discuss solutions to the key exchange
problem a bit later.
25Figure A-1 from Viega and McGraw
- The way symmetric encryption works is shown in
Figure 1-A from Viega and McGraw. - The message and the key are provided as input to
the encryption algorithm. - The output is the ciphertext, which can then be
transferred over an insecure medium.
26Figure 1-A (cont.)
- On the receiver end, the secret key and the
ciphertext are inputs to the decryption
algorithm. - The output is the original plaintext.
27Symmetric Cryptography (cont.)
- The secret key must be shared securely.
Otherwise, the most sophisticated cryptographic
algorithm is useless. - One method of distributing the key is using the
sneaker-net. - Protocols exist for exchanging keys over an
insurecure medium, but care must be taken to
assure a good authentication process. - Asymmetric cryptography is a common method for
sharing keys.
28Symmetric Cryptography
- Two main categories of symmetric algorithms
- Block ciphers
- Stream ciphers
- Most well-known and well-studied symmetric
algorithms use block ciphers. - Block ciphers break up the message into
constant-size blocks and encrypt the code block
by block.
29Block Ciphers
- Typical block sizes are 64 bits or 128 bits.
- Messages are padded (with extra bits) to fit the
block size. - The simplest type of block ciphers work in ECB
(Electronic Code Book) mode. In this mode, each
block is encrypted separately, independent of the
other blocks (like in our simple XOR example).
30Block Ciphers (cont.)
- ECB block ciphers are not secure because given
plaintext is always encoded in the same way. - Thus, the attacker can look look for common
linguistic patterns. - These patterns can help the attacker to figure
out the algorithm and key being used.
31Block Ciphers (cont.)
- In CBC (Cipher Block Chaining) mode, blocks are
also encrypted one at a time, but the initial
state for each block is dependent on the
ciphertext of the previous block. - Thus, the same text will be encrypted in many
different ways. This makes it much more
difficult for the cryptanalyst to crack the
cipher. - CBC mode is the default mode for many block
ciphers.
32Block Ciphers (cont.)
- A variety of block cipher modes exist (in
addition to CBC) for making sure that repeated
plaintext is encoded in different ways throughout
the message. - These modes are the default for the standard
secure symmetric encryption algorithms (like DES).
33Cipher Block Chaining (CBC) Mode
- By adding gibberish into the middle of the
ciphertext, the attacker can interfere with the
decryption of a CBC encrypted message. - Two methods are used to defend against this kind
of gibberish attack - Encode the length of the message at the start of
the message or elsewhere to help the receiver
figure out if the message has been tampered with. - Use a cryptographic checksum (or hash) as a
signature for your message.
34Block Ciphers (cont.)
- The longer the message, the better chance the
attacker has of breaking the encryption. - Bruce Shneier says that a message would have to
be at least 34 gigabytes in length for a 64-bit
cipher before this would become a genuine risk.
35Block Ciphers (cont.)
- Two factors influence the security of a symmetric
block cipher - The quality of the algorithm (e.g., ECB mode
ciphers are less secure). - The length of the key (e.g., 64 bit blocks are
questionable, but 128 bit blocks are considered
more than adequate). - There is a classic trade-off between efficiency
and security.
36Security is Hard to Prove
- Demonstrating how secure a cryptographic
algorithm is remains an extremely hard problem. - The best test seems to be years of experience and
public exposure. - The one-time pad method (which has been used in
the military) is absolutely secure, but not very
practical because the key changes with each
communication.
37Extended Quote from Lecture Notes
- The two basic goals of a cryptographic algorithm
are (a) to make life difficult for the attacker
and (b) to produce algorithms that are efficient
both in terms of space and time. An algorithm
that is too inefficient to be used in practice is
of little value even if it were proven to be
highly secure ...
38Quote (cont.)
- It is fairly easy for the cryptography researcher
to design an algorithm that is secure against all
KNOWN forms of attack. It is far more difficult
to design an algorithm that will be secure
against types of attacks that are still UNKNOWN.
It is nearly impossible to predict new attacks
against block ciphers that will be manifesting in
future years.
39Quote (cont.)
- For example, Viega and McGraw state that many
people believe that the NSA has developed
sophisticated attacks against block ciphers that
they have not shared with the rest of the world.
40Block Size
- A 64-bit cipher is considered too small for high
security applications. According to Bruce
Shneier (back in 1995), an organization such as
the NSA could break a 64-bit key in under one
minute. - A 256-bit key is believed to be secure enough
that a computer made of all the matter in the
universe computing for the entire lifetime of the
universe would have an infinitesimal probability
of finding a key by brute force.
41Quantum Computing
- But, then there is always Quantum Computing ....
42Important Commercial Algorithms
- The most important symmetric algorithms from a
commercial point of view are - DES (Data Encryption Standard)
- 3DES
- AES (Advanced Encryption Standard)
43DES
- This has been a US government standard for many
years (although recently complimented with AES). - It uses a 64-bit key (actually, only 56 bits are
used for the encryption, the other 8 bits are
parity bits), so it is no longer viable. - Increased processing speeds (in recent years) are
making brute force attacks on DES more viable.
443DES
- Then, came the idea of using DES twice on a given
message. - A subtle form of attack was discovered which made
2DES no better than DES. - 3DES proved to have the properties that 2DES was
supposed to have. - 3DES is a viable and popular symmetric block
algorithm. - 3DES has one downside it is inefficient.
45DES According to Denning
46DES According to Denning
473DES
- Despite the fact that it is inefficient, 3DES is
considered a very good (and it is a very popular)
choice for encryption. - Several good implementations of 3DES are easily
downloaded off the Internet.
48AES
- The NIST (National Institute of Standards and
Technology) ran a competition for a new
encryption standard. - The winners were announced in October 2000. They
were Joan Daemen and Vincent Rijmen. Their
algorithm is called RijnDael or AES (Advanced
Encryption Standard). - AES is now an accepted federal standard and is
widely available in open source form.
Implementations are available in C and Java.
49AES (cont.)
- 3DES still has the advantage that it has been
studied (in DES) form for many years. - The guestimate is that AES will be a viable
encryption standard for the next 50 years, but
there could be some surprises down the raod.
50The Key Distribution Problem
- For symmetric ciphers, each pair of communicating
agents needs a unique key. - If there are lots of users, this creates a key
management problem. - Key derivation algorithms are used to generate a
unique key for each communicating pair. - If the master key for the key derivation
algorithm is compromised, you've got a major
problem.
51Key Distribution (cont.)
- Some have even attacked derived keys in a key
distribution system to get the master key. - Another approach is to use a key management
system that generates session keys for each
communication. Even for the same communicating
pair, the session keys will change from session
to session. - Kerberos, from MIT, is a highly regarded open
source computer security product that supports
symmetric key management.
52The Great Philosopher, Yogi Berra
- It is difficult to make predictions, especially
about the future.
53Asymmetric (Public Key) Cryptography
- Public key cryptography is an attempt to
circumvent the key distribution problem
completely. - As it turns out, asymmetric algorithms tend to be
very inefficient. - Their main use is in solving the key exchange
problem for symmetric cryptography.
54Public Key Crypto (cont.)
- In asymmetric cryptography, each user has two
keys a public key and a private key. - The public key is made public. For example, it
may be published on a Web site. - The private key must be kept secret. It is never
shared with anyone. - The security of the private key in public key
crypto is as important as key security in
symmetric crypto.
55Public Key Crypto (cont.)
- There is no key distribution problem in public
key cryptography. - Some people have compared public key cryptography
to a mailbox. Many people can put mail into the
mailbox (in effect, using the public key), but
only a postal worker with the appropriate key
(corresponding to the private key) can retrieve
the mail from the mailbox.
56Figure A-2
- Alice wants to send a message to Bob.
- Alice uses Bobs public key to encrypt the
message. - The encrypted message is sent over the insecure
medium. - Bob uses his private key to decrypt the encrypted
message. - No one but Bob knows the private key.
57Public Key Crypto (cont.)
- Public key encryption and decryption algorithms
tend to be incredibly slow relative to symmetric
key algorithms. - Public key algorithms tend to be about 100 times
slower than DES. - In general, encrypting large messages using
public key cryptography is not considered
practical.
58Public Key Crypto (cont.)
- The most important use for public key
cryptography is for solving the symmetric
cryptography key exchange problem. - Viega and McGraw say that using public key
cryptography is a more secure choice than using
key derivation algorithms. - SSL uses this strategy public key crypto for
sharing keys and symmetric algorithms for
encrypting the message.
59Rivest, Shamir, and Adelman (RSA)
- RSA is the most famous public key algorithm.
- RSA starts with picking two HUMONGOUS prime
numbers, p and q. Each of these prime numbers
contains hundreds to thousands of bits. - The two prime numbers remain secret (they are the
private key). - Their product, n p q, is the public key.
60RSA (cont.)
- The product (the public key) is used to encrypt
the message. - Only someone who knows the prime factors can
decrypt the message in a reasonable amount of
time. - The security of RSA is based on the difficulty of
factoring n into the prime factors p and q. - At this point in history, this is seen as a
difficult problem.
61RSA (cont.)
- RSA is still considered secure after twenty years
of use. - The big security problem is that some
implementations of RSA have been flawed and had
security problems of their own. - The software developer should use a well-tested
and highly-regarded implementation of RSA. - Never code your own!!!
62RSA (cont.)
- There are huge numbers of large prime numbers.
- There are approximately 10151 primes of length
512 bits or less. - One interpretation is that there are enough
primes of up to 512 bits to assign every atom in
the universe 1074 prime numbers without ever
repeating one of those primes.
63The Future of RSA
- The future of RSA is hard to predict.
- It depends upon what happens in prime number
factoring theory. - Not too many years ago, experts believed that no
one would ever have the resources necessary to
factor a 128 bit number. - Now, an organization with adequate resources, can
factor a 512 bit number in just a few months.
64The Future of RSA (cont.)
- Viega and McGraw recommend that you use no less
than a 2,048 bit key for data requiring long-term
security (ten or more years). - It may be that 1,024 bit numbers may be nearing
the end of their usefulness even for short-term
security. - The longer the key, the longer it takes to
encrypt messages using public key cryptography.
65Public Key Crypto Vulnerabilities
- Public Key encryption algorithms are more
susceptible to chosen plaintext attacks than
symmetric algorithms. - However, since public key is generally used to
encrypt small messages (like keys), plaintext
attacks are not a practical problem. - More significant is the man-in-the-middle type
of attack.
66Man-in-the-Middle Attacks
- Figure A-3 depicts a man-in-the-middle attack.
- First, lets consider this kind of attack in
terms of Alice trying to send a message to Bob. - In this kind of attack, Ted sends Alice his own
public key, misrepresenting it as Bobs public
key. - Ted is pretending that he is Bob when he is
communicating with Alice.
67Man-in-the-Middle (cont.)
- Ted sends Bob Teds own public key,
misrepresenting it as Alices public key. - Ted is pretending to be Alice when he
communicates with Bob. - Ted is intercepting all traffic between Bob and
Alice.
68Man-in-the-Middle (cont.)
- When Alice sends Bob a message, she encrypts it
using Teds public key (she thinks it is Bobs). - When Ted receives Alices message, he can decrypt
it. - Ted can then send Bob a modified or entirely
different message, encrypting it was Bobs public
key. - Bob decrypts the message, thinking it came from
Alice.
69Man-in-the-Middle (cont.)
- Figure A-3 depicts the situation in terms of a
client and a server. - The client (Alice) asks for the servers public
key so she can send secure information to the
server (Bob). - But, the client is not communicating with the
server. She is communicating with the attacker,
who sends her his public key.
70Man-in-the-Middle (cont.)
- Meanwhile, the attacker establishes his secure
connection with the server. - This gives the attacker access to any information
that the client sends to the server and any
information that the server sends back to the
client. - This kind of problem motivates the need for a
public key infrastructure (PKI).
71PKI
- The basic idea behind a Public Key Infrastructure
(PKI) is that a trusted third party certifies
valid keys. - Back to Bob and Alice. In this case, Alice would
receive Bobs public key through a trusted third
party, a certification authority (CA). - The CA would say, in effect Alice, trust us,
Bob is a dependable fellow and this is Bobs
public key.
72PKI (cont.)
- Obviously, this does not solve the matter of
trust (the security problem). - How can Alice be sure that she can trust the
so-called trusted authority? - One of the largest CAs at this point in time is
Verisign. - Verisign performs background checks on applicants
before issuing them a public key for a fee.
73PKI (cont.)
- Verisigns track record is not perfect.
- Several people registered with Verisign under the
name Bill Gates. - In March 2001 Microsoft announced that two false
keys with MSs name on them had been issued by a
CA.
74PKI (cont.)
- The problem of trusted identity, taken from Viega
and McGraw .
75PKI (cont.)
- Advice for developers from Viega and McGraw ...
76Cryptographic Hashing Functionsfor Data Integrity
- Cryptographic hashing functions are used to
ensure the integrity of data. - Cryptographic hashing functions are sometimes
called cryptographic checksums or integrity
checksums. - Hashing functions are also used for digital
signatures, which we shall discuss later.
77Integrity Checksums
- Since stuff happens, it is important to have some
means of detecting unauthorized changes to files. - An integrity checksum is a value that is computed
from the data that is being protected. - The integrity checksum is stored separately from
the protected data.
78Integrity checksums (cont.)
- The recipient of the data recomputes the checksum
from the data that is received and compares that
checksum to the value that was recorded
separately by the provider of the data. - If the original checksum and the recomputed
checksum do not match, then the data has been
changed in some way.
79Desirable Qualities for Checksum Computations
- The computation must depend upon every single bit
in the data, so that if even one bit is changed,
that will be reflected in the checksum. - The computation must be such that it would be
rare for two messages to have exactly the same
checksums. - The checksum should not reflect the original data
in any obvious way.
80Desirable properties (cont.)
- The third property implies that an attacker would
not be able to figure out how to manipulate the
data so that the cryptographic checksums for the
valid data and the corrupted data would wind up
being the same. Another way of stating this is
that it would be difficult for the attacker to
reverse engineer the checksum computation.
81Hashing functions
- Checksums are computed using hashing functions.
- Hashing functions are one-way functions. This
means that the ciphertext (i.e., the checksum)
cannot be used to reconstruct the plaintext. - The checksum (the ciphertext) is much smaller
than the plaintext.
82Hashing functions (cont.)
- Hashing functions provide a kind of digital
fingerprint. - When we take a fingerprint, we lose a lot of
information about the person. - Still fingerprints and checksums are useful
despite the information that is lost. - Checksums are sometimes called cryptographic or
digital fingerprints.
83Hashing functions (cont.)
- A checksum is sometimes called
- A message digest, or
- A message authentication code, or MAC
- The security of the hashing function is related
to the size of the resulting checksum (in bits). - Viega and McGraw suggest using hashing functions
that produce a checksum of at least 160 bits.
84Checksum Systems
- SHA-1 is a federal standard for computing
checksums. - SHA-1 does not use secret keys. The checksum is
computed with a public hashing function and needs
to be stored in a safe way. For example - On a secure medium an attacker cannot modify
- Encrypted on a completely separate medium from
the original data
85Checksum systems (cont.)
- SHA-1 uses a 160 bit digest.
- SHA-1 is known to be secure.
- Newer versions of SHA may have security problems
because they have not been as thoroughly tested
as SHA-1. - Tripwire is a checksum system that works with the
operating system to see if files have been
created, deleted, or modified in an unauthorized
way.
86Hashing Functions and Passwords
- Hashing functions are often used to store
passwords for users who are logging onto a
multi-user system. - When the user tries to log in with his or her
established password, the login program hashes
it, and compares the newly hashed password with
the stored hash. - If the two are equal, the system assumes the user
typed in the right password.
87Telnet and other Internet Protocols
- With Telnet, the password goes over the network
unhashed. - A packet sniffer could be used to catch the
password in transit. - Telnet authentication provides a very low bar for
potential attackers to clear. - Other protocols that have a similarly weak
authentication mechanism include FTP, POP3, and
IMAP.
88Attacks on Hashing Computations
- A brute force attack involves finding an
alternative text that will yield the same hash
signature. This is usually fairly difficult
because the alternative text is likely to be
gibberish. - An effective attack is called a birthday attack.
89A Simple Birthday Attack
- Suppose Bob and Alice enter an agreement in which
Alice agrees to pay Bob 5.00 per widget. This
agreement is sent to Bob with a cryptographic
checksum. Bob decides not to store the original
document on his server, just the checksum
thinking that would be adequate evidence if Alice
tries to present an alternative document ...
90A Simple Birthday Attack (cont.)
- In fact, Alice does try to present an alternative
document which states that the agreement is that
she pay 1.00 per widget. Bob thinks she will
fail in a legal battle because he has the
cryptographic checksum. Unfortunately for Bob,
Alice's new document has the same checksum as the
original and Bob loses in court.
91A Simple Birthday Attack (cont.)
- What Alice did (what is called a birthday attack)
involved taking the original document (with the
known checksum) and replacing all references to
5 to 1. Then, she systematically reformats the
1 per widget document by changing spaces to tabs
and so forth. Eventually she finds a 1 document
that has the same checksum as the original 5
document. - This kind of attack would be difficult with
checksums of 512 or even 256 bits.
92Digital Signatures for Authentication
- Public key encryption enabled the development of
the technology of digital signatures. - Digital signatures are somewhat analogous to
traditional handwritten signatures. - Digital signatures are strongly bound to the
document, but weakly bound to the individual. - A digital signature is computed, in part, using
the contents of the document being signed.
93Main Goals of Digital Signatures
- A signature should be proof of authenticity. Its
existence on a document should be able to
convince people that the person whose signature
appears on the document signed the document. - A signature should be impossible to forge. The
person who signed the document should not be able
to claim that the signature is not theirs
(support for non-repudiation).
94Main Goals (cont.)
- After the document is signed, it should be
impossible to alter the document without
detection. The signature is intrinsically linked
to the document that is being signed. - It should be impossible to transplant the
signature to another document. Again, the
digital signature is intrinsically linked to the
document that is being signed.
95Figure 12.1 from Denning
- This figure shows one scheme for digital
signatures that uses public key cryptography and
hash algorithms (the usual technology). - As you might have guessed, Alice wants to send a
sign and encrypted message to Bob. - Here's how it works
96Figure 12.1 (cont.)
- 1. Alice generates a message key, K, for
symmetric encryption. Alice encrypts the message
M with K, getting the ciphertext message, CM. - 2. Alice encrypts K with Bob's public
key-encrypting key, Kbobpub, getting the
ciphertext key, CK. This will allow Bob to
retrieve the key for decrypting the ciphertext.
97Figure 12.1 (cont.)
- 3. Alice uses a hashing function to compute a
checksum for the message, M. She then encrypts
the checksum (for public key encryption) using
her private signature key KSAlicepriv. The
encrypted checksum is the signature, S. - 4. Alice sends CK (the encrypted message key), CM
(the encrypted message), and S (the digital
signature) to Bob.
98Figure 12.1 (cont.)
- 5. Bob uses his private key, Kbobpriv, to decrypt
CK. This gives him the key, K, that Alice
originally sent to encrypt the message, M. - 6. Bob uses K to decrypt CM (the encrypted
message) to get the message, M. - 7. Bob uses Alice's public signature key
KSAlicepub to validate S, the digital signature.
This requires that Bob use the hashing function
to hash the message M. The resulting checksum
should be equal to the decrypted signature, S.
99Figure 12.1 (cont.)
- This technology of digital signatures uses
- A hash function to help generate the digital
signature, S. - Symmetric (secret key) cryptography to encrypt
the message, M. - Public key cryptography to share the secret key
used to encrypt and decrypt the message, M. - Public key cryptography to encrypt and decrypt
the digital signature, S.
100Pretty Good Privacy (PGP)
- This is how Bob and Alice would accomplish the
same goals using a user-friendly e-mail
encryption system called Pretty Good Privacy
(PGP) - 1. Alice composes an e-mail message to Bob. She
clicks on a button or menu item that says send
signed and encrypted.
101Pretty Good Privacy (cont.)
- 2. The encryption system prompts Alice for a
password. The password unlocks her private
signature key, which is stored encrypted on disk
or on a separate storage medium. - 3. The encryption system looks up Bobs public
key (for encrypting messages sent to Bob under
public key cryptography) in Alice's address book
or on her digital key ring which is stored in a
file on her disk.
102Pretty Good Privacy (cont.)
- 3 (cont.). The digital key ring generates K, the
symmetric key that will be shared with Bob, and
computes CK, the encrypted key, CM, the encrypted
message, and S, the digital signature. It puts
the message in the outbound queue. - 4. When the message shows up in Bob's inbox, he
clicks on a button to read the message.
103Pretty Good Privacy (cont.)
- 5. Bob's encryption system prompts him for a
password, which unlocks his private key. It
decrypts CK to retrieve K, and then uses K to
decrypt CM, to get the message M. - 6. The encryption system on Bob's machine then
looks up Alice's public signture key in Bob's
address book or key ring. It validates her
signature S. The decrypted message is displayed
to Bob along with an indication as to whether the
signature was valid.
104Pretty Good Privacy (cont.)
- Alice and Bob each have two digital key rings
when they use PGP. They have a private ring that
holds their private keys and a public ring that
holds their own public keys and the public keys
of those they are communicating with. - The key rings are implemented as files stored on
the hard drive or on a diskette.
105Diffie-Hellman
- Diffie-Hellman is another popular method for
sharing secret keys. - Diffie-Hellman has some similarities to the use
of public key encryption to share secret keys. - This method was developed in 1976 by Whitfield
Diffie and Martin Hellman, two cryptographers at
Stanford University. - In 1997 it was revealed that British
cryptographers had developed a similar idea in
the 1960s and early 1970s.
106Diffie-Hellman (cont.)
- Here is a simple description of the
Diffie-Hellman protocol that allows two parties
to compute a message key for symmetric encryption
without that secret ever being shared explicitly - 1. Each party independently generates a private
key. - 2. They each compute a public key as a
mathematical function of their individual private
keys.
107Diffie-Hellman (cont.)
- 3. They exchange public keys.
- 4. Each party then computes a message key (the
secret key) which is derived from their own
private key and the other person's public key.
They both arrive at the same message key.
108Diffie-Hellman (cont.)
- The public keys must be computed using a one-way
function (a hashing function) that makes it
imposible to get back the private keys from the
publicly exchanged keys. - If an attacker has access to one party's public
key and the other party's private key, the
attacker could compute the message key. - The mathematics is such that the publicly
exchanged keys cannot reveal either party's
private key.
109Diffie-Hellman (cont.)
- The mathematics is based on the following
relationship - y gx mod N
- It is easy to compute y if g, x, and N are known,
but it is not easy to compute x if y, g, and N
are known. - The problem of finding x is called the discrete
logarithm problem because x is the logarithm of y
base g (mod N). For numbers that are hundreds of
digits long, this is a hard problem.
110Diffie-Hellman (cont.)
- Here is how Diffie-Hellman works, allowing Allice
and Bob to establish a secret message key.
Assume that p is some prime number and g is a
base number - Alice generates a secret key, xalice.
- Bob generates a secret key, xbob.
- Alice computes a public key yalice gxalice mod
p. - Bob generates a public key ybob gxbob mod p.
111Diffie-Hellman (cont.)
- Bob and Alice exchange their public keys.
- Alice now computes the message key, K, as
- K ybobxalice mod p
- Bob now computes the message key, K, as
- K yalicexbob mod p
- Both Bob and Alice end up with the same key,
namely - K gxalice xbob mod p
112Diffie-Hellman (cont.)
- In practice, very large numbers are used (several
hundred DIGITS each), but here is an example
using small numbers - p 11, g 5, xalice 2, xbob 3.
- Alice computes her public key
- yalice 52 mod 11 3.
- Bob computes his public key
- ybob 53 mod 11 4.
113Diffie-Hellman (cont.)
- Bob and Alice exchange their public keys.
- Alice computes the message key, K, as
- K 42 mod 11 5.
- Bob computes the message key, K, as
- K 33 mod 11 5.
- Both kend up with the same message key, namely
- K 523 mod 11 15,625 mod 11 5.
114Diffie-Hellman (cont.)
- Diffie-Hellman are used in several network
protocols and commercial products, including PGP. - With Diffie-Hellman, keys can be generated as
needed (on the fly) and they can be discarded at
the end of the conversation.
115Software Developers andCryptography
- According to Viega and McGraw the most common
mistakes developers make with respect to
cryptography are - Failing to apply cryptographywhen it is needed.
- Applying cryptography in an incorrect manner when
it is deployed.
116Developers and Crypto (cont.)
- The most important rule is
- Never, Never implement your own cryptographic
algorithms!!! - An experienced cryptanalyst will not be deterred
by the fact that an algorithm is secret (not in
the public domain). Their tools do not require
knowledge of the algorithm.
117Developers and Crypto (cont.)
- The safest policy is to use a published,
well-used algorithm that has been
well-scrutinized by respected cryptographers over
a period of at least a few years.
118Developers and Crypto (cont.)
- Viega and McGraw note that most of the major
network protocols that use encryption have been
broken at least once. These include - SSL (Secure Socket Layer) version 2 this should
never be used. - SSH (Secure Shell Protocol) version 1 this
should be avoided. - MS's Point-to-Point protocol used in MS's Virtual
Private Network (VPN).
119Developers and Crypto (cont.)
- It is not only important to use well-known
encryption algorithms, but also to use
well-scrutinized implementations of those
algorithms, because the algorithms could be
implemented incorrectly. - Developers also need to understand the legal
framework surrounding cryptography. The laws
have been weakened somewhat concerning shipping
strong crypto stuff overseas, but there are still
laws governing this domain.
120Developers and Crypto (cont.)
- The best bet, in terms of avoiding legal
complications, is to use off-the-shelf, freely
available cryptographic packages. - Handout with reviews of two cryptographic
libraries.