Questo è un protocollo di sicurezza a livello Rete e non più a livello socket!

Perché vorremmo avere sicurezza a questo livello? È una cosa troppo comune da dover mettere a livello superiore (ma solitamente viene messa a questo livello per la sicurezza, quindi non è implementata ovunque per dire), quindi IPsec vuole facilitare l’implementazione dei principi CIA a un livello più basso, in modo che sia flessibile e customizzabile.

Virtual Private Networks

Virtual because it doesn’t exist, it is built upon real network and private because only you can have access.

È una cosa molto utile per implementare cose come i VPN di aziende. Solitamente solo per questo, in altro non è implementato perché è troppo complesso, per poco di guadagno.

image/universita/ex-notion/Sicurezza delle reti/Untitled 20

Nota l’imbustamento e imbustamento è fatto nei router nell’esempio qui, ma può essre fatto anche di computer.

In qualche modo, che non ho capito, lo puoi vedere come se fosse la stessa rete, perché l’IP locale è messo nell’IP sec credo, anche se non sono molto sicuro

Types of VPN architectures

  • Gateway to gateway
  • Host-to gateway
  • Host to host

The names are self explicative.

Garanzie IPsec

Tutte le caratteristiche della CIA in questo caso vengono soddisfatte, a livello subito sopra quello di rete (quindi garanzia molto buona :D) Vedi Theoretical Notions of Security, l’unica cosa non fatta a questo livello è implementazione dell’autenticazione dell’utente, abbiamo solo sull’origine, quindi necessitiamo qualcosa di più per farlo a livello dell’utente.

  • Integrità dei dati
  • Confidenzialità
  • Autenticazione dell’origine (credo perché conoscono solamente la chiave della VPN)
  • Prevenzione dei replay attack

Con Jocelyn vengono aggiunti anche altre due

  • Access control (quindi chi può accedere a cosa)

La cosa bella di applicare la sicurezza a questo livello è che diventa trasparente rispetto agli utilizzi da utenti non bene addestrati o applicazioni che la ignorano. In ogni caso ho le garanzie di sopra.

Tunnelling mode (2) 🟩

image/universita/ex-notion/Sicurezza delle reti/Untitled 22

Tunneling mode

  • Routers IPsec aware, quando sono i routers che mettono su il protocollo Questo metodo solitamente viene utilizzato per reti VPN, perché è il router che si occupa di decriptare ed inoltrare a livello rete locale.
  • Tunnel Mode SA: Protects the entire IP packet by encapsulating it within a new IP packet.

Transport mode

  • Host IPsec-aware, in modo che siano solamente gli host che siano aware, mentre i routers non sanno niente, e si comportano in modo normale in questo modo, secondo una connessione IP.
  • Transport Mode SA: Protects the payload of IP packets, leaving the IP header intact. In questo caso viene cryptato solo il payload, viene utilizzato in host-host

Security Headers - Service Models

Sembra end-to-end, che dovrebbe essere una garanzia a livello trasporto, dato che alla fine solamente gli utenti finali dovrebbero ricevere il messaggio. Possono essere Authentication header (AH) oppure Encapsulation Security Protocol (ESP), la prima non fornisce la confidenzialità, mentre la seconda anche la confidenzialità. Questa è praticamente la differenza principale.

AH ha il vantaggio che utilizzi meno energie perché non devi metterti a cifrare (ESP è sicuro con chi sta parlando, per esempio uno streaming può far uso di AH, dato che non ho bisogno di cifrare il tutto). image/universita/ex-notion/Sicurezza delle reti/Untitled 23 Sicurezza delle reti-20240528150321633

È la versione più comune Tunnel mode con confidenzialità per gli usi in VPN. In entrambi i metodi esiste un sequence number che viene utilizzato per evitare replay attacks. In entrambi c’è un hash per l’integrità.

Security Association(4)🟨+

  • Security Association (SA): A set of parameters that define the security services and mechanisms for protecting communication between two network entities.
  • Purpose: Establishes shared security attributes to secure data exchange, ensuring confidentiality, integrity, and authenticity.

Prima di mettermi a scambiare messaggi, devo essere sicuro con chi sto parlando, quindi vogliamo andare a creare una security association, scambio di chiavi e algoritmi di criptazione comune, solo da una direzione verso l’altra. I due parametri SPI e l’IP di destinazione identificano una SA in modo univoco. Poi ci sono parametri che vanno ad identificare cose come tipologia di cifrario utilizzato, o tipologia di algoritmo utilizzato per l’integrità. Tutte le associations dovrebbero usare sequence numbers per evitare replay attacks.

image/universita/ex-notion/Sicurezza delle reti/Untitled 24
<img src="/images/notes/image/universita/ex-notion/Sicurezza delle reti/Untitled 25.png" alt="image/universita/ex-notion/Sicurezza delle reti/Untitled 25">

Security association parameters

Uses usually three parameters

  • Security Parameter Index (32 bit) è un identificatore della SA.
  • IP destination e sorgente
  • Identifier of the security protocol (ESP or AH).
  • Altre chiavi di codifica e decodifica.

Security Association Database

Posso anche creare un database di SA questo si chiama SAD

C’è una security associazione fra tunnel e ogni host

<img src="/images/notes/image/universita/ex-notion/Sicurezza delle reti/Untitled 26.png" alt="image/universita/ex-notion/Sicurezza delle reti/Untitled 26">

Cose che vengono memorizzate qui sono:

  1. Identificatore di SA, SPI
  2. Chiavi di cifratura e algo di cifratura
  3. Interfaccia di inizio e arrivo della SA
  4. MAC e chiave di MAC

Establishing a SA

This is somewhat similar to SSL, because they first need to negotiate security parameters.

  • Initiation: A request is made to establish a secure communication channel.
  • Negotiation: Parameters such as encryption methods and keys are negotiated (e.g., via IKE).
  • Creation: An SA is created with the agreed-upon parameters and stored in the SAD.
  • Maintenance: SAs are monitored and periodically re-negotiated before expiration.

IPsec Datagram 🟨

Si noti che anche il pacchetto di livello trasporto è cifrato, quindi anche l’indirizzo di porta e l’indirizzo IP finale dovrà essere cifrato

image/universita/ex-notion/Sicurezza delle reti/Untitled 27

Il modo con cui queste vengono programmate è attraverso alcune regole del router (che controllano se il datagramma va verso certi host, oppure parte da certi host e simili).

Key Determination Protocol

Quello che viene usato in questo caso è chiamato IKEv2. Che è una versione di Diffie-Hellman in Key Exchange protocols. Ma risolve i problemi di Man in the middle, autenticando le due parti. E risolve anche problemi di denial of service dovuti al costo di computazione di diffie-hellman. Per il problema di flooding usano delle specie di cookie autenticati, che sono creati da chi vuole comunicare (firmati da questi diciamo). Poi usano un cifrario a chiave asymmetric come curve ellittiche o RSA

IKEv2

Questo è un protocollo di scambio chiavi, per certi versi simile a Diffie Hellman spiegato in Key Exchange protocols.

Abbiamo sempre Alice e Bob, rispettivamente chiave privata $a, b$ con gruppo $g$, primo $p$, e modulo messo d’accordo. Poi si scambiano come da consuetudine $g^{a} \mod p, N_{a}$ da $A \to B$ e uguale e contrario da $B \to A$. La chiave segreta sarà $K = f(g^{ab} \mod p, N_{a}, N_{b}$ e poi altra roba di integrità che non ho capito. Dovrei descriverlo meglio.

IKE contenders

  • Photuris
  • SKIP
  • ISAKMP TODO: approfondisci cosa sono queste.

Why IPsec is not used

  • Complexity in its setup (una cosa è spesso è molto lento perché richiede molti scambi, ha un overhead grosso).
  • Bad compatibility with NAT (needs to know IP-port pair to route the packet)
  • Application level security is often easier to implement