Il mondo gira davvero attorno a te.

Architettura di sicurezza.

Ostler custodisce l'intera tua vita digitale in un unico posto. Questo è potente e pericoloso in egual misura. Questa pagina spiega esattamente come la proteggiamo. Niente chiacchiere, niente “crittografia standard del settore.” Dettagli concreti ed etichette di stato oneste su ogni affermazione.

Qui il modello di minaccia è diverso. Una violazione del tuo LinkedIn espone una fetta della tua vita. Una violazione di Ostler esporrebbe tutto – ogni relazione, ogni conversazione, ogni schema. Abbiamo costruito la sicurezza attorno a questa realtà.

La minaccia realistica è il software, non un'IA magica. Ciò che minaccia un prodotto local-first è codice malevolo in esecuzione sullo stesso Mac, con i tuoi permessi, che fa cose che non hai chiesto. L'IA dentro Ostler è un insider istruito: chiamate di strumenti delimitate, accesso ai dati delimitato, output sottoposti ad audit. L'attaccante inatteso è tutto il resto che ha preso piede sull'host.

Figura 1.0  /  Perimetro di sicurezza Un dispositivo. Un proprietario.
SECURITY BOUNDARY YOUR MAC Secure Enclave Passkey · non-export Touch ID / Face ID SQLCipher DB AES-256 · in review FileVault today OSTLER CORE Local · localhost-only · no telemetry Auto-lock In-memory key wiped · ctypes.memset E2EE iOS APP Passkey via iCloud Keychain Realm · AES-256 Pinned TLS Self-signed Ed25519 Pubkey-pinned Home Wi-Fi only LAN No arrow leaves the boundary. No server. No telemetry.

Niente cloud. Una superficie di attacco drasticamente ridotta.

Ostler non si connette ad alcun server esterno. Nessun backend cloud. Nessun endpoint API. Nessuna telemetria. I database, i modelli di IA e la pipeline di elaborazione vengono eseguiti tutti sul tuo Mac.

Questo elimina la più grande e banale classe di vettori di attacco per i dati personali: violazioni dei server, attacchi man-in-the-middle, credential stuffing, accesso interno presso il fornitore e richieste governative di dati nei confronti del fornitore. Non c'è alcun server da violare. Non ci sono dati da richiedere.

Verificalo tu stesso. Disconnettiti da internet. Tutto continua a funzionare.

Ciò che questo non è: un'affermazione che nulla possa andare storto. Rimuovere il cloud chiude la porta da cui un attaccante passa più spesso. Non sigilla ogni finestra. I limiti onesti – ciò che resta tua responsabilità – sono illustrati di seguito in Da cosa questo non protegge.

Come funziona l'autenticazione

Non c'è alcuna password. Abbiamo tolto del tutto le password dal tavolo.

Al primo avvio, Ostler registra una passkey presso la Secure Enclave del tuo Mac. Da quel momento in poi, sbloccare Ostler è un tocco di Touch ID, uno sguardo di Face ID o un doppio clic sul tuo Apple Watch. La prova crittografica di identità risiede dentro il chip di sicurezza hardware del tuo Mac. Non può essere esportata, sottratta tramite phishing né copiata sulla macchina di un attaccante.

Creative Machines non vede mai una password perché non c'è alcuna password da vedere. Non riceviamo mai un token di accesso, un cookie di sessione o una credenziale con hash. Non c'è nulla che possiamo perdere in una violazione perché non deteniamo nulla.

La tua passkey si sincronizza con gli altri tuoi dispositivi Apple tramite il Portachiavi iCloud, cifrata end-to-end da Apple. È così che l'app iOS di Ostler sbloccherà i dati dello stesso Hub senza un secondo passaggio di configurazione.

Cosa protegge la passkey

Il design at-rest di Ostler dà a ogni database il proprio livello di crittografia sotto una chiave di crittografia dei dati (DEK) da 32 byte. Oggi FileVault sull'intero disco protegge tutto ciò che si trova sul Mac; il livello più granulare per singolo store è in revisione e la tabella qui sotto mostra lo stato onesto di ogni componente. La DEK viene generata sul tuo Mac al momento dell'installazione, non lascia mai il tuo Mac in chiaro ed è avvolta (crittografata) sotto una chiave derivata dalla tua passkey. Sbloccare Ostler significa: la tua biometria sblocca la passkey, la passkey libera la DEK, la DEK decifra i database. Quando l'app si blocca, la DEK viene cancellata dalla memoria.

Quando Ostler è bloccato – blocco automatico e progettazione anti-furto

Ostler si blocca automaticamente dopo un periodo configurabile di inattività. Al blocco, la chiave di cifratura in memoria viene sovrascritta. Un Mac rubato o smarrito sulla scrivania dell'attaccante non può fornire testo in chiaro senza un Touch ID / Face ID dal vivo da parte tua.

La maggior parte del software di consumo non modella seriamente il furto del dispositivo – il cloud detiene la copia reale, quindi un dispositivo rubato è trattato come un endpoint perso. Noi lo modelliamo perché qui il dispositivo è i dati, e i dati sono intimi. Non c'è alcuna copia cloud su cui ripiegare. Il blocco automatico, la cancellazione della chiave in memoria e il requisito di una biometria dal vivo per risbloccare sono progettati attorno a questa realtà, non aggiunti dopo i fatti.

Qui l'e-mail non è il punto critico

Nessuna email di reimpostazione, nessun magic link, nessun recupero legato all’email. Una casella compromessa non compromette nulla.

Perché conta, e come corre davvero la catena di custodia

Uno schema comune nei prodotti “senza password” è legare l'autenticazione o il recupero all'e-mail – un magic link, un codice monouso, un flusso di reimpostazione della password. In superficie sembra solido; non c'è alcuna password da sottrarre con il phishing. Il punto è che la sicurezza dell'intero sistema eredita la sicurezza dell'account e-mail dell'utente. Una casella di posta compromessa è un'identità compromessa.

Ostler non funziona così. Non c'è alcuna e-mail di reimpostazione della password, nessun magic link, nessun recupero legato all'e-mail per il prodotto locale. La data-encryption key è emessa dall'Hub sul tuo Mac al momento dell'installazione e incapsulata sotto una chiave derivata dalla tua passkey, che risiede nella Secure Enclave del tuo Mac. L'unica alternativa fuori banda è la frase di 12 parole che hai annotato. La catena di custodia non passa mai per la tua casella di posta.

Frase di recupero

C'è esattamente un'alternativa: una frase di recupero di 12 parole generata durante la configurazione. La scrivi su carta. La conservi in un luogo sicuro. Non la digiti mai in iCloud, Dropbox, un gestore di password o una foto.

Come funziona la frase – e cosa succede se la perdi

La frase ti viene mostrata una volta sola, su una schermata che blocca il copia-incolla, e non viene mai memorizzata su disco in seguito. Per essere precisi su cosa usiamo di BIP39 e cosa no: usiamo la sua lista di 2048 parole in inglese e la sua codifica entropia-in-parole (128 bit di entropia più un checksum di 4 bit ⇒ 12 parole). Non implementiamo il passaggio PBKDF2 mnemonico-in-seme di BIP39 – trattiamo l'entropia direttamente come il nostro materiale di chiave di recupero, che è la scelta giusta per un sistema che non è un wallet. Ostler non è un wallet di criptovalute e non rivendichiamo alcuna compatibilità wallet BIP39. Usiamo la lista di parole perché è sottoposta ad audit pubblico ed è comprovata ergonomicamente, non perché interoperiamo con qualcosa.

Se perdi il tuo Mac e il tuo iPhone, e il Portachiavi iCloud non ha ripristinato la tua passkey su un nuovo dispositivo, la frase di recupero è il modo per rientrare. Disincapsula una seconda copia, indipendente, della stessa DEK.

Se perdi la frase e tutti i tuoi dispositivi Apple e il tuo backup di Time Machine contemporaneamente, i tuoi dati sono perduti. Da parte nostra, da parte di chiunque. Questo è il prezzo della vera privacy – la stessa architettura che impedisce a noi di leggere i tuoi dati impedisce a noi di aiutarti a recuperarli.

Crittografia a riposo

I tuoi dati sono protetti da più livelli. Ogni riga qui sotto mostra lo stato attuale e onesto – non ciò che intendiamo fare, ma ciò che è realmente nella build:

ComponenteCrittografiaStato
Disco interomacOS FileVault (AES-256-XTS)Attivo
L'installer verifica che sia abilitato
Database SQLiteSQLCipher (AES-256)Attivo nel codice
FileVault sull'intero disco protegge tutto oggi; il livello più granulare per singolo store è realizzato e in revisione
Store sicuro dell'app iOSRealm (AES-256), chiave legata al dispositivoAttivo
Store del profilo vocale cifrato su iOS oggi
Store principale dell'app iOSChiave Realm derivata dalla passkey (condivisa con l'Hub)In sviluppo
Specifica multipiattaforma approvata; flusso di associazione iOS in seguito
Database vettoriali + a grafoVolume APFS cifratoSpecificato
Design approvato; build pianificata dopo il passaggio di hardening di SQLCipher. Oggi FileVault protegge questi store
Registro di audit localeCifrato con SQLCipher, in sola aggiuntaAttivo nel codice
La catena di integrità HMAC per voce è un aggiornamento previsto
Backup di Time MachineEredita FileVaultAttivo
Tramite la crittografia di Time Machine di macOS

Integrità del codice e del modello

Due componenti di Ostler arrivano sul tuo Mac da internet al momento dell'installazione: il binario dell'assistente stesso e i pesi del modello LLM locale. Gestiamo l'integrità di ciascuno in modo diverso perché la forma della fiducia è diversa.

Il cancello di checksum, e l’asserzione di fiducia del registro modelli

Il binario dell'assistente viene distribuito come tarball firmato con un checksum SHA-256 pubblicato in un file accessorio. L'installer scarica entrambi, calcola l'hash del tarball e si rifiuta di proseguire se i valori non corrispondono. Una manomissione tra la nostra pipeline di rilascio e il tuo Mac – da parte di un intermediario, di una CDN compromessa, di qualsiasi agente nel mezzo – è un fallimento netto dell'installazione, non una compromissione silenziosa.

I pesi del modello provengono da registry upstream curati (il registry di Ollama, Hugging Face) tramite TLS al momento dell'installazione. Fissiamo i nomi dei modelli; ci affidiamo alla disciplina di immutabilità dei tag del manutentore upstream per stabilire a quali byte si risolvono quei nomi. Siamo onesti sull'assunto di fiducia: se un manutentore di un upstream da cui dipendiamo distribuisse un aggiornamento malevolo sotto un tag che avevamo fissato, le installazioni nuove lo scaricherebbero finché l'upstream non rilevasse il problema. Fissiamo le versioni dove possiamo, leggiamo i changelog, manteniamo piccola la superficie dei modelli. Rafforzare ulteriormente questo aspetto fissando i digest del contenuto è un elemento di hardening nella lista post-lancio.

Hub e iPhone: canale locale rafforzato

Quando l'app iOS di Ostler comunica con il tuo Mac Hub, la connessione è progettata per funzionare su TLS con un certificato autofirmato generato durante l'installazione, con l'iPhone che fissa la chiave pubblica del certificato al momento dell'associazione in modo che solo il tuo Mac possa rispondere.

Il contratto di pairing – cosa è fissato nella specifica

Il contratto crittografico – formato del codice QR di associazione, handshake WebAuthn, prova HMAC della passkey condivisa, scadenza del token di associazione di dieci minuti – è bloccato in una specifica normativa multipiattaforma approvata il 23-04-2026 sia dagli implementatori lato Hub sia da quelli lato iOS. Ogni costante HKDF, byte del formato di trasmissione e vettore di test è fissato. La firma del codice lato Hub è l'ultimo ostacolo prima che l'associazione iPhone-Hub funzioni end-to-end (vedi sotto).

Rafforzamento della rete

Tutto si lega a localhost. Nulla è raggiungibile dall’esterno del tuo Mac, e nessuna porta è mai esposta a internet.

Le cinque misure di irrobustimento
  • Tutti i servizi si legano a localhost. Qdrant, Oxigraph, Valkey, il gateway API, l'endpoint LLM locale, il servizio MCP – nessuno è raggiungibile dall'esterno del tuo Mac. Tutti i servizi dell'Hub si legano a 127.0.0.1 (solo loopback); nessuno accetta connessioni dalla LAN. Questo protegge contro ogni attaccante che non sia già sul tuo Mac. Non isola Ostler dall'altro software in esecuzione sullo stesso Mac in cui sei tu – vedi sotto.
  • I segreti JWT vengono validati all'avvio. Ogni servizio che partecipa alla catena di autenticazione del gateway si rifiuta di avviarsi se il suo segreto di firma è mancante, impostato su un segnaposto, presente in una lista di blocco di valori noti come deboli, o più corto di 32 caratteri. Una distribuzione configurata male fallisce in modo evidente all'avvio, non in silenzio al momento della richiesta.
  • Nessuna porta esposta alla WAN. Niente UPnP. Niente port forwarding. Il firewall del tuo router è il perimetro.
  • Accesso remoto solo tramite Tailscale. Se vuoi accedere a Ostler dal tuo telefono lontano da casa, consigliamo Tailscale (zero-trust, cifrato, nessuna porta esposta).
  • L'app iOS si connette tramite il tuo Wi-Fi di casa. Una volta associato, il tuo iPhone trova il tuo Mac usando lo stesso rilevamento locale che usa AirDrop. Non si rivolge mai a internet per trovare il tuo Mac.

Come l'assistente è delimitato

L'IA dentro Ostler è un insider istruito, nella formulazione dell'avviso in cima a questa pagina. Questa sezione spiega cosa significa in termini concreti: cosa l'assistente è autorizzato a fare, cosa non è autorizzato a fare e come le sue azioni vengono registrate.

I sei confini, in termini concreti

Confinamento dello spazio di lavoro. L'assistente legge e scrive all'interno di uno spazio di lavoro a negazione predefinita. Le directory che contengono le tue credenziali e le tue chiavi private – ~/.ssh, ~/.gnupg, ~/.aws, ~/.config, le directory di sistema sotto /etc, /usr, /var – sono su una lista di negazione statica che protegge per percorso ogni strumento che tocca i file. L'assistente può leggere i tuoi messaggi, la tua e-mail e i documenti che gli hai chiesto di leggere; non può, nemmeno per disavventura, leggere la tua chiave SSH.

Binario rafforzato. Il binario dell'assistente è compilato con il macOS Hardened Runtime abilitato, con le capacità di JIT, iniezione di librerie e variabili d'ambiente dyld negate al momento della firma del codice. Le consuete vie di iniezione a livello di processo che funzionano contro il comune software per Mac – hook DYLD_INSERT_LIBRARIES, iniezione di codice mappato in JIT, riscritture delle variabili d'ambiente del loader – non funzionano contro l'assistente. La fiducia tramite firma del codice è il varco; viene eseguito solo il binario originale.

Varco di approvazione per ogni strumento. Ogni chiamata di strumento passa attraverso un varco di approvazione. In modalità Supervisionata (quella predefinita), uno strumento non pre-approvato in questa sessione si blocca finché non dici di sì. Le allowlist con ambito di sessione fanno ciò che dice il nome: scadono alla fine della sessione, non quando l'assistente decide di essersi guadagnato la tua fiducia per sempre.

Negazione predefinita guidata dal canale. Quando l'assistente è guidato da un messaggio in arrivo – iMessage, WhatsApp, e-mail – non c'è alcun essere umano alla tastiera per approvare una chiamata di strumento. In questa postura, l'assistente non può chiedere, quindi non esegue alcuno strumento al di fuori di una piccola allowlist di sola lettura (ricerca, consultazione, recupero di una pagina web pubblica). Un'iniezione di prompt che arriva via messaggio non può scalare fino a scritture di file, chiamate di rete arbitrarie o comandi shell distruttivi; la superficie dello strumento shell in questa postura è delimitata da una allowlist separata di comandi pre-approvati.

Registro di audit a prova di manomissione. Ogni chiamata di strumento scrive un record in un registro di audit locale che usa una catena di hash SHA-256: ogni voce include l'hash della voce precedente, così che una voce eliminata o modificata spezzi la catena in un modo che la validazione tramite replay rileva. La firma HMAC di ogni voce è supportata come passaggio di hardening aggiuntivo. Il registro di audit è locale; non viene inviato da nessuna parte.

Conversazioni private per impostazione predefinita. Le conversazioni tra te e l'assistente sono memorizzate sul tuo Hub e contrassegnate come private per impostazione predefinita. I contenuti etichettati al livello di privacy più sensibile (i corpi completi delle trascrizioni che hai condiviso in confidenza) vengono trattenuti dalle risposte alle query a meno che il client chiamante non scelga esplicitamente di includerli. La via API predefinita restituisce metadati, non corpi.

Confini dei privilegi

Ostler viene eseguito come il tuo account utente sul tuo Mac – non come root, non come servizio di sistema. L'orchestratore, il gateway API, i database locali e i processi di inferenza vengono eseguiti tutti entro l'ambito di permessi del tuo utente. Non c'è alcun LaunchDaemon distribuito con l'installer, né alcun processo in background che sopravviva al logout.

L’unica richiesta admin, e il raggio d’impatto

L'installer chiede una password di amministratore una volta sola, al momento dell'installazione, per le operazioni a livello di sistema per cui macOS richiede i privilegi di amministratore: modificare le impostazioni di gestione dell'alimentazione affinché l'Hub resti raggiungibile dal tuo iPhone quando il Mac è inattivo (disabilitare la sospensione con alimentazione CA, abilitare il wake-on-magic-packet) e installare i pacchetti di supporto (Homebrew, Ollama) che vengono distribuiti come CLI standard di macOS. Dopo l'installazione, nessuna parte di Ostler chiede privilegi elevati per l'esecuzione, e l'applicazione non ha alcuna via che escali da sola.

Questo delimita il raggio d'impatto di un bug o di un attacco riuscito contro Ostler stesso: eredita la portata del tuo utente, non quella del sistema. Non protegge contro malware che abbia già ottenuto i permessi del tuo utente tramite qualche altro vettore – questa è la superficie di cui tratta la sezione successiva.

Da cosa questo non protegge

Chiudere il cloud chiude la più grande e banale classe di attacco – quella che espone un milione di persone in una volta. Non significa che non possa mai andare storto nulla. Preferiamo dirti i limiti piuttosto che lasciarteli scoprire.

Altro software in esecuzione sul tuo Mac

Questa è la superficie di minaccia realistica per un prodotto local-first, e siamo espliciti al riguardo. Se un malware raggiunge il tuo Mac tramite un'estensione del browser malevola, un download avvelenato o un'app compromessa proveniente da fuori l'App Store, eredita la capacità del tuo utente di parlare con localhost. Il livello di crittografia a riposo protegge contro il furto fisico e contro l'uscita dei tuoi dati dal dispositivo, ma non isola Ostler dall'altro software a cui hai dato il permesso di essere eseguito. Tratta il tuo Mac Hub come tratteresti un gestore di password o un'app bancaria: non installare utility a caso, non approvare prompt dell'installer che non hai avviato tu, e idealmente usa un Mac che esegua per lo più Ostler e non molto altro.

Compromissione della catena di fornitura delle nostre dipendenze

Ostler si appoggia a Ollama, a un file di modello LLM, a un runtime Python e a un piccolo insieme di pacchetti Python. Non li scriviamo noi, li usiamo. Se uno di quei progetti upstream distribuisse domani un aggiornamento malevolo, le installazioni nuove – le nostre, le tue, quelle di ogni altro utente – sarebbero esposte finché il problema non venisse rilevato. Fissiamo le versioni, leggiamo i changelog, manteniamo la superficie delle dipendenze più piccola possibile. Non fingeremo che il rischio sia zero. La stessa avvertenza sulla catena di fornitura vale per qualsiasi software tu installi mai, ovunque.

Tu

La frase di recupero è la backdoor del caso peggiore. Se la scrivi su un foglietto adesivo, ne fai una foto, la incolli in un'app di note nel cloud o la leggi ad alta voce durante una videochiamata, la frase diventa la via più breve per l'attaccante. Ti rendiamo facile fare la cosa giusta – la schermata blocca il copia-incolla, il documento di recupero spiega la minaccia – ma l'ultimo anello della catena sei tu.

Questo è il prezzo di un sistema che custodisce le chiavi sul tuo hardware, non sul nostro. Possiamo progettare l'architettura dell'interno; non possiamo progettare per aggirare una cattiva igiene operativa. La mitigazione è una documentazione onesta, non una promessa che possiamo mantenere al posto tuo.

Audit indipendente

Stiamo coinvolgendo consulenti di sicurezza senior e definendo l'ambito di un audit di sicurezza indipendente da parte di una rinomata azienda di cybersicurezza. L'ambito copre autenticazione, trattamento dei dati, crittografia dello storage, postura di rete e analisi delle dipendenze. Il report sarà pubblicato qui una volta completato.

Perché un audit professionale – e perché questa architettura è facile da verificare

Abbiamo scelto un audit professionale anziché affidarci alla revisione del codice da parte della community perché una revisione di esperti è più rigorosa che sperare che qualcuno legga il codice. La fiducia dovrebbe essere verificabile, non presunta. “Promettiamo di non guardare i tuoi dati” è ciò che dice ogni azienda del cloud. “Architetturalmente non possiamo guardare i tuoi dati, ed ecco il report dell'auditor che lo dimostra” è ciò a cui puntiamo.

L'architettura è intenzionalmente semplice. Autenticazione con passkey come metodo primario tramite i framework di Apple. Primitive crittografiche standard (HKDF-SHA256, AES-KW RFC 3394). Servizi locali su 127.0.0.1. Inferenza Ollama locale. C'è pochissima crittografia inedita da sbagliare perché il meccanismo di sicurezza primario è non avere una connessione di rete in partenza.

Per i curiosi tecnici

La specifica tecnica completa – autenticazione WebAuthn/PRF, derivazione chiavi HKDF, wrapping AES-KW, costruzione della frase di recupero, gestione della memoria e trasporto – vive sul sito docs: Security technical specification. Il contratto crittografico multipiattaforma completo, con ogni costante e vettore di test, sarà disponibile per revisione indipendente.

Stato attuale della build – onesto, riga per riga

Trasparenza significa ammettere esattamente dove si trova ogni pezzo oggi. La tabella di cifratura sopra mostra lo stato per componente; il registro completo riga per riga – ogni sottosistema, il suo stato e il blocco specifico indicato per ciò che non è ancora attivo – è mantenuto sul sito docs: Current build status.

Divulgazione responsabile

If you think you have found a security vulnerability in any part of Ostler – the Mac Hub installer, the iOS app, the passkey helper, the Sparkle update pipeline, or any related infrastructure – please report it to [email protected]. Un essere umano legge ogni segnalazione e risponde entro 72 ore.

Cosa promettiamo, e cosa chiediamo

Cosa promettiamo in cambio:

  • Conferma di ricezione entro 72 ore. Una persona legge ogni segnalazione.
  • Una vera conversazione. Niente risponditori automatici, niente moduli di triage, niente burocrazia da bug-bounty. Parli con un ingegnere.
  • Riconoscimento pubblico, se lo vuoi. Ti citeremo nelle note di rilascio della versione che corregge il problema. Vanno bene anche pseudonimi e riconoscimento anonimo. Se preferisci nessun riconoscimento, lo rispetteremo.
  • Una finestra equa per correggere. Ti chiediamo di concederci un tempo ragionevole per distribuire una patch prima della divulgazione pubblica. In cambio ci impegniamo a non usare minacce legali contro i ricercatori in buona fede.

Cosa chiediamo in cambio: non accedere ai dati di altri utenti, non interrompere i nostri servizi e non pretendere un pagamento come condizione per la divulgazione. Non gestiamo un programma di bug-bounty retribuito al lancio – se questo cambia, questa pagina lo dirà.

Per le segnalazioni cifrate, la nostra chiave pubblica PGP è pubblicata su /security.asc. La politica di divulgazione completa è anche leggibile da macchina su /security.txt secondo la RFC 9116.

La storia della sicurezza è la storia della privacy. Ogni concorrente invia i tuoi dati al cloud e promette di proteggerli. Noi teniamo i tuoi dati sul tuo hardware e dimostriamo che non possono uscirne. Questa non è una funzionalità. È l'architettura.

Panoramica sulla privacy Cosa sa Ostler

Architetturalmente non può guardare. Audit in attesa.

Dettagli concreti  ·  Niente chiacchiere