Discutere su come due entità che vogliono comunicare tra di loro riescano a ricavare una chiave crittografica comune

Key Encapsulation Mechanism, come funziona?

Il setup iniziale è quello in cui Bob vuole comunicare con Alice la chiave simmetrica per poter comunicare più velocemente con lei. Siamo in contesto di comunicazione ibrida in cui all’inizio si comunica in maniera asimmetrica, ma ci si scambia non appena possibile una chiave simmetrica per poter comunicare velocemente. Si sfrutta per esempio un sistema classico di chiavi pubbliche e private, come RSA, e con questo Alice e Bob devono andare a scambiare informazioni riguardo la chiave simmetrica. La chiave potrebbe essere a 128 o 256 bit; si noti come sia molto più piccola rispetto ad una chiave asimmetrica pubblica, per questo andremo ad utilizzare sicuramente del padding per andarla a comunicare. Quando Alice riceverà il messaggio cifrato da Bob non le basterà fare altre che andare ad invertire il messaggio con la sua chiave privata per andare ad ottenere il messaggio originale.

Che tipo di garanzie di sicurezza vogliamo andare ad ottenere?

Sicuramente confidenzialità della comunicazione. Per quel che riguarda autenticità e integrità, non mi pare al momento, che KEM ci dia qualsivoglia forma di garanzia. Sicuramente è interessante perché in questo contesto solamente una delle due parti decide attivamente di passare ad una comunicazione simmetrica e questo potrebbe essere decisivo in certi scenari.

Se riuscissimo a sfruttare in combinazioni a KEM uno schema di cifratura che mi certifichi anche le altre due garanzie sopracitate sarebbe sicuramente ottimo al fine di mitigare attacchi attivi (CCA1-CCA2).

Ci interessa sapere chi sono queste entità?

Non necessariamente, potrebbe essere Alice e Bob, come potrebbero essere uno user agent e un server.


Sincrono-Asincrono, Intermediato, Out of Band

Quali sono potenzialmente i criteri che ci facciano decidere la tipologia di comunicazione?

Il materiale interessante pare sia tutto nelle slides 12. Sfortunatamente la registrazione di quella lezione pare non sia accessibile.

La questione è ciascuno di questi tre metodi ha delle sue peculiarità. Il più divergente dei 3 è sicuramente quello out of band communications, per cui stiamo usando materialmente dei canali non convenzionali per mettermi in contatto con soggetto che, per ragioni tra le più disparate, non possiamo contattare in maniera canonica. Pensiamo ad uno scenario in cui io Bob, voglio comunicare un segreto con Alice, ma temo fortemente che il mio telefono sia stato compromesso. Potrei pensare a qualunque metodo non convenzionale per andare a comunicare con Alice. Ho visto che la pagina di Wikipedia parla anche di hardware preposto per fare comunicazioni out of band →

Out-of-band management

Per quel che riguarda la comunicazione sincrona e asincrona ci troviamo in uno scenario più classico: abbiamo due attori che intendono comunicare tra di loro, la differenza è il come. Nella modalità sincrona abbiamo uno stream di bit continui che mette in comunicazione due entità; come se fosse una chat live o una video chiamata. Per quel che riguarda la comunicazione asincrona immaginiamo di fare un commento su reddit ed un altro ci risponde. Avviene uno scambio di informazione, ma non stiamo comunicando in contemporanea. Sicuramente ci sono dei pro e dei contro, indicativamente possiamo dire che le comunicazione sincrone sono più veloci, più costose, sempre in synch, tutto real time e quindi se ci sono problemi ce ne accorgiamo subito. Dal canto loro le comunicazione asincrone sono assai più economiche, non abbiamo bisogno in alcun modo di andare a fare sincronizzazioni basate sul tempo

Ecco un breve schema di Bing chat con i pro e i contro

Comunicazione sincrona