Fixing my skill issues 2025.05.20
It has been weeks since I started studying the CRYSTALS-Kyber key encapsulation scheme. Honestly, the more I look at it the more I realize I might have just scraped the surface. Every time I thought I understand it enough and moved on to the next step (math equations to software implementation to hardware implementation), I realized I did not understand it that well and went back to the specifications.
Good news: I have a better understanding on the hardware schemes.
Bad news: An implementation that is heavily optimized in time might not be possible due to resource constraints (FPGA board).
I might have neglected to mention that I am implementing the scheme on FPGA, and I think I will have to go for encryption module first. Since the resource will have to be reused, I guess finishing an encapsulation module is completing half of the decapsulation module.
Before going back to the specs and pseudo-code, I forgot the IND-CPA encryption scheme requires hash functions to generate the noise vectors. It is not a cryptographic implementation if I don't include hash functions.
The progress is unfortunately slow because of my skill issues and the many things I need to read.