pyUmbral/README.rst

99 lines
2.7 KiB
ReStructuredText
Raw Normal View History

.. role:: bash(code)
:language: bash
=========
2018-02-16 19:27:36 +00:00
pyUmbral
=========
.. image:: https://travis-ci.org/nucypher/pyUmbral.svg?branch=master
:target: https://travis-ci.org/nucypher/pyUmbral
2018-02-16 19:27:36 +00:00
pyUmbral is a python implementation of Umbral using OpenSSL and Cryptography.io,
enabling users to perform *split-key proxy-rencryption* and public key encryption
in an understandable and usable manner.
2018-02-16 19:27:36 +00:00
**Public Key Encryption**
2018-02-16 19:27:36 +00:00
.. code-block:: python
2018-02-16 19:27:36 +00:00
from umbral import umbral, keys
# Generate umbral keys for Alice.
alices_private_key = keys.UmbralPrivateKey.gen_key()
alices_public_key = private_key.get_pubkey()
2018-02-16 19:27:36 +00:00
# Encrypt data with Alice's public key.
2018-02-16 19:27:36 +00:00
plaintext = b'Proxy Re-encryption is cool!'
ciphertext, capsule = umbral.encrypt(alices_public_key, plaintext)
# Decrypt data with Alice's private key.
cleartext = umbral.decrypt(capsule, alices_private_key,
ciphertext, alices_public_key)
**Generate Split Re-Encryption Keys**
.. code-block:: python
2018-02-16 19:27:36 +00:00
# Generate umbral keys for Bob.
bobs_private_key = keys.UmbralPrivateKey.gen_key()
bobs_public_key = private_key.get_pubkey()
# Generate split re-encryption keys with "M of N".
kfrags, _ = umbral.split_rekey(alices_private_key, bobs_public_key, 10, 20)
**Proxy Re-encryption**
.. code-block:: python
# Ursula exchanges key fragments with Bob.
# Bob attaches the cfrags to the capsule.
for kfrag in kfrags:
cfrag = umbral.reencrypt(kfrag, capsule)
capsule.attach_cfrag(cfrag)
2018-02-16 19:27:36 +00:00
# Bob activates and opens the capsule.
cleartext = umbral.decrypt(capsule, bobs_private_key,
ciphertext, alices_public_key)
2018-02-16 19:27:36 +00:00
Features
==========
- Proxy Re-encryption
- Threshold Proxy Re-encryption Key Splitting
- Data and Key Encapsulation
- Public Key Encryption & Decryption
Quick Installation
==================
2018-02-16 19:27:36 +00:00
The NuCypher team uses pipenv for managing pyUmbral's dependencies.
The recommended installation procedure is as follows:
.. code-block:: bash
2018-02-16 19:27:36 +00:00
$ sudo pip3 install pipenv
$ pipenv install
2018-02-16 19:27:36 +00:00
Post-installation, you can activate the project virtual enviorment
in your current terminal session by running :bash:`pipenv shell`.
2018-02-16 19:27:36 +00:00
For more information on pipenv, find the official documentation here: https://docs.pipenv.org/.
2018-02-16 19:27:36 +00:00
Technical Documentation
========================
"Umbral: A Threshold Proxy Re-Encryption Scheme"
by David Nuñez
Technical documentation and cryptographic specifications
are availible on GitHub https://github.com/nucypher/umbral-doc/blob/master/umbral-doc.pdf
2018-02-16 19:27:36 +00:00
Support & Contribute
=====================
2018-02-16 19:27:36 +00:00
- Issue Tracker: https://github.com/nucypher/pyUmbral/issues
- Source Code: https://github.com/nucypher/pyUmbral