(* Content-type: application/vnd.wolfram.mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 11.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 158, 7] NotebookDataLength[ 114549, 2669] NotebookOptionsPosition[ 108755, 2565] NotebookOutlinePosition[ 109238, 2584] CellTagsIndexPosition[ 109195, 2581] WindowFrame->Normal*) (* Beginning of Notebook Content *) Notebook[{ Cell[BoxData["\[IndentingNewLine]"], "Input", CellChangeTimes->{ 3.729862966064434*^9},ExpressionUUID->"758b6d47-6b13-43e8-915f-\ 34ba8ea8f2a6"], Cell[BoxData[Cell[GraphicsData["PDF", "\<\ 9E14ARda;S<:9LCUl^G[Yo>PdEM3gc3EDL20_AVU/M6Eb82m6K65dIDAUHfmT I@Xn?PYcM79UHFd:N07]O@MLDe^j[oO=WG?VcWC]cCbnFLncm :584@^m=;635gW__ahJ5g^b:8XXR2QI046UR@`FB47X99K@4O?nM[M^@k6a2211` lE_jFmWINiGoG^^OKgg[FmoGmTKFAQ91P210420840@80P@1PP11P210420840@8 0P@1PP11P210420840@80P@1PP11P210420840@80P@1PP11P2104>Sk2;ailhIH @a4420840Ge3@=3@/_1N^DML:DWMRX3?oO:PicGjm_Jk^cghhI?om[EfMdFTo7j9 0;nQiGm>5olfA?SKD059gHE0/>2c2j:IZIGmLPRYjaAhjNj3e?/YZL:R8SU7T@<; 187>8@1fn/m`hH10`H0PT[X=PD3n_ilCCDnYDSNAnmUeVX]2cUb`mUiT?6=^n9GX O]I1dYfN@N0m>`D;1Y3DC@P4lOoSW6QVofNWEZP`IC;YZh:2Xn6WGNH_6licn]k4 I/Vf?FUIfORZIhHdZJGO843HZBLhnL=PYmHfFKfThO7cg<]AeYkSS>fWFd QI>iiic]QhoGe]GeVeU3>]8c211f8^bTTi5F9AKWi;hlMNFJ`kbUGdfa66o]bZC_ SFd=Y/e9CT/SfRNM@?gQ54;HRK1CedNk[;GUHTb/dl9EGaUHS^@i<;`de]9UW9G[ J6]gnhD[XB4Wk=AeZ3nX4PPk4GKZhX07iiAGE_`lJn7oC;76DPkDQ?m1BV>]G8NK >eS>lPVkL;U:G4fXZH/hOh2?4gHRk=CeH@oV^GD_JLkZcD=[_oe/_/_GSelTJVY^ KVfCjZAlD/P7R01Q9l9>>QWfT8k::RY^g;VkI<^^[:O?/4=7N4TW`7k8QO@SM^8? 2>@?2519^1R4e:_FG1n6AH6/EEYKEil_;6aYJNWF>BEO:J[nAnbYI:ZPh8Y^g`EK 5Mf5O=mV9g0>[=cUS?BKThF3;QI?^5Xb9JKDn7ZYDDcYi6]D6QaIm=598DE@^8df RNlVTd^>H[^7WJQaele9LF1[EQLcN3]^Vf;Qg7VVJYQj=SHg@S2[[:iRDUEeMFeM KG=c4`YQkZ@c[Bmm52clm5CQT8^R LE75aWL[]fOFQ;jX>o^ZoV9NoHFlnU<_ZK@[DfadYg;L]M8AUhZn>2_j[KV0WJF^;^:KfI@4oSbo/SU@P:2`Y:fM6:C:=CDd2DM6[0X5>ZR/@RQZK6QC; EiN7^D9UMOE[_R3[jH_Tm:aK3e:^9MbmN>ICilWIe3PdeE4b:^8S;dYAch]kO7CibmORhY; j^[[FI^ZgLDnbDi1P]l7lOleE33/H_7>S9ZWUDgd3cH@J9JeeD_KJU_JJY[K95;l N;gm`eNUTYHc;n]WgZgh=4;hYa18Dnm>eGD77BVEZG]fJZf][knMV3QSaOY5jkMe AeZaIEO0bK>0SaiGb;`Fl3LNl9fcIY=>ZU^kHenn@n@d5W;/@U9EN:ZiCDGnS8/K1CbkO^D]N; 1N^fG;Ui^eWSaBT:?18D[U[Jc1G[WkejeOZ6Q@C`b>FK]nN/ETIbeX[ebNWYMODM 6mES3j:bFYcim2Vj>FoeIT?WVMPTE@L;[WlW]hmeGkQb`mi38FL_a=e?cK h[5XR==_L=^>M?4O/MJSE59bSU8R4ieok0IfZQJ;cdI5ogFR>J`OMIj6la`Vf;P] fk:KPANIalnNVLaHl:fQMMN[@oWVW_=bG[aDadj]KJd=CDfH@J^fkok[A;>1aUHS c>g7F[T`MYkZH7Y13aSdJkBebg0cNmJ>O6iP 1=86/eBJUFUU?38o^2CgaUI:CGPZimi <@Ug8GhX=USYFGc4CVSFdjNcUZgoWlTF?aQIXB=S;9gE0J9hOAC?HK29cMNC;CjO a7=L]5YM;OB?`XGX64?WjF0T4=4X74Zbi08O=RASN4h3SJfoV/b3WE_0VO>2XV:8 M^ZZD>dDjiDnaTk@7@D9HP/K81LY3N`JZNcCblD3o?T3SQL<>57`=W=LN2DOl[gb kaM0`oeoa?dd@NVLSY@:k0ifZZViN>djiZ3Rl==EOZbUllnf7Z[/I>K]OQThN692/IIGK7_ BRDXODB1lmI/6JO2W:bedloRTDcEMH6e Glc5DAJ>IQjcMoWjXaVZOFVA]V@lNN8dKmVGTgUS;9aYle[VFDdbN;UO6eQ4Lk8C1;2XYgW3Xn=N6=_PE 7Zn6@cZL9^HJM_ `;G? Gon`FUSO[?XDmF2;M=AE^@@5j]<]8bVFA]RYoB3WIZLiJkNL]OOhZC`]f`_702MI^GKhX`3bki2h0>=46gN_5N^E:V:MRJ`Gn`Hk1@Tn2N@7 ?ZeSYBIIVnaaAMm4n_:3P WBJUiCUZRKYadlaccW0cmPDMFXEWX@cifX07RgBTK`ahS;Kf^bVFM7FDg/W8I]VF W@G2@RgH2O=^]8Gc9NAcCi/eL<=Bd0nAY1O/D9loa =Vi@;:1lK4Kl==D>`d2YHCB<4nfWGHRnYURG>RAE[oL1MZ948?hO`XDESNe4M:H_ ;JfbZoVBgm6BTZ;4@^N3n;lk;KYG1]V9oG5a/faIJQFUYnXnlJTKI2M/RjAUINhi 7W`P85AM>Q@Dc_>H0offh[31V85/_fc[kUl2@Ph4Q;4nnh]ob>6P/^gDV>RKXG2BZFkog`>`EjbLkC=_SjhLmKZGgSXid^;83 G?SM7f?Uh[eR0h<0c/nGeZnM@mn14MK>2XmRh]H Q8;dU43Cl6>OH:OO10]h=iE7<]=1Z:72GmCo5U`4PV9SY`6Q`X@BK9f`/aW5jcagWaDCKMdEe`8H<92J;UbkTO]GJ5]38eBVRRnU]EiBKnSV?LX2lUjk 7B9BE 1hlbi;_cRUE@VkbJ/1=@X]IgMQiiO3j4LfJ`ZFI@H0n`DfiNg^XmQkhgD]h46F?Q 11GgVYd78V?RW^Jna>Z?QPG]K94f0n7JfUYHIXZ:Ro4F7ZAWG[mc;nQ/i=gDQj0k i^ERJQBGUAVhN]54YlP`:=o0JLKf`bMRh^nR3N8J:W877Z@ClPd=3K2QBTY;m`dn 2CN3:06SXUd9URk3c1giQ@8h9eA5So]:7f2W@<4oQ`[3GZPe0VUZUOTo[Oe47C]1 8PXB91B[IBOP4b>X]hh]je?/A;eXc8/>oj2F13]QXS431Q[;kjMH?G[l6?Ih7Ck> 31kLbLY>47;0CS2:6:Bm>SA65_gTCa:35=^/@G ZkGJA@WYY@g;4b^XXbhjTIAD2m6mk:CAca16SSYf^YNBbSgY50L9lRR:VifDk]OR 8jY8C4f5VT9aLH4OHRAXCU8bG;j:]AEFF8XC7k[[DIH^Sg9b5=^SAAiM>7dYNYb=^c;b4;?= k5l;1:f]T3oKRJ2Z]J0@n6fN93OEH32Tl;R/gb2=EK1kgoj8FM2iA/A6BEYD;^[PP9kP9e>Q9ffmej/a4kHf]RjohR`Z1R2 SNH8Z=j9;^`lLQcZ?TDI6cQPKf;CgX?RfU[EAeR_h?L^j=AIf8f3SQPFACUHZ/<< 7/KW[4maG=AgMY:[a3lk9`:0jW[ALWMi2;dgf]HMbi3gf7;;>@LkMn_ZnbdO?^N/G8]h_^nbc4iOoFjiZ`RTlW^ Yj@C`ic570b_R:MRoX=PY`3nmXcZimG/e8gA]NEIgDO@R^=/RnZR C2MGbcDY=LA`RSaOAFn`46NW;BKc2dY:maoa=G6La1d?X5MlP4f^8CcRgbkZj jEef>QlESC==GINME=V9TQ^WF5f;^beOD6^TBI2e]Sk:b/;6HS]f`^;>`]EbYPmQ 9gIj2N;o:D:hlc7;`G<<[ICR9^MKi@?lniJmTdJS1Kg[FgZWGV@WV0Jmi_=O5aCH N2onbJCM6A=/81XhDmIIn/Q>Ejif7c]QmnCJ[OS>/E=f=P/kFKYHcU`06aRUgj<> ?gh@/Q?TWb3nOed@7LZ][Fa^]mDEcjlgRbWkBkR8gAY19h:C_?INRKKIKmQYcLim L1OChF3Fi0IPX[ZbPi`0MT:@d:JVY_en`EHcib_][OmXHX/S7W8C2fD=0`[/aIGM NL9>^YZTFYBS4kdCEBneJQ]n]GCY@o7N5gEG2aX^iD/fIhY]H/_n>KB@lTZWAM/d On@3F=W9MiaIg:VY^jk:99SVjVBWmK]ojAUf`^HDc:DFKMke@g_;8VbDCe^biW[2 ?CABZNF4WAQ0Z9DMTIgJ:c4jeXXc=18Pn5E@hIl_5?=Rbn4llamaJUS^m:1kZ@Ve memf`XUn0lMYSinmP4/gcAa5fD_g=HS3Y13]AA05W_nmlSd<=cVYNc[2I[S;mU9fHoIe]1gao>A6XHMYg?>3J [M^=SLZ>SoB4WM2G[h^:_JDd5?6A[>cXbDQT9hJDV4cW f4UGQ=>YL_Xk>l7`1V/O3M9djihM8c]e:P<9>c5@47IRX60bQ9dH:9@bQ9fD0<57 H<:aIbLo/T5IJl1k;ObI`fV`4_72S]g8cE^aF<9>31Z4WAPXV0aQ9`H:Y@aQ9bE0 l553M/:M=KEeV`oh@UiB?=/2MQY[hgHZMZSJfdidC/YJ:D66U[_d6>mTl9LJgW5;h1_LeQ3n>DHbQT]Ci]:CEc]Zade]ZDZU;]GJeEgA:D?fMWAI_g;5RfikUFgM[TYI/ gPWI@mEb6?=MKoA>KdgaLOQRgMj3`gV>R^5PL<@Ej_7XVflgkhS/e5OIBLhB7ilD nJAD[Ll@/jMdlMCH/To?`2/hfc4gN@VM>`DL9?SOhL:Y=l[HZe?GS?KGoaPV3gSG ZHdiSY_k:C]A?TH/GGjfMhM[//BdAhT?=Dg`Q2JE:/NDe4=f@^SQ1nWY?n7@_M:a ET/WSjE[/;F7RDWHZ@ncDb3omaN;nI9fidO`@QGoSSlAShiBhiYB:gKjjaWATI`J aBXjVoo/]3b60POQM>Z[o/]>FW^OHhHdTl4kdSOI2Fe3V18hWZESX33[>jce/>:3 le_HU:;Ia=j9OXUmK6D7K/72kEaAPHC[e:[>fNWCdhDkdZ^HHJm5Q[2C4VRHPkgX @FGM[_dmMY95]N=`fSoFaQeQHQQfP_H9@@Cf7Po02EW2CPaRQ9dH:9R9TjgfS]QILO8C/c[d3Z3eZZCWII_f]F]oYfHDl2M53O_`5A` ^R8@RA2fV=5b4WIB63ChBMU;5Q;kBKmRY9dl1Zh8964mORS9ameJ:HhF?]5TY HBLJ=<9>ZX>7/9/3SZGGH2V4d]C@j;E`i^7g@0X]@GDbb59LD;eVeS 5WeoFZgPW_E=fdkO0jdC/Y@@@`NdO_Q@S>Z:9[KQBDGSZlXeKdiN]DhZ:PY0Ual=>^RmL?/WNPn4U>]@GLJJ/XQ8SGJW1WOZ8gZWjaPCg8[1Yf;U8EM/?MHE;IK;hnhW3N4k]o8XS8Yj5 Tog/AG[W6k>Gf>WO8XAckiCM4CE4lbEdZVQBg[mFA;RZBIYCfLcLS`kn8]>o>5QEeWYme7oBOH:DLm66W^^7SccRZ=?KXSj/[^ 8lM7FCX[fJo24o:RmE]E_E9dn1:kecMV[k1C/>3G8@8@e3OWAInOUJOCQ@o:^;b6 IUDfKTTGOgjjn>gmIdFDjbLd_U=V0a`gO`0F1Af>]0i_06nTIVI>]?MDg1fSZF2@ TMGUf5/hF/;Z>iNeI9B6?mF_L54;f@WUh<7kZHnFK]VU93k1Sh6B][`kI:N;Ejo? F;YFRIg0SD=hC[LOYk>TVm[5FZ=>bk`4i]22Z:62G:k=@n?2DSFNUFM[ZGT[9X `oIQY^el9Z0^A0MN]Wg_kL@7LXld7B?O;6e21:PjBEf;k7ed>F2BVI6[;Qeh^=bmohbnngaWI:0Y>J25NRLi1A5KU=i5Qaok 9c/YRC617DCKA3bkYBTTWQgGh<40I]Dk`CNVZLM/a:;5h=@l?GnEUeLPJ6QBo/V0 jJ>Yie`UddMj_Plb/UjaHeoTmKS7cg<;RhY;:bX@98E>b2>R4bkV2h@8P9kai5UB I^KYjhQYoTB^Xb`LUfkMQA3TCg=O0HB:ZRX6VO;:bY:bbZZ^ NJo70bH8LFk/=W/D3c7RgalZY>_jg/Ajhbm7K]bimoaeOVUINDe];D@Y67Xe=3G1 3@jZ0>c9jEV7@R=n=;G5N50DW50JA:UAeZj5aDE]n5=h4I[T2C/19L9>7@hEEWIR IX[[P^F8E:]iLU^`78Z8e`EDo6_5ZU7;aWf7YcS=I9gn45Z@C=aVKCe`i4ChVO2; UnV4o47oh:fo75VjJHO;P^EHB_c]Io?O3YnlkM2aXY9BeEF]QNONBPkaj1Yo<[GkdLcNM_JRk@N?8L9MnG@c_mnBB;?h`dl=ZljmW;Ud2K0AoieC_gCgBHQW/DNo6f O6SKK3gL5jhl71Qj9OHVCRdU?D[7omSA@aE;]^bJi3CSRlTFZPn2VZ0QWkIhUF9M C:DMIPPk0B;2CQf>4h`^EMV96HfSN0i`SjUi6/ic99D=7`>Q2O M<]>`1onQ=O^g8l3b0c/RQU:B^4iXmN:/20oa<@65k4d1ShdXd:a_g3CCW2;8V

/;F8cDS@k6^ 3PLKL`=Q9d11f8TI3nXb65dLk:@hCCC9SkE`=Yo>`TjX7AG]?A74lib[Y07FY5S5 Nc0IKFKiH;6SLgK2^^Ide5G4NU>/CSF_FgH2K=N 8[VEV?CGWldI@HRUhfZdmgDeRFJD`9VVAn <;8bm_16L<2VY_OZMgFSBmee`Ti0Q[2C^^71G>m9MT9Mf6i;cTQgGkCZVdTl[FOR ]iXhQHbW7@Hm:kF4nPYdn[bTjXX[6YlEF1h618a9N65ZQ2EDW>U:<^PoL5 i=O/>WSg@IYZK0/6@ddbQ9f0DSmV9hm5ZhJK>`ha/HDlCjO19SJOSSFinb2U^HG; @UEYl=3/==;Enm>9ITaAFVL66m/J>/m0k6lU_I=RYI962AACPFL_>@KffCHUo/Ae^IVLZ[QacaB2=Vca 2oe<1DTlL^UF@Uem_F:3VJNH308F0c[Od9n<0=2G]Z?`2IbKaA=^i[maaBEd^;]:Vh_3`^jL76OHM0@ElKFZZ[HYcEFn@1nf0C fbl=;=1gT7o`6[O/a>Ah;3encjING>oJ_N9NCWK]Sn ?>neE=H9M/;j:4lPF7OTa;a=>eO]fb4mb9]U@Z;RZ;S h_L4Q:0R[iDK`5@lbSIk1V@6F20S8O>c[K^AldcHK3_?F`Z=b/:=>eO]?[3SA=29 TnNP5Fm^`L[R_E41YVC`f@][mQiL^D<1TagkgMM^:BXYDHd1ZVhZXIcMao`i^^ni O^_SEbnU[J`P]dKNCYRgNJOBhgSThN>LQTHHF[a_<5/3:;^SE`GlDiNS]al;Q;gC k5FKG7fFlccW0@[`2NR8@/K:MI;m=6S7k8B=hnbWCaECe]>W 6HmcjQ[ZFmlXFbZZ6bCdMES8?<_=cLaiXUQJEo;@XW2c4nX52N0?MU0icim7ghb7 :;GG;fSe[P;fO7RmN_j1_a`8g8jo[FK 8kSbV/m7JHX]e`8CU2PF8iR_Wc/:cM_nIll^og`2EA18hoo5foL^OGPDMoPR3>GXnlVY`8@ nQ7l[jkSWKY>f0U`mEMf@]NHdJ:DjM@PHFiF:ZB;7iUR=LUd]Rj><]DEaO48jeOZ bV6^/ci5GjCiPKVCbG0l`_XElj3V6MIb>2iZGS;^i2Q7Rjl8>`6dO/a>FP`9lPQ1 @4l@8>b45d7HBDm68fT6@D0A0L9>@8>`Tn:@87V2P9hP@=P9;j87f>VKLhG[Dg2n _PUi6ROh1Nl^nTk9NYegdD1?:o?E^hTK0C8FN2 @6L@Z97:?RG/e=dNE0;i@b:;mfAB8OJHg`FB8@P@1;PA@PObQ UhYobJh5>G6oSPoeFlZlD7gZ^l_QO]VY7WdMWidD4WKZKWHJNKW4=`N>Ig_dcOJ9 jW0ZY;Vi6LLgh=I<;1IGR/GEn:^YTK]`U<3;VHcMg5[OTDBcVi^KL8h6;][@8JYO B3De]OGel;n]j[BcCkb/7VhTeQZOWI=7iMJ][eYJndCdCS@>0Gb3JjFWGgI`OZXk GWeINFE9NCUL4/6E92J5KZ/0/ABEU/6OKDUYNGe3PdcF2N=c=0KlPgPR1HFR]XFQIL99_KYj2DYkbNLocB7Y`;BknG=CElidlMYef7FWIVKUiQO0gG5eKBd>cFUMUkX7PI>lkc@8e?mXT[ZKmOTjaDjGRbTe LQ1OFIV/Z=oF;ToHjAdklF9:HUkg]>b4Ul^K5>lX?eN`nJNLkic]3b[a?=4ELGg/`@@0eA R^R4ljZhl^DTlonJJ3K@foHM2c]e8n5NLATlGZYU3la4^6RKh^AYj3aM `fCTX0EjNfngP5Nhl5h93eIF?N]e5>HJ >?>;BCch[/B3WD[P]456=_3jjk9h]JYc=XhGQA3Sj5[_OXDf;dRZnT]4hH30KYRKA7JRfLV_H>JMR^ME>UiHMCQbl7;1C_2N>/SD [__H2HjShNTXC0=fP]@4JQX8g^2i`7/KY/m08a]h;c7el5jnNANROQl92XGP@BNh 2]nbolS/eA]hjj3i`kO4abe<>3SWYMiNN]nlOg1e06a[Q2b0F`00FVP/KGm WF<2RhbaMlO2eWR]D^PkPW bFUYPjKJPIgP1]aUh@XCmmWXe11CNdAMdM0oS7IEMlMC`?K`hiZoW/Jf7F6WKT3P 7C/]B:hD=K8jde0[XWOmMN?Ud^b44=_MbTkOJD15KcEa01ok0PVkIe]eGKlGW 2HC@`8S5D9KDHE7f?]GERf_Zh4H9^RUX]b2Ig4i<3SdO6G[^8_O:SV6W8LHfQ`92 dc:cABFUQBG570WAaW<;2VkN_@m?85P5`oN8V:7b;J2=^:mH?/g8I COVHL_k2`0ZNG^:CD`BRX_:ZZVYaCDeM?M7KjW1@N?R5b=DkmR8ob];UL51XLg=?Sl2^Sn78 Ei:_cXX617C3g2Bbdc]fF_>`^QVRPgY]BGMlYEO/1:n`bHoBhAM^[:D[g;[^?Q6H lcbg]ZiF`md[?2jAB41F5IEEb7?0aK0CPTb5GkPTdT`KQRdfk1_V_/iO]OfFWES_f8DdTC6SPZo7;dbg`n56]@cW]kUii<][RKLbLek7G[a<_;0O:cS]3Y9Cn/F>9ZZ hEN9AHdoW1<=l2O/e0d8d>`D:]b@e@^VV7[5C_3V573b3;`/8X;]>7^?]:c7l=ZT i7b9Ll@Zf@jYUCTEfBWTO6AQ4M?^JM:mYlE U8X@OU<5YnYHSO/EUINl<]iQR>C:]T/J6BcORS5fmX8WjdMCNLL6b :g7aWH7UON5BVOCadfNDjd^NldCW6FTiCh1i@W8ZPUfRl2nWF3k9OMVYOEG=@7_O P>jhGeSGeEFRkeF[/>b3Z[JiE]g `o97^dien9@R>`FN?RLX;=BHWN0>Z`gRg:kSP@RiP]GF85?kg;`lMNXJ50/?Wn=/ g11NHH;3]?VKMYJFUFWaUVT_iCnJ>D1JPkbgiM0a^77CPZ2`K=aea8ob6faR]ng` dL9RJP/E;SCW[=b48<;Pfn>Q9f6BdB60NWF3A2HK4edf8:0KS]ZAUAgH:I1_7E/F 8nRZSfD]aXaN/A>DBhPJ3:Nb@lg/8DCQIef;7VWbB5OHRBkoH704=?3@K`oW>Cg: cYK1EX1]B@kFHhbU:hS5IogfNagY^mXm oZi]/6ZcW3TO6hD`lhR9CjR]Xnc[X>>2bm1_3BeagGgaZXZZJ]IWmOHR^V0HFoJA o5MNabI?Q9f0JP1oMG95EUT_;?WeRYf:blXA/A5N[b4NG;ei2dKPgC@S^/Q>0>e@ l2U=f:VjE_c]E2RdWJ5XD75foLlK>=a`RNXn?L9@4WFL8iLIN< D0Di^Bn`/`Tenl2Y]Zl5O6SBd1bH>V@mNojiP@Ef<65GmXYO86_Sd]Yaem;cg`:I GITePk6hdoVf7F4W/=>9PX1W]LFBWSHW`432VmFO?C_/^b4d;LE>QUJaMnkZg72M VCPm`dk0=Rd[2e]k4;70C_/2@^EZ=2fE<2P]o7cT90M?A3Y6i8:UFgKQ2]`X`1EU/n6kIERMl_W65VKc=k4Db`1QYIWHbl39]h;IJ=6[A1bkigF78d Gf9j0h/kGJ^52C_9fBVnZ;]F/TW kNHbW[fCV3C1OQY/4V2^jKU/GBM;JdEd;HAGa/HO;56Eb1n7S8;?G:1]A:L]F@e= O]mRYiOR5Zmk5@?l2/S:C]L8l?m`__QN>FAYM]d5=kedlE^mHRNLODUm5`mIS/M3Tf3VKNH2L/VP;?G>`TWbRcDe9JfTCkJMPeX=U9leN?NZ74RkUc kgmP>F3U2WJZZVVWG8:9i_?G[f34SZIRRANOnU0Y0ZWVMOG:WM;F=f_Ca4AfdS4e bIE>La:[G]Of`[8>0dV_f:VT_<;0dA<7D_0S7QdKYlmjYog19a4hTU/[3Vaao0C/ Q;DHE3e1GFJWSf7eJciL]f0TWCMjbTjWm]4jbdkWXjaKCiX`d Maa/kP1_3e9Y>l4P[NPmVdGRPQR?oI>@B=ED_eL:0GV2gn188:K/KoZRV@We3LZ6i]QH8OUCOY g[lCeG;103on`k:VYUH^/n7^nf7B:gJ2_M>LeA_dgmjYDUbemJSo=eoD^>f7de]CE@RN?Tg@``QaTkU1DFRZ?`m^>X63lT?g/fF0c1mb38gjnhFLJZ03^ k5JVgCLP]Bhi[jIUOeJ]SVdbFN:/Z]KbYZJbaYIDWVSK7^VNT]dD=LiIocFlD5SOKYaXoH:dN52_f0WV=g^>nOeXJXO5WK77k1Mi nMP4ej9C7CkB5KdC4<]hlPBa_g4lNKB5ba2N8bbAf_3gcZJ8bNP=>keiVY^kO>On KjI@AhA`iQL=Ha[9I70AFhZS:JfkbmMC[=K/>i`_d?jl35=/SfDPPE`C=_b3Gb6; k:4ZSFQhQI8On0?22`oUe9ehFW?l2G/bS2_kec>X]m]TYf3nh^A:MKGSnY[DJ/>H <]f_J_giW1N8^0A_YJZQWmWYjlnK?WNT^@>fcacW;VFMk7P:eoE3MWX3WeB^?/]Q B33Nc_e`H2Q7Pn4`HJ`=]L?X/GSEQNPHMGLZHJ8?7l6hBAD]OhT/HEmQJDQ7k;Oa HO=3BBKZ4^@[l1S[/g9njn[:3RGk5e1RXKX6h3[[^Y:eBAYNA<^?5e`[`?C[WFDM ?H?dQig@7Yb=oMWNPo8IH^GjcA@;clF[`liOb/g?Pnl2>>mEIi;MfMW1/==PnQA` LC4Uo:So`n5/E0egLfPN=6V][Sg=a@JkMDmOkjm8BMd7:H7h2JL9YVS:ek m]>WjSP7en?^9Dj`m`3adRIEjTkXM1K`W[Vo[;7UF4hMaB@JC/0N^4eGk=@3CEFZ @/i>eLfmATdHV0h_lo>n=[HMIVh?PX8O0:a7X7lfMYUi:2P<> ;Naef@U]N?c/VLD/WaoUO_b_ d4C150N7f[hc]GMN/?aP@?2=n0BhMPD;`dkShN2>icCDg768V@=GDmfmO8?2^K72]l^gkh4_ GncLVDnK4g:^BcIJWGXY>[Vi[:7E=5Zn^<=?_i8`d2/OnjS/52ChOB3o@DV3]0_n lk_n@S4JmHfMZ4je]F4Ymb0mONOQhbKCi/9C;Ua[HWiQa@NVX_T:=]R3HKeSjkiV mbog7ZA8ILgLldhAZoO/9?Og2bnAl5g/Y[]i`b0UIR3Mc@DI>3SM:n3HQ<@TWQM5Uf4^HCio;OKlRZ_Z@Ki19 XoJ41Z A^Ih^GTi:7gFbPf0E6T0Z7j/[Q4knR`7Vd5?=MK>oOV[EagRZEY8KeeYOB<[UC>nT[BdeMGE59JE?LenUI6I6 aMf63V[AQQeVdnK06OQPHa_@a@Qc9b?GFC>G[klH4`_c7^h9aK0C_94L3XihV9W= 5hXhDX5@U5LPN?hZ;cD[9oC29C__QG2:0XU[^;VSdOAi;ejoI]DNX`fmcThkSo[1 ^a@L>]W=G^@GXI5K0oAUbn7SF0b>h3VmlXkFf2OH2MdBRhA@BRRM7ChLLmmWGOg`L?C DMMfW`QJ_7WWcgK^D>A2U88UYmL:RZ0dI2NhJXU0;8IBB5cb9bRiZh<4Ai[W[ejO ^fHc9CkaW0NKf?oR7lcZSQ/UmRhk`CF:QONRM7M8]<7ajGOLkWK=CT>3oQ0WoMZI`l0GA/SnR0kOA`R71T5ghHMS9hU:Ra451TIIPhe]Mah=::^/@>>E6ZWj4OO03mFZOHNn=Z:LOhigm1CG m[j@[mY>kR^OA@So5cM_<>:=IYToQhRLKeL4?:_3/A5n@d]6FN>>m:ZoWACnRW/9 fNOH:E3`em>5_SUjlLHa5?/L>bT=Bg@1Ol5WcR>b`1Q;IbRgcCgWaMa>`4FU>iV? R^cDFLnm:0@UUiJGWkibkB/S7?UgnN]4/oBLaj[1iW1K;k8CJ[mhk@Kf3TJI>b:T I/C5:ab0<]HOMn0QK]e_gkWGZFJJ@G/`LcJV1Z:>[aMg7o_ac[bCR IWREKbM62QYJ_[QHa4E@OHfMoS50>?5:FJg:/1 f@UAKWLL?bWl3P0E]hU4N56cME?BZP0Kg8C]SgM5^dH[bUjb1S Vdgk3co:NPbCNlgoX>eO]64K5/_SKE`GKMk10FJ_S=/>:jfAbSj=40h8e8EM@@1o IDYeCGA2bH00j>7Ij^YKk1C0ag5V76[FTmN=I_@KMSYm:LYRnSa4 C827:9PTLB2/4gJRWKW9oDUJ`gDK7;Pa8iK>X06maTi]KC0^oLK43PHHf3GHiN]o ;NkfoI@DcM>UV>/8N`N[9ePSO3756UJJB[gCohnKdZ[nli@^HPBO:7QDdBaCFKWC 260m?bjQHP2HT3EDN]mR9coQdPOEELg:>X[NN]OmRIg^9Cn`W;D0QSYHKEW>V=oM k8@=A1^_1O[9CS0C?GOUfU0NX72U;Dja_MRY15:RW`Fo`@ceN/9MZJi?>gKgV1Lg ]hbj@S/KIc^Obb[Z:5fDL`]>0NMcW]?OWUTcD9eGL`gH2CIJJe8Z?`JihFJU1_CT Akl2ln^UEoQ`dZ]F9M;M[dbYo?k4CZWYjE>miV>W2GYPHcOfToQdmgDR>lWIbDM3 MX;eMMP5K@>bb7nelJHdmnl4FeK[F@]PH0nOW70g2_49?^EP9:IiPPN68LJfN1HU 84hjPXZZ>ZaC6T]jn?5@C/d`n3K14E[]YSWX@^i1YD329DhLOB8NaN7O:ISofJDR S]m:66BkaiEna:eMejkmWGR:3a?FTjmZ:oDY67AoHZN76AVFGP/YmhlFc]`7bWZ< WF14BWW^aFJRYG?0j@/L@kC3ZHeWTajV`Jlh56^dKdaeYLUJIBobl[jBQeCndMAf hkk3^ggm/KS[K=YanVM k5C0:C^mmCh76`IE=Y2;@imMiP[WF]_Bm/didOoZGMTYX<0PZSRk/_M]W1A7BcmS 9mj/1G0?YCo/57O_?QgeH929kI4^Ace0JA>Pm[M`P^64mjY=j]P9nWV`8P;nPQEQ X@[3/Z[_okAV;9J@[5F0WD84WdFYIBO:^;eNA_5WKk4CaL3`d<8?OU9CdJQO kkLo/E=:N[ZIe`8h400kZO>aATnX7Y>Mh5l5BQ^XKQ04O7M0F5MV=mhDE4WSiI^B Tn`mEfcKZhjMa;Fe6oHL`4TOV=0_fkb[FUb3>kGkPbmUjnWchNlGYNdi5P3gP?[? B4X];:ZG1Sj_obBX2ekYo0X^2bC`KZMD<_?aHYk4n7ZY>WKjEJSPjn]U`9niGc5C 9iD6_91kOI5;FMYCZ8IdO[=WUi2HK3E[0KJI X2ZamEjTKSbPncYQYbNi[baWc:?eCV7W8Z7ZD@@FNC@0gUOP005VX[0jF;gW85B8IIg3_2GnYlna5XEC?`QH06_cWJ7EWN@7[7K/BXF[ n`SGOgBHH9AVh3Z;GePTJn>B8]BEdh_G`@[IhYHAQ` Ze`M>odQG6QiYiceIF4O<:m>mTeDBNl:C[l?h2LG=cJ[YmoNNWd0[Mn`DlSIlnJN Lf1l>B7X24D@]gDoG]FkP1RBVDo8IeiJDZBk1N2N2W E:Qeo_m:g>am]g:07i_9Dj3P?dlFKW[d?[2Y8SSUSBd1cnYkcB6EO4ggDA2h]k9g oCPYHZ:HkcO/1;M@LeI_VVCWgKZY>MN6Se9TbCfO];OOnJ1 ;_kK`3cahL@0Gd aBB;;DOlZlCEZ^F0=oR5X[DkOh402I]iN5eXK>ZZ9Z6lZ/YUoU:@<7c8k3ib@UAL d^OH2I0FeCO_OURU?@l4l;n;;TV[Y0:kZkhP_8P=R:K76^/cP?o3NE5BUe?B_b3dXKiRMF3SPQmmcbUT?T3Pe216=_UV4a[=CUNYU/@fKekg7FYR/B GAO9:U3`Ua1A35mI8j7De5kl2:PIMS;cmWT/McZ=Re[l/OJRY[jNWUIH5hC16d09 OWVEgaCc85H=TMM^P6N`R]6l0CRMTIbF=];6KHbU:iHcf6>J]Va]Rha;IV1U9`e[ U3A:cUnii[ih=KKQ8Z`ACPINl@]fn_YmKF`3JX;m4XjUg4Y:AQ^DJi4cWU0T2SUkPFJW_aW`ZV_[E6o[ k1D/38G58SY<<7`0GXZ=HaGK>U]/cmoOg2I;:VoZRV>jg`@9o^FLR9MDFM@48J[M <6j2@mLJjMKd6YQ^DQ8JJ2Z@?cjjm?2Cf[bjMSjel>2S/RK3V=8oQ/V=ZK[8<5Xo 7/SoLkS@neiUHjoji^DN1/2:IRO/Da/hCenaOBnLh^hjLZ9CJOoa@3R_ISF6jA@k 5IJF3>@iDB:@gCBGnL_g7?_;>QXdjRmSL:QDe]c_HoP/B3;eBlX[CDX;YFVmU67K2[9UPkFKX=6>Z ViNAbdc=daCW6I

  • GV`cIhW5^f@mIhW=kGZ_f_ShaG==YVY9FOWeQ7]; ]^gmJXX5cPkCNfZ06Sib[K`FXV]fliKA_DF93Oj2amECgfIM^ gX9W68iM/a>W;`b3iBO?nDMCn`N?7[6n4DDL=<`SL3321b>8<4`ea]Yk19joY4VG =Bbl9fnC]KDn[FXIMUkdJjf=Ro1P8?nS@<6@BlFckeF/ba9OhMLoZF`^JVRYTm9N b>CHP;BX_kI6FF]iTaBT5<>_GiMA?N]^nCnM5Pd8P8UA5nb_]6HTi/50hDmAYO^O e:Z;;mbC;hFS;R0hb=[]Fd=[R053C>cP20Rokie:gdjan_AWGWaR4^/i[9ZjnSn= W89]YWlKJnagmP8R1E3_k=g?SD86lIRJG`[h/cK]W;Ih5GSbNoWQ2k@4JaTLZD33 OS2bnMk8VTk83c:fAI_QmA6I7da/WNH]FKggl?f7jE0kMhPiF_D_Xhg@:WV_DH:= QUgn7_FJfV5Wd6_UQVfnO[O^9l^k`2;9:7B=9^gFlZY:=6n;[ioWdSFHi^PPJ0X= T6=^PgDRdcGj;N3h2Bh>]g2fW^VcH]L_Ijk4`>fNJPaO^R:0bRl/G;Ggl7m?=4>I XjaM:j^[eMf/dSJFWaG5Ne0>7?AmJnH0a?k_Q:T[3a`]:H<1CmoC?Z5C67hkdZ[n 50:BjL:Q=[TnVE:3Q`W=Hd/fYHWmWmMMi4/BRYXBRY/BBY^YE=:4Sm72QY1GMC/c JVa^UU96SgQ4Jf9T^:F;VB31Ya55Vm=ZH0VVn9Ke<8nGaE^dN^Z/Q@P?Y5gRNBdJ ?m?WDEHfZ`:fC]8`c=GKdW_A:?OIIjkM:9IkXEB70b;o?Wgil_CUjK^H: YUFMjS8]_3T/G[GkV7m/`]e>aNRDMaTJjUHXKB9SHV7YcI^m69K]R7/2VLg@JNHD YkNm@cOAFALi9J7QCaedn2[SlI<]Qdm15Wg8f[]Z_hM4U7f=]eLEYCSd^Egf3LbQMTecM 1?:9::@B_Z:_hgnX_[6La1DMe=P5DYGGoY4oOf=:IDii4lM`DTF/]ji0Qh>`IEe9 D9F`jVWA8ba3V9:[JlD@T;Rk2LCX?aChk>E;Z5oPQ2Cdgoa@?P]^AHG3bd=bZBOhRjLnEJaEDcc^3<5@P6]n5;DIS<5MRY3=eDP:[ck81Dk QXL2@kLM?;YbagjjJnPV>X/^abKL@JF=cHfJM0ggE8_5XY8Rm0;];=O<3JKVcDKi :1`/JFlEN:OmdElDTMcd10XZBSgWHh`=Xl]2f0?cbV=:>: gCA2gehCfTNeRoHQk/<?O53/]DM`=g/IYoZjklm]Lk/GYZ oj3^ZD>Qo4jdBW=0N_S>>hF=M[4Ek2JD[5>k7eb421L1Kc0MB0Pmo298M@@1PX0B 0];F=eOi3CJaYNaFU?f0RaBk@4]do_c4LYSWMZ1VE0::O2@840Aj7X46VBbnY>W; bkB7^ZkZLoA1YjBf3F2Whl:[1A8HZ?LlcZA6PP11@0/4VUZU:AF=U0UUehbPe=:2 XP3CFoTP`BN1QLMbjWXm]ZlF;hPl@Q3hT16@b:AWnA9Z^eloEMUMi;A0`Cl5lgdB ZlXK>mk;oY270NTk@D0o4L1N//o3ZXlYgkUj^MNV=D5Ae2@`_5JFG0;kPOj`Uj6O hhNdRR3@O@SPS71aTgAlMMWW2N[Go_`aDLFnCjP3mMd=7BVO840@j6h4@51SXhXY P/8B[blC5?bm3;aB4_AJ@ZRY^lL<:IlPd6<8h<@^c^[fKB>X4`Fd[k`>3icf6:ZT 8X80@J3[2<3QBEi]ll7/6[TScKhV@D5S1VZjD_ZbEPIoaEe7PiA04208j1D2V=LU 3BeQ^OEbEgEmIaL_B?1[o`:KVnF_2CFaN44QG4d@j2L8h9ahJF>;Kdi]KdJJjiCR :e3`fb2n@ec5lfXYhnm>[cRO=8HP@13@5@:Hhh:jiYEYEAn7b/DWOCHc21Clkc2A EFaI[121PHSEICoiRMCEB2KUm5L449k0<;J3?hB;SJnEAnFB7 S_0B@N33@Z1F:Q/IFoI9Z>0Om92MPPCo9jA`eYfZU>:nhDf^_oj:TGhA17X;0EP= fMf[n9NC`UoY2D7APU`@oin2n4LNeaKDBXUMDfn=3E8_@J3G4L3d?oZTKUaDfLL1 lUENYeCF^[fIYRH4bP`G9UDd=T7?A3g@HD;kUN; FhS?0L;<1062@3/48:hPe18EEQQacjT8D3fhTAO0ooaMN^EN@S@H0P @12P4FQZUBFD=m_7EO`fB>iGDkNJ9MGBi6hC[>mDG1M9:Y[JQChWKh@P@10P22PQ 05gd3D73k?]Eo`[7_`QgdWgQjP84OcmCI1mO7Ub_jEHR^mo;Nk/d9?SmMk9=DNJnh@KD1i0Y1P2104>10@2:CkLn]noa: bImX?Z7oEefMMNZ:_13HOojoL67hReZiXXWXVXSLB10P26R1@6^AA;HmXoX?L5]7 >Jo[f[6G85m4nHH2@GE:F69^ aX?no7l>5XBl84igfl7;8KjB[`P2184>4H2m0BbAMVJ8oa@/XUCUWO<0c8N9`Vo2 2lO7Ecb[JLJfH8OETA/80P@1PT2W410gBe<[VdK7UGlL9Y@k0MK0abKFPoklADWE ]dA=aHf]a;=UY`0W=a<420:J8h0X`iWRU]2GTVT95Fl=biVeVf:6dU11I19>_UYj >ZonMEec_EBZNBgTCX80@H0PX1d2X9[l^^HX@OgDjhRT86`G3igFW`LDO7:^:>Qi GDjE]54V8nOV]<>I?4D@80QXQ`22XEo>Ula>Z_kg/j9o211@78DD`?mc^=3YM_Vf IkFU3I2Gb;TiXVLS2104NPF1=oVBUYTYED3 1062P1hP0=_bYiE=4n<[eZJ;7iK11gR_l2BYU210420840@80P@1PP11P2104208 40@80P@1PP11P210420840@80P@1PP11P210420840@80P@1PP11P210420840@8 0P@1PP11P210420840@80P@1PP11@2d2oam2H/;f2VE^I7=dLVEQK@YUKVA_HVX: >20`86mRJPXa>3Tc<0YUKVA_HVX:C@P;dQUJFMX M20a=S@P;d=_K6mbDg1QHfD:;dAUMVUSIDMbHGTP;dU^M6EbL6m/HGAU87AbMFDP ;d9YM7=@IG93Kfe`KfiUKW@P>20_AVU/M6Eb82m6K65dIDAUHfmTIB0n?PYcM79U HFd:N07]d3410000`Z3nZFL;;hQ0HL200@<631P`H<200@<631P`H<200@<631P` H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<20 0@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<6 31P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P` H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<20 0@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<631P`H<200@<6 31P`H<200@<631P`H>0o83dPE1569BH1@0XJ49WI41DHD4BUFI5C0 0DN78V=550^3PV;G2O8@D<1:5LV2GPIj=l1fFm E4VJ0>Gg:=?Cn9a<030DVEoRoTiJ9h0N:IW i8X4RDURYQ7GV6WUjg]FMKVJ?VofMlNOU?m?LQjneGa9^c?WT6b/;kdF0?HTFY/M/kjE E@2dK@I0iN6/CnlP0?850;CNW??PSI`1U`4El0=L0/Y1^iSDRALN@31XNQHIPH 5/HIhhMIS>5REV7FHTX`eIQSV5I<5nHfIQ0cPOV2YF;E/JIH9j`oMPTf4I^=;LAF H8mPFk2G/@?HHN`k70k7`1WR771n^1QLn2 3l5cl69l8Kh:Oaao7]n?7lJo9i09FPA[PPlQUR0TK2AD41X8i`SmQ172=561Z4md 8XH@NLALHRVaS]Q1_4TL9TjC54V691MB92VI]85DBFXRGBHm9[dQTlTjI4Mb65U0 GTn^99lPGbD?TSm@U2PV54m:74E2fDhiB[U0ND1i@jEB3JQ^e5RZV;ZMFTnmA7e: OBm7Tc>GliOSbJfCZi5[UN^GNbE?U=NGMiMO;YlWGb5oB_jVo;P2DL50`E>1Xk1F XDKQ]<8mQDU5VZ:EHXQRVV:9HX?R=LEA9KbBPI:g4TnY@>V`dRFU8AY2djEid[Rd CK@jfVGJ<1e7=jCkdi?YaO@Oj;gd2FDUIE_U:>DLiA[U/lYB1/8`H?PcDQVUS9>< ^hb?lcCV^LoScm/f[fUNok`YUOTZKRYlUB:EIYD1UHnZC5E_eACEWJY]ZToD<6XV JV5ZfF[keBj[SLnWcgNNcieO=?oTo8OZ/;Z9N[SjJ_G3jSgZTaZJ6[hJ6AYE6YLd aSDIVVjJbI[UV^LdakAXFP^e15[UF^NeGS2EVNkX/eQWXdjccQ=MTRiK=d6gG;MCMd9?BbmH;en_DNnQ?U6O[InT_dNoFgo:`=0P fV2;@I_1Z:6:XKmQWV6ShFd/Dbg[;1mI:ET5F6fdj[3j`m[4VV]MHgg7QV[SHk?>Y]gV]JfY;Mmf_nem>iYM /=dF^djkcoH>mR;k9_/a1cf7N8Nm3_OHM7HX^hAmeA7[j>6hc_63LjS2``Gl1OD;AQbdG7Q^1abTBiT;XaON72Qe5GKUN=Jjo[8:hnh^kQo^BilH[ihgaGOQUo944UhBbQ=54UlAMRF=9[TTEBN<2Cd6eh7FbGo:1i:VD T9BS:C>YdJW=JHBdn;CC@REQR[0[GCjbVWEkUDCXT3ATD`XLeUV ^iR>oTceB8`TVbF3F@^cJ[;NIdMUWlYAc17Vm>BJi6k;7LWcbO]n=FHeMgEW_WKn Q_c1=Ni[3Zf5eZiLfkU>Meg1^^7e_^^?KB1]B=W`bdK;SFDKgfj:g]AAX56`_V1X /noVaT:i@U7Q_Bg>F`i/aF`EK>gMI[>]J]^G8UkAmF;;hX[RCbGLT^_OFGeGnMg< mXC]_JGfYO]gh7H8MmcMjK[cF9URFEkId:kPGJgUc?:Rl[NkEnbnEV5KLF0?JHmT Sk@bZ;:mBZmZAmFWjZCZPAZ?V^JmjW^gkIgJam_G_mm]Om<1S@?51chN51blOlSg D6^]@Fg5HMcQ[e8lI7?AhE7YLO2SgGE>mCG=jPgU3K2SI;6 /N=aafomh?E3Na>[jE0cXkWh13PQ>O7RaoPOkihM7LhM;CnKogcdS?JIV[?:Id_?TLhEW9/iWgMnlT;6QO6; RAN7>UMd?[Zdi=:M[[2^g/^1UjmNlKUbZM^mnoaEUj]W[SUM>gfMOKg]Q_f=eQjk WYIOk7iYjKG_KKgYL;?mU^>]S[h5ONOjGO/_g_JjONF>oidK0h/6n^h^_W_oG]`m jGgNoM47Z@mN?laj>?eXoF?/hj8W2TlZWZXo[OgEn=MVZKgdk:3GHCCMfW_YZN:gZ^n?oJ1oJ7kHoC7TNW/CoQ? UIn=?gMl2OcbN2I]I^KOmhCcn`YUKVAcM79UHFd:IFiTKf9Z2S4c830PKf9Z2S8f 30bC@d<3MJ<30W<30W:@YUKVA_HVX: CPP<30`<30PKR0:<30`<30`<30bCD`>B0`<30`<21^80X`<30`<38`<30f830`<30`86hP2S0`<30`3Pa830`<30`86hP 2S0`<30`20`<30`<21^80YdLV5YK6Eb 2S`l82mCJGYU834g82mBKfmd834d830PDR0_BFiVKb0a830PDR0_BD@PFb0lHS8i >CHd3TfIVDn2SaRCIVIChPGB0n?PYcM65bM7QbIFH:"], "Graphics", ImageSize->{394, 164}, ImageMargins->0, ImageRegion->{{0., 1.}, {0., 1.}},ExpressionUUID-> "b9fa3a54-2ee3-47eb-830e-4d89d9022498"]], "Input", CellChangeTimes->{{3.728058151655451*^9, 3.7280582039027777`*^9}, 3.7280582479309607`*^9},ExpressionUUID->"dd2eea51-5f8c-477a-969c-\ 40d0e6bb8522"], Cell[CellGroupData[{ Cell["Cryptography and Security Protocols", "Chapter", CellChangeTimes->{{3.7280582612197733`*^9, 3.728058304007764*^9}},ExpressionUUID->"d879540b-f66b-445d-b21c-\ 469a1ac8927b"], Cell["\<\ Paulo Mateus MMA\[Dash]MEIC \ \>", "Text", CellChangeTimes->{{3.728058310970299*^9, 3.7280583251576*^9}},ExpressionUUID->"5ff39934-3c63-48e9-bc45-d6fe28657bc7"] }, Open ]], Cell[CellGroupData[{ Cell["Other cryptographic primitives", "Chapter", CellChangeTimes->{{3.728058333692665*^9, 3.728058340387947*^9}, { 3.728193103504583*^9, 3.728193138381463*^9}, {3.728193189692791*^9, 3.728193190139413*^9}, {3.728916493161105*^9, 3.72891650643587*^9}, { 3.832822355295742*^9, 3.8328223602749033`*^9}},ExpressionUUID->"bcd70196-a89a-4af2-8c17-\ cd57bc2e5f96"], Cell[CellGroupData[{ Cell["Cryptographic hash functions", "Section", CellChangeTimes->{{3.733482419796062*^9, 3.733482422045478*^9}, { 3.733482454810458*^9, 3.733482455650488*^9}, {3.832822364803924*^9, 3.832822371940975*^9}},ExpressionUUID->"96c07e7d-fe07-4b93-8c3f-\ 2e7ffdd7405a"], Cell[TextData[{ StyleBox["Definition", FontWeight->"Bold"], ": A polynomial-time family of functions ", Cell[BoxData[ FormBox[ SubscriptBox[ RowBox[{"{", RowBox[{ SubscriptBox["h", "n"], ":", RowBox[{ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", RowBox[{"p", "(", "n", ")"}]], "\[RightArrow]", SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", "*"]}]}], "}"}], RowBox[{"n", "\[Element]", "\[DoubleStruckCapitalN]"}]], TraditionalForm]],ExpressionUUID->"ae6cab62-40b3-4e50-ad02-75580c49fb30"], " ,where p is a positive polynomial, is said to be\n\[Bullet] strongly \ collision-free: if it is (hard) impossible to find in polynomial-time x,x\ \[CloseCurlyQuote] \[Element] ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", RowBox[{"p", "(", "n", ")"}]], TraditionalForm]],ExpressionUUID-> "131952fc-8b81-4a90-b26c-f7b2d445757a"], " such that ", Cell[BoxData[ FormBox[ SubscriptBox["h", "n"], TraditionalForm]],ExpressionUUID-> "48fb27a4-72fd-4feb-8083-a8fd5aa7bfaf"], "(x)=", Cell[BoxData[ FormBox[ SubscriptBox["h", "n"], TraditionalForm]],ExpressionUUID-> "b36db7b4-7c40-45e3-8ae1-e7c45133f9e5"], "(x\[CloseCurlyQuote])\n\[Bullet] weakly collision-free: if given x \ \[Element] ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", RowBox[{"p", "(", "n", ")"}]], TraditionalForm]],ExpressionUUID-> "e45f4a54-4603-4b44-842f-79512f86bee1"], ", it is impossible to find in polynomial time \nx\[CloseCurlyQuote] \ \[Element] ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", RowBox[{"p", "(", "n", ")"}]], TraditionalForm]],ExpressionUUID-> "3b950187-f6c4-43f2-b4c7-700027f2d9ed"], " such that ", Cell[BoxData[ FormBox[ SubscriptBox["h", "n"], TraditionalForm]],ExpressionUUID-> "902ba3bd-742c-44b3-99a3-b990a1bcf20b"], "(x)=", Cell[BoxData[ FormBox[ SubscriptBox["h", "n"], TraditionalForm]],ExpressionUUID-> "ee4c3576-9c31-4488-8644-89003bbcd8dd"], "(x\[CloseCurlyQuote])\n\n", StyleBox["Exercise", FontWeight->"Bold"], ": Show that the strongly collision-free implies weakly \n\nAssume h is not \ weakly, then for a given x it is possible to find x\[CloseCurlyQuote] in PT, \ so randomly choose an x, and the provide the pair (x,x\[CloseCurlyQuote]) \ that collides, clearly then h is not stronfly collision-free.\n\n", StyleBox["Exercise", FontWeight->"Bold"], ": Show that the existence of a weakly collision-free family of functions \ implies P\[NotEqual]NP.\n\n", StyleBox["Proof:", FontWeight->"Bold"], " Assume P=NP, and and let ", Cell[BoxData[ FormBox[ SubscriptBox[ RowBox[{"{", RowBox[{ SubscriptBox["h", "n"], ":", RowBox[{ SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", RowBox[{"p", "(", "n", ")"}]], "\[RightArrow]", SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", "*"]}]}], "}"}], RowBox[{"n", "\[Element]", "\[DoubleStruckCapitalN]"}]], TraditionalForm]],ExpressionUUID->"d6374d7d-acd1-430a-80d6-1e929ab51bdc"], " be a polynomial-time family of functions (with collisions) we are going to \ show that given any x\[Element]", Cell[BoxData[ FormBox[ RowBox[{" ", SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", RowBox[{"p", "(", "n", ")"}]]}], TraditionalForm]],ExpressionUUID-> "ae185ad9-64fe-47b3-98fb-87119cf615ff"], " then one can find in PT x\[CloseCurlyQuote]\[NotEqual]x such that ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["h", "n"], "(", "x", ")"}], "=", RowBox[{ SubscriptBox["h", "n"], "(", RowBox[{"x", "'"}], ")"}]}], TraditionalForm]],ExpressionUUID-> "4f5d6d27-8651-48a0-9356-0e2cf972d9f0"], "\n\n", Cell[BoxData[ FormBox[ RowBox[{"A", "=", RowBox[{"{", "("}]}], TraditionalForm]],ExpressionUUID-> "2cbf931b-4c7a-4e81-910f-8c4c0e07b433"], "x,p): p is a prefix of a collision of x\[Element]", Cell[BoxData[ FormBox[ RowBox[{" ", SubsuperscriptBox["\[DoubleStruckCapitalZ]", "2", RowBox[{"p", "(", "n", ")"}]]}], TraditionalForm]],ExpressionUUID-> "3174a214-8983-44b4-b28c-a4231d92e50b"], "}\n\nnow clearly A is in NP, why because A is the projection of the set B\n\ \nB={(x,p,w): h(x)=h(w) and p is a prefix of w, and x\[NotEqual] w}\n\nand \ checking whether (x,p,w)\[Element] B can be done in PT (on the first two \ variables).\n\nSo assuming P=NP we have that ", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "A"], TraditionalForm]],ExpressionUUID-> "c51b1da6-defd-4f6e-8be0-72ebd797c7b8"], " can be computed in PT\n\nHere is the pseudo-code to construct the \ collision of x\n\nInput x\noutput x\[CloseCurlyQuote]\nx\[CloseCurlyQuote]=\ \[CurlyEpsilon] //empty string;\nwhile(|x|!=|x\[CloseCurlyQuote]|){ \n \ if(", Cell[BoxData[ FormBox[ SubscriptBox["\[Chi]", "A"], TraditionalForm]],ExpressionUUID-> "553a7a54-7469-423c-a379-54496d9e571c"], "(x,x\[CloseCurlyQuote]0)==1) x\[CloseCurlyQuote]=x\[CloseCurlyQuote]0; \ //divide and conquer or bisection or whatever...\n else \ x\[CloseCurlyQuote]=x\[CloseCurlyQuote]1 \n}\n\nClearly this program runs in \ polynomial time in n, and for sure the solution is a collision\n\nDone!\n\n\n\ \nmd5 and sha1 are not strongly collision resistant but they are still weakly \ collision-free!\n\nSHA2 is still strongly collision resistant.\n\n", StyleBox["Note", FontWeight->"Bold"], ": Strong collision vulnerable functions are problematic when hashing code \ that allows for if-then-else commands.\n\nh(X)=h(Y) it is publicly known for \ md5 and sha1\n\nm1 ZZZZZZZZZif(\[DownArrow]X==Y)then{aspirin}else{morphine}\n\ \n\[DownArrow] denote the place where hash function block syncs\n\nm2 \ ZZZZZZZZZif(\[DownArrow]Y==Y)then{aspirin}else{morphine}\n\n(m1, ", Cell[BoxData[ FormBox[ SubscriptBox["sig", RowBox[{ RowBox[{"Doctor", "'"}], "s_privatekey"}]], TraditionalForm]], ExpressionUUID->"06531282-730f-4c8c-b152-4abb95eef9c8"], "(h1(m1)))\n(m2, ", Cell[BoxData[ FormBox[ SubscriptBox["sig", RowBox[{ RowBox[{"Doctor", "'"}], "s_privatekey"}]], TraditionalForm]], ExpressionUUID->"bfca8c98-974b-4b24-a506-7d1b7f0e78ae"], "(h1(m1)))=(m2, ", Cell[BoxData[ FormBox[ SubscriptBox["sig", RowBox[{ RowBox[{"Doctor", "'"}], "s_privatekey"}]], TraditionalForm]], ExpressionUUID->"69d62276-642f-446b-95ca-25d07c3b00bc"], "(h2(m1)))\n\n", StyleBox["Note: ", FontWeight->"Bold"], "Use of hashing functions is relevant in signing.\n\n", StyleBox["Proposition[Birthday attack]\n", FontWeight->"Bold"], " Let h:X\[RightArrow]Z be be such that |X|=m, |Z|=n and ", Cell[BoxData[ FormBox[ RowBox[{"|", RowBox[{ SuperscriptBox["h", RowBox[{"-", "1"}]], "(", "z", ")"}], "|", RowBox[{"\[TildeTilde]", RowBox[{"m", "/", "n"}], " ", "\[GreaterEqual]", "2"}]}], TraditionalForm]],ExpressionUUID->"a46d8fe1-b123-4ccd-a831-606cd3b4e8ea"], ", then the number of samples k required to find a collision for h with \ probability \[CurlyEpsilon] is\nk\[TildeTilde]", Cell[BoxData[ FormBox[ SqrtBox[ RowBox[{ RowBox[{"-", "2"}], "n", " ", RowBox[{"ln", "(", RowBox[{"1", "-", "\[CurlyEpsilon]"}], ")"}]}]], TraditionalForm]], ExpressionUUID->"ffb517ef-26a1-4083-b11b-cc62fb45c2f9"], "\n\n", StyleBox["Proof:\n", FontWeight->"Bold"], "What is the probability of not having a collision in k samples\n\n\ (1-1/n)(1-2/n)...(1-(k-1)/n) of no collisions!\n\n", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[Product]", RowBox[{"i", "=", "1"}], RowBox[{"k", "-", "1"}]], TraditionalForm]],ExpressionUUID-> "36523e5f-9d2a-45a4-bc00-2ea6dbecbc8a"], "(1-i/n)\n\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"1", "-", "\[Delta]"}], "\[TildeTilde]", SuperscriptBox["e", RowBox[{"-", "\[Delta]"}]]}], TraditionalForm]],ExpressionUUID-> "1118d3c0-d468-45b4-bf79-a11d32206f66"], " for small \[Delta]\n\n", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["e", RowBox[{"-", "\[Delta]"}]], "=", RowBox[{"1", "-", "\[Delta]", "+", RowBox[{ SuperscriptBox["\[Delta]", "2"], "/", "2"}], "-", SuperscriptBox["\[Delta]", "3"]}]}], TraditionalForm]],ExpressionUUID-> "39854781-3453-4675-b1d9-b7bdaafc2b37"], "/3!...\n\nand so ", Cell[BoxData[ FormBox[ SubsuperscriptBox["\[Product]", RowBox[{"i", "=", "1"}], RowBox[{"k", "-", "1"}]], TraditionalForm]],ExpressionUUID-> "a1d9e328-1cf2-4308-9309-faa08663c881"], "(1-i/n)\[TildeTilde]", Cell[BoxData[ FormBox[ RowBox[{ SubsuperscriptBox["\[Product]", RowBox[{"i", "=", "1"}], RowBox[{"k", "-", "1"}]], SuperscriptBox["e", RowBox[{ RowBox[{"-", "i"}], "/", "n"}]]}], TraditionalForm]],ExpressionUUID-> "a58eda2d-0d33-4f53-9c23-1f439e4b20ff"], "=\n", Cell[BoxData[ FormBox[ SuperscriptBox["e", RowBox[{"\[Sum]", RowBox[{ RowBox[{"-", "i"}], "/", "n"}]}]], TraditionalForm]],ExpressionUUID-> "9aa157d2-86f3-4ec4-b9fd-9e9b2ba124f2"], "=", Cell[BoxData[ FormBox[ SuperscriptBox["e", RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"k", "(", RowBox[{"k", "-", "1"}], ")"}]}], "/", "2"}], "n"}]], TraditionalForm]],ExpressionUUID->"99d37c30-cd92-47a5-a21f-8d7b2c64e588"], " the probability of no collision\n\nand so the probability of collision is \ \[CurlyEpsilon]=1-", Cell[BoxData[ FormBox[ SuperscriptBox["e", RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"k", "(", RowBox[{"k", "-", "1"}], ")"}]}], "/", "2"}], "n"}]], TraditionalForm]],ExpressionUUID->"5dc5be86-dca3-4e0a-b517-795b25052d09"], "\n(1-\[CurlyEpsilon])=", Cell[BoxData[ FormBox[ SuperscriptBox["e", RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"k", "(", RowBox[{"k", "-", "1"}], ")"}]}], "/", "2"}], "n"}]], TraditionalForm]],ExpressionUUID->"f951cc2e-58db-43d3-a276-f728e1caf87f"], "\n\nln(1-\[CurlyEpsilon])=-k(k-1)/2n and so -2n ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"ln", RowBox[{"(", RowBox[{"1", "-", "\[CurlyEpsilon]"}], ")"}]}], "=", RowBox[{ RowBox[{"k", RowBox[{"(", RowBox[{"k", "-", "1"}], ")"}]}], "\[TildeTilde]", SuperscriptBox["k", "2"]}]}], TraditionalForm]],ExpressionUUID-> "7c26d2b3-8a03-4c09-97a6-f3911caad59f"], " and so\nk\[TildeTilde]", Cell[BoxData[ FormBox[ SqrtBox[ RowBox[{ RowBox[{"-", "2"}], "n", " ", RowBox[{"ln", "(", RowBox[{"1", "-", "\[CurlyEpsilon]"}], ")"}]}]], TraditionalForm]], ExpressionUUID->"09194e54-bb6a-474e-a8b4-dfcd02dbf7f8"] }], "Text", CellChangeTimes->{{3.7334824750516853`*^9, 3.733482693130889*^9}, { 3.733482748178797*^9, 3.733483042722968*^9}, {3.733483138335862*^9, 3.733483625485993*^9}, {3.733483671677885*^9, 3.733483672638171*^9}, { 3.733483705627139*^9, 3.733483785411121*^9}, {3.7334840341632023`*^9, 3.7334840373552647`*^9}, {3.733485167101954*^9, 3.7334851678445053`*^9}, { 3.733490358901039*^9, 3.733490359971623*^9}, {3.733490443809733*^9, 3.733490596285624*^9}, {3.73349063031285*^9, 3.733490774517768*^9}, { 3.733490808740118*^9, 3.7334909127596397`*^9}, {3.7334909549352407`*^9, 3.733491142553914*^9}, {3.733491182634152*^9, 3.7334912436225977`*^9}, { 3.733491346864499*^9, 3.733491419958028*^9}, {3.733491457761619*^9, 3.733491509057796*^9}, {3.733491543770652*^9, 3.733491608512694*^9}, { 3.733491734896125*^9, 3.733491755988905*^9}, {3.7334917909265413`*^9, 3.7334918016609383`*^9}, 3.7334920087791357`*^9, {3.7334921725906076`*^9, 3.7334921803174763`*^9}, {3.7334922473036346`*^9, 3.7334925271696444`*^9}, {3.73349256309936*^9, 3.7334927473869877`*^9}},ExpressionUUID->"f900253f-b20d-41f8-90ae-\ fb78122ca798"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"N", "[", RowBox[{"Sqrt", "[", RowBox[{ RowBox[{"-", "2"}], "*", "365", RowBox[{"Log", "[", RowBox[{"1", "/", "2"}], "]"}]}], "]"}], "]"}]], "Input", CellChangeTimes->{{3.733492117656375*^9, 3.733492154230473*^9}, { 3.733492759959013*^9, 3.7334927949041224`*^9}},ExpressionUUID->"a81bc31a-cf23-4668-b0f9-\ a67ebd2c2aa4"], Cell[BoxData["22.49438689559598`"], "Output", CellChangeTimes->{{3.733492136516706*^9, 3.733492156391859*^9}, { 3.733492771730674*^9, 3.7334927954263906`*^9}},ExpressionUUID->"bc0fdd01-0e07-418d-8453-\ f2b38eb1220b"] }, Open ]], Cell[TextData[{ StyleBox["Theorem[Aaronson+Shi]", FontWeight->"Bold"], " There are (computable) functions h (not necessarily compute in PT) for \ which there is no BQP algorithm that finds collisions." }], "Text", CellChangeTimes->{{3.7334824750516853`*^9, 3.733482693130889*^9}, { 3.733482748178797*^9, 3.733483042722968*^9}, {3.733483138335862*^9, 3.733483625485993*^9}, {3.733483671677885*^9, 3.733483672638171*^9}, { 3.733483705627139*^9, 3.733483785411121*^9}, {3.7334840341632023`*^9, 3.7334840373552647`*^9}, {3.733485167101954*^9, 3.7334851678445053`*^9}, { 3.733490358901039*^9, 3.733490359971623*^9}, {3.733490443809733*^9, 3.733490596285624*^9}, {3.73349063031285*^9, 3.733490774517768*^9}, { 3.733490808740118*^9, 3.7334909127596397`*^9}, {3.7334909549352407`*^9, 3.733491142553914*^9}, {3.733491182634152*^9, 3.7334912436225977`*^9}, { 3.733491346864499*^9, 3.733491419958028*^9}, {3.733491457761619*^9, 3.733491509057796*^9}, {3.733491543770652*^9, 3.733491608512694*^9}, { 3.733491734896125*^9, 3.733491755988905*^9}, {3.7334917909265413`*^9, 3.7334918016609383`*^9}, 3.7334920087791357`*^9, {3.733492822645249*^9, 3.7334928383828487`*^9}, {3.733493025066833*^9, 3.733493026891139*^9}},ExpressionUUID->"7810b32d-45f1-4d16-ba61-\ b550704f5771"], Cell["", "Text", CellChangeTimes->{{3.7334824750516853`*^9, 3.733482693130889*^9}, { 3.733482748178797*^9, 3.733483042722968*^9}, {3.733483138335862*^9, 3.733483625485993*^9}, {3.733483671677885*^9, 3.733483672638171*^9}, { 3.733483705627139*^9, 3.733483785411121*^9}, {3.7334840341632023`*^9, 3.7334840373552647`*^9}, {3.733485167101954*^9, 3.7334851678445053`*^9}, { 3.733490358901039*^9, 3.733490359971623*^9}, {3.733490443809733*^9, 3.733490596285624*^9}, {3.73349063031285*^9, 3.733490774517768*^9}, { 3.733490808740118*^9, 3.7334909127596397`*^9}, {3.7334909549352407`*^9, 3.733491142553914*^9}, {3.733491182634152*^9, 3.7334912436225977`*^9}, { 3.733491346864499*^9, 3.733491419958028*^9}, {3.733491457761619*^9, 3.733491509057796*^9}, {3.733491543770652*^9, 3.733491608512694*^9}, { 3.733491734896125*^9, 3.733491755988905*^9}, {3.7334917909265413`*^9, 3.7334918016609383`*^9}, 3.7334920087791357`*^9},ExpressionUUID->"651e813d-190e-4ab7-a155-\ 57b2299c3b1c"] }, Open ]], Cell[CellGroupData[{ Cell["Secret Sharing", "Section", CellChangeTimes->{{3.733482419796062*^9, 3.733482422045478*^9}, { 3.733482454810458*^9, 3.733482455650488*^9}, {3.733485181060627*^9, 3.733485184371387*^9}, {3.733493140506343*^9, 3.733493144712038*^9}},ExpressionUUID->"50d73d0c-7641-475b-ba3c-\ 6e804642a707"], Cell[TextData[{ StyleBox["\n", FontWeight->"Bold"], "Secret sharing problem: \n", StyleBox["w", FontWeight->"Bold"], " elements want to share a key ", StyleBox["k", FontWeight->"Bold"], " such that they need ", StyleBox["t ", FontWeight->"Bold"], "elements to cooperate to reconstruct the key ", StyleBox["k", FontWeight->"Bold"], ". ", StyleBox["\n\nTheorem[Lagrange Interpolation Polynomial] ", FontWeight->"Bold"], "Given n points ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"(", RowBox[{ SubscriptBox["x", "i"], ",", SubscriptBox["y", "i"]}], ")"}], " "}], TraditionalForm]], ExpressionUUID->"03b4219c-06e2-4aff-82ac-4352e50be6dc"], " with ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["x", "i"], "\[NotEqual]", RowBox[{ SubscriptBox["x", "j"], " ", "if", " ", "i"}], "\[NotEqual]", "j"}], TraditionalForm]],ExpressionUUID->"836fcd30-d514-47c3-a1f6-a0fdb21722c6"], ", there is a polynomial of degree smaller than or equal than n-1 that \ passes over all these points. Moreover such polynomial is\n\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"p", "(", "x", ")"}], " ", "=", " ", RowBox[{ SubsuperscriptBox["\[Sum]", RowBox[{"i", "=", "1"}], "n"], RowBox[{ SubscriptBox["p", "j"], "(", "x", ")"}]}]}], TraditionalForm]], ExpressionUUID->"da80a21b-be87-4441-b681-dca5b519ab68"], " \nwhere ", Cell[BoxData[ FormBox[ SubscriptBox["p", "j"], TraditionalForm]],ExpressionUUID-> "d12c79ea-e197-40a0-87f9-809a4413060a"], "(x)=", Cell[BoxData[ FormBox[ SubscriptBox["y", "j"], TraditionalForm]],ExpressionUUID-> "9a223270-c6b5-4dff-a393-bcbcd64fcf23"], Cell[BoxData[ FormBox[ SubsuperscriptBox["\[Product]", RowBox[{ RowBox[{"k", "=", "1"}], ",", "\[LineSeparator]", RowBox[{"k", "\[NotEqual]", "j"}]}], "n"], TraditionalForm]], ExpressionUUID->"73fe958a-8a41-437c-bdf1-ac42ce791ea6"], Cell[BoxData[ FormBox[ FractionBox[ RowBox[{"(", RowBox[{"x", "-", SubscriptBox["x", "k"]}], ")"}], RowBox[{"(", RowBox[{ SubscriptBox["x", "j"], "-", SubscriptBox["x", "k"]}], ")"}]], TraditionalForm]],ExpressionUUID-> "5add1c93-013c-42fe-9d79-990049a2e9bd"], " (so ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["p", "j"], "(", SubscriptBox["x", "j"], ")"}], "=", RowBox[{ SubscriptBox["y", "j"], " ", "and", " "}]}], TraditionalForm]], ExpressionUUID->"880752f5-817a-4fd6-9018-69a4f3aa478f"], Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["p", "j"], "(", SubscriptBox["x", "k"], ")"}], "=", RowBox[{ RowBox[{"0", " ", "if", " ", "k"}], "\[NotEqual]", RowBox[{"j", "!"}], " "}]}], TraditionalForm]],ExpressionUUID-> "a24cf84e-ea20-4734-9c7d-551007e60219"], "\n\n", StyleBox["Exercise[Shamir Secret Sharing]: ", FontWeight->"Bold"], "User LIP to set up a secret sharing scheme where a secret is split among ", StyleBox["w", FontWeight->"Bold"], " agents so that \n", StyleBox["t", FontWeight->"Bold"], " (\[LessEqual]w) are required to compute the scheme.\n\n", StyleBox["Solution:", FontWeight->"Bold"], "\nCreate a polynomial of degree t-1\n\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"p", "(", "x", ")"}], " ", "=", RowBox[{ SubsuperscriptBox["\[Sum]", RowBox[{"i", "=", "0"}], RowBox[{"t", "-", "1"}]], RowBox[{ SubscriptBox["a", "i"], SuperscriptBox["x", "i"], " ", RowBox[{"(", RowBox[{"mod", " ", "p"}], ")"}]}]}]}], TraditionalForm]], ExpressionUUID->"fb685700-26f6-45df-8f90-7dbddbea8743"], " where ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["a", "0"], "=", RowBox[{"k", "=", RowBox[{ RowBox[{"p", "(", "0", ")"}], " ", "and", " ", SubscriptBox["a", RowBox[{"i", " "}]], " ", "are", " ", "random"}]}]}], TraditionalForm]],ExpressionUUID->"02f3f984-4f3d-4d80-94c9-51d0d714f003"], ".\n\nGive to w elements points ", Cell[BoxData[ FormBox[ RowBox[{"(", RowBox[{ SubscriptBox["x", "i"], ",", RowBox[{"p", "(", SubscriptBox["x", "i"], ")"}]}], ")"}], TraditionalForm]], ExpressionUUID->"de9e9473-3f98-49b9-9f76-35c28c6c955e"], " (clearly with ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ SubscriptBox["x", "i"], "\[NotEqual]", "0"}], ")"}], TraditionalForm]], ExpressionUUID->"06ad9f6b-7591-42a1-b205-91c36629cac4"], " now it is enough (using LIP) for t guys to get together to recover p(x) \ and so k" }], "Text", CellChangeTimes->{{3.7334852265662127`*^9, 3.733485376568862*^9}, { 3.73348541307683*^9, 3.7334855102866592`*^9}, {3.733485560421673*^9, 3.73348568609198*^9}, {3.733485739315997*^9, 3.73348574689194*^9}, { 3.7334931464506483`*^9, 3.733493222420992*^9}, 3.7334932788246098`*^9, { 3.7334934487755213`*^9, 3.733493474303916*^9}, {3.7334935274654818`*^9, 3.733493678241006*^9}, {3.733720775373197*^9, 3.733720834316887*^9}, { 3.830501965091414*^9, 3.830501969334592*^9}, 3.8305022314405537`*^9, { 3.830502390221807*^9, 3.830502409666507*^9}},ExpressionUUID->"ba264cc5-b166-43ea-8364-\ d514175563ce"], Cell[BoxData[ RowBox[{"\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"k", "=", "9"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"P", "[", "x_", "]"}], ":=", RowBox[{"Mod", "[", RowBox[{ RowBox[{"k", "+", RowBox[{"33", "x"}], "+", RowBox[{"7", " ", SuperscriptBox["x", "2"]}]}], " ", ",", "47"}], "]"}]}], "\[IndentingNewLine]"}]}]], "Input", CellChangeTimes->{{3.733485609918488*^9, 3.733485621691722*^9}, { 3.830502507450946*^9, 3.830502546376999*^9}}, CellLabel->"In[2]:=",ExpressionUUID->"a191a00e-a955-4368-b026-26266d82b37c"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"P", "[", "0", "]"}]], "Input", CellChangeTimes->{{3.830502548387948*^9, 3.830502549557762*^9}}, CellLabel->"In[4]:=",ExpressionUUID->"f44bc652-098a-4fe7-87c3-12587ec7c1a9"], Cell[BoxData["9"], "Output", CellChangeTimes->{3.830502550603677*^9}, CellLabel->"Out[4]=",ExpressionUUID->"ef161819-4747-4c4b-8f3d-00f032d35406"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"P", "[", "3", "]"}]], "Input", CellChangeTimes->{{3.830502562689828*^9, 3.830502563927206*^9}}, CellLabel->"In[5]:=",ExpressionUUID->"fdf32ea6-b9d8-4177-96da-65cb10a955fb"], Cell[BoxData["30"], "Output", CellChangeTimes->{3.83050256458986*^9}, CellLabel->"Out[5]=",ExpressionUUID->"7e72f2f4-65a3-4e84-ae15-b1cb97b5e42b"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"P", "[", "5", "]"}]], "Input", CellChangeTimes->{{3.8305025668995657`*^9, 3.830502568865282*^9}}, CellLabel->"In[6]:=",ExpressionUUID->"c72ef502-8917-47cf-8809-732312746d1c"], Cell[BoxData["20"], "Output", CellChangeTimes->{3.8305025694028*^9}, CellLabel->"Out[6]=",ExpressionUUID->"39cd793e-4fac-4258-99df-9dc15e0b8b14"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"P", "[", "7", "]"}]], "Input", CellChangeTimes->{{3.830502571110498*^9, 3.8305025722106543`*^9}}, CellLabel->"In[7]:=",ExpressionUUID->"e7b03c0a-5a45-476d-80dd-fa3449f8bffc"], Cell[BoxData["19"], "Output", CellChangeTimes->{3.83050257289688*^9}, CellLabel->"Out[7]=",ExpressionUUID->"23023f02-5929-49c7-8ddc-8f576c2cda81"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"P", "[", "11", "]"}]], "Input", CellChangeTimes->{{3.830502575629015*^9, 3.830502578583082*^9}}, CellLabel->"In[8]:=",ExpressionUUID->"c2b725a8-9701-45f3-8df2-ceef26c3e69e"], Cell[BoxData["44"], "Output", CellChangeTimes->{3.830502579106101*^9}, CellLabel->"Out[8]=",ExpressionUUID->"820b3582-71f5-4853-adfb-5156a42e237c"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"InterpolatingPolynomial", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"3", ",", "30"}], "}"}], ",", RowBox[{"{", RowBox[{"5", ",", "20"}], "}"}], ",", RowBox[{"{", RowBox[{"7", ",", "19"}], "}"}]}], "}"}], ",", "x", ",", RowBox[{"Modulus", "\[Rule]", "47"}]}], "]"}]], "Input", CellChangeTimes->{{3.7334858728731127`*^9, 3.733485912340116*^9}, { 3.733493822114439*^9, 3.733493823337367*^9}, {3.8305025871025*^9, 3.8305026199150467`*^9}}, CellLabel->"In[11]:=",ExpressionUUID->"ef28fdcf-6bba-45ce-aab3-c90f86fa49a5"], Cell[BoxData[ RowBox[{"30", "+", RowBox[{ RowBox[{"(", RowBox[{"42", "+", RowBox[{"7", " ", RowBox[{"(", RowBox[{ RowBox[{"-", "5"}], "+", "x"}], ")"}]}]}], ")"}], " ", RowBox[{"(", RowBox[{ RowBox[{"-", "3"}], "+", "x"}], ")"}]}]}]], "Output", CellChangeTimes->{ 3.733485912944117*^9, {3.733485943741284*^9, 3.733485955746208*^9}, 3.733493823902363*^9, {3.8305026061880283`*^9, 3.830502620371025*^9}}, CellLabel->"Out[11]=",ExpressionUUID->"0a87cbc5-5154-4741-ab92-b181366a363c"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Expand", "[", RowBox[{"%", ",", " ", RowBox[{"Modulus", "\[Rule]", "47"}]}], "]"}]], "Input", CellChangeTimes->{{3.7334859145863457`*^9, 3.73348595308388*^9}}, CellLabel->"In[12]:=",ExpressionUUID->"77b0de6d-943b-4521-810a-bf8b8e8f5d0f"], Cell[BoxData[ RowBox[{"9", "+", RowBox[{"33", " ", "x"}], "+", RowBox[{"7", " ", SuperscriptBox["x", "2"]}]}]], "Output", CellChangeTimes->{{3.733485917094612*^9, 3.73348595637785*^9}, 3.733493824800004*^9, {3.8305026080273848`*^9, 3.830502622861813*^9}}, CellLabel->"Out[12]=",ExpressionUUID->"4aec77a0-166f-46da-b99c-694de08b73b1"] }, Open ]], Cell[BoxData[ RowBox[{"{", RowBox[{"5", ",", RowBox[{"P", "[", "5", "]"}]}], "}"}]], "Input", CellChangeTimes->{{3.733493738446515*^9, 3.73349375142232*^9}},ExpressionUUID->"da594ea5-0652-4962-bde2-\ 68793e54e7ed"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{ RowBox[{"{", RowBox[{"5", ",", "34"}], "}"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{"{", RowBox[{"40", ",", RowBox[{"P", "[", "40", "]"}]}], "}"}]}], "Input", CellChangeTimes->{{3.733493756008754*^9, 3.733493770691844*^9}},ExpressionUUID->"b7006b76-7ccf-4e41-9b9a-\ 4751c09acca4"], Cell[BoxData[ RowBox[{"{", RowBox[{"5", ",", "34"}], "}"}]], "Output", CellChangeTimes->{{3.73349375971696*^9, 3.7334937709821377`*^9}},ExpressionUUID->"d529b1a0-e41a-4668-921b-\ caf623a63158"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{ RowBox[{"{", RowBox[{"40", ",", "20"}], "}"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{"{", RowBox[{"4", ",", RowBox[{"P", "[", "4", "]"}]}], "}"}]}], "Input", CellChangeTimes->{{3.733493794610249*^9, 3.733493798160801*^9}},ExpressionUUID->"b701d189-b53a-4b9a-b9c9-\ d846bd5eae05"], Cell[BoxData[ RowBox[{"{", RowBox[{"40", ",", "20"}], "}"}]], "Output", CellChangeTimes->{ 3.7334937984322987`*^9},ExpressionUUID->"d6d6526c-16c0-41ea-801f-\ 9f43564d33ea"], Cell[BoxData[ RowBox[{"{", RowBox[{"4", ",", "2"}], "}"}]], "Output", CellChangeTimes->{ 3.733493798436018*^9},ExpressionUUID->"b24b5628-8b3c-4e64-a3b9-\ 201cb48a52a0"] }, Open ]], Cell[TextData[{ "However, there is a problem? How can one be sure that his share is good ?\n\ \nSolving this problem is much harder, and that is our next step, called \n\n", StyleBox["Verifiable secret sharing.", FontWeight->"Bold"], "\n\nTo solve this problem we need the concept of OT and zero-knowledge" }], "Text", CellChangeTimes->{{3.733493867806755*^9, 3.733493938695878*^9}, { 3.733494037239503*^9, 3.733494048362892*^9}, {3.7334957529147778`*^9, 3.733495753240322*^9}, {3.733720819812607*^9, 3.733720853636623*^9}},ExpressionUUID->"ad9507c1-c6fc-4648-9efe-\ 9708cf24ccee"] }, Open ]], Cell[CellGroupData[{ Cell["Zero knowledge", "Section", CellChangeTimes->{{3.730701391810192*^9, 3.7307014019614162`*^9}, { 3.732259304144038*^9, 3.7322593079905977`*^9}, {3.732514621900153*^9, 3.732514627507069*^9}, {3.732515056380571*^9, 3.732515061331009*^9}, { 3.732515219243328*^9, 3.7325152210509653`*^9}, {3.732862474332458*^9, 3.732862476410837*^9}, {3.7328626596676893`*^9, 3.7328626646346827`*^9}, { 3.732864378624559*^9, 3.7328643861196127`*^9}, {3.732876168075222*^9, 3.732876169139079*^9}, {3.7334803550675497`*^9, 3.73348035629834*^9}, { 3.733721777837163*^9, 3.733721779779862*^9}},ExpressionUUID->"fb90bda6-58ca-482c-9958-\ ee0107ced906"], Cell[TextData[{ StyleBox["\n", FontWeight->"Bold"], "The notion of zero knowledge require the use of probabilistic programs that \ run in polynomial-time, that is, programs that have access to independent and \ fair Bernoulli\[CloseCurlyQuote]s. A ZK is a public verification of of a \ private secret.\n\n", StyleBox["Definition:", FontWeight->"Bold"], " A function f(n) is said to be ", StyleBox["negligible", FontSlant->"Italic"], " iff \nfor all positive polynomial p and n large enough f(n) < 1/p(n)", StyleBox["\n\nDefinition ", FontWeight->"Bold"], "Zero-knowledge protocol is a two-part (ping-pong) protocol (indexed by a \ security parameter \[Eta]) between a PPT prover ", StyleBox["P", FontWeight->"Bold"], " (Peggy), that knows some secret ", StyleBox["s", FontWeight->"Bold"], "; and a PPT verifier ", StyleBox["V", FontWeight->"Bold"], " (Victor) that wants to check whether P has the secret or not. The protocol \ must fulfill the following conditions:\n\n", StyleBox["1)", FontWeight->"Bold"], " ", StyleBox["Completeness:", FontWeight->"Bold"], " If P knows the secret then V accepts P up to a negligible probability;\n", StyleBox["2) Soundness: ", FontWeight->"Bold"], "If P does not know the secret then V accepts P with negligible probability;\ \n", StyleBox["3) Zero-knowledge", FontWeight->"Bold"], ": V learns nothing about the secret by interacting with P;\n\nTo properly \ define ZK (3) we need the notion of ", StyleBox["simulator", FontWeight->"Bold"], ". A simulator of V is a program that generates traces (transcripts) of the \ interaction between an honest P and (an eventually dishonest) V without \ interacting with P. It is enough that these traces cannot be distinguished \ from real ones by another PPT.\n\n", StyleBox["GMW - ZK protocol\n", FontWeight->"Bold"], " \nConsider two graphs ", Cell[BoxData[ FormBox[ SubscriptBox["G", "0"], TraditionalForm]],ExpressionUUID-> "193a871c-95b6-4336-b999-c04f284ff1c3"], " and ", Cell[BoxData[ FormBox[ SubscriptBox["G", "1"], TraditionalForm]],ExpressionUUID-> "d8739b5d-ad3c-4279-ab0f-b1e30c162172"], " and assume that P knows a secret isomorphism \n", Cell[BoxData[ FormBox[ RowBox[{"\[Sigma]", ":", RowBox[{ SubscriptBox["G", "1"], "\[RightArrow]", SubscriptBox["G", "0"], " "}]}], TraditionalForm]],ExpressionUUID-> "73c22b83-0ceb-49ea-b54f-89dad4f1843e"], ", (", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Sigma]", RowBox[{"-", "1"}]], ":", RowBox[{ SubscriptBox["G", "0"], "\[RightArrow]", SubscriptBox["G", "1"], " "}]}], TraditionalForm]],ExpressionUUID-> "d3811cfe-6d68-44e4-a22b-75fe939d7b21"], ") and both P and V know ", Cell[BoxData[ FormBox[ SubscriptBox["G", "0"], TraditionalForm]],ExpressionUUID-> "7b521319-c6b6-42ec-b6fd-20de4c045b4f"], " and ", Cell[BoxData[ FormBox[ SubscriptBox["G", "1"], TraditionalForm]],ExpressionUUID-> "d0ad75c5-c563-4feb-819d-e03ce1aed336"], ". \n\n1) Iterate \[Eta] times\n i) P creates a random iso \[Mu]:", Cell[BoxData[ FormBox[ SubscriptBox["G", "0"], TraditionalForm]],ExpressionUUID-> "a05f7882-18e5-44df-b4ba-9f34510ce3df"], "\[RightArrow]", Cell[BoxData[ FormBox[ SubscriptBox["G", "2"], TraditionalForm]],ExpressionUUID-> "48cbecc7-21b9-4d4b-a06e-5d28b7d6d6f1"], " (note that ", Cell[BoxData[ FormBox[ SubscriptBox["G", "2"], TraditionalForm]],ExpressionUUID-> "0c13ebde-2698-46ff-b7b8-875a86b02447"], " is also random) and sends ", Cell[BoxData[ FormBox[ SubscriptBox["G", "2"], TraditionalForm]],ExpressionUUID-> "c0113242-5f10-4ea9-827e-0cd54c69b259"], " to V //Commitment\n ii) V generates a random bit b \[Element]{0,1} and \ sends b to P //Challenge\n iii) P sends the isomorphism \[Lambda]=", Cell[BoxData[ FormBox[ SuperscriptBox["\[Mu]\[EmptySmallCircle]\[Sigma]", "b"], TraditionalForm]], ExpressionUUID->"e490d0c8-7371-4cc8-9c90-c05868c2338d"], ": ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["G", "b"], "\[RightArrow]", SubscriptBox["G", "2"]}], TraditionalForm]],ExpressionUUID-> "fcb12b26-5d54-49ed-873c-14200575257a"], " to V //Reply \[Mu]\[EmptySmallCircle]\[Sigma]:", Cell[BoxData[ RowBox[{ SubscriptBox["G", "1"], "\[RightArrow]", SubscriptBox["G", "2"]}]],ExpressionUUID-> "f3619d90-b161-43fe-95f6-7d5cd7de2c61"], "\n where ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Sigma]", "b"], "=", RowBox[{"\[Sigma]", " ", "if", " ", "b", " ", "is", " ", "1"}]}], TraditionalForm]],ExpressionUUID->"69c2b08e-baf4-4426-9c16-72705e09bc76"], " and ", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Sigma]", "b"], "=", "id"}], TraditionalForm]], ExpressionUUID->"abd42341-90b3-4e51-a70b-0dec38b1f3c0"], " otherwise\n iv) V checks whether \[Lambda] is indeed an iso from ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["G", "b"], "\[RightArrow]", SubscriptBox["G", "2"]}], TraditionalForm]],ExpressionUUID-> "8df8c8ec-b570-4fbc-8469-061522d6526d"], ", if it is not V ", StyleBox["rejects", FontSlant->"Italic"], " P\n 2) if P is not rejected in any of the \[Eta] iterations, then V ", StyleBox["accepts", FontSlant->"Italic"], " P\n" }], "Text", CellChangeTimes->{{3.733721800199551*^9, 3.733722094851746*^9}, { 3.733722153916625*^9, 3.733722347059684*^9}, {3.733722388707987*^9, 3.733722593891842*^9}, {3.733722641684478*^9, 3.733722666243391*^9}, { 3.733722969012144*^9, 3.7337234775471478`*^9}, {3.733723761379999*^9, 3.733723860538906*^9}, {3.7337239173870983`*^9, 3.733724740416094*^9}, { 3.733725315433503*^9, 3.7337253301775618`*^9}, {3.733733978759244*^9, 3.733733984727685*^9}, {3.733734201431044*^9, 3.733734283520152*^9}, { 3.733734521619153*^9, 3.73373452253246*^9}, {3.733735091934821*^9, 3.733735096213505*^9}, {3.733735145901307*^9, 3.7337351459932213`*^9}, { 3.733735207733788*^9, 3.733735225088385*^9}, {3.733735356802258*^9, 3.733735374772435*^9}, {3.733735637965568*^9, 3.7337356534471407`*^9}, { 3.7337358816810293`*^9, 3.733735898366913*^9}, {3.7337359337588177`*^9, 3.7337362406279707`*^9}, {3.733736273143344*^9, 3.7337367472444353`*^9}, { 3.7337367967230873`*^9, 3.7337369315138607`*^9}, {3.733736986370318*^9, 3.733737174904464*^9}, {3.7337372392998257`*^9, 3.733737295731799*^9}, { 3.7337373374201803`*^9, 3.7337374098331747`*^9}, {3.733737478560546*^9, 3.733737586882325*^9}, {3.7337376953845167`*^9, 3.733737794793524*^9}, { 3.73373792793957*^9, 3.7337380516853533`*^9}, {3.733738352524836*^9, 3.733738358118001*^9}, {3.733738410065201*^9, 3.733738441017771*^9}, { 3.8305010745789022`*^9, 3.830501098151999*^9}, {3.830503221425668*^9, 3.8305032218260603`*^9}, {3.830504922802816*^9, 3.8305050770968733`*^9}, 3.830505594284732*^9, {3.830506780953656*^9, 3.830506791419079*^9}},ExpressionUUID->"3c88a77f-5a82-4253-9de4-\ a14ddd77fd27"], Cell[TextData[{ StyleBox["Theorem:", FontWeight->"Bold"], " The above protocol is a ZK protocol under the assumption that graph \ isomorphism is hard problem.\n", StyleBox["Proof:\n\nZero knowledge: ", FontWeight->"Bold"], "Assume Victor is malicious, and already knows some initial \[Kappa]=", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", "1"], TraditionalForm]],ExpressionUUID-> "f7f6b02d-7c7f-41f9-99bb-56cad5df11ff"], StyleBox[" ", FontWeight->"Bold"], "(bitstring) of information about the secret \[Sigma], and when he interacts \ with Peggy he has two PPT programs, \n\none B that given the i-th iteration \ and the current knowledge ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", "i"], TraditionalForm]],ExpressionUUID-> "3d2ce106-c227-4592-b617-03c0b74adf3b"], " about the secret, and the given graph ", Cell[BoxData[ FormBox[ SubsuperscriptBox["G", "2", "i"], TraditionalForm]],ExpressionUUID-> "26c44163-7eee-4df7-b220-08f119937504"], " will choose a bit to get more information the secret\n\nB(i,", Cell[BoxData[ FormBox[ SubsuperscriptBox["G", "2", "i"], TraditionalForm]],ExpressionUUID-> "5063f5fa-a8c4-4818-a7c4-264f30100136"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", "i"], TraditionalForm]],ExpressionUUID-> "89d78a82-73e2-4064-9fe5-2b7e5cb30bd4"], " )\[RightArrow]", Cell[BoxData[ FormBox[ SuperscriptBox["e", "i"], TraditionalForm]],ExpressionUUID-> "20240e9c-1ba5-4de4-ba0b-47e3be255d82"], " (and evil bit to get more information from Peggy)\n\nanother PPT program, \ that updates Victor knowledge about the secret. It receives all previous \ information and updates the knowledge as follows\n\nU(i,", Cell[BoxData[ FormBox[ SubsuperscriptBox["G", "2", "i"], TraditionalForm]],ExpressionUUID-> "c4fa26b9-cf49-4260-a86a-47510b2ce6b1"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", "i"], TraditionalForm]],ExpressionUUID-> "f8897d8d-bab8-4598-bbe3-a67f314ec4e8"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["e", "i"], TraditionalForm]],ExpressionUUID-> "f78bd936-3fe5-4b70-b613-b44102411b4d"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["\[Lambda]", "i"], TraditionalForm]],ExpressionUUID-> "23adcad0-b874-4a92-95d7-095f798fcb9d"], ")\[RightArrow]", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", RowBox[{"i", "+", "1"}]], TraditionalForm]],ExpressionUUID-> "8ead7f3e-0244-46a2-8252-70d5f14aed0d"], "\n\nSo what we are going to show is that if there such program B and U, \ then Victor can get information about \[Sigma] without talking with Peggy. We \ do this by actually simulating the interaction with P\n\n", StyleBox["Simulator", FontWeight->"Bold"] }], "Text", CellChangeTimes->CompressedData[" 1:eJwdzU0ow3EAxvHlIA7WkoYZzcthaSsj8vI3bXltiCWZtDJvtfLeinAwL6FJ SsNBSpa8LU5mXhIR44C8s9TCbGQpbByW3/M/PH0Oz+EbqWqU1/gwGAweGVxX +Sq0Z2+Sbsl9F/SWpPfBj9fKKXgxp5+BnkFqE4rtibvw4ShnH3ZW8d4gpV2N 7SF+8QWF0CQeLYfcqqVKOFs0fAilj/WsXqLemBUIzbIy2QAxPi84H4YfC+sg 29DUDDmnCSPQ6V9My3R2XUG/S99rqL2mrLDtMINW1OF+ggEXUXYYujTphpa1 m1/oet7mDBL/Co1c6LUkpsCdLVkapHJNGbA0JKgWZutj1FB9XmeAA9Hji1DX 3LQJDbeyPaj8fLiDggmHDb6o3Q4Y0SJ00f98qofuuc4YQ0QfqoIJfwrew6Cu WsGH3yxvMlR/aHKh5pjVABcO9mh5bKkGjo3y2qGyX34XOvQuEVozrTBwevmF Q2Q3mmkXVxQbYcQk0bwNnpha7dBj7ojjEv8B5OEg5A== "],ExpressionUUID->"5d38db7b-8c25-46c9-bb71-e16dc58ac277"], Cell[TextData[{ "import B,U\ninput ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", "1"], TraditionalForm]],ExpressionUUID-> "2b8be145-8449-42b6-8454-3ca5027b623a"], "\noutput ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", RowBox[{"n", "+", "1"}]], TraditionalForm]],ExpressionUUID-> "1a3cf134-b1e5-449a-8d43-8f78a3e6c2ed"], "\nfor (int i=1;i<=n;i++){\nlabel s: r=toss of random coin // Guess \ output of B\n\t\t\[Lambda]= random iso from ", Cell[BoxData[ FormBox[ SubscriptBox["G", "r"], TraditionalForm]],ExpressionUUID-> "8894e1d0-9ee2-4b2f-abf1-bb9345cc16c6"], " to ", Cell[BoxData[ FormBox[ SubscriptBox["G", "2"], TraditionalForm]],ExpressionUUID-> "c0f8d331-69cc-49b8-aea6-3a583b63374d"], " (which is also random and different in each iteration)\n\t\te=B(i,", Cell[BoxData[ FormBox[ SubscriptBox["G", "2"], TraditionalForm]],ExpressionUUID-> "d0878eee-bfae-4e37-bdf1-935e804a3345"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", "i"], TraditionalForm]],ExpressionUUID-> "a8e77abd-fe95-4a7b-97e7-edaf518e93bf"], ")\t\n\t\tif(e==r) then \t", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["\[Kappa]", RowBox[{"i", "+", "1"}]], "=", "U"}], TraditionalForm]],ExpressionUUID-> "28bf0b67-56bc-4109-b10c-dbf1e9cee3dc"], "(i,", Cell[BoxData[ FormBox[ SubscriptBox["G", "2"], TraditionalForm]],ExpressionUUID-> "93ff2289-a60f-4b3b-8546-2f74ba840241"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", "i"], TraditionalForm]],ExpressionUUID-> "38949f94-933f-4b1f-98bf-4946add31210"], ",e,\[Lambda]) //prob 1/2\n\t\telse goto label s: // but do not increment i\t\ - rewind\n}\n\nThe simulator will generate in Expected polynomial time ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Kappa]", RowBox[{"n", "+", "1"}]], TraditionalForm]],ExpressionUUID-> "f782f814-d4e5-4374-842e-389cbea93e94"], " that has precisely the same distribution as the one generated by the \ interaction with Peggy.\n\nTrace of the interaction: (", Cell[BoxData[ FormBox[ SubsuperscriptBox["G", "2", "1"], TraditionalForm]],ExpressionUUID-> "53edd366-c88d-4a63-a7e2-1aa5547297d5"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["e", "1"], TraditionalForm]],ExpressionUUID-> "06a49b77-9453-4352-a3f6-7ec01f1e395c"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["\[Lambda]", "1"], TraditionalForm]],ExpressionUUID-> "55ccfefd-a97f-428e-86ca-9355f6dec49d"], ")...(", Cell[BoxData[ FormBox[ SubsuperscriptBox["G", "2", "i"], TraditionalForm]],ExpressionUUID-> "c41ab917-9ab9-4ded-b8e5-0bea43ef57c3"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["e", "i"], TraditionalForm]],ExpressionUUID-> "5995f260-e394-4776-bb7e-3e1014e66f9f"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["\[Lambda]", "i"], TraditionalForm]],ExpressionUUID-> "02aafab6-c316-4bc1-88c9-c18345b82c22"], ")...(", Cell[BoxData[ FormBox[ SubsuperscriptBox["G", "2", "n"], TraditionalForm]],ExpressionUUID-> "92ef675c-b8a8-423a-a62f-b8a6721d69f7"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["e", "n"], TraditionalForm]],ExpressionUUID-> "17ab20e2-d512-466a-92f8-1641a9e0b7cc"], ",", Cell[BoxData[ FormBox[ SuperscriptBox["\[Lambda]", "n"], TraditionalForm]],ExpressionUUID-> "a750ec7a-9b53-4ba1-8c6d-53e2c9175094"], ") we can generate this without talking with Peggy" }], "Text", CellChangeTimes->CompressedData[" 1:eJwdzVtIk2EAxvExQrJQ5ozlDo2VIkMceIxaX8qG5eRTqRHhIiTPMMhtxWRL hZw1trGIUcwKYiEOWU4pGLTMIpTCtIsUD7U2BLEtN3EE5WYXq/f5Lh5+F8/F /3i7Tt3FZrFYxWTwdXuWxrKUUAwpvg/CzKWzd+Huz7ancGXcPQrTdmoG1sSq Z2H4U/0HONAhSUDK8rJkmPhbWtoMgzWuK1DU4W+DYxfuzUPlxnXOHaJ76hwX TtMttI1Y0XC0ER5blPVAnldvgIIvlfdhPPsiY258cA0eXM1ah5Z1KgJN87WM 5f2pLZizciIG+f7HKbjw6us+TP54J7AT/zZPiWBmofo0fP+WPgMpVbAWXi44 0g3Pu4u0ULvc44W2wpEJ6DToZ6D3Gz0HW3+FQ7D00fYmjGpT21B8Q5Zkfp88 zfSSSywHkU1dzYV7TTtC6OzUSOEfTuYU1O4aVdC4yOmFzz/OMUp4SiN86JKY YatVHeI7dhSySF0Ecj2TUQGRp5tmnHiheSMkniz3bcLPwZsxGEhb60VEpU/e BBPC/GswLOZ3woDpkAE+EbYYYdWBW33w9kaiH4pLDg/AUFmeHXLNfYwP/lk9 sKii+xn8D/u/SnI= "],ExpressionUUID->"ca3f9913-c2c6-462b-b8af-86c62626da4b"], Cell[TextData[{ StyleBox["Completeness:", FontWeight->"Bold"], " If P is honest then he can always answer correctly in step iii) and so the \ probability of being accepted is 1\n", StyleBox["Soundness:", FontWeight->"Bold"], " If P doe not know the isomorphism \[Sigma] then he has to commit in step 1 \ either with ", Cell[BoxData[ FormBox[ RowBox[{ SubscriptBox["G", "2"], " "}], TraditionalForm]],ExpressionUUID-> "644fbd94-1551-4130-a2ef-c5142edc0240"], "for which he knows the isomorphism with ", Cell[BoxData[ FormBox[ SubscriptBox["G", "0"], TraditionalForm]],ExpressionUUID-> "c567178e-edef-4d6d-ac07-5d1b1c7d2f8b"], ", or with ", Cell[BoxData[ FormBox[ SubscriptBox["G", "1"], TraditionalForm]],ExpressionUUID-> "fa663713-2a58-4f6c-a217-f11b0f79e237"], " (he cannot do both, otherwise he knows the isomorphism), but then he has \ 1/2 probability of being detected so the overall probability of passing is 1/", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["2", "n"], "."}], TraditionalForm]],ExpressionUUID-> "3b536ef1-74e6-4c2b-ad1b-aa3ae33379be"] }], "Text", CellChangeTimes->CompressedData[" 1:eJwdzU0ow3EAxvHlIA60pJkZzctB2hQiL380eW0sJJmkNkOtvLcidjAvsUii eSkpWfIaLuY1WTTjgLyz1MLM21IYDsvv+R+ePofn8A2U1eSXuzAYjEAyuCpz laiPX4StwhsVdBYkdsD3J+kYPJ3STsCfbmoDJlmjd+DtfsYubCnjvUBKvRTW RvwM5YuhPqm/GHLL5qRwMrfXCFPuqpjtRO1CmhdcExWJuoiRWT7Z0P9AUAlZ uto6yDmK6oPP7nm0ns+qc+h25noB1ReUGTYak2kjmh330OM0yAp950Yc0LRy +QvtD1ucbuKfeIELnaboOLi9KUqAVKY+GRayvStgujZEARUnlTrYFTw0C3vq ajeg7kpkgKUft9eQP2yzwEeFwwYD6gV2+p+O/6F79mOGhuhClXjC75xXP9gj l4TCL6YzFirelZlQecCshjN7BloeK0UJB/t5TbC0M//aV/MqFJhTzdBrfP6R Q2TVrNHOLkrW/YgxEdMWeKhvsMLRN2k4l6gpZrdB+fIA7T8phyfv "],ExpressionUUID->"7d2c9321-07e6-47da-a535-b769be59a0bd"], Cell[TextData[{ StyleBox["\n", FontWeight->"Bold"], "\n\n", StyleBox["Impossibility of knowledge transference:", FontWeight->"Bold"], " V cannot send to E that P was interacting with him. V cannot transfer the \ ZK proof to E\n\nThe idea is that since ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ SubsuperscriptBox["G", "2", "1"], ",", SuperscriptBox["e", "1"], ",", SuperscriptBox["\[Lambda]", "1"]}], ")"}], "..."}], RowBox[{"(", RowBox[{ SubsuperscriptBox["G", "2", "\[Eta]"], ",", SuperscriptBox["e", "\[Eta]"], ",", SuperscriptBox["\[Lambda]", "\[Eta]"]}], ")"}]}], TraditionalForm]], ExpressionUUID->"893605d1-3ece-4961-aeec-754a25d6a306"], " is what we get by interacting with P, V could have generated this trace \ alone, and so how can V show that P was indeed there.\n\n", StyleBox["Theorem", FontWeight->"Bold"], " If there are tamper-proof devices, then it is possible to transfer \ knowledge in a ZK from V to E.\n" }], "Text", CellChangeTimes->CompressedData[" 1:eJwdzVsoQwEAxvG1h8WDtaRhG+byIG0PaOVyWJNrByHJpJW51SlmakV4MJdG k5TmUlKyxFg8uY1EhKVM7raU3CdLYXhYzncevn4P38M/Uq0pqWWzWKwIenBV zVHqHW5Fp+KmA/pK03rg+3PVBDydMU3Bnz7CBtOfZNvQeZCzC9urxW5I6Jfi umg/YyWFcCV9qAKKquer4HTRwD7MuG3gddOarFmBcI0sJw20CXnB+TDMLq2H fHOTFgqOEwfhq38xI/e14xz6nXEuoP6CcMGWfTljfJv3HgacRj3B0PkxLzxc vvyFnodNQR/tX6FVBH2HsmS4tUGmQiJ3RQ7LQoLqYLYphoLUSb0ZGqJHLNCo bbJB8xW5A1UfzmsoGX25g4+U9wWGN0s9zD+b8sP0PA5WPy2bqOTC74I3ITTW KGPhF8+XBKl3XS7U2XmNcG5vh1HMz9DB4SFxK1T1llyH9r8ppK5MFwycXHgU 0PI1a4yWReW6kHZ82nIE/wEXcxjH "],ExpressionUUID->"bc63eac9-0437-4724-a6ef-bd631f327a01"], Cell[CellGroupData[{ Cell["ZK protocol for discrete log and FS signatures", "Subsection", CellChangeTimes->{{3.733721800199551*^9, 3.733722094851746*^9}, { 3.733722153916625*^9, 3.733722347059684*^9}, {3.733722388707987*^9, 3.733722593891842*^9}, {3.733722641684478*^9, 3.733722666243391*^9}, { 3.733722969012144*^9, 3.7337234775471478`*^9}, {3.733723761379999*^9, 3.733723860538906*^9}, {3.7337239173870983`*^9, 3.733724747441324*^9}, { 3.733724816897058*^9, 3.733724820057123*^9}},ExpressionUUID->"5f7b3473-2e63-4b8a-9cae-\ dc06459af00b"], Cell[TextData[{ "\nConsider the next example (we only show the inner cycle)\n\nP wants to \ prove to V that she knows the discrete logarithm a of ", Cell[BoxData[ FormBox[ RowBox[{"\[Beta]", "=", RowBox[{ SuperscriptBox["\[Alpha]", "x"], " ", "mod", " ", "p"}]}], TraditionalForm]],ExpressionUUID->"1fbbac7d-1c59-465d-8295-0e73af30d5f2"], ";\n\ni) P picks a random ", Cell[BoxData[ FormBox[ RowBox[{"v", "\[Element]", SubscriptBox["\[DoubleStruckCapitalZ]", RowBox[{"p", "-", "1"}]]}], TraditionalForm]],ExpressionUUID-> "0fe0072d-4450-404a-b0f8-138b4a35f200"], ", computes ", Cell[BoxData[ FormBox[ RowBox[{"\[Gamma]", "=", SuperscriptBox["\[Alpha]", "v"]}], TraditionalForm]],ExpressionUUID-> "7359f920-1119-4e9b-9867-d7c8dc5a0fbf"], " mod p and sends \[Gamma] to Bob. //com\nii) V picks a random ", Cell[BoxData[ FormBox[ RowBox[{"c", "\[Element]", SubscriptBox["\[DoubleStruckCapitalZ]", RowBox[{"p", "-", "1"}]]}], TraditionalForm]],ExpressionUUID-> "1d2cd3b8-d90e-4c5e-ba7f-04e617c54ad6"], ", and sends c to P. //challenge\niii) P computes", StyleBox[" r=v-c x", FontSlant->"Italic"], " mod p-1 and returns r to P. //reply \niv) V checks whether \[Gamma]= ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "r"], TraditionalForm]],ExpressionUUID-> "9cc3ec3a-5460-49a0-b660-2a91a5cbc49f"], "\[Beta]", Cell[BoxData[ FormBox[ SuperscriptBox["", "c"], TraditionalForm]],ExpressionUUID-> "ead56054-8dcf-4cf5-b547-be7cacda38d7"], " mod p (\[Gamma], c, r and \[Beta] are accessible by V)\n\nIf P is honest \ (iv) holds because ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "r"], TraditionalForm]],ExpressionUUID-> "8263a2e9-d662-45ce-a702-9f989e01caf2"], "\[Beta]", Cell[BoxData[ FormBox[ SuperscriptBox["", "c"], TraditionalForm]],ExpressionUUID-> "7de53bab-e39a-4e10-ae64-fdd711d4f786"], "= ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", RowBox[{"v", "-", RowBox[{"c", " ", "x"}]}]], TraditionalForm]],ExpressionUUID-> "e589a3ca-26c2-47af-8355-b3bd2d40ec71"], "\[Beta]", Cell[BoxData[ FormBox[ SuperscriptBox["", "c"], TraditionalForm]],ExpressionUUID-> "1a9e5409-b23f-45f2-adf4-6d5cf6116b81"], "= ", Cell[BoxData[ FormBox[ SuperscriptBox["\[Alpha]", "v"], TraditionalForm]],ExpressionUUID-> "4371e27b-a1e4-4f6a-a3ab-af90c484385c"], Cell[BoxData[ FormBox[ SuperscriptBox[ RowBox[{"(", SuperscriptBox["\[Alpha]", RowBox[{" ", "x"}]], ")"}], RowBox[{"-", "c"}]], TraditionalForm]],ExpressionUUID-> "958bcd0b-fa83-4e09-91ac-d2971682ed2a"], "\[Beta]", Cell[BoxData[ FormBox[ SuperscriptBox["", "c"], TraditionalForm]],ExpressionUUID-> "76dec93e-8e86-419b-9038-74c9d2880016"], "=\[Gamma]\[Beta]", Cell[BoxData[ FormBox[ SuperscriptBox["", RowBox[{"-", "c"}]], TraditionalForm]],ExpressionUUID-> "e2806fae-7770-4a55-ad39-04b8588c486f"], "\[Beta]", Cell[BoxData[ FormBox[ RowBox[{ SuperscriptBox["", "c"], "=", RowBox[{"\[Gamma]", " ", "mod", " ", "p"}]}], TraditionalForm]], ExpressionUUID->"31b941a8-a739-4e95-9d5c-5b5408cb7025"], "\n\n", StyleBox["Exercise:", FontWeight->"Bold"], " Show that the above protocol is ZK.\n\n", StyleBox["Exercise:", FontWeight->"Bold"], " Make a ZK protocol based the hardness of computing square roots mod n=pq.\n\ \nFiat and Shamir realized that a ZK could be used to provide signatures!\n\n", StyleBox["Definition:", FontWeight->"Bold"], " A ", StyleBox["random-oracle", FontSlant->"Italic"], " is a map that outputs to every unique query with a random response chosen \ uniformly from its codomain. However, If a query is repeated it responds the \ same way every time that query is submitted.\n\nNote that (cryptographic) \ hash functions h are essentially implementations of random-oracles where the \ output cannot be distinguished by a PPT from a uniform sample.\n\nBy \ replacing in ii) c by h(\[Gamma], m) (which is random in the RO model) the \ triple (m,\[Gamma],r) yields a signature for m. " }], "Text", CellChangeTimes->{{3.733721800199551*^9, 3.733722094851746*^9}, { 3.733722153916625*^9, 3.733722347059684*^9}, {3.733722388707987*^9, 3.733722593891842*^9}, {3.733722641684478*^9, 3.733722666243391*^9}, { 3.733722969012144*^9, 3.7337234775471478`*^9}, {3.733723761379999*^9, 3.733723860538906*^9}, {3.7337239173870983`*^9, 3.733724732796063*^9}, 3.73372476892165*^9, {3.733724810268456*^9, 3.733724879225814*^9}, { 3.733724946562663*^9, 3.7337249518818817`*^9}, {3.7337249868744087`*^9, 3.7337249919858437`*^9}, {3.733725067746128*^9, 3.7337251312258043`*^9}, { 3.733725178706407*^9, 3.733725197313486*^9}, {3.7337387310159082`*^9, 3.733738807737742*^9}, 3.830501112242975*^9, {3.8305071939525537`*^9, 3.830507194299039*^9}, {3.830507231112578*^9, 3.83050724189589*^9}},ExpressionUUID->"6b13532f-5a44-4233-a8d6-\ 8c3a2edcc540"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Oblivious transfer and Bit commitment", "Section", CellChangeTimes->{{3.733721800199551*^9, 3.733722094851746*^9}, { 3.733722153916625*^9, 3.733722347059684*^9}, {3.733722388707987*^9, 3.733722593891842*^9}, {3.733722641684478*^9, 3.733722666243391*^9}, { 3.733722969012144*^9, 3.7337234775471478`*^9}, {3.733723761379999*^9, 3.733723860538906*^9}, {3.7337239173870983`*^9, 3.733724747441324*^9}, { 3.733724816897058*^9, 3.733724820057123*^9}, {3.7337252064341993`*^9, 3.7337252147048397`*^9}, {3.733726161232223*^9, 3.733726163848234*^9}},ExpressionUUID->"3e34ea37-a0a2-498a-a9da-\ 6ce523740ced"], Cell[TextData[{ "Oblivious transfer (OT) is a fundamental concept upon which all privacy \ can be set! Namely verifiable secret sharing, an even ZK can be constructed \ directly from OT. It is quite unituitive that OT is enough to construct all \ privacy protocols.", StyleBox["\n\nDefinition ", FontWeight->"Bold"], "An all-or-nothing OT protocol is a two party protocol between the sender S \ and the receive R where S wants to send a message to R such that:\n\n1) R \ receives the message with probability 1/2, but R knows that S tried to send \ some message\n2)", StyleBox[" ", FontWeight->"Bold"], "S does not know if the message was received or not\n\n", StyleBox["Rabin OT protocol", FontWeight->"Bold"], "\n\nS wants to send obliviously x to R\n\n1) S generates a RSA cryptosystem \ with public key (n,a) such that n=pq and p,q=3 mod 4;\n2) S sends ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"n", ",", "a"}], ")"}], " ", "and", " ", "y"}], "=", SuperscriptBox["x", "a"], " "}], TraditionalForm]],ExpressionUUID-> "bc5fa1c0-15a8-4cb8-8487-a4269a60ce63"], "mod n to R\n3) R computes a random v and sends ", Cell[BoxData[ FormBox[ RowBox[{"z", "=", RowBox[{ SuperscriptBox["v", "2"], " ", "mod", " ", "n"}]}], TraditionalForm]], ExpressionUUID->"c38858d1-2fbe-4bf1-bccb-f843b75b1853"], " to S\n4) S computes a square root w of z and sends w to R\n5) R if w=\ \[PlusMinus]v then R does not receive the message, otherwise R can factor n \ and thus compute ", Cell[BoxData[ FormBox[ RowBox[{"b", "=", RowBox[{ SuperscriptBox["a", RowBox[{"-", "1"}]], " ", "mod", " ", RowBox[{"\[Phi]", "(", "n", ")"}]}]}], TraditionalForm]],ExpressionUUID-> "ee24b35e-97dc-4c56-b7df-c9893217d5dc"], ", extracting x from y. Note that S does not know if R is able to factor or \ not.\n\n", StyleBox["Theorem", FontWeight->"Bold"], ": Rabin OT is an all-or-nothing OT\n\nBefore giving the full solution on \ how to construct all privacy protocols from OT, we consider a simple example \ called bit commitment:\n\n", StyleBox["Definition ", FontWeight->"Bold"], "A bit commitment protocol is a two party protocol between the Alice A and \ Bob B. \nA wants to commit to some bit b (yes or no) and so she sends a \ commitment \[Gamma]=com(b) to B. Moreover, this commtiment can be opened with \ some function op(\[Gamma])=b in such a way that:\n\n1) ", StyleBox["Hiding:", FontWeight->"Bold"], " Bob cannot know which bit Alice is committing \n2)", StyleBox[" Binding", FontWeight->"Bold"], ": Given the commitment com(b) Alice cannot open ~b (not b)\n\n", StyleBox["Exercise", FontWeight->"Bold"], " Show how to construct a BC protocol from a all-or-nothing bit OT protocol \ with the following idea:\n\nConsider a random set of bits ", Cell[BoxData[ FormBox[ SubscriptBox["b", "ij"], TraditionalForm]],ExpressionUUID-> "95ff0de7-850e-4a9e-a40e-933ca2b6b5e3"], " such that\n\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{ RowBox[{ SubscriptBox["b", "11"], "\[CirclePlus]", SubscriptBox["b", "12"], "\[CirclePlus]"}], "..."}], "\[CirclePlus]", SubscriptBox["b", RowBox[{"1", "n"}]]}], "=", "b"}], TraditionalForm]],ExpressionUUID-> "a5ce7585-9990-4235-9824-e267141472fa"], " \n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{ RowBox[{ SubscriptBox["b", "21"], "\[CirclePlus]", SubscriptBox["b", "22"], "\[CirclePlus]"}], "..."}], "\[CirclePlus]", SubscriptBox["b", RowBox[{"2", "n"}]]}], "=", "b"}], TraditionalForm]],ExpressionUUID-> "46321b56-4aff-4999-a64d-81d4199bff55"], "\n...\n", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ RowBox[{ RowBox[{ SubscriptBox["b", "n1"], "\[CirclePlus]", SubscriptBox["b", "n2"], "\[CirclePlus]"}], "..."}], "\[CirclePlus]", SubscriptBox["b", "nn"]}], "=", "b"}], TraditionalForm]],ExpressionUUID-> "683e2a3f-5007-434c-af5a-3fe03aca22d8"], "\n\nSend obliviously from A to B each ", Cell[BoxData[ FormBox[ SubscriptBox["b", "ij"], TraditionalForm]],ExpressionUUID-> "b32a9ef3-4041-4285-8b31-ffe7715030ad"], ". Which is the commitment and opening?" }], "Text", CellChangeTimes->{{3.733721800199551*^9, 3.733722094851746*^9}, { 3.733722153916625*^9, 3.733722347059684*^9}, {3.733722388707987*^9, 3.733722593891842*^9}, {3.733722641684478*^9, 3.733722666243391*^9}, { 3.733722969012144*^9, 3.7337234775471478`*^9}, {3.733723761379999*^9, 3.733723860538906*^9}, {3.7337239173870983`*^9, 3.733724740416094*^9}, { 3.733725256315701*^9, 3.733725308010002*^9}, {3.7337253447304707`*^9, 3.733725404178103*^9}, {3.7337254940022097`*^9, 3.7337256230968943`*^9}, { 3.733725661194627*^9, 3.733726625128026*^9}, {3.733726733281839*^9, 3.733726746097147*^9}},ExpressionUUID->"eeb11aa4-4b8e-4576-bfe2-\ 5d410042337a"], Cell[CellGroupData[{ Cell["Several flavors of OT and secure multiparty computation", "Subsection", CellChangeTimes->{{3.733721800199551*^9, 3.733722094851746*^9}, { 3.733722153916625*^9, 3.733722347059684*^9}, {3.733722388707987*^9, 3.733722593891842*^9}, {3.733722641684478*^9, 3.733722666243391*^9}, { 3.733722969012144*^9, 3.7337234775471478`*^9}, {3.733723761379999*^9, 3.733723860538906*^9}, {3.7337239173870983`*^9, 3.733724747441324*^9}, { 3.733724816897058*^9, 3.733724820057123*^9}, {3.7337252064341993`*^9, 3.7337252147048397`*^9}, {3.733726161232223*^9, 3.733726163848234*^9}, { 3.733726638673415*^9, 3.733726653918763*^9}, {3.7340684942426662`*^9, 3.734068504314937*^9}},ExpressionUUID->"2fc6b0ab-e972-4650-b8af-\ e94e7e06f408"], Cell[TextData[{ "There are several flavor of OT, all equivalent (but if they are equivalent \ in the quantum case is open)", StyleBox["\n\nDefinition ", FontWeight->"Bold"], "An 1-out-2 OT protocol is a two party protocol between the sender S and the \ receiver R where S wants to send either ", Cell[BoxData[ FormBox[ SubscriptBox["m", "0"], TraditionalForm]],ExpressionUUID-> "e72e58ef-ea49-408e-a406-b48df19d61f8"], " or ", Cell[BoxData[ FormBox[ SubscriptBox["m", "1"], TraditionalForm]],ExpressionUUID-> "3202a9ca-0ad3-40c9-94ca-f28b36ebbef1"], " to R and R receives one of these messages ", Cell[BoxData[ FormBox[ SubscriptBox["m", "b"], TraditionalForm]],ExpressionUUID-> "613562e6-4e22-43ee-aff3-f021e485323e"], " for some b chosen by R such that\n\n1) R receives ", Cell[BoxData[ FormBox[ SubscriptBox["m", "b"], TraditionalForm]],ExpressionUUID-> "4c477d77-48d8-4262-a3a4-5eda37ae3432"], " but does get any information about ", Cell[BoxData[ FormBox[ SubscriptBox["m", RowBox[{"~", "b"}]], TraditionalForm]],ExpressionUUID-> "4bdbedfd-ab57-4049-9a34-f9e07a30c2c8"], "\n2)", StyleBox[" ", FontWeight->"Bold"], "S does not know which message R received.\n\nThis kind of seems HUP...\n\n\ ", StyleBox["Theorem", FontWeight->"Bold"], "[Crepeau] These flavors of OT are equivalent.\n\nWith 1-out-2 OT one can \ construct any privacy protocol with the following properties.\n\n", StyleBox["Definition", FontWeight->"Bold"], "[Two-party secure computation] Let ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"f", "(", RowBox[{ SubscriptBox["x", "1"], ",", SubscriptBox["x", "2"]}], ")"}], " "}], TraditionalForm]], ExpressionUUID->"4138a165-55ee-41da-a36a-f8412cdecbb0"], "be a computable (total) function with input of size at most n, Alice wants \ to introduce a private ", Cell[BoxData[ FormBox[ SubscriptBox["x", "1"], TraditionalForm]],ExpressionUUID-> "d6fb04e6-ac84-4da3-9960-628675a335b7"], " and Bob a private ", Cell[BoxData[ FormBox[ SubscriptBox["x", "2"], TraditionalForm]],ExpressionUUID-> "71541c61-d79c-48c1-b283-f94ecf8db810"], " such that both of them know ", Cell[BoxData[ FormBox[ RowBox[{"f", "(", RowBox[{ SubscriptBox["x", "1"], ",", SubscriptBox["x", "2"]}]}], TraditionalForm]],ExpressionUUID-> "12336c91-7a1d-46e3-bda2-73170a02d364"], ") without reveling to each other their private inputs.\n\nThe \ generalization of two-party secure computation to multiparty is clear. Note \ that ZK is a two-party secure computation and Verifiable Secret Sharing and \ Elections (checking the mode of private preferences) are all particular cases \ of secure multiparty computation\n\n", StyleBox["Example", FontWeight->"Bold"], "[Millionaire dilemma] Two millionaires want to know who is richer without \ reveling to the other their own fortune. So they want to compute ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"f", "(", RowBox[{ SubscriptBox["x", "1"], ",", SubscriptBox["x", "2"]}], ")"}], "=", RowBox[{ SubscriptBox["\[Chi]", RowBox[{ SubscriptBox["x", "1"], "<", SubscriptBox["x", "2"]}]], "(", RowBox[{ SubscriptBox["x", "1"], ",", SubscriptBox["x", "2"]}], ")"}]}], TraditionalForm]],ExpressionUUID-> "ec51763e-25f8-4c2f-aef1-5b2695d83510"], " keeping their inputs ", Cell[BoxData[ FormBox["private", TraditionalForm]],ExpressionUUID-> "1688a87e-7e70-4f1b-8a29-a30cb49874fe"], ".\n" }], "Text", CellChangeTimes->{{3.733721800199551*^9, 3.733722094851746*^9}, { 3.733722153916625*^9, 3.733722347059684*^9}, {3.733722388707987*^9, 3.733722593891842*^9}, {3.733722641684478*^9, 3.733722666243391*^9}, { 3.733722969012144*^9, 3.7337234775471478`*^9}, {3.733723761379999*^9, 3.733723860538906*^9}, {3.7337239173870983`*^9, 3.733724740416094*^9}, { 3.733725256315701*^9, 3.733725308010002*^9}, {3.7337253447304707`*^9, 3.733725404178103*^9}, {3.7337254940022097`*^9, 3.7337256230968943`*^9}, { 3.733725661194627*^9, 3.733726625128026*^9}, {3.733726687802087*^9, 3.7337273130574903`*^9}, {3.733727359819138*^9, 3.73372738136973*^9}, { 3.7340685120127277`*^9, 3.734068612651147*^9}, {3.734095121568327*^9, 3.7340951677224216`*^9}, {3.734095496554018*^9, 3.734095500007769*^9}, 3.831107927369573*^9},ExpressionUUID->"ef5096f9-d42a-4740-a841-\ 92d64ca17b02"] }, Open ]], Cell[CellGroupData[{ Cell["Yao garbled circuits (semi-honest protocol)", "Subsection", CellChangeTimes->{{3.733721800199551*^9, 3.733722094851746*^9}, { 3.733722153916625*^9, 3.733722347059684*^9}, {3.733722388707987*^9, 3.733722593891842*^9}, {3.733722641684478*^9, 3.733722666243391*^9}, { 3.733722969012144*^9, 3.7337234775471478`*^9}, {3.733723761379999*^9, 3.733723860538906*^9}, {3.7337239173870983`*^9, 3.733724747441324*^9}, { 3.733724816897058*^9, 3.733724820057123*^9}, {3.7337252064341993`*^9, 3.7337252147048397`*^9}, {3.733726161232223*^9, 3.733726163848234*^9}, { 3.733726638673415*^9, 3.733726653918763*^9}, {3.734068491156138*^9, 3.734068513939432*^9}, {3.73406983283379*^9, 3.7340698348890743`*^9}, 3.734095585449163*^9, {3.83110931936838*^9, 3.8311093255991583`*^9}},ExpressionUUID->"494cc905-5167-4ae5-b7c9-\ 8639388c4f4c"], Cell[TextData[{ "The idea behind garbled circuits is the following, if ", Cell[BoxData[ FormBox[ RowBox[{"f", "(", RowBox[{ SubscriptBox["x", "1"], ",", SubscriptBox["x", "2"]}], ")"}], TraditionalForm]],ExpressionUUID-> "57b17300-d133-440c-b029-477fc83d6421"], " is a computable (total) function where the inputs are bounded by a size, \ say \[Eta], then f can be implemented with a Boolean circuit.\n\nAll Boolean \ circuits can be constructed using NAnd (NAnd is universal gate) and Fan-Out \ (copying a bit), since only NAnd requires two inputs, only there one input \ can belong to one agent and the other to another agent.\n\n", StyleBox["Garbling", FontWeight->"Bold"], "\n\nThis is the truth table describing the NAnd gate, the three columns \ are: 1st input, 2nd input and output. \n\n", Cell[BoxData[GridBox[{ {"a", "b", RowBox[{"o", "=", RowBox[{"~", RowBox[{"(", RowBox[{"a", "\[Wedge]", "b"}], ")"}]}]}]}, {"0", "0", "1"}, {"0", "1", "1"}, {"1", "0", "1"}, {"1", "1", "0"} }, GridBoxDividers->{ "Columns" -> {{True}}, "ColumnsIndexed" -> {}, "Rows" -> {{True}}, "RowsIndexed" -> {}}]],ExpressionUUID-> "bed92041-a2ff-4624-972b-da96ed034f13"], "\n\nTo implement garble circuits one needs a ", StyleBox["(double key) symmetric cryptosystem", FontWeight->"Bold"], " (could be just the composition of two single key symmetric cryptosystems).\ \n\nThen, ", StyleBox["for each column,", FontWeight->"Bold"], " Alice generates a random key for 0 and for 1 in the first two columns and \ a random string for the output column\n\n", Cell[BoxData[GridBox[{ {"a", "b", RowBox[{"o", "=", RowBox[{"~", RowBox[{"(", RowBox[{"a", "\[Wedge]", "b"}], ")"}]}]}]}, { SubsuperscriptBox["K", "0", "a"], SubsuperscriptBox["K", "0", "b"], SubsuperscriptBox["S", "1", "o"]}, { SubsuperscriptBox["K", "0", "a"], SubsuperscriptBox["K", "1", "b"], SubsuperscriptBox["S", "1", "o"]}, { SubsuperscriptBox["K", "1", "a"], SubsuperscriptBox["K", "0", "b"], SubsuperscriptBox["S", "1", "o"]}, { SubsuperscriptBox["K", "1", "a"], SubsuperscriptBox["K", "1", "b"], SubsuperscriptBox["S", "0", "o"]} }, GridBoxDividers->{ "Columns" -> {{True}}, "ColumnsIndexed" -> {}, "Rows" -> {{True}}, "RowsIndexed" -> {}}]],ExpressionUUID-> "ce9d49a3-7c59-4526-a4d4-ee1a3ac40fa7"], "\n\n\nNow, Alice encrypts the output \n\n", Cell[BoxData[GridBox[{ {"a", "b", RowBox[{"o", "=", RowBox[{"~", RowBox[{"(", RowBox[{"a", "\[Wedge]", "b"}], ")"}]}]}]}, { SubsuperscriptBox["K", "0", "a"], SubsuperscriptBox["K", "0", "b"], RowBox[{ SubscriptBox["e", RowBox[{ SubsuperscriptBox["K", "0", "a"], ",", SubsuperscriptBox["K", "0", "b"]}]], RowBox[{"(", SubsuperscriptBox["S", "1", "o"], ")"}]}]}, { SubsuperscriptBox["K", "0", "a"], SubsuperscriptBox["K", "1", "b"], RowBox[{ SubscriptBox["e", RowBox[{ SubsuperscriptBox["K", "0", "a"], ",", SubsuperscriptBox["K", "1", "b"]}]], RowBox[{"(", SubsuperscriptBox["S", "1", "o"], ")"}]}]}, { SubsuperscriptBox["K", "1", "a"], SubsuperscriptBox["K", "0", "b"], RowBox[{ SubscriptBox["e", RowBox[{ SubsuperscriptBox["K", "1", "a"], ",", SubsuperscriptBox["K", "0", "b"]}]], RowBox[{"(", SubsuperscriptBox["S", "1", "o"], ")"}]}]}, { SubsuperscriptBox["K", "1", "a"], SubsuperscriptBox["K", "1", "b"], RowBox[{ SubscriptBox["e", RowBox[{ SubsuperscriptBox["K", "1", "a"], ",", SubsuperscriptBox["K", "1", "b"]}]], RowBox[{"(", SubsuperscriptBox["S", "0", "o"], ")"}]}]} }, GridBoxDividers->{ "Columns" -> {{True}}, "ColumnsIndexed" -> {}, "Rows" -> {{True}}, "RowsIndexed" -> {}}]],ExpressionUUID-> "0a6cce84-c5e2-4e66-881f-e324ff0b68fb"] }], "Text", CellChangeTimes->{{3.734069836403759*^9, 3.734070431872513*^9}, { 3.7340704675135517`*^9, 3.734070482993033*^9}, {3.734070563392705*^9, 3.734070606256989*^9}, {3.734070646993778*^9, 3.734070734453945*^9}, { 3.7340961875087337`*^9, 3.73409622410384*^9}, {3.734096428144842*^9, 3.734096428460154*^9}},ExpressionUUID->"fb397786-f7b2-409b-9a9a-\ ebd127c276ff"], Cell[TextData[{ "and extracts the last column\n\n", Cell[BoxData[GridBox[{ { RowBox[{"o", "=", RowBox[{"~", RowBox[{"(", RowBox[{"a", "\[Wedge]", "b"}], ")"}]}]}]}, { RowBox[{ SubscriptBox["e", RowBox[{ SubsuperscriptBox["K", "0", "a"], ",", SubsuperscriptBox["K", "0", "b"]}]], RowBox[{"(", SubsuperscriptBox["S", "1", "o"], ")"}]}]}, { RowBox[{ SubscriptBox["e", RowBox[{ SubsuperscriptBox["K", "0", "a"], ",", SubsuperscriptBox["K", "1", "b"]}]], RowBox[{"(", SubsuperscriptBox["S", "1", "o"], ")"}]}]}, { RowBox[{ SubscriptBox["e", RowBox[{ SubsuperscriptBox["K", "1", "a"], ",", SubsuperscriptBox["K", "0", "b"]}]], RowBox[{"(", SubsuperscriptBox["S", "1", "o"], ")"}]}]}, { RowBox[{ SubscriptBox["e", RowBox[{ SubsuperscriptBox["K", "1", "a"], ",", SubsuperscriptBox["K", "1", "b"]}]], RowBox[{"(", SubsuperscriptBox["S", "0", "o"], ")"}]}]} }, GridBoxDividers->{ "Columns" -> {{True}}, "ColumnsIndexed" -> {}, "Rows" -> {{True}}, "RowsIndexed" -> {}}]],ExpressionUUID-> "c6fdc009-2c9b-401f-8498-4a257503b5ba"], "\n\nand finally permutes it with a random permutation \[Gamma] (that is why \ the circuit is called ", StyleBox["garbled", FontWeight->"Bold"], ").\n\n", StyleBox["Transferring (, ", FontWeight->"Bold"], Cell[BoxData[ SubsuperscriptBox["K", "1", SubscriptBox["a", "2"]]],ExpressionUUID-> "94fcae1e-e8c7-4c38-8701-5f89ee5b28d3"], StyleBox["... ", FontWeight->"Bold"], Cell[BoxData[ SubsuperscriptBox["K", "1", SubscriptBox["a", "5"]]],ExpressionUUID-> "56cd32cf-c327-4cf6-998d-5c126d0e3441"], StyleBox[".)\n\n", FontWeight->"Bold"], "Alice sends the garbled tables for all gates of the circuit to Bob. \n\n\ if Alice\[CloseCurlyQuote]s input for the gate is ", Cell[BoxData["a"],ExpressionUUID->"59ea6f74-6d85-45b1-9961-5c733377bae3"], "=0, then she sends the key ", Cell[BoxData[ RowBox[{" ", SubsuperscriptBox["K", "0", SubscriptBox["a", "1"]]}]],ExpressionUUID-> "f8684f1d-3cbe-49f0-8a36-f1774a9fb7f0"], ", otherwise she sends\n", Cell[BoxData[ RowBox[{" ", SubsuperscriptBox["K", "1", SubscriptBox["a", "1"]]}]],ExpressionUUID-> "08b7293f-1579-43f1-95e5-2fceeb5ce046"], "\n\nBob will not learn anything about Alice\[CloseCurlyQuote]s input, a, \ since the labels are randomly generated by Alice and they look like random \ strings to Bob. \n\nBob needs the keys corresponding to his input as well, \ which he will using ", StyleBox["OT!", FontWeight->"Bold"], "\n\nif Bob\[CloseCurlyQuote]s input for 5 gates is ", StyleBox["b", FontWeight->"Bold"], "=1 then he runs 1-out-of-2 bitstring OT\[CloseCurlyQuote]s with Alice \ where\nfor the 1st OT Alice places as input of the OT\n\n", Cell[BoxData[ RowBox[{"(", RowBox[{ SubsuperscriptBox["K", "0", SubscriptBox["b", "1"]], ",", SubsuperscriptBox["K", "1", SubscriptBox["b", "1"]]}], ")"}]],ExpressionUUID-> "f821421e-338a-461b-87dd-978a42ab0010"], "\nand Bob places is secret input 1 obtaining ", Cell[BoxData[ SubsuperscriptBox["K", "1", SubscriptBox["b", "1"]]],ExpressionUUID-> "ae2b5b9c-4f45-423e-9401-db992afc159f"], ". Alice will not learn anything about Bob\[CloseCurlyQuote]s input because \ of the obliviousness of the OT protocol.\n\nAnd the for the second bit Alice \ places as input of the OT\n\n", Cell[BoxData[ RowBox[{"(", RowBox[{ SubsuperscriptBox["K", "0", SubscriptBox["b", "2"]], ",", SubsuperscriptBox["K", "1", SubscriptBox["b", "2"]]}], ")"}]],ExpressionUUID-> "fa2ff05d-f79e-4442-b5fb-65dfb410705a"], "\nand Bob places is secret input ", Cell[BoxData[ FormBox[ StyleBox["0", FontWeight->"Plain"], TraditionalForm]], FontWeight->"Bold",ExpressionUUID->"2a1cac72-0a6d-4c9a-8ffa-4e32f9a089ea"], " obtaining ", Cell[BoxData[ SubsuperscriptBox["K", "0", SubscriptBox["b", "2"]]],ExpressionUUID-> "bccfaa96-5c99-498f-8ed1-477bd165a682"], ". And so on until Bob receives all the five keys.\n\n", StyleBox["Evaluation\n", FontWeight->"Bold"], "\nAfter the data transfer, Bob has the garbled tables and the input labels. \ He goes through all gates one by one and tries to decrypt using ", Cell[BoxData[ SubscriptBox["d", RowBox[{ SubsuperscriptBox["K", "0", SubscriptBox["a", "1"]], ",", SubsuperscriptBox["K", "1", SubscriptBox["b", "1"]]}]]],ExpressionUUID-> "7b6e5bba-520e-48e4-8821-e627329ff6ed"], " the rows in their garbled tables. \n\nHe is able to ", StyleBox["open only one row", FontWeight->"Bold"], " for each circuit and obtain just one ", Cell[BoxData[ FormBox[ RowBox[{"S", " "}], TraditionalForm]],ExpressionUUID-> "80fdb132-4ef0-40e0-bdcb-05528575e22e"], "(the remaining are encrypted), \nand so he will obtain ", Cell[BoxData[ FormBox[ RowBox[{ SubsuperscriptBox["S", "1", SubscriptBox["o", "1"]], SubsuperscriptBox["S", "1", SubscriptBox["o", "2"]], SubsuperscriptBox["S", "0", SubscriptBox["o", "3"]], SubsuperscriptBox["S", "1", SubscriptBox["o", "4"]], SubsuperscriptBox["S", "1", SubscriptBox["o", "5"]]}], TraditionalForm]],ExpressionUUID-> "cb09a392-7eae-4ca8-a293-c1134e820e08"], "\n\nalthough Bob does not know whose strings remain encrypted and whose \ were decrypted!\n\n", StyleBox["Revealing output (for Zero-knowledge Alice can just send the \ random strings)", FontWeight->"Bold"], "\n\nAlice knows it is mapping to Boolean value since she has the both \ labels ", Cell[BoxData[ FormBox[ SubsuperscriptBox["S", "0", SubscriptBox["o", "i"]], TraditionalForm]],ExpressionUUID-> "1c43ccd4-d0d1-406e-a074-ac2dba0b36af"], " and ", Cell[BoxData[ FormBox[ SubsuperscriptBox["S", "1", SubscriptBox["o", "i"]], TraditionalForm]],ExpressionUUID-> "946f8fc7-e919-4889-a23b-c11a9b264742"], ".\n \nEither Alice can share her information to Bob or Bob can reveal the \ output to Alice such that one or both of them learn the output.\n\n\n", StyleBox["Theorem: ", FontWeight->"Bold"], "Any semi-honest protocol can be compiled into a protocol secure against \ Byzantine attacks (computationally), if there are commitment schemes.\n" }], "Text", CellChangeTimes->{{3.734070744603833*^9, 3.734071813098339*^9}, 3.734071865082473*^9, {3.7340962264222603`*^9, 3.73409622860563*^9}, { 3.734096441176477*^9, 3.7340964414869137`*^9}, {3.8311083938414183`*^9, 3.831108420770204*^9}, {3.831108464637157*^9, 3.831108501555737*^9}, { 3.8311085602559*^9, 3.831108570557639*^9}, {3.831109196789014*^9, 3.831109211567822*^9}, {3.831109391378318*^9, 3.8311094253486013`*^9}, { 3.831109496260949*^9, 3.831109503850946*^9}, {3.831109916081092*^9, 3.83110992804601*^9}, 3.831109975869981*^9, {3.832822503887182*^9, 3.832822507670438*^9}, {3.832822538310513*^9, 3.832822543086453*^9}},ExpressionUUID->"2d0375df-c2b7-4aa6-803b-\ 430954f27eae"] }, Open ]] }, Open ]] }, Open ]] }, WindowSize->{1440, 847}, WindowMargins->{{113, Automatic}, {Automatic, -1240}}, PrintingCopies->1, PrintingPageRange->{1, Automatic}, Magnification:>1.25 Inherited, FrontEndVersion->"12.1 for Mac OS X x86 (64-bit) (June 19, 2020)", StyleDefinitions->"Default.nb", ExpressionUUID->"22474768-f0da-4e2f-b25d-7306ed3d37b1" ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[558, 20, 147, 3, 64, "Input",ExpressionUUID->"758b6d47-6b13-43e8-915f-34ba8ea8f2a6"], Cell[708, 25, 32338, 499, 227, "Input",ExpressionUUID->"dd2eea51-5f8c-477a-969c-40d0e6bb8522"], Cell[CellGroupData[{ Cell[33071, 528, 182, 3, 86, "Chapter",ExpressionUUID->"d879540b-f66b-445d-b21c-469a1ac8927b"], Cell[33256, 533, 176, 5, 73, "Text",ExpressionUUID->"5ff39934-3c63-48e9-bc45-d6fe28657bc7"] }, Open ]], Cell[CellGroupData[{ Cell[33469, 543, 369, 6, 86, "Chapter",ExpressionUUID->"bcd70196-a89a-4af2-8c17-cd57bc2e5f96"], Cell[CellGroupData[{ Cell[33863, 553, 268, 4, 84, "Section",ExpressionUUID->"96c07e7d-fe07-4b93-8c3f-2e7ffdd7405a"], Cell[34134, 559, 11910, 316, 2446, "Text",ExpressionUUID->"f900253f-b20d-41f8-90ae-fb78122ca798"], Cell[CellGroupData[{ Cell[46069, 879, 371, 10, 37, "Input",ExpressionUUID->"a81bc31a-cf23-4668-b0f9-a67ebd2c2aa4"], Cell[46443, 891, 222, 4, 42, "Output",ExpressionUUID->"bc0fdd01-0e07-418d-8453-f2b38eb1220b"] }, Open ]], Cell[46680, 898, 1313, 21, 44, "Text",ExpressionUUID->"7810b32d-45f1-4d16-ba61-b550704f5771"], Cell[47996, 921, 1014, 15, 44, "Text",ExpressionUUID->"651e813d-190e-4ab7-a155-57b2299c3b1c"] }, Open ]], Cell[CellGroupData[{ Cell[49047, 941, 303, 5, 84, "Section",ExpressionUUID->"50d73d0c-7641-475b-ba3c-6e804642a707"], Cell[49353, 948, 5223, 161, 599, "Text",ExpressionUUID->"ba264cc5-b166-43ea-8364-d514175563ce"], Cell[54579, 1111, 606, 16, 119, "Input",ExpressionUUID->"a191a00e-a955-4368-b026-26266d82b37c"], Cell[CellGroupData[{ Cell[55210, 1131, 198, 3, 37, "Input",ExpressionUUID->"f44bc652-098a-4fe7-87c3-12587ec7c1a9"], Cell[55411, 1136, 148, 2, 42, "Output",ExpressionUUID->"ef161819-4747-4c4b-8f3d-00f032d35406"] }, Open ]], Cell[CellGroupData[{ Cell[55596, 1143, 198, 3, 37, "Input",ExpressionUUID->"fdf32ea6-b9d8-4177-96da-65cb10a955fb"], Cell[55797, 1148, 148, 2, 42, "Output",ExpressionUUID->"7e72f2f4-65a3-4e84-ae15-b1cb97b5e42b"] }, Open ]], Cell[CellGroupData[{ Cell[55982, 1155, 200, 3, 37, "Input",ExpressionUUID->"c72ef502-8917-47cf-8809-732312746d1c"], Cell[56185, 1160, 147, 2, 42, "Output",ExpressionUUID->"39cd793e-4fac-4258-99df-9dc15e0b8b14"] }, Open ]], Cell[CellGroupData[{ Cell[56369, 1167, 200, 3, 37, "Input",ExpressionUUID->"e7b03c0a-5a45-476d-80dd-fa3449f8bffc"], Cell[56572, 1172, 148, 2, 42, "Output",ExpressionUUID->"23023f02-5929-49c7-8ddc-8f576c2cda81"] }, Open ]], Cell[CellGroupData[{ Cell[56757, 1179, 199, 3, 37, "Input",ExpressionUUID->"c2b725a8-9701-45f3-8df2-ceef26c3e69e"], Cell[56959, 1184, 149, 2, 42, "Output",ExpressionUUID->"820b3582-71f5-4853-adfb-5156a42e237c"] }, Open ]], Cell[CellGroupData[{ Cell[57145, 1191, 612, 15, 37, "Input",ExpressionUUID->"ef28fdcf-6bba-45ce-aab3-c90f86fa49a5"], Cell[57760, 1208, 543, 15, 42, "Output",ExpressionUUID->"0a87cbc5-5154-4741-ab92-b181366a363c"] }, Open ]], Cell[CellGroupData[{ Cell[58340, 1228, 270, 5, 37, "Input",ExpressionUUID->"77b0de6d-943b-4521-810a-bf8b8e8f5d0f"], Cell[58613, 1235, 350, 7, 43, "Output",ExpressionUUID->"4aec77a0-166f-46da-b99c-694de08b73b1"] }, Open ]], Cell[58978, 1245, 226, 6, 37, "Input",ExpressionUUID->"da594ea5-0652-4962-bde2-68793e54e7ed"], Cell[CellGroupData[{ Cell[59229, 1255, 345, 10, 90, "Input",ExpressionUUID->"b7006b76-7ccf-4e41-9b9a-4751c09acca4"], Cell[59577, 1267, 201, 5, 42, "Output",ExpressionUUID->"d529b1a0-e41a-4668-921b-caf623a63158"] }, Open ]], Cell[CellGroupData[{ Cell[59815, 1277, 344, 10, 90, "Input",ExpressionUUID->"b701d189-b53a-4b9a-b9c9-d846bd5eae05"], Cell[60162, 1289, 179, 5, 42, "Output",ExpressionUUID->"d6d6526c-16c0-41ea-801f-9f43564d33ea"], Cell[60344, 1296, 175, 5, 42, "Output",ExpressionUUID->"b24b5628-8b3c-4e64-a3b9-201cb48a52a0"] }, Open ]], Cell[60534, 1304, 595, 11, 217, "Text",ExpressionUUID->"ad9507c1-c6fc-4648-9efe-9708cf24ccee"] }, Open ]], Cell[CellGroupData[{ Cell[61166, 1320, 653, 10, 84, "Section",ExpressionUUID->"fb90bda6-58ca-482c-9958-ee0107ced906"], Cell[61822, 1332, 7003, 177, 878, "Text",ExpressionUUID->"3c88a77f-5a82-4253-9de4-a14ddd77fd27"], Cell[68828, 1511, 3376, 86, 533, "Text",ExpressionUUID->"5d38db7b-8c25-46c9-bb71-e16dc58ac277"], Cell[72207, 1599, 4147, 117, 418, "Text",ExpressionUUID->"ca3f9913-c2c6-462b-b8af-86c62626da4b"], Cell[76357, 1718, 1763, 43, 102, "Text",ExpressionUUID->"7d2c9321-07e6-47da-a535-b769be59a0bd"], Cell[78123, 1763, 1670, 41, 304, "Text",ExpressionUUID->"bc63eac9-0437-4724-a6ef-bd631f327a01"], Cell[CellGroupData[{ Cell[79818, 1808, 535, 8, 67, "Subsection",ExpressionUUID->"5f7b3473-2e63-4b8a-9cae-dc06459af00b"], Cell[80356, 1818, 4979, 129, 740, "Text",ExpressionUUID->"6b13532f-5a44-4233-a8d6-8c3a2edcc540"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[85384, 1953, 622, 9, 84, "Section",ExpressionUUID->"3e34ea37-a0a2-498a-a9da-6ce523740ced"], Cell[86009, 1964, 4949, 122, 1162, "Text",ExpressionUUID->"eeb11aa4-4b8e-4576-bfe2-5d410042337a"], Cell[CellGroupData[{ Cell[90983, 2090, 740, 10, 67, "Subsection",ExpressionUUID->"2fc6b0ab-e972-4650-b8af-e94e7e06f408"], Cell[91726, 2102, 4446, 114, 680, "Text",ExpressionUUID->"ef5096f9-d42a-4740-a841-92d64ca17b02"] }, Open ]], Cell[CellGroupData[{ Cell[96209, 2221, 858, 12, 67, "Subsection",ExpressionUUID->"494cc905-5167-4ae5-b7c9-8639388c4f4c"], Cell[97070, 2235, 4487, 127, 1055, "Text",ExpressionUUID->"fb397786-f7b2-409b-9a9a-ebd127c276ff"], Cell[101560, 2364, 7155, 196, 1543, "Text",ExpressionUUID->"2d0375df-c2b7-4aa6-803b-430954f27eae"] }, Open ]] }, Open ]] }, Open ]] } ] *)