La couche sécurité vient s'intégrer juste au-dessus de la couche transport de telle sorte qu'elle est située au niveau le plus bas possible, ce qui permet d'assurer grâce à des normes établies, une sécurité meilleure que si elle avait été seulement au niveau applicatif. Le protocole WTLS permet de respecter trois des quatre contraintes principales lorsqu'on parle de sécurité liée aux réseaux :
1 - la confidentialité : elle assure aux deux parties en présence (mécanisme client serveur) qu'elles sont les seules à avoir accès aux informations échangées. Ceci est assuré par un mécanisme d'encryption des données.
2 - l'intégrité des données : cela permet de s'assurer que les données n'ont pas été altérées par l'une ou l'autre des parties. On utilise pour cela des algorithmes de hashage pour s'assurer de la validité des données. Il y a une réémission si un changement d'empreinte est détecté d'un coté ou de l'autre
3 - l'authentification (coté serveur) : l'authentification a pour but de prouver qu'un tiers est bien celui qu'il prétend être. Des certificats permettent d'authentifier les serveurs.
Seul le principe de non-répudiation n'est pas géré par la couche sécurité : celle ci aurait pour but de faire preuve juridique qu'une transaction a bien eu lieu. Ce mécanisme est souvent associé à une signature numérique.
On peut penser que les mécanismes de sécurité mis en Suvre nécessitent de grosse puissance de calcul, mais il n'en est rien. WTLS a été pensé de manière à s'adapter aux capacités des réseaux et mobiles GSM, c'est à dire faible taux de transfert, interactions lentes, capacités de calcul et de mémoire limitées et restriction gouvernementale en matière de chiffrement.
Détails
La couche sécurité est construite de façon modulaire, c'est à dire qu'elle dépend du niveau de sécurité demandé pour une application donnée. La couche WTLS permet d'avoir une interface pour l'administration des connexions sécurisées. Ce modèle respecte les spécificités définies par TLS 1.0. Les mécanismes mis en Suvre dans cette partie ne seront pas abordés dans les détails, certains étant plus proche de l'algorithmique ou de la cryptographie.
La couche WTLS permet à un client d'établir une connexion sécurisée avec un serveur et de fixer les options de sécurités prises en compte. L'établissement de la connexion sécurisée s'effectue en plusieurs étapes et le client aussi bien que le serveur peut annuler la communication à tout moment. La négociation inclut les paramètres de sécurité, l'échange de clés et l'authentification.
Dans une session pleinement sécurisée, on retrouve un mécanisme similaire à la figure ci dessous :
Routine d'établissement de connexion :
L'ensemble des primitives de la couche WTLS est donné par la figure ci-dessous
Nom
Type de primitive
Description
Sec-Unit-Data
Transport
Echange d'informations
Sec-Create
Service
Création de connexion
Sec-Exchange
Service
Echange de clé
Sec-Commit
Service
Passage en mode sécurisé
Sec-Terminate
Service
Mettre fin au mode sécurisé
Sec-Exception
Service
Avertir d'une exception
Sec-Create-Request
Service
Demande d'initialisation de la part du serveur
Chacune de ces primitives peut être générée par le client ou le serveur selon le respect de certaines conditions prédéfinies. Suivant les primitives utilisées, l'état de la connexion client-serveur va passer par plusieurs étapes chacune correspondant à un niveau de sécurisation plus ou moins élevé.
Pour réaliser toutes ces opérations, la couche WTLS est en fait subdivisée en deux autres couches. L'une est appelée la couche enregistrement, chargée de transmettre les données, ventuellement les compresser, d'appliquer un code d'authentification, de chiffrer et de faire les opérations inverses pour le déchiffrage. L'autre couche est en fait le protocole d'accord permettant aux deux éléments en présence de se mettre d'accord sur la sécurité mise en jeu.
Couche enregistrement :
Paramètres définissant la connexion :
Nom
Description
connection end
Type de terminal, client ou serveur
bulk cypher algorithm
Algorithme utilisé pour le chiffrement. Ce paramètre précise des informations relatives au chiffrement
MAC algorithm
Algorithme utilisé pour l'authentification. Ce paramètre précise des informations relatives à l'authentification
compression algorithm
Type de compression utilisée
master secret
Clé secrète de 20 octets utilisée pendant les échanges
client random
16 octets aléatoires fournis par le client
server random
16 octets aléatoires fournis par le serveur
sequence number mode
Définit la façon dont les séquences d'octets sont échangées
key refresh
Temps au bout duquel une nouvelle clé secrète est générée
Une fois que ces paramètres de sécurité ont été changés et que les clés ont été tablies, les états de connexion peuvent être initialisés en leur faisant passer certaines étapes. Pour que la connexion soit maintenue, les méthodes mises en Suvre doivent respecter les paramètres de sécurité définis au-dessus, notamment le temps maximal avant une réémission de la clé.
Couche de négociation de connexion :
Pour négocier une connexion sécurisée, un protocole d'accord appelé handshake est nécessaire.
Le protocole Handshake met en Suvre les fonctions suivantes :
· Echange de messages de bienvenue pour un accord entre les deux parties sur les algorithmes utilisés.
· Echange de valeurs aléatoires.
· Echange des paramètres de chiffrement pour permettre au lient et au serveur de se mettre d'accord sur une " pré clé de chiffrement "
· Echange des certificats et des informations chiffrées pour permettre au client et au serveur de s'authentifier
· Génération de la clé secrète à partir de la " pré clé secrète " et change de données aléatoires
· Proposer des mécanismes de sécurité pour la couche enregistrement
· Permettre au client ou au serveur de vérifier que l'autre extrémité à bien calculer les mêmes paramètres de sécurité et que la négociation s'est bien déroulée sans tentatives d'accès malveillant (hacker).
Il est possible de modéliser le mécanisme de négociation par la figure suivante :
Les paramètres définis dans ce protocole sont donnés sur la figure suivante :
Nom
Description
session identifier
Séquence d'octet choisie par le serveur pour identifier la session en cours
protocol version
Version du protocole WTLS
peer certificate
Certificat utilisé (peut être nul)
compression method
Type d'algorithme utilisé pour compersser les données à chiffrer
cypher spec
Spécifie l'algorithme utilisé pour le hashage et l'authentification
master secret
Clé secrète de 20 octets
sequence number
Séquence d'octets échangés
key refresh
Temps avant recalcul de clé
is resumable
Précise si la connexion peut être reprise
Ces indicateurs sont utilisés pour créer des paramètres de connexion sécurisée eux-mêmes utilisés pour le chiffrement des données protégées. Des sous protocoles avec des méthodes prédéfinies permettent, au sein même du protocole d'accord de modifier certains paramètres de négociation alors même que la connexion est déjà établie.