1

My plan is to make a multisig between coldcard and trezor. I want to audit and verify that I indeed own the 2 keys of these wallets, using a raspberry pi zero (no wifi/bluetooth by definition) on a very old HDMI tv with no internet either, and using a virtual keyboard and simply a mouse on the pi zero.

These are the possible risks I want to mitigate:

  • The wallets can have a malicious random number generator.

  • The wallets can generate address for keys that are not mine

To eliminate the risk of the trezor generating a private key I don't own, I'm gonna put its key on the raspberry pi zero and see that it generates the same master pubkey and shown in trezor. This proves I own this key, but it might be a kew that someone already owns. No problem, that's why I'm doing multisig.

On the coldcard, I'll generate a seed using dices, and then verify on the raspberry pi that those dice rolls indeed generate the private key shown by coldcard. This proves that I own a private key that no one owns, because it was generated using dices.

Now that I have 2 private keys that I own, and at least one of them I'm the only owner, I can create a multisig wallet on Electrum or maybe BlueWallet. I'll annotate the first 10 addresses generated by the software wallet, and verify if they match on the coldcard and on the trezor. If the 3 show the same 10 set of addresses, I can consider these addresses safe for receiving Bitcoin.

I'll then receive some Bitcoin on one address, erase both wallets, restore them with the private keys, and then try to spend this Bitcoin, just to make sure I really owned the coins.

What are the possible problems I can encounter? Am I forgetting something important?

PS: I know that if the trezor has a malicious random number generator and it creates a private key that not only myself own, this is a privacy leak, but not a problem. And it's a privacy leak only when I spend from this address, revealing the public key on the blockchain.

I also plan to use just PBST air-gapped transactions on Coldcard, and a trusted computer to broadcast.

1
  • I have edited one thing based on my assumption. You can rollback if it's incorrect. – Prayank Apr 12 at 10:14
0

The wallets can have a malicious random number generator.

There are several ways to be malicious. Typically random number generators are considered malicious when they are somehow predictable, so if you use them someone else can guess your "random number".

But that doesn't seem like what your plan protects you from.

What you verify with your procedure is that your hardware wallet do not give you a different seed (when you do the initial setup or ask to export it) from the one it used to generate the private keys and related addresses, that it uses when you receive or send funds with him. In this meaning, the seed (from which private and public keys are derived in HD wallets) would not be yours but belong only to your hardware wallet: you can receive and send using the device, but if you import the seed elsewhere there are no associated funds, because it's different from the one used by Trezor.
However I have never heard of such a problem on any hardware wallet.

The wallets can generate address for keys that are not mine

This don't make sense to me, public addresses are derived from private keys, so the wallet need to have the private keys to generate addresses ... i'm not sure what you mean.

Furthermore, you can't verify that you are the sole owner of a seed or a private key, the most you can do is make sure that this does not leak out, but if somehow someone manages to copy, predict or generate it randomly, you can't notice until the money goes away.

So, all things considered, I think you can avoid having to verify the seeds that your wallets give you, because this adds practically nothing to the security you already have using multisig addresses with 2 hardware wallets evaluated as Trezor and Coldwallet, that are already heavily scrutinized, as you can see here for example.


PS: I know that if the trezor has a malicious random number generator and it creates a private key that not only myself own, this is a privacy leak, but not a problem. And it's a privacy leak only when I spend from this address, revealing the public key on the blockchain.

I'm not aware of troubles with Trezor rng (have you any reference for this?), but if your private keys are leaked you will lose your funds almost istantly, there is no need to wait you spend, as said before, public key and addresses derive from private key, so if you have this you don't need anything else

7
  • Yes but in the coldcard I'll generate my seed using dices, so I can be sure it's mine. I'll verify in a raspberry that the dices indeed generate that seed – Gatonito Apr 20 at 20:52
  • how private keys cannot be your? if a wallet can generate an address it must have its private key... seems to me you have some misconceptions, can you provide any links to which threat you try to prevent? – leevancleef Apr 20 at 21:19
  • I think the question assumes that firmware running in Hardware Wallet can actively try to display a different address than the one associated with the private key. – sanket1729 Apr 20 at 21:23
  • So if you have 2 wallets that generate different addresses for the same seed how do you know which is the correct one? there is no easy way to have consensus on which address is right if you don't trust your wallet and you can't read the code. – leevancleef Apr 20 at 21:50
  • The reason because hardware wallet show address on its own display is exactly to avoid address tamper on an external software, but you need to trust at least your HW firmware and to do it, you are given the source code and its sign. – leevancleef Apr 20 at 21:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.