Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Riassunto di Network Security, Schemi e mappe concettuali di Sicurezza delle reti

Riassunto di teoria di Network Security, Laurea Magistrale in Ingegneria Informatica UniPR. Crittografia simmetrica (DES, AES) e asimmetrica (RSA, DH, DSS), Block Cipher Mode (ECB, CBC, OFB, CFB, CTR), Hash Function, Message ed Entity Authentication, Digital Signature, Key Establishment, KDC, Group Key Management (LKH), Digital Certificates, IPSec, TLS, Anonymity (TOR), AAA Services, OAuth2, Vulnerabilità, attacchi (Spoofing, MITM, DoS) e contromisure, Firewall, Intrusion Detection Systems.

Tipologia: Schemi e mappe concettuali

2020/2021

In vendita dal 07/07/2021

maxbarbieri
maxbarbieri 🇮🇹

3.6

(5)

4 documenti

1 / 56

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
Network Security
Tre tipi di sicurezza
SICUREZZA FISICA:"
Limitare l’accesso fisico ai dispositivi da proteggere: porte chiuse, accesso solo ad autorizzati,
telecamere, badge, lettori biometrici."
Prevenire la divulgazione involontaria di informazioni sensibili: ad esempio distruggere i documenti
prima di buttarli via."
SICUREZZA TECNOLOGICA:"
Sicurezza nelle comunicazioni e nello storage dei dati."
Sicurezza del software: sicurezza dei sistemi operativi e delle applicazioni."
POLICY E GOOD PRACTICES"
Security Services
Security Service: un servizio che aumenta la sicurezza di un sistema e dello scambio di informazioni."
Un servizio di processing o di comunicazione fornito da un sistema per dare uno specifico tipo di
protezione alle risorse di un sistema."
Mirato a proteggere i dati, il sistema, le informazioni degli utenti e contrastare attacchi alla sicurezza."
Si fa uso di uno o più meccanismi di sicurezza per orire il servizio di sicurezza."
Spesso i security services imitano funzioni che normalmente sono associate a comuni oggetti o
documenti, ad esempio: firma, data, prova di ricezione, notarizzazione, registrazione, ecc…"
Esempi di security services:"
Confidentiality: protegge i dati da divulgazioni non autorizzate."
Impedisce che le informazioni siano disponibili ad entità non autorizzate."
Data confidentiality: relativa ai dati."
Anonymity: relativa alle entità coinvolte in una comunicazione."
Data Integrity: impedisce che i dati vengano modificati, distrutti o persi in modo non autorizzato."
Protegge contro le modifiche non autorizzate rendendo rilevabili tali modifiche (generalmente
queste modifiche possono solo essere rilevate, ma non annullate senza una ritrasmissione)."
Data Origin Authentication: fornisce una conferma della sorgente di un dato."
Verifica l’identità di un’entità che dichiara di essere la sorgente originale dei dati ricevuti."
Message Authentication: unisce Data Integrity e Data Origin Authentication."
È relativa a un messaggio e può essere verificata in un secondo momento."
Authentication (o identification): verifica dell’identità di una Peer Entity."
Avviene prima che sia stabilita una comunicazione o l'accesso a risorse o servizi (es: login)."
Authorization: verifica dei permessi che una certa entità (autenticata) ha per accedere a risorse o
servizi di un sistema."
Access control: l’abilità di modificare e gestire i permessi delle varie entità."
System integrity: protegge le risorse del sistema da cambiamenti o distruzioni non autorizzate."
Un sistema si dice integro quando funziona nel modo in cui è progettato."
Availability: assicura che il sistema sia disponibile quando gli utenti hanno bisogno di utilizzarlo."
Ore protezione, ad esempio, contro gli attacchi Denial Of Service."
Accountability: assicura che le azioni di un’entità possano essere tracciate."
Audit: servizio che registra le informazioni necessarie ai fini di accountability."
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38

Anteprima parziale del testo

Scarica Riassunto di Network Security e più Schemi e mappe concettuali in PDF di Sicurezza delle reti solo su Docsity!

Network Security

Tre tipi di sicurezza

• SICUREZZA FISICA :
  • (^) Limitare l’accesso fisico ai dispositivi da proteggere : porte chiuse, accesso solo ad autorizzati, telecamere, badge, lettori biometrici.
  • (^) Prevenire la divulgazione involontaria di informazioni sensibili : ad esempio distruggere i documenti prima di buttarli via.
  • (^) SICUREZZA TECNOLOGICA :
  • (^) Sicurezza nelle comunicazioni e nello storage dei dati.
  • (^) Sicurezza del software : sicurezza dei sistemi operativi e delle applicazioni.
  • (^) POLICY E GOOD PRACTICES

Security Services

  • (^) Security Service : un servizio che aumenta la sicurezza di un sistema e dello scambio di informazioni.
    • Un servizio di processing o di comunicazione fornito da un sistema per dare uno specifico tipo di protezione alle risorse di un sistema.
    • Mirato a proteggere i dati, il sistema, le informazioni degli utenti e contrastare attacchi alla sicurezza.
    • (^) Si fa uso di uno o più meccanismi di sicurezza per offrire il servizio di sicurezza.
  • Spesso i security services imitano funzioni che normalmente sono associate a comuni oggetti o documenti, ad esempio: firma, data, prova di ricezione, notarizzazione, registrazione, ecc…
  • Esempi di security services:
    • (^) Confidentiality : protegge i dati da divulgazioni non autorizzate.
      • Impedisce che le informazioni siano disponibili ad entità non autorizzate.
      • (^) Data confidentiality : relativa ai dati.
      • (^) Anonymity : relativa alle entità coinvolte in una comunicazione.
    • (^) Data Integrity : impedisce che i dati vengano modificati, distrutti o persi in modo non autorizzato.
      • (^) Protegge contro le modifiche non autorizzate rendendo rilevabili tali modifiche (generalmente queste modifiche possono solo essere rilevate, ma non annullate senza una ritrasmissione).
    • (^) Data Origin Authentication : fornisce una conferma della sorgente di un dato.
      • Verifica l’identità di un’entità che dichiara di essere la sorgente originale dei dati ricevuti.
    • (^) Message Authentication : unisce Data Integrity e Data Origin Authentication.
      • (^) È relativa a un messaggio e può essere verificata in un secondo momento.
    • (^) Authentication (o identification) : verifica dell’identità di una Peer Entity.
      • (^) Avviene prima che sia stabilita una comunicazione o l'accesso a risorse o servizi (es: login).
    • (^) Authorization : verifica dei permessi che una certa entità (autenticata) ha per accedere a risorse o servizi di un sistema.
    • (^) Access control : l’abilità di modificare e gestire i permessi delle varie entità.
    • (^) System integrity : protegge le risorse del sistema da cambiamenti o distruzioni non autorizzate.
      • Un sistema si dice integro quando funziona nel modo in cui è progettato.
    • (^) Availability : assicura che il sistema sia disponibile quando gli utenti hanno bisogno di utilizzarlo.
      • Offre protezione, ad esempio, contro gli attacchi Denial Of Service.
    • (^) Accountability : assicura che le azioni di un’entità possano essere tracciate.
      • (^) Audit : servizio che registra le informazioni necessarie ai fini di accountability.
  • (^) Non repudiation : protegge contro la falsa negazione di aver compiuto un’azione.
    • Fornisce prove delle varie azioni compiute da un’entità in modo che essa non possa successivamente contestarle.
    • Nel caso di una comunicazione impedisce sia al mittente che al destinatario di negare di aver trasmesso o ricevuto un messaggio.
  • (^) Anonymity : nascondere o non rendere nota un’identità.
    • Per privacy: le entità coinvolte in una comunicazione potrebbero non voler rendere nota la loro interazione a terze parti non autorizzate.
    • A volte le entità coinvolte in una comunicazione potrebbero addirittura non “conoscersi”.

Security Mechanisms

  • (^) Security Mechanisms : sono usati per erogare i servizi di sicurezza.
  • Esempi di security mechanisms:
    • (^) Enciphering (cryptography) - Authentication Exchange - Data Integrity Check - Digital Signature - Notarization (Third-Party Authentication) - Access Control - Traffic Padding - Routing Control
  • Relazione tra security services e security mechanisms:

Classificazione degli attacchi alla sicurezza

  • (^) Passive Attacks : non modificano i dati scambiati o i sistemi.
    • (^) Eavesdropping , interception , traffic analysis (attaccano principalmente la confidenzialità).
    • (^) Sono spesso più difficili da rilevare , perché solitamente lasciano meno tracce di un attacco attivo.
  • (^) Active Attacks : modificano i dati scambiati o le risorse dei sistemi.
    • (^) Spoofing : creazione di messaggi con una falsa sorgente (attacca l’autenticazione).
    • (^) Tampering : modifica del contenuto dei messaggi o delle risorse di un sistema (attacca l’integrità).
    • (^) Replay (o reflection) : rinvio di messaggi precedentemente intercettati (attacca l’autenticazione).
    • (^) Repudiation : negare di aver inviato o ricevuto un messaggio o di aver compiuto un’azione.
    • (^) Denial of Service : interruzione non autorizzata di un servizio (attacca la disponibilità).

- Known Plaintext : l’attaccante possiede una o più coppie di plaintext e corrispondente ciphertext. - Da queste informazioni l’attaccante potrebbe riuscire a ricavare la chiave o a ricostruire il mapping. - In che modo si può ottenere il plaintext? - I dati segreti potrebbero non rimanere segreti per sempre. - L’attaccante potrebbe conoscere alcune parti del plaintext, ad esempio alcune parole chiave usate negli header dei messaggi di un protocollo. - Probable-words attacks : via di mezzo tra ciphertext only e known plaintext. - Chosen plaintext and ciphertext : l’attaccante può scegliere qualsiasi plaintext e ottenere il ciphertext corrispondente (o viceversa). - È il tipo di attacco più potente, perché permette all’attaccante di ottenere facilmente molte coppie di plaintext e ciphertext, inoltre potendo scegliere, l’attaccante potrebbe sfruttare alcuni plaintext o ciphertext particolari per cui l’algoritmo è meno sicuro e quindi ottenere in modo più semplice la chiave. ATTACCHI CRITTOGRAFICI : approcci generali per attaccare un cifrario convenzionale. - Cryptographic Analysis (Cryptoanalysis) : cerca di sfruttare alcune caratteristiche dell’algoritmo stesso o delle proprietà del plaintext o ciphertext per dedurre il plaintext o la chiave da un ciphertext. - A volte non serve ottenere la chiave per dedurre il plaintext (es: frequency analysis, ecc…). - Brute-Force (Search) Attacks : si prova ogni possibile cifratura / decifratura (es: tutte le possibili chiavi). - Potrebbe richiedere la visita di tutto il keyspace, il numero medio di tentativi necessari è la metà del numero delle possibili chiavi. - È necessario essere in grado di riconoscere in modo programmatico il plaintext corretto. - Offuscare il plaintext prima di cifrarlo può rendere più difficile un attacco di questo tipo. - Teoricamente questo attacco ha sempre esito positivo, è ovvio che provando tutte le chiavi prima o poi si ottiene quella corretta. - La sicurezza risiede nel fatto che questa ricerca nel keyspace sia computazionalmente infattibile. - Quando si decide sul livello di sicurezza di un crittosistema, è opportuno considerare la potenza computazionale che l’attaccante ha a disposizione e che avrà a disposizione in futuro per tutto il periodo in cui l’algoritmo verrà usato o per il quale si vogliono mantenere segreti i dati criptati. - Side-Channel Attacks : utilizza informazioni provenienti dall’implementazione fisica dell’algoritmo. - L’algoritmo in sè potrebbe essere sicuro, ma la sua implementazione potrebbe non esserlo. - Le informazioni provenienti dall’implementazione fisica potrebbero rivelare, in tutto o in parte, il plaintext, la chiave, lo stato intermedio - Timing Attacks : basati sulla misurazione del tempo necessario per la computazione, sono efficaci se questo dipende dal plaintext o dalla chiave. - Power Monitoring Attacks : basati sull’analisi del consumo di potenza durante la computazione. - Radiation Monitoring Attacks (TEMPEST) : basati sulla misurazione di onde elettromagnetiche. - Differential Power Analysis, Profilation (Template) Attacks.

Cryptographic Security

- Cryptographic Break : un’algoritmo crittografico si dice broken se ha avuto successo un qualsiasi attacco che sia, anche di poco, più veloce di un attacco brute-force. - Anche se ci sono attacchi computazionalmente meno complessi del brute-force, questi potrebbero comunque essere infattibili con la tecnologia attuale. - Uno schema crittografico è compromesso quando una chiave viene persa o distribuita a soggetti non autorizzati (es: password scritta su un post-it che viene letto dall’attaccante). - Unconditional Security : uno schema crittografico è incondizionatamente sicuro se, qualunque sia la potenza computazionale a disposizione, non può essere “rotto”. - Esempio: One Time Pad.

- Computational Security : uno schema crittografico è computazionalmente sicuro se, data una quantità limitata di risorse e potenza computazionale, non può essere “rotto”. - Ad esempio se il tempo necessario per ottenere il plaintext dal ciphertext supera il tempo di vita utile dell’informazione contenuta nel messaggio. - Bisogna stimare le risorse e la potenza computazionale che l’attaccante ha o avrà. - Ci sono vari tipi di complessità in un attacco: - Processing complexity : l’attacco richiede un elevato numero di operazioni (tempo). - Data complexity : l’attacco richiede un elevato numero di dati in input (bisogna ricavare i dati). - Storage complexity : l’attacco richiede una grande quantità di storage (spazio). - Computational Difficulty : Il costo di attaccare lo schema supera il valore dell’informazione criptata.

Tecniche di crittografia classiche

  • (^) SUBSTITUTION CIPHERS : sostituiscono i simboli del plaintext con altri simboli secondo un mapping noto solo ai soggetti autorizzati. - (^) Monoalphabetic Substitution (with or without Shift) : - Il problema principale dei cifrari a sostituzione monoalfabetici è la ridondanza del plaintext (correlazione e distribuzione delle frequenze non uniforme). - Per il linguaggio naturale: frequenza delle lettere o di coppie di lettere, parole comuni, ecc… - Si calcolano le frequenze sul ciphertext e si confrontano con valori noti. - (^) Polialphabetic Substitution : si usano molteplici cifrari a sostituzione monoalfabetici, con una regola che determina quale usare ad ogni passo della procedura di cifratura / decrifratura. - Esempio: Vigenère. - Uno stesso simbolo del plaintext può dunque essere associato a simboli diversi nel ciphertext a seconda di quale sostituzione viene usata in quello step (e viceversa). - La frequenza dei simboli nel ciphertext non è più correlata alla frequenza nel plaintext. - Rende la criptoanalisi più difficile, ma è comunque possibile partire dalla frequenza delle lettere, per poi individuare la key length (numero di alfabeti) e poi si attacca ognuno di essi. - (^) One Time Pad (OTP) : può essere visto come un caso particolare di Vigenère, nel quale ad ogni simbolo è associato un alfabeto diverso (non si ripetono). - Plaintext, Chiave e Ciphertext sono tutti della stessa lunghezza e il ciphertext non contiene alcuna relazione statistica con il plaintext. Inoltre è Unconditionally Secure. - Per testo binario è possibile implementarlo con uno XOR. - (^) Svantaggi : - Ogni chiave dev’essere lunga quanto l’intero messaggio e può essere usata solo una volta: infatti se l’attaccante venisse in possesso di una coppia di plaintext e ciphertext, potrebbe facilmente ricavare la chiave tramite XOR. - Dunque il keystream dev’essere lungo quanto la somma delle lunghezze di tutti i messaggi. - È difficile distribuire e gestire le chiavi.
  • (^) TRANSPOSITION CIPHERS : effettua una sorta di permutazione, cambiando l’ordine dei simboli del messaggio, senza sostituire i simboli stessi. - Sono facili da riconoscere perché il ciphertext ha la stessa distribuzione di frequenze del plaintext.
  • (^) PRODUCT CIPHERS : composizione di più cifrari.
    • Ad esempio: due sostituzioni, due trasposizioni, una sostituzione seguita da una trasposizione, ecc…
    • Prima della crittografia moderna erano implementati principalmente in macchine a rotori (es: Enigma).
    • Sono il bridge tra la crittografia classica e quella moderna.

7

Feistel Cipher

  • (^) Ad ogni round il blocco viene diviso in due metà , che vengono scambiate e processate tramite una Mangler Function non invertibile che dipende da una subkey diversa per ogni round. - (^) Le subkey sono da 48 bit e vengono generate a partire dalla chiave. - Il “mezzo blocco” da 32 bit viene in realtà espanso a 48 bit prima di essere fornito in input alla Mangler Function. - L’espansione è fatta con una semplice tabella come quella delle permutazioni (si specifica quale bit di input dovrà essere usato per ogni bit dell’output).
  • (^) MANGLER FUNCTION :
    • (^) XOR bitwise tra la subkey e il mezzo blocco espanso.
    • (^) I 48 bit risultanti sono divisi in 8 gruppi da 6 bit , ognuno dei quali è l’input di una S-Box da 4 bit di output. Il risultato è dunque di 32 bit in tutto.
    • Viene infine fatta una permutazione prima di restituire il risultato.
  • (^) SUBKEY GENERATION : ottenute da una serie di permutazioni e left shift.
  • (^) DECRYPTION : con il design Feistel, è sufficiente eseguire i passaggi dell’encryption in ordine inverso. - (^) L’ Initial Permutation (non riportata nello schema sopra) inverte la Final Permutation dell’encryption.
  • (^) AVALANCHE EFFECT : la proprietà per la quale cambiando anche solo un bit della chiave o del plaintext, si ottiene un ciphertext completamente diverso (approssimativamente metà dei bit cambiati). - È una proprietà fondamentale di ogni block cipher. - (^) Gli stream cipher possono avere solo il forward avalanche effect (ad esempio se si usa lo XOR, solo il bit del ciphertext corrispondente al bit cambiato subisce una modifica).
  • Con la tecnologia attuale è possibile attaccare DES tramite brute-force in poche ore o al massimo giorni (a causa del keyspace molto ridotto), dunque è stata sviluppata un’evoluzione del DES:
  • (^) TRIPLE DES (3DES o TDEA) : Si applica l’algoritmo DES per 3 volte consecutive, specificando 3 chiavi con la possibilità di usare diverse configurazioni. - (^) È un’applicazione della tecnica della Multiple Encryption (si può usare anche per altri algoritmi). - (^) È stato scelto di ripetere l’algoritmo 3 volte perché con solo 2 volte si può fare un meet-in-the-middle. - La chiave complessivamente passa da 56 a 168 bit. - (^) Il tempo richiesto per la cifratura è di sole 3 volte il tempo necessario con il DES standard, ma il tempo richiesto per un attacco brute-force aumenta esponenzialmente. - (^) Si possono scegliere varie combinazioni di Encryption (E) e Decryption (D) : EEE, EDE, EED, ecc… - EDE con chiavi uguali per retrocompatibilità con DES. - In fase di Decryption si usa la sequenza inversa.

Advanced Encryption Standard (AES)

  • È un cifrario a blocco progettato per sostituire il DES, scelto tra altri algoritmi partecipanti ad una competizione e standardizzato dal NIST nel Novembre 2001.
  • In Giugno 2003 il governo statunitense annuncia che AES potrà essere usato anche per crittografare informazioni classificate e top secret.
  • (^) Conosciuto anche come Rijndael Block Cipher (dal nome degli sviluppatori J. Daemenand e V. Rijmen).
  • (^) È l’algoritmo più usato per la cifratura simmetrica.
  • (^) A differenza del DES (che è un Feistel Cipher), l’AES è basato su Substitution-Permutation Networks.
  • È molto veloce e facile da implementare sia in software che in hardware.
  • Esiste un attacco di Key Recovery che è più veloce del Brute Force di un fattore 4, è comunque non praticabile con le tecnologie attuali.
  • Gli unici attacchi che funzionano bene contro l’AES sono i Side Channel Attacks.

Specifiche dell'AES

  • (^) La dimensione del blocco è fissata a 128 bit , disposto come un array di 4x4 byte , detto stato.
  • (^) La dimensione della chiave può essere 128, 192 o 256 bit.
  • (^) Numero di round: 10 per chiave a 128 bit, 12 per chiave a 192 bit, 14 per chiave a 256 bit.
  • (^) È importante che sia la prima che l’ultima funzione dell’algoritmo crittografico dipendano dalla chiave , altrimenti un attaccante potrebbe semplicemente invertire tutte le funzioni che trova partendo dal ciphertext, fermandosi alla prima operazione che dipende dalla chiave ed eseguire il bruteforce solo su un “pezzo di algoritmo” invece che sull’algoritmo intero (vedi schema a lato).
  • Operazioni dell’AES:
    • (^) Espansione della chiave con Rijndael Key Schedule.
    • Add Round Key iniziale.
    • N-1 round con tutte e 4 le funzioni.
      • (^) Sub Bytes : sostituisce ogni byte in modo non lineare tramite l’uso di una lookup table. - (^) Usa una S-Box da 256 valori di 8 bit , derivati dagli inversi moltiplicativi su , noto per la sua non-linearità. È questa l’operazione che dà non linearità all’AES.
      • Shift Rows : esegue un shift delle righe dello stato. Dà diffusione all’AES.
      • Mix Columns : ogni byte di una colonna dell’output è una funzione lineare ed invertibile dei 4 byte di quella colonna. Dà diffusione all’AES.
      • Add Round Key : combina ogni byte con i byte delle subkey tramite XOR bitwise.
    • Ultimo round senza Mix Columns.

Block Cipher Modes: per criptare messaggi lunghi

  • PADDING : se la lunghezza del messaggio non è multiplo della dimensione del blocco, si usa il padding.
    • Gli interlocutori devono essere d’accordo sulle regole di padding da usare, altrimenti potrebbe essere difficile per il destinatario capire dove finisce il messaggio e dove inizia il padding.
    • Bit padding : si aggiunge un bit ‘1’ e poi tanti ‘0’ fino ad arrivare a un multiplo del blocco.
    • ANSI X.923 : si aggiungono tanti byte a 0 e l’ultimo byte indica il numero di byte di padding.
    • RFC 5652 PKCS#7 PKCS#5 : il numero di byte di padding viene usato come padding ripetutamente.

GF ( 28 )

  • Svantaggi:
    • (^) No Avalanche Effect : è questo il motivo per il quale non c’è l’error propagation.
    • Non va mai riutilizzata la stessa sequenza di chiave e IV, dato che viene usato come one-time-pad: se l’attaccante conosce plaintext e ciphertext, basta fare XOR e troverebbe il pad da riusare.
    • (^) Serve un meccanismo per garantire la sincronizzazione tra mittente e destinatario.
  • (^) CIPHER FEEDBACK MODE (CFB) : è come il CBC ma con l’encryption spostata prima dello XOR lato IV.
  • Ogni blocco del ciphertext viene calcolato tramite XOR tra il blocco di plaintext corrispondente e il blocco di ciphertext precedente cifrato con la funzione di Encryption.
  • La dimensione dei blocchi di plaintext e ciphertext può anche essere diversa dalla dimensione del block cipher utilizzato.
  • Vantaggi:
  • (^) Si usa solo la funzione di Encryption.
  • (^) Avalanche Effect : il one-time-pad di ogni blocco dipende dai blocchi di ciphertext precedenti.
  • (^) È self-synchronizing : si risincronizza in caso di perdita di parti di ciphertext.
  • Svantaggi:
  • (^) Error Propagation : causato dall’avalanche effect.
  • Non si può generare in anticipo l’intero one-time-pad.
  • (^) COUNTER MODE (CTR) :
  • Simile a OFB, ma ciò che viene cifrato con la funzione di Encryption è una sequenza di blocchi chiamati counters , tutti diversi tra loro.
  • Tipicamente il counter è inizializzato a un certo valore e incrementato di 1 per ogni blocco successivo.
  • Vantaggi:
  • Si usa solo la funzione di Encryption.
  • Se sono noti tutti i counter il keystream da usare per lo XOR può essere calcolato in anticipo. In tal caso tutte le operazioni sono parallelizabili.
  • Si può decifrare un blocco di ciphertext in modo indipendente dagli altri, se è noto il suo counter.

Principali utilizzi della crittografia simmetrica

  • Confidenzialità : trasmissione su un canale non sicuro o memorizzazione su supporti non sicuri.
  • Autenticazione : tramite meccanismi challenge response, come quello nella figura a lato.
  • Integrità : per generare il checksum di un messaggio (MIC, Message Integrity Check).

Svantaggi della crittografia simmetrica

  • Richiede un canale o meccanismo sicuro per lo scambio della chiave.
  • Numero totale di chiavi per la comunicazione di N entità è , difficile gestirle al crescere di N.

Steganografia

  • (^) Consiste nel nascondere l’esistenza di un messaggio , più che nel renderlo incomprensibile.
  • Si possono inserire messaggi nascosti ad esempio all’interno di immagini o file audio (molto overhead).
  • Si può usare insieme alla crittografia.

Ti

N ( N − 1 )/ 2

  • Svantaggio: No Avalanche Effect. Avalanche effect, ma cambiando un bit di cambia solo il bit corrispondente di e solo i blocchi di ciphertext successivi cambiano completamente. M 1 C 1

Hash Functions

  • (^) Sono funzioni non invertibili che prendono in input un messaggio di lunghezza variabile e producono un output di lunghezza fissa.
  • (^) L’output è detto Message Digest e può essere usato come “fingerprint” del messaggio di input.
  • (^) Sono funzioni deterministiche con un forte avalanche effect.
  • (^) DEF : Se , dove è la funzione di hash e è l’input, è detto preimmagine dell’hash.
  • (^) DEF : Dati ed , con , se allora si ha una collisione.

Proprietà delle funzioni di hash

  • Compressione : riduce la dimensione dei dati “riassumendo” il messaggio di input.
    • L’hash è funzione di tutto l’input e permette di rilevare modifiche o errori.
    • Dato che l’hash ha dimensione fissa e l’input ha lunghezza variabile (quindi potenzialmente anche maggiore di quella dell’hash) le collisioni esistono, l’importante è che siano difficili da trovare.
  • Pseudorandomicità : l’hash deve sembrare “generato casualmente” e non devono esserci correlazioni evidenti tra l’input e l’output.
  • Deve essere veloce da calcolare.
  • One-Way (or Preimage Resistance) : dato un hash, deve essere difficile (computazionalmente infattibile) trovare un qualsiasi input che dia quell’hash in output.
  • Weak Collision (or Second-Preimage) Resistance : dato un hash e il corrispondente input, deve essere difficile trovare un secondo input che dia lo stesso hash in output.
  • Strong Collision Resistance : deve essere difficile trovare due input distinti che diano lo stesso hash in output (notare che qui non abbiamo un preciso hash da trovare, basta trovare una collisione qualsiasi).
  • L’hash deve essere lungo almeno 128 bit per essere resistenti alle collisioni (birthday paradox).
    • (^) Per trovare una collisione servono mediamente tentativi con diversi messaggi di input.
    • Un attacco bruteforce richiede tentativi (in media , simile ad un bruteforce per cifrari simmetrici).
    • è la lunghezza dell’hash in bit.
  • (^) Un collision bruteforce attack è più facile di un preimage bruteforce attack , in un attacco di quest’ultimo tipo è “incluso” un attacco del primo tipo. - Se bit sono necessari per resistere ad un preimage attack, servono bit per resistere ad un collision attack.

Struttura delle funzioni di hash

  • La maggior parte delle funzioni di hash è un processo iterativo che opera su uno o più blocchi di input di dimensioni fisse.
  • Si usano tecniche di padding per rendere la lunghezza del messaggio di input multipla del blocco.
    • Dato che l’hash non deve essere invertibile non è necessario che il padding sia facilmente removibile, ma non si possono comunque usare valori casuali, perché dev’essere deterministica.
    • Il tipo di padding è definito dall’algoritmo e non è modificabile.
    • Solitamente si usa un padding che dipende dall’input.
  • Solitamente il processo si divide in due fasi: espansione e compressione.
    • Se viene usato un padding appropriato e la funzione di compressione è collision-resistant, allora la funzione di hash è collision-resistant (Merkle-Damgard).

Possibili attacchi alle funzioni di hash

  • Per funzioni con struttura Merkle-Damgard:
    • (^) Length Extension Attack : noto un hash e il padding del messaggio corrispondente (ad esempio perché questo dipende da ), è facile calcolare e tali che.

H ( x ) = h H x x h

x y x ≠ y H ( x ) = H ( y )

2 n /^2

2 n^ 2 n −^1

n

n 2 n

h

len ( m ) m ′ h ′ h ′ = H ( m | | pa d ( m ) | | m ′)

  • (^) Message Authentication : si possono usare gli hash come Message Integrity Code (MIC) , però:
    • (^) Se non è adeguatamente protetto potrebbe essere modificato da un attaccante (chiunque può calcolare l’hash di un nuovo messaggio e sostituirlo).
    • Per lo stesso motivo non possono essere usati come prova crittografica della sorgente del messaggio.
    • Possibili soluzioni:
      • (^) Criptare sia il messaggio che l’hash con una chiave segreta.
      • (^) Calcolare l’ hash della concatenazione del messaggio con un valore segreto.
        • In questo modo la funzione di hash prende come parametro sia il messaggio che il valore segreto (che ha la funzione di chiave) e quindi l’hash è chiamato Message Authentication Code (MAC).
  • (^) Encryption : una funzione di hash può essere usata anche per criptare messaggi.
    • (^) One Time Pad : la funzione di hash viene usata per generare un keystream che viene XORato con il plaintext, come per le modalità OFB , CFB e CTR (ha gli stessi vantaggi e svantaggi di queste). - Si parte con l’hash della chiave segreta e poi si esegue ripetutamente la funzione di hash.
    • (^) Mixing in the message : la funzione di hash viene usata per generare la chiave blocco per blocco, l’hash viene calcolato sulla chiave segreta concatenata al blocco di ciphertext precedente.
  • (^) È anche possibile usare un block cipher per generare un hash :
    • All’inizio come plaintext viene usato un valore costante, mentre il messaggio di cui calcolare il digest viene fornito come chiave per il block cipher, ad ogni blocco si usa come plaintext l’output precedente.
    • (^) L’hash risultante potrebbe essere troppo piccolo (es: 64 bit per DES) e la computazione è più lenta delle funzioni hash ad-hoc.

Crittografia Asimmetrica

  • È probabilmente l’avanzamento più significativo nella crittografia degli ultimi 3000 anni.
    • Il primo documento pubblico relativo alla crittografia asimmetrica risale al 1975 (Diffie & Hellman).
  • (^) È asimmetrica perché si usano chiavi diverse per criptare e decriptare i messaggi.
  • Sfrutta l’applicazione di concetti matematici e della teoria dei numeri invece di permutazioni e sostituzioni.
    • (^) Usa delle trapdoor functions : funzioni semplici da calcolare in un senso , ma difficili da invertire , a meno che non si conosca un opportuno valore segreto t (la “trapdoor”).
    • Esempio di trapdoor function: prodotto tra numeri primi.
      • (^) È semplice calcolare il prodotto tra due numeri primi.
      • (^) È difficile fattorizzare un numero dato dal prodotto di due numeri primi molto grandi.
        • (^) È però facile farlo se uno dei due fattori è noto.
  • Confronto tra crittografia simmetrica e asimmetrica:
  • Dato che è molto lenta, la crittografia asimmetrica viene usata solo per fare ciò che quella simmetrica non può fare, quindi come complemento piuttosto che come sostituto della crittografia simmetrica. CRITTOGRAFIA SIMMETRICA CRITTOGRAFIA ASIMMETRICA
  • (^) Serve un canale sicuro per lo scambio della chiave.
  • (^) Serve una chiave diversa per ogni coppia di individui.
  • (^) La chiave non è condivisa : la chiave pubblica è nota a tutti, mentre la chiave privata è nota solo al proprietario.
  • (^) È computazionalmente infattibile ricavare la chiave privata conoscendo solo quella pubblica.
  • Inizializzazione delle chiavi più semplice.
  • (^) Molto più lenta della crittografia simmetrica.
  • Spesso i due tipi di crittografia si usano insieme.
  • (^) Utilizzi della crittografia asimmetrica :
    • (^) Key Distribution : ad esempio si può usare quella asimmetrica come canale sicuro sul quale inviare la chiave condivisa per la crittografia simmetrica. - (^) La crittografia asimmetrica semplifica, ma non elimina, il problema della distribuzione delle chiavi.
    • (^) Digital Signatures : per autenticare un messaggio, verificare che questo sia integro e che provenga effettivamente dalla sorgente dichiarata ).
    • (^) Confidentiality : si può usare semplicemente per criptare e decriptare direttamente i messaggi.
  • Esempi di algoritmi asimmetrici: RSA, DSS, Diffie-Hellman, Fiat-Shamir.
  • La sicurezza degli algoritmi asimmetrici si basa sempre sulla dimensione della chiave.
    • Gli attacchi brute-force sono teoricamente possibili ma le chiavi utilizzate hanno dimensioni molto maggiori di quelle per gli algoritmi simmetrici (almeno 1024 bit).
    • Un punto chiave per la sicurezza è la difficoltà di ricavare la chiave privata conoscendo quella pubblica.
      • Affinché ciò sia possibile è richiesto l’uso di numeri molto grandi, quindi l’algoritmo è più lento.

Algoritmo RSA

  • Prende il nome dagli inventori Rivest, Shamir e Adleman (MIT, 1977).
  • È un algoritmo molto generale che può essere usato per criptare / decriptare, firme digitali, ecc…
  • È basato sull’ esponenziazione in un finite field, o Galois Field , di interi modulo.
    • L’esponenziazione ha una bassa complessità :.
    • La fattorizzazione ha invece una complessità molto elevata :. - Il modulo è la lunghezza della chiave.
  • La lunghezza della chiave è variabile: lunga per ottenere più sicurezza o corta per privilegiare l’efficienza.
  • (^) Anche la lunghezza del plaintext è variabile : deve solo essere minore della lunghezza della chiave.
  • (^) DEFINIZIONI DALLA TEORIA DEI NUMERI :
    • Reduced Set of Residues : l’insieme dei numeri e co-primi con.
    • Euler Totient Function ø( ): il numero di elementi del Reduced Set of Residues di.
  • FUNZIONAMENTO DEL TEXTBOOK RSA :
    • (^) Scegliere due numeri primi molto grandi , chiamati e , che dovranno essere tenuti segreti.
      • (^) Dopo aver generato le chiavi, e possono essere eliminati oppure tenuti dal proprietario della chiave segreta per velocizzare alcune operazioni di crittografia.
    • (^) Moltiplicare questi due numeri per ottenere il modulo.
    • (^) Calcolare ø( ).
    • (^) Scegliere un numero co-primo con ø( ) e tale che ø( ).
    • Trovare l’inverso moltiplicativo di mod ø( ).
      • Spesso si scelgono piccoli valori di , perché velocizza la computazione (tanto è pubblico), e allo stesso tempo permette di ottenere valori di più grandi, che aumenta la sicurezza.
    • (^) La chiave pubblica è.
    • La chiave privata è.
    • Se è il plaintext, tale che , e è il ciphertext, encryption e decryption si fanno così:
      • Encryption : mod.
      • (^) Decryption : mod.
      • (^) Dimostrazione: mod mod mod mod mod (per un corollario del teorema di Eulero, dato che è l’inverso moltiplicativo di ).
    • Possiamo considerare l’RSA come un block cipher, dove la dimensione del blocco è l’occupazione in bit del modulo. Per criptare messaggi possiamo usare schemi come ECB, CBC, ecc…

n

O (( log ( n ))^3 )

O ( e ( log ( n ))

3

n

< n n

n n

p q

p q

n = pq

n = ( p − 1 )( q − 1 )

e n 1 < e < n

d e n

e

d

< e , n >

< d , n >

m 0 ≤ m < n c

c = me^ n

m = cd^ n

m = cd^ n = ( me^ n ) d^ n = med^ n = m^1 + ko ( n )^ n = m

d e

n m > n

  • Gli utenti inviano il loro valore all’interlocutore.
  • La computazione della chiave segreta condivisa avviene come nello schema a lato.
  • Questo schema è resistente agli attacchi passivi :
  • La chiave segreta non viene mai inviata sulla rete , ma calcolata da ognuno dei due utenti che giungono allo stesso risultato.
  • È impossibile calcolare la chiave conoscendo solo i valori pubblici in transito sulla rete, serve conoscere anche i valori privati.
  • L’attaccate dovrebbe risolvere un logaritmo discreto.
  • Questo schema è però vulnerabile ad attacchi Man-In-The-Middle :
  • Se un terzo utente C si intromettesse tra Alice e Bob e facesse da intermediario, nessuno dei due avrebbe modo di sapere, usando solo Diffie-Hellman, che sta “parlando” con un intermediario.
  • La comunicazione sarebbe comunque sicura, ma separatamente tra A e C e tra C e B.

Utilizzi della crittografia asimmetrica

  • Trasmissione su un canale insicuro : ogni utente può criptare i messaggi con la chiave pubblica del destinatario, egli poi decripterà i messaggi con la propria chiave privata.
  • Storage su media insicuri : utile quando anche terze parti possono criptare i dati.
  • Data Authentication (Digital Signature) : DSA, RSA Signature, ecc…
  • Key Establishment : Diffie-Hellman, ecc…
  • Peer Authentication (Identification) :
    • Schemi Zero Knowledge Proof : dimostrare di conoscere un segreto senza rivelarlo.
    • Con RSA : B cripta un valore (scelto da B stesso) con la chiave pubblica di A e glielo invia, se A riesce a rispondere inviando il valore in chiaro, allora A possiede effettivamente la chiave privata (di A). - O altri schemi simili.
  • Per ogni funzione sono disponibili degli algoritmi specifici (es: data encryption, MAC, firme digitali, key establishment, peer authentication, ecc…).

Vantaggi e svantaggi della crittografia asimmetrica

• VANTAGGI :
  • Ogni utente deve tenere in memoria solo una chiave segreta : la propria.
  • Il numero totale di chiavi per far comunicare N utenti è solo 2N (ogni utente ha una coppia di chiavi).
  • SVANTAGGI :
  • È più lenta rispetto alla crittografia simmetrica.
  • Serve comunque un modo per distribuire in modo sicuro le chiavi pubbliche.
  • Per evitare che un’utente riceva una chiave pubblica “falsa”.

Message Authentication

  • Le tecniche di Message Authentication si usano per:
    • Integrità : permette al destinatario di sapere se un dato è stato modificato in modo non autorizzato.
    • Origin Authentication : verificare l’ identità del mittente.
    • Non Ripudio : impedisce al mittente di negare di aver prodotto un certo messaggio.
  • Possibili approcci:
    • Meccanismi simmetrici : crittografia simmetrica con integrity check, keyed hash functions (MAC).
    • Meccanismi asimmetrici : crittografia asimmetrica e firma digitale.

y

Message Authentication con meccanismi simmetrici

  • Se i due interlocutori possiedono una chiave segreta condivisa, si possono usare degli schemi di message authentication simmetrici.
  • Usando solo un cifrario simmetrico è impossibile, in generale, fornire il servizio di message authentication.
    • (^) Sarebbe possibile riconoscere in modo automatico gli errori solo nel caso in cui il destinatario conosca a priori un’eventuale struttura del messaggio o formato dei dati , ma anche in questo caso, la message authentication non è sempre garantita. - External Error Control : si cripta il messaggio, poi si invia il ciphertext insieme all’hash del ciphertext. - Non è sicuro : chiunque può calcolare l’hash di un ciphertext modificato. - Può funzionare solo se l’algoritmo di hash è sconosciuto all’attaccante, ma quando si progettano dei sistemi di sicurezza si deve sempre supporre che l’attaccante conosca tutto tranne la chiave. - Questo schema permette di rilevare solo gli errori di trasmissione , ma non gli attacchi. - Internal Error Control : si calcola l’ hash del plaintext , poi si cripta sia il messaggio che l’hash. - È più sicuro : l’attaccante non può cambiare il ciphertext e calcolare un nuovo hash, perché anche l’hash è criptato, e lui non conosce la chiave. - È necessario criptare il messaggio: se non serve la confidenzialità questo schema non funziona. - Non funziona bene con OFB o schemi simili che criptano con XOR. - MESSAGE AUTHENTICATION CODE (MAC) : - È un Cryptographic Checksum (detto authenticator ), come un hash che dipende sia dal plaintext che da una chiave segreta condivisa. - Non richiede la confidenzialità , anche solo il MAC può dipendere dalla chiave, il messaggio può essere trasmesso in chiaro se non è necessario criptarlo. - Se si cripta il messaggio, la sicurezza del MAC non dipende dal tipo di cifrario usato. - In tal caso è consigliato usare chiavi diverse per MAC e cifratura. - Il MAC può essere applicato sia prima che dopo la cifratura , dato che dipende da una chiave. - Di solito è consigliato applicare il MAC prima di cifrare il tutto. - Fornisce la garanzia che il messaggio non sia modificato e che provenga dal mittente dichiarato. - Il ricevitore calcola il MAC usando il plaintext ricevuto e la chiave, poi lo confronta con il MAC ricevuto. - Il MAC è simile alla Digital Signature, ma non sono la stessa cosa: la firma digitale include l’autenticazione del messaggio, ma non viceversa. - Vantaggi : - Il MAC è perfetto per quei casi in cui è richiesta solo l’autenticazione. - A volte è richiesto che l’autenticazione persista per più tempo rispetto alla confidenzialità (il MAC può essere memorizzato insieme al messaggio). - Requisiti di una MAC function : - Data una specifica chiave : - Weak Collision Resistance : dato un messaggio e il corrispondente MAC, deve essere molto difficile trovare un altro messaggio che abbia lo stesso MAC. - Strong Collision Resistance : deve essere molto difficile trovare due messaggi che abbiano lo stesso MAC (più generale). - I valori del MAC dovrebbero essere distribuiti in modo uniforme. - Avalanche Effect : ogni bit del MAC dovrebbe dipendere da ogni bit dell’input. - Si può ottenere un MAC anche calcolando l’hash del plaintext concatenato alla chiave di autenticazione.
      • Si può sia concatenare che mischiare plaintext e chiave in modi più complessi.

Authenticated Encryption

  • (^) A volte è necessaria sia l’ autenticazione che la confidenzialità , in questi casi si usano sistemi di Authenticated Encryption (AE) , i quali forniscono entrambi i servizi simultaneamente.
  • I possibili approcci sono 4:
    • Hash-then-Encrypt :
      • Si usa solo un hash per l’autenticazione, che viene criptato con la stessa chiave del messaggio, quindi l’autenticazione non persiste dopo aver decriptato il messaggio.
    • MAC-then-Encrypt :
      • Più sicuro del precedente perché si usano due chiavi diverse per encryption e authentication.
      • (^) Bisogna decriptare il messaggio per poterlo autenticare.
      • (^) L’autenticazione può persistere anche dopo che il messaggio è stato decriptato.
    • Encrypt-then-MAC :^ dove
      • In questo caso si può autenticare il messaggio anche senza decriptarlo.
      • Qui è il ciphertext che viene autenticato, dunque l’autenticazione non persiste dopo la decryption.
    • Encrypt-and-MAC :
      • Bisogna decriptare il messaggio per poterlo autenticare.
      • L’autenticazione può persistere anche dopo che il messaggio è stato decriptato.
      • In questo caso si può criptare il messaggio e calcolarne il MAC in parallelo.
  • Esempio:
    • Counter Mode with CBC-MAC (CCM) : di tipo Encrypt-and-MAC, il ciphertext è generato in CTR mode mentre l’auth tag con il CBC-MAC e XOR con dei nonce criptati.
  • Esistono anche algoritmi progettati appositamente per criptare e autenticare il messaggio in un unico passaggio, senza dover riprocessare il messaggio dall’inizio. - Galois / Counter Mode (GCM) : di tipo Encrypt-and-MAC, il ciphertext è generato in CTR mode e l’auth tag viene generato a partire dal ciphertext man mano che questo viene prodotto.
  • Authenticated Encryption with Associated Data (AEAD) : ci sono algoritmi che permettono di autenticare un messaggio intero ma di criptarne solo una parte. - Ad esempio per i pacchetti di rete: l’header dev’essere solo autenticato ma non criptato (dev’essere leggibile dai router), mentre il payload dev’essere sia autenticato che criptato. - Esempi di algoritmi (varianti dei due sopra): CCM-AEAD, GCM-AEAD.

Digital Signature

  • Usando la crittografia asimmetrica:
    • Se si cripta con la chiave pubblica si ottiene confidenzialità (solo il proprietario della chiave privata può decriptare) ma non autenticazione (chiunque può modificare il messaggio e ri-criptarlo con la chiave pubblica). L’aggiunta di un hash non aiuta, perché chiunque può calcolare e ri-criptare anche quello.
    • Se si cripta con la chiave privata si ottiene autenticazione (solo il proprietario della chiave privata può criptare) ma non confidenzialità (chiunque può decriptare il messaggio conoscendo la chiave pubblica).
    • Se si cripta con entrambe le chiavi:
      • Se si cripta prima con la chiave pubblica del destinatario e dopo con quella privata del mittente : chiunque può verificare l’autenticazione, dato che bisogna decriptare prima con la chiave pubblica del mittente.
      • Se si cripta prima con la chiave privata del mittente e dopo con quella pubblica del destinatario : solo il destinatario può verificare l’autenticazione, dato che bisogna decriptare prima con la chiave privata del destinatario.
      • Sono schemi molto costosi in termini di risorse e tempo : si cripta l’intero messaggio due volte.
    • Rimane comunque il problema di riconoscere un messaggio alterato in modo algoritmico (integrità).

Ek ( m | | H ( m ) )

Ek

e

( m | | M ACk

a

( m ) )

C | | M ACka ( C ) C = Eke ( m )

Eke ( m ) | | M ACka ( m )

  • (^) Firma Digitale : tecnica usata per permettere a chiunque di verificare che un messaggio sia stato prodotto dal mittente dichiarato e che il messaggio non sia stato alterato in modo non autorizzato. - Una firma digitale può essere verificata matematicamente, a differenza di una tradizionale.
  • (^) Un meccanismo di firma digitale è composto da un algoritmo di generazione della firma e da uno di verifica della firma.
  • Categorie di schemi di firma digitale:
    • (^) Firma digitale con appendice : la firma è un “tag” che viene apposto al messaggio originale.
      • Richiede il messaggio originale, oltre che la firma, come input dell’algoritmo di verifica.
    • (^) Firma digitale con recupero del messaggio : la firma contiene anche il messaggio originale.
      • Per la verifica non richiede il messaggio originale, dato che quest’ultimo è già incluso nella firma.
  • Uno schema di firma digitale può essere:
    • (^) Deterministico : dato un messaggio e una chiave privata, la firma generata è sempre la stessa.
    • (^) Randomizzato : la firma generata può variare in modo randomico, pur restando verificabile.

RSA Digital Signature with Appendix

  • L’RSA nasce come algoritmo per criptare, ma può essere usato anche per generare firme digitali.
    • Si calcola l’hash del messaggio, poi lo si cripta con la chiave privata del mittente, ottenendo la firma che viene poi inviata insieme al messaggio originale.
    • In fase di verifica si ricalcola l’hash del messaggio ricevuto , il quale viene poi confrontato con quello ottenuto decriptando la firma con la chiave pubblica del mittente.

Digital Signature Standard (DSS)

  • È un algoritmo progettato appositamente per le firme digitali standardizzato dal NIST nel 1991.
  • (^) Basato sull’algoritmo Digital Signature Algorithm (DSA).
    • Utilizza funzioni di hash standard con dimensione come, ad esempio, SHA-1, ecc…
    • Usa esponenti a bit e crea firme di bit ma con un livello di sicurezza pari o superiore a 1024 bit.
    • È un algoritmo randomizzato , dato che prende in input anche un valore casuale.
  • FUNZIONAMENTO DI DSA :
    • Si definiscono la lunghezza della chiave e dell’hash:
      • (^) Key Length : dev’essere almeno 1024 bit e multiplo di 64 bit.
      • Hash Length : dev’essere almeno 160.
    • Scegliere un numero primo molto grande, da almeno bit.
    • Scegliere in modo che sia un fattore primo di da bit.
    • (^) Scegliere in modo che il suo ordine moltiplicativo modulo sia.
    • (^) Scegliere e calcolare mod.
    • (^) La chiave pubblica è mentre la chiave privata è.
    • (^) La procedura di firma genera due valori, ed , che rappresentano le due componenti della firma, le quali devono essere entrambe inviate insieme al messaggio.

h = H ( m )

f = { h } k −

h ′ = H ( m ′)

h = { f ′} k

N

N 2 N

L

N

p L

q p − 1 N

g p q

x < q y = gx^ p

( p , q , g , y ) x

r s