SNMP pose un problème de sécurité particulier. Une plate-forme de gestion a l’habitude de communiquer avec des dizaines ou quelquefois des centaines d’agents. Si le même mot de passe est utilisé par chaque agent, on court le risque qu’un des agents soit volé ou compromis. Le mot de passe serait alors connu et pourrait être utilisé pour administrer tous les autres agents du même domaine d’administration.


Une solution serait d’utiliser un mot de passe différent pour chaque agent. Ceci est toutefois impraticable car il n’est pas raisonnable pour un administrateur de connaître des dizaines voire des centaines de mots de passes différents.


La solution adoptée par SNMPv3 est d’utiliser un seul mot de passe, mais de passer par une étape de « localisation ». Un mot de passe localisé fonctionne qu’avec un seul agent.

Avant de localiser, il nous faut une chaîne de caractères qui soit unique à chaque agent (Au minimum, cette chaîne doit être unique dans le domaine administratif). Avec SNMPv3, on utilise le ContextEngineID. Cette chaîne est générée par un ensemble de données comme : l’adresse MAC de la carte Etherner, l’adresse IP, des nombres aléatoires ou une chaîne spécifiée par l’administrateur.

La figure ci dessous montre le mécanisme de localisation du mot de passe :



On commence par trouver le ContextEngineID de l’agent auquel on veut envoyer une requête. On groupe le ContextEngineID et le mot de passe ensemble et on passe l'ensemble dans une fonction de hachage à une direction (fonctions expliquées dans l'authentification de SNMPv3).

C’est le mot de passe localisé qui est mémorisé dans l’agent et qui est utilisé par la plateforme. Le mot de passe localisé est utilisé dans l’authentification et l’encryption des paquets SNMPv3.

Les détails de la localisation sont décrits dans le RFC2274. Cette étape est très coûteuse en temps processeur.