Implementations


Software Implementations: first results

These results have been collected using FELICS-AE, our fork of CryptoLUX’s FELICS framework dedicated to AEAD ciphers.

Performance results on AVR ATmega128

Performance results for 128-bit key algorithms on AVR ATmega128.
Version CFLAGS Code size (B) RAM (B) Execution time (cycles)
ACORN-128 8bitfast -O3 3558 231 238989
AES-128-GCM ref -O3 5850 701 5533470
Ascon-128 ref -O3 5838 265 193031
Ascon-128a ref -O3 6098 281 163965
Lilliput-I-128 felicsref -O3 5258 265 111041
Lilliput-I-128 threshold -O3 10376 425 645533
Lilliput-II-128 felicsref -O3 4484 231 132532
Lilliput-II-128 threshold -O3 9656 383 850022
ACORN-128 8bitfast -Os 2506 207 222697
AES-128-GCM ref -Os 2852 710 17514449
Ascon-128 ref -Os 4202 324 248533
Ascon-128a ref -Os 4204 340 210041
Lilliput-I-128 felicsref -Os 2606 259 250646
Lilliput-I-128 threshold -Os 4482 426 1016558
Lilliput-II-128 felicsref -Os 2558 244 276702
Lilliput-II-128 threshold -Os 4398 386 1325602
Performance of Lilliput-AE on AVR ATmega128.
Version CFLAGS Code size (B) RAM (B) Execution time (cycles)
Lilliput-I-128 felicsref -O3 5258 265 111041
Lilliput-I-128 threshold -O3 10376 425 645533
Lilliput-I-192 felicsref -O3 5422 281 138767
Lilliput-I-192 threshold -O3 10780 449 760121
Lilliput-I-256 felicsref -O3 5634 297 181229
Lilliput-I-256 threshold -O3 11458 473 935669
Lilliput-II-128 felicsref -O3 4484 231 132532
Lilliput-II-128 threshold -O3 9656 383 850022
Lilliput-II-192 felicsref -O3 4622 247 165808
Lilliput-II-192 threshold -O3 9872 407 997902
Lilliput-II-256 felicsref -O3 4786 263 215024
Lilliput-II-256 threshold -O3 10424 431 1215707
Lilliput-I-128 felicsref -Os 2606 259 250646
Lilliput-I-128 threshold -Os 4482 426 1016558
Lilliput-I-192 felicsref -Os 2750 275 314882
Lilliput-I-192 threshold -Os 4628 450 1207550
Lilliput-I-256 felicsref -Os 2928 291 407912
Lilliput-I-256 threshold -Os 4814 474 1489814
Lilliput-II-128 felicsref -Os 2558 244 276702
Lilliput-II-128 threshold -Os 4398 386 1325602
Lilliput-II-192 felicsref -Os 2672 264 352146
Lilliput-II-192 threshold -Os 4510 410 1570682
Lilliput-II-256 felicsref -Os 2828 279 466082
Lilliput-II-256 threshold -Os 4666 434 1935234

Performance results on MSP430F1611

Performance results for 128-bit key algorithms on MSP430F1611.
Version CFLAGS Code size (B) RAM (B) Execution time (cycles)
ACORN-128 8bitfast -O3 3296 280 394058
AES-128-GCM ref -O3 6602 708 9936368
Ascon-128 ref -O3 7638 258 475222
Ascon-128a ref -O3 7914 276 398238
Lilliput-I-128 felicsref -O3 5048 352 151472
Lilliput-I-128 msp-fast -O3 4066 278 75311
Lilliput-I-128 msp-threshold -O3 7002 420 442670
Lilliput-I-128 threshold -O3 8622 502 581609
Lilliput-II-128 felicsref -O3 4296 298 178331
Lilliput-II-128 msp-fast -O3 3428 232 90987
Lilliput-II-128 msp-threshold -O3 6408 366 583511
Lilliput-II-128 threshold -O3 7934 448 759463
ACORN-128 8bitfast -Os 2438 220 543077
AES-128-GCM ref -Os 2020 700 20038829
Ascon-128 ref -Os 3348 326 490172
Ascon-128a ref -Os 3352 344 410514
Lilliput-I-128 felicsref -Os 2354 304 300051
Lilliput-I-128 msp-fast -Os 2144 250 77328
Lilliput-I-128 msp-smallrom -Os 1780 248 121938
Lilliput-I-128 msp-threshold -Os 3862 400 567345
Lilliput-I-128 threshold -Os 3842 426 968208
Lilliput-II-128 felicsref -Os 2284 290 357630
Lilliput-II-128 msp-fast -Os 2074 224 92954
Lilliput-II-128 msp-smallrom -Os 1702 222 150438
Lilliput-II-128 msp-threshold -Os 3798 366 748898
Lilliput-II-128 threshold -Os 3686 394 1254310
Performance of Lilliput-AE on MSP430F1611.
Version CFLAGS Code size (B) RAM (B) Execution time (cycles)
Lilliput-I-128 felicsref -O3 5048 352 151472
Lilliput-I-128 msp-fast -O3 4066 278 75311
Lilliput-I-128 msp-threshold -O3 7002 420 442670
Lilliput-I-128 threshold -O3 8622 502 581609
Lilliput-I-192 felicsref -O3 5286 376 194009
Lilliput-I-192 msp-fast -O3 4172 294 92981
Lilliput-I-192 msp-threshold -O3 7274 444 524453
Lilliput-I-192 threshold -O3 9052 542 704651
Lilliput-I-256 felicsref -O3 5570 402 258905
Lilliput-I-256 msp-fast -O3 4318 310 120794
Lilliput-I-256 msp-threshold -O3 7500 468 625502
Lilliput-I-256 threshold -O3 9718 584 890714
Lilliput-II-128 felicsref -O3 4296 298 178331
Lilliput-II-128 msp-fast -O3 3428 232 90987
Lilliput-II-128 msp-threshold -O3 6408 366 583511
Lilliput-II-128 threshold -O3 7934 448 759463
Lilliput-II-192 felicsref -O3 4492 322 226643
Lilliput-II-192 msp-fast -O3 3510 248 112151
Lilliput-II-192 msp-threshold -O3 6494 390 676263
Lilliput-II-192 threshold -O3 8272 480 909699
Lilliput-II-256 felicsref -O3 4730 346 301159
Lilliput-II-256 msp-fast -O3 3616 264 143607
Lilliput-II-256 msp-threshold -O3 6778 414 814911
Lilliput-II-256 threshold -O3 8852 520 1139907
Lilliput-I-128 felicsref -Os 2354 304 300051
Lilliput-I-128 msp-fast -Os 2144 250 77328
Lilliput-I-128 msp-smallrom -Os 1780 248 121938
Lilliput-I-128 msp-threshold -Os 3862 400 567345
Lilliput-I-128 threshold -Os 3842 426 968208
Lilliput-I-192 felicsref -Os 2496 288 407448
Lilliput-I-192 msp-fast -Os 2250 266 95022
Lilliput-I-192 msp-smallrom -Os 1790 264 153777
Lilliput-I-192 msp-threshold -Os 4212 424 664362
Lilliput-I-192 threshold -Os 3996 450 1182246
Lilliput-I-256 felicsref -Os 2680 304 537270
Lilliput-I-256 msp-fast -Os 2396 282 122871
Lilliput-I-256 msp-smallrom -Os 1804 280 207669
Lilliput-I-256 msp-threshold -Os 4366 448 787947
Lilliput-I-256 threshold -Os 4192 474 1503162
Lilliput-II-128 felicsref -Os 2284 290 357630
Lilliput-II-128 msp-fast -Os 2074 224 92954
Lilliput-II-128 msp-smallrom -Os 1702 222 150438
Lilliput-II-128 msp-threshold -Os 3798 366 748898
Lilliput-II-128 threshold -Os 3686 394 1254310
Lilliput-II-192 felicsref -Os 2344 314 443902
Lilliput-II-192 msp-fast -Os 2156 240 114150
Lilliput-II-192 msp-smallrom -Os 1792 238 181278
Lilliput-II-192 msp-threshold -Os 3962 390 861962
Lilliput-II-192 threshold -Os 3800 418 1519286
Lilliput-II-256 felicsref -Os 2486 298 627042
Lilliput-II-256 msp-fast -Os 2262 256 145654
Lilliput-II-256 msp-smallrom -Os 1802 254 237386
Lilliput-II-256 msp-threshold -Os 4174 414 1030658
Lilliput-II-256 threshold -Os 3962 442 1919726

Performance results on ARM Cortex-M3

Performance results for 128-bit key algorithms on ARM Cortex-M3.
Version CFLAGS Code size (B) RAM (B) Execution time (cycles)
ACORN-128 opt1 -O3 11664 656 58026
AES-128-GCM ref -O3 4416 784 5153075
Ascon-128 opt32 -O3 19744 280 13378
Ascon-128 ref -O3 3256 584 35346
Ascon-128a opt32 -O3 25036 280 12085
Ascon-128a ref -O3 3488 600 28550
Lilliput-I-128 felicsref -O3 3788 412 75210
Lilliput-I-128 threshold -O3 6080 664 353444
Lilliput-II-128 felicsref -O3 3744 388 90528
Lilliput-II-128 threshold -O3 6052 632 467421
ACORN-128 opt1 -Os 2454 352 47013
AES-128-GCM ref -Os 1528 736 15898496
Ascon-128 opt32 -Os 16024 252 10713
Ascon-128 ref -Os 1492 448 50934
Ascon-128a opt32 -Os 19028 264 9598
Ascon-128a ref -Os 1490 464 42492
Lilliput-I-128 felicsref -Os 1648 304 201539
Lilliput-I-128 threshold -Os 2652 520 579934
Lilliput-II-128 felicsref -Os 1678 300 206597
Lilliput-II-128 threshold -Os 2650 488 653045
Performance of Lilliput-AE on ARM Cortex-M3.
Version CFLAGS Code size (B) RAM (B) Execution time (cycles)
Lilliput-I-128 felicsref -O3 3788 412 75210
Lilliput-I-128 threshold -O3 6080 664 353444
Lilliput-I-192 felicsref -O3 3960 436 94915
Lilliput-I-192 threshold -O3 6300 688 417550
Lilliput-I-256 felicsref -O3 4160 444 124526
Lilliput-I-256 threshold -O3 6664 712 512205
Lilliput-II-128 felicsref -O3 3744 388 90528
Lilliput-II-128 threshold -O3 6052 632 467421
Lilliput-II-192 felicsref -O3 3928 404 112707
Lilliput-II-192 threshold -O3 6256 656 544237
Lilliput-II-256 felicsref -O3 4100 428 147512
Lilliput-II-256 threshold -O3 6588 680 651244
Lilliput-I-128 felicsref -Os 1648 304 201539
Lilliput-I-128 threshold -Os 2652 520 579934
Lilliput-I-192 felicsref -Os 1732 320 229566
Lilliput-I-192 threshold -Os 2742 544 611021
Lilliput-I-256 felicsref -Os 1832 336 271472
Lilliput-I-256 threshold -Os 2854 568 802275
Lilliput-II-128 felicsref -Os 1678 300 206597
Lilliput-II-128 threshold -Os 2650 488 653045
Lilliput-II-192 felicsref -Os 1746 320 296521
Lilliput-II-192 threshold -Os 2724 512 888085
Lilliput-II-256 felicsref -Os 1830 336 358946
Lilliput-II-256 threshold -Os 2820 536 1027173

Performance results on PC

Performance results for 128-bit key algorithms on PC.
Version CFLAGS Code size (B) RAM (B) Execution time (cycles)
ACORN-128 opt1 -O3 6988 488 4680
AES-128-GCM aes-ni -O3 9176 1144 1200
AES-128-GCM ref -O3 6654 844 608790
Ascon-128 opt64 -O3 9906 204 2584
Ascon-128 ref -O3 2113 344 2404
Ascon-128a opt64 -O3 12762 212 2200
Ascon-128a ref -O3 2208 344 2024
Lilliput-I-128 felicsref -O3 5811 608 14152
Lilliput-I-128 threshold -O3 8453 808 80584
Lilliput-II-128 felicsref -O3 5359 560 16784
Lilliput-II-128 threshold -O3 8047 744 105130
ACORN-128 opt1 -Os 2924 432 5556
AES-128-GCM aes-ni -Os 4240 720 1688
AES-128-GCM ref -Os 2775 848 2023124
Ascon-128 opt64 -Os 9197 224 1896
Ascon-128 ref -Os 1534 448 5552
Ascon-128a opt64 -Os 10506 216 2556
Ascon-128a ref -Os 1510 448 4720
Lilliput-I-128 felicsref -Os 2705 448 29784
Lilliput-I-128 threshold -Os 4566 736 127344
Lilliput-II-128 felicsref -Os 2590 432 35732
Lilliput-II-128 threshold -Os 4343 652 159358
Performance of Lilliput-AE on PC.
Version CFLAGS Code size (B) RAM (B) Execution time (cycles)
Lilliput-I-128 felicsref -O3 5811 608 14152
Lilliput-I-128 threshold -O3 8453 808 80584
Lilliput-I-192 felicsref -O3 6004 632 17548
Lilliput-I-192 threshold -O3 8814 832 93798
Lilliput-I-256 felicsref -O3 6216 640 22796
Lilliput-I-256 threshold -O3 9169 856 114572
Lilliput-II-128 felicsref -O3 5359 560 16784
Lilliput-II-128 threshold -O3 8047 744 105130
Lilliput-II-192 felicsref -O3 5520 568 21312
Lilliput-II-192 threshold -O3 8338 768 122530
Lilliput-II-256 felicsref -O3 5706 592 27030
Lilliput-II-256 threshold -O3 8639 792 149086
Lilliput-I-128 felicsref -Os 2705 448 29784
Lilliput-I-128 threshold -Os 4566 736 127344
Lilliput-I-192 felicsref -Os 2901 472 41032
Lilliput-I-192 threshold -Os 4719 760 147688
Lilliput-I-256 felicsref -Os 3051 496 51740
Lilliput-I-256 threshold -Os 4876 784 180710
Lilliput-II-128 felicsref -Os 2590 432 35732
Lilliput-II-128 threshold -Os 4343 652 159358
Lilliput-II-192 felicsref -Os 2705 456 43332
Lilliput-II-192 threshold -Os 4469 676 187828
Lilliput-II-256 felicsref -Os 2893 480 61700
Lilliput-II-256 threshold -Os 4604 700 229360

Hardware Implementations: first estimations

Nb. Lanes Registers Round Function Tweakey Schedule Total Relative Perf.
4 384 8 S-boxes + 29×8 XORs 440 XORs 4530 GEs 1
5 448 8 S-boxes + 29×8 XORs 507 XORs 5050 GEs 1.15
6 512 8 S-boxes + 29×8 XORs 577 XORs 5626 GEs 1.24
7 576 8 S-boxes + 29×8 XORs 650 XORs 6115 GEs 1.35