Implementation and Verification of TLS Using the Scyther Tool
(Project 3)
Course 2
Nour EL MADHOUN
Outline
• Some New Scyther Notions
• Asymmetric Crypto with Scyther Tool
• TLS Protocol: Overview
Some New Scyther Notions
• const:
- global declaration - exemple:
usertype Text;
const m1: Text;
• Agent:
- type used to define an agent
Some New Scyther Notions
• macro:
- abbrev. for a message, set of messages, etc.
- exemple:
macro messageG=H(X,Y, Rand), {m1}k(X,Y);
Asymmetric Crypto with Scyther
• By default, in Scyther:
➢ Each actor has a public key & a secret key
➢ pk(X): public key of X
➢ sk(X): secret key of X
Asymmetric Crypto with Scyther
• We can model other asymmetric keys for X:
const pkX2: Function;
secret skX2: Function;
const CA: Agent;
inversekeys (pkX2, skX2);
macro CertX2= {H(X2,pkX2, otherInfo)}sk(CA);
TLS Protocol: Overview
SSL (Secure Sockets Layer) or
TLS (Transport Layer Security)
TLS is the last version of SSL
TLS Protocol: Overview
1) SSL/TLS
– Keeping an internet connection secure
– Safeguarding any sensitive data that is being sent between two systems
– Preventing criminals from reading and modifying any information transferred
TLS Protocol: Overview
1) SSL/TLS
– The two systems can be
a server and a client or server and server – For example:
a shopping website (server) and browser (client)
TLS Protocol: Overview
2) How does SSL/TLS work ?
■ The server:
- Has a pair of keys (public/secret) - Has a Certificate
■ The client
- May have a pair of keys (public/secret) - May have a Certificate
■ The client must authenticate the server
TLS Protocol: Overview
3) Description
3) Description
1. C->S 2. S->C
TLS Protocol: Overview
3) Description 1. C->S
- Le client envoie un « ClientHello » au serveur - « ClientHello » contient:
*Version. SSL,
*paramètres de chiffrement,
*des données générées aléatoire, etc.
TLS Protocol: Overview
3) Description 2. S->C
- Le serveur envoie un « ServeurHello » au client - «ServeurHello contient:
*Version. SSL,
*paramètres de chiffrement,
*des données générées aléatoire, etc.
TLS Protocol: Overview
3) Description
3. S->C
TLS Protocol: Overview
3) Description 3. S->C
- Le serveur envoie au client:
* son propre certificat « Certificate »,
*des données signées par sa clé secrète,
*demande du certificat client «CertificateRequest»,
*un «ServerHelloDone » indiquant au client que c’est son tour pour continuer la négociation
TLS Protocol: Overview
3) Description
3. S->C
- Le client utilise les informations reçues du serveur pour l'authentifier (vérification du certificat, signatures, etc.)
TLS Protocol: Overview
3) Description
4. C->S 5. C->S 6. C->S
TLS Protocol: Overview
3) Description
4. 5. 6. C->S
- Le client:
*envoie son certificat « Certificate » au serveur,
*crée un code secret préliminaire pour la session
«ClientKeyExchange»,
*le chiffre avec la clé publique du serveur (obtenue du certificat du serveur),
TLS Protocol: Overview
3) Description
4. 5. 6. C->S
- Le client doit alors signer une autre portion de données
«CertificateVerify » limitée à cette négociation et connue par le client et le serveur
- Cette portion peut être la signature du hash de tous les messages changés anciennement durant la négociation SSL
TLS Protocol: Overview
3) Description
4. 5. 6. C->S
- Le serveur déchiffre la portion en utilisant la clé publique du client et compare les résultats des hashs
- Le serveur authentifie aussi le client
- Si le client est authentifié avec succès, le serveur utilise
TLS Protocol: Overview
3) Description
4. 5. 6. C->S
- Le client et le serveur utilise tous les deux, le code secret principale pour générer une clé de session qui est une clé symétrique utilisée pour chiffrer et déchiffrer les informations échangées confidentielles.
TLS Protocol: Overview
3) Description
7. C->S 8. S->C
TLS Protocol: Overview
3) Description
7. C->S
- Le client envoie un message au serveur pour l'informer que les futures données transmises seront chiffrées avec la clé de session « ChangeCipherSpec ».
- Il envoie alors séparément un message (chiffré) indiquant que la négociation côté client est finie « Finished ».
TLS Protocol: Overview
3) Description
8. S->C
- Le serveur fait la même chose que le client en 7
- Finalement, les deux utilisent la clé de session pour chiffrer tout ce qui confidentiel.