Fixing my skill issues 2025.05.22
Today I realized I am a bit (very) cooked in my hardware implementation project. I am a little bit new to HDL programming and designing and I don't have much time left before the master's degree application season starts (in about a hundred days). So I down-scoped the project to only IND-CPA encryption plus choosing the ML-KEM-768 security strength, which is implementing essentially all the required hardware modules with the least variations.
Now here are the problems:
It definitely needs a hash function, the extendable one in the SHA3 family
If I don't optimize the area size, there is a chance it won't fit onto the FPGA board. (but it's a non problem since I should aim for correctness first on simulation)
Again, I only have about 100 days from now (I already understand most of the modules except the Hash module)
I get why the TAs are pushing me for hardware designs recently after putting this together in Microsoft Visio.
So here are the things I need to crank out:
Hash function module especially SHAKE256
Rejection sampling module (for generating the public key matrix A in NTT form)
And I think I will go for implementing SHAKE256 (writing the HDL) first. And I don't think module hardening is possible since I stalled too long for reading the papers :')