<aside> <img src="/icons/binoculars_blue.svg" alt="/icons/binoculars_blue.svg" width="40px" /> Introduction
</aside>
Technical Documentation
<aside> <img src="/icons/log-in_brown.svg" alt="/icons/log-in_brown.svg" width="40px" /> Getting Started
</aside>
<aside> <img src="/icons/translate_brown.svg" alt="/icons/translate_brown.svg" width="40px" /> How it works
</aside>
Testing program
<aside> <img src="/icons/confetti-party-popper_orange.svg" alt="/icons/confetti-party-popper_orange.svg" width="40px" /> How to Participate
</aside>
Additional information
<aside> <img src="/icons/thought-dialogue_pink.svg" alt="/icons/thought-dialogue_pink.svg" width="40px" /> FAQ
</aside>
<aside> <img src="/icons/document_pink.svg" alt="/icons/document_pink.svg" width="40px" /> Lite Paper
</aside>
Secrets Vault is an innovative solution that allows you to safeguard your secrets using an image that you provide. You can store this image anywhere you like, even openly on social media, and create as many copies as you want, all without the risk of compromising your information. Furthermore, you can share your secrets, either openly so anybody can see them, or by inviting your trusted third parties.
<aside> <img src="/icons/dialogue_brown.svg" alt="/icons/dialogue_brown.svg" width="40px" /> What is a secret? It's any digital information you want to securely back up: → My wallet seed phrase(s) → My password(s) → Some critical document → A picture of my seed phrase → A private picture → An audio message → …
</aside>
<aside> 🆔
Secrets Vault has also applications in identity and authentication management. These use cases are not covered in this documentation.
</aside>
At high level, these are the main components of Secrets Vault
graph TD
User[User] <--> Portal[Portal]
User <--> W1[Wallet 1]
User <--> Wn[Wallet n]
User <--> Dn[Dapp n]
Portal <--> SDK[Secrets Vault SDK]
W1 <--> SDK
Wn <--> SDK
Dn <--> SDK
SDK <--> Backend[Secrets Vault Backend]
The process to protect your secrets is straightforward for users, hiding the complexities behind the scenes:
sequenceDiagram
autonumber
actor User
participant App as Client Application
participant SSGApp as Secrets Vault SDK
participant SBUServ as Secrets Vault Backend
User ->> App: Provide authentication factor (e.g., web3 wallet, social login, email)
App ->> SBUServ: Validate authentication factor
SBUServ ->> App: Send authentication token
App ->> User: Request secret information and image
User ->> App: Provide secret information and image
App ->> SSGApp: Process secret information and image
SSGApp ->> SSGApp: Generate image key
SSGApp ->> SSGApp: Protect image key with custodian key
SSGApp ->> SBUServ: Send protected image key and secret ID
SBUServ ->> SBUServ: Validate and store protected image key
SBUServ ->> App: Confirmation of successful storage
App ->> User: Confirmation received, user can store/share image
The process to recover your secrets with Secrets Vault is straightforward for users, hiding the complexities behind the scenes:
sequenceDiagram
autonumber
actor User
participant App as Client Application
participant SSGApp as Secrets Vault SDK
participant SBUServ as Secrets Vault Backend
User ->> App: Provide authentication factor (e.g., web3 wallet, social login, email)
App ->> SBUServ: Validate authentication factor
SBUServ ->> App: Authentication token
App ->> User: Request secret ID and related image
User ->> App: Secret ID and image
App ->> SSGApp: Retrieve secret with secret ID from image
SSGApp ->> SBUServ: Provide protected image key of secret ID
SBUServ ->> SSGApp: Protected image key
SSGApp ->> SSGApp: Retrieve the secret information
SSGApp ->> App: Recovered secret information
App ->> User: Show the recovered secret information
Secrets Vault uses a combination of advanced cryptographic primitives to provide a reliable and secure mechanism for safeguarding your information. The main cryptographic protocols used are:
Multi-Party Computation (MPC) is a cryptographic protocol that enables multiple parties to jointly compute a function over their inputs while keeping those inputs private. In Secrets Vault, MPC is used to enhance the security of image keys protected by custodians, ensuring that no single custodian can compromise the custodied data.
Homomorphic Encryption (HE) is a form of encryption that allows computations to be performed on ciphertext, generating an encrypted result that, when decrypted, matches the result of operations performed on the plaintext. Secrets Vault uses Partially Homomorphic Encryption (PHE) to ensure that sensitive data can be processed without ever exposing the actual data, enhancing security and privacy. Fully Homomorphic Encryption (FHE) is also supported, but not implemented yet in production.
Zero-Knowledge Proofs (ZKP) are cryptographic methods that allow one party to prove to another that a statement is true without revealing any information beyond the validity of the statement itself. Secrets Vault employs ZKP to verify user authorship, data integrity, and proof of ownership without compromising user and secret privacy.
At Secrets Vault, we deliberately chose not to manipulate images to hide information, and therefore, our approach cannot be properly classified as steganography. Instead, we follow a visual cryptography approach—specifically, a secret-sharing scheme. In our method, images are not used as a container for hidden information, as in steganography. Rather, an image (the ‘Keepic’) serves as one of the essential shares in a cryptographic secret-sharing protocol used for protecting a secret.