Protocollo Signal

protocollo di crittografia
Versione del 29 mar 2025 alle 19:02 di Reciprocus (discussione | contributi) (Creata dalla traduzione della pagina "Signal Protocol")
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

 

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. Il protocollo è stato sviluppato da Open Whisper Systems nel 2013 ed è stato introdotto nell'app open source TextSecure, che in seguito è stata rinominata Signal..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"[1] o Google che fornisce la crittografia end-to-end per impostazione predefinita a tutte le conversazioni RCS individuali tra gli utenti dell'app Google Messages.[2] 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 (le chiavi pubbliche effimere monouso che sono state caricate in anticipo su un server centrale) e un handshake Diffie–Hellman a tripla curva ellittica (3-DH),[3] e utilizza Curve25519, AES-256 e HMAC-SHA256 come primitive crittografiche.[4]

Storia

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).[5][6]

Il 24 febbraio 2014, Open Whisper Systems ha introdotto TextSecure v2,[7] la seconda versione del protocollo che è basata su Axolotl Ratchet.[5][8] 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 instantanea Silent Circle (SCIMP).[9] Ha introdotto il supporto per la comunicazione asincrona come sua principale nuova caratteristica, così come una migliore resilienza con un ordine distorto dei messaggi e un supporto più semplice per le conversazioni con più partecipanti.[10] 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é disabilita automaticamente un aggressore dall'accesso ai messaggi successivi dopo aver compromesso una chiave di sessione.[9]

La terza versione del protocollo, TextSecure v3, ha apportato alcune modifiche alle primitive crittografiche e al protocollo wire.[5] Nell'ottobre 2014, i ricercatori dell'università della Ruhr a Bochym hanno pubblicato un'analisi di TextSecure v3.[4][5] Tra le altre scoperte, hanno presentato un attacco di condivisione delle chiavi sconosciuto, ma in generale, hanno concluso che era sicuro.[11]

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[12] perché alcune persone avevano utilizzato il nome Axolotl riferendosi al protocollo completo.[12]!

Nell'ottobre 2016, alcuni ricercatori dell'università di Oxford nel regno unito, dell'università Queensland in Australia e dell'università McMaster in Canada hanno pubblicato un'analisi formale del protocollo concludendo che è crittograficamente solido.[13][14]

Un altro audit del protocollo è stato pubblicato nel 2017.[15]

Proprietà

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à.[16] Non garantisce la conservazione dell'anonimato e richiede server per la trasmissione dei messaggi e l'archiviazione della chiave pubblica.[16]!

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.[16] 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 di sottogruppi, nonché appartenenza contrattabile ed espandibile. [16]

Autenticazione

Per l'autenticazione, gli utenti possono confrontare manualmente le impronte delle chiavi pubbliche attraverso un canale esterno.[17] Ciò consente agli utenti di verificare reciprocamente le proprie identità ed evitare un attacco man in the middle.[17] Un'implementazione può anche scegliere di impiegare un meccanismo di fiducia al primo utilizzo per notificare agli utenti se la chiave di un corrispondente cambia.[17]

Metadati

Il protocollo Signal non impedisce ad un'azienda di conservare informazioni su quando e con chi gli utenti comunicano, ossia i metadati.[18]![19] 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.[20] 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".[19]Controlla

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.[21][22] L'identità del mittente viene trasmessa al destinatario nel messaggio, ma è crittografata con una chiave che il server non possiede.[22] Questo avviene automaticamente se il mittente è nei contatti del destinatario o ha accesso al suo profilo Signal.[22] 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.[22] Un'intercettazione telefonica contemporanea del dispositivo dell'utente e/o 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.[21]

Implementazioni

Signal Messenger mantiene un'implementazione di riferimento della libreria per il Protcollo 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.[23]

Vedi anche

Note

  1. ^ Signal, 2016, https://signal.org/blog/whatsapp-complete/. URL consultato il 5 April 2016.
  2. ^ The Verge, https://www.theverge.com/platform/amp/2020/11/19/21574451/android-rcs-encryption-message-end-to-end-beta. URL consultato il 28 November 2020.
  3. ^ Unger, Dechand, Bonneau e Fahl,  p. 241
  4. ^ a b Frosch, Mainka, Bader e Bergsma
  5. ^ a b c d Cohn-Gordon, Cremers, Dowling e Garratt
  6. ^ github.com, https://github.com/WhisperSystems/TextSecure/wiki/Protocol. URL consultato il 28 October 2016.
  7. ^ Threatpost, https://threatpost.com/textsecure-sheds-sms-in-latest-version/104456. URL consultato il 14 July 2016.
  8. ^ github.com, https://github.com/WhisperSystems/TextSecure/wiki/ProtocolV2. URL consultato il 28 October 2016.
  9. ^ a b whispersystems.org, https://whispersystems.org/blog/advanced-ratcheting/. URL consultato il 23 September 2016.
  10. ^ Unger, Dechand, Bonneau e Fahl
  11. ^ The Register, https://www.theregister.co.uk/2014/11/03/how_secure_is_textsecure_pretty_well_secure/. URL consultato il 4 November 2014.
  12. ^ a b Signal Blog, https://whispersystems.org/blog/signal-inside-and-out/. URL consultato il 9 April 2016.
  13. ^ Threatpost, https://threatpost.com/signal-audit-reveals-protocol-cryptographically-sound/121892/. URL consultato l'11 November 2016.
  14. ^ Cohn-Gordon, Cremers, Dowling e Garratt
  15. ^ N. Kobeissi, K. Bhargavan e B. Blanchet, 2017 IEEE European Symposium on Security and Privacy (EuroS&P) (PDF), 2017, pp. 435–450, DOI:10.1109/EuroSP.2017.38, ISBN 978-1-5090-5762-7.
  16. ^ a b c d Unger, Dechand, Bonneau e Fahl
  17. ^ a b c Rottermanner, Kieseberg, Huber e Schmiedecker
  18. ^ Rottermanner, Kieseberg, Huber e Schmiedecker
  19. ^ a b The Intercept, https://theintercept.com/2016/06/22/battle-of-the-secure-messaging-apps-how-signal-beats-whatsapp/. URL consultato l'8 October 2016.
  20. ^ whispersystems.org, https://whispersystems.org/signal/privacy/. URL consultato l'8 October 2016.
  21. ^ a b Dan Goodin, arstechnica.com, https://arstechnica.com/information-technology/2018/10/new-signal-privacy-feature-removes-sender-id-from-metadata/. URL consultato il 28 marzo 2019.
  22. ^ a b c d signal.org, https://signal.org/blog/sealed-sender/. URL consultato il 16 April 2019.
  23. ^ github.com, https://github.com/privacyresearchgroup/libsignal-protocol-typescript. URL consultato il 28 November 2020.

Bibliografia

 

Collegamenti esterni

[[Categoria:Protocolli crittografici]] [[Categoria:Protocolli livello applicazione]]