Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIP-100: Make witnessing optional + add CIP-08 message signing #757

Closed
Ryun1 opened this issue Jan 31, 2024 · 5 comments
Closed

CIP-100: Make witnessing optional + add CIP-08 message signing #757

Ryun1 opened this issue Jan 31, 2024 · 5 comments

Comments

@Ryun1
Copy link
Collaborator

Ryun1 commented Jan 31, 2024

  • Currently CIP-100 makes witnessing by authors required.
    • Enforcing this seems overkill and probably not required the the majority of governance metadata anchors, whereby the author is also very highly likely to be the submitter.
  • Currently CIP-100 only offers ED25519 signatures for witnessing
    • This makes sense but will make implementation with current wallet-dapp setups hard, as these only support the CIP-05 signing spec.
    • I think we should add the ability for CIP-05 message signing.

Thoughts?

cc: @Quantumplation @Crypto2099

@Quantumplation
Copy link
Contributor

Quantumplation commented Jan 31, 2024

I don't think we should make witnessing by the authors not required, as there a bunch of subtle attacks related to impersonation, and making it more difficult to verify the veracity of a document shouldn't be something we do IMO.

That being said, it is totally reasonable to leave the authors field an empty list if you don't want to sign it. You're just not making any claims about the authorship.

There's also nothing stopping the tooling / explorers to show a field for which cardano address (and/or ada handle) published the transaction on chain, so it's totally reasonable to show "This proposal has no explicit authors, but it was published on chain by $pi" for example.

As for ED25519, CIP-100 just offers a default, and even suggests that the standard will be extended by other mechanisms (DIDs, different curves, etc.); so, yes, if you wanted to add a new signing method, that'd be a new CIP to specify the vocabulary for interpreting that specification.

Though, I'm not sure what you mean by CIP-05, that seems to be a list of bech32 prefixes. I'll assume you meant CIP-0008. I don't initially see anything wrong with adding CIP-0008 support: embed the canonicalized form of the document inside a COSE envelope and then sign that envelope (or the hash of that envelope).

@Ryun1 Ryun1 changed the title CIP-100: Make witnessing optional + add CIP-05 message signing CIP-100: Make witnessing optional + add CIP-08 message signing Jan 31, 2024
@Ryun1
Copy link
Collaborator Author

Ryun1 commented Feb 1, 2024

That being said, it is totally reasonable to leave the authors field an empty list if you don't want to sign it. You're just not making any claims about the authorship.

For the majority of the anchors the transaction has to be signed with supporting author's credential. DRep registration, DRep update, CC resign and votes. In all of these cases I don't see how or why authorship cannot be implied from the transaction signature. The only application I can see where multiple authors could be applied is for governance action anchors.

Though, I'm not sure what you mean by CIP-05, that seems to be a list of bech32 prefixes. I'll assume you meant CIP-0008. I don't initially see anything wrong with adding CIP-0008 support: embed the canonicalized form of the document inside a COSE envelope and then sign that envelope (or the hash of that envelope).

yup my bad, I meant CIP-05. Without reusing CIP-05 signing here I think we will have to expect quite a lot of work on the behalf of wallet implementors.

@Quantumplation
Copy link
Contributor

@Ryun1 Sure, and so in that case I would suggest the authors field be empty, and it use only the on-chain signature as verification, and tooling can display the ada handle, etc.

But allowing you to leave off the signature leaves a level of indirection that is dangerous, IMO. It's another wrinkle to the spec that tooling authors have to think through and say "oh ok, if the signature is absent, I have to check that it matches the transaction that published it"; it means you also can't validate the veracity of a document with only the document itself, you must have access to the on-chain transaction it came from, etc.

yup my bad, I meant CIP-05

Heh, you mean CIP-08 😅 And yea, adding CIP-08 as an additional signing standard seems like a reasonable extension to me.

@Ryun1
Copy link
Collaborator Author

Ryun1 commented Feb 2, 2024

@Quantumplation
I really appreciate you taking the time here Pi 🙏

Sure, and so in that case I would suggest the authors field be empty, and it use only the on-chain signature as verification, and tooling can display the ada handle, etc.

Gotcha, I think this is what we will pursue for the first iteration of the governance tools we are building.

it means you also can't validate the veracity of a document with only the document itself, you must have access to the on-chain transaction it came from, etc.

this is a good point, but at the same time, the pub key and witness does really only gain value when the pub key's on-chain history is indexed.

Heh, you mean CIP-08 😅 And yea, adding CIP-08 as an additional signing standard seems like a reasonable extension to me.

😅

@Ryun1
Copy link
Collaborator Author

Ryun1 commented Feb 4, 2024

Closing as I have moved the outcomes of these discussions to #632

@Ryun1 Ryun1 closed this as completed Feb 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants