I wanted to be able to split my keys using FROST, like https://frostsnap.com/, but without having to buy special devices, just using old phones, but I can't find any such software.
Does anyone know of any such a thing, before I try to write it myself?
Check out https://github.com/privkeyio/keep-android/ If you have any specific feedback or feature requests, happy to add them in!
This looks pretty cool, but I was looking for a Bitcoin cold storage setup instead
Keep does Bitcoin too, the Android app is just the phone side of it: https://github.com/privkeyio/keep
do you recommend it for a cold storage setup?
just one feedback:
it feels too big, full of features and nostr-specific functionality
I'm not sure where I would start using it
Not yet for real savings: pre-1.0 and unaudited. Try keep bitcoin on testnet first, ignoring the Nostr parts.
FROST on old phones is doable today without dedicated hardware, but you'll be assembling it from CLI parts rather than installing one polished app:
If you do write your own, build on the frost-core Rust crates instead of raw Schnorr - the DKG rounds and constant-time requirements are exactly where hand-rolled implementations get bitten.
Whatever you end up using, rehearse the whole threshold before funding: sign a small test spend with each t-of-n combination of phones, then wipe one phone and recover its share from backup. A threshold setup only helps if every share's backup and the details needed to rebuild the wallet (group public key, participant indexes, threshold) are stored as carefully as the shares themselves. Old phones also stop getting security updates, so keeping them offline and moving transactions to them as PSBTs, by QR or file, narrows what a compromised device can do.
If you end up building on existing code, check the ciphersuite. In the Zcash Foundation's FROST crates, plain
frost-secp256k1https://github.com/ZcashFoundation/frost/blob/0966bd1529aa062ad3b621af99e277f976b1c0f0/frost-secp256k1/README.md. For Bitcoin you needfrost-secp256k1-tr. The https://github.com/ZcashFoundation/frost/blob/0966bd1529aa062ad3b621af99e277f976b1c0f0/README.md#ncc-audit covered v0.6.0 of the other crates but not frost-secp256k1-tr.On Keep, linked above: the https://github.com/privkeyio/keep/blob/48ebaeaf1cc488dd64e3819978cfcda51eae32a1/README.md lists BIP-86 Taproot addresses, PSBT signing, wallet descriptor coordination and FROST DKG, with signing coordinated over Nostr relays. The https://github.com/privkeyio/keep-android/blob/c5936916408c3bdd44b2f9ace0521360ad42f5c8/README.md holds the shares and imports or exports them by QR or text. The same README says Keep is pre-1.0, its on-disk formats may change, and it has had no independent third-party audit yet.
Either way, the result is a single Taproot key. https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#multisignatures-and-threshold-signatures lists FROST among the schemes that work with it: any k of n signers can produce a valid signature, and fewer than k can't.