7.3.1. Cryptographie et collision de signature
7.3.1. Cryptographie et collision de signature
Ce document ne définit aucune primitive cryptographique propre et s’appuie sur d’autres spécifications pour ces éléments. Si l’algorithme de signature ou la clé utilisés pour traiter la base de signature sont vulnérables à des attaques, la signature résultante sera également sensible aux mêmes attaques.
Une attaque courante contre les systèmes de signature consiste à forcer une collision de signature, où la même valeur de signature vérifie correctement pour plusieurs entrées différentes. Comme cette spécification repose sur la reconstruction de la base de signature à partir d’un message HTTP et que la liste des composants signés est fixée dans la signature, il est difficile mais pas impossible pour un attaquant de provoquer une telle collision. L’attaquant devrait manipuler le message HTTP et ses composants couverts pour rendre la collision efficace.
Pour s’en prémunir, seules des clés et des algorithmes de signature validés devraient être utilisés pour signer des messages HTTP. Le registre « HTTP Signature Algorithms » est une source d’algorithmes de signature de confiance pour les applications qui les appliquent à leurs messages.
Bien qu’un attaquant puisse substituer séparément la valeur des paramètres de signature ou la valeur de signature, l’algorithme de génération de la base de signature (section 2.5) couvre toujours les paramètres de signature comme dernière valeur de la base de signature, au moyen d’une méthode de sérialisation déterministe. Cette étape lie fortement la base de signature à la valeur de signature, ce qui rend beaucoup plus difficile pour un attaquant une substitution partielle de la base de signature.