-
Notifications
You must be signed in to change notification settings - Fork 10
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
Why use asymmetric signatures? Why not macaroons? #24
Comments
In some scenarios the "third party" verifying a zcap's proof may be the issuer of the root capability. Consider a scenario where Alice delegates a capability to Bob, then Bob further delegates unto Carol. Alice would be unable to verify the signature on the B->C zcap if the scheme were based on HMACs unless Bob shares his secret with Alice. Consider this excerpt from the paper:
Section |
If Alice didn't mint the credential, why is she verifying Carol's capability to this unspecified service? Why doesn't Alice mint her own independent credential (copying all caveats) which is delegated along with the original? If Alice is a proxy and wants to restrict how Bob uses the capability, she may add 3rd party dispatch caveats such that neither Bob nor Carol may invoke the capability without her approval. |
Because in this scenario, Alice is the authorization server. The scenario is something like this:
Note the zcap in step 6 is never witnessed by Alice until Carol invokes the capability later on. When invoked, Alice can traverse the chain and verify that Carol's capability was signed with the 'controller' key for the vault (Bob's key). |
The issuer of the root capability is the first party, not a third. When Bob delegates his credentials for Alice to Carol, Alice remains the first party, Bob is the second, and Carol is the third. Neither Bob nor Carol need the ability to verify the credential. Carol receives fewer or equal rights than Bob possessed without additional communication with Alice.
This scenario is perfectly compatible with HMAC based credentials a la macaroons.
Alternatively the nonce may be independent to the vault ID and the corresponding map from nonce to vault ID is stored by Alice.
No asymmetric cryptography necessary. Note Alice and Bob share the "tag_0" as a secret key which, if Carol knew, she could de-attenuate her credential to recover Bob's full power. Bob stores the tag, whereas Alice recomputes it from her secret key and the public nonce. If instead you want to be able to delegate credentials over untrusted channels but do have trusted key exchanges, then you still don't need signatures, but do need (forward secure) encryption. |
Just sharing another link with some comparisons between zcaps and macaroons: https://github.com/WebOfTrustInfo/rwot5-boston/blob/master/draft-documents/lds-ocap/lds-ocap.md#macaroons |
Macaroons are substantially simpler. Why is ocap-ld using asymmetric signatures for delegation?
A quick skim over the mailing list archives indicates only praise of macaroons for their simplicity and flexibility, yet no reasons against them. Perhaps I missed something?
The only reason I can see is to allow non-interactive third party verification, but this implies either weaker revocation semantics or the requirement of some global state with consensus.
The text was updated successfully, but these errors were encountered: