Https and cryptography

HTTP

HTTPS

Symmetric encrpytion

Symmetric encryption

 

XOR - One time pad

 

 

Secret key:

011010100010

Secret key:

011010100010

Symmetric encryption

 

XOR - One time pad

 

 

Secret key:

011010100010

Message 1:

101

Secret key:

011010100010
101 XOR 011
=110

Bob decipher:

110 XOR 011
= 101

Symmetric encryption

 

XOR - One time pad

 

 

Secret key:

011010100010

Message 2:

111

Secret key:

011010100010
111 XOR 010
=101

Bob decipher:

101 XOR 010
= 111

Symmetric encryption

 

XOR - One time pad

 

 

Pros

  • Very fast
  • Perfect encrypting if the secret key is random

Cons

  • Need a key as long as the message
  • Very dangerous to use the same key twice

One time pad

Use the same key twice

Secret key:

Message:

Result:

XOR
=
XOR
=

One time pad

Use the same key twice

Secret key:

Message:

Result:

XOR
=
XOR
=
XOR
=

One time pad

Use the same key twice

Secret key:

Message:

Result:

XOR
=
XOR
=
   M1                 S           M1 XOR S
   M2                 S           M2 XOR S
M1 XOR S XOR M2 XOR S = M1 XOR M2

Other issues

Small change in plain

Small change in ciphered

Historical algorithms (substitution, XOr, Vigenere, Enigma...)

Small change in plain

Small change in ciphered

Historical algorithms (substitution, XOr, Vigenere, Enigma...)

Small change in plain

Almost all ciphered changed

Modern algorithms (DES, AES, ...)

Data Encryption Standard

Input (64 bits)

000100111011

Left half (32 bits)

000100

Right half (32 bits)

111011

Input (64 bits)

000100111011

Left half (32 bits)

000100

Right half (32 bits)

111011

Out left (32 bits)

111011

Input (64 bits)

000100111011

Left half (32 bits)

000100

Right half (32 bits)

111011

Cipher
Function

Secret Key

Out left (32 bits)

111011

Input (64 bits)

000100111011

Left half (32 bits)

000100

Right half (32 bits)

111011

Cipher
Function

Secret Key

XOR

Out right (32 bits)

011100

Out left (32 bits)

111011

Input (64 bits)

000100111011

Left half (32 bits)

000100

Right half (32 bits)

111011

Cipher
Function

Secret Key

XOR

Out right (32 bits)

011100

Out left (32 bits)

111011

A single round of DES

Input (64 bits)

Initial Permutation

{

16 rounds

Final Permutation

Output (64 bits)

Complete DES

Input (64 bits)

Initial Permutation

{

16 rounds

Final Permutation

Output (64 bits)

Complete DES

Key (56 bits)

Sub-key 1

Sub-key 16

Input (64 bits)

Initial Permutation

{

16 rounds

Final Permutation

Output (64 bits)

Complete DES

Key (56 bits)

Sub-key 1

Sub-key 16

Key schedule

Data

Encryption

Standard

is now broken

A

E

S

is the new standard

Advanced

Encryption

Standard

is the new standard

Symmetric encryption

 

AES

 

 

Secret key:

011010100010

Secret key:

011010100010
c = AES(message, secret_key)

Bob decipher:

message =
AES_decipher(c, secret_key)

Symmetric encryption

 

AES

 

 

Secret key:

011010100010

Secret key:

011010100010
c = AES(message, secret_key)

Bob decipher:

message =
AES_decipher(c, secret_key)

?

Key exchange

Asymmetric cryptography

(e.g. RSA)

Public RSA key \(K_p\)

Secret RSA key \(K_s\)

Asymmetric cryptography

(e.g. RSA)

Public RSA key \(K_p\)

Secret RSA key \(K_s\)

Asymmetric cryptography

(e.g. RSA)

Public RSA key \(K_p\)

Secret RSA key \(K_s\)

\(ciph\) = RSA_cipher("Hello!", \(K_p\))

RSA_decipher(\(ciph, K_s\))

➡️ "Hello!"

Asymmetric cryptography is heavy

Key exchange v.1

\(ciph\) = RSA_cipher("E563 65AC", \(K_p\))

Public RSA key \(K_p\)

Secret RSA key \(K_s\)

\(ciph\) = RSA_cipher("E563 65AC", \(K_p\))

Public RSA key \(K_p\)

Secret RSA key \(K_s\)

AES-key

Key exchange v.1

\(ciph\) = RSA_cipher("E563 65AC", \(K_p\))

Public RSA key \(K_p\)

Secret RSA key \(K_s\)

AES-key

AES(message, "E536 65AC")

Key exchange v.1

Key exchange v.2

Metaphor: agree on  a color

 

Define yellow as common color

Define yellow as common color

Alice's secret color

Bob's secret color

Define yellow as common color

Alice's secret color

Bob's secret color

My color mixed with the common one

Define yellow as common color

Alice's secret color

Bob's secret color

My color mixed with the common one

My color mixed with the common one

Define yellow as common color

Alice's secret color

Bob's secret color

My color mixed with the common one

My color mixed with the common one

+        

Define yellow as common color

Alice's secret color

Bob's secret color

My color mixed with the common one

My color mixed with the common one

\(\ \)

+         =

Define yellow as common color

Alice's secret color

Bob's secret color

My color mixed with the common one

My color mixed with the common one

+         =

=         +

secret shared color

Define a base \(g\) and a prime \(p\)

Alice's secret number: \(a\)

Bob's secret number: \(b\)

My color mixed with the common one

Define a base \(g\) and a prime \(p\)

The result of \(g^a~\text{mod} ~p\)

The result of \(g^b~\text{mod} ~p\)

Alice's secret number: \(a\)

Bob's secret number: \(b\)

My color mixed with the common one

\({(g^b)}^a \text{mod} p\) =

= \({(g^a)}^b \text{mod} p\)

secret shared key

Define a base \(g\) and a prime \(p\)

The result of \(g^a~\text{mod} ~p\)

The result of \(g^b~\text{mod} ~p\)

Diffie-Hellman
key exchange

Hi Alice, I'm Bob, let us define shared secret keys!

Hi Bob, I'm Alice, let us define shared secret keys!

Hi Alice, I'm Bob, let us define shared secret keys!

Hi Bob, I'm Alice, let us define shared secret keys!

Man in the middle
attack

Need to authenticate the server first

Need to authenticate the server first

Asymmetric cryptography

(e.g. RSA)

Public key \(K_p\)

Secret key \(K_s\)

\(ciph\) = RSA_cipher("Hello!", \(K_p\))

RSA_decipher(\(ciph, K_s\))

➡️ "Hello!"

Asymmetric cryptography

(e.g. RSA)

Public key \(K_p\)

Secret key \(K_s\)

\(ciph\) = RSA_cipher("Hello!", \(K_p\))

RSA_decipher(\(ciph, K_s\))

➡️ "Hello!"

RSA is used to ensure
confidentiality

Asymmetric cryptography

(e.g. RSA)

Public key \(K_p\)

Secret key \(K_s\)

RSA_cipher(\(sign, K_p\))

➡️ "Hi Bob!"

RSA_decipher("Hi Bob!", \(K_s\)) = \(sign\)

Asymmetric cryptography

(e.g. RSA)

Public key \(K_p\)

Secret key \(K_s\)

RSA_decipher("Hi Bob!", \(K_s\)) = \(sign\)

RSA_cipher(\(sign, K_p\))

➡️ "Hi Bob!"

RSA is used to ensure
authenticity

Public key \(K_p\)

Secret key \(K_s\)

RSA_cipher(\(sign, K_p\))

➡️ "Hi Bob!"

RSA is used to ensure
authenticity

RSA_decipher("Hi Bob!", \(K_s\)) = \(sign\)

\(sign\)

The signature has to change!

Public key \(K_p\)

Secret key \(K_s\)

RSA_cipher(\(sign, K_p\))

➡️ "0111001..."

RSA is used to ensure
authenticity

RSA_decipher("0111001...", \(K_s\)) = \(sign\)

"Sign this long random string: 0111001..."

Bob challenges Alice

Certificate authorities

A few well known compagnies

CA Public key
DigiCert 1652 az512
GeoTrust a142 684a
GlobalSign a654 Fa32

Certificate authorities

A few well known compagnies

0. The server's owner asks for a couple of a RSA public/secret key to a CA.

The PK is signed by the CA.

Certificate authorities

A few well known compagnies

1. "Hey, here is a very long random string \(c\) (for challenge), sign it plz!"

Certificate authorities

A few well known compagnies

2. The server compute the signature with its private key

1. "Hey, here is a very long random string \(c\) (for challenge), sign it plz!"

Certificate authorities

A few well known compagnies

2. The server compute the signature with its private key

1. "Hey, here is a very long random string \(c\) (for challenge), sign it plz!"

3. "Sure, here is the signature of your string and the certified public key."

Certificate authorities

A few well known compagnies

3. "Sure, here is the signature of your string and the certified public key."

CA Public key
DigiCert 1652 az512
GeoTrust a142 684a
GlobalSign a654a32

4. The browser checks the signature of the challenge

AND the signature of the public key.

Chain of CAs

 

Chain of CAs

 

Need to trust all the intermediate CAs!

SSL sum up

  • The client check the identity of the server
     
  • Client and server exchange a symmetric secret key


     
  • Client and server communicate by encrypting data with the symmetric key.
     

SSL sum up

  • The client check the identity of the server
    Certificate Authorities, signature (e.g. with RSA)
  • Client and server exchange a symmetric secret key
    Asymmetric encryption (e.g. with RSA or Diffie-Hellman)
     
  • Client and server communicate by encrypting data with the symmetric key.
    e.g. AES

SSL sum up

  • The client check the identity of the server
    Certificate Authorities, signature (e.g. with RSA)
  • Client and server exchange a symmetric secret key
    Asymmetric encryption (e.g. with RSA or Diffie-Hellman)
     
  • Client and server communicate by encrypting data with the symmetric key.
    e.g. AES

SSL handshake

SSL record

HTTPS & Cryptography - TWTS 07

By sebbes

HTTPS & Cryptography - TWTS 07

  • 616