FPGA/ASIC friendliness FPGA/ASIC-friendly Small S-boxes (variable or/and fixed) Bit permutations ASIC-friendly Unusual yet simple transforms e.g., integer addition with only partial carry (an adder with some holes punched) #define pcadd(a, b, mask) ((((a) ^ (b)) + (((a) & (b) & (mask)) << 1)) & 0xff) FPGA/ASIC-unfriendly Sequential memory-hard functions All of the friendliness examples in this and previous slides assume that sufficient parallelism is available in one instance of a KDF, as suggested before