Bezpieczeństwo

Architektura bezpieczeństwa

Stos Rust/Tauri, format .rkvey v5, kompartmenty, opóźnione odszyfrowywanie i model zagrożeń.

Bezpieczeństwo QubKey opiera się na architekturze warstwowej i zasadzie obrony w głąb: system plików, format .rkvey v5, kryptografia i rdzeń aplikacji w Rust chronią Twoje sekrety na każdym etapie — od zapisu po odblokowanie.

Każda warstwa zapewnia uzupełniające gwarancje. Gdy brakuje ochrony systemowej (np. brak szyfrowania dysku), warstwy aplikacji i kryptografii nadal chronią sejf. W formacie v5 sekrety wpisu są odszyfrowywane tylko wtedy, gdy je wyświetlasz lub kopiujesz — nie przy otwieraniu sejfu i nie na liście.

UI

Interfejs (React + Tauri)

  • Sklepienie
  • Lornetka składana
  • Szukaj
  • Generator
  • Kody jednorazowe
  • Panel
  • Synchronizuj
  • Partycypujący
  • Rozszerzenie przeglądarki
Core

Rdzeń rdzy (rdzeń QubKey)

  • Format .rkvey v5
  • Wyprowadzenie Argon2id
  • Uwierzytelnione szyfrowanie
  • Indeks wyszukiwania
  • Bezpieczne zobowiązania
  • Czyszczenie pamięci
  • Odzyskiwanie po awarii
Storage

plik .rkvey v5 w systemie plików

  • Preambuła
  • Zaszyfrowany nagłówek
  • Zaszyfrowany indeks
  • Tajne przegródki
  • Załączniki
  • Zaangażuj historię

Warstwy bezpieczeństwa

Przepływ odblokowania

Odblokowanie następuje według ścisłego potoku: hasło główne trafia do rdzenia Rust, Argon2id wyprowadza klucz główny, klucze podrzędne odszyfrowują nagłówek i indeks B-Tree. Kompartmenty wpisu (sekrety, załączniki) pozostają zaszyfrowane i są odczytywane tylko na żądanie. Przy blokowaniu wszystkie klucze i sekrety są usuwane z pamięci.

Hasło główne + sól

.rkvey preambuła (tekst jawny)

  • Wprowadzono do rdzenia Rust (Tauri IPC) — nigdy nie wystawiono na widok WebView
  • Losowa sól przechowywana w preambule (16 bajtów)
KDF

Argon2id

  • 64 MB RAM · 3 iter · p=4 (domyślnie `KdfParams`)
  • Odporność na GPU/ASIC
  • Kalibracja ~250–500 ms w zależności od platformy

Klucz główny

256 bitów · `KeyManager::derive_master_key`

Wyprowadzenie podklucza

HKDF-SHA256(master, sól=wpis pliku, informacja=rodzaj)

klucz_nagłówka

Bezpieczny nagłówek

klucz_indeksu

Indeks drzewa B

klucz_przedziału

Przedziały

Deszyfrowanie AEAD

  • AES-256-GCM lub XChaCha20-Poly1305
  • Nagłówek · Indeks · Przegródki (na żądanie)

Pamięć po odblokowaniu

  • Lista/widok: tylko metadane
  • Sekrety i załączniki odszyfrowane tylko na żądanie

Zamek

  • `KeyManager::clear_keys()` + zeruj
  • Sekrety usunięte, a schowek wyczyszczony

Model zagrożeń

QubKey jest zaprojektowany pod najczęstsze scenariusze zagrożeń lokalnego menedżera. Tabela opisuje wektor ataku i wbudowaną przeciwdziałanie (format .rkvey v5).

ZagrożenieWektorOdpowiedź QubKey
Nieautoryzowany dostęp do plikuKradzież lub kopia .rkveySzyfrowanie AEAD + wyprowadzenie Argon2id
Eksfiltracja sieciowaPrzechwycenie w chmurze / MITMLocal-first: QubKey nie wysyła Twoich sekretów
Uszkodzenie danychAwaria podczas zapisuWalidowane commity append-only + odzyskiwanie przy starcie
Manipulacja sejfemRęczna modyfikacja plikuUwierzytelnianie AEAD na kompartment + sumy kontrolne
Obraz pamięci (nawigacja)Sejf otwarty, lista / podglądSekrety pozostają zaszyfrowane, dopóki ich nie wyświetlisz
Słabe hasło głównePróby offlineSkalibrowany Argon2id (~500 ms) + miernik entropii
Ponowne użycie hasłaWycieki na innych stronachPanel bezpieczeństwa (lokalne wykrywanie)
Wycieki ze schowkaKopiowanie sekretuLimit czasu schowka (30 s) + czyszczenie przy blokowaniu
Atak kanałem pobocznymTiming operacji kryptoImplementacje stałoczasowe (RustCrypto)

Najlepsze praktyki

Ten model obejmuje zagrożenia, które QubKey adresuje bezpośrednio przez swoją architekturę. Dla optymalnej ochrony połącz QubKey z najlepszymi praktykami systemowymi: włączone szyfrowanie dysku, aktualny system operacyjny i silne hasło główne.

Zintegrowana ochrona

ObszarJak QubKey chroni Twoje dane
Dane w spoczynkuAEAD (AES-256-GCM / XChaCha20), klucz Argon2id, osobne klucze na kompartment
Integralność sejfuWalidowane commity append-only, sumy kontrolne i atomowe zapisy
PoufnośćZero-knowledge: Twoje sekrety pozostają zaszyfrowane na urządzeniu
Opóźnione odszyfrowywanieLista i podgląd bez sekretów; wyświetlanie / kopiowanie tylko na żądanie
Wyprowadzenie kluczaSkalibrowany Argon2id (~500 ms, 64 MB) chroniący hasło główne
AplikacjaIzolowany rdzeń Rust, UI przez Tauri IPC, zeroization przy blokowaniu
Rozszerzenie przeglądarkiLokalne Native Messaging — rozszerzenie nigdy nie otrzymuje hasła głównego
SyncOpcjonalna zaszyfrowana synchronizacja wielourządzeniowa (chmura lub self-host) lub zaszyfrowany plik .rkvey (chmura, USB, NAS)

Architektura zaufania

Zero-knowledge

QubKey organizuje zaufanie na wielu uzupełniających się poziomach:

  1. Ty kontrolujesz dostęp — hasło główne i ewentualnie klucz odzyskiwania sterują dostępem do sejfu. QubKey nie może ich odczytać ani zresetować.

  2. Integracja z systemem — QubKey korzysta z bezpieczeństwa OS: uprawnienia plików, szyfrowanie dysku (FileVault, BitLocker, LUKS), bezpieczne magazyny (Keychain, Credential Manager) i izolacja procesów.

  3. Rozdzielenie Rust / UI — Cała kryptografia działa w rdzeniu Rust z bezpieczeństwem pamięci w czasie kompilacji. UI React komunikuje się przez Tauri IPC; WebView nie ma bezpośredniego dostępu do hasła głównego.

  4. Ostrożne zarządzanie pamięcią (v5) — Przy odblokowaniu odszyfrowywane są tylko nagłówek i indeks. Sekrety i załączniki pozostają zaszyfrowane do jawnej akcji (wyświetlenie, kopiowanie, pobranie). Przy blokowaniu: zeroization i pusty schowek.

  5. Rozszerzenie przeglądarki — Lokalne Native Messaging; rozszerzenie nigdy nie otrzymuje hasła głównego.

Funkcje ochronne

Automatyczne blokowanie

Sejf blokuje się po skonfigurowanym czasie bezczynności (domyślnie: 5 min.). Uruchamia zeroization i czyszczenie schowka.

Opóźnione odszyfrowywanie

Sekrety wpisu są odszyfrowywane tylko wtedy, gdy je wyświetlasz lub kopiujesz. Lista i podgląd nie pokazują chronionych pól.

Zeroization

Sekrety są usuwane z RAM przy blokowaniu (crate Rust zeroize); cache czyszczone, tylko efemeryczne odszyfrowywanie na żądanie.

Limit czasu schowka

Schowek jest automatycznie czyszczony po 30 sekundach. Konfigurowalne w ustawieniach sejfu.