1*a26f1301SXin Li# An Implementation of Anonymous Counting Tokens. 2*a26f1301SXin Li 3*a26f1301SXin LiAn anonymous counting token (ACT) scheme allows Clients to obtain blind 4*a26f1301SXin Lisignatures or MACs (aka tokens) on messages of their choice, while at the same 5*a26f1301SXin Litime enabling Issuers to enforce rate limits on the number of tokens that a 6*a26f1301SXin Liclient can obtain for each message. Specifically, 7*a26f1301SXin Li 8*a26f1301SXin Li* Blind issuance: The Issuer doesn't see the message for which a token is 9*a26f1301SXin Li being requested 10*a26f1301SXin Li* Unlinkability: When the Client redeems a token, the token cannot be linked 11*a26f1301SXin Li to the issuance phase 12*a26f1301SXin Li* Throttled issuance on identical messages: The Issuer can detect if a 13*a26f1301SXin Li particular Client is requesting a token for a previously used message. 14*a26f1301SXin Li 15*a26f1301SXin LiThis repository implements a variant of the scheme described in [1], which is 16*a26f1301SXin Lisecure in the random oracle model under the q-DDHI assumption (in a cyclic 17*a26f1301SXin Ligroup) and the DCR assumption. The variant implemented here relaxes the proven 18*a26f1301SXin Lisoundness guarantee to the non-concurrent setting. It also assumes that the 19*a26f1301SXin Liserver generates its parameters correctly. Future versions will support server 20*a26f1301SXin Liproofs for correct parameter generation. 21*a26f1301SXin Li 22*a26f1301SXin LiThis implementation also supports batched token issuance. Batched token issuance 23*a26f1301SXin Lican have significant performance benefits as compared to individual token 24*a26f1301SXin Liissuance. 25*a26f1301SXin Li 26*a26f1301SXin Li> [[1] "Anonymous Counting Tokens." Fabrice Benhamouda, Mariana Raykova, Karn 27*a26f1301SXin Li> Seth.](https://eprint.iacr.org/2023/320) 28*a26f1301SXin Li 29*a26f1301SXin Li## Building/Running Tests 30*a26f1301SXin Li 31*a26f1301SXin LiThis repository requires Bazel. You can install Bazel by 32*a26f1301SXin Lifollowing the instructions for your platform on the 33*a26f1301SXin Li[Bazel website](https://docs.bazel.build/versions/master/install.html). 34*a26f1301SXin Li 35*a26f1301SXin LiOnce you have installed Bazel you can clone this repository and run all tests 36*a26f1301SXin Lithat are included by navigating into the root folder and running: 37*a26f1301SXin Li 38*a26f1301SXin Li```bash 39*a26f1301SXin Libazel test //... 40*a26f1301SXin Li``` 41*a26f1301SXin Li 42*a26f1301SXin Li 43*a26f1301SXin Li## Disclaimer 44*a26f1301SXin Li 45*a26f1301SXin LiThis is not an officially supported Google product. The code is provided as-is, 46*a26f1301SXin Liwith no guarantees of correctness or security.