Discovery & threat model
Threat model (da chi si difende l'utente — ISP, inserzionista, attaccante Wi-Fi pubblico), invarianti no-logs, mappatura postura GDPR + CCPA, revisione entitlement VPN App Store e Google Play.
Caso studio · Privacy Consumer · Mobile
Come abbiamo consegnato una VPN consumer in produzione — disponibile su App Store e Google Play, attiva negli Stati Uniti e nell'Unione Europea — costruita su WireGuard con un control plane no-logs, connessione con un tap e un'architettura audit-ready che soddisfa i requisiti GDPR e CCPA fin dal primo giorno.
Il team di prodotto di LiMP voleva una VPN consumer che non sembrasse un retaggio del 2015, con un'icona nel vassoio di sistema e una danza di connessione da 90 secondi. L'intuizione centrale era che il moderno acquirente di privacy consumer negli Stati Uniti e nell'Unione Europea non vuole solo la cifratura: vuole una postura no-logs difendibile, una connessione con un tap che si completa in meno di un secondo e una mappa server comprensibile. Gli SDK VPN white-label esistenti hanno fallito due test di accettazione immediatamente: i loro bundle gonfiavano l'IPA e l'APK oltre le soglie di installazione cellulare dell'App Store, e le loro configurazioni di logging predefinite non avrebbero superato una revisione indipendente della privacy. Abbiamo costruito LiMP dai principi fondamentali come applicazione nativa per iOS e Android: un client sottile basato sul protocollo WireGuard, un control plane in Go con una netta separazione tra identità di fatturazione e identità del tunnel, e una flotta di server che opera in modalità solo-RAM in modo che il sequestro di un nodo non produca stato persistente. Il risultato è una VPN consumer disponibile su App Store e Google Play, accessibile all'indirizzo limpvpn.com, pensata per un pubblico USA e UE con aspettative GDPR e CCPA fin dal primo giorno.
Uno snapshot di ciò che il build di LiMP ha consegnato su iOS, Android e un control plane protetto nel suo primo ciclo di produzione.

La scelta del protocollo domina ogni altra decisione architetturale in un build VPN. Abbiamo scelto WireGuard rispetto a OpenVPN e IKEv2 perché i trade-off si allineano chiaramente con un prodotto consumer greenfield del 2024. L'implementazione di riferimento di WireGuard è di circa 4.000 righe di codice con un'unica suite crittografica moderna — Curve25519 per lo scambio di chiavi, ChaCha20-Poly1305 per la cifratura simmetrica, BLAKE2s per l'hashing — ed è verificabile in un pomeriggio. OpenVPN, al contrario, è una codebase molto più grande con suite di cifratura negoziate e una superficie di attacco più ampia che qualsiasi dichiarazione no-logs onesta deve considerare. IKEv2 è maturo e ben supportato nativamente su iOS, ma la sua semantica di ripresa della sessione su dispositivi in roaming è più rumorosa del modello a session key di WireGuard, progettato esattamente per gli scenari di handoff tra operatori che gli utenti mobile affrontano ogni giorno.
Gli stack VPN proprietari — il tipo incluso negli SDK white-label — sono stati eliminati precocemente: i loro termini di licenza richiedevano telemetria lato server che la postura no-logs non può tollerare, e le loro primitive crittografiche sono spesso non documentate. Adottare il protocollo del whitepaper WireGuard ha significato che l'intero stack — client tunnel, control plane, rotazione delle chiavi — è aperto e citabile da cima a fondo.
| Dimensione | WireGuard (LiMP) | OpenVPN | IKEv2 / proprietario |
|---|---|---|---|
| Dimensione del codice del protocollo | ~4.000 righe — verificabile in una sessione | ~70.000+ righe inclusa la superficie OpenSSL | Stack OS ampio o binario vendor |
| Suite crittografica | Primitive moderne fisse — Curve25519, ChaCha20-Poly1305, BLAKE2s | Negoziata — superficie di attacco più ampia | Definita dal vendor; spesso opaca |
| Latenza handshake (tipica) | Meno di 100 ms su LTE mobile | Centinaia di ms — handshake TLS più setup tunnel | Variabile; IKEv2 veloce, proprietario varia |
| Comportamento in roaming | Integrato tramite session key — nessun riavvio del tunnel | Riavvio del tunnel richiesto al cambio rete | MOBIKE su IKEv2; proprietario varia |
| Integrazione kernel (Linux) | Mainline dal 5.6 — throughput a velocità di linea | Userspace — più lento ad alto throughput | Kernel/userspace misto |
| Idoneità App Store / Play Store | Wrapper sottile su NetworkExtension / VpnService | Bundle più grande; dipendenze userspace | IKEv2 nativo; SDK proprietario aggiunge volume |
| Verificabilità no-logs | Tunnel stateless — la config peer è l'unico stato | Stato per sessione — deve essere attivamente soppresso | Controllato dal vendor — opaco |
Riferimenti al protocollo: WireGuard whitepaper (Donenfeld), Documentazione Apple NetworkExtension, Riferimento Android VpnService.

Il client iOS è costruito in Swift con SwiftUI per il layer UI e un'estensione Packet Tunnel Provider basata sul framework NetworkExtension di Apple. L'intera superficie rivolta all'utente si condensa in un'unica state machine — inattivo, connessione in corso, connesso, riconnessione — e la schermata home è un unico grande target di tap che la guida. La selezione della regione è a un tap dal pulsante di connessione, con un elenco ordinato per latenza memorizzato localmente in cache, così il selettore non blocca mai su un round-trip di rete. Il Packet Tunnel Provider ospita l'implementazione userspace di WireGuard; il processo principale dell'app gestisce solo UI, stato di fatturazione e il bridge IPC verso l'estensione.
Il percorso tap-to-connect è dove la maggior parte delle VPN consumer perde tempo, e dove abbiamo investito uno sforzo ingegneristico sproporzionato. Il flusso è: tap, valida il token di sessione in cache (nessun round-trip di rete se valido), avvia il Packet Tunnel Provider, passa la configurazione peer tramite il bridge NETunnelProviderProtocol, e lascia completare l'handshake di WireGuard. Sulle tipiche reti mobile USA e UE l'intero percorso si completa in meno di un secondo dal punto di vista dell'utente. Lo stesso client iOS porta il comportamento kill-switch che il revisore dell'App Store si aspetta — quando il tunnel cade, tutto il traffico non tunnelizzato viene bloccato a livello NetworkExtension finché l'utente non si disconnette esplicitamente. L'intera superficie iOS è consegnata nell'ambito della nostra pratica di sviluppo di app mobile.

Il client Android è scritto in Kotlin con Jetpack Compose per l'UI e un foreground service basato sull'API VpnService di Android. Il foreground service è obbligatorio: su Samsung, Xiaomi, OnePlus e Pixel, gli ottimizzatori aggressivi della batteria terminano i processi del tunnel in background entro pochi minuti, violando il contratto di riconnessione automatica a cui l'utente si iscrive implicitamente. Il service mostra una notifica persistente minimale che mantiene vivo il processo del tunnel attraverso i cicli di Doze mode, e WorkManager gestisce le operazioni non urgenti — aggiornamento della lista server, flush del contatore di telemetria, rotazione dei certificati — con semantica di backoff che rispetta gli stati di risparmio batteria da Android 10 ad Android 14.
La mappa server è dove il client Android si guadagna il proprio posto. Gli utenti vedono un elenco curato di regioni nei Paesi Bassi, Germania, Francia, Svezia, Irlanda e le coste USA Est e USA Ovest, con sonde RTT live che si aggiornano in background e un elenco dei preferiti fissato in cima. Il motore di raccomandazione opera lato client: quando il pattern di traffico DNS del dispositivo sembra orientato allo streaming, la mappa mostra prima i nodi ottimizzati per il throughput; quando domina la latenza (gaming, videochiamate), salgono i nodi a basso RTT. Dopo un handoff da Wi-Fi a LTE il client ripristina automaticamente l'ultimo nodo funzionante — il modello di roaming di WireGuard rende questo uno scambio di session key piuttosto che una ricostruzione completa del tunnel. Lo stesso team di ingegneria porta iOS e Android in lockstep nell'ambito della nostra pratica di ingegneria iOS e Android.

La postura no-logs dichiarata di LiMP era una decisione architetturale prima di essere uno slogan di marketing. I nodi VPN edge — le macchine che trasportano effettivamente i pacchetti degli utenti — operano in modalità solo-RAM: il loro filesystem radice è un overlay effimero, e un ciclo di alimentazione o un sequestro non produce stato di sessione persistente. Il control plane in Go risiede su un piano separato e protetto e conserva solo ciò che è necessario: chiavi pubbliche dei peer, entitlement di abbonamento e una vista solo-contatori della capacità per regione. Non esiste una tabella di sessione per utente, nessun log di connessione e nessun pipe di metadati verso uno stack di osservabilità centralizzato. I contatori vengono aggregati all'edge e inviati come serie numeriche anonime; gli identificatori non lasciano il nodo.
L'identità di fatturazione è deliberatamente separata dall'identità del tunnel. I record di pagamento vivono nel vault di Stripe con un ID cliente che i nodi VPN non vedono mai; i nodi ricevono solo token di sessione di breve durata che si mappano opacamente all'entitlement. Le policy di infrastructure-as-code applicano gli invarianti no-logs — qualsiasi pull request che introduca un log di sessione, una traccia per utente o un identificatore a lunga durata nel piano del tunnel fallisce la CI. La postura è costruita per allinearsi con gli obblighi GDPR per gli utenti nell'Unione Europea e con gli obblighi CCPA / CPRA per gli utenti in California e negli Stati Uniti più in generale — e per rendere una futura revisione indipendente di readiness no-logs un esercizio di documentazione, non un retrofit architetturale.
Postura di conformità: Conforme al GDPR · Pronto per ISO 27001 · SOC 2 Type II in corso · Compatibile HIPAA · CCPA riconosciuto.
Un build in cinque fasi che ha portato LiMP dalla specifica di prodotto alla produzione su iOS, Android e un control plane no-logs.
Threat model (da chi si difende l'utente — ISP, inserzionista, attaccante Wi-Fi pubblico), invarianti no-logs, mappatura postura GDPR + CCPA, revisione entitlement VPN App Store e Google Play.
Selezione del protocollo WireGuard, skeleton del control plane in Go, generazione della configurazione peer, policy di rotazione delle chiavi, identità di fatturazione isolata da Stripe, immagini di nodi edge solo-RAM.
Client iOS Swift/SwiftUI su NetworkExtension Packet Tunnel Provider; client Android Kotlin/Jetpack Compose su VpnService; connessione con un tap, kill switch, riconnessione automatica.
Policy infrastructure-as-code che bloccano le regressioni di logging, provisioning dei nodi solo-RAM, QA kill-switch e DNS-leak, scaffolding per la valutazione di readiness di terze parti.
Sottomissione App Store + Google Play negli storefront USA e UE, rollout della flotta server nei Paesi Bassi, Germania, Francia, Svezia, Irlanda e USA Est/Ovest.
Il layer di monetizzazione di LiMP è stato costruito per mantenere l'identità di pagamento e l'identità del tunnel provabilmente separate, perché la dichiarazione no-logs si sgretola nel momento in cui un singolo database mette in relazione un ID cliente Stripe con un token di sessione. Il livello di abbonamento viene venduto tramite Apple StoreKit su iOS, Google Play Billing su Android e Stripe per il checkout web che restituisce un codice di entitlement ai client mobile. La validazione delle ricevute lato server viene eseguita contro l'endpoint di verifica di ciascuno store e scrive un singolo record di entitlement con chiave un identificatore opaco e ruotato — mai tramite Apple ID, account Google o indirizzo email. All'interno dei nodi VPN, l'unica cosa visibile è un bearer token di breve durata che si mappa all'entitlement e scade rapidamente; il nodo non ha alcun percorso verso un'identità di pagamento anche se compromesso. Il comportamento del kill switch, la riconnessione automatica all'handoff di rete e la selezione di split-tunnel per app (Android) leggono tutti dallo stesso record di entitlement, così un singolo stato di abbonamento si risolve in modo pulito tra reinstallazioni, cambi di dispositivo e il futuro client desktop. L'intero sottosistema è stato costruito con l'estensibilità in mente: aggiungere un piano famiglia, un entitlement multi-dispositivo o un livello B2B con gestione del team è una modifica di configurazione al servizio di entitlement, non un rilascio di codice.
LiMP è stato lanciato su Apple App Store e Google Play con storefront attivi negli Stati Uniti e nell'Unione Europea. Il build in lingua inglese serve gli utenti in California, New York, Texas, Florida e Washington negli USA, e gli utenti nei Paesi Bassi, Germania, Francia, Irlanda e Svezia nell'UE, senza una codebase separata per regione. I flussi di consenso sono region-aware a livello client: gli utenti nell'UE e nello SEE ricevono una schermata di consenso granulare in stile GDPR con toggle separati per eventuali analytics del prodotto opzionali; gli utenti in California ricevono una divulgazione in stile CCPA «Non vendere o condividere le mie informazioni personali» nello stesso flusso. Le pratiche di gestione dei dati sono allineate con il GDPR per gli utenti europei e con il patchwork normativo statale USA — CCPA/CPRA (California), VCDPA (Virginia), CPA (Colorado), CTDPA (Connecticut), UCPA (Utah), TDPSA (Texas) e Oregon CPA. Poiché l'architettura no-logs rimuove i dati per utente che questi regolamenti riguardano principalmente, la conformità regionale si riduce a una divulgazione onesta piuttosto che a una segregazione dei dati per giurisdizione.
La flotta di server è stata dispiegata in parallelo nei data center UE e USA — Paesi Bassi, Germania, Francia, Svezia e Irlanda per la copertura EU; USA Est e USA Ovest per il Nord America — con i nodi di ciascuna regione provisionati identicamente da immagini solo-RAM. Il servizio di matching che seleziona il nodo a minore RTT per utente esegue worker stateless che possono essere fissati indipendentemente alle regioni UE o USA per future assunzioni di data residency. Sia il rating per fasce d'età dell'App Store sia il rating dei contenuti di Google Play sono stati calibrati per il feature set VPN, e l'informativa sulla privacy in-app è stata redatta per documentare esattamente l'architettura sopra, citando direttamente gli obblighi GDPR e gli obblighi CCPA della California. Il team di ingegneria che ha realizzato il build opera su CET e mantiene una giornata lavorativa nell'orario dell'Europa centrale con sovrapposizione con la costa est degli Stati Uniti (9:00–13:00 ET) per stand-up, gestione delle review degli store e risposta agli incidenti.
La roadmap attiva di sviluppo software su misura per LiMP include lo split tunneling per app su Android (Pixel e Samsung per primi), un livello di relay MultiHop per gli utenti che vogliono un hop in una seconda giurisdizione, un transport di offuscamento per le reti restrittive in cui gli handshake WireGuard vanilla vengono bloccati e un client desktop costruito su Tauri per condividere la business logic con la codebase mobile. Un livello B2B con bring-your-own-domain, gestione del team e SSO è pianificato per le piccole imprese USA e UE, con il sottosistema di entitlement già strutturato per l'assegnazione multi-seat. I piani infrastrutturali includono un'ulteriore automazione della flotta di server, un harness interno di verifica continua no-logs e una futura valutazione di readiness indipendente integrata nella roadmap Cloud & DevOps.
Se stai pianificando una VPN consumer, un prodotto di privacy engineering o qualsiasi app mobile in cui la dichiarazione no-logs deve reggere a un revisore esterno per un pubblico USA e UE, abbiamo consegnato questo stack end-to-end e possiamo comprimere significativamente la timeline di build. Il prodotto live è disponibile su limpvpn.com su iOS e Android, e il team di ingegneria che lo ha realizzato si trova all'interno di YuSMP Group. Lavoriamo a prezzo fisso per MVP ben definiti e con team di sviluppo dedicati per la consegna continuativa, con una giornata lavorativa CET e una finestra garantita di sovrapposizione con la costa est degli Stati Uniti (9:00–13:00 ET) per stand-up, demo e risposta agli incidenti.
Casi correlati

Marketplace PropTech + admin per sviluppatori residenziali — griglie di inventario a livello di appartamento, flussi multi-ruolo, data residency USA + UE.
Vedi il caso →
Piattaforma social nativa iOS + Android con geo-radar discovery, chat in tempo reale e un'economia di monete virtuali su USA & UE.
Vedi il caso →
Strumenti digitali enterprise per un produttore multinazionale — portali partner, configuratori e deployment EU + USA.
Vedi il caso →Condividi qualche dettaglio e un consulente senior risponderà entro un giorno lavorativo.