Adloun

Le pire cas provoqué, chronométré

Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 12 — Tableaux associatifs, hachage et sérialisation

Énoncé

En s'appuyant sur l'exercice précédent, construire clés distinctes de même haché, les insérer dans une table, et chronométrer. Comparer à clés ordinaires. Que faut-il en conclure pour un serveur ?

Corrigé

Les clés hostiles sont les listes [1;...;12; i] de l'exercice précédent ; les clés honnêtes sont les listes [i]. Mesuré :

clés honnêtesclés hostilesrapport
hachés distinctstempshachés distinctstemps
s s
s s
s s
s s

Lire la colonne de droite. Le temps hostile quadruple quand double : c'est la signature d'un . Et pour cause — toutes les clés forment une seule chaîne, la -ième insertion parcourt les précédentes pour vérifier l'absence, et . La table de hachage est devenue une liste chaînée, avec le surcoût du hachage en prime.

Le rapport n'est pas une constante : il croît linéairement, de à quand passe de à . Un rapport qui croît n'est pas une lenteur, c'est un changement de complexité.

Ce qu'il faut en conclure pour un serveur. C'est une attaque par déni de service, et elle est réelle : un serveur qui range dans une table de hachage des données venues du réseau — paramètres d'une requête, en-têtes, identifiants de session — offre à l'attaquant le choix des clés. Il lui suffit d'envoyer quelques milliers de clés de même haché pour que le serveur passe des secondes de calcul sur une requête qui devait en prendre des microsecondes. Quelques requêtes par seconde suffisent alors à saturer une machine.

Les deux parades.

Et la leçon de fond. Le tableau de synthèse du chapitre dit « en moyenne ». Ces mesures montrent que « en moyenne » présuppose un tirage : elles décrivent des clés arbitraires, pas des clés choisies. Dès que quelqu'un choisit les entrées, la moyenne n'a plus de sens et seul le pire cas parle — et il vaut par opération. Une complexité en moyenne est une hypothèse sur le monde, pas une propriété du programme.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.