diff --git a/landing/SeedPass_Chart.mmd b/landing/SeedPass_Chart.mmd new file mode 100644 index 0000000..9fc3e04 --- /dev/null +++ b/landing/SeedPass_Chart.mmd @@ -0,0 +1,46 @@ +--- +config: + layout: fixed + theme: neo-dark + look: classic +--- +flowchart TD + subgraph subGraph0["Local Storage"] + direction TB + V["Vault(password_manager.Vault)• encrypted index• config"] + end + subgraph subGraph1["Backup Pipeline"] + direction TB + BK1["Incremental Backups(BackupManager)"] + BK2["Portable Backup(portable_backup.py).json.enc"] + BK3["Nostr Snapshot(nostr.client)gzip chunks"] + end + subgraph Restore["Restore"] + direction TB + R1["Local Backup File"] + R2["Nostr Snapshot"] + R3["Portable Backup"] + R4["Vault Restore(Vault / BackupManager)"] + end + A["Parent Seed(BIP-39 Mnemonic)"] --> B["Seed Bytes(BIP-39 → 512-bit)"] + B --> C["BIP-85 Derivation(local_bip85.BIP85)"] + C --> D1["Password Entropy(password_generation)"] & D2["TOTP Secret(utils.key_derivation.derive_totp_secret)"] & D3["SSH Key Entropy(password_generation.derive_ssh_key)"] & D4["PGP Key Entropy(entry_management.add_pgp_key)"] & D5["Child Mnemonic(BIP-85 derive_mnemonic)"] & D6["Nostr Key Entropy(nostr.KeyManager)"] + D1 --> E1["Passwords"] + D2 --> E2["2FA Codes"] + D3 --> E3["SSH Key Pair"] + D4 --> E4["PGP Key"] + D5 --> E5["Seed Phrase"] + D6 --> E6["Nostr Keys(npub / nsec)"] + E1 --> V + E2 --> V + E3 --> V + E4 --> V + E5 --> V + E6 --> V + V --> BK1 & BK2 & BK3 + R1 --> R4 + R2 --> R4 + R3 --> R4 + R4 --> V + A -. "Same seed ⇒ re-derive any artifact on demand" .- E1 + A -.-> E2 & E3 & E4 & E5 & E6 diff --git a/landing/SeedPass_Chart.png b/landing/SeedPass_Chart.png new file mode 100644 index 0000000..fc24acd Binary files /dev/null and b/landing/SeedPass_Chart.png differ diff --git a/landing/SeedPass_Chart.svg b/landing/SeedPass_Chart.svg new file mode 100644 index 0000000..35077da --- /dev/null +++ b/landing/SeedPass_Chart.svg @@ -0,0 +1 @@ +RestoreBackup PipelineLocal StorageVault(password_manager.Vault)• encrypted index• configIncremental Backups(BackupManager)Portable Backup(portable_backup.py).json.encNostr Snapshot(nostr.client)gzip chunksLocal Backup FileNostr SnapshotPortable BackupVault Restore(Vault / BackupManager)Parent Seed(BIP-39 Mnemonic)Seed Bytes(BIP-39 → 512-bit)BIP-85 Derivation(local_bip85.BIP85)Password Entropy(password_generation)TOTP Secret(utils.key_derivation.derive_totp_secret)SSH Key Entropy(password_generation.derive_ssh_key)PGP Key Entropy(entry_management.add_pgp_key)Child Mnemonic(BIP-85 derive_mnemonic)Nostr Key Entropy(nostr.KeyManager)Passwords2FA CodesSSH Key PairPGP KeySeed PhraseNostr Keys(npub / nsec)Same seed ⇒ re-derive any artifact on demand \ No newline at end of file
Restore
Backup Pipeline
Local Storage
Vault(password_manager.Vault)• encrypted index• config
Incremental Backups(BackupManager)
Portable Backup(portable_backup.py).json.enc
Nostr Snapshot(nostr.client)gzip chunks
Local Backup File
Nostr Snapshot
Portable Backup
Vault Restore(Vault / BackupManager)
Parent Seed(BIP-39 Mnemonic)
Seed Bytes(BIP-39 → 512-bit)
BIP-85 Derivation(local_bip85.BIP85)
Password Entropy(password_generation)
TOTP Secret(utils.key_derivation.derive_totp_secret)
SSH Key Entropy(password_generation.derive_ssh_key)
PGP Key Entropy(entry_management.add_pgp_key)
Child Mnemonic(BIP-85 derive_mnemonic)
Nostr Key Entropy(nostr.KeyManager)
Passwords
2FA Codes
SSH Key Pair
PGP Key
Seed Phrase
Nostr Keys(npub / nsec)
Same seed ⇒ re-derive any artifact on demand