Protocollo Signal software | |
---|---|
![]() | |
Genere | Crittografia |
Sviluppatore | Fondazione Signal |
Ultima versione | 0.68.0 (27 marzo 2025) |
Sistema operativo | Multipiattaforma |
Linguaggio | TypeScript Java Rust C Swift |
Licenza | GNU Affero General Public License, versione 3 (licenza libera) |
Sito web | signal.org/docs |
Il protocollo Signal, in inglese Signal Protocol, (precedentemente noto come protocollo TextSecure) è un protocollo crittografico non federato che fornisce la crittografia end-to-end per i messaggi e le chiamate di messaggistica istantanea.[1] Il protocollo è stato sviluppato da Open Whisper Systems nel 2013[1] ed è stato introdotto nell'app open source TextSecure, la quale, in seguito, è stata rinominata Signal. A partire dal 2018 il protocollo è sviluppato dalla fondazione Signal ed è distribuito con licenza libera AGPLv3.
Diverse applicazioni con codice proprietario hanno implementato questo protocollo, come WhatsApp, che crittografa le conversazioni di "oltre un miliardo di persone in tutto il mondo"[2] o Google che fornisce la crittografia end-to-end per impostazione predefinita a tutte le conversazioni RCS individuali tra gli utenti dell'app Google Messaggi.[3] Anche Facebook Messenger offre il protocollo per le "Conversazioni segrete", così come Skype per le sue "Conversazioni private".
Il protocollo combina l'algoritmo di Double Ratchet, le prechiavi (chiavi pubbliche effimere monouso caricate in anticipo su un server centrale) e un handshake Diffie–Hellman a tripla curva ellittica (3-DH),[4] e utilizza Curve25519, AES-256 e HMAC-SHA256 come primitive crittografiche.[5]
Lo sviluppo del protocollo Signal è iniziato nel 2013 grazie a Trevor Perrin e Moxie Marlinspike (Open Whisper Systems). La prima versione del protocollo, TextSecure v1, era basata sul protocollo di messaggistica Off-the-record (OTR).[6][7] Il 24 febbraio 2014, Open Whisper Systems ha introdotto TextSecure v2,[8] la seconda versione del protocollo basata su Axolotl Ratchet.[6][9] Il design dell'Axolotl Ratchet si basa sullo scambio di chiavi effimere introdotto da OTR e lo combina con un ratchet a chiave simmetrica basato sul protocollo di messaggistica istantanea Silent Circle (SCIMP).[10] Ha introdotto il supporto per la comunicazione asincrona come sua principale nuova caratteristica, oltre a una migliore resilienza con un ordine distorto dei messaggi e un supporto più semplice per le conversazioni con più partecipanti.[11] L'Axolotl Ratchet prende il nome da una salamandra acquatica, l'Axolotl, in grave pericolo di estinzione, dotata di straordinarie capacità di autoguarigione. Gli sviluppatori si riferiscono all'algoritmo come auto-riparante perché impedisce automaticamente a un aggressore di accedere ai messaggi successivi dopo aver compromesso una chiave di sessione.[10]
La terza versione del protocollo, TextSecure v3, ha apportato alcune modifiche alle primitive crittografiche e al protocollo di comunicazione.[6]
Nell'ottobre 2014, i ricercatori dell'università della Ruhr a Bochum hanno pubblicato un'analisi di TextSecure v3.[5][6] Tra le altre scoperte, hanno presentato un attacco di condivisione della chiave sconosciuta, ma in generale, hanno concluso che era sicuro.[12] Nel marzo 2016, gli sviluppatori hanno rinominato il protocollo TextSecure in protocollo Signal. Hanno inoltre rinominato l'algoritmo Axolotl Ratchet in Double Ratchet per differenziare meglio il ratchet dal protocollo completo[13], questo perché alcune persone avevano utilizzato il nome Axolotl riferendosi al protocollo completo.[14][13]
Nell'ottobre 2016, alcuni ricercatori dell'università di Oxford nel Regno Unito, dell'università del Queensland in Australia e dell'università McMaster in Canada hanno pubblicato un'analisi formale del protocollo concludendo che è crittograficamente affidabile.[15][6]
Un'ulteriore valutazione del protocollo (audit) è stata pubblicata nel 2017.[16]
Open Whisper Systems ha inizialmente introdotto il protocollo nell'applicazione TextSecure. Successivamente l'applicazione è stata unita con RedPhone, un'applicazione per effettuare videochiamate crittografate, ed è stata rinominata Signal. Nel novembre 2014 Open Whisper Systems ha annunciato una collaborazione con WhatsApp per integrare la crittografia end-to-end fornita dal protocollo Signal in ogni client WhatsApp.[17] Inizialmente il protocollo è stato integrato su Android mentre il supporto per le altre piattaforme e per i media e messaggi di gruppo sarebbe seguito a breve.[18] Il 5 aprile 2016 WhatsApp e Open Whisper Systems hanno annunciato che il protocollo era stato implementato in "ogni forma di comunicazione" su WhatsApp[19][20] Nel febbraio 2017 WhatsApp ha annunciato una nuova funzione, gli Stati WhatsApp che utilizzavano a loro volta il protocollo Signal per proteggerne il contenuto.[21]
A settembre 2015 G Data ha lanciato una nuova applicazione di messaggistica chiamata Chat Sicure che utilizza il protocollo Signal.[22][23] Il servizio è stato interrotto nel maggio 2018.[24]
Nell'ottobre 2016 Facebook ha aggiunto un'opzione in Facebook Messenger chiamata Conversazioni segrete che utilizza la crittografia end-to-end fornita dal protocollo Signal.[25][26][27][28]
Nel settembre 2016 Google ha lanciato una nuova applicazione di messaggistica chiamata Allo che include una modalità incognito opzionale che utilizza il protocollo Signal per fornire la crittografia end-to-end.[29][30] Nel marzo 2019 il servizio di Allo è stato interrotto in favore dell'applicazione Google Messaggi su Android.[31][32]
A gennaio 2018 Open Whisper Systems e Microsoft hanno annunciato l'aggiunta del protocollo Signal su Skype nelle conversazioni private.[33][34]
Nel novembre 2020 Google ha annunciato che avrebbe utilizzato il protocollo Signal per fornire la crittografia end-to-end di default per le conversazioni RCS individuali nell'app Google Messaggi.[3][35]
Il protocollo fornisce: riservatezza, integrità, autenticazione, coerenza dei partecipanti, convalida della destinazione, segretezza in avanti, sicurezza post-compromesso (nota anche come segretezza futura), preservazione della causalità, non collegabilità del messaggio, ripudio del messaggio, ripudio della partecipazione e asincronicità.[4] Non garantisce la conservazione dell'anonimato e richiede server per la trasmissione dei messaggi e l'archiviazione della chiave pubblica.[4] Il protocollo Signal supporta anche chat di gruppo crittografate end-to-end. Il protocollo di chat di gruppo è una combinazione di crittografia Double Ratchet a coppie e crittografia multicast.[4] Oltre alle proprietà fornite dal protocollo per le chat individuali, il protocollo di chat di gruppo fornisce coerenza dell'oratore, resilienza fuori ordine, resilienza dei messaggi eliminati, uguaglianza computazionale, uguaglianza di fiducia, messaggistica in sottogruppi, nonché appartenenza al gruppo contrattabile ed espandibile.[4]
Per l'autenticazione, gli utenti possono confrontare manualmente le impronte delle chiavi pubbliche attraverso un canale esterno.[36] Ciò consente agli utenti di verificare reciprocamente le proprie identità ed evitare un attacco man in the middle.[36] Un'implementazione può anche scegliere di impiegare un meccanismo di fiducia al primo utilizzo per segnalare agli utenti se la chiave di un corrispondente cambia.[36]
Il protocollo Signal non impedisce ad un'azienda di conservare informazioni su quando e con chi gli utenti comunicano, ossia i metadati.[37][38] Possono quindi esserci differenze nel modo in cui i vari fornitori di messaggistica scelgono di gestire queste informazioni. L'informativa sulla privacy di Signal stabilisce che gli identificativi dei destinatari vengono conservati sui server Signal solo per il tempo necessario alla trasmissione di ciascun messaggio.[39] Nel giugno 2016, Moxie Marlinspike ha dichiarato a The Intercept: "Gli unici metadati che il server Signal memorizza sono l'ultima volta che ogni utente si è connesso al server, e la precisione di questa informazione è limitata al giorno, piuttosto che all'ora, minuto e secondo".[38] Nell'ottobre 2018, Signal ha annunciato di aver implementato nell'app la funzionalità mittente sigillato, in inglese sealed sender. Questa funzione riduce la quantità di metadati a cui i server Signal hanno accesso nascondendo l'identificativo del mittente.[40][41] L'identità del mittente viene trasmessa al destinatario nel messaggio, ma è crittografata con una chiave che il server non possiede.[41] Questo avviene automaticamente se il mittente è nei contatti del destinatario o ha accesso al suo profilo Signal.[41] Gli utenti possono anche abilitare un'opzione per ricevere messaggi con il mittente sigillato anche da persone non nella rubrica e che non hanno accesso al loro profilo Signal.[41] Un'intercettazione telefonica contemporanea del dispositivo dell'utente e dei server Signal potrebbe comunque rivelare che l'indirizzo IP del dispositivo ha avuto accesso al server Signal per inviare o ricevere messaggi in determinati momenti.[40]
Signal Messenger mantiene un'implementazione di riferimento della libreria per il protocollo Signal scritta in Rust pubblicata con licenza AGPLv3 su GitHub. Sono disponibili inoltre parti di codice che permettono di utilizzarlo in Swift, Java, TypeScript, C e altri linguaggi che utilizzano come riferimento l'implementazione in Rust. Signal ha mantenuto le seguenti librerie ora deprecate:
Esistono anche librerie alternative scritte da terze parti in altri linguaggi, come TypeScript.[42]