Zabezpečení
Jak je to postavené
Bez mlžení. Jestli něco níž zní jako slib místo mechanismu, zeptejte se na to.
Dovnitř jdou dvě tajemství
Odemčení stojí na hlavním hesle, které znáte jen vy a které se neukládá nikam, a na tajném klíči — 128 náhodných bitů vzniklých na prvním zařízení. Obojí jde do Argon2id se 64 MiB paměti, třemi průchody a čtyřmi pruhy, a ven vyjde odemykací klíč účtu.
Ta paměť není vycucaná z prstu. Je to strop, který se ještě vejde do zhruba 120 MB, kolik smí mít rozšíření pro vyplňování na iOS — změřeno, ne odhadnuto: asi desetina vteřiny na Macu s čipem M. Zvýšit se dá později bez přešifrování trezoru, překlíčuje se jen obálka kolem jednoho soukromého klíče.
Co ty klíče otevírají
Odemykací klíč otevře soukromý klíč účtu. Ten otevře klíč každého trezoru a klíčem trezoru se otevřou položky a přílohy, šifrované přes XChaCha20-Poly1305. Nic není zašifrované klíčem odvozeným rovnou z hesla — proto silnější heslo ani sdílený trezor neznamenají přešifrovat všechno.
Obsah položek se před zapečetěním doplňuje na násobky, aby délka šifrového textu říkala o obsahu co nejmíň.
Co je kde
- Vaše zařízení má celý trezor, zašifrovaný, v SQLite. A tajný klíč v systémové klíčence, označený tak, aby se nedostal na jiné zařízení.
- Server má zapečetěné bloby a u každé změny pořadové číslo. Žádné vaše heslo nemá: zařízení se hlásí podpisem Ed25519.
- Nikde není hlavní heslo. Odkaz na obnovu neexistuje, protože není proti čemu ho obnovovat.
Co z toho útočník má
| Když vezme | Co s tím zmůže |
|---|---|
| Celou databázi serveru | Přečte velikosti a časy. Hádat hlavní heslo offline nepřipadá v úvahu: chybí mu tajný klíč, který se na server nikdy nedostal. |
| Váš notebook zamčený | Přečte zašifrovaný soubor trezoru. Tajný klíč je v klíčence za účtem, do kterého jste přihlášení; hlavní heslo pořád chybí. |
| Váš notebook odemčený a trezor otevřený | Všechno. Tohle nepřežije žádný správce hesel a kdo tvrdí opak, něco prodává. |
| Samotnou nouzovou obálku | Nic použitelného. Tajný klíč je jen polovina vstupu. |
Kde je kód
Kryptografie je napsaná jednou, v Rustu, a ze všech platforem se volá přes UniFFI a C ABI — ne přepsaná pro každou zvlášť. Je to záměr: jedna plocha tak malá, že se dá přečíst celá, má větší cenu než pět, z nichž každá vypadá sama o sobě dobře.
Formát trezoru je popsaný a export vydá úplně všechno včetně tajemství ověřovacích kódů a příloh. Odejít musí být snadné, jinak je zbytek řeč.
Co zatím není pravda
SilentKey neprošel auditem od nikoho zvenčí. Je v plánu před verzí 1.0, ne po ní. Do té doby berte tuhle stránku jako popis záměru, který si můžete ověřit v kódu.
3. září 2026