Re: [Hackmeeting] consulta su matrix

Delete this message

Reply to this message
Author: samba
Date:  
To: hackmeeting
Subject: Re: [Hackmeeting] consulta su matrix
hola!

il mio post scritto 2 anni fa e' una raccolta di link e riflessioni
personali visto che in loop mi chiedevano cosa ne pensavo di matrix.org

In due anni sono successe un sacco di cose nel mondo tecnologico e
sopratutto nelle app di messaggistica, giusto per farvi un idea di cosa
si usava due anni fa (https://xkcd.com/1810), magari potrei scrivere
altre due righe sul blog, ma visto che ho poco tempo e voglio rispondere
al volo inizio a buttare giu' qsa qui se puo' essere utile


# Fondi

AMDOCS non e' piu' direttamente funder di matrix, ora esiste New Vector.
New Vector contiene gli sviluppatori core iniziali che raccolgono i
fondi e coordinano la Matrix Fundation. Quindi le persone non se ne sono
andate, si sono solo spostate dentro New Vector[0].
New Vector ha ricevuto qsa come 8 Milioni di dollari recentemente per
"accellerare i lavori di matrix"[1].
Questa tranche soldi è la terza e arriva da una venture capital chiamata
Notion[2] che spera con questo software un giorno di fare un sacco di
soldi probabilmente centralizzando tutta le messaggistica dentro un app
sola. Per fare un parallelo e' un po' come Sauron con l'anello del
potere. Motivo per cui matrix ha ricevuto una fraccata di milioni
recentemente e grazie a questi fondi sta diventando uno strumeto piu'
usabile.

[0] https://matrix.org/foundation/
[1]
https://matrix.org/blog/2019/10/10/new-vector-raises-8-5-m-to-accelerate-matrix-riot-modular
[2] Notion - https://notion.vc

# Strumento

Lo strumento in se cerca di fare TUTTO™
matrix vuole sostituire l'uso di email, telefono e chat in un colpo solo
Come? cerca di dare un servizio di chat, videochiamate, identificazione
centralizzata delle persone online, federare i messaggi tra varie
istanze matrix e centralizzare la chat di matrix assorbendo altri
protocolli di messaggistica usando bridge di dubbia stabilita'.

## bridge

Nel tempo, siccome matrix usa tutto via http, son usciti un sacco di
bridge[3], ma gli unici bridge che ho visto funzionare e rimanere attivi
in giro sono i bridge: matrix-telegram e matrix-irc, per altro non e'
davvero un integrazione ad oggi, quello che esiste e' semplicemente
l'uso di un bot che ripubblica i messaggi con diverse limitazioni. Altri
bridge anche se decantati molto non hanno avuto seguito e personalmente
non li ho mai visti in funzione da nessuna parte.

[3] https://matrix.org/bridges/

## Clients

Il client Riot ha una serie di complicati setup inizali che dimostra
ancora una volta quando spesso i progetti opensource si concentrino sul
codice e poco sulle UI, come se questo fosse secondario. Per fortuna
dopo la terza tranche di soldi matrix ha rifatto il client e
migliorato API e documentazione permettendo a Riot di essere leggermente
piu' usabile e permettendo ad vari altri client di uscire [4]

[4] https://matrix.org/clients/

## Videochiamate

Le videochiamate con audio e video attivo non mi hanno mai funzionato
bene al di fuori del istanza centrale matrix.org. Con questo non
voglio scoraggiare chi vuole tirare su un istanza, ma sappiate che non
funziona al primo colpo, nella mia esperienza posso dire che e'
abbastanza difficile fare un setup custom usabile che comprenda
audio/video integrato nel momenti in cui si limita la federazione (sul
perche' vedi dopo). A questo punto allora e' meglio installarsi un
istanza di jisti come ha fatto di sti tempi autistici[5] se vuoi
audio-video o un mumble come quello di esiliati[6] se vuoi solo-audio e
usare strumenti che non lasciano piu tracce di un link in un browser.

[5] A/I Jitsi:      https://vc.autistici.org
[6] hackit/mumble:  mumble://mumble.esiliati.org


## chat

Per la chat matrix segue il modello Slack.
Grande client, tanta RAM, con supporto a messaggi, link con preview,
History infinita di default, emoticons con immancabili stickerz, gruppi
di tutti i tipi, da 2 a 1k persone e vari private-message. Ogni
messaggio e' cifrato se vai in una chat o gruppo privato usano OLM, un
implementazione del end-to-end encrypotion fatta da signal.org, con la
grossa differenza che pero' i metadata passano in chiaro tra server e
server. Matrix supporta anche la chat via web, ma questa e'
fastidiosissima in quanto ad ogni nuova sessione vengono generate delle
nuove chiavi che devono essere approvate per ogni gruppo di cui fai
parte. Quindi diciamo che e' come Slack, ma siccome vuole fare le cose
cifrate poi la webapp diventa fastidiosissima e non e' come Slack.
Quindi e' consigliabile evitare la webapp di matrix quando possibile.

## crittografia

Matrix usa le librerie OLM, che usano a loro volta l'algoritmo
doublerachet per costruire e scambiare le chiavi di cifratura.
Usa Megolm per la gestione cifrata dei gruppi.
Notare che matrix cifra solo il contenuto del messaggio, non chi lo
invia, il destinatario o la data di creazione o di invio.[7]
Di solito per capire se la cifratura ha senso si usano entita' esterne
per fare review del codice e degli algoritmi e verificare quali
criticita' ci sono.
Infatti Matrix Foundation nel 2016 con l'aiuto dei fondi di OTF ha
ricevuto l'ok per fare una review estena della proria libreria OLM, la
review e' stata rilasciata qui[8] ed ha trovato un bug con alta
priorita' sui Megolm per i gruppi, poi fixato, non sono state fatte
altre review esterne del codice ad oggi che io sappia.

[7]
https://matrix.org/docs/guides/end-to-end-encryption-implementation-guide
[8]
https://www.nccgroup.trust/us/our-research/matrix-olm-cryptographic-review/

# Identita'

Matrix per funzionare ha bisogno di uno strumento che fa da Identity
Server. Questo identity server e' il punto unico di fiducia che opera
identificando i server altrui e rendendo disponibili le chiavi di
cifratura di ogni utente su quel server. Se si compromette il server
matrix si compromette tutta la rete a lui associata[8]. Tutte le persone
che usano il server Matrix devono fidarsi completamente che il server
sia trusted e non scambi una chiave sbagliata. Se ci sono breach di
sicurezza questo puo' compromettere la confidenzialita' dei messaggi,
inoltre puo' compromettere lo scambio di chiavi 1 a 1 e il relativo
scambio di fiducia da server a server. Notare bene che Matrix non e'
decentralizzato, e' federato e tutti gli utenti fanno affidamento al
server Matrix per centralizzare e gestire i messaggi e le varie identita'
Recentemente hanno fatto dei cambi interessanti per migliorare la
questione della privacy. Per fare qualche esempio ora il reset della
password non richiede piu' un identity server oppure se stai usando
matrix.org come default identity server appare un warning nei log

[9] https://bloggeek.me/matrix-webrtc-interview/
[10]
https://matrix.org/blog/2019/09/27/privacy-improvements-in-synapse-1-4-and-riot-1-4


## sicurezza

Ad aprile del anno scorso matrix.org ha avuto un breach di sicurezza
bello grosso[11]. Si erano fidati inserendo delle chiavi ssh dentro la
CI di Jenkins per rendere automagiche un paio di cose e qualcuno e'
riuscito ad entrare nel infra di matrix.org usando quelle chiavi e fare
le zozzerie sui server ufficiali di matrix.
La matrix fundation ha chiesto scusa, il gruppo tecnico ha reinstallato
tutto, ma nel mentre nessuno sa esattamente che cosa sia successo.
E' normale pensare che i messaggi passati in quel periodo
anche se end-to-end encrypted non erano da considerare confidenziali.

[11]
https://matrix.org/blog/2019/04/11/we-have-discovered-and-addressed-a-security-breach-updated-2019-04-12

## Metadata

La situazione metadata e' la piu' critica in un sistema che federa e
condivide messaggi. Non stiamo parlando di mastodon dove passano le foto
dei gattini e sappiamo che non dobbiamo parlare di cose confinenziali,
parliamo di un sistema di messaggistica dove pensiamo sia possibile far
passare anche cose sensibili..
I metadata che un istanza matrix condivide -se abilita la federazione-
sono parecchi, basti vedere le specs di matrix al fondo [12] per notare
che per parlarsi in una stanza con persone che usano diverse istanze
matrix c'e' bisogno di condividere parecchie informazioni su ogni server
matrix. Io ho visto i log di un server matrix federato e sono rimasto
affascinato da quanti dati passano da un server al altro. Questi dati
viaggiavano fino al giugno del 2019 passavano in chiaro[13] e potevano
essere tranquillamente essere letti da intermediari, ora bisogna avere
un server matrix federato per poterli leggere.
ok, mi si puo' dire. ma quali metadati? Tra i dati disponibili, primo
tra tutte, c'e' il nome della stanza, poi le identita' connesse al
gruppo con relativi id, la loro chiave e un json contenenti le altre
informazioni del messaggio inviato.
Lungi da me dal fare terrore tecnologico, ma bisogna comprendere che se
uno strumento non considera queste cose di default allora non puo'
essere usato per certi scopi di attivismo, confidenzialita' o sicurezza
e per ripeterlo di nuovo in altri termini piu' diretti:
Agenzie come NSA hanno ucciso persone basandosi sui metadata [14]

[12] https://matrix.org/docs/spec/#room-structure
[13]
https://matrix.org/~matthew/Response_to_-_Notes_on_privacy_and_data_collection_of_Matrix.pdf
[14] https://www.businessinsider.com/nsa-document-metadata-2016-12

## federazione

Vista la problematicità dei metadata, il problema del Identity server e
la centralizzazione delle informazioni in un server trusted, non mi
sentirei di consigliare un server Matrix federato in questo momento.
Stiamo ancora combattendo per avere dei gruppi decenti che facciano e2e
encryption[15] per bene e sogniamo la piattaforma che fa tutto creando
un nuovo standard, ma la realta' e' un altra. Dobbiamo accettare che le
cose vanno passo-passo e che quando tiriamo su un servizio dobbiamo
sapere che cosa fa e sopratutto dobbiamo accettare di mantenerlo in
futuro. Questa responsabilità non puo' essere tralasciata in quanto per
mantenere un servizio e mantenere la sicurezza di un gruppo si devono
fare delle scelte che poi si pagheranno nel tempo.

@xavi,
Per le compas che chiedono da Barcelona un server Matrix mi sento di
consigliare il server di Sindominio che ha scelto un setup custom e dopo
varie discussioni con los sindominantes ha deciso di non abilitare la
federazione se non con i server radicali amici e fidati [16].

[15] https://signal.org/blog/signal-private-group-system/
[16] https://wp.sindominio.net/blog/matrix-mensajeria-federada-y-segura/

# conclusione

vado verso la fine che sono un po' stanco di scrivere :)
Come altri software matrix non e' perfetto. Tenta di risolvere un
problema fastidioso con grandi ambizioni. Prende l'ecosistema delle app
di messaggistica e tenta di unirle tutte con un nuovo standard.
Il progetto richiede diverse risorse per poter diventare stabile e in
maniera reattiva pensa alla alla privacy e alla sicurezza. Tirare su una
cosa del genere e federarla fidandosi di quello che c'e' sotto e' poco
sicuro, quindi per ora non consiglierei a nessuno di mantenere un
infrastruttura di questo tipo a meno di tagliare con l'accetta una serie
di feature come l'Identity server e la federazione. Non ritengo di
essere la persona piu' esperta in merito, ho raccolto informazioni in
giro e provato alcune cose. Detto questo c'e' da considerare anche quel
simpatico dibattito tra il centralizzare e il federare quando parliamo
di liberta' e sicurezza, ma questo magari lo affrontiamo un altra volta...


saludos!

samba