Passa al contenuto principale

2.6. Key Localization Algorithm (Algoritmo di localizzazione della chiave)

2.6. Key Localization Algorithm (Algoritmo di localizzazione della chiave)

Una chiave localizzata (localized key) è una chiave segreta condivisa tra un utente U e un motore SNMP autorevole E. Anche se un utente può avere solo una password e quindi una sola chiave per l'intera rete, i segreti effettivi condivisi tra l'utente e ciascun motore SNMP autorevole saranno diversi. Questo si ottiene mediante la localizzazione della chiave.

Purpose of Key Localization (Scopo della localizzazione della chiave)

La localizzazione della chiave fornisce diversi importanti vantaggi di sicurezza:

  1. Chiavi univoche per motore (Unique Keys per Engine): Ogni motore SNMP autorevole ha una chiave localizzata univoca per ogni utente, anche se l'utente usa la stessa password ovunque.

  2. Impatto limitato della compromissione della chiave (Limited Key Compromise Impact): Se una chiave localizzata viene compromessa su un motore, non compromette le chiavi dell'utente su altri motori.

  3. Protezione specifica del motore (Engine-Specific Protection): Le chiavi sono crittograficamente legate all'identità specifica del motore (snmpEngineID).

Key Localization Process (Processo di localizzazione della chiave)

Il processo di localizzazione della chiave converte la chiave Ku di un utente (derivata dalla sua password) in una chiave localizzata Kul specifica per un motore SNMP autorevole E.

Passaggio 1: Conversione da password a chiave (Password to Key Conversion)

Innanzitutto, se un utente utilizza una password, la password dell'utente viene convertita in una chiave Ku utilizzando uno dei due algoritmi descritti nelle Appendici A.2.1 e A.2.2:

  • Per l'autenticazione basata su MD5: Utilizzare l'algoritmo da password a chiave nell'Appendice A.2.1
  • Per l'autenticazione basata su SHA: Utilizzare l'algoritmo da password a chiave nell'Appendice A.2.2

Questo produce una chiave utente Ku che è indipendente da qualsiasi motore SNMP specifico.

Passaggio 2: Localizzazione della chiave (Key Localization)

Per convertire la chiave Ku in una chiave localizzata Kul dell'utente U presso il motore SNMP autorevole E, viene utilizzato il seguente algoritmo:

  1. Aggiungere snmpEngineID a Ku: Prendere la chiave Ku e aggiungervi lo snmpEngineID del motore SNMP autorevole E.

  2. Aggiungere Ku di nuovo: Aggiungere la chiave Ku al risultato del passaggio 1, avvolgendo così lo snmpEngineID all'interno di due copie della chiave Ku dell'utente.

  3. Hashare il risultato: Eseguire una funzione di hash sicura sui dati concatenati. La funzione di hash utilizzata dipende dal protocollo di autenticazione definito per questo utente U presso il motore SNMP autorevole E:

    • Se si utilizza l'autenticazione HMAC-MD5-96: Utilizzare l'hash MD5
    • Se si utilizza l'autenticazione HMAC-SHA-96: Utilizzare l'hash SHA-1
  4. Il risultato è la chiave localizzata: L'output della funzione di hash è la chiave localizzata Kul per l'utente U presso il motore SNMP autorevole E.

Algorithm Pseudocode (Pseudocodice dell'algoritmo)

Input:
Ku - Chiave dell'utente (derivata dalla password)
snmpEngineID - Identificatore univoco del motore

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

Dove:
|| - indica la concatenazione
Hash - è MD5 per HMAC-MD5-96 o SHA-1 per HMAC-SHA-96

Output:
Kul - Chiave localizzata per l'utente U presso il motore E

Example (Esempio)

Supponiamo:

  • L'utente U ha la password "myPassword"
  • La password viene convertita in chiave Ku (utilizzando l'algoritmo da password a chiave)
  • Il motore autorevole E ha snmpEngineID = 0x80001F8880...

Allora:

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

Questo Kul è univoco per l'utente U sul motore E. Se lo stesso utente accede a un motore diverso E2 con engineID 0x80001F8881..., verrebbe calcolata una chiave localizzata diversa:

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

Localized Key Usage (Utilizzo della chiave localizzata)

Una volta calcolate, le chiavi localizzate vengono utilizzate per due scopi:

  1. Chiavi di autenticazione (Authentication Keys): La chiave di autenticazione localizzata (authKey) è derivata da Kul e utilizzata nelle operazioni HMAC per l'autenticazione dei messaggi.

  2. Chiavi di privacy (Privacy Keys): La chiave di privacy localizzata (privKey) è derivata da Kul e utilizzata per crittografare/decrittografare i payload dei messaggi.

La derivazione di authKey e privKey da Kul è descritta nelle rispettive specifiche dei protocolli di autenticazione e privacy (Sezioni 6, 7 e 8).

Key Management Implications (Implicazioni della gestione delle chiavi)

Key Storage (Archiviazione delle chiavi)

Le implementazioni dovrebbero memorizzare le chiavi localizzate piuttosto che la password originale o la chiave utente Ku. Questo fornisce una migliore sicurezza:

  • Se il dispositivo viene compromesso, vengono esposte solo le chiavi localizzate per quel dispositivo
  • La password dell'utente e le chiavi per altri dispositivi rimangono sicure

Key Updates (Aggiornamenti delle chiavi)

Quando la password di un utente cambia:

  • Viene calcolato un nuovo Ku dalla nuova password
  • Devono essere calcolate nuove chiavi localizzate Kul per tutti i motori a cui l'utente accede
  • Le vecchie chiavi localizzate dovrebbero essere eliminate in modo sicuro

Initial Configuration (Configurazione iniziale)

Per la configurazione iniziale o la distribuzione delle chiavi, le implementazioni devono:

  • Utilizzare gli algoritmi da password a chiave e di localizzazione della chiave per calcolare le chiavi localizzate da una password configurata
  • Configurare direttamente chiavi localizzate pre-calcolate (se viene utilizzata la distribuzione delle chiavi fuori banda)

Security Considerations (Considerazioni sulla sicurezza)

  1. Funzione unidirezionale (One-way Function): La localizzazione della chiave è una funzione unidirezionale. Dato Kul e snmpEngineID, è computazionalmente impossibile derivare Ku.

  2. Binding dell'identità del motore (Engine Identity Binding): La chiave localizzata è crittograficamente legata all'identità del motore, impedendo il riutilizzo delle chiavi tra i motori.

  3. Forza della funzione di hash (Hash Function Strength): La sicurezza della localizzazione della chiave dipende dalla forza della funzione di hash (MD5 o SHA-1) utilizzata.

References (Riferimenti)

Il concetto e l'algoritmo di localizzazione della chiave sono ulteriormente dettagliati in:

  • [Localized-key]: "Key Derivation for Network Management Applications" (Derivazione della chiave per applicazioni di gestione della rete), U. Blumenthal, B. Wijnen, K. McCloghrie, Internet Draft (lavoro in corso)
  • Algoritmi da password a chiave: Appendice A.2.1 (MD5) e A.2.2 (SHA) di questa RFC