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.Â