Aller au contenu principal

2.6. Key Localization Algorithm (Algorithme de localisation de clé)

2.6. Key Localization Algorithm (Algorithme de localisation de clé)

Une clé localisée (localized key) est une clé secrète partagée entre un utilisateur U et un moteur SNMP autorisé E. Même si un utilisateur peut n'avoir qu'un seul mot de passe et donc une seule clé pour l'ensemble du réseau, les secrets réels partagés entre l'utilisateur et chaque moteur SNMP autorisé seront différents. Cela est réalisé par la localisation de clé.

Purpose of Key Localization (Objectif de la localisation de clé)

La localisation de clé offre plusieurs avantages de sécurité importants:

  1. Clés uniques par moteur (Unique Keys per Engine): Chaque moteur SNMP autorisé a une clé localisée unique pour chaque utilisateur, même si l'utilisateur utilise le même mot de passe partout.

  2. Impact limité de la compromission de clé (Limited Key Compromise Impact): Si une clé localisée est compromise sur un moteur, elle ne compromet pas les clés de l'utilisateur sur d'autres moteurs.

  3. Protection spécifique au moteur (Engine-Specific Protection): Les clés sont cryptographiquement liées à l'identité spécifique du moteur (snmpEngineID).

Key Localization Process (Processus de localisation de clé)

Le processus de localisation de clé convertit la clé Ku d'un utilisateur (dérivée de son mot de passe) en une clé localisée Kul spécifique à un moteur SNMP autorisé E.

Étape 1: Conversion du mot de passe en clé (Password to Key Conversion)

Tout d'abord, si un utilisateur utilise un mot de passe, le mot de passe de l'utilisateur est converti en une clé Ku en utilisant l'un des deux algorithmes décrits dans les annexes A.2.1 et A.2.2:

  • Pour l'authentification basée sur MD5: Utiliser l'algorithme de mot de passe à clé de l'annexe A.2.1
  • Pour l'authentification basée sur SHA: Utiliser l'algorithme de mot de passe à clé de l'annexe A.2.2

Cela produit une clé utilisateur Ku qui est indépendante de tout moteur SNMP spécifique.

Étape 2: Localisation de clé (Key Localization)

Pour convertir la clé Ku en une clé localisée Kul de l'utilisateur U au moteur SNMP autorisé E, l'algorithme suivant est utilisé:

  1. Ajouter snmpEngineID à Ku: Prendre la clé Ku et y ajouter le snmpEngineID du moteur SNMP autorisé E.

  2. Ajouter Ku à nouveau: Ajouter la clé Ku au résultat de l'étape 1, enveloppant ainsi le snmpEngineID dans deux copies de la clé Ku de l'utilisateur.

  3. Hacher le résultat: Exécuter une fonction de hachage sécurisée sur les données concaténées. La fonction de hachage utilisée dépend du protocole d'authentification défini pour cet utilisateur U au moteur SNMP autorisé E:

    • Si utilisation de l'authentification HMAC-MD5-96: Utiliser le hachage MD5
    • Si utilisation de l'authentification HMAC-SHA-96: Utiliser le hachage SHA-1
  4. Le résultat est la clé localisée: La sortie de la fonction de hachage est la clé localisée Kul pour l'utilisateur U au moteur SNMP autorisé E.

Algorithm Pseudocode (Pseudocode de l'algorithme)

Entrée:
Ku - Clé de l'utilisateur (dérivée du mot de passe)
snmpEngineID - Identifiant unique du moteur

Processus:
Kul = Hash(Ku || snmpEngineID || Ku)

Où:
|| - désigne la concaténation
Hash - est MD5 pour HMAC-MD5-96 ou SHA-1 pour HMAC-SHA-96

Sortie:
Kul - Clé localisée pour l'utilisateur U au moteur E

Example (Exemple)

Supposons:

  • L'utilisateur U a le mot de passe "myPassword"
  • Le mot de passe est converti en clé Ku (en utilisant l'algorithme de mot de passe à clé)
  • Le moteur autorisé E a snmpEngineID = 0x80001F8880...

Alors:

Kul = MD5(Ku || 0x80001F8880... || Ku)

Cette Kul est unique pour l'utilisateur U sur le moteur E. Si le même utilisateur accède à un moteur différent E2 avec engineID 0x80001F8881..., une clé localisée différente serait calculée:

Kul2 = MD5(Ku || 0x80001F8881... || Ku)

Localized Key Usage (Utilisation de la clé localisée)

Une fois calculées, les clés localisées sont utilisées à deux fins:

  1. Clés d'authentification (Authentication Keys): La clé d'authentification localisée (authKey) est dérivée de Kul et utilisée dans les opérations HMAC pour l'authentification des messages.

  2. Clés de confidentialité (Privacy Keys): La clé de confidentialité localisée (privKey) est dérivée de Kul et utilisée pour chiffrer/déchiffrer les charges utiles des messages.

La dérivation de authKey et privKey à partir de Kul est décrite dans les spécifications respectives des protocoles d'authentification et de confidentialité (sections 6, 7 et 8).

Key Management Implications (Implications de la gestion des clés)

Key Storage (Stockage des clés)

Les implémentations devraient stocker les clés localisées plutôt que le mot de passe original ou la clé utilisateur Ku. Cela offre une meilleure sécurité:

  • Si le périphérique est compromis, seules les clés localisées pour ce périphérique sont exposées
  • Le mot de passe de l'utilisateur et les clés pour d'autres périphériques restent sécurisés

Key Updates (Mises à jour de clés)

Lorsque le mot de passe d'un utilisateur change:

  • Une nouvelle Ku est calculée à partir du nouveau mot de passe
  • De nouvelles clés localisées Kul doivent être calculées pour tous les moteurs auxquels l'utilisateur accède
  • Les anciennes clés localisées doivent être supprimées de manière sécurisée

Initial Configuration (Configuration initiale)

Pour la configuration initiale ou la distribution de clés, les implémentations doivent soit:

  • Utiliser les algorithmes de mot de passe à clé et de localisation de clé pour calculer les clés localisées à partir d'un mot de passe configuré
  • Configurer directement des clés localisées pré-calculées (si la distribution de clés hors bande est utilisée)

Security Considerations (Considérations de sécurité)

  1. Fonction à sens unique (One-way Function): La localisation de clé est une fonction à sens unique. Étant donné Kul et snmpEngineID, il est informatiquement impossible de dériver Ku.

  2. Liaison d'identité de moteur (Engine Identity Binding): La clé localisée est cryptographiquement liée à l'identité du moteur, empêchant la réutilisation de la clé entre les moteurs.

  3. Force de la fonction de hachage (Hash Function Strength): La sécurité de la localisation de clé dépend de la force de la fonction de hachage (MD5 ou SHA-1) utilisée.

References (Références)

Le concept et l'algorithme de localisation de clé sont détaillés davantage dans:

  • [Localized-key]: "Key Derivation for Network Management Applications" (Dérivation de clé pour les applications de gestion de réseau), U. Blumenthal, B. Wijnen, K. McCloghrie, Internet Draft (travail en cours)
  • Algorithmes de mot de passe à clé: Annexe A.2.1 (MD5) et A.2.2 (SHA) de cette RFC