Come creare un'app di messaggistica davvero sicura simile a Signal?

Pubblicato: 2021-10-05

La privacy e la sicurezza della comunicazione online sono temi caldi di questi tempi, e per un motivo. Poiché sappiamo come creare un'app crittografata , vorremmo condividere la nostra esperienza e offrire suggerimenti in questo articolo. Parleremo dello stato attuale del settore, dei metodi di crittografia e dei possibili rischi. Per un preventivo, scorri fino alla fine dell'articolo.

Quello che è successo?

All'inizio del 2021, WhatsApp, l'app di messaggistica più popolare al mondo, ha lanciato i suoi nuovi termini di servizio. Hanno causato un certo clamore, in parte dovuto alla confusione. Successivamente, il CEO di Tesla Elon Musk, noto critico di Facebook (WhatsApp è di proprietà di Facebook), ha suggerito che i suoi 42,5 milioni di follower su Twitter passassero a Signal, un messenger precedentemente non molto noto.

Sulla scia di questo tweet, Signal, il cui sistema di crittografia utilizza lo stesso WhatsApp , tra l'altro, ha visto un aumento degli utenti. Questa ondata è stata così grande che i server hanno avuto difficoltà a farcela. Gli sviluppatori di Signal sono riusciti a gestire la situazione, ma ha dimostrato che la domanda di sistemi di messaggistica sicuri è in aumento. Ora, tutti vogliono sapere come creare un'applicazione come Signal. Il che ci porta a questo articolo.

Cosa significa avere un servizio di messaggistica istantanea sicuro?

La maggior parte delle app di messaggistica istantanea oggi utilizza la crittografia end-to-end. Che cos'è? Ecco un diagramma di un'architettura di un'applicazione di chat come esempio:

crittografia end-to-end

In parole povere, un tipico messenger ha tre parti principali interconnesse:

  • Il dispositivo del mittente

  • un server

  • Il dispositivo del destinatario

Un messaggio viene inviato da un mittente a un destinatario tramite un server. Senza crittografia, questo messaggio verrà trasmesso come testo normale e potrà quindi essere letto da chiunque vi abbia accesso in qualsiasi momento. Con la crittografia, il messaggio viene trasformato da testo normale in testo crittografato, crittografato con una chiave, per il trasferimento e quindi ritrasformato (decrittografato) sul dispositivo del destinatario , con una chiave associata.

La crittografia end-to-end significa che le chiavi di crittografia sono archiviate alle estremità, ovvero sui dispositivi degli utenti, anziché sul server. Questo fa in modo che nessuno, tranne il mittente e il destinatario, possa leggere i messaggi . Nemmeno il fornitore di servizi proprietario del server ha accesso ad essi. Per hackerare questi messaggi, un hacker deve accedere ai dispositivi degli utenti, poiché hackerare il server del fornitore di servizi è di scarsa utilità.

Il punto debole della crittografia end-to-end è la sua suscettibilità a un cosiddetto attacco man-in-the-middle (MITM) . Gli hacker MITM esperti possono hackerare la chiave pubblica memorizzata su un server e configurare il sistema per riconoscere l'hacker come legittimo destinatario, consentendo all'hacker di intercettare una conversazione e persino di parteciparvi al posto del destinatario previsto.

Per combattere gli attacchi MITM , gli sviluppatori di Signal hanno ulteriormente aggiornato la crittografia end-to-end del loro protocollo con un algoritmo Double Ratchet. Questo algoritmo crea chiavi di sessione oltre alle chiavi pubbliche e private create quando gli utenti installano l'app. Le chiavi di sessione vengono create per ogni messaggio inviato e si autodistruggono quando la sessione è completa (cioè quando il messaggio viene ricevuto), rendendo impossibile per un hacker decifrare tutti i messaggi se riesce a ottenere la chiave per una sessione.

WhatsApp utilizza la crittografia end-to-end per tutti i suoi messaggi. Infatti, utilizza il protocollo di crittografia di Signal. Quindi qual è il problema adesso?

Diversi approcci alla crittografia end-to-end

Diversi approcci alla crittografia end-to-end

È vero che WhatsApp non può curiosare nei contenuti dei tuoi messaggi e non può ascoltare le tue chiamate in-app. Tuttavia, la versione del protocollo di crittografia di Signal che WhatsApp utilizza crittografa solo il contenuto dei messaggi . Ciò significa che WhatsApp - e, per estensione, Facebook e chiunque decidano di condividere le informazioni con - possono vedere con chi stai parlando, quando e da dove. Questi metadati possono rivelare informazioni molto personali su tutti i partecipanti a una conversazione.

Allo stesso tempo, l'app Signal utilizza un protocollo aggiornato che codifica anche i metadati e nessuno, nemmeno i proprietari dell'app, può decodificarli senza accesso diretto ai dispositivi degli utenti .

Inoltre, secondo l'Informativa sulla privacy di Signal, quasi nessun metadato viene archiviato sui loro server in modo permanente , solo per il tempo necessario alla ricezione di un messaggio. Quindi tutto tranne la data dell'ultimo accesso dell'utente viene eliminato.

L'unica altra app di messaggistica che fa questo è Telegram. Tuttavia, in Telegram, la crittografia end-to-end viene applicata solo in modalità segreta e non a tutte le chat per impostazione predefinita. I messaggi generici non sono ben crittografati su Telegram. Almeno Telegram si rifiuta di condividere tali informazioni con chiunque, siano essi governi o inserzionisti.

Oggi, la sicurezza delle app di messaggistica è un argomento enorme: l'incapacità o la riluttanza di un messenger a condividere le informazioni degli utenti con i governi è spesso soggetta a limitazioni e divieti. Telegram, ad esempio, è stato bandito in Russia, la patria del suo creatore; gli Emirati Arabi Uniti hanno vietato tutti i servizi VoIP non statali. In risposta, le persone di tutto il mondo richiedono mezzi di comunicazione più sicuri e il mercato delle app di messaggistica mobile sicure è in crescita .

Quindi, come creare un messenger sicuro?

progettazione di app di messaggistica sicura

La maggior parte delle persone usa almeno un messenger, probabilmente diversi, e il set di funzionalità di base per un'app di messaggistica difficilmente ti sorprenderà. Quindi saremo brevi in ​​questa sezione. Ecco una tabella di funzioni per una soluzione di chat sicura :

Caratteristiche Descrizione

Onboarding

Presenta brevemente la tua app; più breve è meglio è, ma rendilo comprensibile.

Iscriviti Accedi

Un account messenger è solitamente legato a un numero di telefono.

Profili utente

Un profilo memorizza le informazioni personali di un utente e i collegamenti a funzioni importanti come contatti, impostazioni e domande frequenti.

Impostazioni

Consenti agli utenti di regolare il messenger per la loro comodità.

Notifiche

In un'app di messaggistica è essenziale disporre di un sistema affidabile per le notifiche istantanee.

Chat di testo

È necessaria una moderna app di messaggistica per supportare sia le chat individuali che le chat di gruppo.

Trasferimento di file

Gli utenti devono poter scambiare messaggi di testo e condividere immagini e documenti.

Chat/chiamate vocali

Una funzionalità VoIP è importante oggi quanto l'invio di SMS. Il suono di qualità richiede una connessione stabile anche con velocità Internet lente.

Messaggi che si autodistruggono

Anche con il protocollo Signal, se qualcuno entra in possesso del telefono di un utente, può vedere tutti i messaggi precedenti a meno che gli utenti non li abbiano cancellati. Potresti aggiungere un'opzione per consentire agli utenti di impostare un timer per distruggere messaggi e/o file multimediali.

Sincronizzazione

La maggior parte delle persone ha più di un dispositivo con app di comunicazione installate. Affinché gli utenti possano passare agevolmente da un dispositivo all'altro come ritengono opportuno, è necessario fornire una funzione di sincronizzazione.

Autenticazione in due passaggi

Per proteggere meglio i dati degli utenti in caso di furto di un dispositivo, offri l'autenticazione in due passaggi tramite impronta digitale, password, codice pin o codice o collegamento di verifica.

Se vuoi creare un'app di messaggistica peer-to-peer che si distingua dalla massa, considera queste funzionalità:

  • Adesivi e GIF. Ogni altro messenger oggi integra il popolare servizio GIF Giphy nella sua interfaccia per completare le emoticon. Gli adesivi sono diventati popolari quando Telegram ha iniziato a offrirli gratuitamente (al contrario di Viber, ad esempio, dove solo alcuni adesivi sono gratuiti).

  • Chat segrete/private. Indipendentemente dal fatto che tu crittografi o meno i metadati dei tuoi utenti, nella realtà tempestosa di oggi, potrebbe diventare il punto di forza della tua app avere chat a scomparsa o bloccabili. Ad esempio, Telegram offre chat segrete che scompaiono automaticamente se esci da Telegram sul tuo dispositivo. Queste chat non sono archiviate sui server cloud di Telegram e quindi non possono essere salvate o sincronizzate anche se hai effettuato l'accesso su più di un dispositivo.

  • Videochat. Nel 2020, con un numero schiacciante di persone costrette a lavorare da remoto a causa della pandemia, gli strumenti di videoconferenza hanno visto un enorme aumento di popolarità. E molti hanno lamentato la mancanza di videochiamate - chiamate individuali e di gruppo - nei popolari messenger esistenti. Non è affatto una funzionalità indispensabile, ma sarà sicuramente popolare tra gli utenti.

Per saperne di più: Come creare un'app simile a SnapChat?

Come proteggere un'app di messaggistica

Il back-end è dove avviene la magia nei messaggeri. Gli specialisti del backend sono responsabili della sicurezza e dell'affidabilità della tua app di chat, poiché sono quelli che sanno come crittografare i messaggi.

Esistono diversi modi per implementare la crittografia end-to-end e rendere sicura un'app di comunicazione . Di solito, i messaggi crittografati vengono archiviati sui server di un messenger (i server cloud sono più sicuri e quindi consigliati per questo scopo) e le chiavi di decrittazione sono disponibili solo dai dispositivi degli utenti per evitare una violazione dei dati nel caso in cui i server vengano violati.

È anche possibile rinunciare completamente alla memorizzazione dei messaggi sui propri server e archiviarli sui dispositivi degli utenti. Ma ciò significa che i tuoi utenti non saranno in grado di ripristinare la cronologia dei messaggi nel caso in cui i dispositivi su cui hanno effettuato l'accesso vengano persi o eliminino l'app. Anche la sincronizzazione dei messaggi tra i dispositivi sarà impossibile.

Per creare un'app di messaggistica sicura come Signal, puoi effettivamente utilizzare l'API di messaggistica crittografata da Signal stesso . Il protocollo di crittografia open source di Signal è il più popolare tra gli sviluppatori che creano messenger, poiché è costantemente rivisto e verificato. Al momento della scrittura, i seguenti messenger utilizzano il protocollo di Signal per crittografare il contenuto dei loro messaggi:

  • WhatsApp
  • Facebook Messenger (solo chat segrete)
  • Skype (solo conversazioni private)
  • Messaggi di Google per Android (SMS)

Telegram utilizza il proprio algoritmo basato sulla crittografia AES simmetrica a 256 bit chiamato MTProto per le chat segrete. Questo algoritmo è closed-source, tuttavia, per il quale Telegram è stato ampiamente criticato.

Costo per creare un'app di messaggistica sicura

Team per creare un'app di messaggistica sicura

Il costo per realizzare qualsiasi app dipende fortemente dal tempo necessario per lo sviluppo . Per quanto riguarda il numero di funzionalità, i messenger non sembrano troppo complessi; tuttavia, la creazione del solo back-end per un'app di messaggistica ben crittografata può richiedere circa 520 ore .

Le solite opzioni del linguaggio di programmazione per un back-end di messaggistica sono Elixir o Erlang : Ruby on Rails non è una buona scelta per una grande quantità di dati sotto forma di messaggi di testo, media e chiamate audio/video. WhatsApp utilizza Erlang, mentre Elixir è impiegato da Discord.

Per saperne di più: Il ruolo e il valore dei project manager nel processo di sviluppo delle app .

In Mind Studios , abbiamo sviluppato un'app di messaggistica con un back-end basato su Elixir. Tuttavia, Elixir stesso è basato su Erlang con un po' di Ruby mescolato, quindi uno sviluppatore Elixir esperto può anche scrivere codice in Erlang.

Ecco la nostra opinione sul tempo necessario per lo sviluppo di un'applicazione di messaggistica sicura :

  • Analisi aziendale e creazione di una specifica — 96+ ore

  • Progettazione UI/UX — 168+ ore

  • App mobile lato client iOS: oltre 450 ore per un MVP con le funzionalità più essenziali

  • Sviluppo backend: oltre 520 ore

  • Test dell'app iOS — ~ 240 ore

Lo sviluppo di Android richiede un tempo leggermente inferiore rispetto allo sviluppo di iOS, ma i test richiedono più tempo a causa della più ampia varietà di dispositivi.

Con questa stima approssimativa del tempo, il costo per creare un'applicazione di chat davvero sicura partirà da $ 51.590 e aumenterà con funzionalità extra.

Conclusione

I messaggeri sicuri sono eccezionalmente importanti e la domanda per loro è alta oggi e lo sarà domani. Ma lo è anche la concorrenza. Non tutte le aziende possono creare app di messaggistica crittografate. Per sviluppare un'app di messaggistica istantanea sicura come Signal, avrai bisogno di sviluppatori esperti in questa nicchia .

Dovrai anche stare al passo con i leader del settore quando si tratta di design. L'app Signal è semplice e non è famosa per la sua intuitività, ma conquista gli utenti che si preoccupano della loro privacy più che di campanelli e fischietti. WhatsApp e Telegram, d'altra parte, sembrano fantasiosi e sono eccezionalmente intuitivi oltre ad essere sicuri (anche se la loro sicurezza potrebbe non essere allo stesso livello di Signal, è comunque impressionante). Quindi, per brillare in questa nicchia, la tua app personalizzata dovrà essere sicura e facile da usare . Bilanciare questi requisiti non è cosa da poco. Ma con la squadra giusta è possibile.