Badacze uruchomili enkapsulację i dekapsulację Classic McEliece na układzie FPGA z rozszerzeniem instrukcji RISC-V. Test przeprowadzili na płytce DE1-SoC z układem Intel Cyclone V, używając parametrów znacznie mniejszych od produkcyjnych. Podawane w badaniu redukcje liczby cykli o 87,4% i 86,1% pochodzą z osobnej symulacji, a nie z pomiarów na FPGA.

W artykule

Co zadziałało na FPGA

Classic McEliece to oparty na kodach mechanizm enkapsulacji klucza, zaliczany do kryptografii postkwantowej. Badacze połączyli jego wybrane operacje z niestandardowymi instrukcjami rdzenia RISC-V RV32I. Projekt dopasowali do układu Cyclone V 5CSEMA5F31C6 na płytce DE1-SoC.

Ocena wykorzystała parametry SYS_T=2, SYS_N=48 i GFBITS=12, wybrane do analizy architektury. Pełny projekt zajmował 10 531 ALM. Po dopasowaniu układu oszacowana maksymalna częstotliwość wyniosła 118,89 MHz w warunkach slow przy 85°C. Procesor i akceleratory pracowały jednak z zegarem 5 MHz.

Na FPGA badacze wykonali enkapsulację i dekapsulację, korzystając z kluczy wygenerowanych przez komputer-host. Nie ukończyli generowania kluczy na samym urządzeniu: pełna ścieżka przekroczyła budżet symulacji wynoszący 300 milionów cykli, a część controlbits pozostała realizowana programowo.

Symulacja i FPGA dają różne wyniki

Poniższe liczby opisują różne tryby pamięci i zakresy operacji. Wartości procentowe dotyczą porównania w symulacji z pamięcią asynchroniczną, natomiast liczniki FPGA pochodzą z konfiguracji z pamięcią synchroniczną.

Tryb pomiaruOperacjaWynikZakres i warunki
Symulacja z pamięcią asynchronicznąEnkapsulacja1 010 cykli; o 87,4% mniej cykliPorównanie z nieprzyspieszoną wersją bazową
Symulacja z pamięcią asynchronicznąDekapsulacja1 708 050 cykli; o 86,1% mniej cykliPorównanie z nieprzyspieszoną wersją bazową
FPGA z pamięcią synchronicznąOperacja enkapsulacji1 820 cykliKlucze wygenerowane przez hosta
FPGA z pamięcią synchronicznąPełna enkapsulacja z SHA-25613 585 cykliKlucze wygenerowane przez hosta
FPGA z pamięcią synchronicznąDekapsulacja3 654 113 cykliKlucze wygenerowane przez hosta

Liczby 1 820 i 13 585 nie opisują tego samego zakresu: druga obejmuje pełną enkapsulację wraz z SHA-256. Również wyniki symulacji i FPGA nie są bezpośrednim porównaniem samych akceleratorów. W tej samej pracy konfiguracja synchroniczna wymagała 1,80 raza więcej cykli przy enkapsulacji i 2,14 raza więcej przy dekapsulacji niż konfiguracja asynchroniczna; badacze zastrzegli, że różne reżimy pamięci utrudniają traktowanie tych wyników jako porównania jeden do jednego.

Gdzie niestandardowe instrukcje pomagają

Projekt zachował trzy mapowania obliczeń na sprzęt: przeszukiwanie Chiena na liście nośników, eliminację Gaussa o stałym rozmiarze do generowania wielomianu minimalnego oraz strumieniową redukcję do postaci systematycznej przy generowaniu klucza publicznego. Po przyspieszeniu etapów dekodera generowanie listy nośników, napędzane przez sieć permutacji Bénesa, pochłaniało ponad 99% cykli dekapsulacji w obu badanych reżimach pamięci.

Badacze odrzucili także wariant composeinv wspomagany przez DMA. W zintegrowanym profilu dawał on zaledwie 1,0–1,1 raza poprawy etapu controlbits; koszty transferów i rekurencyjnych sortowań niwelowały korzyść widoczną dla samego jądra obliczeniowego. To przykład, dlaczego przy akceleracji liczy się koszt całego przebiegu, a nie tylko szybkość pojedynczej funkcji.

Pamięć ogranicza skalowanie

Dla zestawu parametrów mceliece348864 badacze podali spakowaną macierz postaci systematycznej o rozmiarze 334 848 bajtów i klucz publiczny o rozmiarze 261 120 bajtów. Docelowy układ FPGA ma około 496 KiB pamięci blokowej. Sama macierz może się w niej zmieścić, ale macierz, klucz publiczny i pamięci procesora nie mieszczą się razem.

Praca nie ekstrapoluje wydajności dla parametrów produkcyjnych. Wskazuje za to na potrzebę zmian w organizacji pamięci, takich jak użycie banków lub pamięci zewnętrznej oraz strumieniowe przetwarzanie prawej części macierzy. Zredukowane parametry testu nie pozwalają więc przeliczyć wyników na osiągi dla mceliece348864.

Zakres testów i oszacowania mocy

Testy systemowe objęły jeden referencyjny test znanej odpowiedzi (KAT) i cztery ukierunkowane wzorce błędu o wadze dwa. Dla testowanego przypadku n=48, t=2 istnieje 1 128 takich wzorców, więc próby systemowe nie były wyczerpujące ani statystyczne. Badacze poprawili też cztery błędy odziedziczonej maszyny stanów Berlekampa–Masseya oraz osobny błąd rejestru transpozycji, który ujawniły testy integracyjne.

Oszacowanie narzędzia Quartus PowerPlay dla pełnego projektu przy zegarze 5 MHz wyniosło 458,34 mW; około 90% tej wartości przypadało na moc statyczną. Badacze oszacowali też około 731 ms i 335 mJ na dekapsulację w tej konfiguracji Cyclone V i przy zastosowanym modelu aktywności. Krótkie okna VCD nie obejmowały całej dekapsulacji, więc te liczby opisują konkretne oszacowanie projektu, a nie uniwersalny pomiar energii.

Badanie nie obejmowało eksperymentu kanałów bocznych. Stała latencja instrukcji sama w sobie nie dowodzi, że oprogramowanie działa w stałym czasie ani że sprzęt pobiera stałą moc.