Requirements for Gordian UR Signing & Auth Discussions #102
Replies: 0 comments 34 replies
-
Potential Requirement: Various options for partial failure. For instance, a constrained signing device should be able to respond "I can't parse that to hash it, but give me a hash of it with our session id (already authenticated and trust out-of-band) and I'll sign it. This is a common pattern with JavaCard devices. (if you like this requirement, upvote this post) |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: The controller (the secure element or device with private keys) fully trusts the verifier (the secure UX) out-of-band, and the controller has no state. In this case, the verifier gives the controller a hash, some sig hints (kind of sig, maybe contributes to nonce, and what master key ID and path. Or any key or any path) the controller returns the signature, key ID, path, and maybe a nonce exfiltration proof, or an error (It doesn’t have that key). |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: I'd like to see that a signing requests can optionally include Anti-Exfiltration[https://blog.blockstream.com/anti-exfil-stopping-key-exfiltration/] data, and that signed responses can optionally return proofs (which may be used in the future for other kinds of zk-proofs that the requests were properly performed). cc/ @apoelstra @jonasnick |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: The verifier (the trusted UX device, which may or may not have private keys, but does have trusted UX to user, and also can parse and hash) trusts a requesting device completely (out-of-band). The requestor sends something to sign, some key hints, maybe some metadata. The verifier parses what is being requested to sign, confirms with user to sign, hashes unsigned message, and either signs or passes the hash to a controller device to sign. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Ability for devices (controller, verifier, requester) to establish persistent TOFU (trust on first use) pairing with each other, and be able present that authentication in-band with requests. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirements: We need be able to handle key derivation hints where:
|
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Current request techniques only work for single-sig. It would be great to support BIP-322 signatures, or at least spec to future proof, such that any P2SH or more advanced style signature can also be requested. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Support requests for Schnorr signatures of the unsigned messages payload rather than a ECDH signature. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Possibly sign with with partial taproot tree? |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Compatibility option for signing old legacy bitcoin messages. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Some type of explicit "proof purpose", that verifiers with trusted UX can relay to users. for instance, i.e. sign a transaction, sign for an auth, sign for capability, etc. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Future proof to allow for requests like "sign a phase 1 FROST quorum initiation request", or "Use the key for a non-signature zk-proof that requires a private key". cc/ @jesseposner |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Simple uses cases should not require more than 1 round trip (request, response). |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Good error cases, including ability to resolve and continue previous session. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: When signing auths (or capabilities) there should be a requirement for TTL (time-to-live). However, many signers don't have a clock. How can we do that? Some (say the Proxy ring) the controller (the ring) doesn't have a clock, but the verifier does (a mobile phone). |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Most controller devices (have private keys) today have no or very limited state. Others have counters that can increment, or sessions ids, or can have a lot of state. We need to design for this range, and error out appropriately, or be able delegate to a higher trusted verifier device, when state is required. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Not all verifiers (may or may not have private keys) have network access. When validation of a transaction or other parsable messages requires network access to fully validate, but partial validation is possible, we need API and UX guidance as to what should be told the user or the requester. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: It should be possible to create request to participate a multisig, which means presentation of an public key to form a descriptor, which likely should signed by the private key to demonstrate possession of the private key. Likely optional nonces should also be incorporated, so that some device-in-the-middle attacks can be mitigated. |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Though there is not a desire to try to be compatible with Wallet Connect and current Sign-In with Ethereum, we would like to future proof in case other coins (in particular other UTXO-style coins like Monero or Chia) want to join in. Wallet Connect 2.0 tries to be both coin and chain agnostic |
Beta Was this translation helpful? Give feedback.
-
Potential Requirements: We have to avoid replay attacks, which requires special handing of nonces. |
Beta Was this translation helpful? Give feedback.
-
Our first virtual meeting on this topic will be this Friday, February 24, at 10am PT via Zoom If you are not already in the Signal group, you can invite yourself |
Beta Was this translation helpful? Give feedback.
-
Potential Requirement: Prevent key reuse, support key rotation. One of the biggest problems with Sign-In-With-Ethereum is that they use the same keys for everything. In there, with BIP-32, keys in Bitcoin are not reused. However, given experience with Lightning and multisig, public keys for nodes and xpubs for different multisig accounts are often persistent, and thus key reuse will be come more and more of a problem. Also, there is no way to rotate a Lightning node address. |
Beta Was this translation helpful? Give feedback.
-
Definitions
(feel free to incorporate at top level and delete this) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
This thread is for our initial discussion of requirements (and hopefully soon a straw-man proposal) for a QR/UR-based crypto-request, that is suitable and safe for purposes such as auth requests like sign-in-with-Bitcoin, signature requests for other kinds of messages, signing of hashes by constrained devices & silicon chips, and compatibility/update for specs for PSBT signing requests.
Beta Was this translation helpful? Give feedback.
All reactions