From 091399138e74d7c225055df56677295a0f77b701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9ranger?= Date: Sat, 2 Oct 2021 14:02:28 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20cours=20de=20crypto=20et=20sch=C3=A9mas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Crypto/Images/asymetric_encrypt.png | Bin 0 -> 28371 bytes Crypto/Images/bloccipher.png | Bin 0 -> 18144 bytes Crypto/Images/concept.png | Bin 0 -> 10322 bytes Crypto/Images/flowcipher.png | Bin 0 -> 17535 bytes Crypto/Images/spnet.png | Bin 0 -> 17092 bytes Crypto/Images/symetric_encrypt.png | Bin 0 -> 25207 bytes Crypto/intro.md | 173 ++++++++++++++++++++++++++++ Réseau/cours.md | 1 + tmp.drawio | 66 ++++++++--- 9 files changed, 224 insertions(+), 16 deletions(-) create mode 100644 Crypto/Images/asymetric_encrypt.png create mode 100644 Crypto/Images/bloccipher.png create mode 100644 Crypto/Images/concept.png create mode 100644 Crypto/Images/flowcipher.png create mode 100644 Crypto/Images/spnet.png create mode 100644 Crypto/Images/symetric_encrypt.png diff --git a/Crypto/Images/asymetric_encrypt.png b/Crypto/Images/asymetric_encrypt.png new file mode 100644 index 0000000000000000000000000000000000000000..1438c5af0361e5b96e727f55e4bad3477fd59e13 GIT binary patch literal 28371 zcmeFZ2UwHKwgwD{8UzGHsUji-MCn0#6GRDJ5u{_NA|>=5iZm4g4ZVw^h!p7vND(%m zQVj^9iwGD9O)!*D{y|}Hce(eTd(QpO`Tuk8exCivH{X1-X4YEst}<(KM_cm}^&yr+ zBqSu%aFq*JNJz*CBqXG!kOQD)?xK+#2?@uVo3g%}gO|0fy%h-*ru5@4C`=jrZE1_J zaX~mhMTBfEp|A^35fNo;XLUUf10_!b4Sm>Ee)lUnPM1J4=;4TPu=>$Q8)0L`FTB(G zeGmt)OD+hf8yZMUD|^t-((6YrVIfiRA75H}|7a1H6#CI%O#bTHHuphm4Ci?wzk?(!>G|md? zVCClG4Or%4Wsh*P_4v7yh!A2|^ftft`&C)Bk+y(oB0{@rdQNCpM!QN16Wx8@8^R6Y zVq@jD`xV#-yFvkf0L9-M{`<7PH+>i6Ukg>_+>a%BAne_Dr~9vvi#5{G?XRTrU&-qa zk`NL4F9f)|+8_M;Awm(+ody2`GW;F){}WdKnbS%)Y^|+btQ>ZB%y&HdX*2v@)je<6 zx>@NsA-*f3CxEu!t2Mw;`#ttKA{~Js761Dj{lV)!RDu0xd&0xY#m#CDQ~#QMyKhCr z|Deiys_pq3dhJ2*jh}!^;tv}C^QQS*87}-?vLZsi(`_+(fKK1J1NNK6uRtK??7jnh z00#CTLFBh4F`J!N=hfj#%21IX1Au+C!(s6F{oS9$2iUXo%}>ySu(!2w1S)3%q-_Pz zM{$RVwgB1B@4j%bwY1!ULPZxVS6d&1`FB{{!8xZLbodS)=M z6AZ?Ge;fVa`+pahgm(@2?~v(x+n=TLH(Qs#d86zS|B2WC|A3}{NW0I8{R^S#ueAH` zhbBcW09^lzfa#pXt}*>jfN9TX`X2|TUBB?B&GIMo|0e*`?=k;3vjtNG_Ql0pAD9Lq zfpfq(e1A09dE9%rumkVEJ?-#t=jrbRuHE?JXW)W;_mlqt;M)E44{q@vTnUjq3I7*f z@p%^)#Ew(G*KOCF{^s=kfy|!kv8!9cyJUV1eE!fKCj5I{{6l}>DEyef_ci?;9y)Ay z_pJp%rO6`Dq@DF+N-$nG_RhK;nXir^sGX?*Vx`+w=L0x{|{~uNt;a$f3 z1W#(p2A7mI{{&M1--$5(Av3-g!S3=OxbHt!`jd~k=eGWA3ifvS9xD7j0fva!4^ltz z`cGW`CzyhN)}H$jDT@gG4D~_6b;Y{x3vI0tQ;*|yq(-^k&gdiT>Wdf{nIr5pa}o^B;bE!#Qq1Y5KL${ zy}GLuqI+QUlNA!#%LM)me0y#Gh#7+Y*$n+V10U>rWb-fby!MFyWMp)#EL^NW@>@vF z%KOiJ|6AejKTcu%h2Ql5q9&gc`$I^!7aRPf$$L#dEAn33KcvWibw=?A82L8}A%0|r zey_;?EDOFz`zJltb~m^Gj`#l-dMqOTPt#+NrueN=;73yHw|a}cOxIo|$KLa=RUXSj z<<=x5CrRKJ&R_L1olT=$7S}bHuVaHZKuy0I-u32uaJ7f)N>`7ut>I)&y!q|WPs4oY zUyV~ALtg)6a#@P(PTsT|-;37Zrw{3}9)+@u965Wnhc+SX(_&t@CvtSNLwbqWo<6!k zz_;4;x{MKt^Zf~(B`dJe{-rjUJoGR`frN}Ukc9js2`NP3p%g%>Y>8kc@d$O5uAjUM<%CG?!`R2P#j zCHa*@M0PdHFkNX}$Y}{}A&)3d;v>Y^)53Qb zas470gvgAzqU!_xU2e0b+g)yu4CuI2N?F4KCqc*`IokA{17Hcy(n%U>edzmS6+%$M z1S_|_Y2D)qEM)Jzi)KEefVH`Cw2FLp_4TI!-H7Yi?<*lE@l&VZvU?xIYLXz#s`j(a z%Qw_6Qq(VS?DA`sf)sEx^9GpDqxMTvd(DXtNE-YvCSHvL^yOq-4MTPpa8e6&l$lk0 zaS;%XCRY~TWBPM2p%){+xYN)g%qmdKY(Hd3LN*Q-)>87wG7QX%nI%-<{H|OIA*3Oj zr?9qe0${*Ol`AxRA3UK~z$Q4pZYD+-BK^pO{Pqa=E0Q2OEl(!{e%x4k@4eS-%@tUf zLC3B81kl&&Ol85q(uOZ2%vlR?S7zu0|P%XDqP&+#It6QP_ge3$N&ln zW4_BBSSUE)=XPSRnHkWv34!b4z`xzFY~{TLd<6^W>=szQ$psjqqJ1=YPyKgPWLm>` zg@lgaKA7-+k8wgkBK|UGRjpM>5E+@5zZ}_PTm+yicq{GV)G5G`2(E8?x~MG$R)k}) zf3?jIA=0Q;*^GNwuhO0lst@NH&JBseTmoCo5YW1*G1y#hNK4?uh)s$-=F1?lEAwL& zA%g(Tk-z%0=G>-RIQYpxh|N4Cjp6kTlN|T?NeB6fVOg@lCrmkT2hiC3&R%;rDl%QVdKz7;j`D-S zg~-9Jdnd>wX(67i;O*;E%cNwp;BA@B(wR&53SVIIs1A`S(|vy{_|DCZf$Re<_}1cG z`N3Pe-&WEV4vVyEA`F~v=XW-pS>8wHurq+w{FzG;y8|@Q6%H5caIu}YM>&^2Zlrw{ zO5*>FK}}5Na0sfg+2#waiuy+d_(7Gb{467QRZbSGYE@L0ok~@57JFq+!Zs8)gRVV; zqeRPb;>h4r&^cH;Ku32#<%5;h#cmE@iB$pm4W4qcfv?24A>p10ZkbtHRoniim?m^B z_uC7vCW^!_BR`E?sJ*kv3Lm(H$%oDg;-cp2*dMsXXRWBNua-+`)zAhi90Mq(oA}`T zJt(lZYIj{|1M8W{h^kWRnBX*(fQl>{mGuR64l%;BjT7iOPTba<^+$Dhwp!H<^@F^? zQe4#n*jaOj`6Df`vab8cXcL12XWQiUFdS&jIJdAY*QsY-8f*vQQdco!=#Kd10~IkD z4{eiy3naoB$o{VFq#KVcKyRPPQb=6<9vkeeY!4A~{AwW|%8>rxo*~wg`j3&fs0Dl4+cf6`WR)hXC$|V5$JNm z)v5-KkL|c+w8|v%Tw~#no>GNY1DB_b0;2HITcBV|Tl)(YBNC}Dagrp+4NO_uU_2bt zUOjE7h`nZW`d zZV-f7RQ?xU^78ZbUoQmcW9|$-d(|Zsjdr8?I>>law#wub=|}a*$wJ)UP&$$BG4Uu{qT|O6MAz;fS9j3hz6WCO0nD{nj@c7oV%krw| zPzsqFS8WdgNGbwD&)gXc?}a@gZ%CIU33^I_KZ~P80>m<*E%S6l7!l9{@q>zmefFu4QAHzQ-o%24>Pzx`CeF>wG(ZNtd z8t){N5|}nv(Wb}U8A3Tof;hmATCEIXziZR`nHdw6V{;OpA}Ss1m{@;IfVE?S8g`p)eMI1FQ+g5472q;| z0UqMr45rmgFKdnTph6@DPgQl9?4YVo440hhF?muvr*L$ySiiMoC9v0G@{fy<3m1r_r$KYfFLDO_rMcL;csGRL*)N`57fkS;y2@C4grQ7oHX=qV zwlpKF(WE(PKKjf3G+%TU54K<(Z$W+@Yy&7#TjOuNPB6z+SEbwFDXA^uO^@xL`DK;EsB@CBtztDYu)u8EXvyEi6Loiuix}17&Lw*Ry~eyfXhAkgzvU5hmUV6* z9HoMb0Px$^|Hx1o%V;GaMHv(cG3I^iQnY=;l3yu0rRHVr77HT4)$@G0%hqwbD#4>u zp2HeJ6yLNr!mHP7<+-~lYnlcG{+p(}Bj@%;xbgSlDR zi^Y$bfIFpivYDp8pfX>_*LgT(_4)lor}h-~MONxeE$_QaY?F+BU((l(NaII6VipYh z;wcF3nG!iDI{(|cW$_?p<3Dvs;UNo|eEiXp$#8T0rel=}`L$VW02ghi$KuALi235oy{qo}<+tt2c4Y>w}>ibFVqq3j;jP%eT&U$eLk{d@eLdDYbkxy2c(5t`I@~ zG>_A0Fk4c8?C^S5GW%EFtviobG`5;w%db&psQ7zC7SfE$tKuS_F4#GzpOcyS&+2He#XHObBZAEB*`u$*4;|FkG0-fk5J;K$UD3e z@T#y5nN3GOJSwhKdx~#;r}?eMMC>`Z1B_Y#dvMgPh6DH?&7}l<0{J zWH+{{M@Ml5YjPQ1ufn5eLN-H%2?&oAAZZi!xCX|t@aFcSr)nJd6fyZ=0c&GH1*#^Y|ba|GjR4Z-qO}Pp4)BeK@HP!8=nowAP1Oc2#P}Q zQ8aC0cs&JL;DM!}Uzyu#nmB7o=z+*~6Lt})<|jkaRZypU$H7aWGZ&z}9Jg8nMh|?r}k~8qA#>b;8TlH_>+qjScr{M^|*bEwgp!j4-dc^3x9Ol#H zZV$7>;Z^i}k0|^UF^{2Xj3{m%;8bz|^R&FS;~W(v!RQF>iOE5VAJ32xzFlqQa+Z|2 zNMCr=m2gazcvJ8o`N={_5Yxygf&WXmI~B0vwjKwDg@R~a;$ibQ6VKzj*gu*t&C~my zngG_xbjLc~`Ga-3o?%!QME{)H;xPLyuyz0zgXi>1j z8&`L2dkAVt2VB5A;+39dM;`@y_m!|p6oEJ2+ky9JV4h^uHoCm@+7o~!liyF$butJA zMYUPA*gCCVRw}ob@Qic2++%Pw49o!pJo%iZOY^Ili+Ra{cM6gIhe$w5hG5{?dT(j+ zVvD>rHX3c2bozwoQz0whW847z`1S_4B+Qpj?W8NE6dr1jfdEN{J=f6IkI2*p z=WTe#QRu$Y_4eXUS29HBabOO)P}-QcXwC3uNAkllZdqBruMd#XV$Xn;37Kwm>1CUy z#g$l?Wt%V`BX6cH6rvw2t7}Ybh>Tl{9n7CnGL2+TAL9ldFw4a#c2zmHRwT$1)>1Q* zl8bR%7cO9rcl*R0chzI=GI|aKg;si25|Y5NpLJy0(C&bVjn{JEVPc0(f)&Wf4yvp_ z%i82JNqtx|l!Cp4v4IY2VD?vf#&4Z}cm&Mag!&Hqb4znUVXBbLBR#hCWZrazei&{% zO?$3U#PTE+5B{xD9mJo-0rZSZnrH4M?SNVh`G3^ z52x|0{uXoQBNq@NC)p|og?#Dzqn|8)q?d)rJmZ(O(1&B){DW2IPT^$Wb$qyS>ZlA3 zrIQCi=MC+{ONC$Lb~C{BdE|UG<1t)pe7LU$b{*BlHPAFp99O~?Y<>hI4e0?MT`4EE z@Ii8JIt8p&Lo=NAS$ut~@vF^!xol%|`+Tz_aszHESy(@#eUk(<)n=xvA`fi#5;2;z zV373%;pCGnP6k_9hsW6}14@`N+mt8gz^ti3aG*m@Mh|>d9)Ap0AE*HXsGtbpJ(5h%F%8?ez2* zBv!rN)UrAw>(bHmL)}*lYjrWc(8WjgZ(-=#3KbIho<|>;T}45xD=MNHs1QTWw|_VV zDqGMMt>0fw_99{V^c6!f$pB_IHsI{JV;@|$-$_tMIOVXA#nBZ;x4gQDxyHrDiTgy> zToDbz)vBZ{p0A5JWPBGHISP|W{BJXp1swykR;Pg|oQ$tuN-YFI_?;pi9=?Fstnt*s zivJ+IrKXcmz$`(BuVB=MDRU~RMopJd$ytJ`J_T8nE;y!5uraKGubO;}C+>p+$gl?= zW8Oy|&$&PX*LvW_27lq|ysGxC8HBrnxH_&HMND=4G-MX|!f+7fqCY(?N(CZxEkBG3 zR*)p;vx};E=yRJ(O~Vsp2I$?kPr}2idg5%V8GZR@r~&qMod8Vr6|?z;jSS-Zl$`ve z5Kj=wq=R@+4P-_<)z$;EXgXsLj(+VLRl=aShRrb1TxmGPAc17plRf)MAxA+del-vG zW%VgwM9PuRAhmw|cA(XZLbg(0wW{hYN+=4mxw0gX+tCNI3@fQB6)8b>FT2uN;l+7k z74fBYS<)bdasguiqVbm3G$0RteLv8y?#H|!RR5m1Dm)#u58B`ASP|!T7A_v=ro{6} zqb=oG1)CTB8UxR^JKQX8c|SbES@3mw#TUqp<7Bj_(|}63QDU~^c7#IwE$*R2-zXUFo05?Pv*j8_zUR0@CT7?~c12Ak(1#cx#|^jai1g_#{ZqG*G#j zp8;u*t1hYF5TOkWJ3VwEhlY&y_D=8uy||VKRKG;zVA{@PUp^Fb@IOEk#0O%aVxfI$ ziK^h7C+_$Z2ohbvuu|fer$OT19B764oy&4(0YmfJ&fA>q5(V@5zh(ZPH2(!kt3w_Y zzpMz?N?1Mv-@3KVgEl>d>ql$exC;pmB_Y28%<~g&Od|72Fyc@X zUYswwfCp!UCZJ2hi7OMdJBNpb%3ve%H$0hM2Ad6+)O`vx#ndmNL3;5U$vYaZw9`1| zK;T%NydMbm9jRrqiW10vg~9THgSbg{ zzx6;h9;D;U2FOYQo-u*!cnSV!{QhvP&m@4?LUQ2U03X6tkBl47-*o(vAsH|787Asp zugl5$WKHD$UN?}LO%w;H>_hw*j)8R+D2Hr{a3dD^8*Ae9DjzAWxU`;is z1tnaPP2Z^of99CN)%dXy)m&rkZlmOLY3Y*ulfeGRj>xTMF1MA~6`jQ=9UX*S{_^?b zE7^{oS9V@(t`5GiTjy$I%X^IFNP91_ur^3iPnjE@$7aKhMF_IZ^ctBLJV_#T(rir9 zd&gD3u3{lBkv(RteilM>duqP;#A4V-t*uNHM$%y`(XE<9uFr0ZKQJYl8ezL1kSTG*q8`DnEFDdyw+gjv z&M=rs_2yUnVyp(+2L^`a$HD`@J!p0W^RGoR22(Nk! z5}?DX7!ByKHl~bg7FXpQnl-PoUX}Gib^X?k*}HC19^}9Ps2}K7)E`1`(l@g zXn!LNQl&UROSbkbZWFzwhcQzv4ybSu>ci->bZn*?wAfCX&E*%$Ve}y#gX8vOTNSA% zDzme49k4yoT&Op;F?FuD0vgYF%CjNlr7^D$8Td8kIb52*j6N~v@oB33?kv7e1Czqq z|JJ6UT{d`qCU~j9SRV{(!ux&DLmf*lBWf5r^a*ZU!IEB$kpp{-TXL2T7b>8joR;AF zz}So?0_k}%Tt(_4X5Ybue$KpT)%B39PSy3|tQVCFDeS82wv6$voN)03kYkdDSEcx> z_g?tM*Ms}^DC0{*vdZv|D>mEoRFh$aI0!}-G7xB67qVekZdspBD=Psv*{ zIzJ7*eaFxh!6p0X;HbBNTeIQ~IoOGLM<{Ye(TA^esy^Lk= z)pj-cuGVbXNj6W)G3)CpR^k%KivtaI>72MES-O4Agcnc)?7dLJR*SU;ZpuVII&@{D zfUEoC7~=hY!T4n|I72xMx8psF;kXz^58DTD;V!`YX0>H>F|5!u*qyoQn8WeQOz?2e zyC@^fW%QOGrGtP0)RmulGhVVJs=KWSZDi|>$|_||&F=Ou%t}zHQqDf)`~Dk0T0H^l zxFL3U@PoLG6opIg8a_Va9Q_ouwEVo~{ zuQM|kIF)kwYVpcwdSsrLzn#N^U{|s$DdrcHQ=@RN%JLgulP<|Q|b~K2pW$H1G&Klnvs3lb%g#Q4)1Yi}H{Z8Gn8>H1hD&;&Ol%#!RJ{%{KsB z@NzcZXm0KJ;nq7yE$W7BigJtXgXpcB>Idlv7N^^Fo;Eevn139eYrK;FDTb@Y=R{UX z&({{T=AoO#G$zAlSKfZAZK@P&wY;5|b*v+A{LP*7i@A`}V!3!R@zfTBdbB%Mvqs+D z;=N+9E2^bq#G+V3doW}7A5uwi6!iw%j zX~bYI^dag=Y!^SpJTze-!wy=2Z^6ga6s`FZrcqO)D#Di9Un-1GJ=u-t%uh^{x7-RhmdNizt9b(;KGPsa-|} z!DhU2fE=p%^P-REkxzZlE2LH?uD_D+aObENw+0^r*#7lf~M2X3G+Y2C2uT^yS$n}Y!(*^%?(jiJ(3^hp{-$|1eWL#KcAfM_>k$9qQW6|5soz{oH(dHuB3>rXupm(%T72QuyMmXYM@(p! zrwh>d{Pm&eL=f%Y*`DS?B~)g*;Yb_j;$UYuM@!WDLP*n zd*Qj#AZKTv^8}Bb*dOI~qhjRBsz?-SpdX_);rH=Nw|+Kvhtdo-UEkpJfagvc0fml= zSvG_d1lk+9(&n7PwJP|+OJy0hYqJ(SrMHFPqsEKGZ^mgW?%(8E%51l(W{O9VB3+u; z+6?L^`QxG`UcUJ~rE=w$Y?qS9UIk}1VdP(riEdj8e;F%EpwwM^$u-!%vNaQrHvQcO;Woy%L~QH;B`lvMo5_YctO=*VMOgTutIr%XK;$rP-DC_~GWr!co7= zk@=ZG0F_+6_mJUDB?iVu4&hCO{T2e!d{j2`Z3p#dj9aOFHB!TSix@E;h!V<2O->_2 zCV6;inwF|i{AKx}!GYs!4lW{xfDmnc~)Z;APbo67JCr;jfND(9G9 zM_A3n=I{;n8mXR}QETU<+X514N?G^Qem&1s`8hqLr z4OtwP%xVR<4wyefwT5)dHt-xXEA|JzCVw3ZqgkTzI3?OK?Xb<)csW6wUcrZMWpI!}j z3ZKAFzMiJaAYTm_)M>0GpbX3c;4@yo9Br#o;h*8Od-GhJ>8RMiAeq zv2VUkanw5Hu>U@eA=!#wPL}74g`)K9?kv}iR-+as+IR*Ignj6DXq20i?AhufM)U@# z1=+T2L5PVtB?kR0X~v0;IUsLqVi(@;?4p&aJ8nE^|IJ|vZz%D?utn}@3#BFfno`4v zyd$9$g^i^6>iP20DB||L+2)na6Jdk;CR>YTv+>k-Jn0EavxCZ=?9lx2*|q_#aBG5xub|y z(Ra*U<&`f&zQ=!*Z!P7cv~)D^n2c0(I-WZ(_A9TyKisT!g323_9C`LPJ>FxQZeJh@I9t#3;Cy;PJRrBmlanU;e$sATN6C4BU|r-wr5-C z7V{?5=SCi2JKES)i;v1NWH3twAY&I+oLX9%kJct$-#$G5P!TegmSFO7gOXnFsV}2= z-!FOZ-}bY9VHmY)*@V{E2I-mK0B9kRlhF8ewh<)F`k)A_AoO=;7@G~fjYB@v{Y90}AvG(;X`haPd z9S)trc2q_e$=8(_F*J{aOB)cXYf9}F^DQj!jfCnDA2kx8x(HjLRJ%oE%FM*x9OW-`li_mP9~2mYVkEP`T8@1n{^Bf^U-HNNHvjk7{OwZ08UMqjK08yrF z@ZZ1?ufd5`pUP?_W^6-*{TSivO^b=;S1`TxAGp#^;+oik>T*6(nK6hw=!w+8->s=7 z9gyryuoPd=3uknc3x22f@Pgg|X21L1(sd0S8}euor#liyXWu5)=udj~Z%}6spB$L0 z-E=S^q&XRWE|22Ow)bdSR7y$7g36atpEp7-}`%|<6Mw}V9Z8!R=#Z_|wJyCRy19`ZCazi6zvuof`UuX?(R3qq1hEIR;`tz*d zTTal3OQkOrr8fd*l~~Ft2N^4{8XV~VNu<~*ILoFro?cBU_iYafK#`OVk zG^0D?g=%k&)1Mk8`os@PnMRGs@Q;UkWCfZeaMQ_`uKBUfG~#iHRnzuKeq>#k5b>JX zWQx12(597^=%6#kHlp|H|wc8Y8C9ZP1hl#Ar-aWLC8#+t-^CBT<;kep~}D6 z4ZYyakZYSS4XeH)r``zu)f(q>$gI(}jh3zErOwXcDJcT|I6tu$tq)BR8YU87;yL`G z6uzvDU4Gv0?z$g`d6t`$v-nt^n`&HD|nkbB3 zWE!7QR!JOrGw0JF{=|Z`?-W_{J>R&(9Da@TMM#TuSmzNdd*^U*Hl2{os;^+`u$ zxA!^gU~2i&#+&(_Q%(iUl)iU|KOxNeYo>kb91zH$ExFd9=od7hs8yHQ`y34ki+)ME z)pv&zR$c{u$(84u5nM$&nQ50Db#j&K;C1jswl(NiSg_Y#H}FY*b=-4Zy>#8LCdU)6 zG^j~O*rG5tlM+htWhm}$|0WHUHCTbRJ5Ug@tj~mJ?B+z2mY&425hcAozl@q<>O;GK z4EMNjbd|cHRy1@q)7$z>m+@KW7XK5cq;JBjEapRfuicKOXj%-O18DDD@6mA;F+WqP zl|4^y>6}REAKBoqes42zqtBv&Bg|AtHI7@b0&5&0E;AzQuTE#dZcVZP5ae`Z#TZsQ zwV-f?Lwd}IHKpkx@mP0Z)LgqlZiD{^KVIHue-p0>sem+~xqYKU+fnQTIg$%XgK7B| zDC|>VLhkZ}$EBAggt_i#?z7yHMKqqDH3Itu%o5owrlV@8MeZ$q;|<(E0(8K#`JNR& zx?Xa4IN6Z81s`n$Y$siNng&-=F@pwrL3ZH7&}abVM8R??gTRb1lqjXR8Lx0!uv z;JohB#q+7%)4;G*nBtgT=skB%MLvVz&|8DjPVuV^=*iLGt`7KAb%O$ij+BCNA)`pG!0X}~yjLDI4^(HlAD1p4de>Jh=Q2Jp zOOx7y@)r9%DUR-NlHW?BA0B2cae6E{q(b1;ZN`?r{?R(dH`|yi#E%$qj_Q% zd(<&PZ|!!y!D?+%jgAm^*866r$(2!dM26$r-l|oB1UHRv=Ky#HJY3X3Ewg*IfN1Dk z+{`0-b;dX)&>X1MFW%EqbEdat79`CIP2-NZw^2IQYJu<|Uvq>!uCG+?$j9U%@>I`< zCButG5_dtYl6T@!Zf#2O8Iv5@AgcW@U-*2GHns>wt)R}amyZuZ>gSC;RT3Dnl1E!o$L8qJ$b88o=J>C?~Po)o0S=QPzmOe1v=}6H?e7FGKyPseM*C2Cvj*0(9uia@^OJX4Q* zE8|(0k|mJEQH|#??RQ}J$KPHrWi+MxLSw61IUl#Sjy!7QoiXK)B zA0YahexABntwFRh9~ogQ9zUH>c@R;@`{DMIov9x}k6Ovx>?-jpd5Uqw$m@wG-!@xi zS)=A{+FkjxE3dGE09msnccZqaT+XEolIm$_tpzu8M@SIt=5lhxlXMWt=9Dd!Iaz1( z6g}|buUR}DXCpdYTI9MoilXIYL=S7lKN%IkY4??Q9`H6V!P|G`3``jcZ0ux5I;=p( zA)2M{Qj}iMQh^?Y8Cv|c9fxQTUG$hlPPjtk4Cf`KMsLqteWnioxv49P zH!LRgn8a)a3F}U&xgaaq@^C26o-*QvbU$D0M0g6q=rcaUBlE%&sW67gfm8I4yKm%! zEQVxT!B?X8%=(*l5s<<;6@P2+%If;#5PJ`cDc!`^Z5>6+gYjWR9*`E~d)MAtR=DcO z_ttcBAtzyk3n!fNSj{xpir`gh_d#R}ODU1SHQ%&+z$nqK8`tJ(y)*n$`-6D9=kBP_ z);ba^MqIC=1`mu6bERdZES@5|GQ!#8EK{OAmT&TfptwFz->oQKt@4b~LN8BKzkDM1 z!L(eG_eSY2(wlmdhSQbr9bQ<2bmkMAYiqN8ujE{c52q6Io!xmpgLIocdsOoct!(Y;B2gB&K;nJaP^o;TNbKtTb6bk=?Fr8uGN57W9ao z-trb`6x7y=aCIPUYxjGX=Kkszu-7y;w87z-_wlKMmlaM7YUstOaZN4LcO$OFPS>{| z<+)$ae^#Lg@}=cB-4~Ni7hY8#>!{JtBi;mtd+8HsOT_?r0M7Ig2eC9idca|?`Ue3M~7Dj)6!e3aR&T~Eza4MTyBqB1OE zwA{X~yQ+cZ1oh^#C2A8Ov+tXVjE-qY^d&yKh2n6$0}5YSvP~KM>Kmx6gufAP6!a{l zI2D)4^kMS9l!w$fTd`%Q0s(}wt6C^Yv^bY9Fi^G@&Er=aMJA39QuN))bx+5Xa|Wbx zwFZtyYgMMLzt54PBP=mlsDlh^PKs6I%QOz0*UI^4!pFsVEhyKR(T8WRUb#s~;b3Sh z)3AQK>S_e?t0&|y84C1Iud6t?O0>{duo3$_Jeu+uT9YlRC&pUK7t2~Q5Q2>ZI{Pxd zHTPZDqEGKiz_{qrLx^7c)MbO4DuPp+BGZ`setEYfqbnVWjL)2ofjY12B@l~5lHD&j0T#65WY zu4~B>^wvra5g+08kGGW-Wr>~blL8q^>!oZ$iIEw54xVzVUByfT5laMMvFV7J_@GRZI`xBqnBcbETca5nand z!PU~w>puE^GtB)a#i1SgkVx4AmMS|_vlvUydcv1BMIXE}6VdbRL2%afWNfGtSUBsg ziIGF#1UYo)FuT0b5dnL8X^!`8gNK+T->XR_%@lpFXj#(4O$BUclv|-9gPDxoAZcmK zwTc8cJ2)XTccyxQH6pYm&5N?N@+umoKfMGp1}EbB2WRt7fFter@FfWVqt2-}&o+T$ z@5|ss+CF*weF-MjJqpia`p=7`kZ)%TqjK|8m&y{va`g@C$|ADx5nJ9Stv z3bvi=zohBB~@--ZL1Lp%VL{-lt@peXBCIwyB7z^60Y{5l*M`J^&1z z|8+PpGOZQ~g1z$|?B}-oY=DXfcc#*>!-0`+gPZEnHqFdGw}Jam4RX>kT^x|3S|6{& zU&Jlb!ZRo@y5tvBJTT$OZVQTR?SsRyTCGZ<82_PUpiB(Rmv?7fW)cQ0T*y z)2B~x?E?!E&8<1SZ3seC>?!L%oXB^7yVb53(;R2>6Hr}tDk*B{xLX%)FT)^k(YGv@V1>)7k& zz_p@ls_QHDX6~K1T*h@;eQ@c}-1IRZZY1Eo>HC7SG@%q)u-Anyrp?zj2YYHpU z)-p{BGnt4}%OPu5_ay`YfyY3W*CH0u(!fQC$fU#-aT1g;Av|wECq}9jPK%8NE7rM{ z3hIVJ$ZCjJ>{ih%(u6ipdUWz!P^R|rrAvem=em=8JVQnE^aMgmz@<0gpYnXb4V=8v zgQOhzByv!&WK6yu;_KOR_LUG}7Hg!JTFc}c@Sv>gggJhynCY9sLw_=G-{xM1cz_7B zdE`yfiz=wrp_z;e&`3}{jV}9gmi#O9Bdj0msK=y8e|I_i<(yXg-SHAVxkDzwN*%EWaX2DPKsph92hAZdiox9D<|fKP5;ONHF)ra{jo1ta5) zB+jqca1L1|VM4rVNs4qpRMBNnd#WuEBp2|0>g?0cMN>8DE>p^7vX`*e> zQNoa-L5a`H2UC~%qUv9x9R+a9A4TP_8Kq`BFQ29+g>V5N(7Kg$@%uf=f~k;hRPa}t zncF!JbdO!L7lglv-KpsTAYYupxG-FK8`SHngL>Va-{Ck2K1qdO3%>NH9j>{IiGiZz zv!fg{1_VkJ6#euTF$Te|OoTXoP1<@yD0{XTZMPab7Jv7ARs zuXsgX>S(3evAf+ieYKKDI%rai1Y_Nbx!9w`L|?cVRDetPv~O+$8^dYQbqpe^c|ERv zj$S;M-1&4pe+ZA?k*;H-CeDPosO$5vRw8ux&7IbT`CtgjZbViqgwX`G?-(8%6>0!{GUV$Qu+JA_Gt*WVjtiPLri3|7y(Grgi@bB&pUwEu zgp}dXTWyl{^+q2>gqY~l%+cyoMb%4ejU0T{0>AL`%}9n>OdrDCe@&aRVEw35Q)!cO zX726~)8K$Q+ql*p_Uxd@+S>~ddNT}Jh0VfuPB(o zHK~(b)Rz_nTMG_7WaZWtZ!;#2Dy|`@g z^6hO#ba=W;$ZROpx}#%WjpVxc)rt@77K6HC$JdSW3e9wD=aEXcM%NpC8FgQZA0P#{ zqd`HVemD4~79sWPDpdIc9Hz$_x)?i$d9D)uSxe3i51*f%*?um>pk>~sxmD#!zP?pE zm+J27Y?63SUVaE%U=q)G9591XjVg0EJwo(&O~f;u#b5hYHXk;_a{g}LTqJ9Q|FHVR zJYcK%$RYh+|5EbcZS47y5~lPx2+e z0zRmvDLH>Gk|tObcYQvCZ?U#AxPpx?<8Sc) zbWwK<4ljN7M1qV>QFMENTy~+^F$?7Eak=}+uvDFy2D7RqL2zJ9K&qR`)ajN}hoVO5 zAJ*z`f%6Ovb38>;PE)S%VQ}>u+)JhPN(Obv1*Zz9l|Rs49&OD*)%8n`(FYc2Py0%B zQO_r-VZ%S2d&R+g#NYLh?|4^BHqo@h0mN7tN+*U7EjL zORpwF{nmWz>wSCIuh*|WKVikYHr3vro8Ii=u}I$cW>=ON&)tGKmn}1UPP~==KI32S z&5iHxdGPM-zqnTWkJGz=72(qx<&W>GE6wlu^=pfs&P$Wym1nA@POnRg0ydivZ6n~h z8wzIMYzx0<;Rb)J#9f8P^J)A0w48t0G8Z{mc<6k#{c}YZ#f+Fu1#14ysVDF M)78&qol`;+0F>`%R{#J2 literal 0 HcmV?d00001 diff --git a/Crypto/Images/bloccipher.png b/Crypto/Images/bloccipher.png new file mode 100644 index 0000000000000000000000000000000000000000..4bffd9224c49a6b6f2c2f46418a0dee75e409cec GIT binary patch literal 18144 zcmeHvc|4Ts-~T;!%D!h$Qc0ExBU@QgPL`7-shBL2ZHBQIhA3O1QrV~FNFs7nL&}WM zs4Q)w(2OApF_X&3H1pgu#!27KInVRF&hzxVetm!bnAd%O?rVL2-q+{)T<`mSNq2Fw z7Zq710sw&M)-AT%0RVylugO9J;O{uEza0RqAV%2jiU^7E4+!=Hw4gTgS6Waz@Y**3 zjzGghv<&qFe6^sqT84&p{$bm8MtRsodpPcb?$C|g?iy+jn!yrCc!=M885cOhPuGBL zW19&kkY`UQjKd}HQI8JR-oEBeOH8`c|f>KN)H&?Kz9|Stqfyb{7V}31bLYryEEJr^HT~|ULJRnP9X@wP;iyQo4;OtddDsKxR5#?5Ss(~D0h}o@Zd=9aJ3ALgFz2k?*}gs?2841KZ-NRuO2fFi)6FKn*BgGoU>Lo zfwM5w4~+rqa33zTVsjwC-yiK4!lnmU0*(fM_XneV!WWtchdSTGx4nYqMI&J^`mX~p zjPQ$L4`7jp;lTk2B9!XENp^NHQLAJ?mYvO@lXKHLgWebaSD^SoS$ zR;FAcM1NiThK5|*fko?n!L~q{#hm+wEq_Ce_3P*R{)QU=f`9aZfCxX=P&j9SM1v6* zL}ZaOzFn_>1=Y8>Y8ifAl=Dv(0v(hMcR+CP0^D2=a7X!1kT!&Jqa+t+!#}|pYRq-u zH#l=`{{&|vZtVU$oPR)Q{O@~b9{7I=hMcAS#}>eaXK@TQ0x861(R>V>52HrLY}-GG zqyJS-FLb^L>yU*pe%*+E8dh`n*uP=50oxaBcl=MY+L+@~L;Xca&v&#adjCwU=B5VU zu$lw^k6<;o^F>&PaNW8H?Vp6zP~&ftqd$w)1`GS&|2V7v&0;k-{rHB}oUQUlu$tTX zVpemB{`0YVJ?#IG)h666a1qi!b*$!YO^aD={KI1P_xqxq4-y?43Z9DC`|u)agU4@B zR$w18ev;5_Xbk(80}a&Z`vc9N<=G1{|DWX9CfqIY--YGe)fANd`4(|UXNBQpug#RU}Z{cXTpsmkG3q$=y zk}8y&lzek~q#+$X6FI;{t(fluzgSv*vBw_(r$jHIx z@J7F|ULJxlAO zq~`b7GQVsf`X4`j&vM^Yio}DO_=iK-B9-SSTc%XD1&*jax)3xl>P#!k^Gu3960Z#q zftb=3t8=BpXCp<31BSB}-RrXhWm!3v?Tra*632QXw#OfHtEEFHeB?i^U@F;Zx%K6* zbbaga;##5}vAydW2?DHh9NjE;2CVeRa+~25@$u3zf)wj`ygMAbHln>RU4mAo?y}|9 zdCRE>hFz;@q%AJTQPCN*f)NA>_%(kmCImp_be|nMZ&b2WRU?0iZYIkTh>Ca~+MAt! zW$)9+?U+bBO;$jczVa!yRdg23KqJKKB7eVG7y6LWWjQf9U47j1rbh=u{_NRJwK=hwIO()(^O~)uFXyqbzDm$oaCuMiM z*P&$xSxB*942M+%m9X56PCRObuiYtXJqK4X!|117Zh3^QN-E;BG=5m!Vpa8V3uB0? zb3US$;=*Gp92b1XD;=|E`~;mi=x+Vizx6yHT8iGg7B9uBd#*{#Zmv#w(ve{!JiLNh z0}hlKcGdp>>4A2|0-ugS&p*l6+?a*sCu0m}TqhlE&atQVblEZ8(tHlKBOi~?@P>K{ zcRnC`^A)hM?B8j;T74c4nJ;q=j9<D~pP5_FBnjk${FPM0i7xpTY(UU*BHku(Rffvw8$73$Sof0O(izQRAyuAX1 zk1JQknM_ZyM4{#V`5J^`i=Kj{0oBiTSvbDXXkbP#)W+ZPp$dktrMiWLzY&2(@1*Yr z3e8wuD!fIa=$n^!Sn}BO!tPE?;hb%<##&Sv*8q|>~Bg4xs=-cDvUgy53s$Z*Jk zT6cVIrnT4bS&iL#dHZoa1z+qm(|)4L8w)mVRrk1;XL7=;mU&;_e=k)9sJqu}V&3t& z_EO-<@Q&${0k+=`H2(=NO+!r-xQ3zJgJA%GAKl$=nmQn9im3 z4fZw6x3G~t+m*qPaU110twZw~NUUoZ5(ZR7$&!F74><|AX_T21Z8V2R8JgKv@r5cT zssZ$MiJ1{Ax5bGUzc>slQ6w7`%Hw(YwlJoawomc&iW8m!=86D+LLen|6A7To0tlck z@QTLiUosM5P9lh?do9(1T41nLx8Nmcj5O{Pe}n9j`g~+6AFzaw*OEkX^;YvxV5^H> zC`#iYxmy@XqxrpGd;~&$ghsKDJv`*?01JK-f~I9d4>c-M3#`@&Sqc%HfG7wxMtaQ{ z^iYk54m}uff3QIX5@xQ_Amxxj5?*^_E%OinlOvQ^)EVq())#Fya^FVimV5CkC0k+h zexdThPF{kz)4H_FHg>6!62wTH7)_}ORYB>3?tb;C>D^91n}>cmf6$)r(lZyurzb!a z33tgWd^_+Nz22xFhi%r(I@Mfod=pJ+t6dOh=5lnr#6I zg42WYU8~@fb}R~TP~x~qfMy288)aB!dn8mR_gMm+`HDo-_9;rdM`n=H z2}k5A92ukWpfz_i0MB#U&1eTvK8d6f(O^o;Zs>br(u2e^SH zG-s{58cs)FVa$Bz#36AcMw?ztY$*k0t-N~0)Lwu(wj}}5ejS>Kp;0YlJ5}96PHOqx zp~NVB$%Unc7X7}DrgS*&!fm58{M@Ftw{=5KuXamMF)Rq?MN{@(tIYz0s#cH75+gJ5 zbkVmS>F=MbGcn?XeQ9@tqy}8grJHh(E0(;!AG9(*MzRAN6LV&Jip7<_9Ciuy%PL7@(}Gw9;Lvz4hL>#c$Y*t_PT9NwKmGB46nR;oJ_o8Ro41jixL>&Q&$T@R8NpS(fqKtZZ(i$d*FFyz`DmI-9Eka0AFjw;>UDxg%Bn=dq zIzKHsttLkPbtH|SS#09}>y8*vCFe^Mug<;JVJe@if@-KBBZrehq9n)`xG9sadk=eO zFBzVRYazv(k@o^5-q6Fs1}|_&FLnUd%Jk?evtDR)4D57k#?6>ag{Mva4I`2xw^fZ5 z?$KiJtT=U}eoQf@T2C(?anNxzfzpWfplhp0WW_e5&fAm z8xFTk`%VaMu563Hdi$>AJv@X84?kwuY$s!~5?2}d%$<>s^=yhUuN@dd3PM!F2u(-c zz60o|$-90r|0*Gdu- z*-OLmstH<;+(>>E-m$SQsYOLSWJ_=cJ+)mVy>(4kUb2@vBYyVdYglXF-VhKP$3t-; zjI6gWhDpS`mQgt8=;ycAY=hgV6utAhvtQ70OK)n_B+8a$D6M3*WaC&K#(h}#ng*rI zumxc@Ek}?LB?;Y9xWy97pG|E^c2Bo@H+)y`iwsezAxwzqV}SY89694fYbdu(rJ8y4 z6Gc8};Nwq^G@_42-JA;Me;xdidCxv}D=cnrwQe z*STR!^Gidg62v7ja~oR2r{7&D8z|jxV_7t47-^#%-#MFM^-xuqOjp%hJu}-^Y#eo_ zD}Hp_BvK7~P5j}9JDVh=@6F`LFmnbp{Cc*fm3ASqITmCM3f?K9m3Ha4S&EMr7^I>r z`%d?!YNyZbI$z&NeO>uUTT{*PNE+)=`0(e*a|2qoHR6gAL^@^4G;Xj#1|PRC>^4Kb zkusBoi*8tno3xy`xTGm|dnUe^_C&Iw2h&zALvik_FJAIQbgFlBCRS;gX6OK7t}+=U z@h!LC#_T7R#!r56XJmc+oS)#V%hW(#3cS8SGSoC|mmt2hB;KjVBUIgyO!jWb1 z8RaDn2J}+YFI$y+I&OlS5@~k}YZE~KlH}L`sXG8)J6bs@3^cypag7&H4eZ%2MU1S~ zO^_eK$-cIlMCJRXMe-}F&#z6U)U9o_z9Wl2pXS)^RYh|dp3Tnf+Y!5(QjtcTL zBVLms`Usu=(m*fH$L|Ka2pj2ok?eTeo&FYxNl2(lFY`}$(LWayKYR=e#gv+9s%MQO zWhv2{6N2P0cRwu$)WWGgtB%aEVwXlB(`N?IR#tl1HE&%2wXTlG?F>m`zU0YX6FcS$}@-46SPQGfKN5YBrkfQz$AL%LWk-b=lAux9hJLb@-k$~{7 z<_A5h#~->~(8~C-ct>Ku<@@d*)6A!qSeia_8JcYk8xY;dSUG}|1&iHwDY4houR=aO z3*43@h)WNR`AiN1ulULNPX1N)%1gPMpm62s<YX#z1Ru$gJRwCwg%T0`4lNPYi+d z_bpv2LoWpOEFn7pXCdB~-!zP@x$kw5dT#AF*jcssoK~P5o_EzRjG+Rr1HIZ+#;5lQ z^56}U&Fgnw5l`YMJ4XJ0qwIi+fD*tg-=W4)7P5od=LMe*Bb9r{wU}DhWG6YAQL|E} zr}f_`G_K0VCTbr}ldI#F&Z{19(b7V$_JrXlt4gt?E*A`Qn$o^;R`kfcf>b~uB-80- z+vA1Sb2KCaa2lY7wBG8;kctFYrB`HzqYe!ow_DN}mUnt5TXH&nIi1OtoG|+{4O-Vv zbEG7hR9(oMysX6)pe$IsgU**Fz|2Yd+0BJGJX<-LL2BMnG@7sTr}EQkG4rO=m^Iz0 z9PwgkS?#=1MiL-f{^b;cHq3rEg+G_UJR$wg(0@Uq)5I%ba!KOxE#;PcoxIdC0C{=p z@dsOgEe}~;{UUAB`8jsvVHXgrMZ*gCLP`@vyq$rwg;uNO96qYEH5nFlGs6Lx;-{Vk zoB(RLCNq@>rb_68+}7-`bns0fXaQL~p>m0tz->7K5_rW+?gOGa+T81NIf_ z%>32N!Q|rO^6yCuk=)TnD}Zog(BEyjG+$jAOC39$#p9yyKr~zv;#Tm4QNdX z2rURWMHjrOeCmrM@G6*(w3|#^t|mae6|mB6jV50SgbeK@?p1!4pCCk@fxdUG+Gewn z5jbLX^>v=dpwY;XT2P7!Pr!34#U~RY31S4OXivnXKcM`zgs#s^T4VM{6R^=s?8 zV6=Syhloz*1Drlz!3e0dJ>PY!-gFM5lPE1ap3Q4G^hBPgm!H4{Iy-xv>y1UhrQ*1n z*)M#41zUNQ;Ne$Sr|BiGs9(jt-Eus!#meZy?;KTj6_8ZlVpTf8;~o6K&g8as$@s;6 zjOWDiIa?*VNUvR<~5QoWpp1K$y)Si;uLijb~xD*-|&uSQ9M((xme{$bR?-lIZvZA9vg z(&w|??HKFKs`|$gVvWmG%?9y5~HkUi96c8GAb>&E2A zY7fS{mwUa`qGo1$9_V7dpe$v#G6`&;e5&<g> zu}Esc#LAunFk593Ee7w)o4LNu-^^GLB?U)$-(sTeGgLr2&gQI_NZZ`Y?>WW{+ zgK`~_XnwO&dY{wePK-oiZ878?^Z7@gvFS5AJ5|(wQD&@Qmfon#XPl;Y@lDv)Ht^OF zE>4&Nuq}H8y))=DZi5*GLD<+bp`%0}nfz9jA}yxf_Elx+U_ir0kuzX-#u`sX3kr0$ zDNb(HVpdGlMfM$>-h}jU2H&|gr#xI<{qiJ8L}w91u7SIE>i(Mc@cr6OB-wYTAaPI9 zJ7%u(M)=hAiQNvnHqi~_;R|6xMT3=&)R4gy0HWX+^3Fg~g`ThPbT6qS=($$#ov1Sw z>xH7eOqbVY4)g(W?UmR^C36DnuZuOuRlEZBRC)pA($3wTE^mS_S4|SeEj4>mRbTh2 zzAvAXi$mS^BH}VXeq-z5PCxrW&c1HF$Ub&_6 zC<=z-jYRB^FOGHSE$iFbaA7d&lO?_%5qYHjBTi@dc~(%LY;w+qRO^sQR&>o0(Yd-> z_ntFzx7Ue1Z!GNjNEEDfbNpS05I<;x{d9LjKcbem*QG(}Ge+L|;n1hfPD7kyeXOUr z)#is;Emq6!t`OL%do#;Tf5pozkQ z&gWUuCWa1Oj;E)HG<-Tr^=&+VqqycS8zzAL>br(&|v+%%2rBlBJ zYRyv+>mE~xIFO{@laKGJI21^mDTmtAraU$4F4R^$NEkBkTY?mZVsM(GqDOasIDS&; z-E?+}UI48oo;h&jR^E$oWdoLFjp&P}Tx-VcW6v$czhq#%4wTK^oVl2EaYNjGrt4kH zy^y{3?Ig=SHw*i-l?NYwRO~+$_2}iXfDx?xMaw>ww>4ApjpIw_BIGCcoPR6*W(Q^J zrD8>R04=&%HhxL9=LQN1$9wr<{6srRC1>Zm(6ONkGfnKRzA{wLsRm23SYU-*#q`*H z{uoVKSN3l;wefGlgyCwL!KBm;pK#|b#%)wyb>IU}^y4~LQ%EKo=i-KMTq&)8?LOn4WXjBAw5kf)(15 zFUi9zlv24#$X4T;0=Uhzp4(}691H=dTzbEnCk1O}^S(L)qV;p@NcV~lWmo?_u>Bls&!re literal 0 HcmV?d00001 diff --git a/Crypto/Images/concept.png b/Crypto/Images/concept.png new file mode 100644 index 0000000000000000000000000000000000000000..5d55369c4c38b97b16e84ef76e2adc1cb252f4f4 GIT binary patch literal 10322 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 Wsk8gEGQs}}N^G&RN9SAY{`qe=J3*HK literal 0 HcmV?d00001 diff --git a/Crypto/Images/flowcipher.png b/Crypto/Images/flowcipher.png new file mode 100644 index 0000000000000000000000000000000000000000..1b025ef5d71ccdce3595de352fe51523652c806f GIT binary patch literal 17535 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�M?C>$}d*L$-x*9#{$MgpPb`!dMBCtDYjh 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 literal 0 HcmV?d00001 diff --git a/Crypto/Images/symetric_encrypt.png b/Crypto/Images/symetric_encrypt.png new file mode 100644 index 0000000000000000000000000000000000000000..67e2f05b5dd3dffef27f7f53e53116299978675d GIT binary patch literal 25207 zcmeIbcU)85mOqS$N)bVnA{`~5BE2IW5du;a5dkTo_fSG7AWBgXkWi(H22om&DlH%g zs8mB0q)9VWflx#FohUrweeRu^J9j?Myz|cZ*Eu`;?7j9X-?jEyd*efGO%+OVMsgw| zB1*98l^aAv#H&O^hd`u9ftIM}FQkcxSW;oiw_%Q6R<;h7L?B_MpHCoRW#HMu7GmuR zaRdno*jj*uuYiPvl&xH@-SW^^^3>P3Eqs&L{f3US3eXJnaDq5m{_LX-v9{zDB((k* z#L-K|72<580kyDn0Qy;Y{p=+uAR_+rOAGIxE#i^_KO3xF_ow?YijV-ILC4l-Z+yZ1 zZtk`gmTr5a{rnOJg*w1&oqumMhdMb~n!|qU2yu0Vdj8(c3hJ=8$h}#efpz@$5uriH z9OCfjRy|t_n9a|=5<+{+BJ@_Zw6(U`pIJ~$@+Xy!kp0ekD{-@dSU^30e*dHC2jg6! zP~cPLA2Lz0bRaNqpD#bZyZR4){eym2OQ*fb|LqSXe$wRz^WI;Zr3J9my;rC!%m!)= zb%Ho3|7ulqg}OUgSQ0oU01{UG)#n-%>I^gr0*!W-FqrqA+#v2SD9~gBb9C7I)eYtf zwYOA)IzU~2tXx>&$3LLcPimYYzsTQPksH+A)qIcp!asWv2>tQ7(2qX*8fOW0w1l~O z11xj3bb!EYJq~sf5`gT9-ujPze<-Uq)D~cxkiedriVEz>XirInMfTqJhk!v`tu0}D zUjc@&ClufTQ2hPje~|T~>4zZyzEFike=f-b;^4kV?th0|te{S?zbBP{PhNi`2_b=h zM}T{){mH+dA`}uKEcjoL;cwjkH(32=PAl2iT3NYTIub1A2c8`;hTm1))5aENspAa! zp@^OUwEeEu0FFBBv(E|Y1PD^`pXcaLUhkud@V{jf9+s{!%Y97!`|R8MRY?4ARC!;u zJ%6FsJ_Oqw04|BY(fET#^B-ln;19_P3H+wpVh#X0{ooE@Z{~jhftZUs0r&tI*oOq6 zUrl1xgr5|yft8d&LO%xp?25o);PuCEe-aO;VpaQ#2S-~A3j!1>x>~x~`asNnz#;+XoC)ag13W|(L84cH76PyVeFz3iz`WnBWKRKp zlJqA@{T&nev+nN;Z(lO|IJEzMKzO2if;uQXq5lHm3GMlZ--Ji-`3G#|FK`(DyczxE z`#%dzf_o19H)Q(J_Gjt*hrP>x*iiN+Kfvq%8PN1EX}74@eW_E-7e{gCCL`v1U~zd-wi_O_LOZDjL5Q6fL1q`yKWd!fMrK+>@^ zceMlpegSn$V2l5^7UbXnWPk|4`@geO`^T{TPwe4-PX8|fknr!ZkKleRbRe?d-+~=< zp!;q6iHQHqwoFKDkN*E1DTkl=1tEch$nw|e@t?QAj+Sn2gd`)d`~8uA04WKB6!!e@ zK?M4bYV_|O`Jcz@Kc^l3jwSpTXuQaN3U}YH5n z@V`qM;(~t@!T&vJ>~;CCmc~Bz9RT+~1NyJ5^OawDX60Y4|9UR^pEs4CRQ|J(z0lu@ z?EkXR=FfrsABz8oB!V3W@>R;8opQWK+HPIh2G|;$TZQXzW zqY^7Y+t^A(#7+dhqHxp8crKOVyQqr(BwK=N(ASH4!R&fu*Gbt06^Y4j+ypN>SS zL!PMo0m3;!p8boULOlzyOQ5RitLA6yw;i-qYZFOHMDC7qDNu@^R1ADuP`NTb!?oQi zK9%ysZ4!sY?r6}`qLw z&5a#E>?mOpK=A7rYfiW#<_MyVr&rqG=pj;hB4X;hL?rA)fmqV5T9~rq9ZV`{P!Chh zIcS6lM#wVm;BCS5>YF#H7wMMiR_NB~Ht6u;2-sbup}LeRhNV70jvadmybzBYjW7fs z`Z?CmVb4FV%@5voZr&_H2ODj)V4*~cu> zU!)u&J*{A>S2x77Tm!;7gQ4-T5Tu(hwd76ANkk+9R*LKmirYG_t8)Y(`;Qfrs<4+8 z)YKrkgFBw+fqk}DuNmquodd~;1+8wOk)HWg_f8$?&8~eu@J`)OvT6D`Y&^o4SrMY9 z@KyV1mfB`6(mGV5EVDSm;}6yVbC^;GGS}^pfVJXbRmhlQC3fQ6EIimNVE(vqF}L43 zijkCFm`$CSq(z{qgQ|=AWBny^B7?VEIc3r=No7`suPW?w{1E9C;sKh~rl9qWrXb2} zw{!Cm)u{M!i7lO}9r^2jlLQqOfQJVh-0Rc(?}0< zn5URB<^YQ>vJ1o&l)bFs^n+y+U#jL>H@_u*^-J%x@$5ZHIJiyH!@V$by?Cm2HBH{4| zWM6#MG`GMLy}70?RW7QnJ}YwzBl8}r74^fseva4&3KXo{*+Cee$DXKkaL#ZKxQ6Kj zRTp)ve!BEaJb@p{9-UlWpun=7_#j~#WXEY&*C=yVJo}65 z!ce=aw@U&%8^p{Qf3ZtGgCvC9x2flH%lJxg|8>P8)(am-)u=9I2o@jOvwL8~r@X{U zL4cvcRWU0Aibe4yCUG!5Fnyl8DE$Ftl{eJ@x>dUsn;2qF_2xd$Y&Pb?G9ljE4>6IDXD_Q$Zpbww<1~S9A49*-kEGG(XVGL(TL_f!r0$ z4CmtY>_xt%rfgOawrVlK^*5ktJawCEHYyr+`~3r9^mr-C*($}2GqqprXm02)#d@zy z7z&I5A&ir91ZlgMEx_XOush0P5b^`kc}o&chA&g!Oh@eKy`AGPvE4PoKvjKAUr{2B z4lL3ABrs!p0?rVzHOvv}Hdv#9c{@7Z8!{^}e8zS0=+qr83{PFJajKH6%$FBBoH7bG zwhSGn($%C~?)xMd`Ot$=(c`#Xi@*%C4!WfURI;Ze=l5qhI+K6wtiM<-UfTE^Wwi5k{`v={ zht1wWNNaV*rK5Eh_;-~tB|YEC5`H6BgfQvSySz)Ca3bt|)qcKR|EEY_u#}qxLu50gAual7;37$n{xt>@ z3Oxb`Z(qCX{a{GYo>-@$Z!I_*nQV~C!WA-rtgRrH-O1DH<0mgWQ{-J*NzYDscv=cG zAuE@Q3GluG493yu-&23Dap3`xco$1xmI0~!2%aP{^xN?wE&5HNr~}>(0T{67CfMTFHSv+Y3$4T?075qD{LUHXD(M1J6!q1Z)?HCr~qpEWb8wj z@C-y@%=5}!rs>F99bOXly9HTPT?(ej-m@%rF;*YIMeWFd@SJ7%XD4PQHuHtbsRpl& zb$om7`><2uxW)MB(eKz}3teVbDyD#-off~H2-yn$U(uM%TpG_iK?#P#s z-)1^F(p=QM=-seWbgtg{&RLVR!Iy@vF3(BcWQa|BwS>qk0IMQ*J*sg=Yu{w67K=;H zp^p>{wmlZ+^n`!>_JLz%$|Wzb-k8)u9w7PX_cy1BsS|^M88{g(Sm+US#at1+{@kyi*-lLi`Y|mcCJUM`otoa zJ#=JB6iwp+lG-qiB8!|DVjcfbH^uJxc^Q+Yf=fXN49zZrRQ#m`iLTF zG59W%U9x|Z9ck>9yWTH3p&jv`NN$ng*FyMf(QdF0bH>iQ)CmC#9w$vDNqWxKQo8dx z+#xwcdQJ7Nw~b=r>9}+PY#s-TlPZb^%uMQ!HFLrNbe;U{XFv(~ypfO!VcgB*he%0? zTa;kI`loJ#W>d$u^G55h7m10OkEQbOav)?=UTbFGlcxj-?-@~cxLaFACP39X5YSrY zA6Fp$lma9v+*aP&X+Sxm4Q_kj)-kOkd6<~`8}&$tS_0q|Jv0DPdRd?DM35c_oUm$z z*r>#PiOa{Qm=Gk#-pV7A@0iB_ThxtA{aWR&&w=Wx5S5b4lnsUskj8QFA zz62oq){MdN`?U_F0NIVYBE?a)+K>PfF#ou@uKML@IkgoSc;Q73-~{an451U_1417z z&RS^^j%#5bwM<_Ycs37lV{d}9rl3}fqO2FN4B)j(=u8o6;t86O5QBWE%^4B{j#}xi zuq>Vuw?_q@i4XPW7PK#fYqV_MzMVIvWSp!$-rqy!tmIgI%v6rVgRsms*{4UCs2R@9 z8bz4T4fA8iDW`MiFy^4a`+b}JU&3TAvjf6B*71sln7S{VXqlSDtcRqL9Dg4K*Tw`Q z_|i%yIz@Jf!0E9taWMTg9nMVor~1TSw3FRsLX@5|0OD+Tb1x)Ui4d%?w0&}d1iX`? zz2(t*MxigJ3@y}T)}~47tTagGaS@2mXb92|1*EUiH(-kDuK{E1tsJ+lB6fMfR1`TY z$#L(xsqfwe=+9&W;HHwRR=U`pN_+PzNe?Z-y{{ooM8kHj@+M9-ct*q0km(5AsCSZl z4u>}LA*YuOsKc$r8xkb!0(Sx1BT`Md!563zRGsGoeoz)5U(TgDROktWa#`1mg^nmbbp#eY zuqxN1^pv2(Ag@5NTn$ql$U@lgC9Er01vMD9amOnOxy{KUn$FdEgR~_CP@m6l!a@|E z8UP=3SCmrLzo1^_n%G)RP+bba7*Ih^qXjpn?cMo3XaO9sJEZxPjM^rJXjyxV#dLmB z3pD%u&8|--&zkY88op=#^Mk3Y^qN4w(G$s|SJ052Fl{3%~(@y@osW3pS|!Hx=R1!H65p|Ln8 zutRKKMwz)17Es~%d5->Lft!HkbuWx%^L_~_5Esa*^Q%TSwcyU(8shnG2ae**wCvty z8~X^rK*^q00mwuqx3A6OM|LUZk)S?dW<_l*xf81f5XC#%|tkHVHf@U?2fWN ze<%v*zCn!m>m$U=1l8B7`7|wWnp`KVD9b^L9|NV{5!f&Xr7{Fn53~S*^Ee2=JbtJh zfO)H+TInmOL{VVtG<5ewJdPP$7K{5@z)^DAdFUJdCOAC~=K!XU#R&8t3Ty;)&aq`Q zks^>7SPAX7(@7#J@_Z0BLs$S<3jt#RqsU#>>kTi@J&8;Y$VKix#^Dh|l8%e9z#jGy zCtwhq0-8Yl#l;O!D0zdt1q|#4qe><1BgJ2`vfi*rR7J``~fK(rm%&UVW$p zu;(2-1(>xjTL&>|u_nNf6;=T^yeDY(TF24?%N@f?m}=0V z7G{kz^^9U5UsCykjVy`XIe@2PQD#&mlPZAm`pZ6VAPY32z;~T#do~ug_V!jfc>vJpf<1b zGa%G9A%NNl=jV5JAcEit-#H+ib90=7Y8VaBpuhvKaPM#*RITCoWzC&t1o}Ky7$JL7 z>}{G})<6L{u`U6EG7SaEiHptxT;cKj)W;Wy2;LTgO1_&E0jp@8E>vnKz_1ozSMzXr z3ib}ELz5XjzO^lL={W@f8OSltR8A~bc#)@74Q!R2|s)Tq%jU-{W3wKf|r zI(SlvksIi-c;fB`^?8Dk5zKPtRANlQn%#CU;&g%>^UhpX0v=q!`g(Q7lO#U~nCwjk z-3Un%QD7sWY@$PlCY^RtfX(`dv=*k5a~pyHViV44RgADwd`dY!XjSQ{E?}63E7BfH zPniK|m{`9TpQ~W1S%ys3rB#xjqWwm?vsU+!P0jj&G??~VV zU_VlF>7UFg7D-oLUI2;YrwPe7dP6Ls&?i9v@ zQn9aW#`jXFJQ+!q!742n&mB>I4MWNK+Q8&qsLf%LX~0k4tcgl~O$`}-lp}bWxPeAh zulaT!e~*U9abn$500{M0&oPAVO?QI~nPZvTlQ0eHKN46$2zBO$t#Xz6#K-K82g`o~ z=9rv4-F8pO0sblfnG5yHc)$&m* zdQ%|_VEG38qjYS#w~Of6S$DH)i}e^-EN!rJ&wgb_q5t1m4a13u9K~T5YuDe8DM?I?N+%mouWsCF7-?>*SV{V3@9jgBvh4gK-kZkMZ+wvn zcuv#cCB^&Yn|+@!AN0|{l}O7FwRubEG)t2S$S$o@0?+L)=z`#~dV=dqubry7HVx8P ziKe7eURkD*FtB-V9R;4Pbtvj&({mX7Hg1<0pMvvhQQdW8ZR--!B7PJl?SCJ5E_!tY zlHRU+9PO8DhQ&pK8sNo8&Kg!@pV3Tw?|m$RH|0iqA1XbQ9u1=hmnFdL!N*i9&`5i=el5%df-erIODG}~ zBcs%%OfbWdsQe@zV9j^PrXVS2n(8IGJ?MbJR7O)mi$t3;5cB7;?BFs4Ob09;3*!aj zL#^&`VUrQ)OW1IP>^ZC=m@N+G)WK`$C|Kv8(4I~)tGp16V5PhDHET6YZ*`axyAqK*-r4(NUSWIUtv8hK z(U|nM6JH4+6)*C(PFHji@;ON6CdMd>*C!n#%ZcShXvW}DUrj6aX(_w9OCCqV&#>@e zKOk5Oh|*0Uz@|-w6Mh3T1%h7)8s17kvK@y=0tFT~@G-TD7-VH|uLZmTt%OkrrB?S_ z7RlU4$2Yk<57j?$Ny(~d&7%Xv6!q4du}wT4SBYRP<20z{5IwQ7ornxT;Mx^p{FE>O zAy!+Dk@o6^d>evbIX>(Oj@&*d(dG%2(^WSxY^oI&I&Rdf$u!LVGWQqMZn4S(na1y| zepA66XF@yt%p`{3ZB<63SQndi4w;Fn>zD-%!3SbCW2JnVD97;Gp^4Hq0x9XOCGkB? zDtt9>y@fF+P~P!KYuuINiF4^-*S<$ezPs*4*|_H%xlN-oyGjUAFCU4Dkt2vSo)3`A z_AI3Ml7c+1qpg}|K!mwh`u8j%luY+>}Zd)<-QxVwzY`%2&ACbt?W>v%ZVGZmjirv&GOWRFj^eLVdZs z*n~L@sR`?V1wb9YZ~ zYt0Z~24u$fmhJdq%GEl$QaBH1ujc8CrLH0MALYEB#*9|-H+l!^*3Z9HcQ&3s!he2q zW_eLUJm`y4QiV{$Lh9L0if5r*v_3_1bp^~paK7H+6@$WL(dS)poB3;%JZo;P@%2~I zt?%^yFb}qF1NFJF=cfTRea&67y%7jtm1NCq=t3=diBArt$McCEg+}w{;YxJTUsi|hCtDl$n1jXf7Bds{wy4h#3gl6%^o zFv6tGGd(bl2nM{uC%U8Qo+-XDVN_GEJk$D&UKHQyt@L-C`ttf%2yqp~VCAPN*W!*| zweQM#0M3JO`5R>!J&V_qtVgO)Dix3tH@{`{%XIhQ7xSm49~HEVU$JNN3sv8gzqfqo z^5%NiP1Y5a+@a{x9-d%pE#39_=2z7y$1}qtU+u?RBv@ztHSZ`qZCt$mtaG#qr6(&m z7F^B&&#hc{t;C%L^fah5MF&5EA4Xi7gr{&|IXX=TY%f6LU{`Dcm3L6H#iI2*sA?1? z_v=An!gxbY>9((Mj7=&JckV9_886b$nK1ir+C2d8uF10uZDPXcI)yR*~vF)D)SjykTL?z)3z_a#% zdGoyj6qdInBItAU6lFKGewpeNC#?x9gHpNavhda`Y*D~`mDiH(PH=o6VUnr7=1D3y5! z>&(oJe!1aXh+qhD%S9$|%q~|{_Pq6scznvE=5D88#niZRWq1Dxb+Z|MsxtxTl5R$E z{;D2yspJz|^_LHY$GrN{3bu~$O3Q?ud|TH3*fBXSvz^xn<7(T$V3S=2ASL5i{C<}# z2yPtJEwzqe>7N2`VykW!b**|LPLPSVLOkJlaNh7Dm76zC0VqJ)n^>$lHPP#)WujNa=YiwTKq%Cya0W3 z*ZZq1Bo-jwZf`anNl8m*zMsabN0D)n4JZO{Ndyeuz_`_ap__W)HUC`ckRVM4-Zy2J zZhOAjXwpzoa;Ru+q+n6Bx{*xf8D*r`?VAB6(9cayLEDq}?QF2mjWIdWb~tr7yJxcmvx$`>$0t%qkpnOv%s(k)u`KZ}c}VQ#FO|E_A=v;oMN~ zG$EbZR`=4FWojoIwVF&$iSi6(a#{0~lc+qA)wXi@eoY}m^UBBAfaUwj4&lv9hu^i* zbuGA!36{CsF$iEANK0yLx;@~QMl~f}$uKZLyCGR}(Gzfor(2XbOL=DOG+eenQex@e$E9FI2 z=rwfU)lZI)`8dJhzONb=^D(}e!{W8WT0!u4)5&HR*Xc(!+n4L_H(whjc^81sgP3eD ze!0Dq(ztk+?>6p2$)l)e963WacLl$6hI(X`;;KH$JS)(mr~JAV*XC#pdq6>ooi0Ch z-|PB0a(uC0I1W8r>G)vETN6hd(mdNU8s*EE9q?&Kxor4?0Gv6ffUVPA>~dKnm`|hZ zrlD9$ep%x-C@51n6EjS0qW4^h5a6g|O#3+Ywd!-?sgaQHlU0f)~@s1T4;h^`hnaH!g4+_}uVuF;> z;Hlhsvv(b|c#f5^NI0Vka$sz3&Cg{N8S=tU@L=hMRx*&DRjJ^iFtKa<+Mo#0T$V6=RitU$ihLnn!YK zUHz|PDitf4E2kLHMyyTXrNbfS&nufw!}BWb`Ug3mgj_+cWbstEZ0Sp+oe`pgHGShd za{>;pcp0JN+-A93xKrrBOhvnD`=}b~x(Za5r3SxrD!z%-Ycqeey^-2oD6%SR^kHdX zsCZ_*Cqr=6c6(4e1=Hxlw+qc-oy=(cP%1*@sA#Wm;#{H=In=@RoS5!^*)vB3)~>3 znNvHjPHpa_DXI$dB2kK)Uloj;Jl)Ut&<3kq1U7y3p+j=u3Jr~)+oQ*ic_o|-Hf(uXNPGSqg(Ehk zBDdxeQm$&!v-A;pusdE^0pdr@{AMNuSCqk_T%&4{DzG~lQR^lFs`WVqaF_7G z(`Ly??(n&ts~A?TM%gya{^D<=0Z)3xMx`C0w~hLL=mm<;+tWHXX&7&Ct6yS>rP|ic zinTw6*h4qz3Ltv?K!;=tl&TXhn%rBpO@o;=fj@!XDyiLUhKj)b-~)9-IS<=51}SsS zoSoGP9PRtCo>WiCMh@wI$5wyzj@6^~D}AVGMZKNv8qNm(He+4HE=yDrX8iLDwpiSt zX-bX!Ou)jXs%KrLX<%2Sv}jV zTa!%*iX78*=prOB~Wy zeXXx6o~vE@hHvQi&kd5SU$9C|Qg!~iy9=A8JpJ3$XtloN2)z&ZA!-=g2{EwN!9173``F_4t#CbAUkL(xhCQb%E##!H~LkV>&@y6=bxJ$V|s&zna=y3_>7(0G~$-g z_l%h=4chKI_L5`Fe%g(0C80dGPwVaTcP`SwMwOTDd)sJTQMkiCtFH52T111&sH=DK zjhP%}v`nUj(d($XYMytYL0_*t#|LdclQ1{&Zu?@E+KL{i)YsSy{6Pqh?U?s{{|7> z=XimR>;jV>lgZQOH5aQ~yZwy%C5*d=FuQHiu*^wQ)_x}_i&Us1qj}9W6Q|xf9`yxu zgn=%!hXD^$9wKhZ@w4@K2{PU{JnuFZ5kD4LZ2L%6LlVO*{@F zZ&qxqILV>eGotOh5a{-mg4+=rp0i*T%cRKXdn@I9#X0!^M6b!bpSKpPFH?tTF|_Z(`Rc-wNjpfx*meWuHWd|V&Lw+Oi#F_(@9m1{^F5-l zh9LmOd;@i#Mbd<`LRZ|E`=Ump(+us@x-gB46@KdFk=`~?mbcQy)oJCn ztoV#N|3^oZR`0!Q;Mwh6%NC?Mp)`O1MQwL97Q=>8uGDJRw5&82%~Z9echd9N&)O^D zE!vjtMys$Annm63NJ#x{K1S2H=hjS#L^k!`>fZn&63iQqfx}Y}lQfO;hG3*{T~xry zE1qj_FB#cr(j&~nbX1rnKEE3VOO-E2cZtk=HB^+zQj_A^+Fc)Q%u=g}M%GYn%#GcP z(PB#4;Au{ z&$^>?_+q4C@XP{ZTE6&sr<{bIzTQ%Dht@j#(W(y;#;09lcxXra_|LT4GNV58hL`8Y zFJ3?1afC9kD0V*8Md)rKZ$6d2I7ub{Tsi%5jCO~zZAaxp2xh|>IE1mic-R{2FT8Mp zfd*s4)VZ~D4A|>Xel|EZoQcRkDZt8!J+<-JD(6C~2$~jsDXXVNI!*<~@igx5kCyelD32J+^B6iF+$$n0G-6OmF0r66)xBs)5+=uw&1HSo zj7~1RWb|rS{spl#U9|&MuQp_O5Jgw-Va9?@h`>ud6yNlzc^=ii@jM*JZ8c%OQP{Ki z1zh~Vwz)WZ`*p%2E}fktTG6<#9oMYw7JFmWW$otdGX+r(mn+7+K8J1JWXi2fe%U*B z%#EpOreFV~JFq9Yk+@oNxXt&agmjO|rM1!TbfFBZEX}uOjY7;PS?FR|!^J*0DfLl- zcT-Cp*(y&0QMi5H{RMGQDxE+YH#TdTqxDvdcq227o!g~hHp?9E>M&r=nNNK~y1*97 zliAZmxhVo`%$uy%H*i1v#bvE+q8@{eTOVR ze0J$s^hi>!ubkfwO!>$A^_Uk$EB-a-m(*7VU(6LIt_^XpHHEYQrCE(vk#EqGZxgJ# z1!w}U&zYa=i}jgiQ8e!FLt~0Y-+AztCTR?%{#(5!~6$ECMNc0J|t>Y+mq*qi5I1df*V7a_0j6*vlj#z0lQH4^Xht7?d zquzlCRfT-`cgfP7!(^J_TXOB8o=Zvo`iKTU>3LS!H^Sb^hUW`b(WOT$>}mDS0ULJ% zqrh+<(k=;EHJC`s+Dcfx^NHhf?Vuo!Yr|^wT-C3|L&ol0KU(L1{9|jIBjmgL;eH49@PDIBT(&1e~_L`W;O*Ls^oNgOHDS#LBy@p(36 zHAm$B6O_xQW7g=-PGA9BnCtSg0fV1-{CF#~;0kaoSH{N;_F3K8DoQ2TAa${c$(irN zP}mBOLk22O%esQcexgMpEkCOG&JDuo>2*JnR$nL{dB(u}ZQGbWr&X$MKIP<>-Tc;l zn-m{?Q(U4t?rkqT$?qOA0b0wumO13$rgj6%oQ^ZZ+Lz<6mZ6gXdOZh$bZkKD*mKT> z+VWv0JxawLAi=ittxE>9Z3u2-`V`L=jYAh$*CxR4AcA*1D=pb)RkR1ccf}ty*+e=x z;Hxh7Kb|P%TR@|eXP83cH~ULB>mIw>PXQ?`426XC$-w?5l?!R1%Vt_Iy*InJFxz!y zo@$H3k3A&FzZxM@%3GQ+;?$&g4%IBlEJF4YF(3VO*>tnnR@*5v*5vqMZn_cs_l1HN(E%qzSE>6_`anG4?v{2=5z9Y-L@xdW9kTDqZGu2 za!u_RSW~?mzqI}h=P55jYINc`odm#< zZh#|Dim~S;{BONW=(i4Oa36WlBnOsqJu0~7KjvJ4WYg-OkFt>JY_9{dxfM#++^>e; zU*N94xPFN29mZ_FQgDSnRL^}^Aa2Z4TQeN)cq}n_Blhx`7d=3-yAajHB1cN7%Y2w` zXpscCk&Uua8m~VzHSRp}=6Vn1?F-Xz8Xz@>GGOteJEGYToByS($V?NS&g zKEn5&-gLE(ob`3+WrI2UjjPLPNd{kmygEUUChBA62}Admoi`&H*UiC0x0#}JKrGzY z(@%O4Fa**ZVNj*8+M5tOjO119gLcdL(he<+EYJAWXsVgdZ(lzWz~MyC_Ijx) z%NXHTTNmkit=gouRdkDM&VhHW#P3`MF9e$ZXe@=W7Qr8DX>#%K3a@wFN=@~W&}myt zbxw83)O0J=8`p{*KQ6Jje*5+-wv_Bs5V;89kl4DBmL26G;vTL`Cv)B}xAvdgYS*X# zj+i+?!S+!q+bvQ~*4^Q)pvTO!r>H!2r!VfjZdS}uGd#R$gG=l0u}}$=7G42i%!#E- zJuAz2Yave^{n~#~9aUAzX-|W~48L}poZ^(xz&x4hiYPD%?f2;wSkE7y|so6JyfQTaWf=%)L3if+a)*9WOLT_cVt8#COnkeVO7AiOJSLxY;$wSF@h z%IPgSR59M9n5`Ci=yK`q(<2l9JV8gd-<}SSAjR8Cy?cCv!7u!RWd1BrUhG+ZCml4G z?Y4D#iwlgR5`^WnrQ?Tz@{=^_R5c*!Wn5)>R~=A1z96C1ykUokjK^t%JyT1+!PW4O zk!7k<8W_(P*%S~t+7I0m0_(Sgmvjo1teF+ZdUeColJpWdH^}->ZOoXl2!S0>o?~#{ zsI1X1?Su;2Zk#a%P<#y?sgh|khIsZpT6y0N6z$r$LhJ2!q-;)wuB}tnjsqnoS0n|6 z#rFv7Ia>J|bVW6A0c!i|EWgK&o=Y0|HNPte0MRr2?{)Wi5WArh9B+UgNHyM%3NfA>ho`(i-W1{2&4;e(+7u+cKv4ysnRwqBU7(Iyau^ zn13b=gAesSFSq>F4teVI6b&PADEyDh7QpQR03DvV{C49d?A+Y~{x*;Z=^vMTfc|4- z?6Xb6W8}ZS1&%GM5J5~*)NQEuuQ(7cu{55N?~Af-q&;wZ3l6{pKl(qFAST6sy`y;l;MW3aM0Nhs z!uk812siKKU4Rw-IC=c*9-h3Z^r4__FRMGhUHtk=%03(JMn-wBc9x8p3mb=Ey@b_y zC<-Lw1I(K02Gpb!Fk>J%@7A0T0x0mNe_!ZT^Ld6`P+i)9#=xAjQr1+Zgf0Nb?*xH~ z`V!@b{XU87c@0Tjel?c?IT0r3z2oDQB|7LP=5**Vnm0+vsUSAK zZ{>oUS~)@R(<@NT{4&!TU+OjS7+4sR8^+4~odj5RAm1Sh{Jh^MBa81_t~Uz>M!aV& z5j&tKsES@(90i zoM~Z(!-0-8-%gDfr=wS$NB@H1#E~7~a^e-@@LRKTOp}Q>$D4wK zV1gWN%5a|5L2AX9N~TkQBrba%qP#0FN@B*)#-#Y*5j1hlVCmxJ>cvJTi_@#dPfUu* zOV2m%=*vK4yK5V$fs2^D#PDV13Tx}=0#8f2<;6o!`5Sk>gO$B{|(NZ%9KE1ILoN3eKNyT8xOC?WE2HYTYnyC_)>a< zjU=cb>lC2aIw!xKnjfS^;TrqO%ocJb;DW1*Tr(Z4X0usK3={HC{fXgqvJvTPeubKk zsy}$=SAd}8GYePT3aKG-+|W z69=EXU1G*Yf2z@{0n&gLQ0YvO0T_WJ0TxG29H|q5DmCZxNnjc?WTXE&SLywfg+5^N zuJo#{YWp(=->lx*$+q-5v5$aGPpUtKqQ52c^n5UHN2hJ9hT9oN7NB}c7!KU)?Vte+ zNPVdB)-Ov7v;#~x$DKFiz~#Q;D@2fCMA?CReDc5{cv8HbQ8?s)>G7VF?<*U3boh01 zlW^9m4sFnD#_-GL<<)`p@Om>D9=KbV4Z8b(r2V=d_}|O5mm#$)oWQ+nS(b2CM*sAj z4B!%971He}qq89xz^($MHCW1J#63kUvKE4H8p0Yjsr%$3DL7?rW3n1)KYS)=#1gf9 z-_+DUeCN<>&eD=a#gwf zVIyE-;Q+E?nE)()MM9U?-4>x@<5#@cZAbXon*b;K0JqBi1xC{BL)RVoM>363s2UIP? zU{(WUm{uuP>0xlZHTX?Tv(G)GPJFR&NIz_wMsGghJq@ov5fKTT@OJ@%zv4DZqUyP3 z6E6`w)$y}{&kK48+`A5Bp;i?Suh`@`D@tA<3+bk{ro+IKU3GMJ)i4otA>FvO{5K1y z@{C+$uJ&cQ=lMA6-*WOhUy#}y$uYM86bC2VKOc7-E?mA;06oJB3t3;KcvxW4)rNa( zZv+{hdp=l!k-f}W>=5aD)k8p38w8yBd;naPLjxW!_L^z*2xFlgTJb2SbB!5Oznc{-}6hv3Y%K)uOJYDaA6j)iVV=-VPWs;KH#y04>C+iiBk^ zoVs1oKR_D|KieL>@~}>s*df}~O%i+ms-N?1Ts%8%3s$KSI3&6@g5jR69A&W$VK1BE zI$U@(!glwpl~t#8Z{jNN*bvIt}gs6 zV<+13i}~e{O%GjtxFZYCY(m4}noETb&1T7^SbNp?pCd!qyMZIJnLwD6K)8x?h!l77 z8#(5tgr}af+!NC5n*vj(S8c1^POri_#FgG*yXyR3LQk%?5cEF=07{JtmggMW(!l-X zmZO(wBCsWNNb6t+@#Z>@8_^Z>VcQ+W$(iJMj=ABLux;(({Asz|K6<$$9rD0(SO7M< zzjUDlf`3YG zBFht~*927m5FoRoDUTjf+dQrz z%qN&406Q h{T9iRlWqn0Nbg=7U-7^J|DgmCSXuK*zM|>9{|6jS=iLAR literal 0 HcmV?d00001 diff --git a/Crypto/intro.md b/Crypto/intro.md index 4f0143f..0032522 100644 --- a/Crypto/intro.md +++ b/Crypto/intro.md @@ -1,4 +1,177 @@ # Introduction à la Cryptographie + Responsable : vincent.migliore@insa-toulouse.fr # Definitions + +>La cryptographie est la science qui vise à écrire les secrets. + +Il faut distinguer la Cryptographie de la cryptologie ainsi que de la crpytanalyse. + +- La Cryptologie est la science du secret en général et ne concerne pas nécessairement un savoir +- La ccryptanalyse concerne elle la science qui vise à briser les secrets. + +## Principes de Kerkhoffs + +1- Théoriquement un secret parfaitement gardé repose sur un algorithme inviolable. En revanche, on peut se contenter en pratique d'utiliser des algorithmes qui nécessiteraient un temps et des ressources déraisonnés pour être cassés. + +2- La construction ainsi que la conception ne doivent pas nécessiter de secret. _Le secret de chiffrement est externe à la conception du système. Ainsi, en récupérant un système, on ne peut pas en connaitre le secret et accéder à la donnée._ + +

+ +

+ +# Cryptographie moderne + +- Sécurité basée sur des proobl_èmes mathématiques calculatoirement complexes. +- La domaine est hautement standardisée et les algorithmes de chiffrement sont majoritairement publics +- Il est fortement recommandé d'utiliser des librairies publiques et ne pas s'aventurer à reconstituer un algorithme de chiffrement fait maison, cela pourrait mettre en danger le secret associé. + +En revanche, certaines brèches restent encore ouvertes. + +- Il existe toujours des failles liées aux attaques physiques + - Injection de fautes + - Side channels | Cannaux de fuites +- Les ordinateurs quantiques sont aujourd'hui une source d'inquiétude puisqu'ils sont capables de résoudre les problèmes mathématiques bien plus rapidement que des ordinateurs quantiques. + - Se pose alors la question de la mise en oeuvre d'algorithmes de protection post-quantiques + +> Un Algorithme Post quantique est un algorithme capable de tourner dans un temps et avec des ressources raisonnables sur un ordinateur standard, mais qui pour autant n'a pas encore été cassé par un ordinateur quantique. + +# Les acteurs de la standardisation + +## Nation Institute of Standards Technology - NIST + +Prend en charge la régulation des algorithmes de cryptographie. Les enjeux actuels reposent sur la mise en place d'algorithmes post-quantiques stables. + +## Internet Engineering Task Force - IETF + +Prend en charge la régulation de la sécurité dans les protocoles de l'internet et notamment TCP/IP + +## ISO + +Prend en charge tous les autres domaines spécifiques. + +# Vocabulaire important + +| Anglais | Français | Explication | +| :--------------- |:--------------- |:---------------| +| Plain Text | Message clair | Message non protégé | +| Cipher text | Message chiffré | Message protégé | +| Keygen | Keygen | Générateur de clés de chiffrement | +| Encryption | Chiffrement | Mécanisme qui chiffre un message clair | +| Decryption | Déchiffrement | Mécanisme qui extrait un message à partir d'un chiffré | +| Symetric Key | Clé symétrique | Même clé utilisée pour chiffrer et déchiffrer un message | +| Asymetriic key | Clé asymétrique | Clé différente est utilisée pour chiffrer et déchiffrer | + +Dans le cas de mécanismes asymétriques, on considère en général que la clé de **chiffrement** est une **clé publique** et à contrario, qu'une **clé de déchiffrement** est une **clé privée**. + +

+ +

+ +

+ +

+ +> **On considèrera toujours que c'est Alice qui souhaite communiquer avec Bob** + +En général, dans un chiffrement symétrique, on parle de many to one encryption - serveur à plusieurs PC. + +# Propriétés essentielles d'un algorithme de chiffrement + +- Confidentialité : Une écoute ne permet pas de comprendre le message +- Intégrité : Le récepteur peut détecter si le message reçu est différent du message émis | i.e. checksum etc +- Authentification : Capacité à reconnaître ses destinataires et éviter les usurpations +- Non répudiation : Avec des clés différentes on peut distinguer qui a émis quelle donnée et ainsi il n'y a pas de doute sur qui a émis telle ou telle donnée + +# Les différents types de canaux + +- Non-Sécurisé : Ecoute possible et modification possible des paquets +- Sécurisé : Ni écoute ni modification possible +- Confidentiel : Pas d'écoute possible +- Authentique : Pas de modification par un tiers grâce par exemple à un contrôle d'intégrité + +# Notation fonctionnelle + +$f(message,key) = chiffré$ + +# Algorithmes déterministes + + Deux entrées identiques mèneront à une clé identique. Dans le cas de la cryptographie, il y a absolue nécessité que Encrypt et Decrypt soient des algorithmes déterministes. Ainsi on peut attester la non déformation des messages lors de leur transport. + +Une autre propriété d'Encrypt et Decrypt est appelée la consistance : $\forall m \in M, \forall S_k \in K, Decrypt(Encrypt(m,S_k),S_k)=m$ + +# Algorithmes aléatoires + +Keygen est un algorithme non déterministe, Il peut attribuer une clé avec certaines probabilités en fonction des entrées. On utilise en général deux types de lois : Uniforme pour des algorithmes classiques, et plutôt Gaussienne pour des algorithmes post-quantiques. + +# Sécurité d'un algorithme de chiffrement/déchiffrement + +Il est essentiel que le chiffré ne donne aucune information sur la clé de chiffrement, ainsi personne ne peut, en interceptant le message, avoir des pistes qui pourraient orienter les recherche pour briser le secret. + +# Est il possible d'avoir un secret parfait ? + +## Cas du XOR | Ou Exclusif | Addition modulo 2 + +Cette équation est toujours vraie : $x \oplus y \oplus x = y$ et XOR est commutatif. Cela permettrait donc de chiffrer de façon symétrique un message très facilement : $message \oplus clé = chiffré$ et à partir du chiffré, on pourrait facilement faire $ chiffré \oplus clé = message \oplus clé \oplus clé = message$. + +Ce type de chiffrement instaure deux sécurités immédiates : + +- Sans connaissance de la clé, un chiffré peut donner n'importe quel autre message en fonction de la pseudo clé qui serait utilisée pour déchiffrer +- La sortie d'un tel chiffrement est totalement uniforme (car la création de la clé serait issue d'un keygen uniforme : message indépendant de la clé $\oplus$ clé uniforme = une sortie totalement uniforme). + - Cela permet d'empêcher les tentatives d'attaques fréquentielles + +## Problèmes + +On a besoin d'une clé au moins aussi longue que la longueur du message. D'autant que d'après Shanon, on a beosin que la taille de la clé soit à minima supérieure ou égale à celle du message, autrement, il existe un algorithme capable de casser le secret. + +En revanche, on peut se servir de ce type de protection dans le cas d'algorithmes one to many, qui correspondent en général à des algorithmes de signatures. + +# Chiffrements symétrique + +Pour optimiser le chiffrement on souhaiterait + +- de petites clés + - on accepte de réduire la sécurité sur le secret parfait pour parvenir à avoir de petites clés ET que les ressources nécessaires pour briser le secret sont démesurées +- un temps de chiffrement/déchiffrement raisonnable sur des machines standards. + +## Chiffrement à flots | basé sur le chiffrement XOR + +

+ +

+ +## Chiffrement à blocs + +- Messages découpés en blocs de taille fixe n +- La clé est choisie comme une chaine aléatoire de caractères de taille k +- Chaque bloc est chiffré par le même mécanisme de chiffrement avec la clé et produit ainsi des blocs chiffrés de taille n +- Déchiffrement basé sur la même clé et la même taille de blocs + +

+ +

+ +On considère un chiffrement à bloc réussi si + +- Les blocs sont assimilables à des permutations +- Un n-bit block chiffré est indistinguable d'un random n-bit block + +En pratique, pour valider ce type de chiffrement, on se base sur les propriétés de Shannon : +- **Diffusion** : Si 1 bit change dans le bloc d'origine, il faut que statistiquement, plus de la moitié du bloc chiffré soit impactée +- **Confusion** : 1 bit du bloc chiffré doit être lié à plusieurs bits de la clé + +## Réseau de Substitutions/Permutations + +Une autre techinque de chiffrement consiste à faier passer le message dans une chaine de bloc de substitutions permutations : + +

+ +

+ +- Chacune des fonctions de S/P est réversible +- Chaque itération de S/P est appelée un Round +- Plus il y a de round, plus le chiffré en sortie sera uniforme +- Ici, on considère que le niveau de sécurité est proche de celui d'une attaque par force brute qui est une recherche à tatons de la clé de chiffrement + +on a donc ici $nb_{itération de recherches} = 2^{security level} = 2^{taille de la clé}$ \ No newline at end of file diff --git a/Réseau/cours.md b/Réseau/cours.md index 2149522..ea76e22 100644 --- a/Réseau/cours.md +++ b/Réseau/cours.md @@ -141,3 +141,4 @@ L'objectif de la couche de transport est de procéder à un multiplexage applica La partie concernant la data applicative d'un paquet TCP est appelée segment. La numérotation des segments se fait sur 4Bits. Cette numérotation permet le réordonnement de la data a la réception. Il y a des numéros dans les flags d'ACK pour indiquer les prochains octets attendus en réception et orienter la fin de l'envoi. + diff --git a/tmp.drawio b/tmp.drawio index 48ecd0e..fe9eb65 100644 --- a/tmp.drawio +++ b/tmp.drawio @@ -1,35 +1,69 @@ - + - + + + + + + + + + - - + + - + - - + + - + - - + + - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +