HMAC (Hash-Based Message Authentication Codes) : définition
HMAC (Hash-Based Message Authentication Codes) : définition
HMAC (Hash-Based Message Authentication Codes) : définition
HMAC (Hash-Based Message Authentication Code) est une technique d’authentification cryptographique qui utilise une fonction de hachage et une clé secrète.
Grâce à HMAC, vous pouvez procéder à une authentification et vérifier que les données sont correctes et authentiques avec des secrets partagés, contrairement aux approches qui utilisent les signatures et la cryptographie asymétrique.
Comment fonctionne HMAC ?
Deux parties souhaitent communiquer, mais elles veulent s’assurer que le contenu de leur connexion reste privé. Qui plus est, elles se méfient d’Internet et ont besoin d’un moyen de vérifier que les paquets qu’elles reçoivent n’ont pas été altérés. HMAC est une bonne solution à adopter.
Les clés HMAC se composent de deux parties :
- Clés cryptographiques. Un algorithme de chiffrement altère les données, et un destinataire a besoin d’un code (ou d’une clé) spécifique pour les rendre à nouveau lisibles. HMAC s’appuie sur des ensembles partagés de clés secrètes.
- Fonction de hachage. Un algorithme de hachage altère ou assimile à nouveau le message. HMAC utilise des fonctions de hachage cryptographiques génériques, comme SHA-1, MD5 ou RIPEMD-128/60.
Deux parties utilisant ce système doivent convenir des éléments suivants :
- Clés secrètes. Elles doivent avoir un moyen de décoder les messages qu’elles reçoivent. Une clé secrète mène à bien cette tâche et doit rester secrète et dissimulée.
- Algorithme. Elles doivent choisir une fonction de hachage par laquelle passeront tous leurs messages.
Une fois cette opération terminée, le message est considéré comme irréversible et résistant au piratage. Quiconque interceptant ce message ne pourra même pas en deviner la longueur. Le processus rend le contenu du message complètement inutile pour toute personne ne disposant pas d’une clé ou d’un code.
Les outils de test HMAC peuvent aider à comprendre le fonctionnement des codes HMAC. Imaginez que vous ayez ces entrées :
- Message potentiel : J’aimerais acheter 100 unités.
- Clé secrète : 666
- Algorithme : MD5
Le message en résultant se présente comme suit : « fd9f18089206e67b163771a3883185ab ».
Ce processus de traduction en apparence simple repose en réalité sur une épaisse couche de mathématiques. Lorsque nous tentons de montrer à quoi ressemble un code HMAC sur le plan mathématique, nous utilisons des schémas comme celui ci-dessous.
Il est indispensable que les développeurs comprennent le concept mathématique sous-jacent. Si l’on vous demande d’expliquer votre travail et les protections que vous offrez, un schéma peut souvent être plus parlant que des mots.
Cependant, les utilisateurs lambda peuvent ne jamais avoir besoin de comprendre le concept mathématique. Savoir que leurs messages sont protégés peut être suffisant.
Comment implémenter HMAC ?
Pour utiliser HMAC en tant qu’individu ou développeur, vous avez besoin de trois éléments importants. Vous devrez également vous mettre d’accord sur ces éléments avec vos destinataires, afin que vous utilisiez tous les mêmes outils en même temps.
Voici les deux éléments dont vous aurez besoin :
- Un secret partagé
- Un outil de hachage
Seul votre serveur doit connaître les trois éléments pour tous vos utilisateurs. Par ailleurs, ces données doivent être farouchement protégées. Quiconque connaissant les clés secrètes pour vos membres peut prendre le contrôle de votre serveur et/ou envoyer des données frauduleuses.
Chaque site web et environnement de codage est différent, mais un exemple peut tout de même s’avérer utile. Imaginez que vous aimeriez utiliser HMAC sur le trafic se dirigeant vers votre site web via des annonces dynamiques de Google. Vous allez :
- Créer votre jeton dans Ad Manager. Vous préciserez des détails sur la visite ainsi que la date et l’heure. Vous utilisez la clé d’authentification de Google pour créer votre « clé secrète ».
- Appliquer ce jeton. Vous pouvez placer votre nouveau jeton dans le header de votre demande d’autorisation, ou le transmettre via une chaîne de requête ou un paramètre de données de formulaire.
Google rend ce processus à la fois facile et rapide. Les développeurs peuvent accéder à un tutoriel simple et copier du code en quelques minutes seulement.
Notez que vous ne demandez pas à vos visiteurs Google Ads de mémoriser un code ni de procéder à un décodage quelconque. Le serveur de l’utilisateur comprend les exigences de codage de votre site web et l’ensemble du processus de configuration et de traduction du jeton est invisible pour l’utilisateur.
Malgré tout, vous devez tester régulièrement cet environnement avant de le déployer. Si vous rencontrez une erreur de codage, vous pourriez empêcher tous les visiteurs d’accéder à votre site, car ils seraient tous considérés comme des acteurs frauduleux. Tester tous les systèmes comme celui-ci sur plusieurs terminaux avant de les déployer à grande échelle est une stratégie payante.
Quand utiliser HMAC ?
Presque toutes les entreprises possèdent des informations sensibles. Si vous recevez des paiements, par exemple, vous disposez probablement de données de carte de crédit. Et si vous avez des collaborateurs, vous détenez des numéros de sécurité sociale qui pourraient être volés.
Et certaines entreprises ont des enjeux encore plus importants. Si vous évoluez dans un environnement fortement réglementé, tel que la santé, ou si vous avez accès à des secrets commerciaux, d’ordre militaire par exemple, il est préférable d’aller au-delà des mesures de sécurité traditionnelles.
HMAC, avec son double niveau de protection, peut s’avérer idéal pour les entreprises soumises à des exigences particulièrement strictes et qui doivent prouver qu’elles mettent tout en œuvre afin de protéger leurs ressources.
Aide d’Okta
Chez Okta, nous sommes convaincus que les solutions de sécurité personnalisées aident nos clients à prospérer. Découvrez comment Okta utilise les algorithmes de signature HMAC pour protéger votre entreprise.
Références
HMAC : Keyed-Hashing for Message Authentication. Février 1997. Network Working Group
HMAC and Key Derivation. Practical Cryptography for Developers.
HMAC Generator/Tester Tool. FreeFormatter.
How API Request Signing Works (And How to Implement HMAC in NodeJS). 2016. Andrew Hoang.
Implement HMAC Authentication (Beta). Google Ad Manager Help.