From 8c7506297f029b84f0fa2e65f6e7e10eb29a6a73 Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Sun, 22 May 2022 21:10:36 +0200 Subject: [PATCH] Added another visualization to readme --- .../visualizations/input-big-flip.bmp.png | Bin 938 -> 938 bytes GCryptLib/visualizations/input-big.bmp.png | Bin 938 -> 938 bytes .../visualizations/input-extreme-flip.bmp.png | Bin 0 -> 306 bytes .../visualizations/input-extreme-key.bmp.png | Bin 0 -> 308 bytes .../visualizations/input-extreme.bmp.png | Bin 0 -> 327 bytes GCryptLib/visualizations/input-extreme.gif | Bin 0 -> 813 bytes GCryptLib/visualizations/input-flip.bmp.png | Bin 355 -> 355 bytes GCryptLib/visualizations/input.bmp.png | Bin 358 -> 358 bytes .../visualizations/output-big-flip.bmp.png | Bin 1087 -> 1087 bytes GCryptLib/visualizations/output-big.bmp.png | Bin 1089 -> 1089 bytes .../output-extreme-flip.bmp.png | Bin 0 -> 1091 bytes .../visualizations/output-extreme.bmp.png | Bin 0 -> 1078 bytes GCryptLib/visualizations/output-extreme.gif | Bin 0 -> 7873 bytes GCryptLib/visualizations/output-flip.bmp.png | Bin 442 -> 442 bytes GCryptLib/visualizations/output.bmp.png | Bin 443 -> 443 bytes readme.md | 18 ++++++++++++++++-- 16 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 GCryptLib/visualizations/input-extreme-flip.bmp.png create mode 100644 GCryptLib/visualizations/input-extreme-key.bmp.png create mode 100644 GCryptLib/visualizations/input-extreme.bmp.png create mode 100644 GCryptLib/visualizations/input-extreme.gif create mode 100644 GCryptLib/visualizations/output-extreme-flip.bmp.png create mode 100644 GCryptLib/visualizations/output-extreme.bmp.png create mode 100644 GCryptLib/visualizations/output-extreme.gif diff --git a/GCryptLib/visualizations/input-big-flip.bmp.png b/GCryptLib/visualizations/input-big-flip.bmp.png index 18127a336ddfea9052ec4fb6592c8163785391f4..23ec9b8b750b70e05b88ad542926a02dedb6283c 100644 GIT binary patch delta 18 acmZ3*zKVT954$j%#4FzKUpGz`X9fU2rv~@{ delta 18 ZcmZ3*zKVT954(`Gu9JZ2-;I;SnE^MP1;PLT diff --git a/GCryptLib/visualizations/input-big.bmp.png b/GCryptLib/visualizations/input-big.bmp.png index 88608c75aea626511cdb498008f3a9dafff31f99..dfc6e9e046eed0a0bd5b15a6d94926431000c0ba 100644 GIT binary patch delta 18 acmZ3*zKVT954$j%#4FzKUpGz`X9fU2rv~@{ delta 18 ZcmZ3*zKVT954(`Gu9JZ2-;I;SnE^MP1;PLT diff --git a/GCryptLib/visualizations/input-extreme-flip.bmp.png b/GCryptLib/visualizations/input-extreme-flip.bmp.png new file mode 100644 index 0000000000000000000000000000000000000000..15178e23a10632848d17cdcb1625275d3af0ac56 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K59)QUsR;_=59F}xPUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadSO zEbxddW?lFzi8%cBlp!wz0|)a4 z%LDtPZQdv?+&i1WA(@W_sDgoEUu4`&23r>87mq<2N?apKQW8s2t&)pUffR$0fsv7} zfvK*MQHY_Xm4TU+k+HUcft7)Q_GH0O6b-rgDVb@NxHUwbTlo@XpQo#z%Q~loCICB# BOyvLo literal 0 HcmV?d00001 diff --git a/GCryptLib/visualizations/input-extreme-key.bmp.png b/GCryptLib/visualizations/input-extreme-key.bmp.png new file mode 100644 index 0000000000000000000000000000000000000000..e08f89d23aec6943c3372da3a956d880acc86fa9 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58o=b4b6v}U9F}xPUq=Rpjs4tz5?O(Kg=CK) zUj~LMHK4i{28LfC^)DD0N(~qoUL`OvSj}Ky5HFasE6@fg!Ib3f?!v%$w@Y{lkjGiz z5n0T@z%2~Ij105pNB{-dOFVsD*`KkB3A0JO;{E;=D5UP`;usQf`0c5MKzHykDg3XG z@{fpU^{MJm;An!OL;5^Nbw4~hIOolLpcd5<*NBpo#FA92>k|Q5paM literal 0 HcmV?d00001 diff --git a/GCryptLib/visualizations/input-extreme.bmp.png b/GCryptLib/visualizations/input-extreme.bmp.png new file mode 100644 index 0000000000000000000000000000000000000000..85d9ce52625a9ee83401a9ff7e1d64794233f9bd GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K59)QUsR;_=59F}xPUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadSO zEbxddW?*3mbrU3JJ1{KHsKTO4-T^f)gprjLMA3to|Qh_N;T+ zt5e(FaUcKWbNyTI^Izw_|KsQ3YCp2*V~3B{^fSvobM|^Izq0CU*V(M?ch-I9=IcKG zWYfmR3n?F3Vy0*TtxwXA>*X})g_w8R^IXyeSxV*Z)dF%F_yZ7!NpS-@ke|&y@|NQm) z&)O{g6w!{_(_y&ySZ{!gb=4mZqa`OMs(8<` z=`>n;YN}53t{P6`WoKrZWZ&A;X}tX0T$}1&e>hE6Tv+JREoIwfvhvbWpV?NmT&An8 ltPEKlwYST3^|iGzyQ}_km3cCf5d|#+9tDC9Qo|_2EYIS diff --git a/GCryptLib/visualizations/input.bmp.png b/GCryptLib/visualizations/input.bmp.png index a6df3cafd71b5de5a391f3d94ae2ec35ef7b26ab..5f84f7f09ecd131e68b56cb83ea3e077a147a4ba 100644 GIT binary patch delta 17 ZcmaFH^o(gj54$j%#4FzKUnfq!3;;j%2mb&7 delta 17 ZcmaFH^o(gj54(`Gu9JZ2--(ki0{}T72FU;b diff --git a/GCryptLib/visualizations/output-big-flip.bmp.png b/GCryptLib/visualizations/output-big-flip.bmp.png index eca1a58639805da35e85d200e8a126b56391d515..ae865e8146465aa7c623889735a9dca797c15d9c 100644 GIT binary patch delta 18 acmdnbv7ci?54$j%#4FzKUpG!(!wdjJy9c=d delta 18 acmdnbv7ci?54(`Gu9JZ2-;I;kFarQPum*zw diff --git a/GCryptLib/visualizations/output-big.bmp.png b/GCryptLib/visualizations/output-big.bmp.png index fdca11b6c7d102976c2e9e9ef216336d1cebdce6..2b157909ecc6b7a0bc52637a7b39b6dc1ccce3c6 100644 GIT binary patch delta 18 acmX@eagbv|54$j%#4FzKUpG!(#|!{O0|&nV delta 18 acmX@eagbv|54(`Gu9JZ2-;I;kF#`ZQ_y&mp diff --git a/GCryptLib/visualizations/output-extreme-flip.bmp.png b/GCryptLib/visualizations/output-extreme-flip.bmp.png new file mode 100644 index 0000000000000000000000000000000000000000..f175415a12a788383ce82fd247ef5331938855dd GIT binary patch literal 1091 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K59)QUsR;_=59F}xPUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadSO zEbxddW?h4(Kzmwe@NR_Offe-^e|8E5GI^!`_Veh&B5 zOFOUDn=u$4DLZ6&@nub|)4byLnz<+LGoMS{Z+V_?(;Vx1-$!K(&s!DzJCs}>r}w?J zF=J5cs1Q>zteqvmZ&R+r(32@2{Q1#iW08FVPl^w8p67YkbLypH>4P)(ZZiDfO*B<~ zvV97#>fAef*?%4l zbCkR@9Pc`YHq2SQnQ=o{M~|de_Q!(@H@rQf%kbmaqKh)2!jB*JOW%qKt>pb+c`?+N zKl{YnrD*||1Me}nv>ljrvaqnlL|k?9dB!chD?@l(a!qWz#J1M+Iv9Txy{5N1TxgnK z^0R&HQ;JPG)B`HAZS#M5uVu)1xr=w|j2DF(+>5p`7{q5JpX}q_X*l2Msu@Gt=?nW~ zGYxuhg-UlH@^{#H8SH1pM#<0vs=Kcjg(a-14_-($+aKz(G=^c*M zXZ?&qr5U)`SG@=p>Ctx;eP+X6(&o71)wX5%cE-sc558wKH@{o>;DX9)so-fD^O-Mb zS-~^+8`(m;1hr z)^nS?XY64Y;D6;?T>f`S)AQT6_po0v&oyyhb|>)7+Go;1^2|r%EUoljZ8sMEdY4a! z;n}k8o6oBXPFQ_^%=94d*(LvohYOd@eYIAU;ab~G{_d;gozXvME=*&-usz`7Tk9@A zo%QQ}*7Ke4m!4Uh{C)9K!O%a~iy7uP7`+eL9^_bholUwSpzUtR|HUCdB zT3PPTrK9_lw6`R>e~|gWT-EixA*~-TH+c}l9E`GYL#4+3Zxi}42+C)4NP^7 yj6w`8tqjbpj7+o*46F7r%ZE**c?ba#%j*(V5=d$NA?6SKNVgCO4P0R3<40E@5hAQEz6X~B7g?;Wxaj({6 zaP^Rq-oJ&^6W-KuBx}wl6 z>SU9;w5E*l#VV)mms^{IU#rwK{i);^X?S$(edo2Z+`uO>44!-E^n{)}mDo3Zr-N>{ zbi*4DnI#Mt&;INYF0Erfu)b~C>GBEd`{Zk1GI2Z#b9Fx2@>n_MW9;eb_l!RmSxjEm zbL!B6xS2iM=P}2gll^(JY}Lh!smJoNZWcFW1nyEWJ(HTxlRAfCzew4YBIm}_Cj*c0 zF>s05vffP1oT!&ATFMw;Rho2AK1+*t*+kj&hN-R>Zml(szJB=m54nQ>k3tUVvQ#SD zNAkxrv~F5(zIf`Dm0Ol>nep6VVNt;Jtn5>gD$`QG^EOytiaMU&{!h8{OEpu=Ws%O< zlvC&2^z_sne(u?E_npq)m5J)#sukvJF7nE=op|BN4UHx5881!a6j^*h{C>%oue+W% zXoV_iJuvz`-9xVD9&@(j!b=(4&*XVr8)O*5{%xt8FTKyHYWwl0-yMwdBIDP#&Jlj) z@B58m!R+cE8s7V-+J2h$f_s7LiWh17UMO;`bo94o__OKioELA)7|iX(8=}r%qHW>?=u34ta9odB)pY z^}lgSVDy<%+{KA@^}Gd4P{>Yu`_!mHH{ZCy9+ zu|~aPvMgTxl2PE>v`b&2*(x%p?Y#8c@_<@P%E$V9r%s)YcT1OHc+)b$vhmidh^Y@v z>=^zrtYUfZpuPREBrqSTmbgZgq$HN4S|t~y0x1R~10y3{15;fiqYy(&D+4ntBV%m? m11kdq?a6|nC>nC}Q!>*kachV=xAG-W1B0ilpUXO@geCw!pUP|i literal 0 HcmV?d00001 diff --git a/GCryptLib/visualizations/output-extreme.gif b/GCryptLib/visualizations/output-extreme.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2e1266887c77032a3d1cde12a0be3b685463ad7 GIT binary patch literal 7873 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 E0Gg1s8UO$Q literal 0 HcmV?d00001 diff --git a/GCryptLib/visualizations/output-flip.bmp.png b/GCryptLib/visualizations/output-flip.bmp.png index bf90029ceb53b5264f25bc0930140f3e57e839e8..8372825f20da211932f31225b7bbd24da13896ac 100644 GIT binary patch delta 18 acmdnRyo-5454$j%#4FzKUpG!xX9NI2Wd|Mr delta 18 ZcmdnRyo-5454(`Gu9JZ2-;I;i838$31?T_( diff --git a/GCryptLib/visualizations/output.bmp.png b/GCryptLib/visualizations/output.bmp.png index 1e62f1a22373b75200b101422169bfda943806cd..9d473428f505b241f0366c8c659cacb8e97327f7 100644 GIT binary patch delta 18 acmdnZyqkGK54$j%#4FzKUpG$HU<3d`i3cG7 delta 18 ZcmdnZyqkGK54(`Gu9JZ2-;I+s7y&tc1?vC+ diff --git a/readme.md b/readme.md index ed47e68..0e36a94 100644 --- a/readme.md +++ b/readme.md @@ -128,6 +128,7 @@ The xor operation ensures that an observer will never know the internal state of future output. ### Speaking of... Visualizations! +#### Single-block diffusion `"Hello :3"` in binary, and it's ciphertext: !["Hello :3" in binary](https://gitea.leonetienne.de/leonetienne/GCrypt/raw/branch/feature/relaunch/GCryptLib/visualizations/input.bmp.png) @@ -135,7 +136,7 @@ future output. ![Ciphertext 1](https://gitea.leonetienne.de/leonetienne/GCrypt/raw/branch/feature/relaunch/GCryptLib/visualizations/output.bmp.png) -Now, let's flip a single bit in the input: +Now, let's flip than a single bit in the input: One bit flipped, and again the corresponding ciphertext: ![One bit flipped](https://gitea.leonetienne.de/leonetienne/GCrypt/raw/branch/feature/relaunch/GCryptLib/visualizations/input-flip.bmp.png) @@ -148,7 +149,7 @@ Let's gif them together, to better see the difference: ![Ciphertext](https://gitea.leonetienne.de/leonetienne/GCrypt/raw/branch/feature/relaunch/GCryptLib/visualizations/output.gif) -What about input longer a single block? +#### What about input longer a single block? Input, and ciphertext: ![Input](https://gitea.leonetienne.de/leonetienne/GCrypt/raw/branch/feature/relaunch/GCryptLib/visualizations/input-big.gif) @@ -157,6 +158,19 @@ Input, and ciphertext: Notice how the ciphertext doesn't change until the block containing the bitflip is reached. This is a limitation of cipher block chaining. +### What about extreme inputs? +How non-transparent is the cipher with extreme inputs? Even with a super problematic key?: + +Input, key, and ciphertext: +![Input](https://gitea.leonetienne.de/leonetienne/GCrypt/raw/branch/feature/relaunch/GCryptLib/visualizations/input-extreme.gif) +    +![Key](https://gitea.leonetienne.de/leonetienne/GCrypt/raw/branch/feature/relaunch/GCryptLib/visualizations/input-extreme-key.bmp.png) +    +![Ciphertext](https://gitea.leonetienne.de/leonetienne/GCrypt/raw/branch/feature/relaunch/GCryptLib/visualizations/output-extreme.gif) + +Notice how even cleartexts that are almost completely uniform, with a key that is just zeores, will produce ambiguous ciphertexts. +I darkened the input gif, as to not cause disorientation by flickering. + ## Noteworthy: * This is no fixed algorithm. Newer versions may very well be unable to decrypt ciphertexts encrypted with earlier versions.