GPG/WoT-like identities with LNP/BP #135
dr-orlovsky
started this conversation in
Ideas
Replies: 1 comment
-
Digital identity components:
LNP/BP identity certificate proves ownership of a public key. Public key may be created with different elliptic curves. The list of currently supported curves:
LNP/BP identity certificate is a bech32m-encoded string starting with crt HRP. It contains information about
The certificate may be also come with a three word mnemonic to ensure human-readable identity and verification of the data encoded in bech32 format regarding checksum mining attacks. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
For publishing RGB schema, smart contracts, assets etc we need to adopt some system for developer/issuers identity and signatures, which can be verified by the users and wallet devs against those identities. While we can leverage existing systems, they have a drawbacks with RGB and LNP/BP able to address them; thus I have started working on leveraging what RGB and LNP/BP can do.
RGB enables more advanced and decentralized WoT-like identity management, which could be better than PGP/GPG in at least two aspects:
At the same time RGB provides a standard way for working with identity metadata used by PGP/GPG: it may store names, photos etc in the metadata fields of the contract; it may link identities together and prove that links etc, so functionality added by RGB to the decentralized identities is clearly additive.
Before leveraging what RGB can give to a decentralized identity, there are things which can be improved with "pure" LNP/BP, without single-use-seals or RGB use. Specifically, we may start using secp256k1 keys derived from the wallet seed for identity and message signatures (this elliptic curve is not yet supported by PGP/GPG). While without full PGP/GPG key management (revocation, metadata, keyservers) using secp keys for identities/message sigs/encryption is not advisable, the perspective of leveraging RGB later provides a rationale to start adopting this curve for the decentralized identities already.
A good starting point can be an LNP/BP standard defining EC-based identities which can be used by RGB later.
It may support multiple elliptic curves, different signature schemes with each curve and multiple forms of encodings. Together, they constitute algorithm triple, like
secp256k1-bip340-xonly
. Initially I plan to support Secp246k1 and Edward25519 curves, Schnorr and Ed signatures.An identity is a certificate composed of a public key and a signature over the hash of the public key, proving ownership of the private key (to prevent fake identities). It can be bech32m-encoded using
crt
prefix and contain a guard (see https://github.com/orgs/LNP-BP/discussions/134), which represents a readable nym (or fingerprint) of the identity1.Signatures, created with identity certificate over certain message will also be represented as a bech32m strings, starting with
sig
prefix. The signature information must also contain a hashing algorithm used for committing to the message data.Examples:
LNP/BP identity certificate:
crt1qyghn0nx0muaewav2ksx99wwsu9swq5mlndjmn3gm9vl9q2mzmup0xrdgswg9ate53t5hvppkl2xjem0y2sg5r738s7jqdlk4jd49v72c4t0f7e3a2yup6xhldv4c35hf5ncvas3r8ulwf4xx3ynqy3vwsc37avgyrl_game_accent_candle
Fingerprint (identity name):
8wdwat_game_accent_candle
Certificate data (printed out like with GPG):
Signature:
sig1qgq3z7kp70wmjtjn2p0rvh4ahpky6j3yvzyezqzs60rwgdc7asnx55y4r2y5m4dfqpp2x9vg08epdmpw38jey4mkagnc2f09qhl87n0mh5usxaxp9j
Reference implementation
I already created a draft PR implementing most of the proposal: LNP-BP/rust-lnpbp#223
Footnotes
It is advised to extend the guard with the last 6 characters of the bech32 string (as shown in the sample) to protect from attackers which can mine for a key having the same CRC32 sum as some other key. ↩
Beta Was this translation helpful? Give feedback.
All reactions