Governing the KV Cache: Preventing Timing Side-Channel Leakage in Multi-Tenant LLM Inference
Cet article introduit KVGov, une couche de gouvernance qui empêche les attaques par canal auxiliaire de type temporels dans l'inférence de LLM multi-locataires en isolant cryptographiquement les clés du cache KV entre les locataires via un salage par principal et un ordonnanceur d'audit, éliminant ainsi les fuites inter-locataires tout en préservant 93 % de l'efficacité du cache de préfixe.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Imaginez une bibliothèque technologique et animée où un bibliothécaire magique (l'IA) peut répondre à toutes vos questions. Pour être super rapide, ce bibliothécaire garde une « fiche de référence » des débuts d'histoires les plus courants directement sur son bureau. Si vous posez une question qui commence par les mêmes mots que quelqu'un d'autre, le bibliothécaire n'a pas besoin de relire tout le livre ; il jette simplement un coup d'œil à la fiche de référence et saute directement à la réponse. C'est incroyablement efficace, ce qui permet d'économiser énormément de temps. Cependant, dans une bibliothèque très fréquentée par de nombreuses personnes (locataires) utilisant le même bureau, une personne sournoise pourrait découvrir ce que les autres lisent. Elle n'aurait pas besoin de voir le livre ; elle n'aurait qu'à observer le temps qu'il faut au bibliothécaire pour trouver la réponse. Si le bibliothécaire trouve la réponse instantanément, la personne sournoise sait : « Ah, ils doivent avoir posé la même question que moi à l'instant ! » Si le bibliothécaire doit marcher jusqu'aux étagères du fond, cela signifie que l'histoire est nouvelle. En chronométrant ces minuscules délais, un acteur malveillant pourrait reconstruire les secrets privés ou les requêtes des autres, transformant une caractéristique de vitesse en une fuite de sécurité.
Ce document s'attaque exactement à ce problème dans le monde des grands modèles de langage (LLM), les chatbots IA super intelligents que nous utilisons aujourd'hui. Ces modèles utilisent un « cache KV » (la fiche de référence) pour accélérer les réponses en se souvenant des parties précédentes d'une conversation. L'auteur a découvert que dans les environnements partagés, cette astuce de vitesse crée un « canal auxiliaire de temporisation » (timing side channel) — un signal secret caché dans le temps que prennent les actions. Il a découvert que trois groupes différents de hackers ont déjà montré comment utiliser ce signal pour voler des requêtes privées avec un succès de près de 100 %. Le document propose un nouveau système appelé KVGov pour corriger cela. Au lieu de simplement essayer de cacher le temps de réponse (ce qui est difficile), KVGov change les règles du jeu pour que la fiche de référence soit complètement différente pour chaque utilisateur. C'est comme donner à chaque visiteur de la bibliothèque sa propre encre invisible et unique, rendant sa fiche de référence spécifique illisible pour n'importe qui d'autre. L'auteur démontre, par des simulations et des tests sur matériel réel, que cette méthode arrête net les trois types d'attaques, tout en gardant la bibliothèque assez rapide pour être utile. Ils introduisent également un système de « garde de sécurité » intelligent qui sait exactement qui surveiller de plus près, et ils calculent le point de bascule où il devient plus sûr d'arrêter de partager totalement la fiche de référence.
Le grand braquage du cache
Considérez la mémoire de l'IA comme un immense tableau blanc partagé. Lorsque vous posez une question à l'IA, elle écrit les parties clés de votre phrase sur le tableau pour ne pas avoir à les recalculer si vous posez plus tard une question similaire. C'est le cache KV. Dans une configuration multi-locataire (où de nombreuses entreprises ou utilisateurs différents partagent le même serveur d'IA), tout le monde partage ce tableau blanc pour gagner du temps.
Le problème est que le tableau blanc est trop évident. Si un utilisateur sournois (l'attaquant) demande : « Quelle est la capitale de la France ? » et que l'IA répond instantanément, l'attaquant sait : « Oh, quelqu'un d'autre a dû poser cette question récemment ! » Si l'IA prend du temps, l'attaquant sait : « Personne n'a encore posé cette question. » En essayant des milliers de questions différentes et en chronométrant les réponses, l'attaquant peut cartographier exactement ce que les autres demandent, même s'il ne peut pas voir les réponses elles-mêmes. C'est ce qu'on appelle une attaque par canal auxiliaire de temporisation.
Le document souligne trois façons spécifiques dont les hackers ont utilisé cela :
- PROMPTPEEK : Le hacker devine une liste de questions possibles et les chronomètre toutes. Si leur temporisation correspond au schéma de la victime, ils savent exactement ce que la victime a demandé.
- EarlyBird : Le hacker essaie de deviner la question de la victime mot par mot. Si l'IA est rapide, il sait qu'il a trouvé le bon mot.
- InputSnatch : Ceci concerne les questions structurées, comme le remplissage d'un formulaire. Le hacker connaît le modèle (par exemple, « Afficher les transactions pour le compte [NUMÉRO] ») et essaie simplement différents numéros jusqu'à ce que l'IA soit rapide, révélant ainsi le numéro de compte secret.
L'auteur a testé cela sur du matériel réel (un GPU NVIDIA A100) et a constaté que la différence de temps est énorme : une requête « froide » (nouvelle information) a pris 149,6 millisecondes, tandis qu'une requête « mise en cache » (information réutilisée) n'a pris que 32,8 millisecondes. C'est un ratio de 0,22, ce qui est un signal massif et facile à repérer pour un hacker.
La solution : KVGov et l'encre magique
Le document présente KVGov, une nouvelle couche de sécurité qui agit comme un garde-barrière. Son astuce principale est l'isolation d'espace de noms par clé HMAC.
Imaginez que chaque utilisateur de la bibliothèque possède un tampon secret unique (un « sel » ou « salt »). Lorsque le bibliothécaire écrit une question sur le tableau blanc, il la tamponne d'abord avec l'encre secrète de l'utilisateur. Même si deux personnes posent exactement la même question, l'encre fait que l'entrée sur le tableau blanc paraît complètement différente pour tous les autres.
- Comment ça marche : Le système prend l'ID de l'utilisateur et une clé secrète pour créer un code unique. Ce code est mélangé à la toute première étape de la création de la clé de cache.
- Le résultat : Si un hacker tente de deviner ce qu'une victime a demandé, son propre tampon secret ne correspondra pas à celui de la victime. La sonde du hacker apparaîtra toujours comme un « échec » (lent) car son code ne correspond pas au code de la victime sur le tableau. Le signal de temporisation disparaît.
L'auteur a mené 1 000 essais simulés et a constaté que cet « HMAC-salt » seul suffisait pour faire passer le taux de réussite des attaques de 100 % à 0 % pour les trois types d'attaques. C'était la seule partie de leur système qui était strictement nécessaire ; les autres parties n'ajoutaient que des couches de sécurité supplémentaires.
Garder la bibliothèque rapide (L'astuce de la limite)
Vous pourriez penser : « Si tout le monde a son propre tableau blanc secret, la bibliothèque ne va-t-elle pas devenir lente ? » Si nous faisions en sorte que chaque utilisateur ait un tableau totalement séparé, nous perdrions le bénéfice de partager les questions communes (comme « Bonjour, comment allez-vous ? »).
Le document propose une solution ingénieuse appelée Salage de limite (Boundary Salting).
Imaginez une histoire où les 2 000 premiers mots sont les mêmes pour tout le monde (le préambule partagé), et seuls les 100 derniers mots sont différents (la partie privée).
- Ancienne méthode : Tamponner toute l'histoire avec l'encre secrète. Personne ne peut partager les 2 000 premiers mots.
- Méthode KVGov : Laisser les 2 000 premiers mots sans tampon afin que tout le monde puisse les partager. Ne tamponner que le tout premier mot où les histoires divergent.
- Le gain : Cela permet de conserver 93 % du bénéfice de vitesse tout en gardant les parties privées secrètes. L'auteur estime qu'avec une introduction partagée de 2 000 mots et une fin privée de 119 mots, le système resterait incroyablement rapide (environ 41,2 ms pour la partie privée), conservant la majeure partie de l'efficacité.
Le garde de sécurité intelligent : ORIGAMI
Même avec l'encre magique, l'auteur voulait s'assurer que personne ne tentait de passer en force. Ils ont créé ORIGAMI, un planificateur d'audit intelligent.
Imaginez que le directeur de la bibliothèque dispose d'un budget limité de gardes de sécurité. Ils ne peuvent pas surveiller tout le monde tout le temps. ORIGAMI utilise une stratégie mathématique (appelée approche de remplissage d'eau de Stackelberg) pour décider qui surveiller.
- La logique : Si un utilisateur est très précieux (haut risque) et a un historique de comportement suspect, il reçoit plus de gardes. Si un utilisateur présente un risque faible, il en reçoit moins.
- Le résultat : Dans des simulations avec 10 locataires et un mélange réaliste de types d'utilisateurs (un « coefficient de Gini » de 0,63), ce planning intelligent a réduit le succès attendu de l'attaquant de 12,6 % par rapport à un simple choix aléatoire de personnes à surveiller.
Quand arrêter de partager
Enfin, le document pose une question cruciale : « Quand est-il préférable d'arrêter de partager totalement le tableau blanc ? »
Ils ont utilisé un concept appelé Stabilité Évolutive pour trouver un point de bascule. Ils ont modélisé une population d'utilisateurs où certains partagent le cache (rapide mais risqué) et d'autres non (lent mais sûr).
- La conclusion : Si le pourcentage de hackers dans le système dépasse 31,6 %, il devient mathématiquement préférable pour tout le monde d'arrêter de partager le cache et de revenir à leurs propres tableaux privés. En dessous de ce chiffre, le partage reste la stratégie gagnante. Cela donne aux directeurs de bibliothèque une règle claire : si vous soupçonnez que plus d'un tiers des utilisateurs sont des acteurs malveillants, arrêtez de partager le cache.
Ce que cela ne résout pas
Le document est très clair sur ce qu'il ne résout pas.
- Il n'empêche pas les hackers de voler le cerveau de l'IA (les poids du modèle).
- Il n'empêche pas les hackers de manipuler l'IA pour qu'elle dise des choses malveillantes (injection de prompt).
- Il ne corrige pas les « caches sémantiques » (où l'IA correspond des idées plutôt que des mots exacts). Pour ceux-là, il faudrait un type de verrou différent.
- L'attaque EarlyBird (deviner mot par mot) est principalement bloquée par les nouveaux moteurs d'IA qui utilisent des « blocs » de mots plus larges, mais l'auteur prévient que pour les formulaires structurés (comme les numéros de compte), la taille du bloc n'a pas d'importance — la fuite de temporisation est toujours présente.
L'essentiel
L'auteur a prouvé que le gain de vitesse que nous aimons dans l'IA vient avec un coût caché : un signal de temporisation qui divulgue des informations privées. Il a montré que simplement cacher le signal ne suffit pas ; il faut briser le lien entre l'utilisateur et le cache. En utilisant une « encre magique » cryptographique (HMAC-salt) et en l'appliquant uniquement là où les secrets commencent, KVGov arrête complètement les fuites tout en gardant l'IA rapide. C'est une victoire pour la confidentialité qui ne nécessite pas de ralentir l'avenir de l'IA.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.