Zero-Knowledge paroolihoidla
Sinu paroolid, API-võtmed ja saladused — krüpteeritud nii, et isegi server ei näe neid. Matemaatiliselt tõestatud privaatsus.
Kahetasemeline krüptoarhitektuur
Firma Seif ja Isiklik Vault kasutavad erinevat krüpteerimist — igaüks optimeeritud oma kasutuse jaoks.
Firma Seif
Server-side krüpteerimine (Laravel Crypt, AES-256-CBC)
- Admin ja kausta ligipääsuga kasutajad näevad
- Töötaja lahkumisel andmed säilivad
- Kausta jagamine: kasutaja, roll, osakond
- Audit log iga vaatamise kohta
Isiklik Vault
Client-side Zero-Knowledge (HKDF + AES-256-GCM)
- AINULT omanik näeb andmeid
- Server ei tea kunagi plaintexti
- Parooli kaotamisel andmed kadunud — see on garantii
- Isegi admin ei pääse ligi
HKDF võtme tuletamine
Bitwarden/1Password mudelist inspireeritud arhitektuur, kus krüpteerimisvõti ja autentimisvõti tuletatakse matemaatiliselt eraldi.
Master password
Kasutaja poolt valitud parool — vähemalt 8 märki.
sisend: kasutaja paroolPBKDF2 stretching
Master password + juhuslik 16-baidine sool → 100 000 iteratsiooni HMAC-SHA256. Aeglustab brute-force ründeid.
PBKDF2(SHA-256, password, salt, 100K) → preKeyHKDF stretch
HKDF-Expand lisab lisa turvakihi, eraldades preKey konkreetseks stretchedMasterKey'ks.
HKDF-Expand(SHA-256, preKey, "tresoor-stretch") → stretchedMasterKeyKrüpteerimisvõti (encKey)
Andmete krüpteerimiseks kasutatav AES-256 võti. Ei lahku KUNAGI brauserist — server ei tea seda.
HKDF-Expand(stretchedMasterKey, "vault-enc") → encKeyAutentimisvõti (authKey)
Eraldi haru parooli kinnitamiseks. SHA-256 hash saadetakse serverisse — server kontrollib, aga ei saa tuletada encKey'd.
HKDF-Expand(stretchedMasterKey, "vault-auth") → authKey → SHA-256 → hashHKDF("vault-enc")encKeyainult brauserisHKDF("vault-auth")authKey → SHA-256hash serverisseZero-Knowledge garantiid
Matemaatilised garantiid, mis kehtivad isegi serveri kompromiteerimise korral.
Server ei näe plaintexti
Krüpteerimine toimub ainult brauseris (Web Crypto API). Server salvestab ja tagastab ainult šifreeritud andmeid.
Server ei tea encKey'd
Server hoiab ainult auth_key_hash'd — SHA-256 eraldiseisvast HKDF harust. Matemaatiline seos encKey'ga puudub.
enc ≠ auth
HKDF tagab, et "vault-enc" ja "vault-auth" harude väljundid on krüptograafiliselt sõltumatud.
Parooli kaotamisel — andmed kadunud
Taastamisvõimalust EI OLE. See on Zero-Knowledge arhitektuuri põhiomadus, mitte puudus.
Admin ei pääse ligi
Isiklik vault tagastab admin päringutele HTTP 403. Mitte poliitiline piirang, vaid krüptograafiline — andmed on krüpteeritud kasutaja võtmega.
Timing-safe kontroll
Parooli verifitseerimine kasutab hash_equals() — välistab timing side-channel ründe.
Ohumudel
Teadaolevad ründestsenaariumid ja nende leevendused.
Serveri kompromiteerimine
Ründaja saab andmebaasi klooni kõigi krüpteeritud kirjetega.
Man-in-the-middle
Ründaja peatab API kutsed kasutaja ja serveri vahel.
Brute-force rünne
Ründaja proovib master password'i ära arvata.
XSS (skripti süstimine)
Kui ründaja saab JS-i lehele, võib encKey mälust lugeda.
Insider threat (admin)
Ettevõtte admin proovib lugeda töötaja isiklikku vault'i.
Rainbow table rünne
Eelarvutatud hash-tabelid parooli murdmiseks.
Krüptograafilised standardid
| Algoritm | Standard | Kasutus |
|---|---|---|
PBKDF2-HMAC-SHA256 | RFC 2898 | Password → preKey |
HKDF-SHA256 | RFC 5869 | Key expansion & separation |
AES-256-GCM | NIST SP 800-38D | Authenticated encryption |
SHA-256 | FIPS 180-4 | Auth key hashing |
Web Crypto API | W3C | Browser-native cryptography |
Krüptoparameetrid
PBKDF2— 100 000 iterationsAES-GCM— 256-bit key, 96-bit IVmaster_salt— 128-bit (16 bytes) randomauth_key_hash— SHA-256 (256-bit → 44 Base64 chars)HKDF info— "tresoor-stretch", "vault-enc", "vault-auth"
Sinu andmed, sinu kontroll
Tresoor Vault tagab, et sinu paroolid ja saladused on kaitstud pangataseme krüpteerimisega — isegi meie ei saa neid lugeda.