From: Brian Warner <warner@allmydata.com> Date: Wed, 5 Mar 2008 23:54:26 +0000 (-0700) Subject: docs/mutable: describe deep-verify-cap scheme, update picture X-Git-Tag: allmydata-tahoe-0.9.0~63 X-Git-Url: https://git.rkrishnan.org/%5B/frontends/%22file:/%3C?a=commitdiff_plain;h=456b43760830bc6e559d98ea7e8dfe9fe47151df;p=tahoe-lafs%2Ftahoe-lafs.git docs/mutable: describe deep-verify-cap scheme, update picture --- diff --git a/docs/mutable-DSA.svg b/docs/mutable-DSA.svg index c60b9d43..6870d834 100644 --- a/docs/mutable-DSA.svg +++ b/docs/mutable-DSA.svg @@ -73,13 +73,13 @@ inkscape:pageshadow="2" inkscape:zoom="1.0816863" inkscape:cx="380.71238" - inkscape:cy="831.05605" + inkscape:cy="202.40798" inkscape:document-units="px" inkscape:current-layer="layer1" inkscape:window-width="909" inkscape:window-height="818" - inkscape:window-x="30" - inkscape:window-y="80" /> + inkscape:window-x="733" + inkscape:window-y="78" /> <metadata id="metadata7"> <rdf:RDF> @@ -95,35 +95,49 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1"> + <rect + style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2.26413918;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect2368" + width="315.90887" + height="110.6731" + x="376.39645" + y="630.0058" /> + <rect + y="637.49078" + x="566.81403" + height="93.854874" + width="114.42313" + id="rect2376" + style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> <rect style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect2158" width="257.28366" height="114.88015" - x="47.86673" - y="61.520912" /> + x="39.546387" + y="40.257816" /> <text xml:space="preserve" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Bitstream Charter" - x="70.603424" - y="92.634285" + x="62.283081" + y="71.371185" id="text3129" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3131" - x="70.603424" - y="92.634285">DSA private key</tspan></text> + x="62.283081" + y="71.371185">DSA private key</tspan></text> <text xml:space="preserve" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Bitstream Charter" - x="95.733459" - y="136.91101" + x="87.413116" + y="115.64791" id="text3133" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3135" - x="95.733459" - y="136.91101">(256 bit string)</tspan></text> + x="87.413116" + y="115.64791">(256 bit string)</tspan></text> <rect y="65.110916" x="397.29385" @@ -155,8 +169,9 @@ y="144.09102">(2048+ bit string)</tspan></text> <path id="path3353" - d="M 238.13697,115.37098 L 463.1106,118.96099" - style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + d="M 295.45488,119.06891 L 391.92545,138.37512" + style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:nodetypes="cc" /> <rect style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect3355" @@ -232,7 +247,7 @@ </g> <path style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 156.76353,177.59773 L 265.66035,235.0378" + d="M 180.80007,155.41015 L 265.66035,235.0378" id="path3381" sodipodi:nodetypes="cc" /> <path @@ -245,42 +260,11 @@ d="M 246.95959,311.03335 L 335.10982,399.67573" id="path3390" sodipodi:nodetypes="cc" /> - <g - id="g3580"> - <rect - style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="rect3571" - width="245.91235" - height="110.93723" - x="414.16815" - y="676.09784" /> - <text - xml:space="preserve" - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Bitstream Charter" - x="419.71503" - y="781.48883" - id="text3573" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan3575" - x="419.71503" - y="781.48883">storage index</tspan></text> - </g> - <path - id="path3392" - d="M 610.28119,571.7374 L 591.19146,679.79391" - style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - sodipodi:nodetypes="cc" /> <path style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" d="M 494.72088,326.74954 L 608.75662,464.38949" id="path3394" sodipodi:nodetypes="cc" /> - <path - sodipodi:nodetypes="cc" - style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 433.70505,568.96395 L 477.48012,682.56736" - id="path3400" /> <g id="g3439"> <rect @@ -323,38 +307,17 @@ id="tspan3419" sodipodi:role="line">64</tspan></text> </g> - <g - id="g3434"> - <rect - y="683.49371" - x="533.42633" - height="76.73204" - width="116.48479" - id="rect3398" - style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <text - sodipodi:linespacing="100%" - id="text3421" - y="750.9809" - x="622.1767" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - xml:space="preserve"><tspan - y="750.9809" - x="622.1767" - id="tspan3423" - sodipodi:role="line">64</tspan></text> - </g> <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="316.173" - y="110.31459" + x="312.47507" + y="116.78596" id="text3449" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3451" - x="316.173" - y="110.31459">(math)</tspan></text> + x="312.47507" + y="116.78596">(math)</tspan></text> <g id="g3465" transform="translate(13.867236,-133.12547)"> @@ -384,33 +347,9 @@ id="path3463" d="M 253.43097,494.08087 L 212.15366,395.97781" style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Dot_m);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <g - transform="translate(-59.166876,105.391)" - id="g3470"> - <path - sodipodi:type="arc" - style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="path3472" - sodipodi:cx="167.33131" - sodipodi:cy="525.40723" - sodipodi:rx="28.658955" - sodipodi:ry="27.734472" - d="M 195.99027 525.40723 A 28.658955 27.734472 0 1 1 138.67236,525.40723 A 28.658955 27.734472 0 1 1 195.99027 525.40723 z" /> - <text - xml:space="preserve" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="150.61719" - y="530.36621" - id="text3474" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan3476" - x="150.61719" - y="530.36621">AES</tspan></text> - </g> <path style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Dot_m);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 253.43096,545.85189 L 136.3461,617.85359" + d="M 253.43096,545.85189 L 127.10127,610.45773" id="path3480" sodipodi:nodetypes="cc" /> <text @@ -427,13 +366,13 @@ <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="183.972" + x="166.40683" y="577.17822" id="text3486" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3488" - x="183.972" + x="166.40683" y="577.17822">H</tspan></text> <rect style="fill:#aaffaa;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" @@ -485,27 +424,63 @@ id="rect3508" width="115.5603" height="66.562737" - x="90.599281" - y="695.51196" /> + x="28.658957" + y="697.3609" /> <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="98.919609" - y="731.56677" + x="36.979286" + y="733.41571" id="text3510" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3512" - x="98.919609" - y="731.56677">crypttext</tspan></text> + x="36.979286" + y="733.41571">crypttext</tspan></text> + <g + id="g4473" + transform="translate(-28.658956,0)"> + <path + transform="matrix(1.35846,0,0,1.35846,-107.59243,-82.815611)" + sodipodi:type="arc" + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:1.47225535;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path3472" + sodipodi:cx="167.33131" + sodipodi:cy="525.40723" + sodipodi:rx="28.658955" + sodipodi:ry="27.734472" + d="M 195.99027 525.40723 A 28.658955 27.734472 0 1 1 138.67236,525.40723 A 28.658955 27.734472 0 1 1 195.99027 525.40723 z" /> + <text + xml:space="preserve" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + x="103.00634" + y="614.49408" + id="text3474" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan3476" + x="103.00634" + y="614.49408">AES</tspan></text> + <text + sodipodi:linespacing="100%" + id="text4469" + y="633.57159" + x="90.002838" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + xml:space="preserve"><tspan + y="633.57159" + x="90.002838" + id="tspan4471" + sodipodi:role="line">readkey</tspan></text> + </g> <path style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 64.836554,591.15152 L 113.23403,694.58562" + d="M 36.177598,591.15152 L 84.575074,694.58562" id="path3514" sodipodi:nodetypes="cc" /> <g id="g3546" - transform="translate(5.5468946,-21.263096)"> + transform="translate(-56.39343,-19.414131)"> <rect y="811.99677" x="158.0865" @@ -527,7 +502,7 @@ </g> <path id="path3522" - d="M 143.41756,763.10526 L 163.15609,819.39076" + d="M 81.477236,764.95422 L 101.21577,821.23972" style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" sodipodi:nodetypes="cc" /> <text @@ -572,7 +547,7 @@ <path sodipodi:nodetypes="cc" style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 234.01684,874.04316 L 289.81018,934.95107" + d="M 203.50892,875.89212 L 269.47157,944.19589" id="path3551" /> <path id="path3553" @@ -582,26 +557,26 @@ <path sodipodi:nodetypes="cc" style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 317.22025,983.13208 L 476.55563,995.96691" + d="M 317.22025,983.13208 L 355.44843,1012.6075" id="path3555" /> <rect style="fill:#ccffaa;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect3557" width="145.14374" height="63.789288" - x="479.80637" - y="944.19775" /> + x="355.92569" + y="984.87494" /> <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="493.67361" - y="984.875" + x="369.79294" + y="1025.5521" id="text3559" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3561" - x="493.67361" - y="984.875">signature</tspan></text> + x="369.79294" + y="1025.5521">signature</tspan></text> <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" @@ -664,31 +639,31 @@ <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="114.63582" - y="793.50708" + x="52.695496" + y="795.35602" id="text3593" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3595" - x="114.63582" - y="793.50708">FEC</tspan></text> + x="52.695496" + y="795.35602">FEC</tspan></text> <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="194.14133" + x="158.08652" y="893.3512" id="text3597" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3599" - x="194.14133" + x="158.08652" y="893.3512">H</tspan><tspan sodipodi:role="line" - x="194.14133" + x="158.08652" y="911.3512" id="tspan3605">merkle</tspan><tspan sodipodi:role="line" - x="194.14133" + x="158.08652" y="929.3512" id="tspan3607">trees</tspan></text> <text @@ -705,97 +680,134 @@ <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="53.61998" - y="169.48146" + x="45.299637" + y="148.21837" id="text3609" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3611" - x="53.61998" - y="169.48146">write-cap</tspan></text> + x="45.299637" + y="148.21837">write-cap</tspan></text> <g - id="g3685"> - <rect - y="683.49371" - x="438.20468" - height="74.88308" - width="87.825829" - id="rect3396" - style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <text - sodipodi:linespacing="100%" - id="text3425" - y="753.75439" - x="500.14499" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - xml:space="preserve"><tspan - y="753.75439" + id="g2456" + transform="translate(-25.885509,20.338614)"> + <g + transform="translate(21.263096,77.656526)" + id="g3580"> + <rect + y="676.09784" + x="414.16815" + height="110.93723" + width="245.91235" + id="rect3571" + style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="100%" + id="text3573" + y="781.48883" + x="419.71503" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Bitstream Charter" + xml:space="preserve"><tspan + y="781.48883" + x="419.71503" + id="tspan3575" + sodipodi:role="line">storage index</tspan></text> + </g> + <g + transform="translate(21.263096,77.656526)" + id="g3685"> + <rect + style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect3396" + width="87.825829" + height="74.88308" + x="438.20468" + y="683.49371" /> + <text + xml:space="preserve" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" x="500.14499" - id="tspan3427" - sodipodi:role="line">64</tspan></text> - <text - sodipodi:linespacing="100%" - id="text3613" - y="699.2099" - x="442.82709" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - xml:space="preserve"><tspan - y="699.2099" + y="753.75439" + id="text3425" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan3427" + x="500.14499" + y="753.75439">64</tspan></text> + <text + xml:space="preserve" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" x="442.82709" - id="tspan3615" - sodipodi:role="line">SI:A</tspan></text> + y="699.2099" + id="text3613" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan3615" + x="442.82709" + y="699.2099">SI:A</tspan></text> + </g> + <g + id="g2449"> + <rect + style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect3398" + width="116.48479" + height="76.73204" + x="554.68945" + y="761.15027" /> + <text + xml:space="preserve" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + x="643.43982" + y="828.63745" + id="text3421" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan3423" + x="643.43982" + y="828.63745">64</tspan></text> + <text + xml:space="preserve" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + x="559.31189" + y="775.94189" + id="text3617" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan3619" + x="559.31189" + y="775.94189">SI:B</tspan></text> + </g> </g> - <text - xml:space="preserve" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="538.04877" - y="698.2854" - id="text3617" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan3619" - x="538.04877" - y="698.2854">SI:B</tspan></text> <rect style="opacity:1;color:#000000;fill:#ffd5d5;fill-opacity:1;fill-rule:nonzero;stroke:#2b0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect3621" width="287.51404" height="86.901352" - x="413.24365" - y="816.61914" /> + x="446.52499" + y="893.35114" /> <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="419.71503" - y="897.04913" + x="452.99637" + y="973.78113" id="text3623" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3625" - x="419.71503" - y="897.04913">verify cap</tspan></text> + x="452.99637" + y="973.78113">verify cap</tspan></text> <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="466.86362" - y="637.26959" - id="text3627" - sodipodi:linespacing="100%"><tspan - sodipodi:role="line" - id="tspan3629" - x="466.86362" - y="637.26959">H</tspan></text> - <text - xml:space="preserve" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="607.38495" - y="640.04303" + x="599.06464" + y="612.30853" id="text3631" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3633" - x="607.38495" - y="640.04303">H</tspan></text> + x="599.06464" + y="612.30853">H</tspan></text> <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" @@ -810,14 +822,14 @@ <text xml:space="preserve" style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" - x="221.87579" - y="210.15868" + x="210.782" + y="208.30971" id="text3639" sodipodi:linespacing="100%"><tspan sodipodi:role="line" id="tspan3641" - x="221.87579" - y="210.15868">H</tspan></text> + x="210.782" + y="208.30971">H</tspan></text> <text sodipodi:linespacing="100%" id="text3643" @@ -853,7 +865,7 @@ sodipodi:role="line">H</tspan></text> <g id="g3662" - transform="matrix(0.6558602,0,0,0.6558602,296.74467,666.29337)"> + transform="matrix(0.6558602,0,0,0.6558602,330.02604,743.02541)"> <rect style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect3664" @@ -886,7 +898,7 @@ </g> <g id="g3692" - transform="matrix(0.7835586,0,0,0.7835586,105.723,286.39228)"> + transform="matrix(0.7835586,0,0,0.7835586,139.00437,363.12432)"> <rect style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="rect3694" @@ -935,5 +947,198 @@ id="tspan3717" x="56.393429" y="1032.0236">: stored in share</tspan></text> + <text + xml:space="preserve" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + x="446.52499" + y="614.15753" + id="text3627" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan3629" + x="446.52499" + y="614.15753">H</tspan></text> + <path + sodipodi:nodetypes="cc" + style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 432.78057,566.1905 L 445.12324,634.49427" + id="path3400" /> + <path + id="path3392" + d="M 610.28119,571.7374 L 622.62386,637.26772" + style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Bitstream Charter" + x="381.81125" + y="735.26471" + id="text2370" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan2417" + x="381.81125" + y="735.26471">deep-verify cap</tspan></text> + <rect + y="634.88495" + x="384.97354" + height="74.105453" + width="171.1761" + id="rect2384" + style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="100%" + id="text2386" + y="704.75684" + x="517.71021" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + xml:space="preserve"><tspan + sodipodi:role="line" + id="tspan3448" + x="517.71021" + y="704.75684">192</tspan></text> + <text + sodipodi:linespacing="100%" + id="text2445" + y="722.32196" + x="656.38257" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + xml:space="preserve"><tspan + y="722.32196" + x="656.38257" + id="tspan2447" + sodipodi:role="line">64</tspan></text> + <path + id="path3450" + d="M 541.8695,710.40976 L 492.27184,780.56249" + style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 615.82808,731.67286 L 599.5118,779.63802" + id="path3452" /> + <text + sodipodi:linespacing="100%" + id="text3454" + y="764.84814" + x="514.93671" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + xml:space="preserve"><tspan + y="764.84814" + x="514.93671" + id="tspan3456" + sodipodi:role="line">H</tspan></text> + <text + sodipodi:linespacing="100%" + id="text3458" + y="764.84814" + x="611.08289" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + xml:space="preserve"><tspan + y="764.84814" + x="611.08289" + id="tspan3460" + sodipodi:role="line">H</tspan></text> + <path + sodipodi:nodetypes="cc" + id="path3464" + d="M 374.53816,691.92012 L 296.28156,715.84875" + style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Dot_m);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <g + id="g4458"> + <path + transform="matrix(1.3740452,0,0,1.3740452,-169.82943,-411.35177)" + sodipodi:type="arc" + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:1.45555615;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path3468" + sodipodi:cx="167.33131" + sodipodi:cy="525.40723" + sodipodi:rx="28.658955" + sodipodi:ry="27.734472" + d="M 195.99027 525.40723 A 28.658955 27.734472 0 1 1 138.67236,525.40723 A 28.658955 27.734472 0 1 1 195.99027 525.40723 z" /> + <text + xml:space="preserve" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + x="43.377235" + y="292.42844" + id="text3470" + sodipodi:linespacing="100%"><tspan + sodipodi:role="line" + id="tspan3472" + x="43.377235" + y="292.42844">AES</tspan></text> + <text + sodipodi:linespacing="100%" + id="text4454" + y="314.62518" + x="26.809992" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch" + xml:space="preserve"><tspan + y="314.62518" + x="26.809992" + id="tspan4456" + sodipodi:role="line">writekey</tspan></text> + </g> + <path + style="fill:#00ffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;marker-end:url(#Dot_m);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 119.38102,157.56927 L 73.481292,271.17268" + id="path3462" + sodipodi:nodetypes="cc" /> + <g + id="g4523" + transform="translate(45.29964,-9.2448245)"> + <path + d="M 195.99027 525.40723 A 28.658955 27.734472 0 1 1 138.67236,525.40723 A 28.658955 27.734472 0 1 1 195.99027 525.40723 z" + sodipodi:ry="27.734472" + sodipodi:rx="28.658955" + sodipodi:cy="525.40723" + sodipodi:cx="167.33131" + id="path4482" + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:1.47225535;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:type="arc" + transform="matrix(1.35846,0,0,1.35846,-18.770385,15.179529)" /> + <text + sodipodi:linespacing="100%" + id="text4484" + y="712.4892" + x="191.82838" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + xml:space="preserve"><tspan + y="712.4892" + x="191.82838" + id="tspan4486" + sodipodi:role="line">AES</tspan></text> + <text + xml:space="preserve" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Courier 10 Pitch" + x="208.69345" + y="731.56671" + id="text4488" + sodipodi:linespacing="100%"><tspan + y="731.56671" + x="208.69345" + id="tspan4517" + sodipodi:role="line">deep</tspan><tspan + y="745.56671" + x="208.69345" + id="tspan4519" + sodipodi:role="line">verify</tspan><tspan + y="759.56671" + x="208.69345" + id="tspan4521" + sodipodi:role="line">key</tspan></text> + </g> + <text + sodipodi:linespacing="100%" + id="text4532" + y="697.36096" + x="325.41782" + style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;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;font-family:Courier 10 Pitch" + xml:space="preserve"><tspan + y="697.36096" + x="325.41782" + id="tspan4534" + sodipodi:role="line">H</tspan></text> </g> </svg> diff --git a/docs/mutable-DSA.txt b/docs/mutable-DSA.txt index 568f3db4..4875d874 100644 --- a/docs/mutable-DSA.txt +++ b/docs/mutable-DSA.txt @@ -128,9 +128,14 @@ The pubkey hash is hashed by itself and truncated to 64 bits to form the last write-cap. The first 192 bits of the read-cap are hashed and truncated to form the first -64 bits of the storage index. The last 64 bits of the read-cap are hashed to -form the last 64 bits of the storage index. This gives us a 128-bit storage -index. +192 bits of the "traversal cap". The last 64 bits of the read-cap are hashed +to form the last 64 bits of the traversal cap. This gives us a 256-bit +traversal cap. + +The first 192 bits of the traversal-cap are hashed and truncated to form the +first 64 bits of the storage index. The last 64 bits of the traversal-cap are +hashed to form the last 64 bits of the storage index. This gives us a 128-bit +storage index. The verification-cap is the first 64 bits of the storage index plus the pubkey hash, 320 bits total. The verification-cap doesn't need to be @@ -150,6 +155,10 @@ encrypt the actual file data. This is to avoid key-reuse. An outstanding issue is how to avoid key reuse when files are modified in place instead of being replaced completely; this is not done in SDMF but might occur in MDMF. +The master data encryption key is used to encrypt data that should be visible +to holders of a write-cap or a read-cap, but not to holders of a +traversal-cap. + The private key is hashed one way to form the salt, and a different way to form the "write enabler master". For each storage server on which a share is kept, the write enabler master is concatenated with the server's nodeid and @@ -163,6 +172,18 @@ be used by applications which wish to store some data in a form that is only available to those with a write-cap, and not to those with merely a read-cap. This is used to implement transitive read-onlyness of dirnodes. +The traversal cap is hashed to work the "traversal key", which can be used by +applications that wish to store data in a form that is available to holders +of a write-cap, read-cap, or traversal-cap. + +The idea is that dirnodes will store child write-caps under the writekey, +child names and read-caps under the read-key, and verify-caps (for files) or +deep-verify-caps (for directories) under the traversal key. This would give +the holder of a root deep-verify-cap the ability to create a verify manifest +for everything reachable from the root, but not the ability to see any +plaintext or filenames. This would make it easier to delegate filechecking +and repair to a not-fully-trusted agent. + The public key is stored on the servers, as is the encrypted salt, the (non-encrypted) data salt, the encrypted data, and a signature. The container records the write-enabler, but of course this is not visible to readers. To @@ -173,19 +194,20 @@ tree, the encoding parameters, and the encrypted salt. "R" itself covers the hash trees and the share data. The read-write URI is just the private key. The read-only URI is the read-cap -key. The verify-only URI contains the the pubkey hash and the first 64 bits -of the storage index. +key. The deep-verify URI is the traversal-cap. The verify-only URI contains +the the pubkey hash and the first 64 bits of the storage index. FMW:b2a(privatekey) FMR:b2a(readcap) + FMT:b2a(traversalcap) FMV:b2a(storageindex[:64])b2a(pubkey-hash) -Note that this allows the read-only and verify-only URIs to be derived from -the read-write URI without actually retrieving any data from the share, but -instead by regenerating the public key from the private one. Uses of the -read-only or verify-only caps must validate the public key against their -pubkey hash (or its derivative) the first time they retrieve the pubkey, -before trusting any signatures they see. +Note that this allows the read-only, deep-verify, and verify-only URIs to be +derived from the read-write URI without actually retrieving any data from the +share, but instead by regenerating the public key from the private one. Users +of the read-only, deep-verify, or verify-only caps must validate the public +key against their pubkey hash (or its derivative) the first time they +retrieve the pubkey, before trusting any signatures they see. The SDMF slot is allocated by sending a request to the storage server with a desired size, the storage index, and the write enabler for that server's