I'm trying to implement the Attribute-Based Encryption (ABE) scheme described in the paper - Extended Proxy-Assisted Approach: Achieving Revocable Fine-Grained Encryption of Cloud Data (Yang et al.).
To summarize the scheme in my own words - it is a CP-ABE scheme where decryption of a ciphertext
c is performed in 2 stages - firstly, at the cloud server using the cloud server's
CS secret key
skcs together with a user-specific attribute-based proxy key
pxku - and secondly, on the user's machine using their secret key
The first stage is performed by the proxy decrypt algorithm
PxDec. From the paper:
PxDec(skcs , pxku , c) → v: The proxy decryption algorithm takes as input CS’s private key, skcs , a user’s proxy key, pxku , and a ciphertext, c, and outputs an intermediate value, v. The CS runs this algorithm to help a user, u, partially decrypt an encrypted record requested by the user with the corresponding proxy key.
The paper goes on to describe the construction of the
PxDec() algorithm and that is where I'm struggling with my understanding.
I've highlighted the problem section in the below excerpt, from the paper:
DecNd() operates on each node in the policy tree,
one by one, what is the meaning of the set S and from where does it originate?
Then, what exactly does the
(0) part mean in
Lastly, how does the recursive sub-routine
DecNd() differentiate between ANDs and ORs in the policy tree?
(It may help to know that my background is in software engineering rather than cryptography or mathematics.)