From abcb3137f14eebeb83a7d9f3bfc14e29bfd808bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pascal=20Eng=C3=A9libert?= Date: Tue, 23 Jun 2026 20:22:16 +0200 Subject: [PATCH] Blog illustrations --- .../flash-filesystem-encryption/diagram.py | 85 ++++++++++++++---- .../illustration.webp | Bin 0 -> 67304 bytes .../blog/flash-filesystem-encryption/index.md | 12 ++- content/blog/surveillance/illustration.webp | Bin 0 -> 34522 bytes .../index.fr.md} | 4 + .../index.md} | 4 + 6 files changed, 89 insertions(+), 16 deletions(-) create mode 100644 content/blog/flash-filesystem-encryption/illustration.webp create mode 100644 content/blog/surveillance/illustration.webp rename content/blog/{surveillance.fr.md => surveillance/index.fr.md} (98%) rename content/blog/{surveillance.md => surveillance/index.md} (97%) diff --git a/content/blog/flash-filesystem-encryption/diagram.py b/content/blog/flash-filesystem-encryption/diagram.py index 9cfc6fa..d17180e 100644 --- a/content/blog/flash-filesystem-encryption/diagram.py +++ b/content/blog/flash-filesystem-encryption/diagram.py @@ -4,6 +4,8 @@ GNU AGPL v3, CopyLeft 2025 Pascal Engélibert [(why copyleft?)](https://txmn.tk/ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/. + +This program's output may be licensed as you wish, no obligation to credit and provide a link to the source code, even if it's always better ;) """ import math @@ -53,23 +55,24 @@ SVG = """\ """ class Block: - def __init__(self, svg, x, y, r): + def __init__(self, svg, x, y, rx, ry=None): self.svg = svg self.x = x self.y = y - self.r = r + self.rx = rx + self.ry = ry if ry != None else rx def to(self, block): if self.x == block.x: if self.y > block.y: - self.svg.t += arrow(self.x, self.y-self.r, block.x, block.y+block.r) + self.svg.t += arrow(self.x, self.y-self.ry, block.x, block.y+block.ry) else: - self.svg.t += arrow(self.x, self.y+self.r, block.x, block.y-block.r) + self.svg.t += arrow(self.x, self.y+self.ry, block.x, block.y-block.ry) elif self.y == block.y: if self.x > block.x: - self.svg.t += arrow(self.x-self.r, self.y, block.x+block.r, block.y) + self.svg.t += arrow(self.x-self.rx, self.y, block.x+block.rx, block.y) else: - self.svg.t += arrow(self.x+self.r, self.y, block.x-block.r, block.y) + self.svg.t += arrow(self.x+self.rx, self.y, block.x-block.rx, block.y) XOR_R = 8 ENCRYPT_SIZE = 32 @@ -126,12 +129,12 @@ class Svg: """ return Block(self, x, y, XOR_R) - def encrypt(self, x, y): + def encrypt(self, x, y, text="E"): xl = x-ENCRYPT_SIZE//2 yt = y-ENCRYPT_SIZE//2 self.t += f"""\ - E + {text} """ return Block(self, x, y, ENCRYPT_SIZE//2) @@ -164,7 +167,13 @@ class Svg: tx_ = (tx+0.5)*cell_w+xl ty_ = (ty+0.5)*cell_h+yt self.t += f"""{t}\n""" - return Block(self, x, y, ENCRYPT_SIZE//2) + for (x1, y1, x2, y2) in borders: + x1_ = x1*cell_w+xl + y1_ = y1*cell_h+yt + x2_ = x2*cell_w+xl + y2_ = y2*cell_h+yt + self.t += f"""\n""" + return Block(self, x, y, w//2, h//2) def knot(self, x, y): self.t += f"""\ @@ -380,13 +389,58 @@ def chacha_encryption(): (0.5, 3, "count"), (2.5, 3, "nonce"), ], - []) - P = s.text(16, 144, "P") - E = s.encrypt(64, 96) - X = s.xor(64, 144) - C = s.text(64, 180, "C") + [ + (0, 1, 4, 1), + (0, 3, 4, 3), + (2, 3, 2, 4), + ]) + P = s.text(16, 160, "P") + E = s.encrypt(64, 112) + X = s.xor(64, 160) + C = s.text(64, 200, "C") + + B.to(E) + E.to(X) + P.to(X) + X.to(C) - return SVG.format(body=s.t, title="ChaCha Encryption", w=372, h=192, **ARGS) + return SVG.format(body=s.t, title="ChaCha Encryption", w=128, h=224, **ARGS) + +def chacha_xts(): + s = Svg() + B = s.block(64, 96, 4, 4, [ + (1.5, 0, "const"), + (1.5, 1.5, "K"), + (0.5, 3, "count"), + (2.5, 3, "nonce"), + ], + [ + (0, 1, 4, 1), + (0, 3, 4, 3), + (2, 3, 2, 4), + ]) + P = s.text(304, 16, "P") + X1 = s.xor(304, 56) + E1 = s.encrypt(304, 96, 'Er') + X2 = s.xor(304, 144) + C = s.text(304, 180, "C") + + E2 = s.encrypt(176, 96) + + J = s.text(240, 16, "j") + A = s.square(240, 96, '×α j') + + B.to(E2) + P.to(X1) + X1.to(E1) + E1.to(X2) + X2.to(C) + E2.to(A) + J.to(A) + s.t += arrow_path([(256,96), (272,96), (272,56), (296,56)]) + s.t += arrow_path([(256,96), (272,96), (272,144), (296,144)]) + + return SVG.format(body=s.t, title="XTS", w=372, h=192, **ARGS) def save(name, data): f = open(f"{name}.svg", "w") @@ -399,3 +453,4 @@ if __name__ == "__main__": save("cbc", cbc()) save("xts", xts()) save("../flash-filesystem-encryption-2/chacha-encryption", chacha_encryption()) + save("../flash-filesystem-encryption-2/chacha-xts", chacha_xts()) diff --git a/content/blog/flash-filesystem-encryption/illustration.webp b/content/blog/flash-filesystem-encryption/illustration.webp new file mode 100644 index 0000000000000000000000000000000000000000..a53ebc8d6b8b1c511f8249f1ceab36e00ddfd264 GIT binary patch literal 67304 zcmV(pK=8j(Nk&HC1_1z9MM6+kP&gpe1_1!jB?6rRD)<8I06sAmh(jVFAr=Y6XdnXw zpb66}+Q;<2;=jUv>wjVW!1);Fp6x#I_#ZYrk9C)kKTLeteD42?`*ZGJ`iz%E|Ns6EhF|Yr`v3p` z?f6Rmz5i$b|Fn;+SNOk3i~=3}eha`~#{P5s@AmKV-}e8>{7-yu{`dH9_C9C(NBtl0 zpYFYa{!jPI_n+Q>()wlpYy97c|D68U|3mzj<@d-h=6~4#m`ihKor4oarly`1)Y`xK#?i`m>dX)A@ag2-Kqb7I)*16>k?@ zP5K(DkP(7Nhb=AU{GG@P4~?I{mj}%y!aofzoayZDbX9(`YD|ud+!7RLJT(8m%~pM$ z01$RrRstO>FoCO6z@8x*Z7)<764uM{lU_W+E(-NBom>$FD`3jR2lH}Pe&y83Ic0>{ zj843JNDL%CMTnv6O~V1w0Rhmx5N-HY&q=eB*%^KiB%;=+!QI?s9N^blo5wuF=%0ba z67~O9Fr$O7K^dvCR66i-W37T^me2mvCKmyKAvV@k7((F_P@HB7CX(j_54@xOyqYM; zxHA9!6Ls>x-n02!oGTD|5uQm$S!&W^N3RxwDK$Znc-H6zemr7D8=O~j zl<9a0qRavzeJO5tWq~f?EqqfD_~nnz?eMfaIm=Im+*mr`eVV#*Dv%-g6V(+xBn)ZFTNT7KkQnSJ-;WB9)hg}1Y49#6YHOqbjA_}a2 z^z#vIT9kBR84V*)*V!$llc$<39JrF(vX1nTx%oiV(CkYn0AEb z@qocww;XKyuInmZf1p3OiDKh|CZ1bJou~nP-W|&QGrgj={&io~y383Zd&857rFwL_ z*x>Q(J9tEzNL3n_JT1- z#eKJF?JH@=?aK38P$=I(cg-2_wxu* zbO^^5k)=D~0KLykm~!oTjJUEwk9U~QVauBY`WbZ%%hAwv*2j>dd$g6!#;q8Z=Bfrf znTP=i0;7Ic(i3T5Q6;x4YXhh+j?L4sISz!)W<}A2TQ`h6^k{>GD@G8?NX1Y<-p5f3 z7y#QC9+CB`I!@R#&@~}6v=g=P{wKcpBruFVSIFSam}L*`*G3aIF0&&P>vP>*5drUu z(dtD>e&2TXH8>K)FV`QCfH?cY>4yYgO3U3~3#8ggpzK0D)`Q@F+UJJLiZkA%00CF= zqh*9Hvm6Z;oo6DNFQNl$uW$gjjC z0(iftYB4h=F3xumVNWZYl-_Y_=6fyqwDa1TEIhdl##us;sD6jxBq`>&t+KIK4LePf zsO>tbn=Jsu1j-cYp>?PY)1i|Bh<32N7*=iP?pDn*rB6D_c4Yz_1Bq^0z9hp3c;>h2 zAjl)B?O&pqw;`4-PdpK_mb514yPJ#R4mWYiRiNnvolPWWLf#Oo{a(xvZVNh(X-$A_ z+k`-qG(-XesC;3R(#9odDj7;#)7|83s%>>GSq{m`<*OEMFhJ5Y80~pM4!~26;WrQR z=3y?G3$0$qF0(wKHF!+)Ii_!|kvT^_5;`96<7ZEoyVG6qWIWQQO=zwZ_3|Cy?U0gz zlHUmpxH{9kpN5EoF{NOx`{I-umoR_Pehk`|>kqqf(Q>W&5Z2Lt#qqoFWv%GI-pR3N zNZWRCuJ<1pUaEFS^Mgr~yk$}$Y?HrLsBVOBNHVtW7ne7CBxaMK2$!)5i&{_2rXK08 zC`h#mKr5eDvELD4O4Z7m>IT(ww>N<>VqT4?I+d)@N|l~J9sW)Oi-p#%wsph*jHcC# z<%UyZM5oyy@O?@(%n#>dQ_P#zE$Ig8-$_n+Dm89|`S^lIT}BxBbZ+g$>7gi(Qz3U| zOJw&t^Aaxh_WTF8w%@PzZVCLXTxyhFQFZ(zo$E=fe``0Uenzbll5zQl=OvSR;vh>Kfhe1WD~0uKXZ;9z%aDJ}~s zNU=ah+dwY7D9~@UTijtI)(z8(zYoVKU!LGZ{}=kC>>rSFp3eI3=uJh%nx{^}D8~5heh>6*UDcMD zX0~i7giKC83248d_FKYt7`>6vRo4|18r2zVfM%Axgw+7wKtRTdu;)Vs&fjE}YbUNM zWFr)R^y-?rVDt^Yg&wZ4{;P{E5djdi3v>B|lukIra-aA!lrGmY<3#-ed!HJ(#|^UX zc%Kxi4*U_p?wz3Y5dW!h$An~EQ7#>HQi?ysNt#;}SRyllS3q+K!uu1o{=buD2O7#3 zL#7A_sep@jxqyl{@kkvdl8Uu2*mr7v9QJ)-_T4!C?aMMZ6XpFI@x$>M7W742nS-f zjn#4zwk}tOL=50$*NC_h^)lPVKVuCAndsc)eUeqb#!t3*f#kT zx&I}*j8C?!he8BUj27!Zh2U0(3ws^w4t`F)*sf9x?0om3{<#{TZWLvlzW}ey9%x@C z7&dQ)%h5Eu+e*|_9C3fot)7Dd+7}bneIa;y8YWQD;tYaztZEv?G?ADPd6xX+R65HX z(u7>+h*j)a`@53oJ5D}@59Rp94mSCNn7M%#R zf0HeZUVL{zYsb$RIU6sG zZNCszx}5r}sU0-$X=Oi33ZV)110PnfN-f|t|2 z(=dAMmv@&mVeN;MQBE8-Qa@-Jh;l8p>J^wT$oZgB-L!ahXs+HR&2L4bz7(-(G5LYWTCj^|Okf9w zE&-F4FAXE2VeotCn{t(kKp%R%6&-MO;DBi(t%~3}EEN-Usvb{<8Ul#- z;Dr&RNzOP#?Dm)n*R#M6=;RlT^qC)oRRJ%jSZwwd#%{!?%XQ}^y!ik5o8o)lQKP>7};%N&`sr%hY zHFUy3&+NZX;aC^$G<5Wjvd=eQ4rH%w5{y;papkSnPvaw)J~ZW;ax`*awuGtw@g<=- zgFlLQsugE0Dyc$7E{6f9RbFP~d8P&L?>vckUg+zX4%4PMJs(Une3?Iv!PGEbv#xXy z*i?C^M&G=6aUlx5$Hcc{u;gY6xnvyM`Ff@T!HKQFLD@Nalv%&Sb~B#+tvQJ>XgXra zcx04m*!%*_dkn+IgSQZCZuH6{Bi2KwB(Aw~+mS&poELznYL~grU$58ec|?VbrP@XG zMKkj6YpMc@qWz)Ro2r(Iws}rcE!jmLlFSFr1^`+AuIvn75CBXkn5gIqB*_o$GUu~n zV*Zk;$tH-m52Bmed8GPWLQ(V9lp+v>wvn9KD}mKg>JxJfRJG@ubGeVa#yNnpv5MN< zKdpK$j5o zol<^rcEuFVmDfNbu%YQhL$}t@Ga<=IsBu(8Hqc~jKUJ};8ABhUV_6UpO@LSx=Fif4 zn+A=(RgI6CW~FG1@I{v%<=_Ouw~>d#7=c?mwloPEh%1P&_8;!q%SN1bp>fu)86@Ju z*h8FdUU_JV=2l)%4rWVo~Fse zjvYCWeh1kBF_-_O;CKJ{b9j0cnrKUNpcCxD?Zpr?IaXw@7ddV^0vsCZ|x%}9KE9F@h!;HQi>hnP(~Ac_f}^!Fxu3$3+Z_4 z&qwtPszp&Y(5)Px@IV0m@^tl@E(@9VaNQ-<#@QCO*d{v43~C6(%d&jz$>O&8=yq-5 z4|&BUcZY1Yn}xIw`ri1FO8;R%yJh)HR1^Q{U?O4*K{$6a}43XZ~F`qZ9j+z`~{YMqLI2LemBl_L5GOJ;@*ehid;mH{=k{lbVG{M2~ zs}gyF@y+W3bll1hzvmKUSR!yt_v+KFGPcdq4W61;G(Q5mT`&fBS7$8mDlVJMw4pijiTMB5YyAuw}87QG)_ z(YblOmO$vBwsC}bb{m*$KEcy7IoPoYig-jJ$TtZXo7#P*KYdj-!>7mTH8HW(HfqYpm*yA>U zYZfG)%`Af>Ihz4B&ey3c(InDPlXHFlo#NumcrjSPwmhcv*svG0i{um(`H%hX7ADS+ z?6+V7@H20TjC(5JTfoA2+Rkv2QgziLLA=U`TOT6|Ma}KdK~HQF>;{;#bxU!%S*)PE z9sodt!@2xqemk6QP@(SnKS`|6c0 zk@dDOL9N-F&@fdu@1^|<+zEHMgkaih)9hKtMmn55FVRiT(r(Cbc*{1!9TMVy7F|$U zlZ>u0uOr1L+VQvKU3cylqS6)ft)d1)D_iptr}Y5kl4HOGRJ{rsRz<>Gc`fWS;JNQf z#8Y1_?zBK5e$;0nN&6U3qZM&(|M4ct6QupT-X7)pk}{tyb!`plV>6ln^DpuLQfBYh z4pwD9>Yf?YN(^;BXsA9gc}Vh5CYr}+W^?~C7xDlq3G@F@F+H<7ElcYI*KJ2X1qC~rR>xSY*(Msb?Hb3gxV1aa zq;6T}JNnPweIs$aMvD>bf;X;{|B9MCMdEcvWOSs56@thz9q>MWm@#5-?GF1l_-j!D z?C7sS*eRL0!ITA0OJZQdbWDM3xVm3#Fg;jDi)C2=7K}Rb0N8N_t#HVf7TI{BnC%g9 zK7*GNgjB&3H;JbRj^_mmaX=xsnTgk3`@u}x5RPBn4@O{rHWBDcjT--=2L_1~!3&V> z4tVY?7~u(ml4$=)#2g^-lOyAa3x2KOwC-j4FdaRU($-+k$WvRIE)k@y zS4FMa&9n@R{JYKu)*Mwh2=MI8 zdBOZPX7XNMpm<@}=_LIsc@N|J0rO=UOJ2^#%QnUb72)vE+9@R-4VGrM&Z&eOdqc1` zO0lditn!;auSvMduSHjHXpG^)6PSdJGn|r>>*!jlsfCDv>e*3SZOM(>SfYIuLzDES ztkUA*9EpmCcu}&M)6AS1u7+Pg08*vI?UH=?9Izs zmG&$?LB{GHA0kJbY2$)u_$rn#_|TgG?COaZ*nTS<_|a0?)qVO2|GNPg0f4B z^_flMx?J9>{63=rZ#fnoRVm_D>*4#RuUWv3X@fPv4u~|frcUV;?~U1x3|?;vn* zh;xK6j*2Fxn9umLB)FEJA9BDuRo!9~u7sD(f%DbCai5=~H^Upbe!Mr$L#ZCCJC!5* zi_tt_u}P&*hz8|d^XC~myF4~dtitq_1SqX$R>y^_&qW_;oRH1xF-RB|pzm0NDd4QPqpb-m?f`CT#IpYS!^fo+g<>$fd_= z@gUppkoyd9E(oJhkzqPCXnCu|DcFs6N$U(rzQa@WO4#BCX$%ym2S`%T;LB}F7v*) zM&(wpeb&EM*sQ^*X8GMFsGxWEzHmiYgt!Pcw4fIwSYtP-2A3 zM8=wM>zF|4dHZm$oa{&gOI1#;YbMWooALddoQnURj$BRSW>`I|WkHwAg)o0XGMY4( zqkNzZpVj0hrkgtSL03(TMIFUaurX0alO}@;3rY)r-`cj~`GaL-u;cM@AYq6sqN7iZ z>K*MHDGK7-9P$^YP6fYWVa2QQ9E3(ro}Oag6_MwjPhNm6xXwVjzk<>soBZ*0*~NG}*>svbI) zxFDoIRI8*aeTY&=qh4^R6+Y+9L`84Vkp(zHJ4*?^l-5S7Y{g(SQRz z=#c26k6OKFI`#L4bbOKT4Krk{n?u!dc!!Fk?hEziC(LRO>Qs!vck{}X;B=WSImr>G z$sXGqua9ISZzOT&B(6dd6gHo9=3HLRgx)EA3T0(fzivEaX;7JBxjtJY##4c|vR;c)wzTvg5B+1guK?ed3{a75de9s;^cu{9u#3j+N5;AX z<^t|WcLP#$X^Q%Wza+vi&Ad~?iF2;wxHi}YCO#Vm_s8^XY-RExokRJa0SC<}0~M9# z(PcIV8SF%%TyqFE%)={J0Bqbv{|96?Gp(~69l{}?iNS2D#DO?LLdvX;%3iSj98w!? zHw25-h-~5Zc9{H(H!uW5gh=(J#5N0voms`8m?fR@U?U7Nt&5=}dR!-41QjwT#tRK+z2GvEs>2v!mygf;0<{PZwh!DPTtg#6QXcU15=)NT5 z{qx-zQpcdJ!GqxlM38j*FS^_UHF1tubqj+lBiz=oS7DrugJVEy0;~vV%{ua(_5{yn zlGDQ5z(T2YFWQOoB_9;W^PT49T>4vcPIwwlB!Vqki@*K}_Sa)A@DTCY1{EkJVk{7h zj>5;f_PUf-Uq$DM|i zusX=j##<*r_g2qMd#wXfPu+-vVpT@ZMAX)0_I~tSc(tZ5X2U45Z0XPa z(up;?lH*)mVkrRU-a=mTT592XYu_VkzxxK zFd>JhH=-qJhRSnC;0c|L)oqM`E<04gAB~F#{I_(?Chnne`iFkK|+{Dr#uXS04;u?Y=#-v8mNg(6Ub94KkNe-^U7pEaz&9U zK;!{}$}j(bjUKysLrn8&_>t?>NTvqU9x(D-i%tWqkn^);&Ik=A#{n4V z?vss5EB4sG#Ys!aD8GjO82W=NiUa#Hqyz*c2gZ5gcFDv@vNHY3B{Tq~m>bUiv>Kzw zJ4sgrDhTCIRFXjt5PD4pUo|@=nT>L(e&eXz^D`aeeQ_{8^*p;SFtYmgjh#U|gPi3}c`rUNA?{ ze>_|9aDus|uE)Lcv++eK$sl3Amtj~J1#y7u#>_heqh|g)`3$*$CSrJ5x$M#NK2WxH zC1`K+Q=|RXm9mKwj6QUJk|?@opM4fynbDH}+>_y>S=h2B4;l;aydyo2>_uOTqh^=S z9KGyvtfKv`LRnpJYt6Ex%of>2zeUij0`-pGblv}lXFO7&|A6wnT~fKo7X(Be^Ca!n zQ4~?C}-URSEStAov?`MJ7d@yazaPxfKUrEM#p;X9jcSX8&X}CX(k-~ z2o@LLs@N2Zn%G)`eeB6B8^bLM3uSYrIJ7CB@mF0Ch9$~X1RqaV@{xJXL+!vOy!>i1 z3WFc+5#ekK>3fbO`w&n31|=k=L~)-G+lD)%cb0&3r!q8q1`CZ1y$g>ST z@rUiN2+PO@&8m`~R-%|nCcF%@(ER^bRrp*Omn!1|T2+$CVDe*kHmx}g8ba@QTJloN zB3uhAlWt}65XpElaL2=fq(Jj{t@|Y^)iqcJLCm^(tpp$2v~&@eHiCXa=1F0h?&W0V?5AB(v0K(;QL z7SCVR_IcP;)M)1Tgdkw&x}@RH3i)s9h@0$ts=WE3c26(ml617K8$s%6R6RNiv?0np&plb`>gB|6$HXfOid1syc~#H5UDDS<7dy=iRt|4dO{PNIEP$97cDCjC;6=^Fnw0 zgo2%q^1i&Akp{Ndo|3REpeUT!{K%N^lP|@U=)vyX>U6it$~u`l5Fb65+z0WTBCmyF z^e*pi&XXo4-?gt7s=y1{c0?*EWrrz-4rbs9k{INubmF$sIQUPa`agv>;O^M#L7)MN zCp6Z>+HzyX7d)T0E9gwRF_j{lhG)~*4w4YhVcEK3;PWEa$ZNae&Q)(CUy7pqUU^9- zn4F`O%uWgcjovmSt~Zgy@`IyafGwQq5ZP);_JUloblq&`^K_F6d>AfQY@Fs2OHDDt z09;EdMU@DhA!yG$qb6>L?lJ%@2q;&a?fz@m{~q&N^p_}{SYh{Im$d4Hl6~dmi$_~~ zn*aQtKFJUBzM*19?de%i2^+|@4ntEhqh6S;^#^oVkn*g7xgGLz>;JFw8P%qz4Je98 z%$}~{sin&A6D}(Lr)&at7!^2xqpNb;QB~yFfdD{!{}GO}55BQ72!8^^mGndv>|I3^4~reY39`-X-X|m6Eii0ufQxDtt=?O8f2_ z`(fB>Cb~CMik3lNStFrnvGML)Idq z)CV`PH6r$F@9;K3F%5x1SAyG1m@lqrWG@Zf@z8eTG`4g~IeJeHtXxD+q7HF;z)qye zfL3r?iDR{+O+Ls&kSWAqX}nfqd@K_*o^R8+482K^FcaDTh2q9SBj_OSo4K^kHogAa zr#Ch>e$9NnrlZNK;LS6xTFpuuruvR>Vz5`ML~Q>;&0T|*R6Dc4gz?6{Y;4Q=1$Rq} z8qp$?O3tEtyq4;VjPF%T6sD0K9eCEFQXMq!1uqj#5EKSziWasrL9C@nUs(2mH7yb3y9 z_Pd3O307+q7i{*9dvK438V&a0kXC}avB+Ou!`o`!aG)~nI0Y`Hy>4zr%{1MOGB7L=!zXqvlW=VGX2#b(44LXEAND z%N3S|%!Ui7zCiq1V@g6|)6zL5L~!GJjN93}`!18Gjk|W4a=>ZOG)XnGj+3~vgh0B4 zU5B6fE?!iG;k}Ru9Q1d7QHENrZlr?jqFuXBa@xWCNdP`&&pu5iM4M?_hbgqq+$xqcuAR=o(o0wg$#v7ggfA%2LVTxnqzBh zXxPq!(maeLYl+3!AU-swh5E@ag5f4S9UI1HSDT7zwFvtJl+)}RxmP~~fKH7!ooa&^ zy92gMInRTT)v~)$h`esRxq|4t7l@wK*2eC+j`z@j9BHHlDGG7=A>ci-VEb!|51o!h ztleS?A?&twQtO2J_O!aAok2TOb_Cf1Rh=eg>)AlG?iC)T>QxlceI%%O4@#7&2GK=h zKck)x*_D=W2~OffO$-6kdXPD>51ETt^?^|fQUXcab>@I!we2$f*E(hAo-ZEdR3jnA z0v3+m3>b;uA4pUso__GK^;{pY;Ef`206*^)IW!%>YWB+3Yw_fWH2!J6OUH~3r)Lp!xez%&u#Dx50URWm!j|a)C3A^FZ@pt+tdHJZVPJr z9x5v3peKSmtnBwP*;+9?6!#@tBf-rB$}EliHYFs~+AzAD2bxPN=&ABOWO@F#}a?UWio=U-sruG%5tzqroRzeyjUdSMpMNcoBtuWOB?XYbsyCU zD*!Pl7DSCmI`Tz3#H8N5b^u{-QjTXyHPN(?Kb|*fY&pAl=y=iZkEVJFWFKTg$|JKXGbA+|b=<(Ct=$9Hq$>mt5Su8D!nJi?_R`tx zD$>xR(V;awDiY3Q7^Dnp9kl|gInF72{pLAIg58+?<=DS3wdC7y`9+8_qyAF3imypO z23>_p$GdsGo?%l=rW%2M4GC@qzh zuLfg4rj&G|i`S90pk$#aBrG2!&ViXPyPzHD<3i3Oz$kvS5<#7F7jfqv^sisG;!Q}z zM!vW2eSd3XtaT&(du&-|%fuR=0CG9~e-s8Ob!d#6h#{0$3JBH_I#AL^nI{evvF~61! zC01Z|{~)+eF(EB(bNO49jYri6+DrKVKeWXeKqj(Lh$$!V@2P4Y{ZYkQri@r?bv8as z|HQwKVB$vT$KuQ|&AyBi)ml1Cn0r%4PO?|*Uf)9&()=79?Sg)e?qfj}DLu{hg%amj zPhm$1pTWbu#K;M+;)}yPx2$Pjq~SEUfIG^Rqt#)kD0!#fq1UTU5NwKBr|2cAi!wi; z=<`BSe11*&Q!kjTN}C}%Qg{{l2}$STu?w)!R^lFw>0z5|(A3jATG3#m+NQn(&yv|D}l}21xv0)8Akf_Qh<=c8GS&LX7yDBYi;ky5MlOVvBKvQx`zh!#^7`;OaY?j9U|>tVr=@2OeW}FZ zS*@37IP)1@6Ou<|@>zPpU=B>b8pkM`cAmEI`BA~#NZIRQd0PEe0!8C6I?ABGyGNh> zGUFIK7k9gPXv2{=UVC~nJLV>(2t=F-g!IW787;89)hk`FdBp$@&8*Mz_wlu|G?O!- z&g9uv*l!@gcWX7YQ8X9_Yxw>qbx-0?bFeCG_9Mjq`(^~^4X8x8>3brWs{w4_ip->-NI1qsifuZGdnpd zxG6As+t+jnfFYK?4FsH0H~%mkx9@m736j%vw`!Mwb1!zNYT(<^Og8unjGF(xdCKRt z1)j0*J9lgztwsc8ZAp^>$XpStbr}U1ur&J^2XGSBzFLM3E-6A$P1Q_}vbsIDI>yX~ zRY0-j0cth8hdcnTeuV=EI)`GzM`BBaZ)iebFG+*x}araIC2B$-F!W>EnjP z-B7kr#Z?P(w~DwbaHKw<1*8H28#phC6yIZ zgM;p=!!$ho#2T}$-o9%uc(aH3w(r>hsFN;~Rh}dD>x+6IN~oPL=1bY0bDT3((}dX@ z{SgpNfsb-prLk4G9iAZp=CZQNf>9aorJ2T4wXb z4k$vT7yM6e$@tIy?KMPd8RdJ;Y8a88iXvw3cQTRowMFfW8=))1<3xpD1a#NV%^@fP zrZ1nRA7$xzsSD%k+CofNE;+>tmz-a3d1F2@%(mN$U8fU_tCTU(^2@L%7
    Mm0Td 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�%o#Glj#$swHl)r+qg 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 literal 0 HcmV?d00001 diff --git a/content/blog/flash-filesystem-encryption/index.md b/content/blog/flash-filesystem-encryption/index.md index 54e14b8..84e711c 100644 --- a/content/blog/flash-filesystem-encryption/index.md +++ b/content/blog/flash-filesystem-encryption/index.md @@ -9,6 +9,10 @@ tags = ["cryptography", "ESP32"] katex = true +++ +![Illustration picture: DIE of a flash memory showing beautiful light interference](illustration.webp) + +_Illustration: CC By-SA 4.0 by [MacroWorld21 on Wikimedia Commons](https://commons.wikimedia.org/wiki/File:AMD_and_Fujitsu_Flash_Memory_Chip_from_1997.png)_ + One of my long-term projects is an ESP32-based phone, using an SD card for storage. Then, why not encrypting the SD card? _In this post, we first explain the basics of filesystem encryption, then explore ways to apply it to the case of an embedded device and flash memory. This last part is quite rarely analyzed in the literature._ @@ -194,6 +198,12 @@ The fastest is XTS with one key (and salted sector number) and long sectors. Sectors must not be too long, however, as random access to block j needs computing all j successive powers of $\alpha$. 32 blocks may be a good value, as it matches flash erase size. +### Erase size and program size + +Damn, I forgot to tell about erasing and programming flash memories! + +Flash memories work in a peculiar way: you first have to erase some part of the memory (by filling it with ones) then you can write data by replacing some zeros with ones. But that's not all. Each operation has a minimum size. You can generally (it depends on the chip) program down to 16 bytes, but you can only erase by chunks of (again, generally) 512 bytes! + ## The key ### Deriving the key from a password @@ -222,7 +232,7 @@ If an adversary **steals your device**, they may copy your encrypted data before **Data can be scrambled.** Altering encrypted blocks will produce valid garbage plaintexts, which may or may not be detected, depending on what files or filesystem structures are affected. Again LittleFS partly mitigates this issue, because every bit of data is covered by a checksum. A checksum is not a cryptographic tool as it has low entropy and is malleable, and its goal is to detect hardware faults, not attacks. However as XTS is not bitwise malleable, it may contribute to render active attacks harder, as a scrambled block can be marked as faulty. -**Why not authenticate?** We could write authentication tags along the data (e.g. AES-GCM, HMAC), but that would be very expensive to compute. It would also break the 1:1 correspondance between ciphertext blocks and plaintext blocks, that is vital to its performance. We would need either to write all authentication tags to a different partition (out of the filesystem, hence causing performance issues), or to make encryption part of the filesystem itself, which is a lot of work. +**Why not authenticate?** We could write authentication tags along the data (e.g. AES-GCM, HMAC), but that would be very expensive to compute. It would also break the 1:1 correspondance between ciphertext blocks and plaintext blocks, that is vital for performance. We would need either to write all authentication tags to a different partition (out of the filesystem, hence causing performance issues), or to make encryption part of the filesystem itself, which is a lot of work. ## Conclusion diff --git a/content/blog/surveillance/illustration.webp b/content/blog/surveillance/illustration.webp new file mode 100644 index 0000000000000000000000000000000000000000..56fdf99c8ecf703a43d3de1848e97b616e3ad61b GIT binary patch literal 34522 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 O1UzKDMla3-Gynid6Lh`+ literal 0 HcmV?d00001 diff --git a/content/blog/surveillance.fr.md b/content/blog/surveillance/index.fr.md similarity index 98% rename from content/blog/surveillance.fr.md rename to content/blog/surveillance/index.fr.md index a04ce55..868a520 100644 --- a/content/blog/surveillance.fr.md +++ b/content/blog/surveillance/index.fr.md @@ -7,6 +7,10 @@ insert_anchor_links = "left" tags = ["politique"] +++ +![Illustration picture: Numerous files on shelves from the archives of the Stasi](illustration.webp) + +_Illustration: [Bundesarchiv, Bild 183-1989-1204-023 / Heinz Hirndorf / CC-BY-SA 3.0](https://commons.wikimedia.org/wiki/File:Bundesarchiv_Bild_183-1989-1204-023,_Erfurt,_Bezirks-Archiv_des_Ministeriums_f%C3%BCr_Staatssicherheit.jpg)_ + Même si vous n'avez rien à cacher, voici quelques raisons de vous soucier de la surveillance généralisée. ## Une expérimentation policière illégale est une future loi diff --git a/content/blog/surveillance.md b/content/blog/surveillance/index.md similarity index 97% rename from content/blog/surveillance.md rename to content/blog/surveillance/index.md index 1cf2c71..6ee8085 100644 --- a/content/blog/surveillance.md +++ b/content/blog/surveillance/index.md @@ -8,6 +8,10 @@ draft = false tags = ["politics"] +++ +![Illustration picture: Numerous files on shelves from the archives of the Stasi](illustration.webp) + +_Illustration: [Bundesarchiv, Bild 183-1989-1204-023 / Heinz Hirndorf / CC-BY-SA 3.0](https://commons.wikimedia.org/wiki/File:Bundesarchiv_Bild_183-1989-1204-023,_Erfurt,_Bezirks-Archiv_des_Ministeriums_f%C3%BCr_Staatssicherheit.jpg)_ + Even if you have nothing to hide, here are some reasons to worry about general surveillance. > This article has been translated from French using Firefox 128's offline AI translator, and manually corrected by myself. It refers to events and structures known to a French audience but instances of such phenomena should be found in other countries as well.