SlideShare a Scribd company logo
1 of 59
SSL / TLS Case Study
CS 259
John Mitchell
2008
Course organization (subject to revision)
ļµJanuary
ā€¢ Two written homeworks: first due next Thursday (9 days)
ā€¢ Lectures on case studies (protocols and tools)
ā€¢ Choose your project: weā€™ll start giving examples Thursday
ļµFebruary
ā€¢ Project presentation #1: describe your system (5-10 min)
ā€¢ Lectures on additional approaches
ā€¢ Project presentation #2: describe security properties
ļµMarch
ā€¢ Project presentation #3: results of study
Grading: 20% homework, 30% project presentations, 50% project results and final presentation
Overview
ļµIntroduction to the SSL / TLS protocol
ā€¢ Widely deployed, ā€œreal-worldā€ security protocol
ļµProtocol analysis case study
ā€¢ Start with the RFC describing the protocol
ā€¢ Create an abstract model and code it up in Murj
ā€¢ Specify security properties
ā€¢ Run Murj to check whether security properties are
satisfied
ļµThis lecture is a compressed version of what you
would do if SSL were your project!
What is SSL / TLS?
ļµTransport Layer Security protocol, ver 1.0
ā€¢ De facto standard for Internet security
ā€¢ ā€œThe primary goal of the TLS protocol is to provide
privacy and data integrity between two communicating
applicationsā€
ā€¢ In practice, used to protect information transmitted
between browsers and Web servers
ļµBased on Secure Sockets Layers protocol, ver 3.0
ā€¢ Same protocol design, different algorithms
ļµDeployed in nearly every web browser
SSL / TLS in the Real World
History of the Protocol
ļµSSL 1.0
ā€¢ Internal Netscape design, early 1994?
ā€¢ Lost in the mists of time
ļµSSL 2.0
ā€¢ Published by Netscape, November 1994
ā€¢ Several problems (next slide)
ļµSSL 3.0
ā€¢ Designed by Netscape and Paul Kocher, November 1996
ļµTLS 1.0
ā€¢ Internet standard based on SSL 3.0, January 1999
ā€¢ Not interoperable with SSL 3.0
SSL 2.0 Vulnerabilities
ļµShort key length
ā€¢ In export-weakened modes, SSL 2.0 unnecessarily weakens the
authentication keys to 40 bits.
ļµWeak MAC construction
ļµMessage integrity vulnerability
ā€¢ SSL 2.0 feeds padding bytes into the MAC in block cipher
modes, but leaves the padding-length unauthenticated, may
allow active attackers to delete bytes from the end of messages
ļµCiphersuite rollback attack
ā€¢ An active attacker may edits the list of ciphersuite preferences
in the hello messages to invisibly force both endpoints to use a
weaker form of encryption
ā€¢ ā€œLeast common denominator" security under active attack
Letā€™s get going with SSL/TLS ā€¦
Intruder
Model
Analysis
Tool
Formal
Protocol
Informal
Protocol
Description
Find error
RFC
(request for
comments)
Request for Comments
ļµNetwork protocols are defined in an RFC
ļµTLS version 1.0 is described in RFC 2246
ļµIntended to be a self-contained definition of the
protocol
ā€¢ Describes the protocol in sufficient detail for readers
who will be implementing it and those who will be
doing protocol analysis (thatā€™s you!)
ā€¢ Mixture of informal prose and pseudo-code
ļµRead some RFCs to get a flavor of what protocols
look like when they emerge from the committee
Evolution of the SSL/TLS RFC
0
10
20
30
40
50
60
70
80
SSL 2.0 SSL 3.0 TLS 1.0
Page count
From RFC to Murj Model
Intruder
Model
Analysis
Tool
Formal
Protocol
Informal
Protocol
Description
Find error
Murj code
RFC
TLS Basics
ļµTLS consists of two protocols
ļµHandshake protocol
ā€¢ Use public-key cryptography to establish a shared
secret key between the client and the server
ļµRecord protocol
ā€¢ Use the secret key established in the handshake
protocol to protect communication between the client
and the server
ļµWe will focus on the handshake protocol
TLS Handshake Protocol
ļµTwo parties: client and server
ļµNegotiate version of the protocol and the set of
cryptographic algorithms to be used
ā€¢ Interoperability between different implementations of
the protocol
ļµAuthenticate client and server (optional)
ā€¢ Use digital certificates to learn each otherā€™s public keys
and verify each otherā€™s identity
ļµUse public keys to establish a shared secret
Handshake Protocol Structure
C
ClientHello
ServerHello,
[Certificate],
[ServerKeyExchange],
[CertificateRequest],
ServerHelloDone
S
[Certificate],
ClientKeyExchange,
[CertificateVerify]
Finished
switch to negotiated cipher
Finished
switch to negotiated cipher
ļµEncryption scheme
ā€¢ functions to encrypt, decrypt data
ā€¢ key generation algorithm
ļµSecret key vs. public key
ā€¢ Public key: publishing key does not reveal key-1
ā€¢ Secret key: more efficient, generally key = key-1
ļµHash function, MAC
ā€¢ Map input to short hash; ideally, no collisions
ā€¢ MAC (keyed hash) used for message integrity
ļµSignature scheme
ā€¢ Functions to sign data, verify signature
Recall: Basic Cryptographic Concepts
Use of cryptography
C
Version, Crypto choice, nonce
Version, Choice, nonce,
signed certificate
containing serverā€™s
public key Ks
S
Secret key K
encrypted with
serverā€™s key Ks
hash of sequence of messages
hash of sequence of messages
switch to negotiated cipher
SSL/TLS Cryptography Summary
ļµPublic-key encryption
ā€¢ Key chosen secretly (handshake protocol)
ā€¢ Key material sent encrypted with public key
ļµSymmetric encryption
ā€¢ Shared (secret) key encryption of data packets
ļµSignature-based authentication
ā€¢ Client can check signed server certificate
ā€¢ And vice-versa, in principal
ļµHash for integrity
ā€¢ Client, server check hash of sequence of messages
ā€¢ MAC used in data packets (record protocol)
Public-Key Infrastructure
Certificate
Authority Ka, Ka-1
Client Server
Known public signature verification key Ka
Sign(Ka-1, Ks)
Certificate
Sign(Ka-1, Ks)
Ks
Server certificate can be verified by any client that has CA verification key Ka
Certificate authority is ā€œoff lineā€
Ka
Another general idea in SSL
ļµClient, server communicate
ļµCompare hash of all messages
ā€¢ Compute hash(hi,hello,howareyou?) locally
ā€¢ Exchange hash values under encryption
ļµAbort if intervention detected
Client Server
Hi
Hello
How are you?
SSL/TLS in more detail ā€¦
ClientHello C ļ‚® S C, VerC, SuiteC, NC
ServerHello S ļ‚® C VerS, SuiteS, NS, signCA{ S, KS }
ClientVerify C ļ‚® S signCA{ C, VC }
{ VerC, SecretC }
signC { Hash( Master(NC, NS, SecretC) + Pad2 +
Hash(Msgs + C + Master(NC, NS, SecretC) + Pad1)) }
-------- Change to negotiated cipher --------------------------------------------------------------------
ServerFinished S ļ‚® C { Hash( Master(NC, NS, SecretC) + Pad2 +
Hash( Msgs + S + Master(NC, NS, SecretC) + Pad1))
}
ClientFinished C ļ‚® S { Hash( Master(NC, NS, SecretC) + Pad2 +
Hash( Msgs + C + Master(NC, NS, SecretC) + Pad1))
}
KS
Master(NC, NS, SecretC)
Master(NC, NS, SecretC)
Abbreviated Handshake
ļµThe handshake protocol may be executed in an
abbreviated form to resume a previously
established session
ā€¢ No authentication, key material not exchanged
ā€¢ Session resumed from an old state
ļµFor complete analysis, have to model both full
and abbreviated handshake protocol
ā€¢ This is a common situation: many protocols have
several branches, subprotocols for error handling, etc.
Rational Reconstruction
ļµ Begin with simple, intuitive protocol
ā€¢ Ignore client authentication
ā€¢ Ignore verification messages at the end of the
handshake protocol
ā€¢ Model only essential parts of messages (e.g., ignore
padding)
ļµExecute the model checker and find a bug
ļµAdd a piece of TLS to fix the bug and repeat
ā€¢ Better understand the design of the protocol
Protocol Step by Step: ClientHello
C
ClientHello
S
Client announces (in plaintext):
ā€¢ Protocol version she is running
ā€¢ Cryptographic algorithms she supports
struct {
ProtocolVersion client_version;
Random random;
SessionID session_id;
CipherSuite cipher_suites;
CompressionMethod compression_methods;
} ClientHello
ClientHello (RFC)
Highest version of the protocol
supported by the client
Session id (if the client wants to
resume an old session)
Cryptographic algorithms
supported by the client (e.g.,
RSA or Diffie-Hellman)
ClientHello (Murj)
ruleset i: ClientId do
ruleset j: ServerId do
rule "Client sends ClientHello to server (new session)"
cli[i].state = M_SLEEP &
cli[i].resumeSession = false
==>
var
outM: Message; -- outgoing message
begin
outM.source := i;
outM.dest := j;
outM.session := 0;
outM.mType := M_CLIENT_HELLO;
outM.version := cli[i].version;
outM.suite := cli[i].suite;
outM.random := freshNonce();
multisetadd (outM, cliNet);
cli[i].state := M_SERVER_HELLO;
end; end; end;
ServerHello
C
C, Versionc, suitec, Nc
ServerHello
S
Server responds (in plaintext) with:
ā€¢ Highest protocol version both client &
server support
ā€¢ Strongest cryptographic suite selected
from those offered by the client
ServerHello (Murj)
ruleset i: ServerId do
choose l: serNet do
rule ā€œServer receives ServerHello (new session)"
ser[i].clients[0].state = M_CLIENT_HELLO &
serNet[l].dest = i &
serNet[l].session = 0
==>
var
inM: Message; -- incoming message
outM: Message; -- outgoing message
begin
inM := serNet[l]; -- receive message
if inM.mType = M_CLIENT_HELLO then
outM.source := i;
outM.dest := inM.source;
outM.session := freshSessionId();
outM.mType := M_SERVER_HELLO;
outM.version := ser[i].version;
outM.suite := ser[i].suite;
outM.random := freshNonce();
multisetadd (outM, serNet);
ser[i].state := M_SERVER_SEND_KEY;
end; end; end;
ServerKeyExchange
C
Versions, suites, Ns,
ServerKeyExchange
S
Server responds with his public-key
certificate containing either his RSA, or
his Diffie-Hellman public key
(depending on chosen crypto suite)
C, Versionc, suitec, Nc
ā€œAbstractā€ Cryptography
ļµWe will use abstract data types to model
cryptographic operations
ā€¢ Assumes that cryptography is perfect
ā€¢ No details of the actual cryptographic schemes
ā€¢ Ignores bit length of keys, random numbers, etc.
ļµSimple notation for encryption, signatures, hashes
ā€¢ {M}k is message M encrypted with key k
ā€¢ sigk(M) is message M digitally signed with key k
ā€¢ hash(M) for the result of hashing message M with a
cryptographically strong hash function
ClientKeyExchange
C
Versions, suites, Ns,
sigca(S,Ks),
ā€œServerHelloDoneā€
S
C, Versionc, suitec, Nc
ClientKeyExchange
Client generates some secret key material
and sends it to the server encrypted with
the serverā€™s public key
struct {
select (KeyExchangeAlgorithm) {
case rsa: EncryptedPreMasterSecret;
case diffie_hellman: ClientDiffieHellmanPublic;
} exchange_keys
} ClientKeyExchange
struct {
ProtocolVersion client_version;
opaque random[46];
} PreMasterSecret
ClientKeyExchange (RFC)
Letā€™s model this as {Secretc}Ks
ā€œCoreā€ SSL
C
Versions, suites, Ns,
sigca(S,Ks),
ā€œServerHelloDoneā€
S
C, Versionc, suitec, Nc
{Secretc}Ks
switch to key derived
from secretc
If the protocol is correct, C and S share
some secret key material secretc at this point
switch to key derived
from secretc
Participants as Finite-State Machines
M_SLEEP
ClientHello
Murj rules define a finite-state machine for each protocol participant
Client state
M_SERVER_HELLO
M_SERVER_KEY
M_SEND_KEY
M_CLIENT_HELLO
Server state
M_SEND_KEY
M_CLIENT_KEY
M_DONE
ServerHello
ServerKeyExchange
ClientKeyExchange
Intruder Model
Intruder
Model
Analysis
Tool
Formal
Protocol
Informal
Protocol
Description
Find error
Murj code
RFC
Murj code,
similar for
all protocols
Intruder Can Intercept
ļµStore a message from the network in the data
structure modeling intruderā€™s ā€œknowledgeā€
ruleset i: IntruderId do
choose l: cliNet do
rule "Intruder intercepts client's message"
cliNet[l].fromIntruder = false
==>
begin
alias msg: cliNet[l] do -- message from the net
ā€¦
alias known: int[i].messages do
if multisetcount(m: known,
msgEqual(known[m], msg)) = 0 then
multisetadd(msg, known);
end;
end;
end;
Intruder Can Decrypt if Knows Key
ļµIf the key is stored in the data structure modeling
intruderā€™s ā€œknowledgeā€, then read message
ruleset i: IntruderId do
choose l: cliNet do
rule "Intruder intercepts client's message"
cliNet[l].fromIntruder = false
==>
begin
alias msg: cliNet[l] do -- message from the net
ā€¦
if msg.mType = M_CLIENT_KEY_EXCHANGE then
if keyEqual(msg.encKey, int[i].publicKey.key) then
alias sKeys: int[i].secretKeys do
if multisetcount(s: sKeys,
keyEqual(sKeys[s], msg.secretKey)) = 0 then
multisetadd(msg.secretKey, sKeys);
end;
end;
end;
Intruder Can Create New Messages
ļµAssemble pieces stored in the intruderā€™s
ā€œknowledgeā€ to form a message of the right format
ruleset i: IntruderId do
ruleset d: ClientId do
ruleset s: ValidSessionId do
choose n: int[i].nonces do
ruleset version: Versions do
rule "Intruder generates fake ServerHello"
cli[d].state = M_SERVER_HELLO
==>
var
outM: Message; -- outgoing message
begin
outM.source := i; outM.dest := d; outM.session := s;
outM.mType := M_SERVER_HELLO;
outM.version := version;
outM.random := int[i].nonces[n];
multisetadd (outM, cliNet);
end; end; end; end;
Intruder Model and Cryptography
ļµThere is no actual cryptography in our model
ā€¢ Messages are marked as ā€œencryptedā€ or ā€œsignedā€, and
the intruder rules respect these markers
ļµOur assumption that cryptography is perfect is
reflected in the absence of certain intruder rules
ā€¢ There is no rule for creating a digital signature with a
key that is not known to the intruder
ā€¢ There is no rule for reading the contents of a message
which is marked as ā€œencryptedā€ with a certain key,
when this key is not known to the intruder
ā€¢ There is no rule for reading the contents of a ā€œhashedā€
message
Running Murj Analysis
Intruder
Model
Analysis
Tool
Formal
Protocol
Informal
Protocol
Description
Find error
Murj code
RFC
Murj code,
similar for
all protocols
Specify security
conditions and run Murj
Secrecy
ļµIntruder should not be able to learn the secret
generated by the client
ruleset i: ClientId do
ruleset j: IntruderId do
rule "Intruder has learned a client's secret"
cli[i].state = M_DONE &
multisetcount(s: int[j].secretKeys,
keyEqual(int[j].secretKeys[s], cli[i].secretKey)) > 0
==>
begin
error "Intruder has learned a client's secret"
end;
end;
end;
Shared Secret Consistency
ļµAfter the protocol has finished, client and server
should agree on their shared secret
ruleset i: ServerId do
ruleset s: SessionId do
rule "Server's shared secret is not the same as its client's"
ismember(ser[i].clients[s].client, ClientId) &
ser[i].clients[s].state = M_DONE &
cli[ser[i].clients[s].client].state = M_DONE &
!keyEqual(cli[ser[i].clients[s].client].secretKey,
ser[i].clients[s].secretKey)
==>
begin
error "S's secret is not the same as C's"
end;
end;
end;
Version and Crypto Suite Consistency
ļµClient and server should be running the highest
version of the protocol they both support
ruleset i: ServerId do
ruleset s: SessionId do
rule "Server has not learned the client's version or suite correctly"
!ismember(ser[i].clients[s].client, IntruderId) &
ser[i].clients[s].state = M_DONE &
cli[ser[i].clients[s].client].state = M_DONE &
(ser[i].clients[s].clientVersion != MaxVersion |
ser[i].clients[s].clientSuite.text != 0)
==>
begin
error "Server has not learned the client's version or suite correctly"
end;
end;
end;
Finite-State Verification
...
...
ļ¬ Murj rules for protocol
participants and the intruder
define a nondeterministic state
transition graph
ļ¬ Murj will exhaustively
enumerate all graph nodes
ļ¬ Murj will verify whether
specified security conditions
hold in every reachable node
ļ¬ If not, the path to the violating
node will describe the attack
Correctness
condition violated
When Does Murj Find a Violation?
ļµBad abstraction
ā€¢ Removed too much detail from the protocol when
constructing the abstract model
ā€¢ Add the piece that fixes the bug and repeat
ā€¢ This is part of the rational reconstruction process
ļµGenuine attack
ā€¢ Yay! Hooray!
ā€¢ Attacks found by formal analysis are usually quite
strong: independent of specific cryptographic
schemes, OS implementation, etc.
ā€¢ Test an implementation of the protocol, if available
ā€œBasicā€ SSL 3.0
C
Versions=3.0, suites
sigca(S,Ks),
ā€œServerHelloDoneā€
S
C, Versionc=3.0, suitec
{Secretc}Ks
switch to key derived
from secretc
If the protocol is correct, C and S share
some secret key material secretc at this point
switch to key derived
from secretc
Version Consistency Fails!
C
Versions=2.0, suites
sigca(S,Ks),
ā€œServerHelloDoneā€
S
C, Versionc=2.0, suitec
{Secretc}Ks
C and S end up communicating using SSL 2.0
(weaker earlier version of the protocol)
Server is fooled into thinking he
is communicating with a client
who supports only SSL 2.0
struct {
select (KeyExchangeAlgorithm) {
case rsa: EncryptedPreMasterSecret;
case diffie_hellman: ClientDiffieHellmanPublic;
} exchange_keys
} ClientKeyExchange
struct {
ProtocolVersion client_version;
opaque random[46];
} PreMasterSecret
A Case of Bad Abstraction
Model this as {Versionc, Secretc}Ks
This piece matters! Need to add it to the model.
Better ā€œbasicā€ SSL
C
Versions=3.0, suites
sigca(S,Ks),
ā€œServerHelloDoneā€
S
C, Versionc=3.0, suitec
{Versionc,Secretc}Ks
switch to key derived
from secretc
If the protocol is correct, C and S share
some secret key material secretc at this point
switch to key derived
from secretc
Prevents version
rollback attack
Add rule to check that received version
is equal to version in ClientHello
Summary of Incremental Protocols
ļµA = Basic protocol
ļµB = A + version consistency check
ļµD = B + certificates for both public keys
ā€“ Authentication for client + Authentication for server
ļµE = D + verification (Finished) messages
ā€“ Prevention of version and crypto suite attacks
ļµF = E + nonces
ā€“ Prevention of replay attacks
ļµG = ā€œCorrectā€ subset of SSL
ā€“ Additional crypto considerations (black art) give SSL 3.0
VerC, SteC
VerS, SteS, KI
{ SecretC }
C S
KS
Attack on Protocol B
ļµIntruder in the middle
ā€¢ Replaces server key by intruderā€™s key
ā€¢ Intercepts secret from client
ā€¢ Simulates client to server, server to client
I
VerC, SteC
VerS, SteS, KS
{ SecretC }
KI
Solution: Certificate Authority
ļµDefeats previous attack
ā€¢ But client is not authenticated to the server ...
VersionC, SuiteC
VersionS, SuiteS, signCA{ S, KS }
{ SecretC }
C S
KS
Replay Attacks
ļµNetwork eavesdropper can record messages
ļµIf protocol is deterministic, then
ā€¢ Eavesdropper can replay client messages to server, OR
ā€¢ Eavesdropper can replay server message to client
ļµThis is a problem
ā€¢ In each session, each party should be guaranteed that the other
is a live participant in the session
ļµSolution
ā€¢ Each run of each protocol should contain at least one new value
generated by each party, included in messages, and checked
before session is considered done
ā€œCoreā€ SSL Handshake with server auth (only)
C
Versions, suites, Ns
sigca(S,Ks),
ā€œServerHelloDoneā€
S
C, Versionc, suitec , Nc
{Versionc,Secretc}Ks
Hash of sequence of messages
Hash of sequence of messages
switch to negotiated cipher
Server public key in
certificate signed by CA
Nonces to avoid replay
Hash messages to confirm
consistent views
Anomaly (Protocol F)
C S
ā€¦ SuiteC ā€¦
ā€¦ SuiteS ā€¦
ā€¦
Switch to negotiated cipher
Finished Finished
data data
Anomaly (Protocol F)
C S
ā€¦ SuiteC ā€¦
ā€¦ SuiteS ā€¦
ā€¦
Switch to negotiated cipher
Finished Finished
data data
X X
Protocol Resumption
C S
SessionId, VerC= 3.0, NC, ...
Finished Finished
data data
VerS= 3.0, NS, ...
Version Rollback Attack
C S
SessionId, VerC= 2.0, NC, ...
Finished Finished
data data
VerS= 2.0, NS, ...
X
X
{ NS } SecretKey { NC } SecretKey
SSL 2.0 Finished messages do not include version numbers or cryptosuites
Basic Pattern for Doing Your Project
ļµRead and understand protocol specification
ā€¢ Typically an RFC or a research paper
ā€¢ Weā€™ll put a few on the website: take a look!
ļµChoose a tool
ā€¢ Murj by default, but weā€™ll describe many other tools
ā€¢ Play with Murj now to get some experience
(installing, running simple models, etc.)
ļµStart with a simple (possibly flawed) model
ā€¢ Rational reconstruction is a good way to go
ļµGive careful thought to security conditions
Background Reading on SSL 3.0
Optional, for deeper understanding of SSL / TLS
ļµ D. Wagner and B. Schneier. ā€œAnalysis of the SSL 3.0 protocol.ā€
USENIX Electronic Commerce ā€™96.
ā€¢ Nice study of an early proposal for SSL 3.0
ļµ J.C. Mitchell, V. Shmatikov, U. Stern. ā€œFinite-State Analysis of SSL
3.0ā€. USENIX Security ā€™98.
ā€¢ Murj analysis of SSL 3.0 (similar to this lecture)
ā€¢ Actual Murj model available
ļµ D. Bleichenbacher. ā€œChosen Ciphertext Attacks against Protocols
Based on RSA Encryption Standard PKCS #1ā€. CRYPTO ā€™98.
ā€¢ Cryptography is not perfect: this paper breaks SSL 3.0 by directly
attacking underlying implementation of RSA

More Related Content

Similar to 03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt

Enteprise Sync IT Data Sheets
Enteprise Sync IT Data SheetsEnteprise Sync IT Data Sheets
Enteprise Sync IT Data SheetsMarcus Grimaldo
Ā 
SecureSocketLayer.ppt
SecureSocketLayer.pptSecureSocketLayer.ppt
SecureSocketLayer.pptPranavUndre1
Ā 
SSL Secure socket layer
SSL Secure socket layerSSL Secure socket layer
SSL Secure socket layerAhmed Elnaggar
Ā 
Internet security protocol
Internet security protocolInternet security protocol
Internet security protocolMousmi Pawar
Ā 
BAIT1103 Chapter 4
BAIT1103 Chapter 4BAIT1103 Chapter 4
BAIT1103 Chapter 4limsh
Ā 
Transport Layer Security - Mrinal Wadhwa
Transport Layer Security - Mrinal WadhwaTransport Layer Security - Mrinal Wadhwa
Transport Layer Security - Mrinal WadhwaMrinal Wadhwa
Ā 
wolfSSL and TLS 1.3
wolfSSL and TLS 1.3wolfSSL and TLS 1.3
wolfSSL and TLS 1.3wolfSSL
Ā 
Secure Socket Layer (SSL)
Secure Socket Layer (SSL)Secure Socket Layer (SSL)
Secure Socket Layer (SSL)Samip jain
Ā 
Secure socket layer
Secure socket layerSecure socket layer
Secure socket layerNishant Pahad
Ā 
Secure socket layer
Secure socket layerSecure socket layer
Secure socket layerNishant Pahad
Ā 
Ssl (Secure Sockets Layer)
Ssl (Secure Sockets Layer)Ssl (Secure Sockets Layer)
Ssl (Secure Sockets Layer)Asad Ali
Ā 
SECURE SOCKET LAYER ( WEB SECURITY )
SECURE SOCKET LAYER ( WEB SECURITY )SECURE SOCKET LAYER ( WEB SECURITY )
SECURE SOCKET LAYER ( WEB SECURITY )Monodip Singha Roy
Ā 
PPT ON WEB SECURITY BY MONODIP SINGHA ROY
PPT ON WEB SECURITY BY MONODIP SINGHA ROYPPT ON WEB SECURITY BY MONODIP SINGHA ROY
PPT ON WEB SECURITY BY MONODIP SINGHA ROYMonodip Singha Roy
Ā 
Network Security_Module_2_Dr Shivashankar
Network Security_Module_2_Dr ShivashankarNetwork Security_Module_2_Dr Shivashankar
Network Security_Module_2_Dr ShivashankarDr. Shivashankar
Ā 

Similar to 03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt (20)

Enteprise Sync IT Data Sheets
Enteprise Sync IT Data SheetsEnteprise Sync IT Data Sheets
Enteprise Sync IT Data Sheets
Ā 
SecureSocketLayer.ppt
SecureSocketLayer.pptSecureSocketLayer.ppt
SecureSocketLayer.ppt
Ā 
SSL Secure socket layer
SSL Secure socket layerSSL Secure socket layer
SSL Secure socket layer
Ā 
Internet security protocol
Internet security protocolInternet security protocol
Internet security protocol
Ā 
BAIT1103 Chapter 4
BAIT1103 Chapter 4BAIT1103 Chapter 4
BAIT1103 Chapter 4
Ā 
Transport Layer Security - Mrinal Wadhwa
Transport Layer Security - Mrinal WadhwaTransport Layer Security - Mrinal Wadhwa
Transport Layer Security - Mrinal Wadhwa
Ā 
Transport Layer Security
Transport Layer SecurityTransport Layer Security
Transport Layer Security
Ā 
wolfSSL and TLS 1.3
wolfSSL and TLS 1.3wolfSSL and TLS 1.3
wolfSSL and TLS 1.3
Ā 
Web Security
Web SecurityWeb Security
Web Security
Ā 
Secure Socket Layer (SSL)
Secure Socket Layer (SSL)Secure Socket Layer (SSL)
Secure Socket Layer (SSL)
Ā 
Secure socket layer
Secure socket layerSecure socket layer
Secure socket layer
Ā 
Secure socket layer
Secure socket layerSecure socket layer
Secure socket layer
Ā 
fengmei.ppt
fengmei.pptfengmei.ppt
fengmei.ppt
Ā 
Ssl (Secure Sockets Layer)
Ssl (Secure Sockets Layer)Ssl (Secure Sockets Layer)
Ssl (Secure Sockets Layer)
Ā 
fengmei.ppt
fengmei.pptfengmei.ppt
fengmei.ppt
Ā 
SSL overview
SSL overviewSSL overview
SSL overview
Ā 
SECURE SOCKET LAYER ( WEB SECURITY )
SECURE SOCKET LAYER ( WEB SECURITY )SECURE SOCKET LAYER ( WEB SECURITY )
SECURE SOCKET LAYER ( WEB SECURITY )
Ā 
PPT ON WEB SECURITY BY MONODIP SINGHA ROY
PPT ON WEB SECURITY BY MONODIP SINGHA ROYPPT ON WEB SECURITY BY MONODIP SINGHA ROY
PPT ON WEB SECURITY BY MONODIP SINGHA ROY
Ā 
Wireshark lab ssl v7 solution
Wireshark lab ssl v7 solutionWireshark lab ssl v7 solution
Wireshark lab ssl v7 solution
Ā 
Network Security_Module_2_Dr Shivashankar
Network Security_Module_2_Dr ShivashankarNetwork Security_Module_2_Dr Shivashankar
Network Security_Module_2_Dr Shivashankar
Ā 

Recently uploaded

Call Girls Service Faridabad šŸ“² 9999965857 情10k NiGhT Call Girls In Faridabad
Call Girls Service Faridabad šŸ“² 9999965857 情10k NiGhT Call Girls In FaridabadCall Girls Service Faridabad šŸ“² 9999965857 情10k NiGhT Call Girls In Faridabad
Call Girls Service Faridabad šŸ“² 9999965857 情10k NiGhT Call Girls In Faridabadgragmanisha42
Ā 
Call Now ā˜Ž 9999965857 !! Call Girls in Hauz Khas Escort Service Delhi N.C.R.
Call Now ā˜Ž 9999965857 !! Call Girls in Hauz Khas Escort Service Delhi N.C.R.Call Now ā˜Ž 9999965857 !! Call Girls in Hauz Khas Escort Service Delhi N.C.R.
Call Now ā˜Ž 9999965857 !! Call Girls in Hauz Khas Escort Service Delhi N.C.R.ktanvi103
Ā 
Call Girls Chandigarh šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Call Girls Chandigarh šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real MeetCall Girls Chandigarh šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Call Girls Chandigarh šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meetpriyashah722354
Ā 
Call Girls Service Charbagh { Lucknow Call Girls Service 9548273370 } Book me...
Call Girls Service Charbagh { Lucknow Call Girls Service 9548273370 } Book me...Call Girls Service Charbagh { Lucknow Call Girls Service 9548273370 } Book me...
Call Girls Service Charbagh { Lucknow Call Girls Service 9548273370 } Book me...gragteena
Ā 
šŸ’ššŸ˜‹Kolkata Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Kolkata Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹šŸ’ššŸ˜‹Kolkata Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Kolkata Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹Sheetaleventcompany
Ā 
Call Girl In Zirakpur ā¤ļøā™€ļø@ 9988299661 Zirakpur Call Girls Near Me ā¤ļøā™€ļø@ Sexy...
Call Girl In Zirakpur ā¤ļøā™€ļø@ 9988299661 Zirakpur Call Girls Near Me ā¤ļøā™€ļø@ Sexy...Call Girl In Zirakpur ā¤ļøā™€ļø@ 9988299661 Zirakpur Call Girls Near Me ā¤ļøā™€ļø@ Sexy...
Call Girl In Zirakpur ā¤ļøā™€ļø@ 9988299661 Zirakpur Call Girls Near Me ā¤ļøā™€ļø@ Sexy...Sheetaleventcompany
Ā 
Bangalore call girl šŸ‘Æā€ā™€ļø@ Simran Independent Call Girls in Bangalore GIUXUZ...
Bangalore call girl  šŸ‘Æā€ā™€ļø@ Simran Independent Call Girls in Bangalore  GIUXUZ...Bangalore call girl  šŸ‘Æā€ā™€ļø@ Simran Independent Call Girls in Bangalore  GIUXUZ...
Bangalore call girl šŸ‘Æā€ā™€ļø@ Simran Independent Call Girls in Bangalore GIUXUZ...Gfnyt
Ā 
Call Girls Amritsar šŸ’ÆCall Us šŸ” 8725944379 šŸ” šŸ’ƒ Independent Escort Service Amri...
Call Girls Amritsar šŸ’ÆCall Us šŸ” 8725944379 šŸ” šŸ’ƒ Independent Escort Service Amri...Call Girls Amritsar šŸ’ÆCall Us šŸ” 8725944379 šŸ” šŸ’ƒ Independent Escort Service Amri...
Call Girls Amritsar šŸ’ÆCall Us šŸ” 8725944379 šŸ” šŸ’ƒ Independent Escort Service Amri...Niamh verma
Ā 
VIP Call Girl Sector 32 Noida Just Book Me 9711199171
VIP Call Girl Sector 32 Noida Just Book Me 9711199171VIP Call Girl Sector 32 Noida Just Book Me 9711199171
VIP Call Girl Sector 32 Noida Just Book Me 9711199171Call Girls Service Gurgaon
Ā 
VIP Kolkata Call Girl New Town šŸ‘‰ 8250192130 Available With Room
VIP Kolkata Call Girl New Town šŸ‘‰ 8250192130  Available With RoomVIP Kolkata Call Girl New Town šŸ‘‰ 8250192130  Available With Room
VIP Kolkata Call Girl New Town šŸ‘‰ 8250192130 Available With Roomdivyansh0kumar0
Ā 
No Advance 9053900678 Chandigarh Call Girls , Indian Call Girls For Full Ni...
No Advance 9053900678 Chandigarh  Call Girls , Indian Call Girls  For Full Ni...No Advance 9053900678 Chandigarh  Call Girls , Indian Call Girls  For Full Ni...
No Advance 9053900678 Chandigarh Call Girls , Indian Call Girls For Full Ni...Vip call girls In Chandigarh
Ā 
Vip sexy Call Girls Service In Sector 137,9999965857 Young Female Escorts Ser...
Vip sexy Call Girls Service In Sector 137,9999965857 Young Female Escorts Ser...Vip sexy Call Girls Service In Sector 137,9999965857 Young Female Escorts Ser...
Vip sexy Call Girls Service In Sector 137,9999965857 Young Female Escorts Ser...Call Girls Noida
Ā 
Chandigarh Call Girls šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Chandigarh Call Girls šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real MeetChandigarh Call Girls šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Chandigarh Call Girls šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meetpriyashah722354
Ā 
Call Girl Raipur šŸ“² 9999965857 情10k NiGhT Call Girls In Raipur
Call Girl Raipur šŸ“² 9999965857 情10k NiGhT Call Girls In RaipurCall Girl Raipur šŸ“² 9999965857 情10k NiGhT Call Girls In Raipur
Call Girl Raipur šŸ“² 9999965857 情10k NiGhT Call Girls In Raipurgragmanisha42
Ā 
Jalandhar Female Call Girls Contact Number 9053900678 šŸ’šJalandhar Female Call...
Jalandhar  Female Call Girls Contact Number 9053900678 šŸ’šJalandhar Female Call...Jalandhar  Female Call Girls Contact Number 9053900678 šŸ’šJalandhar Female Call...
Jalandhar Female Call Girls Contact Number 9053900678 šŸ’šJalandhar Female Call...Call Girls Service Chandigarh Ayushi
Ā 
šŸ’ššŸ˜‹Chandigarh Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Chandigarh Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹šŸ’ššŸ˜‹Chandigarh Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Chandigarh Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹Sheetaleventcompany
Ā 
šŸ’ššŸ˜‹Mumbai Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Mumbai Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹šŸ’ššŸ˜‹Mumbai Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Mumbai Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹Sheetaleventcompany
Ā 
Hot Call Girl In Chandigarh šŸ‘…šŸ„µ 9053'900678 Call Girls Service In Chandigarh
Hot  Call Girl In Chandigarh šŸ‘…šŸ„µ 9053'900678 Call Girls Service In ChandigarhHot  Call Girl In Chandigarh šŸ‘…šŸ„µ 9053'900678 Call Girls Service In Chandigarh
Hot Call Girl In Chandigarh šŸ‘…šŸ„µ 9053'900678 Call Girls Service In ChandigarhVip call girls In Chandigarh
Ā 
Dehradun Call Girls Service 08854095900 Real Russian Girls Looking Models
Dehradun Call Girls Service 08854095900 Real Russian Girls Looking ModelsDehradun Call Girls Service 08854095900 Real Russian Girls Looking Models
Dehradun Call Girls Service 08854095900 Real Russian Girls Looking Modelsindiancallgirl4rent
Ā 
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591adityaroy0215
Ā 

Recently uploaded (20)

Call Girls Service Faridabad šŸ“² 9999965857 情10k NiGhT Call Girls In Faridabad
Call Girls Service Faridabad šŸ“² 9999965857 情10k NiGhT Call Girls In FaridabadCall Girls Service Faridabad šŸ“² 9999965857 情10k NiGhT Call Girls In Faridabad
Call Girls Service Faridabad šŸ“² 9999965857 情10k NiGhT Call Girls In Faridabad
Ā 
Call Now ā˜Ž 9999965857 !! Call Girls in Hauz Khas Escort Service Delhi N.C.R.
Call Now ā˜Ž 9999965857 !! Call Girls in Hauz Khas Escort Service Delhi N.C.R.Call Now ā˜Ž 9999965857 !! Call Girls in Hauz Khas Escort Service Delhi N.C.R.
Call Now ā˜Ž 9999965857 !! Call Girls in Hauz Khas Escort Service Delhi N.C.R.
Ā 
Call Girls Chandigarh šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Call Girls Chandigarh šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real MeetCall Girls Chandigarh šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Call Girls Chandigarh šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Ā 
Call Girls Service Charbagh { Lucknow Call Girls Service 9548273370 } Book me...
Call Girls Service Charbagh { Lucknow Call Girls Service 9548273370 } Book me...Call Girls Service Charbagh { Lucknow Call Girls Service 9548273370 } Book me...
Call Girls Service Charbagh { Lucknow Call Girls Service 9548273370 } Book me...
Ā 
šŸ’ššŸ˜‹Kolkata Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Kolkata Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹šŸ’ššŸ˜‹Kolkata Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Kolkata Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
Ā 
Call Girl In Zirakpur ā¤ļøā™€ļø@ 9988299661 Zirakpur Call Girls Near Me ā¤ļøā™€ļø@ Sexy...
Call Girl In Zirakpur ā¤ļøā™€ļø@ 9988299661 Zirakpur Call Girls Near Me ā¤ļøā™€ļø@ Sexy...Call Girl In Zirakpur ā¤ļøā™€ļø@ 9988299661 Zirakpur Call Girls Near Me ā¤ļøā™€ļø@ Sexy...
Call Girl In Zirakpur ā¤ļøā™€ļø@ 9988299661 Zirakpur Call Girls Near Me ā¤ļøā™€ļø@ Sexy...
Ā 
Bangalore call girl šŸ‘Æā€ā™€ļø@ Simran Independent Call Girls in Bangalore GIUXUZ...
Bangalore call girl  šŸ‘Æā€ā™€ļø@ Simran Independent Call Girls in Bangalore  GIUXUZ...Bangalore call girl  šŸ‘Æā€ā™€ļø@ Simran Independent Call Girls in Bangalore  GIUXUZ...
Bangalore call girl šŸ‘Æā€ā™€ļø@ Simran Independent Call Girls in Bangalore GIUXUZ...
Ā 
Call Girls Amritsar šŸ’ÆCall Us šŸ” 8725944379 šŸ” šŸ’ƒ Independent Escort Service Amri...
Call Girls Amritsar šŸ’ÆCall Us šŸ” 8725944379 šŸ” šŸ’ƒ Independent Escort Service Amri...Call Girls Amritsar šŸ’ÆCall Us šŸ” 8725944379 šŸ” šŸ’ƒ Independent Escort Service Amri...
Call Girls Amritsar šŸ’ÆCall Us šŸ” 8725944379 šŸ” šŸ’ƒ Independent Escort Service Amri...
Ā 
VIP Call Girl Sector 32 Noida Just Book Me 9711199171
VIP Call Girl Sector 32 Noida Just Book Me 9711199171VIP Call Girl Sector 32 Noida Just Book Me 9711199171
VIP Call Girl Sector 32 Noida Just Book Me 9711199171
Ā 
VIP Kolkata Call Girl New Town šŸ‘‰ 8250192130 Available With Room
VIP Kolkata Call Girl New Town šŸ‘‰ 8250192130  Available With RoomVIP Kolkata Call Girl New Town šŸ‘‰ 8250192130  Available With Room
VIP Kolkata Call Girl New Town šŸ‘‰ 8250192130 Available With Room
Ā 
No Advance 9053900678 Chandigarh Call Girls , Indian Call Girls For Full Ni...
No Advance 9053900678 Chandigarh  Call Girls , Indian Call Girls  For Full Ni...No Advance 9053900678 Chandigarh  Call Girls , Indian Call Girls  For Full Ni...
No Advance 9053900678 Chandigarh Call Girls , Indian Call Girls For Full Ni...
Ā 
Vip sexy Call Girls Service In Sector 137,9999965857 Young Female Escorts Ser...
Vip sexy Call Girls Service In Sector 137,9999965857 Young Female Escorts Ser...Vip sexy Call Girls Service In Sector 137,9999965857 Young Female Escorts Ser...
Vip sexy Call Girls Service In Sector 137,9999965857 Young Female Escorts Ser...
Ā 
Chandigarh Call Girls šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Chandigarh Call Girls šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real MeetChandigarh Call Girls šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Chandigarh Call Girls šŸ‘™ 7001035870 šŸ‘™ Genuine WhatsApp Number for Real Meet
Ā 
Call Girl Raipur šŸ“² 9999965857 情10k NiGhT Call Girls In Raipur
Call Girl Raipur šŸ“² 9999965857 情10k NiGhT Call Girls In RaipurCall Girl Raipur šŸ“² 9999965857 情10k NiGhT Call Girls In Raipur
Call Girl Raipur šŸ“² 9999965857 情10k NiGhT Call Girls In Raipur
Ā 
Jalandhar Female Call Girls Contact Number 9053900678 šŸ’šJalandhar Female Call...
Jalandhar  Female Call Girls Contact Number 9053900678 šŸ’šJalandhar Female Call...Jalandhar  Female Call Girls Contact Number 9053900678 šŸ’šJalandhar Female Call...
Jalandhar Female Call Girls Contact Number 9053900678 šŸ’šJalandhar Female Call...
Ā 
šŸ’ššŸ˜‹Chandigarh Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Chandigarh Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹šŸ’ššŸ˜‹Chandigarh Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Chandigarh Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
Ā 
šŸ’ššŸ˜‹Mumbai Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Mumbai Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹šŸ’ššŸ˜‹Mumbai Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
šŸ’ššŸ˜‹Mumbai Escort Service Call Girls, ā‚¹5000 To 25K With ACšŸ’ššŸ˜‹
Ā 
Hot Call Girl In Chandigarh šŸ‘…šŸ„µ 9053'900678 Call Girls Service In Chandigarh
Hot  Call Girl In Chandigarh šŸ‘…šŸ„µ 9053'900678 Call Girls Service In ChandigarhHot  Call Girl In Chandigarh šŸ‘…šŸ„µ 9053'900678 Call Girls Service In Chandigarh
Hot Call Girl In Chandigarh šŸ‘…šŸ„µ 9053'900678 Call Girls Service In Chandigarh
Ā 
Dehradun Call Girls Service 08854095900 Real Russian Girls Looking Models
Dehradun Call Girls Service 08854095900 Real Russian Girls Looking ModelsDehradun Call Girls Service 08854095900 Real Russian Girls Looking Models
Dehradun Call Girls Service 08854095900 Real Russian Girls Looking Models
Ā 
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
Ā 

03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt03-SSL (1).ppt

  • 1. SSL / TLS Case Study CS 259 John Mitchell 2008
  • 2. Course organization (subject to revision) ļµJanuary ā€¢ Two written homeworks: first due next Thursday (9 days) ā€¢ Lectures on case studies (protocols and tools) ā€¢ Choose your project: weā€™ll start giving examples Thursday ļµFebruary ā€¢ Project presentation #1: describe your system (5-10 min) ā€¢ Lectures on additional approaches ā€¢ Project presentation #2: describe security properties ļµMarch ā€¢ Project presentation #3: results of study Grading: 20% homework, 30% project presentations, 50% project results and final presentation
  • 3. Overview ļµIntroduction to the SSL / TLS protocol ā€¢ Widely deployed, ā€œreal-worldā€ security protocol ļµProtocol analysis case study ā€¢ Start with the RFC describing the protocol ā€¢ Create an abstract model and code it up in Murj ā€¢ Specify security properties ā€¢ Run Murj to check whether security properties are satisfied ļµThis lecture is a compressed version of what you would do if SSL were your project!
  • 4. What is SSL / TLS? ļµTransport Layer Security protocol, ver 1.0 ā€¢ De facto standard for Internet security ā€¢ ā€œThe primary goal of the TLS protocol is to provide privacy and data integrity between two communicating applicationsā€ ā€¢ In practice, used to protect information transmitted between browsers and Web servers ļµBased on Secure Sockets Layers protocol, ver 3.0 ā€¢ Same protocol design, different algorithms ļµDeployed in nearly every web browser
  • 5. SSL / TLS in the Real World
  • 6. History of the Protocol ļµSSL 1.0 ā€¢ Internal Netscape design, early 1994? ā€¢ Lost in the mists of time ļµSSL 2.0 ā€¢ Published by Netscape, November 1994 ā€¢ Several problems (next slide) ļµSSL 3.0 ā€¢ Designed by Netscape and Paul Kocher, November 1996 ļµTLS 1.0 ā€¢ Internet standard based on SSL 3.0, January 1999 ā€¢ Not interoperable with SSL 3.0
  • 7. SSL 2.0 Vulnerabilities ļµShort key length ā€¢ In export-weakened modes, SSL 2.0 unnecessarily weakens the authentication keys to 40 bits. ļµWeak MAC construction ļµMessage integrity vulnerability ā€¢ SSL 2.0 feeds padding bytes into the MAC in block cipher modes, but leaves the padding-length unauthenticated, may allow active attackers to delete bytes from the end of messages ļµCiphersuite rollback attack ā€¢ An active attacker may edits the list of ciphersuite preferences in the hello messages to invisibly force both endpoints to use a weaker form of encryption ā€¢ ā€œLeast common denominator" security under active attack
  • 8. Letā€™s get going with SSL/TLS ā€¦ Intruder Model Analysis Tool Formal Protocol Informal Protocol Description Find error RFC (request for comments)
  • 9. Request for Comments ļµNetwork protocols are defined in an RFC ļµTLS version 1.0 is described in RFC 2246 ļµIntended to be a self-contained definition of the protocol ā€¢ Describes the protocol in sufficient detail for readers who will be implementing it and those who will be doing protocol analysis (thatā€™s you!) ā€¢ Mixture of informal prose and pseudo-code ļµRead some RFCs to get a flavor of what protocols look like when they emerge from the committee
  • 10. Evolution of the SSL/TLS RFC 0 10 20 30 40 50 60 70 80 SSL 2.0 SSL 3.0 TLS 1.0 Page count
  • 11. From RFC to Murj Model Intruder Model Analysis Tool Formal Protocol Informal Protocol Description Find error Murj code RFC
  • 12. TLS Basics ļµTLS consists of two protocols ļµHandshake protocol ā€¢ Use public-key cryptography to establish a shared secret key between the client and the server ļµRecord protocol ā€¢ Use the secret key established in the handshake protocol to protect communication between the client and the server ļµWe will focus on the handshake protocol
  • 13. TLS Handshake Protocol ļµTwo parties: client and server ļµNegotiate version of the protocol and the set of cryptographic algorithms to be used ā€¢ Interoperability between different implementations of the protocol ļµAuthenticate client and server (optional) ā€¢ Use digital certificates to learn each otherā€™s public keys and verify each otherā€™s identity ļµUse public keys to establish a shared secret
  • 15. ļµEncryption scheme ā€¢ functions to encrypt, decrypt data ā€¢ key generation algorithm ļµSecret key vs. public key ā€¢ Public key: publishing key does not reveal key-1 ā€¢ Secret key: more efficient, generally key = key-1 ļµHash function, MAC ā€¢ Map input to short hash; ideally, no collisions ā€¢ MAC (keyed hash) used for message integrity ļµSignature scheme ā€¢ Functions to sign data, verify signature Recall: Basic Cryptographic Concepts
  • 16. Use of cryptography C Version, Crypto choice, nonce Version, Choice, nonce, signed certificate containing serverā€™s public key Ks S Secret key K encrypted with serverā€™s key Ks hash of sequence of messages hash of sequence of messages switch to negotiated cipher
  • 17. SSL/TLS Cryptography Summary ļµPublic-key encryption ā€¢ Key chosen secretly (handshake protocol) ā€¢ Key material sent encrypted with public key ļµSymmetric encryption ā€¢ Shared (secret) key encryption of data packets ļµSignature-based authentication ā€¢ Client can check signed server certificate ā€¢ And vice-versa, in principal ļµHash for integrity ā€¢ Client, server check hash of sequence of messages ā€¢ MAC used in data packets (record protocol)
  • 18. Public-Key Infrastructure Certificate Authority Ka, Ka-1 Client Server Known public signature verification key Ka Sign(Ka-1, Ks) Certificate Sign(Ka-1, Ks) Ks Server certificate can be verified by any client that has CA verification key Ka Certificate authority is ā€œoff lineā€ Ka
  • 19. Another general idea in SSL ļµClient, server communicate ļµCompare hash of all messages ā€¢ Compute hash(hi,hello,howareyou?) locally ā€¢ Exchange hash values under encryption ļµAbort if intervention detected Client Server Hi Hello How are you?
  • 20. SSL/TLS in more detail ā€¦ ClientHello C ļ‚® S C, VerC, SuiteC, NC ServerHello S ļ‚® C VerS, SuiteS, NS, signCA{ S, KS } ClientVerify C ļ‚® S signCA{ C, VC } { VerC, SecretC } signC { Hash( Master(NC, NS, SecretC) + Pad2 + Hash(Msgs + C + Master(NC, NS, SecretC) + Pad1)) } -------- Change to negotiated cipher -------------------------------------------------------------------- ServerFinished S ļ‚® C { Hash( Master(NC, NS, SecretC) + Pad2 + Hash( Msgs + S + Master(NC, NS, SecretC) + Pad1)) } ClientFinished C ļ‚® S { Hash( Master(NC, NS, SecretC) + Pad2 + Hash( Msgs + C + Master(NC, NS, SecretC) + Pad1)) } KS Master(NC, NS, SecretC) Master(NC, NS, SecretC)
  • 21. Abbreviated Handshake ļµThe handshake protocol may be executed in an abbreviated form to resume a previously established session ā€¢ No authentication, key material not exchanged ā€¢ Session resumed from an old state ļµFor complete analysis, have to model both full and abbreviated handshake protocol ā€¢ This is a common situation: many protocols have several branches, subprotocols for error handling, etc.
  • 22. Rational Reconstruction ļµ Begin with simple, intuitive protocol ā€¢ Ignore client authentication ā€¢ Ignore verification messages at the end of the handshake protocol ā€¢ Model only essential parts of messages (e.g., ignore padding) ļµExecute the model checker and find a bug ļµAdd a piece of TLS to fix the bug and repeat ā€¢ Better understand the design of the protocol
  • 23. Protocol Step by Step: ClientHello C ClientHello S Client announces (in plaintext): ā€¢ Protocol version she is running ā€¢ Cryptographic algorithms she supports
  • 24. struct { ProtocolVersion client_version; Random random; SessionID session_id; CipherSuite cipher_suites; CompressionMethod compression_methods; } ClientHello ClientHello (RFC) Highest version of the protocol supported by the client Session id (if the client wants to resume an old session) Cryptographic algorithms supported by the client (e.g., RSA or Diffie-Hellman)
  • 25. ClientHello (Murj) ruleset i: ClientId do ruleset j: ServerId do rule "Client sends ClientHello to server (new session)" cli[i].state = M_SLEEP & cli[i].resumeSession = false ==> var outM: Message; -- outgoing message begin outM.source := i; outM.dest := j; outM.session := 0; outM.mType := M_CLIENT_HELLO; outM.version := cli[i].version; outM.suite := cli[i].suite; outM.random := freshNonce(); multisetadd (outM, cliNet); cli[i].state := M_SERVER_HELLO; end; end; end;
  • 26. ServerHello C C, Versionc, suitec, Nc ServerHello S Server responds (in plaintext) with: ā€¢ Highest protocol version both client & server support ā€¢ Strongest cryptographic suite selected from those offered by the client
  • 27. ServerHello (Murj) ruleset i: ServerId do choose l: serNet do rule ā€œServer receives ServerHello (new session)" ser[i].clients[0].state = M_CLIENT_HELLO & serNet[l].dest = i & serNet[l].session = 0 ==> var inM: Message; -- incoming message outM: Message; -- outgoing message begin inM := serNet[l]; -- receive message if inM.mType = M_CLIENT_HELLO then outM.source := i; outM.dest := inM.source; outM.session := freshSessionId(); outM.mType := M_SERVER_HELLO; outM.version := ser[i].version; outM.suite := ser[i].suite; outM.random := freshNonce(); multisetadd (outM, serNet); ser[i].state := M_SERVER_SEND_KEY; end; end; end;
  • 28. ServerKeyExchange C Versions, suites, Ns, ServerKeyExchange S Server responds with his public-key certificate containing either his RSA, or his Diffie-Hellman public key (depending on chosen crypto suite) C, Versionc, suitec, Nc
  • 29. ā€œAbstractā€ Cryptography ļµWe will use abstract data types to model cryptographic operations ā€¢ Assumes that cryptography is perfect ā€¢ No details of the actual cryptographic schemes ā€¢ Ignores bit length of keys, random numbers, etc. ļµSimple notation for encryption, signatures, hashes ā€¢ {M}k is message M encrypted with key k ā€¢ sigk(M) is message M digitally signed with key k ā€¢ hash(M) for the result of hashing message M with a cryptographically strong hash function
  • 30. ClientKeyExchange C Versions, suites, Ns, sigca(S,Ks), ā€œServerHelloDoneā€ S C, Versionc, suitec, Nc ClientKeyExchange Client generates some secret key material and sends it to the server encrypted with the serverā€™s public key
  • 31. struct { select (KeyExchangeAlgorithm) { case rsa: EncryptedPreMasterSecret; case diffie_hellman: ClientDiffieHellmanPublic; } exchange_keys } ClientKeyExchange struct { ProtocolVersion client_version; opaque random[46]; } PreMasterSecret ClientKeyExchange (RFC) Letā€™s model this as {Secretc}Ks
  • 32. ā€œCoreā€ SSL C Versions, suites, Ns, sigca(S,Ks), ā€œServerHelloDoneā€ S C, Versionc, suitec, Nc {Secretc}Ks switch to key derived from secretc If the protocol is correct, C and S share some secret key material secretc at this point switch to key derived from secretc
  • 33. Participants as Finite-State Machines M_SLEEP ClientHello Murj rules define a finite-state machine for each protocol participant Client state M_SERVER_HELLO M_SERVER_KEY M_SEND_KEY M_CLIENT_HELLO Server state M_SEND_KEY M_CLIENT_KEY M_DONE ServerHello ServerKeyExchange ClientKeyExchange
  • 35. Intruder Can Intercept ļµStore a message from the network in the data structure modeling intruderā€™s ā€œknowledgeā€ ruleset i: IntruderId do choose l: cliNet do rule "Intruder intercepts client's message" cliNet[l].fromIntruder = false ==> begin alias msg: cliNet[l] do -- message from the net ā€¦ alias known: int[i].messages do if multisetcount(m: known, msgEqual(known[m], msg)) = 0 then multisetadd(msg, known); end; end; end;
  • 36. Intruder Can Decrypt if Knows Key ļµIf the key is stored in the data structure modeling intruderā€™s ā€œknowledgeā€, then read message ruleset i: IntruderId do choose l: cliNet do rule "Intruder intercepts client's message" cliNet[l].fromIntruder = false ==> begin alias msg: cliNet[l] do -- message from the net ā€¦ if msg.mType = M_CLIENT_KEY_EXCHANGE then if keyEqual(msg.encKey, int[i].publicKey.key) then alias sKeys: int[i].secretKeys do if multisetcount(s: sKeys, keyEqual(sKeys[s], msg.secretKey)) = 0 then multisetadd(msg.secretKey, sKeys); end; end; end;
  • 37. Intruder Can Create New Messages ļµAssemble pieces stored in the intruderā€™s ā€œknowledgeā€ to form a message of the right format ruleset i: IntruderId do ruleset d: ClientId do ruleset s: ValidSessionId do choose n: int[i].nonces do ruleset version: Versions do rule "Intruder generates fake ServerHello" cli[d].state = M_SERVER_HELLO ==> var outM: Message; -- outgoing message begin outM.source := i; outM.dest := d; outM.session := s; outM.mType := M_SERVER_HELLO; outM.version := version; outM.random := int[i].nonces[n]; multisetadd (outM, cliNet); end; end; end; end;
  • 38. Intruder Model and Cryptography ļµThere is no actual cryptography in our model ā€¢ Messages are marked as ā€œencryptedā€ or ā€œsignedā€, and the intruder rules respect these markers ļµOur assumption that cryptography is perfect is reflected in the absence of certain intruder rules ā€¢ There is no rule for creating a digital signature with a key that is not known to the intruder ā€¢ There is no rule for reading the contents of a message which is marked as ā€œencryptedā€ with a certain key, when this key is not known to the intruder ā€¢ There is no rule for reading the contents of a ā€œhashedā€ message
  • 39. Running Murj Analysis Intruder Model Analysis Tool Formal Protocol Informal Protocol Description Find error Murj code RFC Murj code, similar for all protocols Specify security conditions and run Murj
  • 40. Secrecy ļµIntruder should not be able to learn the secret generated by the client ruleset i: ClientId do ruleset j: IntruderId do rule "Intruder has learned a client's secret" cli[i].state = M_DONE & multisetcount(s: int[j].secretKeys, keyEqual(int[j].secretKeys[s], cli[i].secretKey)) > 0 ==> begin error "Intruder has learned a client's secret" end; end; end;
  • 41. Shared Secret Consistency ļµAfter the protocol has finished, client and server should agree on their shared secret ruleset i: ServerId do ruleset s: SessionId do rule "Server's shared secret is not the same as its client's" ismember(ser[i].clients[s].client, ClientId) & ser[i].clients[s].state = M_DONE & cli[ser[i].clients[s].client].state = M_DONE & !keyEqual(cli[ser[i].clients[s].client].secretKey, ser[i].clients[s].secretKey) ==> begin error "S's secret is not the same as C's" end; end; end;
  • 42. Version and Crypto Suite Consistency ļµClient and server should be running the highest version of the protocol they both support ruleset i: ServerId do ruleset s: SessionId do rule "Server has not learned the client's version or suite correctly" !ismember(ser[i].clients[s].client, IntruderId) & ser[i].clients[s].state = M_DONE & cli[ser[i].clients[s].client].state = M_DONE & (ser[i].clients[s].clientVersion != MaxVersion | ser[i].clients[s].clientSuite.text != 0) ==> begin error "Server has not learned the client's version or suite correctly" end; end; end;
  • 43. Finite-State Verification ... ... ļ¬ Murj rules for protocol participants and the intruder define a nondeterministic state transition graph ļ¬ Murj will exhaustively enumerate all graph nodes ļ¬ Murj will verify whether specified security conditions hold in every reachable node ļ¬ If not, the path to the violating node will describe the attack Correctness condition violated
  • 44. When Does Murj Find a Violation? ļµBad abstraction ā€¢ Removed too much detail from the protocol when constructing the abstract model ā€¢ Add the piece that fixes the bug and repeat ā€¢ This is part of the rational reconstruction process ļµGenuine attack ā€¢ Yay! Hooray! ā€¢ Attacks found by formal analysis are usually quite strong: independent of specific cryptographic schemes, OS implementation, etc. ā€¢ Test an implementation of the protocol, if available
  • 45. ā€œBasicā€ SSL 3.0 C Versions=3.0, suites sigca(S,Ks), ā€œServerHelloDoneā€ S C, Versionc=3.0, suitec {Secretc}Ks switch to key derived from secretc If the protocol is correct, C and S share some secret key material secretc at this point switch to key derived from secretc
  • 46. Version Consistency Fails! C Versions=2.0, suites sigca(S,Ks), ā€œServerHelloDoneā€ S C, Versionc=2.0, suitec {Secretc}Ks C and S end up communicating using SSL 2.0 (weaker earlier version of the protocol) Server is fooled into thinking he is communicating with a client who supports only SSL 2.0
  • 47. struct { select (KeyExchangeAlgorithm) { case rsa: EncryptedPreMasterSecret; case diffie_hellman: ClientDiffieHellmanPublic; } exchange_keys } ClientKeyExchange struct { ProtocolVersion client_version; opaque random[46]; } PreMasterSecret A Case of Bad Abstraction Model this as {Versionc, Secretc}Ks This piece matters! Need to add it to the model.
  • 48. Better ā€œbasicā€ SSL C Versions=3.0, suites sigca(S,Ks), ā€œServerHelloDoneā€ S C, Versionc=3.0, suitec {Versionc,Secretc}Ks switch to key derived from secretc If the protocol is correct, C and S share some secret key material secretc at this point switch to key derived from secretc Prevents version rollback attack Add rule to check that received version is equal to version in ClientHello
  • 49. Summary of Incremental Protocols ļµA = Basic protocol ļµB = A + version consistency check ļµD = B + certificates for both public keys ā€“ Authentication for client + Authentication for server ļµE = D + verification (Finished) messages ā€“ Prevention of version and crypto suite attacks ļµF = E + nonces ā€“ Prevention of replay attacks ļµG = ā€œCorrectā€ subset of SSL ā€“ Additional crypto considerations (black art) give SSL 3.0
  • 50. VerC, SteC VerS, SteS, KI { SecretC } C S KS Attack on Protocol B ļµIntruder in the middle ā€¢ Replaces server key by intruderā€™s key ā€¢ Intercepts secret from client ā€¢ Simulates client to server, server to client I VerC, SteC VerS, SteS, KS { SecretC } KI
  • 51. Solution: Certificate Authority ļµDefeats previous attack ā€¢ But client is not authenticated to the server ... VersionC, SuiteC VersionS, SuiteS, signCA{ S, KS } { SecretC } C S KS
  • 52. Replay Attacks ļµNetwork eavesdropper can record messages ļµIf protocol is deterministic, then ā€¢ Eavesdropper can replay client messages to server, OR ā€¢ Eavesdropper can replay server message to client ļµThis is a problem ā€¢ In each session, each party should be guaranteed that the other is a live participant in the session ļµSolution ā€¢ Each run of each protocol should contain at least one new value generated by each party, included in messages, and checked before session is considered done
  • 53. ā€œCoreā€ SSL Handshake with server auth (only) C Versions, suites, Ns sigca(S,Ks), ā€œServerHelloDoneā€ S C, Versionc, suitec , Nc {Versionc,Secretc}Ks Hash of sequence of messages Hash of sequence of messages switch to negotiated cipher Server public key in certificate signed by CA Nonces to avoid replay Hash messages to confirm consistent views
  • 54. Anomaly (Protocol F) C S ā€¦ SuiteC ā€¦ ā€¦ SuiteS ā€¦ ā€¦ Switch to negotiated cipher Finished Finished data data
  • 55. Anomaly (Protocol F) C S ā€¦ SuiteC ā€¦ ā€¦ SuiteS ā€¦ ā€¦ Switch to negotiated cipher Finished Finished data data X X
  • 56. Protocol Resumption C S SessionId, VerC= 3.0, NC, ... Finished Finished data data VerS= 3.0, NS, ...
  • 57. Version Rollback Attack C S SessionId, VerC= 2.0, NC, ... Finished Finished data data VerS= 2.0, NS, ... X X { NS } SecretKey { NC } SecretKey SSL 2.0 Finished messages do not include version numbers or cryptosuites
  • 58. Basic Pattern for Doing Your Project ļµRead and understand protocol specification ā€¢ Typically an RFC or a research paper ā€¢ Weā€™ll put a few on the website: take a look! ļµChoose a tool ā€¢ Murj by default, but weā€™ll describe many other tools ā€¢ Play with Murj now to get some experience (installing, running simple models, etc.) ļµStart with a simple (possibly flawed) model ā€¢ Rational reconstruction is a good way to go ļµGive careful thought to security conditions
  • 59. Background Reading on SSL 3.0 Optional, for deeper understanding of SSL / TLS ļµ D. Wagner and B. Schneier. ā€œAnalysis of the SSL 3.0 protocol.ā€ USENIX Electronic Commerce ā€™96. ā€¢ Nice study of an early proposal for SSL 3.0 ļµ J.C. Mitchell, V. Shmatikov, U. Stern. ā€œFinite-State Analysis of SSL 3.0ā€. USENIX Security ā€™98. ā€¢ Murj analysis of SSL 3.0 (similar to this lecture) ā€¢ Actual Murj model available ļµ D. Bleichenbacher. ā€œChosen Ciphertext Attacks against Protocols Based on RSA Encryption Standard PKCS #1ā€. CRYPTO ā€™98. ā€¢ Cryptography is not perfect: this paper breaks SSL 3.0 by directly attacking underlying implementation of RSA