Zero-Knowledge

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.

1

Master password

Kasutaja poolt valitud parool — vähemalt 8 märki.

sisend: kasutaja parool
2

PBKDF2 stretching

Master password + juhuslik 16-baidine sool → 100 000 iteratsiooni HMAC-SHA256. Aeglustab brute-force ründeid.

PBKDF2(SHA-256, password, salt, 100K) → preKey
3

HKDF stretch

HKDF-Expand lisab lisa turvakihi, eraldades preKey konkreetseks stretchedMasterKey'ks.

HKDF-Expand(SHA-256, preKey, "tresoor-stretch") → stretchedMasterKey
4

Krüpteerimisvõti (encKey)

Andmete krüpteerimiseks kasutatav AES-256 võti. Ei lahku KUNAGI brauserist — server ei tea seda.

HKDF-Expand(stretchedMasterKey, "vault-enc") → encKey
5

Autentimisvõ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 → hash
stretchedMasterKey
HKDF("vault-enc")encKeyainult brauseris
HKDF("vault-auth")authKey → SHA-256hash serverisse

Zero-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.

Kõrge

Serveri kompromiteerimine

Ründaja saab andmebaasi klooni kõigi krüpteeritud kirjetega.

Kaitse: Personal vault kaitstud ZK-ga — andmed on AES-256-GCM krüpteeritud, encKey'd serveris ei ole.
Kõrge

Man-in-the-middle

Ründaja peatab API kutsed kasutaja ja serveri vahel.

Kaitse: TLS 1.3 + HSTS. Isegi pealduskuulamise korral liiguvad ainult krüpteeritud andmed.
Keskmine

Brute-force rünne

Ründaja proovib master password'i ära arvata.

Kaitse: PBKDF2 100K iteratsiooni + rate limit (5 katset / 15 min). Ühe salasõna proovimine võtab ~100ms.
Kõrge

XSS (skripti süstimine)

Kui ründaja saab JS-i lehele, võib encKey mälust lugeda.

Kaitse: Content Security Policy + Vue 3 automaatne escaping. Teadaolev risk — CSP on peamine kaitsekiht.
Keskmine

Insider threat (admin)

Ettevõtte admin proovib lugeda töötaja isiklikku vault'i.

Kaitse: API tagastab HTTP 403 — admin ligipääs on blokeeritud koodi tasemel.
Madal

Rainbow table rünne

Eelarvutatud hash-tabelid parooli murdmiseks.

Kaitse: Juhuslik 16-baidine sool (2¹²⁸ kombinatsiooni) — rainbow table on ebarealistlik.

Krüptograafilised standardid

AlgoritmStandardKasutus
PBKDF2-HMAC-SHA256RFC 2898Password → preKey
HKDF-SHA256RFC 5869Key expansion & separation
AES-256-GCMNIST SP 800-38DAuthenticated encryption
SHA-256FIPS 180-4Auth key hashing
Web Crypto APIW3CBrowser-native cryptography

Krüptoparameetrid

  • PBKDF2 — 100 000 iterations
  • AES-GCM — 256-bit key, 96-bit IV
  • master_salt — 128-bit (16 bytes) random
  • auth_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.