Dans la séquence de vidéo précédente, nous avons vu que pour les algorithmes de chiffrement et d'intégrité, nous avons besoin de plusieurs clés distinctes qui doivent être distribuées dans plusieurs éléments du réseau LTE. Dans cette séquence vidéo, nous allons voir comment ces clés sont générées et comment elles sont distribuées dans le réseau. Pour rappel, toute la sécurité d'un réseau 4G repose sur le principe qu'il y a un seul secret partagé entre le HSS et la carte SIM. Cette clé K ne doit jamais quitter ces deux entités. Cependant, nous avons besoin d'une clé pour assurer le chiffrement des données utilisateurs entre le terminal mobile et l'eNodeB, d'une deuxième clé pour chiffrer les données de signalisation sur le même lien. Et d'une troisième clé pour chiffrer les messages entre le MME et le terminal mobile. Pour assurer l'intégrité des messages de signalisation, nous avons besoin d'une clé afin de protéger les échanges entre le terminal mobile et l'eNodeB, et d'une deuxième pour protéger les échanges entre le terminal mobile et le MME. Cela fait donc bien plus que notre secret partagé K. Et en plus, cela nécessite la distribution de ces clés partout dans le réseau. En effet, grâce aux échanges protocolaires entre la carte SIM et le HSS, puis entre le terminal mobile et le MME, le réseau et le terminal vont générer toutes les clés nécessaires en partant du secret partagé K, qui, lui, ne quittera jamais le HSS et la carte SIM. Comme la génération de toutes les clés demandées nécessite l'utilisation, ou la connaissance, du secret K, on pourrait imaginer que ça soit le HSS qui le génère et qui le distribue lui-même. Ceci pose un problème de passage à l'échelle du système. À chaque changement d'un eNodeB ou du MME, le HSS doit être contacté pour générer de nouvelles clés. Pour éviter cela, le HSS délègue la génération des clés au MME, du réseau dans lequel se trouve actuellement l'abonné. Lors des premiers échanges, le HSS génère une clé appelée KASME ou ASME vient d'Access Security Management Entity. Cette clé est ensuite envoyée au MME, responsable pour la communication avec le terminal mobile. C'est cette clé qui permettra au MME de générer le reste de clés nécessaires. Cependant, le HSS de l'abonné donne sa confiance uniquement au réseau qui vient de le contacter. On veut éviter alors une situation dans laquelle l'abonné peut être transféré vers un réseau tiers sans une autorisation explicite. C'est pour cela que le HSS génère la clé KASME, en prenant en compte l'identité du réseau qui demande cette clé. L'identité d'un opérateur, comme nous l'avons vu précédemment, est définie par le couple MCC/MMC. Cela rend l'utilisation de cette clé KASME par un autre réseau mobile impossible. Si l'abonné doit s'identifier auprès d'un autre réseau, ça serait forcément après une autorisation explicite de la part de son HSS. Suite aux échanges avec le terminal mobile, le MME génère une autre clé: la K eNodeB, à la base de la clé KASME. C'est cette clé qui est donnée à l'eNodeB actuel auquel s'attache le terminal mobile. Au sens du terminal mobile, la carte SIM génère la clé KASME, qu'elle passe au terminal mobile lui-même, qui en déduit la K eNodeB. La clé KASME, K eNodeB ne sont pas utilisées directement pour protéger les échanges. Elles servent comme base pour générer l'ensemble des clés nécessaires pour l'intégrité et le chiffrement des échanges. En première place, ce sont les clés des chiffrements et d'intégrité entre le MME et le terminal mobile qui sont générées à partir de la clé KASME, l'abréviation NAS qui indique que ce sont des clés entre le terminal mobile et le MME. Ensuite, la protection des messages de signalisation entre le terminal mobile et l'eNodeB, chiffrement et intégrité, ainsi que la clé de chiffrement de données utilisateurs. L'abréviation RRC indique qu'il s'agit des clés pour la signalisation entre le terminal mobile et l'eNodeB, tandis que l'abrogation UP indique que ce sont des clés pour les données utilisateurs. Nous allons voir dans la suite du cours la signification de ces abréviations. Mais quel est le mécanisme avec lequel on peut dériver ces clés et en construire une telle hiérarchie ? En effet, cette hiérarchie des clés est construite à la base d'une utilisation ingénieuse des fonctions cryptographiques de hachage. Une telle fonction prend en paramètre une clé secrète et des données à hacher. Comme la sortie est d'une taille fixe, et grâce aux propriétés des fonctions cryptographiques de hachage, la sortie peut être elle-même traitée comme une clé. Ensuite, la clé KASME est calculée en utilisant le secret K, et en prenant en entrée le nombre aléatoire RAND, l'identifiant de l'opérateur et le numéro SQN. La clé KASME, à son tour, sert comme secret partagé pour générer la clé K eNodeB. Et ainsi de suite pour la génération de la hiérarchie complète qui sert à protéger les échanges entre le terminal et le réseau.