Šifrování a správa klíčů¶
Kryptografické standardy MazeVault a životní cyklus klíčů
Verze dokumentu: 1.0.0
Poslední aktualizace: 2026-10-28
1. Kryptografické standardy¶
Šifrování v klidu¶
| Účel | Algoritmus | Velikost klíče | Režim | Standard |
|---|---|---|---|---|
| Tajné hodnoty (Secrets) | AES-256-GCM | 256 bitů | Authenticated Encryption | NIST SP 800-38D |
| Data šifrovaná na straně klienta (v2) | AES-256-GCM | 256 bitů | Client-side Encryption | NIST SP 800-38D |
| Databázová pole | AES-256-GCM | 256 bitů | Na úrovni aplikace | NIST SP 800-38D |
| Záložní archivy | AES-256-GCM | 256 bitů | Symetrické | NIST SP 800-38D |
Výměna klíčů¶
| Účel | Algoritmus | Parametry | Standard |
|---|---|---|---|
| Agent ↔ Server | ECDH | Křivka P-256 | NIST SP 800-56A |
| mTLS | RSA-OAEP | SHA-256, 2048+ bitů | PKCS#1 v2.2 |
| Klíče relací | HKDF | SHA-256 | RFC 5869 |
| Autentizace heslem (API; webové rozhraní se přihlašuje heslem přes TLS) | SRP-6a | 2048bitová skupina | RFC 5054 |
Digitální podpisy¶
| Účel | Algoritmus | Velikost klíče | Standard |
|---|---|---|---|
| Podepisování JWT | RS256 | 2048bitový RSA | RFC 7518 |
| Podepisování certifikátů | RSA/ECDSA | 2048/4096 RSA, P-256/P-384 ECDSA | RFC 5280 |
| Podepisování OCSP odpovědí | RSA/ECDSA | 2048+ bitů | RFC 6960 |
| Podepisování kódu | RSA | 2048+ bitů | RFC 5652 |
Hašování¶
| Účel | Algoritmus | Standard |
|---|---|---|
| Ukládání hesel | bcrypt / Argon2id | — / RFC 9106 |
| Integrita dat | SHA-256 | FIPS 180-4 |
| Otisky certifikátů | SHA-256 | RFC 5280 |
2. Politika rotace klíčů¶
| Typ klíče | Interval rotace | Automatická | Poznámky |
|---|---|---|---|
| Hlavní šifrovací klíč (Master) | Ročně | Ne | Vyžaduje plánované okno údržby |
| Šifrovací klíče tajných hodnot | 90 dní | Ano | Transparentní přešifrování |
| Podepisovací klíče JWT | Na vyžádání | Ano | Bezproblémový přechod klíčů |
| TLS certifikáty | Před expirací | Konfigurovatelné | Podporována automatická obnova |
| Certifikáty agentů | Ročně | Ano | Automatická obnova prostřednictvím bootstrap |
| API klíče | Dle politiky organizace | Ne | Doporučena ruční rotace každých 90 dní |
Proces rotace klíčů¶
graph LR
A["🔑 Generovat<br/>nový klíč"] --> B["🏦 Uložit do<br/>HSM / Vault"]
B --> C["🔄 Aktualizovat<br/>referenci klíče"]
C --> D["🔐 Přešifrovat data<br/>(na pozadí)"]
D --> E["✅ Ověřit<br/>integritu"]
E --> F["📦 Archivovat<br/>starý klíč"]
F --> G["🗑️ Smazat starý klíč<br/>(po retenční lhůtě)"]
classDef generate fill:#EBF5FB,stroke:#2196F3,stroke-width:2px,color:#1565C0
classDef store fill:#E8EAF6,stroke:#3F51B5,stroke-width:2px,color:#283593
classDef process fill:#FFF8E1,stroke:#FF9800,stroke-width:2px,color:#E65100
classDef verify fill:#E8F5E9,stroke:#4CAF50,stroke-width:2px,color:#2E7D32
classDef archive fill:#F5F5F5,stroke:#9E9E9E,stroke-width:2px,color:#424242
classDef delete fill:#FFEBEE,stroke:#F44336,stroke-width:2px,color:#C62828
class A generate
class B store
class C,D process
class E verify
class F archive
class G delete
Rotace hlavního klíče
Rotace hlavního šifrovacího klíče vyžaduje plánované okno údržby. Veškerá šifrovaná data musí být přešifrována novým klíčem. Kontaktujte podporu MazeVault ohledně postupu rotace.
3. Úložiště klíčů¶
Podporované backendy pro úložiště klíčů¶
| Backend | Popis | Licenční úroveň |
|---|---|---|
| Software (lokální) | Šifrovaný soubor klíčů na disku | Všechny |
| Azure Key Vault | Klíče spravované Azure — HSM nebo softwarové | Enterprise |
| Azure Managed HSM | Certifikace FIPS 140-2 Level 3 | Enterprise |
| AWS CloudHSM | Certifikace FIPS 140-2 Level 3 | Enterprise |
| Google Cloud HSM | Certifikace FIPS 140-2 Level 3 | Enterprise |
| PKCS#11 (on-premise HSM) | Thales Luna, Utimaco, nCipher | Enterprise |
Hierarchie klíčů¶
graph TB
MK["🏦 Hlavní klíč<br/>(HSM / Key Vault)"]
DEK1["🔐 DEK 1<br/>Tajné hodnoty"]
DEK2["📜 DEK 2<br/>Certifikáty"]
DEK3["🔗 DEK 3<br/>Relace"]
SK["✍️ Podepisovací klíč<br/>JWT / OCSP"]
MK --> DEK1
MK --> DEK2
MK --> DEK3
MK --> SK
classDef master fill:#E8EAF6,stroke:#3F51B5,stroke-width:3px,color:#1A237E
classDef dek fill:#E8F5E9,stroke:#4CAF50,stroke-width:2px,color:#2E7D32
classDef signing fill:#FFF8E1,stroke:#FF9800,stroke-width:2px,color:#E65100
class MK master
class DEK1,DEK2,DEK3 dek
class SK signing
Hierarchie klíčů využívá vzor envelope encryption (obálkového šifrování):
- Hlavní klíč (Master Key) — Uložen v HSM nebo Key Vault; nikdy neopustí bezpečnou hranici
- Datové šifrovací klíče (DEK) — Generovány pro každý účel; šifrovány hlavním klíčem
- Klíče pro jednotlivé záznamy — Volitelně generovány pro každý secret pro maximální izolaci
4. Šifrování na straně klienta (data v2)¶
Webové rozhraní umí v prohlížeči šifrovat názvy a hodnoty tajemství dat v2 klíčem odvozeným z hesla lokálního přihlášení uživatele. Jde o šifrování na straně klienta, které zatím není návrhem zero-knowledge. Dnes platí:
- Webové rozhraní se přihlašuje heslem (ne SRP), takže server heslo při přihlášení vidí a mohl by odvodit stejný klíč. Platforma proto nezaručuje, že nikdy nepřistupuje k otevřenému textu, a není pravda, že server nemůže dešifrovat.
- Klíč odvodí jen lokální přihlášení heslem. Uživatelé LDAP, Kerberos a SSO klíč nikdy nezískají.
- Klíč drží service worker prohlížeče, který může prohlížeč ukončit (absolutní životnost 2 hodiny). Poté se nezobrazí výzva k odemknutí: klíč se obnoví až příštím lokálním přihlášením heslem a obnovení stránky, které skončí na stránce změny hesla nebo prvotního nastavení, klíč neobnoví.
- Kontrolní hodnota klíče není skutečná kontrola, takže chybný klíč se nerozpozná.
- Změna hesla odvodí jiný klíč, takže dřívější data v2 už nelze dešifrovat, a po vynucené změně hesla se klíč znovu neodemyká.
- Webové rozhraní nevytváří ani nečte tajemství přes
/api/v2. Dešifruje jen názvy tajemství na přehledu a čte matici tajemství projektu (/api/v2/projects/{id}/secrets/matrix). - Gatewaye, agenti a rotace potřebují tajemství v otevřeném tvaru, takže na datech šifrovaných na straně klienta fungovat nemohou. Která data budou zero-knowledge, určí pozdější release.
Zamýšlený tok šifrování na straně klienta:
sequenceDiagram
participant U as 🧑💻 Uživatel (Prohlížeč)
participant S as 🖥️ MazeVault API
participant DB as 🗄️ Databáze
rect rgb(235, 245, 251)
Note over U: Šifrování na straně klienta
U->>U: Generovat symetrický klíč (PBKDF2)
U->>U: Šifrovat tajnou hodnotu (AES-256-GCM)
end
rect rgb(232, 245, 233)
Note over U,DB: Bezpečný přenos a uložení
U->>S: Odeslat šifrovaný ciphertext
S->>DB: Uložit ciphertext
end
Note over S: ⚠️ Ukládá jen ciphertext<br/>(viz omezení výše)
rect rgb(255, 248, 225)
Note over U,DB: Dešifrování (pouze klient)
U->>S: Požádat o tajnou hodnotu
S->>DB: Načíst ciphertext
S-->>U: Vrátit ciphertext
U->>U: Dešifrovat odvozeným klíčem
end
Omezení šifrování na straně klienta
U dat v2 šifrovaných na straně klienta nejsou dostupné funkce na straně serveru, jako je rotace tajných hodnot, vyhledávání a sdílení, protože server klíč nedrží. Pro všechna ostatní tajemství rotace, vyhledávání i sdílení fungují. Tento režim je určen pro případy použití osobního trezoru.
5. Konfigurace TLS¶
Podporované šifrovací sady (TLS 1.3)¶
| Šifrovací sada | Výměna klíčů | Šifrování | Hash |
|---|---|---|---|
| TLS_AES_256_GCM_SHA384 | ECDHE | AES-256-GCM | SHA-384 |
| TLS_AES_128_GCM_SHA256 | ECDHE | AES-128-GCM | SHA-256 |
| TLS_CHACHA20_POLY1305_SHA256 | ECDHE | ChaCha20-Poly1305 | SHA-256 |
Podporované šifrovací sady (TLS 1.2 — zpětná kompatibilita)¶
| Šifrovací sada | Výměna klíčů | Šifrování | Hash |
|---|---|---|---|
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ECDHE-RSA | AES-256-GCM | SHA-384 |
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ECDHE-RSA | AES-128-GCM | SHA-256 |
| TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ECDHE-ECDSA | AES-256-GCM | SHA-384 |
Zastaralé protokoly
SSL 3.0, TLS 1.0 a TLS 1.1 nejsou podporovány. Šifrovací sady v režimu CBC jsou zakázány.
Související¶
- Přehled bezpečnosti — Bezpečnostní architektura
- Matice shody — Soulad s regulatorními rámci
- Konfigurace TLS — Nastavení TLS při nasazení