Hushkey is aimed for first-time crypto users who do not want to deal with private keys, and teams that require build scalable custody
Cross-chain, private custody as a service
Sign arbitrary transaction data without leaking private keys
Most web3 users eventually end up having to store many different private keys. "Private Key Managers" such as MetaMask are incomplete solutions because you cannot sign arbitrary data programmatically, even though they are convenient ways for humans to consolidate their private keys.
What it does
Hushkey is custody as a service, enabling dApp developers and especially crypto novices to sign blockchain transactions without their private keys ever being exposed to networks or leaving the server. The Hushkey servers generate a secure hierarchical deterministic wallet (implementing BIP32+44+39) for each unique user. The wallet is essentially a master seed phrase that we securely store. The generation of individual keys is deterministically derived from this master seed, so that users can recover their keys in case of wallet loss. Additionally, the private keys of the wallet should be organized under an access hierarchy. Each element of the hierarchy corresponds to a group of users and a pair of signing keys associated with them. The privileges of a group of users depend on their level in the hierarchy. Users with higher privileges should be able to derive the keys of users on lower levels and in turn to sign messages (i.e., transactions) on their behalf. Users on lower levels, however, should not be able to escalate their privileges to the higher levels of the hierarchy, not even when colluding with others. Finally, we add in features that enhance security and privacy for the user using AZTEC for disguising Ethereum transactions, whitelisting to restrict contract interactions with trusted addresses only, and transfer limits to reduce worst-case loss scenarios. End users can sign arbitrary blockchain transactions via the Hushkey API interface. Crucially, the only data that leaves the Hushkey server are signed transactions, not keys.
How we built it
Upon user signup, Hushkey generates a secure hierarchical deterministic wallet (implementing BIP32+44+39) for each unique user. The wallet is a master seed phrase that is securely stored, allowing for the deterministic generation of individual, recoverable keys for any number of accounts on any number of chains.
As a property of BIP32, derivation of private keys within a wallet is organized under an access hierarchy - put simply, a wallet with higher privileges can derive wallets (and thus initiate transactions) from a wallet lower in the hierarchy. Lower-leveled wallets, however, are unable to escalate privileges and sign transactions from a wallet higher in the derivation path.
Accomplishments that we're proud of
Leveraging AZTEC protocol's enhanced security and privacy for Ethereum transactions, users are able to both anonymize themselves and whitelist contract interactions with trusted IPs only.
TLDR; Users can sign arbitrary blockchain transactions via the Hushkey API interface. The only data that leaves the Hushkey server are signed transaction, not keys.