As far as I can tell, this massively changes the user experience around the security properties of using Signal. For Signal chats, I have one of two options:
- Default behavior: I trust the Signal network to verify my contacts via SMS and notify me if the physical device changed, and I rely on my social connection with people to know if they're getting a new physical device (e.g., if someone says "I'm stranded in a foreign country and I need immediate help" from a new device when they have neither new phone plans nor travel plans, I'll be suspicious)
- More secure behavior: I verify safety numbers out of band, e.g., in person
Optionally, my contacts (or I) can make things more secure than SMS by adding a PIN.
This is great. This is not the level of security I'd need in order to commit treason against my government and win so the history books don't call it treason, of course. But it's a far higher level of security than letting Google / Facebook / AT&T / etc. see all my messages, and it remains usable. As a practical threat model, it's a very good level of security for attorney-client communications, labor organizing, etc.: it's easy to keep a bunch of folks who aren't crypto nerds reasonably secure and private against attackers who don't have a zero-day research team. If one of those non-technical folks loses their device, it's pretty easy to decide whether to let them back in.
With a non-custodial wallet, Signal is saying that your money doesn't work this way. It's protected by some other private key on your device completely unrelated to Signal.
First, what is that mechanism? The MobileCoin website https://www.mobilecoin.com/ says, as its very first feature: "Easy wallet recovery - Securely recover your wallet if you lose your phone, without trusting a provider with your private keys."
That sounds great! That sounds like it lines up with the Signal model, I think. How does it work? Do I need to hold on to a recovery key or something?
I see absolutely no information in the repo about how.
If Signal is going to implement a money-transfer mechanism, it feels to me like it should work like Signal - I should have a way to get back on board if I lose my device. I should be encouraged to have some place I trust more than Signal (just like I'm encouraged to trust in-person conversations more than Signal), and I should be able to wire money out. Honestly, I think this matches Signal's practical threat model / use case: if I text a friend saying "Actually can you PayPal me at this new address" via Signal, they're generally going to do that, if it came from my Signal account. So there already isn't a particularly stronger way to safeguard money than the safeguards on Signal conversations itself.
Am I missing something in this reasoning? It seems like they adopted this design because it makes sense for a cryptocurrency, but it doesn't seem like it makes as much sense for a cash transfer mechanism within a chat app.