Postura di sicurezza
Costruito per la fiducia, non per l'apparenza
Non siamo un'azienda di sicurezza, ma ConKarma gestisce dati — bambini, partner, rituali quotidiani — che richiedono risposte oneste su come li proteggiamo. Questa pagina è la versione senza maschera.
Ultima revisione:
Come funziona l'accesso
Trattiamo la tua password come un segreto che non vediamo mai in chiaro, salviamo l'hash più forte che la specifica concede e ruotiamo i refresh token perché un cookie rubato non sopravviva alla sessione da cui proviene.
- Le password sono hashate con argon2id (profilo RFC 9106 m=19 MiB). Gli hash bcrypt più vecchi vengono aggiornati in modo trasparente al prossimo accesso — nessun reset forzato.
- Le sessioni usano famiglie rotanti di refresh token. Se un token rubato viene rigiocato, l'intera famiglia si invalida e il dispositivo legittimo deve riautenticarsi — nessuna compromissione silenziosa.
- Blocco account configurabile dopo tentativi falliti ripetuti. Si rimuove automaticamente al primo accesso corretto, perché un typo non ti chiuda fuori.
- Accedi con Apple e Accedi con Google usano OpenID Connect diretto — goia_api si collega direttamente ad Apple e Google, senza alcun broker di autenticazione di terze parti nel percorso. Riceviamo solo l'identificatore del provider a monte, la tua email e il flag di verifica — mai la tua password del provider.
Sicurezza al login
Ogni login passa per un secondo fattore. Ogni login da un nuovo dispositivo ti avvisa. I genitori restano informati per i minori di 18 senza che si infili nient’altro.
- Autenticazione a due fattori a ogni login: codice a 6 cifre via e-mail, finestra di 30 giorni per i dispositivi di fiducia.
- Avviso e-mail in tempo reale quando l’account viene acceduto da un nuovo dispositivo: tipo, città e paese approssimativi, ora. Un tocco revoca quel dispositivo e forza il cambio password.
- I login dei minori di 18 da nuovi dispositivi avvisano anche i membri con ruolo di genitore della loro cellula. Trasparente: i minori vedono in Impostazioni quali genitori sono cablati.
- Codici di backup: 8 codici monouso alla prima configurazione, accessibili da Impostazioni → Sicurezza, rigenerabili a richiesta. Via di recupero quando si perde l’accesso all’e-mail.
- Archiviazione password: argon2id, l’hash memoria-duro standard del settore. I token dei dispositivi di fiducia sono separati dai token di sessione.
- Verifica con limite: 5 codici falliti scatenano un blocco di 15 minuti.
Quando qualcosa sembra strano
Se un accesso arriva da un paese che non abbiamo visto sul tuo account negli ultimi 30 giorni, ti scriviamo. L'email ha un "non ero io" in un click che revoca la sessione e ti porta dritto al reset della password.
- Avvisi email di posizione sconosciuta (uno per paese per finestra di 30 giorni — un viaggio non ti spamma).
- Lista sessioni attive con revoca per dispositivo dall'app. Puoi disconnettere un telefono perso senza cambiare password.
- Dettaglio degli accessi falliti (timestamp e codice paese soltanto — mai IP grezzo) visibile nel log di sicurezza dell'app.
Solo app vere
Il traffico mobile è attestato come proveniente da una vera installazione di ConKarma su un dispositivo vero. I tentativi di curl-contro-l'API vengono respinti morbidamente, che è ciò che una superficie API onesta deve fare.
- Firebase App Check su iOS e Android. Il token è obbligatorio su ogni chiamata API da mobile.
- TLS pinning mobile via il manifesto firmato a /.well-known/mobile-pins.json. I nuovi pin sono firmati con una chiave offline e ruotati con una finestra di sovrapposizione di sei settimane perché un aggiornamento non chiuda fuori nessuno.
Le funzioni per adulti sono off-limits per l'analitica
ConKarma ha due zone: una Serene (tutto family-friendly) e una Ember (le funzioni 18+). Le pagine Ember deliberatamente non emettono eventi di analitica di terze parti. Raccogliamo contatori Prometheus aggregati lato server per capacità e uptime; nient'altro.
- Le superfici per adulti (sfide, desideri, fantasie, diari intimi, il caveau privato) non caricano mai Google Analytics.
- È richiesto lo sblocco biometrico per entrare nelle superfici Ember nell'app. Il sistema scade e si ribloca se cambi app.
- La protezione screenshot nasconde i contenuti Ember dal selettore app del SO e da qualsiasi overlay di registrazione schermo.
- Attivazione della zona adulti per dispositivo: ON per impostazione predefinita sul tuo dispositivo principale, OFF su ogni altro. Attivi esplicitamente per dispositivo, e il controllo lato server fallisce in modo chiuso (fail-closed).
- Nuova richiesta per inattività: il blocco biometrico si disattiva dopo 5 minuti di inattività dentro Ember, o 30 secondi in background. Entrambi i tempi sono configurabili da Impostazioni → Privacy.
- Azzeramento della cache in memoria: quando passi da Ember a Serene (o metti l'app in background), ogni immagine in cache viene rimossa dalla memoria — difesa in profondità contro gli strumenti di ispezione della memoria.
- Esclusione da Spotlight, Apple Intelligence e AppIntents: nessun contenuto per adulti viene mai donato a Spotlight, all'LLM on-device, agli AppIntents, allo Smart Stack o ai widget della schermata di blocco.
- Accesso amministrativo a due occhi: nessuna persona in XTZ Group può leggere unilateralmente i contenuti della zona adulti — ogni override richiede l'approvazione firmata di un secondo amministratore, registrata in un log di audit immutabile.
- Conservazione adulti configurabile di 3 anni: le righe della zona adulti vengono eliminate automaticamente dopo 3 anni per impostazione predefinita. La finestra è configurabile dall'utente (da 90 giorni a 10 anni) da Impostazioni → Privacy. Eliminazione definitiva una volta trascorsa la finestra.
- Controlli per il backup iCloud e l'esportazione GDPR: due interruttori opt-in in Impostazioni → Privacy tengono il contenuto per adulti fuori dai backup del dispositivo e dall'esportazione dei tuoi dati per impostazione predefinita — così backup o esportazioni condivisi per errore non lo espongono.
Infrastruttura di consenso + strumenti di conflitto
Le conversazioni difficili e il consenso nella zona adulta passano attraverso superfici strutturate e curate — mai una pipeline di IA. I dati rimangono locali o privati della coppia.
- Strumenti di conflitto — pipeline di IA esclusa: ogni flusso di riparazione tra fratelli, coppia e intergenerazionale è contenuto curato + moduli strutturati.
- Infrastruttura di consenso — Ember: il documento dei limiti, il binding della parola di sicurezza e i check-in di aftercare vivono su primitive E2E di Ember. Il documento dei limiti non raggiunge mai la nostra pipeline di IA.
- Nascondimento personale + controlli a livello di cellula: il BE non elimina i dati sottostanti. Qualsiasi operazione di flag permanente richiede un gate di due amministratori.
Infrastruttura di consenso Ember
Le superfici del piano adulti non vengono distribuite con una generica casella 'Accetto' e la si chiama consenso. Ember è strutturato intorno a tre primitive fondamentali — il documento dei limiti, la safeword e i check-in aftercare — che vivono sullo stesso keypair E2E del resto della zona adulti. Inquadratura matura in tutto; autonomia, non paternalismo.
- Documento dei limiti: ogni partner costruisce e modifica il proprio, visibile solo dall'altro partner nella stessa cell coppia. Non raggiunge mai la nostra pipeline di analytics; mai letto da alcuna IA; mai replicato lato server oltre il blob crittografato.
- Binding safeword: una frase safeword condivisa dalla coppia che riporta immediatamente ogni superficie Ember a Serene + scrive una riga di log privata alla coppia. Le attivazioni sono visibili solo a entrambi i partner; gli operatori XTZ Group non possono leggerle.
- Check-in aftercare: pianificati da uno dei partner dopo una sessione Ember, opt-in per partner, le risposte rimangono private alla coppia. Nessun contatore di coinvolgimento, nessuno streak, nessun insistere.
- Inquadratura matura: il testo e i prompt trattano i lettori adulti come adulti. Non infantilizziamo le superfici con eufemismi; non ci affidiamo nemmeno al valore shock per sembrare trasgressivi.
Abbinamento del consenso doppio cieco
Quando due partner esplorano quali categorie fantasy si sovrappongono, l'abbinamento avviene interamente sul dispositivo con due invarianti strutturali che non romperemo mai: mai-rivelare-no (se uno dei partner tocca no, nessuno dei due vede quel fatto) e zero-egress IA (nessun modello in nessuna parte del percorso di inferenza).
- Invariante mai-rivelare-no: una coppia sì/sì appare nella lista di abbinamenti condivisi. Qualsiasi altra combinazione (sì/no, no/sì, no/no) non restituisce nulla — nessuno dei due partner vede chi ha detto no, e nessuno vede che all'altro sia stato mostrato il prompt. Questo è design strutturale anti-pressione, non un'impostazione che puoi disattivare.
- Invariante zero-egress IA: il calcolo di abbinamento è un'intersezione di set locale. Nessuna inferenza del modello, nessuna ricerca di embedding, nessun punteggio IA di categorie o abbinamenti. L'insieme delle categorie stesso è contenuto editoriale curato, non generato.
- Risultati privati alla coppia: la lista di abbinamenti è crittografata end-to-end sul keypair condiviso della coppia. Lato server vediamo conteggi (pianificazione della capacità) ma mai le categorie stesse.
- Invarianti verificabili: i due invarianti sopra sono applicati nel percorso di codice sul dispositivo senza toggle e senza override amministrativo. Un operatore della piattaforma non può opt-in una coppia alla telemetria su questa superficie — non c'è telemetria a cui fare opt-in.
Conformità Take It Down Act — canale di avviso pubblico
Il TAKE IT DOWN Act federale (2025) richiede alle piattaforme che ospitano contenuti degli utenti di agire sulle richieste di rimozione di immagini intime non consensuali entro 48 ore. Il canale di avviso pubblico + la procedura di ConKarma sono pubblicati su /legal/takedown-notice; questa sezione è il riepilogo della postura di sicurezza.
- Canale: legal@conkarma.app (oggetto Take It Down notice / DMCA notice / Urgente — segnalazione CSAM).
- Impegno: SLA di 48 ore dal ricevimento di una richiesta valida alla rimozione o disabilitazione dell'accesso.
- Copertura: NCII (deepfake reali o generati dall'IA), copyright DMCA, CSAM (priorità elevata + segnalazione NCMEC) e segnalazioni di contenuti illeciti più ampie.
- Contro-avviso: percorso di contro-avviso DMCA tramite lo stesso canale; finestra di ripristino statutaria di 10-14 giorni lavorativi in assenza di un ordine del tribunale.
- Audit: ogni avviso + ogni azione intrapresa viene registrata e conservata per i periodi richiesti dalla legge. Gli avvisi in malafede possono esporre il mittente a responsabilità civile ai sensi dell'Atto, DMCA §512(f) e dei nostri Termini.
Regolazione normativa per stato
Quando gli stati USA o altre giurisdizioni approvano leggi che limitano cosa una piattaforma può offrire (regimi di verifica dell'età, restrizioni sulle categorie di contenuti, mandati di conservazione dei registri), adattiamo il comportamento a livello regionale invece di ritirarci dal mercato. Il compromesso onesto: la legge di uno stato modella l'aspetto della superficie per gli utenti in quello stato, non quello che riteniamo essere il design del prodotto giusto.
- Rilevamento della regione: basato sul paese dichiarato dall'utente + (per gli USA) lo stato configurato in Impostazioni, non solo geolocalizzazione IP. Gli utenti possono sovrascrivere la regione dedotta se è sbagliata.
- Cosa viene adattato: flussi di verifica dell'età (stati in stile KOSA), gate dei contenuti adulti, finestre di conservazione dove la legge statale le impone e testo delle divulgazioni dove lo stato richiede formulazioni specifiche.
- Cosa NON viene adattato: postura di crittografia end-to-end, invarianti zero-egress IA, impostazione predefinita conforme a COPPA per under 13 e l'invariante della tabella mai-mescolare-righe-contenuti-adulti. Questi sono non negoziabili tra le giurisdizioni.
- Trasparenza: la configurazione regionale applicata al tuo account è visibile in Impostazioni → Privacy → Postura regionale. Se pensi che sia sbagliata per la tua giurisdizione, presenta un avviso Take It Down o scrivi a legal@conkarma.app.
I bambini non sono una leva di crescita
Gli account sotto i 13 anni passano per un flusso verificabile di consenso parentale prima di esistere. Non mostriamo pubblicità sugli account dei bambini, punto. Non vendiamo dati dei bambini, non li condividiamo per pubblicità, non li usiamo per profilazione.
- Consenso parentale verificabile conforme a COPPA §312.5 (verifica firmata via carta di credito, con percorso alternativo per famiglie senza carta).
- Nessuna pubblicità di terze parti di alcun tipo su account sotto i 13 anni.
- I genitori possono visualizzare, esportare e cancellare i dati del figlio in qualsiasi momento dall'app.
La fiducia viene dalla Cella, non da noi
ConKarma è un prodotto a cerchio chiuso. Non ci sono profili pubblici, non c'è grafo follower e non c'è modo di scoprire estranei. La maggior parte della moderazione avviene perché tu e le persone della tua Cella già vi conoscete e vi fidate. Dove il modello ha bisogno di aiuto, abbiamo un flusso di segnalazione e una coda di moderazione con un umano dentro.
- Le Celle sono chiuse di default. Nessuna scoperta pubblica, nessun profilo pubblico, nessun suggerimento amico-di-amico.
- Flusso di segnalazione utente su ogni superficie di contenuto, instradato a una coda di moderazione gestita da umani.
- Lo scan basato su hash di CSAM noto è tracciato come implementazione conosciuta-e-pendente, con trigger espliciti di revisione quando passeremo a un profilo di archiviazione media che lo richiede. Non lo dichiareremo prima che sia reale.
Cosa teniamo, dove, e come riaverlo
Sovra-documentiamo questo su /privacy e /legal/subprocessors, ma la versione corta rilevante per la sicurezza è: cifrato a riposo, conservato dove le SCC coprono, esportabile e cancellabile su richiesta, e non teniamo più del necessario.
- Controlli di esportazione e cancellazione GDPR, CCPA e Quebec-25 dentro l'app — non dietro a un ticket di supporto. La cancellazione ha una finestra di grazia di 30 giorni in soft-delete nel caso cambi idea.
- Cifratura a riposo sul database Postgres e sull'object storage (infrastruttura gestita da Supabase).
- Nessun IP grezzo viene archiviato su una superficie visibile all'utente. La lista sessioni attive mostra solo il codice paese a 2 lettere; gli IP grezzi esistono brevemente nelle righe di eventi di sicurezza per uso forense con una breve ritenzione.
Se trovi qualcosa, dillo
Non gestiamo ancora un bug-bounty pagato — è una vera lacuna e ci muoveremo quando giustificherà il tempo operativo che serve. Nel frattempo accogliamo segnalazioni in buona fede e le confermiamo entro cinque giorni lavorativi.
Email: security@conkarma.app
- Scrivi a security@conkarma.app con i dettagli. Chiave PGP a richiesta.
- Ci impegniamo a confermare entro 5 giorni lavorativi e a una risposta sostanziale entro 30 giorni.
- Divulgazione coordinata: finestra di default di 90 giorni prima della divulgazione pubblica, estendibile per accordo reciproco.
- Non intraprenderemo azioni legali contro ricerca di sicurezza in buona fede che segua una divulgazione responsabile.