# Session (software)

Session è un'applicazione di messaggistica istantanea crittografata end-to-end e multipiattaforma che mira alla tutela della privacy grazie ad una rete decentralizzata sulla base dell'onion routing.

## Descrizione

Session è un software libero e open source, sviluppato da The Oxen Project sotto la guida della Oxen Privacy Tech Foundation che è senza scopo di lucro. L'applicazione permette agli utenti di inviare messaggi individuali e di gruppo, che possono includere file, note vocali, immagini e video.
La comunicazione (messaggi, clip vocali, foto e file) tra gli utenti è crittografata end-to-end utilizzando il protocollo Session, un derivato del protocollo Libsodium. La trasmissione dei dati avviene attraverso una rete di server decentralizzata simile a Tor, chiamata Oxen Network. Il progetto Oxen afferma che Session non memorizza, tiene traccia o raccoglie i metadati dei messaggi degli utenti e tantomeno gli indirizzi IP.
Nel 2021 c'è stata una revisione indipendente da parte di Quarkslab che ha verificato la veridicità delle affermazioni.

## Caratteristiche
### Chat

Le chat in Session sono crittografate end-to-end utilizzando Session Protocol. Messaggi e file vengono inviati attraverso un sistema di onion routing basato sulla rete decentralizzata di Oxen Network e sono temporaneamente conservati finché il ricevente non riceve il messaggio.
Session ha la peculiarità di minimizzare i metadati dei file allegati ai messaggi in quanto spesso questi contengono informazioni che possono identificare l'utente.

### Account

La creazione di un account, anziché richiedere un numero di telefono o un indirizzo e-mail, utilizza una chiave pubblica ovvero un numero alfanumerico generato casualmente di 66 cifre per la creazione e identificazione univoca dell'utente. La totale assenza di informazioni personali permette un alto grado di anonimato grazie al quale l'utente non può essere ricondotto ad una reale identità.
L'accesso e il recupero dell'account può avvenire solamente tramite l'utilizzo di una frase di recupero, sostanzialmente una chiave privata in una forma leggibile per una persona. La frase di recupero non deve essere scambiata né conosciuta da nessuno che non sia il legittimo proprietario. La chiave è fondamentale per la criptazione dei messaggi inviati e la decriptazione dei messaggi ricevuti a loro volta criptati dalla chiave pubblica dell'utente.

### Protocollo

Session utilizza Session Protocol, un protocollo derivato da Signal Protocol costruito sulla libreria crittografica libsodium. Tuttavia Signal Protocol non era adeguato per gli scopi di Session in quanto era stato pensato la sicurezza e per essere usato sulla base di server centrali. Session invece utilizza una rete decentralizzata che tutela l'anonimato.
Session Protocol non supporta PFS tuttavia quest'ultimo è compensato dalle altre misure di sicurezza e privacy.

### Rete decentralizzata

Session per fornire onion routing utilizza i 1000 nodi di servizio di Oxen Network. Di fatto il meccanismo di base è onion routing. In una rete onion, i messaggi sono incapsulati in "strati" di crittografia per ogni nodo che passano. Dunque il mittente rimane anonimo perché ciascun intermediario conosce solo la posizione del nodo immediatamente precedente e di quello immediatamente successivo rendendo molto più difficile tracciare o intercettare l'attività dell'utente. Session grazie ad onion routing assicura la resistenza alla censura e la tutela dell'indirizzo IP degli utenti.

## Limitazioni

Attualmente Session non supporta l'autenticazione a due fattori sebbene la tecnologia dietro Session non preveda nient'altro che la propria chiave privata per l'accesso all'account. Inoltre ad oggi le chiamate non sono pienamente supportate dalla rete decentralizzata perciò l'indirizzo IP viene esposto al ricevente della chiamata.