Zero-knowledge password manager: client-side cryptography, Walrus storage, on-chain integrity
ShadowVault is a zero-knowledge password vault that eliminates reliance on centralized managers. Instead of trusting a provider’s servers, ShadowVault ensures every encrypted backup is independently cryptographically verifiable. Secrets are encrypted client-side, bundled with zero-knowledge proofs (ZKPs), stored on Walrus, and their Merkle root is anchored on Zircuit.
The workflow is: Encrypt → Prove → Anchor → Verify.
Encrypt. Each credential is encrypted locally with AES-256-GCM. Keys are derived from the user’s wallet signature using HKDF and wrapped under a Master Key (MK). Plaintext never leaves the device.
Prove. A Noir ZKP is generated for each bundle proving:
Anchor. Encrypted bundles and proof objects are uploaded to Walrus, which returns immutable CIDs. The vault’s Merkle root (built over item commitments bound to those CIDs) is anchored on Zircuit by a lightweight VaultRegistry contract. Contracts and supporting cryptographic flows were authored and scaffolded using Nora Agent, reducing development time and improving correctness.
Verify. Anyone can fetch the Walrus bundle, recompute the Merkle root, validate the ZKP locally, and compare to the root anchored on Zircuit.
Why it matters. The LastPass 2022 breach highlighted how centralized vaults fail: metadata and encrypted vaults were leaked, and users had no cryptographic proof of integrity or freshness. ShadowVault closes that gap with decentralized storage, on-chain anchoring, and ZKPs. By leveraging Nora for contract authoring and encryption scaffolding, ShadowVault reached hackathon-ready deployment faster, freeing the team to focus on user-facing flows and cryptographic rigor. It shows password managers can evolve from “trust our servers” to “verify with math.”
End-to-End Flow.
Add credential → derive DEK → encrypt.
Generate Noir ZKP → bundle with ciphertext.
Upload bundle to Walrus → get CID.
Compute commitments and Merkle root → anchor on Zircuit.
Verification: fetch bundle from Walrus → recompute root + validate ZKP → compare to on-chain anchor.
Testing & Security.