# RustDesk

RustDesk è una piattaforma di controllo remoto open source sviluppato in Rust. Consente agli utenti di controllare un computer remoto da un altro dispositivo, come un altro computer, uno smartphone o un tablet.
RustDesk mira a offrire un'alternativa open source a TeamViewer o AnyDesk e, allo stesso modo, il suo utilizzo non richiede il ricorso a strumenti aggiuntivi come VPN o port forwarding. Anche in presenza di firewall o NAT.
Si compone di una parte server e di una parte client. Il client è disponibile per diversi sistemi operativi tra cui Linux, Windows, macOS, iOS e Android. Supporta vari codec video e può essere personalizzato. Esiste anche una versione web raggiungibile all'indirizzo rustdesk.com/web/

## Storia

RustDesk è nato nel 2020 nel bel mezzo della pandemia di COVID-19. Il suo fondatore, Joseph Jacks, necessitava di una soluzione di desktop remoto per facilitare il lavoro a distanza. Il costo elevato delle licenze dei software commerciali però lo spinsero a creare una soluzione alternativa. Nacque così RustDesk.
Nel 2021, dopo un periodo intenso dedicato allo sviluppo dell'applicazione, è stato rilasciato su GitHub e messo a disposizione degli utenti di tutto il mondo.
Dalla versione 1.2.0 del 2023, RustDesk si basa su Flutter, che ha sostituito la libreria runtime proprietaria Sciter UI. La scelta di Flutter è stata motivata dalla necessità di disporre di un framework più moderno, flessibile e performante. Flutter offre infatti un ecosistema completo per lo sviluppo di applicazioni cross-platform, garantendo una migliore esperienza utente e una maggiore facilità di sviluppo.
Nello stesso anno, alcuni truffatori hanno tentato di sottrarre dati da potenziali vittimi utilizzando RustDesk. Questi truffatori si spacciavano per tecnici di supporto o rappresentanti di aziende legittime, inducendo le vittime a installare RustDesk per risolvere problemi tecnici inesistenti. Una volta installato, i truffatori ottenevano l'accesso remoto ai computer delle vittime, rubando informazioni personali, credenziali di accesso e altri dati sensibili.
A partire da agosto 2024, RustDesk ha annunciato che il suo server di incontro predefinito è ospitato nell'Unione Europea (UE).

## Funzionamento

Quando un client RustDesk cerca di connettersi a un altro dispositivo, invia una richiesta al server pubblico. Il server pubblico cerca nella sua rete di dispositivi registrati quello corrispondente all'ID o al nome del dispositivo cercato. Per impostazione predefinita, RustDesk utilizza il suo server di incontro predefinito, ospitato nell'Unione Europea (UE).
Questo facilita la connessione iniziale tra i dispositivi. Una volta individuato il dispositivo target, il server pubblico facilita lo scambio delle informazioni necessarie per stabilire una connessione diretta e sicura tra i due client. In alcuni casi, il server pubblico può agire come un relè, instradando il traffico tra i dispositivi se la connessione diretta non è possibile o è bloccata da firewall.
Questa architettura garantisce che le connessioni siano affidabili e sicure, anche in presenza di ostacoli di rete.

### Sicurezza delle comunicazioni

La comunicazione tra client e server avviene principalmente tramite connessioni peer-to-peer (P2P). Questo metodo consente una trasmissione dei dati diretta e sicura. Per garantire la sicurezza delle comunicazioni, RustDesk utilizza NaCl, una libreria crittografica che offre crittografia end-to-end. Oltre a NaCl, RustDesk utilizza il protocollo TLS per proteggere i dati durante il loro trasferimento. TLS è un protocollo standard utilizzato per la sicurezza delle comunicazioni su Internet.

### Configurazione server "self-hosted" o "on-premise"

Una delle principali differenze tra RustDesk e le alternative commerciali (TeamViewer e AnyDesk ad esempio) è la possibilità di configurare e utilizzare server self-hosted/on-premise. Questa configurazione offre alcuni vantaggi tra cui:
* pieno controllo sulle configurazioni, le funzionalità e i dati.
* I dati non transitano attraverso server esterni.
* Gli utenti possono configurare politiche di sicurezza personalizzate, come l'integrazione con LDAP e l'autenticazione a due fattori (2FA).

## Caratteristiche

* Accesso remoto per più sistemi operativi (Windows, Linux, macOS, iOS, Android)
* Crittografia end-to-end
* Server self-hosted opzionale
* Trasferimento file
* Include funzionalità di chat e videochiamate per una comunicazione più completa
* Il client può essere personalizzato con il proprio marchio, nome, icona e logo