Metodi di key exchange

  • Trusted Key parties (sono come Certificate authorities studiati in Sicurezza delle reti)
  • Merkle Puzzles
  • DH protocol

Trusted Third parties

Squared Key problem

Un problema abbastanza ovvio è che per storare le chiavi di tutti c’è una necessità $O(n^{2})$ on $O(n)$ users Se c’è un trusted key parties il numero delle chiavi si riduce di molto, ritorna ad essere lineare!

Protocols

Toy Exchange protocol🟩

TTP = Trusted Third party (simile a quanto poi si avrà in Asymmetric Cryptography) Key Exchange protocols-20240312110014411

Questa è la base del servizio di Kerberos! Il servizio di sopra è sicuro su Choosen plaintext, dato che Eve non capisce niente senza le chiavi!

Quindi in pratica vengono scambiate due cose, un ticket e la chiave segreta, creati da TTP che sa creare segreti e conosce singole chiavi di tutte.

Assumendo CPA security l’attaccante non può sapere niente su $k_{AB}$, che sembra roba random. Problema:

  • TTP è il single node of failure se viene compromesso tutto viene compromesso, è un obiettivo troppo Juicy.
  • Può essere soggetto a replay attacks senza problemi (ad esempio rimandando quanto mandato da Alice (es. se è stato comprato qualcosa, se si ripete tutto si compra di nuovo, questo è un danno)). La cosa carina è che usa solo chiavi simmetriche, niente di nuovo rispetto Classical Cyphers, OTP and Stream Ciphers, Block Ciphers.

Merkle Puzzles

vogliamo cercare di risolvere problemi di origliamento (eavesdrop, senza modifiche varie sul messaggio. Avversario passivo. Vogliamo farlo senza avere un #Trusted Third parties, ma vogliamo usare solamente symmetric crypto. La cosa è che questo è possibile, ma molto inefficiente per cui inutili nella pratica.

The puzzle protocol

Suppose we have $E(k, m)$ with $k \in \left\{ 0, 1 \right\}^{128}$. Define $E(P, message)$ and $P = 0^{96} \mid b_{1}\dots b_{32}$, and a $x_{i} \in \left\{ 0, 1 \right\}^{128}$and we want to find $P$ back by some sort of brute-force.

Alice:

  • Creates $2^{32}$ puzzles by creating $E(0^{96} \mid P_{i}, \text{ "Puzzle \#}x_{i} \text{"} \mid k_{i})$
  • Sends every puzzle to Bob Bob:
  • Chooses a puzzle randomly and tries to solve it (try all possible $P_{i}$), when the first part matches, the puzzle is solved
  • Send $x_{j}$ to Alice Alice:
  • Check what puzzle was chosen, then $k_{j}$ is the shared key.

Quadratic Gap

Alice and Bob to $O(n)$ work to create and solve a single puzzle. An attacker would need to break all the $2^{32}$ keys, so it is $O(n^{2})$ cost, which is $2^{64}$.

To increase the security, they should make $n$ bigger, but it would be very very slower. The nice idea is that participant has linear time, while the attacker needs squared time. It is called quadratic gap. We don´t know if quadratic gap is the best gap we can do, but intuition says so.

Diffie-Hellman Protocol

In this case we have a exponential gap between participant and attacker.

Introduzione DH 🟩

Questo è quello che abbiamo studiato anche a Olycyber quindi è più facile. È basato su una costruzione matematica molto simile a RSA.

In pratica così

  1. Scelgo $p$ primo largo
  2. Scelgo $g$
  3. Alice sceglie $a$, e manda $g^{a}$ a Bob
  4. Bob fa lo stesso con $b$
  5. Il segreto è $g^{ab}$ , che è difficile da capire con i moduli, faremo una analisi di sicurezza in seguito.

Best algorithm for attacking this is $\exp (O(\sqrt[3]{ n})$, it is the Generalize Field Sieve (with a very high constant, like 80), not explained here here.

Difficulty comparison

Simmetric cipher DH Elliptic Curve
80 bits 1024 bits 160 bits
128 bits 3072 bits (in reality about 2048) 256 bits
256 bits 15360 bits 512 bits

Attacco a DH 🟩

DH è insicuro dal punto di vista del Man in the middle. Perché se uno in mezzo intercetta, può usare la sua chiave privata al posto di quella dell’altro interlocutore. Tanto conosce il valore di $g$ e gli basta questo. Key Exchange protocols-20240314093203133