dabe_aw11

Decentralized Attribute-Based Encryption (AW11)

Authors: Allison Lewko, Brent Waters

Title: “Decentralizing Attribute-Based Encryption”
Published in: EUROCRYPT, 2011 (Appendix D)
Notes: Decentralized multi-authority ABE construction

Scheme Properties

  • Type: decentralized attribute-based encryption

  • Setting: Bilinear groups (asymmetric)

  • Assumption: Decisional Bilinear Diffie-Hellman

Implementation

Authors:

Gary Belvin

Date:

06/2011

class dabe_aw11.Dabe(groupObj)[source]

Bases: ABEncMultiAuth

Decentralized Attribute-Based Encryption by Lewko and Waters

>>> group = PairingGroup('SS512')
>>> dabe = Dabe(group)
>>> public_parameters = dabe.setup()
>>> auth_attrs= ['ONE', 'TWO', 'THREE', 'FOUR'] #setup an authority
>>> (master_secret_key, master_public_key) = dabe.authsetup(public_parameters, auth_attrs)

Setup a user and give him some keys

>>> ID, secret_keys = "bob", {}
>>> usr_attrs = ['THREE', 'ONE', 'TWO']
>>> for i in usr_attrs:  dabe.keygen(public_parameters, master_secret_key, i, ID, secret_keys)
>>> msg = group.random(GT)
>>> policy = '((one or three) and (TWO or FOUR))'
>>> cipher_text = dabe.encrypt(public_parameters, master_public_key, msg, policy)
>>> decrypted_msg = dabe.decrypt(public_parameters, secret_keys, cipher_text)
>>> decrypted_msg == msg
True
authsetup(GP, attributes)[source]

Authority Setup for a given set of attributes

decrypt(gp, sk, ct)[source]

Decrypt a ciphertext SK is the user’s private key dictionary {attr: { xxx , xxx }}

encrypt(gp, pk, M, policy_str)[source]

Encrypt

keygen(gp, sk, i, gid, pkey)[source]

Create a key for GID on attribute i belonging to authority sk sk is the private key for the releveant authority i is the attribute to give bob pkey is bob’s private key dictionary, to which the appropriate private key is added

setup()[source]

Global Setup

dabe_aw11.main()[source]