-
Notifications
You must be signed in to change notification settings - Fork 104
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
Allow disabling greasing the joint via feature flag #365
base: main
Are you sure you want to change the base?
Conversation
I'd like to see if there's a way to make the grease more palatable before considering whether we merge this. I know that grease in non-interactive protocols like the age file format (particularly with a human-readable header in its binary format) is more likely to be seen by users than with interactive protocols like TLS, but I think there is a strong benefit in both protocol kinds to applying grease. I definitely agree that if we did merge this, it would be off by default.
The I'll note that I already considered and rejected using a
Because the age specification prohibits it:
IIRC @FiloSottile wants to extend the spec to allow other stanza types to have this property (to enable custom symmetric stanzas). If that is implemented, those stanzas would similarly be impossible (and unnecessary) to grease. |
A bit independent of your comments, it might be better to trigger the grease behaviour via My main argument to allow turning grease off remains: It's weird to find a recipient in data intended for interchange or long-term storage that "comes out of nowhere"; again, how does an auditor know this is not some backdoor to access the data. If the Finally... I'm somewhat wondering if having to grease at all here is a kind of design smell. If I understand the spec correctly, the first word after |
FWIW I'd be definitely happy with a age-grease spec in C2SP that explains the mechanism. If a parser goes out of its way to special case it and it's broken on multi-recipient files, there was no saving them. In fact, I am preparing some file introspection tooling where I plan to special case grease to avoid polluting the output, and the spec would help with that.
This is intentionally left implicit, and identities implementing their own "detect myself" logic is by design: it allows an identity to operate over recipient stanzas it doesn't "own" as well as apply logic based on stanzas it doesn't even know about. For example, the scrypt identity will reject files that have other non-scrypt recipients as that would break the authentication expectation. Finally, it doesn't ossify the stanza matching logic into whatever we implemented in age itself. |
This is going to interact with #403. In a 30-second chat with @FiloSottile we figured it will make sense to define grease as having an empty label set, so it doesn't ever get applied if labels are present. This would help the corp setting, but it might also be slightly annoying for e.g. the |
It's a little off-putting in actual use to find "weird" recipients in the stanza, and the only way to ensure there's no "backdoor" hiding there is verifying the code.
If you want to grease by default, why do the keys get greased but not the passphrases?
I also wasn't sure if you'd like
Cargo.lock
checked in with PRs or not.