Smart contracts on Internet Computer can issue encryption keys they cannot read
A canister on
@dfinity keeps its state in the clear on the replica, so node operators can read it even though the public cannot. vetKeys change that. A canister asks the subnet for a key, and a quorum of nodes derives and encrypts it under a transport key that the user generates fresh for that session.
A single node cannot derive the key, and the user can verify it came out of the protocol correctly and wasn't tampered with. Neither the nodes nor the canister ever hold the raw key.
The key is not stored anywhere. It gets rebuilt on demand from the same recipe every time. A user can sign in on a new phone but will get the same key back.
Cryptography doesn't decide who can ask for a key. The app does, in its own code, and each key request costs the app a small fee. It has been live on mainnet since July 2025