Shamir's Secret Sharing
IS multi-sig. This is straight from the Bitcoin Wiki:
"Shamir's Secret Sharing Scheme (ssss) is a general software implementation of multisig."
(
https://en.bitcoin.it/wiki/Multisignature)
Someone needs to fix that Wiki page.
That's going to confuse a lot of beginners.
What are you referring to as "actual" multi-sig?
multisig = Multiple Signatures.
Shamir's Secret Sharing Scheme takes a "secret" (such as a private key) and splits it into pieces such that a subset of those pieces can be used to rebuild the original secret. However, if you build a typical P2PKH address (the addresses starting with a "1") then you still only need a SINGLE signature from that SINGLE private key that was split up.
A SINGLE SIGNATURE is NOT multisig.
On the other hand, if you generate multiple private keys, and then build a P2SH address (the addresses starting with a "3") where the redeem script requires signatures from m of n keys, then you have a situation where you need MULTIPLE signatures from MULTIPLE private keys.
MULTIPLE SIGNATURES IS "actual" multi-sig.
To clarify further, my current plan is to use Electrum and Ian Coleman's Bip39 JS as follows:
The one that you said "is still in development, and as far as I can tell, has
not been thoroughly tested enough to use"?
The one that Ian Coleman describes as:
"There are no alternative implementations, meaning you are totally dependent on this tool if you use it. That is a dangerous situation to be in."
1. Create four individual BIP39 12-word mnemonics offline.
Note: That isn't how Ian Coleman's system works.
He is generating a SINGLE mnemonic that represents a single xPriv and xPub. Then he is using Shamir's Secret Sharing to split that SINGLE xPriv into multiple values. Then he is converting each of those values to a mnemonic. If you try to use each of those mnemonics as a seed for a HD wallet, then they each effectively become an xPriv that can be rebuilt from access to ONLY the original SINGLE mnemonic that was split.
In other words, it all starts with a single xPriv and xPub. If that single xPriv is ever compromised, then it won't matter how many pieces you have. The thief doesn't need multiple pieces because he doesn't need to create multiple signatures. He just needs that one original xPriv.
2. Enter each mnemonic into Electrum and/or the BIP39 JS site, probably both just to confirm I'm getting the same output. For each individual mnemonic, I will copy the xpub output.
The xPub of the mnemonic from the split pieces is useless. You don't need them, and having them won't help you with anything. What you'd need (if you lost the mnemonics) is the values that the mnemonics were calculated from (The Secret Sharing pieces).
3. Using the four individual xpubs from each 12-word mnemonic, I will enter them into Electrum to create a 2-of-4 multi-sig wallet.
Whoa! Oh my. This is a horrible idea. It is also a piece that wasn't clear in your original post which is why I stated that you weren't using "actual" multisig. Your first post seemed to imply that you were going to use Secret Sharing to rebuild a single wallet from 2 of the mnemonics that you saved.
I mean it's
GREAT that you are using actual multi-sig here, but all the private keys are generated from
the same original private key. If that original secret is ever compromised, then you've lost all the protection of MultiSig.
You'd be MUCH better off just generating 4 RANDOM Electrum wallets offline. Store the Electrum mnemonics separately, and use Electrum to build a 2-of-4 multi-sig wallet. In that case, all you need to spend the bitcoins is any 2 of the 4 mnemonics that you saved. You don't need the xPriv (it can be rebuilt from the mnemonic), and you don't need the xPub (it can be rebuilt from the xPriv which can be rebuilt from the mnemonic). In this case, if any 1 of the xPriv or mnemonics are compromised, the transaction is still secure. This way there is no single source for generating 2 (or more) of the mnemonics.
Using Ian Coleman's Secret Sharing page is a completely unnecessary and very risky option for generating multiple mnemonics.
My intention is to be able to create an HD multi-sig wallet that requires 2-of-4 signatures to spend funds. I want to keep the four private keys in different locations, but be able to recover funds even if all but two of the seeds are lost.
There is absolutely no need to use Shamir's Secret Sharing to accomplish that. That is an extra complication that adds nothing to the security, and if implemented the way you are describing adds complexity while REDUCING security.
You'll be MUCH better off generating 4 RANDOM wallets offline, and then storing the 4 mnemonics separately. Use the 4 xPub values from the 4 RANDOMLY generated wallets to create your multi-sig wallet. Then you should be able to access the bitcoins with any 2 of the 4 mnemonics.