Skip to main content

Key Share Backup

Requesting a backup allows you to obtain a copy of all your wallet's private keys and have full control over your funds. You must take proper precautions to keep your backup and the encryption keys private; otherwise, you will either be unable to recover your assets or lose access to all your funds. The personal key certificate on your phone is not needed, nor will it help assist you in recovering funds when using the backup.

Note that due to the potential security risks involved, as this provides a way to access the private keys of your organization outside of MPCVault, this feature is currently offered only for business and enterprise customers. Once you complete the upgrade, please email our team to initiate the process.

How does key backup workโ€‹

MPCVault uses key derivation to generate wallets; once you export the root keys, you will be able to calculate the private keys for all addresses generated both before and after the export, as long as the key types (ECC_ED25519 and ECC_SECP256K1) have been backed up.

backup

We will provide you with a script to help with the recovery process.

MPCVault employs a 3-of-3 configuration for the multi-party computation setup. A naive approach to exporting the keys would be to give you the three key shares directly, but this poses several problems:

  1. Everyone involved in the backup process would be able to see the values and, therefore, could recover all your wallets and, by extension, your assets.

  2. It is difficult for you to establish internal controls such as a 3-of-5 recovery since everyone involved with the key backup process will know the values of the key shares.

Therefore, we will ask you to generate three Ed25519 keys on your side, and we will encrypt the key shares using the three public keys. Since we do not know the private key shares, neither we nor anyone who just saw the exported encrypted keys will know how to decrypt the values. The process is performed in a multi-party manner and MPCVault has no visibility of your key share in the process.

Then, we will return to you the backup package, which is a file that contains the three root shares. These shares are encrypted using the provided public keys, along with other necessary public information needed to calculate your private keys, such as the chaincode.

backup

A step-by-step guideโ€‹

Every backup request must be created manually by your account manager. Please contact your account manager if you would like to access this feature.

First, you need to generate three ed25519 public keys. The easiest way to do this is by using the terminal and following these commands:

  1. Open your terminal.
  2. Paste the following text, replacing the key name:
    ssh-keygen -t ed25519 -C "[key_name]"
  3. Choose a location to save the public and private keys.
  4. Set a password when prompted, if you wish to.
  5. Save the private key and keep it secure. Also, make sure to remember the password. You will need the private key and the password when recovering your assets.
  6. Contents of the public key should look like this:
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK0wmN/Cr3JXqmLW7u+g9pTh+wyqDHpSQEIQczXkVx9q backup-key-1
    Your public key is AAAAC3NzaC1lZDI1NTE5AAAAIK0wmN/Cr3JXqmLW7u+g9pTh+wyqDHpSQEIQczXkVx9q
  7. Repeat this process three times to generate three unique keys. Alternatively, three different people can generate three different key shares to avoid any single individual having access to the full contents of the key.

Please provide your account manager with the three public keys. You will then receive a key share backup signing request on your phone. All current admins in your organization must approve the request before the key shares can be exported via a multi-party computation process.

Backup packageโ€‹

The backup package looks like the following:

{
"version": "1.0",
"exported_key_shares": [
{
"key_id": "1a6bd986-aea3-47dd-9486-db4f42835599",
"org_id": "617c0325-1223-4c59-97d7-f44fd1188b4f",
"key_type": "KEY_TYPE_ECC_ED25519",
"chaincode": "diLn5mFhQmNuC3mLXHSnk3mhkiv4c102OfyJilPBSOY=",
"encryption_pubkeys": [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPYXt2yGRW+ownNRH1f1Q2oGgewTxmVYehbrrjzqytMu",
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBvsnVgHhbqUaD+xkkBF007E3YrESufbv2TB10e71+kk",
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB0jeVUSmh17yVfBtsXdq5cxTqXlnHwwmXUjxqPMOx2v"
],
"encrypted_shares": [
"nodmyQ8hsNHeivE45yWoT+caWAHF4h56IswLtAaAhHWBj1SHTT8rFpQJ3ts9P7qhNuTaSpA1coI3fW0TsE77BE/r+KwzzmY0jI9mTTrRO1M8=",
"uXk5HS8TTpSuEZijhdvIxSYQFRFM+j+2L/7Ju23FYxUg0bcG0QaeGdOudxIE3zhajLx12IomR1JMEwq+hQOKtdaMpanYAbTfM2ZwxgKpXEjY=",
"N1Bz9F61hBkUHJByw8i4Uc2Og3EVThuQiYVmxHuqMrtZf0zYZyeUzHSvJzxPrUImhzcF4L7TM3iUVmkbZ3uKIeSVmvyXgHlEY+ZVXEkUlVj94="
]
},
{
"key_id": "d8489974-a87b-4e81-a363-ed1bff3359c8",
"org_id": "617c0325-1223-4c59-97d7-f44fd1188b4f",
"key_type": "KEY_TYPE_ECC_SECP256K1",
"chaincode": "z8/koYVGF3m4rZqaMzqgf0ZRksopKgPQbRasqvRbjiI=",
"encryption_pubkeys": [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPYXt2yGRW+ownNRH1f1Q2oGgewTxmVYehbrrjzqytMu",
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBvsnVgHhbqUaD+xkkBF007E3YrESufbv2TB10e71+kk",
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB0jeVUSmh17yVfBtsXdq5cxTqXlnHwwmXUjxqPMOx2v"
],
"encrypted_shares": [
"a6PXeNis/BmSI9JZ7riKEwRd+C56fjRu5zVxQtJiKU/CJXsi9LPKkf6e0ow67vVxNEIU2pGy6rCts1rEH1yWD0ONXUBop01fmHtwdt/Q=",
"kudskDteKthLymwjs8Z+AC9nQRv/3XuvN4eocJEl9vmqS65fY5iiDYy8jlhrFwq+hQ51Gm9pwr9+3jGq/tgwzvaOgqxpk33r2HX3YLFlQ=",
"ROR2iRgUyvW5zwqCZHkC6rk/zbPe8aNB2na4PKA16PsRHNHjBABN5mfVxOZXXM9yUF9zm7Gldw5NWUjthpah9vFFGGEfFilBatBqIyny0="
]
}
],
"timestamp": 1707118991467
}

Inside exported_key_shares, each exported key is a JSON object and contains the ciphertext of all three key shares. The file alone cannot recover the private keys of your wallets. The ed25519 private keys that you generated when you created the backup are needed to decrypt the encrypted values. Make sure to keep this file private and create redundant copies.

We DO NOT recommend splitting this file among multiple people to control access. This ciphertext file should be backed up redundantly by multiple people. Any security or recovery mechanism that you want to devise should strictly focus on encryption key generation, including but not limited to the use of Shamir security key-sharing schemes.

Recovery processโ€‹

To recover the key shares, you will need:

  • The backup package file as shown above.
  • The three private key files correspond to the public keys that you sent to MPCVault when exporting the key shares.
  • The passwords for the three private keys (if passwords are set).
  • The recovery program, which can be obtained by contacting your account manager.