Merge pull request #2833 from derekpierre/tmckf-diagram-updates

TreasureMapConKFrags docs updates (diagram and notes)
pull/2747/head
Derek Pierre 2021-12-20 13:44:54 -05:00 committed by GitHub
commit af58f703d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 9601 additions and 6765 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 489 KiB

After

Width:  |  Height:  |  Size: 556 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 458 KiB

After

Width:  |  Height:  |  Size: 562 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 432 KiB

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 626 KiB

After

Width:  |  Height:  |  Size: 712 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 272 KiB

After

Width:  |  Height:  |  Size: 374 KiB

View File

@ -40,9 +40,17 @@ When Alice wants to share this information with Bob, she can create a
policy in the NuCypher Network to grant access to him. To grant access to Bob, Alice must: policy in the NuCypher Network to grant access to him. To grant access to Bob, Alice must:
#. Create a re-encryption key based on the asymmetric private key and Bob's public key #. Create a re-encryption key based on the asymmetric private key and Bob's public key
#. Configure the conditions of the policy e.g. *expiration time, m-of-n threshold values* #. Determine `n` Ursulas from the NuCypher Network to use in the policy
#. Deploy the policy including associated fees to the blockchain #. Configure the conditions of the policy, e.g. *expiration time, m-of-n threshold values*
#. Deploy `n` policy arrangements, each containing a re-encryption key fragment, `kFrag`, to `n` nodes on the NuCypher Network #. Deploy the policy to the blockchain and escrow associated policy fees
#. Create a `treasure map`, encrypted for Bob that contains the list of `n` Ursulas in the policy,
and the `n` re-encryption key fragments (`kFrags`), each encrypted for a different Ursula in
the policy.
.. note::
Bob can decrypt the encrypted treasure map, but since each re-encryption fragment is encrypted
for a specific Ursula, Bob never has access to any re-encryption fragment in plaintext form.
Enrico::Encrypt Enrico::Encrypt
@ -70,20 +78,22 @@ Bob::Retrieve
When Bob wants to access the data, he must first obtain the encrypted data and `capsule` from encrypted storage. When Bob wants to access the data, he must first obtain the encrypted data and `capsule` from encrypted storage.
However, this data is currently encrypted and inaccessible to Bob. However, this data is currently encrypted and inaccessible to Bob.
In order to gain access, Bob must request re-encryption of the `capsule` by the `n` Ursulas that Alice previously To gain access, Bob must request re-encryption of the `capsule` by the `n` Ursulas that participated in the policy.
distributed `kFrags` to. Remember that when Alice granted access to Bob, she distributed `n` Remember that when Alice granted access to Bob, she created a `treasure map` that contained
`kFrags` of a re-encryption key for Bob to `n` Ursulas on the network. Therefore, Bob sends his `capsule` to `n` this list of `n` Ursulas in the policy, and the associated encrypted re-encryption key fragments (`kFrags`) for Bob to
Ursulas in the NuCypher Network that have a corresponding `kFrag` for that policy. Those Ursulas give to the Ursulas for the re-encryption operation. Therefore, Bob sends his `capsule` and the relevant encrypted
will use their `kFrag` to perform a partial re-encryption operation on the `capsule` and produce a corresponding `kFrag` to the various Ursulas in the NuCypher Network associated with the policy. Those Ursulas
ciphertext fragment, `cFrag`. In the same way a `kFrag` is a fragment of a key, a `cFrag` is a fragment of ciphertext. will decrypt the encrypted `kFrag` and use it to perform a partial re-encryption operation on the `capsule` to
The `cFrag` is returned to Bob, who collects `cFrags` until he obtains a threshold, `m`, number of `cFrags`. produce a corresponding ciphertext fragment, `cFrag`. In the same way a `kFrag` is a fragment of a key, a `cFrag`
Bob attaches `m` received `cFrags` to the original `capsule` to obtain the fully re-encrypted `capsule` that is now is a fragment of ciphertext. The `cFrag` is returned to Bob, who collects `cFrags` until he obtains a threshold, `m`,
encrypted under his public key. Note that the generation of a complete re-encrypted `capsule` is possible from a number of `cFrags`. Bob attaches `m` received `cFrags` to the original `capsule` to obtain the fully re-encrypted
smaller number of `cFrags` than the number of `kFrags` originally sent out to Ursulas (m-of-n threshold scheme). Bob `capsule` that is now encrypted under his public key. Note that the generation of a complete re-encrypted `capsule`
can now decrypt the `capsule` to obtain the symmetric key originally used to encrypt the bulk data. is possible from a smaller number of `cFrags` than the number of `kFrags` included in the `treasure map`
(m-of-n threshold scheme). Bob can now decrypt the `capsule` to obtain the symmetric key originally used to
encrypt the bulk data.
Once Bob has the symmetric key, he can use it to decrypt the bulk data. This process can be repeated as more data is Once Bob has the symmetric key, he can use it to decrypt the bulk data. This process can be repeated as more data is
shared with Bob that is associated with `label` for the policy. shared with Bob that is associated with the `label` for the policy.
Ultimately, because of the KEM/DEM approach, only the `capsule` needs to be re-encrypted for Bob. Ultimately, because of the KEM/DEM approach, only the `capsule` needs to be re-encrypted for Bob.
Subsequently, the size of the actual bulk data is irrelevant - whether 1KB or 1GB the re-encryption operation only Subsequently, the size of the actual bulk data is irrelevant - whether 1KB or 1GB the re-encryption operation only
@ -96,7 +106,7 @@ Ursula::Reencrypt
.. image:: ../.static/img/ursula_reencrypt.svg .. image:: ../.static/img/ursula_reencrypt.svg
:target: ../.static/img/ursula_reencrypt.svg :target: ../.static/img/ursula_reencrypt.svg
Having previously received a `kFrag` from Alice when the policy arrangement was issued, Ursula can now partially Having received an encrypted `kFrag` and a `capsule` from Bob as part of the re-encryption request,
re-encrypt data for Bob. Ursulas use their `kFrag` on the `capsule` provided by Bob and return a Ursula can now partially re-encrypt data for Bob. Ursulas decrypt the encrypted `kFrag` using their private key, and
corresponding `cFrag`. Bob will require `m` of these interactions with `m` different Ursulas to obtain a fully use it to perform a re-encryption operation on the `capsule` to return a corresponding `cFrag`. Bob will
re-encrypted `capsule`. require `m` of these interactions with `m` different Ursulas to obtain a fully re-encrypted `capsule`.

View File

@ -76,7 +76,7 @@ Glossary
The public key for a :term:`Character`'s signing key pair. The public key for a :term:`Character`'s signing key pair.
Treasure Map Treasure Map
The locations of :term:`Ursulas<Ursula>` that have the relevant :term:`kFrags<kFrag>` for a policy. :term:`Bob` will use the treasure map to determine which :term:`Ursulas<Ursula>` to contact to re-encrypt the data :term:`Alice` has shared with him. The locations of :term:`Ursulas<Ursula>` and associated encrypted :term:`kFrags<kFrag>` for a policy. :term:`Bob` will use the treasure map to determine which :term:`Ursulas<Ursula>` to contact to re-encrypt the data :term:`Alice` has shared with him.
Umbral Umbral
NuCypher's threshold proxy re-encryption scheme - it takes standard :term:`PRE` and increases security and performance. See Umbral_. NuCypher's threshold proxy re-encryption scheme - it takes standard :term:`PRE` and increases security and performance. See Umbral_.

View File

@ -21,11 +21,12 @@ How does NuCypher work?
anyone she wants by creating a policy and uploading it to anyone she wants by creating a policy and uploading it to
the NuCypher network. the NuCypher network.
2. A group of Ursulas, which are nodes on the NuCypher network, 2. Alice gets information about the group of ``n`` Ursulas associated
receive information about the policy, called a ``PolicyArrangement`` that include with the policy, which are nodes on the NuCypher network. Each Ursula provides their encrypting key, and Alice creates
a re-encryption key share. The Ursulas stand ready to re-encrypt data in exchange for payment ``n`` re-encryption key shares (:term:`kFrag`), each of which is encrypted with a different Ursula's encrypting key.
in fees and token rewards. Thanks to the use of proxy re-encryption, The Ursulas in the group stand ready to re-encrypt data in exchange for payment in fees and token rewards.
Ursulas and the storage layer never have access to Alice's plaintext data. The list of Ursulas and their associated encrypted re-encryption key shares are stored in a treasure map. Alice
subsequently encrypts the treasure map for Bob. The treasure map provides Bob the requisite information and cryptographic material to successfully request the NuCypher network to re-encrypt the data shared by Alice such that he can decrypt it with his private key.
3. Each policy created by Alice has an associated encryption key, which can be used 3. Each policy created by Alice has an associated encryption key, which can be used
by any entity (Enrico) to encrypt data on Alice's behalf. by any entity (Enrico) to encrypt data on Alice's behalf.
@ -35,15 +36,17 @@ data that belongs to her for example, a lab analyzing medical tests.
The resulting encrypted data can be uploaded to IPFS, Swarm, S3, The resulting encrypted data can be uploaded to IPFS, Swarm, S3,
or any other storage layer. or any other storage layer.
4. Bob, a data recipient, obtains the encrypted data from the storage layer and sends an access request 4. Bob, a data recipient, uses the treasure map to determine the list of Ursulas to contact and the associated
to the NuCypher network. If the policy is satisfied, the data is re-encrypted to his public key re-encryption key share to send to Ursula for the re-encryption operation. Bob obtains the encrypted data from the
and he can decrypt it with his private key. storage layer and sends a re-encryption request to the relevant Ursulas on the NuCypher network. If the policy is
satisfied, Ursula decrypts the provided re-encryption key share and re-encrypts the data to Bob's public key. Bob
can subsequently decrypt the data with his private key.
5. Ursulas earn fees and token rewards for performing 5. Ursulas earn fees and token rewards for being available to perform re-encryption operations.
re-encryption operations.
More detailed information: More detailed information:
- :ref:`character-concepts`
- GitHub https://www.github.com/nucypher/nucypher - GitHub https://www.github.com/nucypher/nucypher
- Website https://www.nucypher.com/ - Website https://www.nucypher.com/

View File

@ -0,0 +1 @@
Update documentation to reflect new TreasureMap con KFrags design.