-
Notifications
You must be signed in to change notification settings - Fork 25
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
Roadmap #12
Comments
updated following the 2.0 merge #77 |
Has there been any update since 3.0? |
I have updated the roadmap. For a tl;dr:
|
don't hesitate to reach out if you have ideas / questions |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
After a few iterations on both cryptographic primitives and language designs, biscuit is in a phase of iterative improvements.
Biscuit is used in production in several places, the rust implementation now has a stable API and is used as the basis for other implementations (
biscuit-wasm
andbiscuit-python
).Biscuit blocks are versioned and this mechanism has allowed gradual introduction of new features without disrupting existing deployments. Features that are not part of token serialization and authorization are not versioned and remain under the responsibility of each implementation. This includes datalog parsing for instance.
This roadmap starts from biscuit v2, which is the minima version supported by libraries. Due to an issue in the initial release of biscuit v2, a breaking change update had to be released, so biscuit v2 corresponds to version 3 of blocks. In the roadmap, only block versions will be used (v3+).
Roadmap
Documentation
Support for v3 blocks
Support for v4 blocks
API support for third-party blocks
API support for snapshots
Integration with web frameworks
Rust
Javascript
Haskell
Upcoming features
reject if
(v5 blocks)Old roadmap
there's already been a lot of discussion around what the biscuit can be and how it could work, so it's probably a good time to sum things up and see what's needed.Roadmap
To get to a usable token implementation, here's what we would need now:
symmetric modeSemantics
With #6 and #8, along with some out of band discussions, we have a better idea of how attenuation should work:
Caveat language
We're evaluating a datalog like language to express the caveats. It is simple to implement and allows complex queries. It can also be used to generate the
authority
field in a compact way.We have been exploring example queries to get a feel for how it could work.
Cryptographic primitives
Asymmetric mode
We need to support our goals of a token that can be attenuated offline and verified in a decentralized way. To that end, we explored a few cryptographic systems:
All three of them would be usable, but we will need an audit of the schemes before deciding which one to go with.
Symmetric mode
It would be useful to have an alternative mode to transform a biscuit token to a symmetric construction, a bit like macaroons.
That mode is not well defined yet, but the idea would be to send an asymmetric token to the authentication service, which will check the token and its caveats, and create a new token with the same caveats, but using a symmetric mode, possibly with encryption.
At the cost of one RTT, we get a token that is much faster to check and can be fixed for requests to only one service (the one who knows the secret key).
The text was updated successfully, but these errors were encountered: