Privacy from nosy signatories #37
Replies: 12 comments 26 replies
-
Beta Was this translation helpful? Give feedback.
-
@Rspigler I'm following #6 but I figured this proposal was a little more broad and would benefit from a more focused discussion. Since nobody wants to discuss it, how about I simplify the proposal down to the one essential item:
|
Beta Was this translation helpful? Give feedback.
-
I’m actually inclined a bit differently — Leverage bytewords to covert a full xpub as used in a Bitcoin wallet descriptor (e.g.[fingerprint/path’/to/xpub…]) to text, and the xprv equivalent, as compactly as possible. This also means the derived keys can also be converted to Shamir sskr shares as well. Full xpub -> binary -> UR cobj-> bytewords /cc @wolfmcnally |
Beta Was this translation helpful? Give feedback.
-
My concern with SSS is it is notoriously hard to implement, and there have been a number of historical vulnerabilities. |
Beta Was this translation helpful? Give feedback.
-
@Rspigler wrote:
Which is why Blockchain Commons worked so hard with others (Unchained Capital, Satoshi Labs, HTC Exodus, Mark Friedenbach, Bryan Bishop, Daan Sprenkels, etc.) over the course of over a year including two in-person events (RWOT9 and 10) on the sskr specification and it's reference code:
So as you can see, substantial work has been done to address the past concerns about Shamir. |
Beta Was this translation helpful? Give feedback.
-
Wow, that is a lot of great work, thank you! What development phase would you say the Shamir libraries are in? (It's not noted in the How would one split an Account Map into shares? Account Map -> x -> Bytewords - > Shamir? |
Beta Was this translation helpful? Give feedback.
-
@bitcoinhodler I like this a lot! (Apologies for initially disregarding it :) ) With BIP39 concerns, could you use bytewords instead? Not sure how they handle encryption though. |
Beta Was this translation helpful? Give feedback.
-
Yes, exactly: watching is now M-of-N. This doesn't apply when seedless hardware wallets are used. But if you store seed phrases on paper, either for use with stateless hardware or as a backup of the HWW, then this will solve the privacy concern. So you don't want to use BIP39 at all, but instead store the xprv directly (encoded using bytewords)? BIP39 includes the password as part of its spec. Bytewords has no equivalent, so you'd have to specify some other way of encrypting the xprv using a password. I'm not an expert in that field but it seems like any standard/common (block? stream?) cipher would work. This proposal could be easily adapted for that. |
Beta Was this translation helpful? Give feedback.
-
Yeah so I'm also thinking of the case where users are just using Core (instead of HWWs). In that case, I believe bytewords could be used to encode the hdseeds, and I really like how Blockchain Commons selected their alphabet. |
Beta Was this translation helpful? Give feedback.
-
I propose an alternate approach, which has the following benefits over the above protocol:
Steps:
Note that the example that I give is only for nosy signatories, but it need not be so restrictive. The obvious next step of this scheme is to the then split the account map info (including most importantly the secret BIP32 path) using SSSS. It would be possible to use this protocol on all To make it more real, here is a working POC in simple python code: This is just research code that is the easiest way to convey the idea, I didn't bother with child accounts here (though it would be trivial) nor any of the SSSS parts (I'm just blinding 1 signatory only in this example so I assume it can be recovered from another more-secure location). This scheme was inspired by an earlier idea that was less generalizable to all signers. |
Beta Was this translation helpful? Give feedback.
-
Why not just use BSMS and then Blockchain Commons' SSS library on the descriptor record? |
Beta Was this translation helpful? Give feedback.
-
@Fonta1n3 had been working with some other wallet vendors on a way to share hash first set of addresses to enable address verification between network airgap & networked wallets. Both @Fonta1n3 & @wolfmcnally are implementing LifeHash for account maps, which requires a canonical hash, possibly useful here. There is also a form of degenerate Account Map called Policy Maps where all xpubs are removed. These can be used with crypto-request so that the airgap can know what kind of use the xpub will be used for before issuing, and balk if used in some other policy. Gordian Cosigner supports those as well with LifeHash. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Goal
If I give a friend or family member one of my multisig keys to store safely for me as an emergency backup, that person should be unable to find my balance or see my transaction activity.
Assumptions
If the key is in the form of a hardware wallet, which stores both the account map and the seed in a secure element, we can assume the nosy signatory will not be able to access it.
But I would also like to support stateless wallets, where the seed phrase is handwritten on paper and the account map is a printed QR code, which the user types in and scans (respectively) only at the time of signing.
It would also be useful to support printed backups, even with a HWW, in case the HWW dies or is damaged or destroyed.
Requirements
Proposal
The user will keep the unsharded account map, for his own use in the signing process, but will not provide it to other keyholders.
As part of the stateless wallet signing process, the user will provide the account map to the signing device, either via printed QR code or UR. The signing device will then use the BIP39 password corresponding to its key. (It can determine which one belongs to it by trying all N until it finds one that creates an xpub that matches one of the xpubs in the descriptor. Or perhaps all N keys can use the same password.)
Limitations & drawbacks
Beta Was this translation helpful? Give feedback.
All reactions