Czytam publikację "Pandaka: A Lightweight Cipher for RFID Systems" (jest dostępna na sci-hub) i oni tam szacują logic gate equivalence różnych algorytmów. Przykładowo koszt AES ze 128-bitowym kluczem wyszedł im 3400 GEs. Podają też tabelkę "COST ESTIMATIONS FOR TYPICAL CRYPTOGRAPHIC HARDWARE":
Functional Block Cost (GEs)
2 input NAND gate 1
2 input XOR gate 2.5
2 input AND gate 2.5
FF (Flip Flop) 12
n-byte RAM n × 12
Ja potrzebuję oszacować np. koszt następujących operacji, powiedzmy na liczbach 128-bitowych:
- dodawanie a+b (mod 2^128),
- dodawanie a+1 (mod 2^128),
- bit shifts a << 1 or a >> 1,
- not and bitwise and -(a & 1) or ~-(a & 1) ,
- bitwise or a | b,
- a xor b.
Jak to właściwie zrobić? Czy każda taka operacja ma stały koszt i należy je zsumować, czy może jeszcze jakoś przeskalować przez wielkość liczby w bitach? Jaki jest koszt przesunięcia bitowego? Do tego oni wliczają samo przechowywanie liczb jako koszt:
In addition, we need N × L bits RAM to store the base keys, which requires N ×L×1.5 GEs.
A zmienne też mam tam doliczyć? Jeśli cały stan algorytmu to 256-bitów, to mam doliczyć 256 GEs?