Sicurezza
Come funzionano autenticazione e cifratura in WFAS e quali sono i loro limiti. Leggi prima il disclaimer qui sotto.
WFAS è un progetto personale di uno studente di ingegneria. Le sue funzioni di sicurezza (autenticazione a chiave, cifratura ChaCha20-Poly1305, controlli anti-replay) sono un'implementazione sperimentale che ho scritto io stesso mentre imparavo. Non sono mai state sottoposte ad alcun audit di sicurezza formale né a una revisione indipendente.
- Ti chiedo di non fare affidamento su WFAS per proteggere audio o dati sensibili, riservati o critici per la sicurezza.
- Ti chiedo di non usarlo su reti pubbliche, aziendali, scolastiche o comunque non fidate.
- La cifratura è una misura "best effort" pensata per una rete domestica di cui ti fidi. Non sostituisce una soluzione verificata e sottoposta ad audit.
- Potrebbero esserci vulnerabilità o errori di progettazione di cui non sono a conoscenza.
Il software è fornito "così com'è", senza garanzie di alcun tipo, secondo i termini delle sue licenze. Se trovi un problema, ti sarei grato se lo segnalassi su GitHub.
Tre modalità di autenticazione
Nessuna
Nessun controllo. Chiunque si trovi sulla stessa rete e possa raggiungere il server può connettersi, quindi ha senso solo su una rete che controlli completamente.
Approvazione manuale
Ogni nuovo dispositivo che tenta di connettersi viene bloccato e richiede la tua conferma manuale sullo schermo del server.
Chiave condivisa
I dispositivi dimostrano di conoscere la stessa chiave, senza inviare la chiave stessa sulla rete.
Utilizza challenge-response basato su HMAC-SHA256.
Cifratura opzionale
L'audio inviato sul protocollo nativo può essere cifrato con ChaCha20-Poly1305, un algoritmo di cifratura autenticata standardizzato dall'IETF (RFC 8439). L'algoritmo in sé è molto studiato, ma la mia implementazione, e quella del protocollo che lo circonda, non è stata sottoposta ad audit e non posso escludere errori. Per attivarla, seleziona la modalità di sicurezza Chiave (Key) nella schermata Send (Server), imposta la passphrase e attiva lo switch della cifratura.
Protezione anti-replay
Oltre alla cifratura, il ricevitore è progettato per riconoscere e scartare i pacchetti audio duplicati, fuori ordine o rigiocati, usando i timestamp. Questo meccanismo non è stato revisionato in modo indipendente.
Specifica pubblica
La specifica del protocollo WFAS v2, inclusi i dettagli crittografici, le fasi di handshake e le primitive utilizzate, è pubblica su GitHub. Pubblicarla non la rende sicura, ma permette ad altri di rivederla, e accoglierei volentieri correzioni.
Leggi la specifica completa su GitHub →Limiti noti
In modalità di streaming Multicast, la cifratura si basa su una chiave statica condivisa preventivamente fra tutti i client, quindi ogni dispositivo che possiede quella chiave può decifrare il flusso. Può essere accettabile su una rete domestica di cui ti fidi, ma non è pensata né consigliata per reti Wi-Fi pubbliche, aziendali o non fidate. Potrebbero esserci altre debolezze di cui non sono a conoscenza, ed è per questo che in cima alla pagina c'è il disclaimer.
Privacy
- Nessuna telemetria o tracciamento nascosto.
- Nessun account richiesto per usare l'app.
- L'audio viene inviato solo tra i dispositivi che scegli sulla rete locale (LAN), non a server esterni o cloud.
La funzionalità di cifratura opzionale di WFAS è fornita "COSÌ COM'È" ed è destinata principalmente come livello leggero di privacy e protezione del traffico per reti locali fidate (LAN/P2P). È un'implementazione sperimentale scritta da uno studente come progetto di apprendimento e non è stata sottoposta ad alcun audit formale.
Non è destinata a fornire protezione contro aggressori ad alto rischio, reti ostili o ambienti critici per la sicurezza, e non deve essere utilizzata come sostituto di un trasporto sicuro dedicato o di altri meccanismi di sicurezza dove sono richieste garanzie più forti.
Utenti e integratori sono responsabili di valutare se le proprietà di sicurezza di WFAS e il proprio ambiente di rete siano appropriati per l'uso previsto.
Il protocollo WFAS e le sue implementazioni di riferimento sono forniti nei termini delle rispettive licenze open source. Non sono implicite garanzie di sicurezza aggiuntive al di là di quelle esplicitamente documentate dal protocollo e dall'implementazione.
Se trovi un problema di sicurezza, ti chiedo di segnalarlo tramite i repository GitHub così che possa esaminarlo. Mantengo il progetto da solo nel tempo libero, quindi le risposte possono richiedere del tempo.