fentec-project / gofe Goto Github PK
View Code? Open in Web Editor NEWFunctional encryption library in Go
License: Apache License 2.0
Functional encryption library in Go
License: Apache License 2.0
like this
I saw on this website: https://asecuritysite.com/encryption/go_abe
Hi, sorry for open a issue to ask this, but I couldn't find other way to send a message to you. I would like to know if there is any construction in gofe
that allows the use of FE with authenticated encryption capabilities? For instance, one could use something like DDH-MAC
in a similar way that is done with AES?
cause, I find it hard to implement the KeyGen algorithm for paillier-based DMCFE described in ACK+19(Abdalla, Benhamouda, Kohlweiss, Waldner).
To implement it, we have to find a way to generate n random vectors v_i such that the sum of v_i is 0. And the v_i should be in Z_n^M. I suppose that we could use the DH key exchange just like in DDH-based DMCFE, and then hash Z_q^M to the Z_n^M, which may not be secure; otherwise, I don't know how to resolve it.
So, my question is: could we do it? And if you think about implementing the paillier-based DMCFE?
Thanks for this awesome library!
Is it possible to serialize keys to a file? I didn't find any info about serialization.
Thanks in advance!
Is there any implementation of CP-ABE encryption algorithm with MA‑CPABE with elliptic curve cryptography ? thanks
Hi,
I'm very familiar with go, but I had in to install the following dependencies to avoid errors:
bn256
pkg/errors
stretchr/testify/assert
The key attributes are ints today (gamma - https://github.com/fentec-project/gofe/blob/master/abe/fame.go#L231). This is a bit of a compatibility problem with existing data formats in software and is pretty restrictive :)
In my scenario, I want to pass UUID (a user can access multiple projects, each project already has a UUID, converting a 128 bit UUID to a 64-bit int would risk collision). It would seem useful to support a more generic data type such as a string (interface{} would force quite some work on reflection).
I've modified the code in my branch (which works all tests passes), but there are a few caveats.
RowToAttribI
(https://github.com/remiphilippe/gofe/blob/attrib-key-string/abe/policy.go#L38), added a format parameter (int or string, should really be a const but it was a test https://github.com/remiphilippe/gofe/blob/attrib-key-string/abe/policy.go#L53) and redefined the BooleanToMSP
per package (https://github.com/remiphilippe/gofe/blob/attrib-key-string/abe/gpsw/msp.go#L20 and https://github.com/remiphilippe/gofe/blob/attrib-key-string/abe/fame/msp.go#L20)All this means introducing a breaking change due to the package change.
I have the working changes here: https://github.com/remiphilippe/gofe/tree/attrib-key-string/abe let me know what you think and if that's something we could look at merging (in some shape or form)?
Hi everyone,
I'm one of the authors of the quadratic FE and the IP DMCFE papers you implement; glad to see they have attracted interest. My family name is actually Dufour Sans, not Sans, but most academic software has a hard time figuring it out. Could you please correct the citations and the acronyms? That'd be very much appreciated.
Cheers,
Edouard
Is there any implementation of CP-ABE encryption algorithm with hidden access policy? thanks
I followed the example given in the README file. I understood the Decrypt function returns the mod after executing decryption for number of Slots times. I am interested in how can I calculate intermediate values (c, OTPKey) defined in the Decrypt function. I put some debug logs in the function and checked the research paper but could not come up with formula.
Use following sample values.
X : [ 3 3 4 2 3 2]
Y : [ 1 2 1 1 0 1]
opt key: [ 2 3 1 4 2 3]
c0: 2
c1: 1
OTPKey 1
Could someone explain how c0, c1 and OTPKey can be calculated ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.