Güvenlik

Şifreleme modeli

.rkvey v5 formatı: ön bilgi, bölme başına AEAD, append-only commit'ler ve gizli izolasyonu.

.rkvey v5 formatı (Rust Key Vault), HKDF ve AEAD en iyi uygulamalarına göre çok katmanlı bir şifreleme modeli uygular. Zihinsel model: ana parola → ana anahtar → alt anahtarlar → şifreli bölmeler.

Her giriş bölmelere ayrılır (meta veriler, korumalı sırlar, manifest ve ek dosyalar), her birinin kendi HKDF anahtarı vardır. Bir bölmenin çözülmesi diğerlerini açığa çıkarmaz.

QubKey v5 şifreleme modeli

Ana şifre

Kullanıcı girişi (UTF-8) — hiçbir zaman düz metin olarak saklanmaz

KDF

Argon2id

Tuz

16 bayt (giriş)

Hafıza

64MB

Yinelemeler

3

Paralellik

4

Çıkış

256 bit

Ana anahtar

256 bit · kasa kök anahtarı

HKDF-SHA256

bilgi = "hdr"

Başlık Anahtarı

başlık_anahtarı

HKDF-SHA256

bilgi = "idx"

Dizin Anahtarı

indeks_anahtarı

HKDF-SHA256

info = "bölme"

Bölme Anahtarı

bölme_anahtarı

Giriş başına (v5)

HKDF(ana_anahtar, salt=dosya∥entry_id, info=tür∥alt_id) → Bölme Anahtarı

Meta veriler
Sırlar
Avukat açık
AES-256-GCM

Şifreli bölmeler

Anahtar türetme

Türetme ana parolanızı kullanılabilir kriptografik anahtarlara dönüştürür. Argon2id kasıtlı olarak zaman ve bellek yoğundur (~500 ms, 64 MB) çevrimdışı hız sınırlarını zorlamak için. v5'te her giriş bölmesi ardından HKDF ile kendi anahtarını alır.

Kullanıcı girişi → ana parola (UTF-8)

Argon2id → rastgele salt ile master_key (256 bit)

HKDF-SHA256 → B-Tree için index_key

HKDF-SHA256 → giriş ve bölme türü başına compartment_key (meta veriler, sırlar, ek…)

ParametreDeğerAçıklamaVarsayılan
VariantArgon2idOWASP önerilen hibrit varyant — GPU ve yan kanal saldırılarına dayanıklı
Memory64 MBtüretme başına bellek — paralel saldırıların donanım maliyetini artırır65536 KB
Iterations3bellek üzerinde geçişler — güvenlik/performans (~500 ms)
Parallelism4paralel iş parçacıkları
Output32 bytestüretilen anahtar uzunluğu
Salt16 bytesön bilgide rastgele salt

AEAD şifreleme

AES-256-GCM (varsayılan)

  • modern işlemcilerde AES-NI donanım desteği
  • Nonce: 12 bayt, kimlik doğrulama etiketi: 16 bayt
  • teorik limit: anahtar başına ~64 GB şifreli veri

Ne zaman seçilir: AES donanım hızlandırmalı makineler, günlük kullanım.

Optimal performans için çoğu platformda varsayılan şifre.

XChaCha20-Poly1305 (isteğe bağlı)

  • genişletilmiş nonce: 24 bayt (ihmal edilebilir çakışma olasılığı)
  • donanım bağımlılığı yok — tüm CPU'larda tutarlı performans
  • uzun ömürlü anahtarlar için önerilir

Ne zaman seçilir: arşiv kasaları, AES-NI'siz makineler, ChaCha20 tercihi.

gelişmiş kasa ayarlarında etkinleştirilebilir.

Dosya yapısı

preamble
header.enc
btree_root.enc
btree_nodes.enc
core_meta.enc
protected_secrets.enc
attachment_manifest.enc
attachment_blob_*.enc
commit_N
footer (validated)

Yapı açıklaması (v5):

  • preamble — Magic Bytes, format sürümü, Argon2id salt
  • header.enc — şifreli kasa meta verileri (ad, oluşturma tarihi, ayarlar)
  • index/ — sırları çözmeden O(log-n) arama için şifreli B-Tree
  • compartments/ — türe göre AEAD blokları: meta veriler, korumalı sırlar, manifest, ekler
  • append/ — commit bölgesi: yeni bölmeler + dizin anlık görüntüsü + doğrulanmış footer

Bütünlük ve commit'ler

Dayanıklılık

Append-only commit'ler kesinti sırasında bütünlüğü garanti eder:

  1. Yeni bölmeler dosya sonuna eklenir
  2. Şifreli dizin anlık görüntüsü yazılır
  3. Veriler diske senkronize edilir (fsync)
  4. Doğrulanmış footer commit'i kapatır (tutarlılık noktası)

Gerçek senaryo: Bir girişi düzenliyorsunuz ve yazma sırasında elektrik kesiliyor. Yeniden başlatmada QubKey en son geçerli footer'ı bulur — veri kaybı yok, sessiz bozulma yok. Periyodik sıkıştırma çok eski alan biriktiğinde temiz bir dosya yazar.

Bölme başına izolasyon

HKDF-SHA256 ile her bölme, giriş kimliği ve bölme türüyle ana anahtardan türetilen kendi compartment_key'ini alır. Pratik sonuçlar:

  • Bir girişi görüntülemek yalnızca meta verileri çözer; sırlar açık gösterime kadar maskelenir
  • Ekler tek tek yüklenir (indirme / önizleme), kasa açıldığında değil
  • B-Tree dizini verilerden ayrı kendi index_key'ini kullanır
  • Bir sırrı değiştirmek değişmeyen ek dosyalarını zorunlu olarak yeniden yazmaz

Bu izolasyon .rkvey-v5 formatında yerleşiktir.

Kriptografik ilkel üzerine

İlkelKullanımKütüphane
Argon2idparola → anahtar türetmeargon2 (RustCrypto)
HKDF-SHA256anahtar → alt anahtar türetmehkdf (RustCrypto)
AES-256-GCMAEAD şifrelemeaes-gcm (RustCrypto)
XChaCha20-Poly1305AEAD şifreleme (alternatif)chacha20poly1305 (RustCrypto)
HMAC-SHA256dosya bütünlüğühmac (RustCrypto)
CSPRNGrastgele üretimgetrandom (OS)