Passa al contenuto principale

1.6. Abstract Service Interfaces (Interfacce di servizio astratte)

1.6. Abstract Service Interfaces (Interfacce di servizio astratte)

Il modello di sicurezza basato sull'utente è progettato per integrarsi con l'architettura SNMPv3 attraverso interfacce di servizio astratte ben definite. Queste interfacce consentono all'USM di funzionare indipendentemente da altri sottosistemi fornendo al contempo i servizi di sicurezza necessari.

Security Model Interface (Interfaccia del modello di sicurezza)

L'USM implementa l'interfaccia del modello di sicurezza definita nella RFC 3411. Questa interfaccia è composta da due primitive principali:

1. generateRequestMsg (Genera messaggio di richiesta)

Scopo (Purpose): Elaborare un messaggio SNMP in uscita aggiungendo informazioni relative alla sicurezza.

Input (Inputs):

  • messageProcessingModel: La versione SNMP (3 per SNMPv3)
  • globalData: Informazioni di intestazione del messaggio globale
  • maxMessageSize: Dimensione massima del messaggio supportata
  • securityModel: Identificatore del modello di sicurezza (3 per USM)
  • securityEngineID: L'identificatore del motore SNMP autorevole
  • securityName: Il principale per conto del quale viene generato il messaggio
  • securityLevel: Il livello di sicurezza desiderato (noAuthNoPriv, authNoPriv o authPriv)
  • scopedPDU: Il payload del messaggio da proteggere

Output (Outputs):

  • securityParameters: Parametri di sicurezza specifici dell'USM (engineID, engineBoots, engineTime, userName, parametri di autenticazione, parametri di privacy)
  • wholeMsg: Il messaggio protetto completo pronto per la trasmissione
  • statusInformation: Indicazione di successo o errore

Elaborazione (Processing):

  1. Validare gli input
  2. Recuperare le chiavi di autenticazione e privacy dell'utente
  3. Incrementare e includere engineBoots ed engineTime
  4. Applicare il protocollo di privacy se securityLevel include la privacy
  5. Calcolare il digest di autenticazione se securityLevel include l'autenticazione
  6. Assemblare il messaggio completo

2. processIncomingMsg (Elabora messaggio in entrata)

Scopo (Purpose): Elaborare un messaggio SNMP in entrata verificando le informazioni relative alla sicurezza.

Input (Inputs):

  • messageProcessingModel: La versione SNMP
  • maxMessageSize: Dimensione massima del messaggio supportata
  • securityParameters: I parametri di sicurezza USM ricevuti
  • securityModel: Identificatore del modello di sicurezza
  • securityLevel: Il livello di sicurezza atteso
  • wholeMsg: Il messaggio completo ricevuto
  • securityEngineID: L'identificatore del motore autorevole (dal messaggio)

Output (Outputs):

  • securityName: Il principale autenticato
  • scopedPDU: Il payload del messaggio decriptato e verificato
  • maxSizeResponseScopedPDU: Dimensione massima per la risposta
  • securityStateReference: Riferimento per generare risposte
  • statusInformation: Indicazione di successo o errore

Elaborazione (Processing):

  1. Analizzare securityParameters
  2. Verificare che msgAuthoritativeEngineID corrisponda al motore locale (per i risponditori di comandi)
  3. Verificare che userName esista in usmUserTable
  4. Controllare la finestra temporale (engineBoots ed engineTime)
  5. Decriptare il messaggio se è stata applicata la privacy
  6. Verificare il digest di autenticazione se è stata applicata l'autenticazione
  7. Estrarre e restituire scopedPDU

Integration with Message Processing Subsystem (Integrazione con il sottosistema di elaborazione dei messaggi)

Il sottosistema di elaborazione dei messaggi invoca l'USM attraverso queste interfacce in punti specifici dell'elaborazione dei messaggi:

Per i messaggi in uscita (For Outgoing Messages):

Applicazione → Dispatcher → Elaborazione messaggi → Modello di sicurezza (USM) → Trasporto

Per i messaggi in entrata (For Incoming Messages):

Trasporto → Dispatcher → Elaborazione messaggi → Modello di sicurezza (USM) → Applicazione

Interaction with Access Control (Interazione con il controllo degli accessi)

L'USM fornisce il securityName autenticato al sottosistema di controllo degli accessi (VACM), che lo utilizza per determinare l'autorizzazione:

  1. L'USM autentica l'utente e fornisce securityName
  2. Il VACM utilizza securityName, securityModel e securityLevel per determinare i diritti di accesso
  3. Il VACM concede o nega l'accesso in base alle policy configurate

Questa separazione assicura che:

  • L'USM si concentra su: "Chi sei?" (Autenticazione) e "Il messaggio è intatto?" (Integrità)
  • Il VACM si concentra su: "Cosa ti è permesso fare?" (Autorizzazione)

Error Handling and Reports (Gestione degli errori e rapporti)

Quando l'USM rileva un errore di sicurezza, può generare un Report-PDU:

Scenari di errore comuni (Common Error Scenarios):

  1. ID motore sconosciuto (Unknown Engine ID): Contatore usmStatsUnknownEngineIDs incrementato

    • Utilizzato durante il processo di scoperta
    • Il rapporto contiene l'engineID del motore locale
  2. Violazione della finestra temporale (Time Window Violation): Contatore usmStatsNotInTimeWindows incrementato

    • Utilizzato durante la sincronizzazione temporale
    • Il rapporto contiene gli engineBoots ed engineTime correnti
  3. Fallimento dell'autenticazione (Authentication Failure): Contatore usmStatsWrongDigests incrementato

    • Indica password/chiave errata o manomissione del messaggio
    • Rapporto inviato allo stesso livello di sicurezza del messaggio ricevuto
  4. Fallimento della decrittazione (Decryption Failure): Contatore usmStatsDecryptionErrors incrementato

    • Indica chiave di privacy errata o corruzione del messaggio
    • Rapporto inviato allo stesso livello di sicurezza del messaggio ricevuto
  5. Utente sconosciuto (Unknown User): Contatore usmStatsUnknownUserNames incrementato

    • Indica che userName non è in usmUserTable
    • Rapporto inviato senza autenticazione

Service Primitive Sequences (Sequenze di primitive di servizio)

Discovery Sequence (Sequenza di scoperta)

1. L'applicazione invia una richiesta con engineID vuoto
2. L'USM genera un messaggio con securityLevel = noAuthNoPriv
3. Il motore autorevole riceve il messaggio
4. L'USM rileva un engineID sconosciuto
5. L'USM genera un rapporto con usmStatsUnknownEngineIDs
6. L'applicazione riceve il rapporto, apprende l'engineID

Time Synchronization Sequence (Sequenza di sincronizzazione temporale)

1. L'applicazione invia una richiesta con engineID memorizzato, engineBoots/Time a zero
2. L'USM genera un messaggio autenticato
3. Il motore autorevole riceve il messaggio
4. L'USM rileva una violazione della finestra temporale
5. L'USM genera un rapporto con usmStatsNotInTimeWindows e valori temporali correnti
6. L'applicazione riceve il rapporto, aggiorna i valori temporali memorizzati
7. L'applicazione riprova la richiesta originale con il tempo sincronizzato

Authenticated Communication Sequence (Sequenza di comunicazione autenticata)

1. L'applicazione invia una richiesta
2. L'USM genera un messaggio autenticato con gli engineBoots/Time correnti
3. L'USM calcola il digest di autenticazione
4. Il motore autorevole riceve il messaggio
5. L'USM verifica la finestra temporale
6. L'USM verifica il digest di autenticazione
7. L'USM estrae scopedPDU
8. L'applicazione elabora la richiesta
9. L'applicazione genera una risposta
10. L'USM genera un messaggio di risposta autenticato
11. Il motore non autorevole riceve la risposta
12. L'USM verifica il digest di autenticazione
13. L'USM estrae scopedPDU
14. L'applicazione elabora la risposta

Asynchronous vs. Synchronous Operation (Operazione asincrona vs. sincrona)

Le interfacce di servizio astratte sono progettate per supportare entrambe:

Operazione sincrona (Synchronous Operation):

  • L'applicazione attende la risposta
  • Tipico per il modello generatore/risponditore di comandi

Operazione asincrona (Asynchronous Operation):

  • L'applicazione non attende
  • Tipico per il modello iniziatore/ricevitore di notifiche

L'USM non detta il modello operativo; fornisce semplicemente servizi di sicurezza indipendentemente da come l'applicazione sceglie di operare.