Added some text to go with diagrams for `Character Concepts`

Fixed typo in `Finnegan's wake` demo document
pull/1365/head
derekpierre 2019-09-27 11:07:21 -04:00
parent 131700974f
commit 007b26d2cf
4 changed files with 230 additions and 98 deletions

View File

@ -50,22 +50,6 @@
transform="matrix(-0.3,0,0,-0.3,0.69,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker5381"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Send"
inkscape:collect="always">
<path
inkscape:connector-curvature="0"
transform="matrix(-0.3,0,0,-0.3,0.69,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path5383" />
</marker>
<marker
inkscape:stockid="Arrow2Send"
orient="auto"
@ -625,9 +609,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.27242191"
inkscape:cx="300.15858"
inkscape:cy="539.85536"
inkscape:zoom="0.77052552"
inkscape:cx="1546.3873"
inkscape:cy="728.00567"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@ -1037,19 +1021,19 @@
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.25px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-1057.1515"
y="-645.11005"
y="-679.11005"
id="text9443"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="-1057.1515"
y="-645.11005"
y="-679.11005"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.50000381px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
id="tspan6246">Provide asymmetric</tspan><tspan
sodipodi:role="line"
x="-1057.1515"
y="-598.23505"
y="-632.23505"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.50000381px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
id="tspan4512">encryption key</tspan></text>
id="tspan4508">encryption key</tspan></text>
<text
sodipodi:linespacing="125%"
id="text9886"
@ -1078,23 +1062,12 @@
x="-490.62302"
y="-1596.1482"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.50000381px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
id="tspan11784">Issue policy to blockchain </tspan><tspan
id="tspan11784">Issue policy for Bob to blockchain </tspan><tspan
sodipodi:role="line"
x="-495.78659"
y="-1549.2732"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.50000381px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
id="tspan6267">and escrow policy fee</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-710.70984"
y="-629.20862"
id="text4433"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4435"
x="-710.70984"
y="-629.20862">s</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@ -1360,7 +1333,12 @@
sodipodi:role="line"
x="-827.84155"
y="-773.04553"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.50000381px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">Policy</tspan></text>
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.50000381px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">Policy</tspan><tspan
sodipodi:role="line"
x="-827.84155"
y="-726.17053"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.50000381px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
id="tspan4506">for Bob</tspan></text>
<rect
style="fill:#87e369;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect15122"
@ -1375,13 +1353,6 @@
width="80.757088"
id="rect15124"
style="fill:#0f7fd6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#2491c3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect15126"
width="80.757088"
height="80.757088"
x="140.45894"
y="-837.23962" />
<rect
y="-937.56036"
x="140.45894"
@ -1424,12 +1395,6 @@
id="path5235"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path5379"
d="m 275.2778,-796.81304 837.0198,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5381)" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5531)"
d="m 275.2778,-897.13378 837.0198,0"
@ -1442,5 +1407,108 @@
id="path5685"
d="m 275.2778,-997.45452 837.0198,0"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5687)" />
<g
id="g4730"
transform="translate(0,11.476379)">
<text
sodipodi:linespacing="125%"
id="text4699"
y="-832.78076"
x="181.5159"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:97.46507263px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4712"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:116.95809937px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
y="-832.78076"
x="181.5159"
sodipodi:role="line">.</tspan><tspan
id="tspan4714"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:116.95809937px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
y="-686.58313"
x="181.5159"
sodipodi:role="line" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:97.46507263px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="181.5159"
y="-802.60657"
id="text4718"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="181.5159"
y="-802.60657"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:116.95809937px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
id="tspan4720">.</tspan><tspan
sodipodi:role="line"
x="181.5159"
y="-656.40894"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:116.95809937px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
id="tspan4722" /></text>
<text
sodipodi:linespacing="125%"
id="text4724"
y="-772.43237"
x="181.5159"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:97.46507263px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4726"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:116.95809937px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
y="-772.43237"
x="181.5159"
sodipodi:role="line">.</tspan><tspan
id="tspan4728"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:116.95809937px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
y="-626.23474"
x="181.5159"
sodipodi:role="line" /></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="172.41248"
y="-1080.3231"
id="text4741"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4743"
x="172.41248"
y="-1080.3231"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50px;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro'">1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4745"
y="-979.65259"
x="166.68748"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50px;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro'"
y="-979.65259"
x="166.68748"
id="tspan4747"
sodipodi:role="line">2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="165.98749"
y="-879.68182"
id="text4749"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4751"
x="165.98749"
y="-879.68182"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50px;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro'">3</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4753"
y="-683.79041"
x="166.56248"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50px;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro'"
y="-683.79041"
x="166.56248"
id="tspan4755"
sodipodi:role="line">n</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 248 KiB

View File

@ -724,8 +724,8 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.51436036"
inkscape:cx="1165.635"
inkscape:cy="746.28444"
inkscape:cx="1255.1997"
inkscape:cy="581.3168"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@ -793,13 +793,13 @@
x="164.96764"
y="858.93011" /></flowRegion><flowPara
id="flowPara31763" /></flowRoot> <rect
ry="64.531189"
y="-713.98022"
x="276.70865"
height="560.61487"
width="752.00781"
ry="64.517075"
y="-713.91888"
x="195.11514"
height="560.49219"
width="833.53998"
id="rect34980"
style="fill:#d7e3f4;fill-opacity:1;fill-rule:evenodd;stroke:#0044aa;stroke-width:2.32720137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9.30880395, 2.32720102;stroke-dashoffset:0;stroke-opacity:1" />
style="fill:#d7e3f4;fill-opacity:1;fill-rule:evenodd;stroke:#0044aa;stroke-width:2.44984436;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9.79937588, 2.44984401;stroke-dashoffset:0;stroke-opacity:1" />
<g
transform="matrix(128.59023,0,0,-185.53733,577.9405,422.59505)"
id="g4467">
@ -826,7 +826,7 @@
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:45px;line-height:125%;font-family:'Basis Grotesque';-inkscape-font-specification:'Basis Grotesque, Medium';text-align:start;writing-mode:lr-tb;text-anchor:start">Bob</tspan></text>
<g
id="g22552"
transform="matrix(1.0648771,0,0,1.0648771,1287.3207,-1970.5079)">
transform="matrix(1.0648771,0,0,1.0648771,1215.3207,-1970.5079)">
<g
id="g28-8-6"
transform="matrix(1.1935921,0,0,1.1935921,-1039.1496,1252.1078)"
@ -881,12 +881,12 @@
sodipodi:linespacing="125%"
id="text22546"
y="-423.03558"
x="298.82364"
x="226.82364"
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:45px;line-height:125%;font-family:'Basis Grotesque';-inkscape-font-specification:'Basis Grotesque, Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:45px;line-height:125%;font-family:'Basis Grotesque';-inkscape-font-specification:'Basis Grotesque, Medium';text-align:start;writing-mode:lr-tb;text-anchor:start"
y="-423.03558"
x="298.82364"
x="226.82364"
id="tspan22548"
sodipodi:role="line">Ursula<tspan
style="font-size:64.99999762%;baseline-shift:sub"
@ -1036,25 +1036,63 @@
<path
sodipodi:nodetypes="cc"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker36038)"
d="m 458.6702,-598.24087 185.5321,0"
d="m 358.7362,-598.24087 278.85188,0"
id="path36036"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text36336"
y="-665.92841"
x="549.39075"
x="505.44751"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.25px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34.99999619px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
y="-665.92841"
x="549.39075"
x="505.44751"
sodipodi:role="line"
id="tspan36344">Verify policy</tspan><tspan
id="tspan4483">Verify access</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34.99999619px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
y="-622.17841"
x="549.39075"
x="505.44751"
sodipodi:role="line"
id="tspan36348">for Bob</tspan></text>
</g>
id="tspan4561">policy for Bob</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4533"
y="-6.6898298"
x="294.20285"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.25px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4537"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34.99999619px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
y="-6.6898298"
x="294.20285"
sodipodi:role="line">Send Capsule</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34.99999619px;line-height:125%;font-family:'Basis Grotesque Pro';-inkscape-font-specification:'Basis Grotesque Pro, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
y="37.060165"
x="294.20285"
sodipodi:role="line"
id="tspan4541">to Ursula</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1207.2115"
y="-527.43762"
id="text4543"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4545"
x="1207.2115"
y="-527.43762"></tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot4547"
style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:sans-serif;font-style:normal;font-weight:normal;font-size:15px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
id="flowRegion4549"><rect
id="rect4551"
width="272.18271"
height="184.69542"
x="1901.3907"
y="162.84857" /></flowRegion><flowPara
id="flowPara4553"></flowPara></flowRoot> </g>
</svg>

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 207 KiB

View File

@ -1,74 +1,100 @@
Character Concepts
==================
NuCypher's API is written as characters within a cryptological narrative / archetype each fulfilling a particular
NuCypher's API is written as characters within a cryptological narrative/archetype each fulfilling a particular
role.
* **Alice**: *"The Data Owner"* - retains full control over the data encrypted for her and determines whom to share the data with
* **Enrico**: *"The Encryptor"* - a data source that encrypts data for on behalf of Alice for some encryption key
* **Enrico**: *"The Encryptor"* - a data source that encrypts data on behalf of Alice for a configurable encryption key
* **Bob**: *"The Data Recipient"* - the data recipient that Alice intends to share data with
* **Ursula**: *"The Proxy in PRE"* - the node on the NuCypher network that stands ready to re-encrypt data in exchange for payment in fees and token rewards; they enforce the access policy created by Alice
* **Ursula**: *"The Proxy in PRE"* - the node on the NuCypher Network that stands ready to re-encrypt data in exchange for payment in fees and token rewards; they enforce the access policy created by Alice
.. _Umbral: https://github.com/nucypher/umbral-doc/blob/master/umbral-doc.pdf
Character Functions
-------------------
Alice.Grant
^^^^^^^^^^^
Alice::Grant
^^^^^^^^^^^^
.. image:: ../.static/img/alice_grant.svg
:target: ../.static/img/alice_grant.svg
Alice may have data that she thinks she may want to share this data in the future. She uses NuCypher to create
an encryption key for Enrico to use when generating and storing data. Subsequently, Alice can delegate access to the
encrypted data to any recipient she sees fit. It is worth noting that the same encryption key can be used by Enrico
even though multiple policies can be created for multiple Bobs. Enrico, therefore, only has to encrypt data once using
a configurable asymmetric encryption key in order for data to be re-encrypted for all Bobs who have been granted access.
Alice may have data that she may want to share. It is conceivable to think that she would want to classify/categorize her data according
to how she envisions sharing her data, each with their own set of permissions - within NuCypher this concept is called
a `label`. Alice uses this `label` to categorize data and creates an asymmetric encryption key for Enrico based
on the `label`. For example, Alice may use different `labels` and therefore different Enricos for health data,
personal data, work-related data. Essentially `labels` are a way to categorize data for sharing - you can think of
file system folders as being analogous to `labels`. Alice can delegate access permissions to the encrypted data
classified under a `label` to any recipient she sees fit.
The same encryption key can be used by Enrico even though multiple policies for the generated data can be created
for multiple Bobs. Enrico, therefore, only has to encrypt data once using a configurable asymmetric encryption
key and data can later be re-encrypted for all Bobs who have been granted access.
When Alice wants to share this information with Bob, she can create a
policy in the NuCypher network to grant access to him. In order 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 private key of encryption 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*
#. Deploy the policy including associated fees to the blockchain
#. Deploy `n` policy arrangements, each containing a re-encryption key fragment, `kFrag`, to `n` nodes on the NuCypher Network
Enrico.Encrypt
^^^^^^^^^^^^^^
Enrico::Encrypt
^^^^^^^^^^^^^^^
.. image:: ../.static/img/enrico_encrypt.svg
:target: ../.static/img/enrico_encrypt.svg
NuCypher uses the Umbral threshold proxy re-encryption scheme which employs a key encapsulation mechanism (KEM)/ data
NuCypher uses the Umbral_ threshold proxy re-encryption scheme which employs a key encapsulation mechanism (KEM)/ data
encapsulation mechanism (DEM). In this approach, an ephemeral symmetric key is used to encrypt the data, and the
symmetric key is encrypted using an asymmetric encryption key. The encrypted data (the DEM portion) and the
encrypted symmetric key (the KEM portion called a `Capsule`) are stored collectively.
encrypted symmetric key (the KEM portion called a `capsule`) are stored collectively.
Even though different blocks of newly generated data may use different symmetric keys, the same asymmetric encryption
key provided by Alice is used to encrypt the symmetric key.
Even though different blocks of newly generated bulk data may use different symmetric keys, the same asymmetric
encryption key provided by Alice is used to encrypt the symmetric key. How and when Enrico uses a new symmetric key
is up to the user of the Enrico API.
Bob.Retrieve
^^^^^^^^^^^^
Bob::Retrieve
^^^^^^^^^^^^^
.. image:: ../.static/img/bob_retrieve.svg
:target: ../.static/img/bob_retrieve.svg
[Lorem ipsum...]
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.
Bob will need to get the `capsule` re-encrypted from being under the encryption key configured by Alice, to
instead be encrypted under his public key. Remember that when Alice granted access to Bob, she distributed `n`
`kFrags` of a re-encryption key for Bob to `n` Ursulas on the network. Therefore, Bob sends his `capsule` to `n`
Ursulas in the NuCypher Network that have a corresponding `kFrag` for that policy. Those Ursulas
will use their `kFrag` to perform a partial re-encryption operation on the `capsule` and produce a corresponding
ciphertext fragment, `cFrag`. In the same way a `kFrag` is a fragment of a key, a `cFrag` is a fragment of ciphertext.
The `cFrag` is returned to Bob, who collects `cFrags` until he obtains a threshold, `m`, number of `cFrags`.
Bob attaches `m` received `cFrags` to the original `capsule` to obtain the fully re-encrypted `capsule` that is now
encrypted under his public key. Note that the generation of a complete re-encrypted `capsule` is possible from a
smaller number of `cFrags` than the number of `kFrags` originally sent out to Ursulas (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
shared with Bob that is associated with `label` for the policy.
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
needs to be performed on the fixed size `capsule`, which is simply an encrypted symmetric key.
Ursula.Reencrypt
^^^^^^^^^^^^^^^^
Ursula::Reencrypt
^^^^^^^^^^^^^^^^^
.. image:: ../.static/img/ursula_reencrypt.svg
:target: ../.static/img/ursula_reencrypt.svg
[Lorem ipsum...]
Alice.Revoke
^^^^^^^^^^^^
[Lorem ipsum...]
Having previously received a `kFrag` from Alice when the policy arrangement was issued, Ursula can now partially
re-encrypt data for Bob. Ursulas use their `kFrag` on the `capsule` provided by Bob and return a
corresponding `cFrag`. Bob will require `m` of these interactions with `m` different Ursulas to obtain a fully
re-encrypted `capsule`.

View File

@ -22,7 +22,7 @@ without revealing data keys to intermediary entities.
+======+===========+==============================================================================================+
| 1 | Alice | Alice sets a Policy on the NuCypher network (2-of-3) and grants access to Bob |
+------+-----------+----------------------------------------------------------------------------------------------+
| 2 | Alice | Label and Alice's key public key provided to Bob |
| 2 | Alice | Label and Alice's public key provided to Bob |
+------+-----------+----------------------------------------------------------------------------------------------+
| 3 | Bob | Bob joins the policy with Label and Alice's public key |
+------+-----------+----------------------------------------------------------------------------------------------+