From 2cdcb7bf034c6558c030895bd46a250cf14b65ca Mon Sep 17 00:00:00 2001 From: Khushi chhillar <120015301+kcl17@users.noreply.github.com> Date: Sat, 27 Dec 2025 12:17:09 +0000 Subject: [PATCH 1/2] PQC Blog - Introduction to FIPS 204 --- pqc/fips/fips-204-ml-dsa.md | 108 ++++++++++++++++++++++++++++++++++++ pqc/fips/fips-204.png | Bin 0 -> 83143 bytes pqc/fips/index.md | 1 + 3 files changed, 109 insertions(+) create mode 100644 pqc/fips/fips-204-ml-dsa.md create mode 100644 pqc/fips/fips-204.png diff --git a/pqc/fips/fips-204-ml-dsa.md b/pqc/fips/fips-204-ml-dsa.md new file mode 100644 index 0000000..8903b71 --- /dev/null +++ b/pqc/fips/fips-204-ml-dsa.md @@ -0,0 +1,108 @@ +# FIPS-204 + +**Author:** [Khushi Chhillar](https://www.linkedin.com/in/kcl17/) + +**Published:** December 21, 2025 + +## Inroduction + +In our previous exploration of ML-KEM, we discussed how we encrypt data in a post-quantum world. But encryption is only half the battle. We also need to prove who we are. From the padlock icon in your browser (TLS) to the software updates on your phone, Digital Signatures ensure authenticity and integrity. + +Currently, the world runs on RSA and Elliptic Curve Digital Signature Algorithm (ECDSA). Both will be broken by Shor’s Algorithm. + +NIST’s answer to this threat is **FIPS 204**, also known as **ML-DSA (Module-Lattice-Based Digital Signature Algorithm)**. Formerly known as **CRYSTALS-Dilithium**, this algorithm is now the primary workhorse for verifying digital identity in the post-quantum era. + +ML-DSA comes in **three** levels – **ML-DSA 44, ML-DSA 65, and ML-DSA 87**. Each one targets a different **NIST** security level, which basically means how much an attacker would need to break it, even with a quantum computer. The **higher the level, the stronger the protection, but it also means bigger keys and slower performance**. + + +## Lattice-Based Fiat-Shamir + +While RSA relies on the difficulty of factoring large numbers (N=p×q), ML-DSA relies on the hardness of finding short vectors in high-dimensional lattices. Specifically, it solves the **Module Learning With Errors (ML-LWE)** and **Module Short Integer Solution (Module-SIS) problems**. + +ML-DSA is constructed using a cryptographic paradigm called **Fiat-Shamir with Aborts**. To understand how this works, we have to look at the three-step interaction it simulates: + +1. **Commitment**: The signer generates a random vector derived from the message and their secret key. + +2. **Challenge**: A hash function creates a “challenge” based on that commitment. + +3. **Response**: The signer calculates a response vector to satisfy the challenge. + +### What is a Rejection Sampling ? + +The unique mathematical twist in ML-DSA is the “Aborts” mechanism. In classical lattice schemes, simply outputting the response vector would often leak statistical information about the signer’s **Secret Key** because the signature would essentially map the shape of the secret lattice key. + +To prevent this, ML-DSA uses **Rejection Sampling**. + +• The signer calculates a potential signature. + +• They check if this signature falls within a specific, “safe” statistical distribution (essentially checking if the vector is “short” enough and doesn’t reveal the secret key’s geometry). + +• If the signature leaks too much info (it is “unsafe”), the signer aborts, picks a new random value, and tries again. + +• This cycle repeats until a safe signature is produced. + +**The Result**: The final signature is mathematically independent of the secret key’s geometry, making it secure against both classical and quantum analysis. + +## Trade-off of Size vs. Speed + +If you are accustomed to the tiny 64-byte signatures of ECDSA, ML-DSA will look massive. However, what we lose in bandwidth, we gain in verification speed. + +### Parameter Sets +NIST has standardized three security levels for ML-DSA, corresponding to AES strengths: + +![](fips-204.png) + +### Performance Asymmetry +The defining characteristic of ML-DSA is its **asymmetry in speed**: + +• **Signing**: Moderately fast. It involves the “rejection sampling” loop mentioned above, so it might take a few attempts to generate a valid signature. However, on modern hardware, this still happens in microseconds ~roughly 75 microseconds for Level 5. + +• **Verification**: Extremely fast. Verifying an ML-DSA signature involves simple matrix-vector multiplication and hashing. Benchmarks show it is often **20x faster** than verifying an ECDSA signature. + +**Why this matters**: In high-traffic environments like a secure web server (TLS), the server does the signing (slower), but millions of clients (phones, laptops) do the verifying. ML-DSA is optimized exactly for this, making the client-side experience very snappy despite the larger data size. + +## Why ML-DSA Won? (and what it replaces?) + +NIST selected ML-DSA as the primary standard for general-purpose digital signatures. + +• **Replacing RSA & ECDSA**: ML-DSA is the intended replacement for the vast majority of use cases: TLS certificates, document signing, and code signing. + +• **vs. SLH-DSA (SPHINCS+)**: NIST also standardized SLH-DSA (FIPS 205). However, SLH-DSA is stateless and hash-based. While its public keys are tiny (32 bytes), its signatures are massive (variable, but up to 40KB) and it is significantly slower. ML-DSA is the preferred choice for performance. + +• **vs. FN-DSA (Falcon)**: Another lattice algorithm, FN-DSA (upcoming FIPS 206), offers smaller signatures (~666 bytes) but is notoriously difficult to implement correctly due to complex floating-point arithmetic (Gaussian sampling) that is prone to side-channel attacks. ML-DSA was chosen as primary because it is easier to implement securely. + +## Implementation Challenges + +Migrating to ML-DSA introduces specific engineering hurdles that did not exist with RSA or ECC. + +1. **Packet Fragmentation & size** :An ML-DSA-65 signature is 3.3 KB. This exceeds the standard Maximum Transmission Unit (MTU) of roughly 1,500 bytes for a network packet. + + • **Impact**: Protocols like UDP (used in DNSSEC) do not handle fragmentation well. A single signature will now span multiple packets, increasing the risk of packet loss and latency. + +2. **Handling “Aborts”**: Developers implementing the algorithm from scratch (rather than using a library like OpenQuantumSafe) must be careful with the rejection sampling loop. + + •**Risk**: If the code takes a different amount of time depending on why it aborted or how many times it looped, it could create a **timing side-channel** that allows an attacker to deduce the secret key. Constant-time implementation is critical. + +## Conclusion + +ML-DSA (FIPS 204) is a lattice-based beast. It trades the compact elegance of Elliptic Curves for the brute-force geometric security of Module Lattices. While the keys and signatures are significantly “heavier” (measured in Kilobytes rather than Bytes), the blazing fast verification speed makes it a worthy successor to the throne of digital identity. + +## Analogy: The “Crop” Technique + +To understand the **Rejection Sampling** (Aborts) mechanism in ML-DSA: + +Imagine you are trying to prove to someone that you are in a specific city (your Secret Key) by sending them a photo (the Signature), but you **cannot** let them know your exact GPS location. + +1. **The Attempt**: You take a wide-angle photo of yourself. + +2. **The Check**: Before sending it, you look at the background. Does it show a specific street sign or landmark that reveals exactly where you are? + +3. **The Abort**: If the photo reveals too much (it falls into the “unsafe” distribution), you delete it (abort). You walk a few blocks over (add randomness) and take another photo. + +4. **The Success**: Eventually, you get a photo that proves you are in the city (it satisfies the math) but looks generic enough that it doesn’t reveal your secret coordinates. + +ML-DSA does this mathematically discarding any signature that looks too much like the secret lattice key, ensuring the final output looks like random noise to an attacker. + + + + diff --git a/pqc/fips/fips-204.png b/pqc/fips/fips-204.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad296ab11d66416d910b9fa8e102048ddf0ac72 GIT binary patch literal 83143 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

7vn&Yms_;S;A=uK=qj+$ zC@bsiDPl4t8)qYsuQ~Q^50{;sDvIZ&%jcNBq;=4<;QVrC$S&;@T>xurgb?@)*tyX* zjYIu7<1;`jB=tBKs0zvtaZ~W<^N1wKw3tgg_;B&ok3?Y;{H3s@OccrLB{C{o~A;I$06>18wn(~3UBQl)4Oh5bX~(@ZceL}E3L*90LLz<;Bc zt~e2auV4yid4^_a#AX3G1@y?=k57KSH`s|Dw~%goO!o*l8P^X@;y_=|v!#2sa$W}l zt)g6lfc;w-B`edrP_knwmy1(XjF_RX>GfB4g4LBWcKYaTsM&@9FVq+St*yl;k;`DB z#T6HieU{GU$8<>JO$d-6^CNoG8gMDmX}4TU$eb7a=HN1m{f( z9iqZ(AQRP>ru-&_N=QYYYqJ4zl5AhU!bGCjg;n%umfuL_Jbf5XTNhz1S3=6w|jW6YuQD_v;hv!PKA<-5DNiyc(lTakL%jBdqNA zJNZ`$h(&zpJ;u)$3{D_fJzMMSEuj;Y)&gg5?y;K*5{4LVyTl8y7K>8!C&e;Kiglxu znsv5PqS^YzixU%)uBG5O5+AQ*83-?B8VdY6rvPk49IffBD?4L8;$?fb@PU`L=x%1) zg|YyoB0crQ9PL1GQ-&o`O^muiM#uMdCPBa~IC%5J_Ll+}Aez&T&=|i(0O0AVx(Ijy zM0h|dE*b!2!O`C=K66cYof(;h>;;rS=q&{=OJ8`LUL?0rzOqXH-c!OqGlR_<=R{Dd zYtK1B*@q{bOKwW~_$5RI!RDR?K&ujbA#9gDLvNG5!H&}oNLqiRrv8rc%-QJw@eXHv z=2n?#hwULBaUTds)GZ(?S%^xCBk*hBI_2BUXDIxfxicu5aWr4NX*)z#?RmqKhfLPI z2&&|=0qQS+&mu9NTS|OHK8%q-VR=HVf>HQgoT2N0IFCdXT!n(q`UJ{MkW+B29;WT* zIg+mgaoff{wl&(icR}CKU#yjCFrk`LNa~H@Z3M!6Zj-W{7$Lx1R&~lD1T@J1d+CmW zIx-F0g)`t13ooHJHX<5Azt}>~j9#9(mwiGqQS483Oi{}d;D&U{OE3Z|i3@j5*S`2Y zz5$hv+3LaxM!LJhsONYFv=jn5UwLKq9x+PTrEw5%QNOi(V(lj8wlWbAJen8Pw$fik z=ajt8&6%Lu!oYBJ0Wc1+fp)MjR-h^Xx_VUT^vSoti)xgnbQG*2!krmi+4>xjr9?D| zE)h>)Jp49QBk&8baL03kOoXFko`x&gv1{YbE=IuhT48O6UtdzA5+wWaq?MyvfD_Ll zLoP$<+iz40jc=H8>;ksp4a-EU61buTl3erYmMr44 zM5&RGx9kH~I`x8^J~}!xMc-fY`w=q+q2B$RO**rLg7GkI#dp~@WdiPjP}W;I&im+J zG?bE1RaJr&%tNU*U+-jJw&Z>*ByHqRv{EsI11gJa=pCXHZiJrQa3rBVtA4Ah(-_m>_EC$WUuZ|`Q-i_5*c+Xto{b0myw)f=)RUWEW#K)^ zY-ZQ>JTH-40VVX3n!?QBR9GO8;X2L!H8XZErVt681U{g-2Fz)@R3s#3c}E&99ld}7 zhG0N^tNmFojlF*Mh&O@JbTr!Bpk?M zPDknKbZ(;^?HA8mxebu&B@zaxtl=!(0OT0_imefI4LTl-#}Sg&qiE+ zG|4YYY@fjT0aD{|*5-pbwl8d3>RPllG=r7*dfP3}WatV6eQP~8@JGP!3hK2VX45EL)CF0a z{S2p=3|8qCDtfVg(&-6Sw1|Fc#IJLDFM@-z44?X9XP08*ip1l(nt! zjyc;c`$D!Pk<_7J!mH=$%vQ0`Uzk zooPxBlTs^S+9|rgFv(Ea+15Xi>XR3QfEcm6fp;auM3fIxoP%VXcT+A{@dQF9Oqel; z*}x2DHePYEDBvXs37>yXvsOJni86?5W8Rxu0)bNPc;)QZ9+DJqJdo&v<4j@Zgy@{x z01dd9_1AxDjSIA8Dp7`EPQ>gm@+3T|S2LkU<^Z9$c-y^6#xC)*{wucF0U}Dc(^0fk zw1z4#07D)TQj^T_GwJYQ6s&e&j26N(oIS zcxSwUr->v>3(DohP=boRkWk=Oo^s~_h?TO=s@8W3WL5DGjuh<)}sJsfz9!(1i$N-GZp* zuf{eGSm?NPo) zY|Xq*i7dV~CfLFCOD!CN6cFz++BDV zj=@cm4QVhop@vE2#;;kw9)FZ_I$N?45-h<}d>(_H^vy?>0IQH}{Dzr`B>K?Kc*HK- zqBHK$WTvO#d7_Q~Ai%?z`IJWfxKm8HrEVg>-WxGTvvV@pX{l$Qnk&!vgwB7BOrB!_ z)IoiLmr5Wp<8P&@=qzr+H5;rFM7s*3Gr4>d{5eiChf3<*hvuhTR#2*DpMgAdpa2G? zQ<7<5KP3cwjmCu9`ZDR!>#P!<4h~mQA;Kth@!n3#IRX|BP=)vdgs?HxvG}vF9^#M$ zq>iTB>2Ox^^Tk`g&!$84$p@hxK>bJ{tb~!@wu}M5%E~hq&q8R^C#6%FAR<^b`i zYVxPUAGVrn__OM}XTgITV@q-IgzG&!S@#Hb7~K?XMyX)#>4kF4tG-Mo{a;WN)-f-- zF)?F2F)-?376&$g!zu{s{DhAZ*W5N`_a7{P|F*k_=eJU2g`fig8xW`DFS+6%^h!y5 z3}|F0m;OS}5+>wzA5XL*(GF~vW+s7Lu)<(Us78X(In{P)Cv2dx^l6xknJej|dKUxP z9PgE-&Ev+u%PR$IYR&8MO|_=u6TAs0&3KG4#X$u)OjE$Jwe_Kyq~-+nGKPx=!e=OG zg3u|uIlZ&dHv3lk&t8!`$ApMP`KL5kS19?W7M(0Wo>NuaEWOu9i;Mi&`LEV>q-I?+ zRU8%CeYXYJqR5&zv+EHr{@ivRW`1E-@OD)Ewe>mys!58ip(PnpsM*^gWtvuUuG08= zct(*TGc(!z1fiD;%fr|g+&N3ABSb@NDA)^;+z+i+NXiM z@kz0H2rE5dvtc|sB@X;Z=7Yv$yQCHpBah3@!X+40k%RT@u^AYNBw9|jbjQ}{WQ1v) z9hLnh$92-eC$L}@{7v*9<1sQn+j02Qw}Z zb|_DIuW_}cx6#$$rXcix-UXCt{k_Or3lWhl1RzkERnPmr;{}$SuEcO#*L7q349TPz zxkBSp8YbMwEfo^?+D+8KvmO(Y?LR>P|03rmMPc=wfnUJA^zNBpeIwu%;htB{PrftB z>p`9waa5X&o4Bb1>9yId#^6cPfat!&p;t98&nfPq!8VF13|pp`p4s%Zh&m@nn*JKx(2f>;e!Xf(w3c;%WmqOQza8$zkYr8 zIF|A3@>ytBik$yv#`ZOwT0OL@qmPf1p0$%fw6~NVq*X{^;V8|z1d9Xv<&|gZFg|RL z?oI%FPU+!vr7ENkWB}`UeILE<*7bn^rX;%H1T3(1n-UfTrvh34cM z9JpkBb8_Kv%_WDR`!8VZL4c4S3(vL3Q1*$IS}AtoW_|Y{0sK{}LfDsyC4u)OOYLv;@+Ly$oC51r`7PHR3SP*nDJGh0r&O$_Ve*_qEZv`MTW>w#d-<_kPMpfKEq4}nH^oAZ?gyhpXU^-ZvR^KON~izcjn#GcdVk9tXJ2aIEnm8#7sEz zZJ~n9GrNOYHBnS1%}TNXpjhZ?AZis{%%gP{6mxYsWae|rxTXATZF;YZ`@6mm4=rY; zc8~(4BNn)~#ozBxVkNDOr}*hyM$rw+2iM^RLSxT`ZFifm^BsVDd3p?5PZzxJS+{zA z=M_-?_NXrgdeUyjrSFOq3p7fedjk=@;7cS3I63ahXVLKDOk^y`MPl?mjeeSDB`KAy^K*7b|oBq{v^5*y>+Sx&pfsvbPe zL#yKCH&r)sd6n9~c-7$7jF-jO3qVTYqpYW_i4SVgBuT`?o_+s?S#WVa3m#(4INl_{ zW!M7ax)C%{o@UJ~m@v_%G_&qPbD_?zJ@S zVhoW@QY3#nyE9n~eE!a{HUdh7RSm5w#_M@)^%HeG+g!gacMb^O8s^LMeo|;# z_SApnp_7b*%@tL_1YwQe8zDd0?i_$Wy#{(9IH2D4(DYJdSL(w78ZvbT0TtGdJA7Wm zPD@s_NA}|F|GeL;xk5&p-@VdZ!Dk%Uwi}qvFBW4Ffprq^9pO8rt@Sb@`axPh#f$H& z1_jY=@Fwk8lraB!kQ=5(R`5C#!T3PnQgqz*PumB%sXwC@?lt!ZFh3S>KA`P7 zEmB;WfDJb`(%ws|N$e%7Phu-gWi(tR%N)GagkD@=^byue+DY4{)zqeUUu(oDg~*?E zn!Ou$YW!5g1IGsE<>*0%&M-@b~NGZh1f&RAKicf<2cu( z7MeH^H8g~0RWeQ8VHk1x3o+-{U)X^iXH*He^>(`JmqwyKJ6n&V4=OP1knjEx#|=rr z%*&2GpLM*($%5owpRasRwK}yibFU4qgfWD6?Cos=nQn(7ZhT z2IkS)gS$4OIL}LDz4P+oyD$Ek6NCvn&a8Q^HG8RrMi<+c4ymPu>!Z(dkY6l98DhQ4 zqfDmXsUQ<0(Wdeo9NKneWaP=+)VEP-<-KGsTUC$GhDVFvWgj|;Vn6LqNlFCuI234v zFc#Kf-O{ZZE*b-qKL+mL@dEcVg*E0X$%fk%Q$-vttmNC0dl2jAscSVj2UfpdfGl<+ zJExQs68F0v{PH~wf18{}$*@kEYrOTm9M+ANM)MT=M4MSUY&Bv;>GM;)oJx5gsObAn zEv~80;b|kN&V2-jc=j_Jz3y^cF~M$kR=%@y0_KbHjYgkQlZP4M*j-;1}dnU`x_jgaxqzMNQdBW&Gi zuf%-}(>TY|do(!zwln4JShX&*j*sx}F&+1cp(ZNlUK;$~8YRKD9rKe(xgKRu#-via zNAm^xDndV-PV%!~zW&grktx%8Y&PwJ`>mR$x6@8E;H3OLr;Qc~IWh{&yv1Rx3)%er zz%Asp0T%usr?Mjs`J%>f*LvzvdG3fqT^dR2hW8DY9cMGmbGs2=E=!;tKZ*=K&t`#E z?5+6^-7Oih&ohg@8o1L%EVi1;JtGvjq+amAOywE-3!%QMDCM=OyGp~;rap1r&CvP*5Wj99b*f8krb;Wha$boF4aAN1paDIlz2SOlh29up!kN7olyO(AS znBuJ~ZR}q^G*?8qs_D|BKqGw$U3*WJbE>)3cy2`VW7>lj2ir6R6q)Sj)ggX&>$(=^ zKb$wLyfcGMCM|rdJSjRXxjLm8WcrdD72_InvBgqL8r9iDO<5QmE~KU!B< zk1!+cm7%&hJ*cD5RLMrM2jd>YD1hqpWxwFv;51s$$19b4vbz*!A0ctCagXq?rwt;jX5W$oT;> ztFLUDlBB`7}h1<|KCw4YCEG)IUQrcf+?p@LV+ zFX%v#GmAgd|JR4$=2_GGM{Vy#{@gfk8myrramms12Q_5RNMR^SDxSIiH>`835^7pK z@&Xz4fo84z=$ik&m^D1NknzpT;4o)H@aAA?q;+oMkJ@FW?&GjuuXHOGdL8yfmPnnW8FUF z9cH2e{ve!X;$lEsEEmi;YL#Uljk6b3Gnn$l=hUIw;aMCZFSWk6t`y(dBir(^1=l+~ z8Ev&1oM-fi?oc74z)yZJT+iAJ%`bYCU*v2(s(mEr#Op}E=`h+>fXvW(;~v__y?pK7 zGD1<1q<*hNOSLEo?RfQJk!j^J zQTDDRr<&re>KyD7`yWVe$wLMI(hp3j0r}4rd#D6LLDMH{Wl@M{?T}(i@$8N;>*}zB zeAAalw;tPQi!6?RTFp4KIOy-7@z46m*WT;P?Tpt073as_*Sf0$lf13O`>L4#_TA0I zpPJCuplkl}Wug^hcNuA{@2{C#Z>Fc|@4vXPk=bFFxDe35k<0$+-un%dxM@Gt zwX9hr=xSeT_zUGHh30%uKC9B))#_=hh2rZZcVn&l6z1iS;w;)(@e&hS91`c7gRF9FO`o;}J35H4}V)u8Uz9<|E4nP(*lPb6X=ir>dU6fdryXAy#0}bf=*epT|ns(fyJ;A^1(&!-Hxo@t4HBW2O zLuq-uAS+yHIFSWNPvmc6MVn?w$}_Ks;kWH@H-C=aem%OmGUoBS0DD;a+*kE?d~Mk6 z@G+b!&uy*!xKUAN)@8*H(16H+xa!PoV-ROV66gLL(gMCHtFFQPKw7uujSHQAjx4~i z@^ALhd7U^EL`JB2w@yQOg8uW;>8~@K;o};gH-aZ<0b&k@kB!qgS-nv*W`ZCVRih%l zr|64UMZ~76J@gqe?;lj?n!DO0UHT6epz1OFILX7@d5(@_TgI#kmNA*83R*_3QtqDvJ^`b32q-A@LgBt= zDd}Ep@K;OqQhgne@(G91MXcI#d`s7U4S&@+RSoYSbvu{taVy@AGV+ycG&a*pRHpKn z=!qE-6m&ydYO0U|89k|dskQ}WEJkiI>|~ER`T-}^9U12Fgn{jpS5tgeCQm!zGu{QJ z;LQGKLg!h%Q%~@OsfIfJ^JiD+)gMbCUJ=7xyHlx4;)aRY2;-gEv*Pbk zfwu<2QMkvU8f*1cx_&E?F_Ckv&)bHylPli;!HYwoX5KDhK(B0$rtoy{Tn@sYG(0#v zzX!2!V{l$`wJ2UI^dbG_H2U@M*05Ty@(j(ei|PL2Qf1i!40m%)FCM$Yx#!ignYBCN zSL@oWM}5_30XZ~}Um9dS-O1}2)=8?Wb7;m;fc?InMmykhk8zamSzsnG+~*OQUkME2IIbIWZE~O|HSb>%q~tPE})Sh zrWYO~j@WCye?3_@7S=-+ht!+aC(AZ>9FbR#uD`o4&~_w!{Y6)WO8G3J+0n3qyQ0F- zjv0L8Pel3m{gIPnTA=0UcPG5v2Z=L@+-<0b0k(5UKkzNvQdoOZDmk7_C;Hi=sCr?K zYkNI_khhW#y|aZ6^zMDSxmjbx;=O8|#Qe6=5MsGlCVYGp&l2`tPC$V1>*5&byOaG{ z@*>o6r{ro{B3|XepX<(zKydL6ctO^5Oh_$}O;0b>AY-@sn6|`6B6$VP z_m+x}i6{YXC043_?n`-QYfOdwI2BC3#l-lo=^s737-i?<3h2#AHg?cHoZN_rYTv9> zj52f`sg}?cf&lh5#N0yU0UT^EGAaR4^|ILXZ4>ezE>| z+|7)#GO8C@n8pm5`q8bRwnYTElb-e6?(y-lLz83+9YUN0aKbbfNK1p7(*c_?fb-OW z$W7<>NV_D@X@LXq8|^=bXoKv2GeHB^?R~TU`pz0mtN(N@OoT=hvh9gHJ3XN^83>L7 z2saG)IMxUEP`KaJSsqvb|Chjn(&_&C2|hvsnG8`*S7`p5Q{l(@mrav&n{8tKNc=-S1qFdUgxO-FTt7Avks1q zC*!aC>PdwSpIV_c39eBKTRg(fScm`Y4;a5YIT3zJA>&XO0kJw_;pSw~Sc&cH*RPce z(;LZQJhxdHxV1(@}fey(LcwW1ex3+q1f6smK z&*KCt*bkAmudpF_0GwFrP7y(*mo(RFP_^)e! z2HNa{px#98e|ORv2OQXnYJw*)CEmgtlbLVz*PSSU%;X`6$se1?O(3bSCxUlUPx9p@ zF4h;mUmwa=M#6`|C1J&S972w`5HJvJ`?*pqzkSHI#3 z%pyD-ZqR6*^VgVbY%O2J0u!28NIsXpQjCMEb8vI>OSZ*z0}Ik0s8e$~;@AoV>lR6MS~MsrVtH}K{dM1zy#3X)4C z-gOFIZL+MduLt7I4E8t2ZH%0}3`rC(0{3InyuWsG2WB=_$drWlOQEyvzXk$t7BC$v zQs|$_`U9{avYG;vrtlQZncTH458&Nkch-Xj%GNW7#-0lv=6xR69X2EMD-#sY<(2%a z>lt=?-VHD(dK#np4w>=Qmz9+jdV!6-7RwB(e&QU33{~c8o<3~%oC%0^NSOGyUk5J^ zgR9p*2g#O{&XOQAW0DK&-0aS3?|;yEXQTA*Z~-2d1tAXO3t+YiXieH2hLYqdWbANy z4{eBI$_@*RXPN)%lmT%PKXjucPCm#}1_OZ`sJFMbLdHLj8aHfBu7AKs?kI8XWf5jR zao9r36#KjVbmi`CY=(iKYN!7?tu?maBl3avRH3(tXw!9h)J*b_bdnw@i_RVu{pa+t?+(9nInmqtE{}d z{52+uGg@^2X>fb|a9rq(d>-;E*y3>o}bA_>o- z>&G?Y|11p#AxMd(p>q#d?FblD!Wq@{dL&;5*q*(T3ugX51Qoo4b3NT znq3QH4zN}CokB1&Nj)ycf}~Vc;^Cu>dGPmT;YTg_B;`63Ir-({H2qk2YSmPAU9n2Z zs4t&e>6bxV%rIsWM?M?^>5=~Qx;m$;WpYbBV^)>`DQw3pNv@@FW$Dh$0?31Zs!_m6 zP>JE$fe!5LYNibnwO8_;Sm^NFNrWb6g@C^ zJGP~MVV-5SR61sT7P|AXqrBXDp+eDV=&Mni|5EMXJcFY`32$Jj3vQ5JO>a`%cnvj= z%tY!N4T8PG4;2#`6$6kFZDxJDn9|-}(`zImlO~-!5>v|>>Gi!a&NruH{;3_41k^)3 zB90obUcEEpta(nmwEo??g;SFII+W4&=J%Y+e; zem@K*22B)n>g^{!=bK!i9$LlylhjG^vSvx?b>ph7ZuU8rMJm!jjvFPF(&Q2{ZvSlMhMP?`x`owwu``}6x} z-=FV|uc0T!Hv4ejj?cisxh0k;%POtJeMWc~?z~tAHl5*4ln4_LPk-Fo)Dn)F6V1^E zL|xJ6wagAx`?Dl}?mza0+)bG?AE8`K(e?&_B8ejBA$Ydk3dn<*Wj*p`5M^o6B%vCM zauYONVv++v)NEMQJRd(Yy{wZpEjORcQt;2MpT9o+F$*ZvgsJ9Xf}RUsF3w{LY`SlH zj0GRCn0Ep1xthpB|B13bbdK%|(oeUeY4Q{kelh9v?}aa&&3~=``TgyW*u%xprsTky zb+kmq7ho|ng33@Ju`~fl(7(W{%>WSMNmA$~6NOzMI>Iw2>NUdAc)RlUy^s6Hl=ltY zUzl;x2Hli9uV+R203WI4uODywOkeDT*N-JKZ32e#^H|CsU^k8sKwwSrdhqh?R!Dxx zdCe!>e|-T^JWoLM_WFCBIp1K(x1b}DPY;Iz6Guy&H;hepXzJhYxj0_2)!3rd-my-; znx4kxxnR1nru?-^`THV;GY}W0YP81i__10re;&b?rV(b z8QL|!0!WW@Ll^z7`RyQ4$gho0%rdeZSIah$WR>ZZK$WsWF@$`@dN){uw}IynXaXQ` z;D=qT*EJP+E^XmWk3g#d0nv3}jR?-Ym;_5=VvbV@$2}E&s=0_a~RATzwA1YBXzym`W7M}rT)8=x>jd}Fce>B9$*mpftZ|#c{Fkl%LAM(ov-0{0WE9_zr zympNvPtk1nF(t8GI^sg!37y+k21lOUXQ}(NUfC9aUycEmLXQ)l0GKF zThC?mV^(Wv=up9&&=FZ_KQLAv)nDH)0*lNFTlfbu0_Q6kFvGh6TyVpHOdkgJ{t3{E zw%MlcziUp9R;^RET;Fc3(g{hf78GO#J)WA|OVFD5ZTUo(ayVWrRk%piFVSCyVFm2~ zB(K0}>#VS{sHNla(vk}XL!o#2#CmEZx0VgD@E#ZN{&JaA7b)mk#PM^fJN8KCS3bD7 z;SUoRgO0Og4z4lqDK0OtI!*?6w6`lVsN{socZotLR&%BfxcQHaqL3UZ?iSTVT!9W$ zRRZ+8b-fwh?O)qJM~m<=WSuasd_8jC_I`DZiqwM9$`CGc+VMxA$huB1g~*)|=$l+t zi$5yjhX8c$q{*wV?Z|q&XJ@y?f9@zhi~{Si=F#WQJ-2%aWeY$&_Y1&KYHSovPr*fk zjo8|kv{1;sQ^$2Jdj@v|ihxK9`90kc7See2Ry}& zb8s9)+893GT?utIKpNjj!zV@4z!W#&*iiD@t53hSuZw;f==n$~KG^jRAd?!r3=eI# z9z)Y$ydNcX^In_K0VR0PxIF-r>{}zpqr-f+_oof-AlCrOJ7CBR+3=cs(b)Gp5Oah* zbqxpxE6VXDWH*zvX2Q3=z~Gnt0n?y}(#0=UVw|nck&92<9Rf!5qPjTSpQ|YjFDP%g zs$(y2To-pdl?Dp#uID>SEt%#Vy45dI8|! z4IfwhVYdYLYK7#vjv%G5mLTj@AL*D{47yXwM{Azikfa2~olYjpqFr8usYiJ;^D)zD z$+Y0oQZnV{;Pg)EqvfA}B6VckDZ#Dfe!bpO@%lRdlMbP}GU|I#8gg{vx^yB6wN#*==2RNkqjDv{?`%UQDYkP`28c%{Kfhcji}o!^rac^g60fbcfbAfJ;VCW zUR;Zp0*>qDvmUMXKP~D@l+pC-@&0E9RrH7MS$ln1<{<$dPf+1FwqaaIQY4G`L8f+R zNAcsC{Vg!siW{09(4>*au&m*}?6)&P=v^-x`7*SZa$w*ckGiS^7?v&=Az;Nh_VKLq+#Rs+E|3#QmV`*>1F%dL1Y08*c&4*|rBPqTxLO@FMPS_3=*S2irOX$xPY z9JDUbRGt~u0jWOd{VM=O_$>=NW+5J{`t#lQpo4qe1RX{6vim4Pqgde^7Fk~|<{^nb zttF#|2W5y@dnLz1RaJrY0P9jG;D;bG_11KqLC-(bQ9N0_#oIR|6xVW4(Awgnn5o2& zAdmoOJ3bG5u~Q??CGtYB1Wp5;Kv)4URCszhMtbNTqd*YZDa)#({To1ehojm%yx&Mu z>$08URBzQ^8z~?OWPR{>!H)d)xn5j9=AV?tyHj!adm*okxvvhy#QoWmnooqj@-CIoFk~% z0pEAP=7!@-9HG|`q%we@Nnly5@~0HQ*|+U>xFLjYDTs)knbHeJ<>trDT=SaLDv`fU zye<@?Jm_b|U>NzhBq#5-zq60_*X)llX7w0reQCS_5 zXsb|WgTg!~fkNR8dBv}A&|Txbu62j>x)?FjfG^)K=V5IwWE9`@B4?a`!v)cPm)i!P z8Ak8xEXxC@pf&7N*HERmS}GImo0EhtPDO9s1j_u@JVx=7oty)ecFk^gdu!@B+<4Rj+ywS( zzSh%`<>Iw;E2-Y2Qf;&3A*rt@E|;$sMlnYOd|$G9@|g@HZ_HzK#IjemB;2WU0xWf3q&rA=-O9nKi9s`H z?g^u(YN+RHas-9C@p`#&+5r@#AtJL!≶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 d&!5W|Fz$Y0G!j?1nBW!|IVoky262 Date: Tue, 30 Dec 2025 03:56:25 +0000 Subject: [PATCH 2/2] FIX : Date and alignment error --- pqc/fips/fips-203-ml-kem.md | 2 +- pqc/fips/fips-204-ml-dsa.md | 49 ++++++++++++++++++------------------- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/pqc/fips/fips-203-ml-kem.md b/pqc/fips/fips-203-ml-kem.md index 22c8547..8d9f301 100644 --- a/pqc/fips/fips-203-ml-kem.md +++ b/pqc/fips/fips-203-ml-kem.md @@ -2,7 +2,7 @@ **Author:** [Khushi Chhillar](https://www.linkedin.com/in/kcl17/) -**Published:** December 21, 2025 +**Published:** December 20, 2025 _The New Handshake: Understanding ML-KEM (FIPS 203)_ diff --git a/pqc/fips/fips-204-ml-dsa.md b/pqc/fips/fips-204-ml-dsa.md index 8903b71..85a9d57 100644 --- a/pqc/fips/fips-204-ml-dsa.md +++ b/pqc/fips/fips-204-ml-dsa.md @@ -4,21 +4,22 @@ **Published:** December 21, 2025 -## Inroduction +## Introduction -In our previous exploration of ML-KEM, we discussed how we encrypt data in a post-quantum world. But encryption is only half the battle. We also need to prove who we are. From the padlock icon in your browser (TLS) to the software updates on your phone, Digital Signatures ensure authenticity and integrity. +In our previous exploration of ML-KEM, we discussed how we encrypt data in a post-quantum world. But encryption is only half the battle. We also need to prove who we are. From the padlock icon in your browser (TLS) to the software updates on your phone, Digital Signatures ensure authenticity and integrity. Currently, the world runs on RSA and Elliptic Curve Digital Signature Algorithm (ECDSA). Both will be broken by Shor’s Algorithm. -Currently, the world runs on RSA and Elliptic Curve Digital Signature Algorithm (ECDSA). Both will be broken by Shor’s Algorithm. +
NIST’s answer to this threat is **FIPS 204**, also known as **ML-DSA (Module-Lattice-Based Digital Signature Algorithm)**. Formerly known as **CRYSTALS-Dilithium**, this algorithm is now the primary workhorse for verifying digital identity in the post-quantum era. -ML-DSA comes in **three** levels – **ML-DSA 44, ML-DSA 65, and ML-DSA 87**. Each one targets a different **NIST** security level, which basically means how much an attacker would need to break it, even with a quantum computer. The **higher the level, the stronger the protection, but it also means bigger keys and slower performance**. - +ML-DSA comes in **three** levels – **ML-DSA 44, ML-DSA 65, and ML-DSA 87**. Each one targets a different **NIST** security level, which basically means how much an attacker would need to break it, even with a quantum computer. The **higher the level, the stronger the protection, but it also means bigger keys and slower performance**. ## Lattice-Based Fiat-Shamir While RSA relies on the difficulty of factoring large numbers (N=p×q), ML-DSA relies on the hardness of finding short vectors in high-dimensional lattices. Specifically, it solves the **Module Learning With Errors (ML-LWE)** and **Module Short Integer Solution (Module-SIS) problems**. +
+ ML-DSA is constructed using a cryptographic paradigm called **Fiat-Shamir with Aborts**. To understand how this works, we have to look at the three-step interaction it simulates: 1. **Commitment**: The signer generates a random vector derived from the message and their secret key. @@ -29,17 +30,15 @@ ML-DSA is constructed using a cryptographic paradigm called **Fiat-Shamir with A ### What is a Rejection Sampling ? -The unique mathematical twist in ML-DSA is the “Aborts” mechanism. In classical lattice schemes, simply outputting the response vector would often leak statistical information about the signer’s **Secret Key** because the signature would essentially map the shape of the secret lattice key. - -To prevent this, ML-DSA uses **Rejection Sampling**. +The unique mathematical twist in ML-DSA is the “Aborts” mechanism. In classical lattice schemes, simply outputting the response vector would often leak statistical information about the signer’s **Secret Key** because the signature would essentially map the shape of the secret lattice key. To prevent this, ML-DSA uses **Rejection Sampling**. -• The signer calculates a potential signature. +- The signer calculates a potential signature. -• They check if this signature falls within a specific, “safe” statistical distribution (essentially checking if the vector is “short” enough and doesn’t reveal the secret key’s geometry). +- They check if this signature falls within a specific, “safe” statistical distribution (essentially checking if the vector is “short” enough and doesn’t reveal the secret key’s geometry). -• If the signature leaks too much info (it is “unsafe”), the signer aborts, picks a new random value, and tries again. +- If the signature leaks too much info (it is “unsafe”), the signer aborts, picks a new random value, and tries again. -• This cycle repeats until a safe signature is produced. +- This cycle repeats until a safe signature is produced. **The Result**: The final signature is mathematically independent of the secret key’s geometry, making it secure against both classical and quantum analysis. @@ -48,16 +47,18 @@ To prevent this, ML-DSA uses **Rejection Sampling**. If you are accustomed to the tiny 64-byte signatures of ECDSA, ML-DSA will look massive. However, what we lose in bandwidth, we gain in verification speed. ### Parameter Sets + NIST has standardized three security levels for ML-DSA, corresponding to AES strengths: ![](fips-204.png) ### Performance Asymmetry + The defining characteristic of ML-DSA is its **asymmetry in speed**: -• **Signing**: Moderately fast. It involves the “rejection sampling” loop mentioned above, so it might take a few attempts to generate a valid signature. However, on modern hardware, this still happens in microseconds ~roughly 75 microseconds for Level 5. +- **Signing**: Moderately fast. It involves the “rejection sampling” loop mentioned above, so it might take a few attempts to generate a valid signature. However, on modern hardware, this still happens in microseconds ~roughly 75 microseconds for Level 5. -• **Verification**: Extremely fast. Verifying an ML-DSA signature involves simple matrix-vector multiplication and hashing. Benchmarks show it is often **20x faster** than verifying an ECDSA signature. +- **Verification**: Extremely fast. Verifying an ML-DSA signature involves simple matrix-vector multiplication and hashing. Benchmarks show it is often **20x faster** than verifying an ECDSA signature. **Why this matters**: In high-traffic environments like a secure web server (TLS), the server does the signing (slower), but millions of clients (phones, laptops) do the verifying. ML-DSA is optimized exactly for this, making the client-side experience very snappy despite the larger data size. @@ -65,11 +66,11 @@ The defining characteristic of ML-DSA is its **asymmetry in speed**: NIST selected ML-DSA as the primary standard for general-purpose digital signatures. -• **Replacing RSA & ECDSA**: ML-DSA is the intended replacement for the vast majority of use cases: TLS certificates, document signing, and code signing. +- **Replacing RSA & ECDSA**: ML-DSA is the intended replacement for the vast majority of use cases: TLS certificates, document signing, and code signing. -• **vs. SLH-DSA (SPHINCS+)**: NIST also standardized SLH-DSA (FIPS 205). However, SLH-DSA is stateless and hash-based. While its public keys are tiny (32 bytes), its signatures are massive (variable, but up to 40KB) and it is significantly slower. ML-DSA is the preferred choice for performance. +- **vs. SLH-DSA (SPHINCS+)**: NIST also standardized SLH-DSA (FIPS 205). However, SLH-DSA is stateless and hash-based. While its public keys are tiny (32 bytes), its signatures are massive (variable, but up to 40KB) and it is significantly slower. ML-DSA is the preferred choice for performance. -• **vs. FN-DSA (Falcon)**: Another lattice algorithm, FN-DSA (upcoming FIPS 206), offers smaller signatures (~666 bytes) but is notoriously difficult to implement correctly due to complex floating-point arithmetic (Gaussian sampling) that is prone to side-channel attacks. ML-DSA was chosen as primary because it is easier to implement securely. +- **vs. FN-DSA (Falcon)**: Another lattice algorithm, FN-DSA (upcoming FIPS 206), offers smaller signatures (~666 bytes) but is notoriously difficult to implement correctly due to complex floating-point arithmetic (Gaussian sampling) that is prone to side-channel attacks. ML-DSA was chosen as primary because it is easier to implement securely. ## Implementation Challenges @@ -77,20 +78,22 @@ Migrating to ML-DSA introduces specific engineering hurdles that did not exist w 1. **Packet Fragmentation & size** :An ML-DSA-65 signature is 3.3 KB. This exceeds the standard Maximum Transmission Unit (MTU) of roughly 1,500 bytes for a network packet. - • **Impact**: Protocols like UDP (used in DNSSEC) do not handle fragmentation well. A single signature will now span multiple packets, increasing the risk of packet loss and latency. + - **Impact**: Protocols like UDP (used in DNSSEC) do not handle fragmentation well. A single signature will now span multiple packets, increasing the risk of packet loss and latency. -2. **Handling “Aborts”**: Developers implementing the algorithm from scratch (rather than using a library like OpenQuantumSafe) must be careful with the rejection sampling loop. +2. **Handling “Aborts”**: Developers implementing the algorithm from scratch (rather than using a library like OpenQuantumSafe) must be careful with the rejection sampling loop. - •**Risk**: If the code takes a different amount of time depending on why it aborted or how many times it looped, it could create a **timing side-channel** that allows an attacker to deduce the secret key. Constant-time implementation is critical. + - **Risk**: If the code takes a different amount of time depending on why it aborted or how many times it looped, it could create a **timing side-channel** that allows an attacker to deduce the secret key. Constant-time implementation is critical. ## Conclusion ML-DSA (FIPS 204) is a lattice-based beast. It trades the compact elegance of Elliptic Curves for the brute-force geometric security of Module Lattices. While the keys and signatures are significantly “heavier” (measured in Kilobytes rather than Bytes), the blazing fast verification speed makes it a worthy successor to the throne of digital identity. -## Analogy: The “Crop” Technique +## Analogy: The “Crop” Technique To understand the **Rejection Sampling** (Aborts) mechanism in ML-DSA: +
+ Imagine you are trying to prove to someone that you are in a specific city (your Secret Key) by sending them a photo (the Signature), but you **cannot** let them know your exact GPS location. 1. **The Attempt**: You take a wide-angle photo of yourself. @@ -102,7 +105,3 @@ Imagine you are trying to prove to someone that you are in a specific city (your 4. **The Success**: Eventually, you get a photo that proves you are in the city (it satisfies the math) but looks generic enough that it doesn’t reveal your secret coordinates. ML-DSA does this mathematically discarding any signature that looks too much like the secret lattice key, ensuring the final output looks like random noise to an attacker. - - - -