Sikkerhetsarkitekturen i Cryptile, lag for lag
Cryptile krypterer hver fil, hvert miniatyrbilde og hver indeks med AES-256-GCM, med nøkler som lages på telefonen din ut fra mønsteret du tegner. Det finnes ingen konto og ingen server, og utvikleren har aldri nøklene.
Den enkle oppsummeringen står på sikkerhetssiden.
Hva bør jeg vite?
- Mønsteret ditt er kilden til hver nøkkel. Ingenting lesbart lagres uten det.
- Størrelser og antall hvelv er tilslørt. Filer fylles ut, og lokkeplasser skjuler hvor mange hvelv som finnes.
- Du kan sjekke det. Krypteringskjernen er publisert for gransking (kildetilgjengelig), med trusselmodell og testvektorer: github.com/jasonbrelsford/cryptile-core.
Hvordan blir et mønster til en nøkkel?
- Mønsteret skrives som rutenettets størrelse fulgt av cellene du berørte, i rekkefølge.
- Det blandes med en enhetshemmelighet på 32 byte som ligger i iPhonens nøkkelring, bare for denne enheten.
- PBKDF2-HMAC-SHA512 kjøres 600 000 ganger over det. Hver gjetning koster like mye arbeid.
- HKDF-SHA256 deler resultatet i en oppslagsnøkkel og en innpakningsnøkkel.
- Oppslagsnøkkelen navngir hvelvets indeksfil. Innpakningsnøkkelen åpner den.
Inne i indeksen ligger hvelvets tilfeldige hovednøkkel på 256 bit. HKDF avleder egne undernøkler fra den for filer, miniatyrbilder og indeksen. Ingen nøkkel brukes til to formål.
Hvordan krypteres filer?
Små elementer, som miniatyrbilder og indeksen, forsegles i ett stykke med AES-256-GCM og en tilfeldig nonce.
Store filer bruker en STREAM-struktur i biter på 1 MB. Hver bit har sin egen nonce og registrerer sin posisjon og om den er den siste. Å kutte, stokke om eller bytte biter gjør at dekrypteringen feiler.
GCM autentiserer også hver header, så en endret fil avvises i stedet for å vises.
Hvordan skjules størrelser og antall hvelv?
Hver liten blob og hver siste filbit fylles ut til et multiplum av 64 KiB. Den som kopierer, ser omtrentlige størrelser, ikke nøyaktige.
Det finnes ingen hvelvliste. Appen holder minst 8 plasser som ser ut som indekser, ekte og lokke, og trekker lokkeplassene på nytt ved hver skriving. Et mønster som ikke peker på noen plass, åpner et tomt hvelv.
Hvordan fungerer gjenoppretting?
Hvert hvelv får en gjenopprettingsfrase på 9 ord, som er 96 bit tilfeldighet. Den åpner en egen gjenopprettingskopi av hvelvet, forseglet under en nøkkel laget fra frasen.
iCloud-sikkerhetskopien speiler de krypterte filene slik de er. Enhetshemmeligheten er ikke med som standard, så en sikkerhetskopi alene kan ikke brukes til å gjette mønstre.
Hva er kryptert, og hva er ikke?
Kryptert: bilder, videoer, filer, notater, miniatyrbilder, navn, mapper, favoritter, gjenkjent tekst og bildeposisjoner. Den lille filen som holder rede på lokkehvelv og tellingene i gratisplanen, er forseglet med en enhetsnøkkel.
Ikke kryptert av Cryptile:
- Innstillinger. Tiden for automatisk låsing, sorteringsrekkefølgen og bryteren for sikkerhetskopi inneholder ingen hemmeligheter.
- Delte elementer som venter på å bli lagt til. De ligger under iOS' filbeskyttelse til du åpner et hvelv.
- Beholderens totale størrelse og skrivetidspunkter. Et hvelv på 10 GB ser ikke ut som 10 MB.
- Alt du eksporterer. En kopi lagret i Bilder eller Filer er utenfor hvelvet.
Hva beskytter dette mot?
- Noen som kopierer appens filer uten nøkkelringen din. De får chiffertekst og kan ikke prøve mønstre.
- Apple, eller et innbrudd hos Apple. iCloud har chiffertekst og ingen nøkler.
- Manipulering. Endrede eller omstokkede data lar seg ikke dekryptere.
- Oss. Vi driver ingen server og har ingen nøkler, så vi kan ikke tilbakestille tilgang.
Hva beskytter dette ikke mot?
- Korte mønstre. Et mønster er svakere enn en passfrase. Med filene og nøkkelringen din kan et mønster på 6 celler i et 4×4-rutenett knekkes på minutter med en GPU. Bruk 8 eller flere celler.
- Skadevare på en opplåst telefon. Kode som leser minnet mens et hvelv er åpent, er utenfor det noen app kan hindre.
- Noen som ser deg tegne. Tegn der ingen kan se hånden din.
- Å miste telefonen og frasen. Hvelvet er borte. Det finnes ingen tilbakestilling.
Panikkmønsteret i Plus ødelegger enhetshemmeligheten, så ingen hvelv på telefonen åpnes før de er gjenopprettet.