Fastcrypto, biblioteka kryptograficzna używana w Sui, pobiła wiele rekordów prędkości, a nasza praca nad testami porównawczymi i analizą bezpieczeństwa naprawiła liczne luki w zabezpieczeniach, otwierając jednocześnie drzwi dla innowacji poprzez identyfikację nowatorskich sztuczek optymalizacyjnych.

Artykuł Fastcrypto: Pioneering Cryptography Via Continuous Benchmarking, niedawno zaprezentowany na warsztatach benchmarkingowych Międzynarodowej Konferencji Inżynierii Wydajność (ICPE) w Imperial College w Londynie, opisuje nasze ciągłe i systematyczne testy porównawcze funkcji kryptograficznych w bibliotece Fastcrypto.

Prezentacja była częścią sesji zatytułowanej „Innowacje w testowaniu wydajności: strategie i technologie” w ramach warsztatów Load Testing and Benchmarking of Software Systems. Konferencja przyciągnęła gości zarówno ze środowiska akademickiego, jak i przemysłowego, w tym przedstawicieli MongoDB i Amazon, którzy również przemawiali na tych samych warsztatach.

Podkreśliliśmy systematyczne i ciągłe testy porównawcze biblioteki Fastcrypto, która jest zbiorem funkcji kryptograficznych, takich jak podpisy cyfrowe, funkcje skrótu i ​​dowody wiedzy zerowej. W Fastcrypto wszystkie funkcje są poddawane ciągłym testom porównawczym po udostępnieniu i na żądanie, a wyniki są publikowane online. Podobne funkcje można łatwo porównać, a my przechowujemy dane historyczne, aby móc śledzić wydajność w czasie.

W prezentacji podkreślono, jak te testy porównawcze ułatwiły podejmowanie bardziej świadomych decyzji podczas rozwoju Fastcrypto i Sui, wpływając na wybory zależności i sposobu użycia, a także optymalizując koncentrację zasobów programistów.

Kwalifikowane podejmowanie decyzji na podstawie wzorców

Studium przypadku zawarte w artykule dotyczyło wyzwania związanego z wyborem schematu podpisu dla walidatorów w Sui. Aby użytkownik mógł przesłać transakcję do Sui, transakcja musi zostać podpisana przez kworum walidatorów, połączonych w certyfikat transakcji. Przy około 100 walidatorach i równomiernie rozłożonych stawkach, kworum składa się z 67 walidatorów, co oznacza, że ​​każdy walidator musi zweryfikować 67 podpisów na transakcję.

Schemat podpisu BLS umożliwia weryfikację wielu podpisów tak, jakby były pojedynczym podpisem, ale jest to znacznie wolniejsze niż alternatywy, takie jak EdDSA. Szczegółowa analiza porównawcza wykazała, że ​​próg rentowności między tymi dwoma programami mieści się w przedziale od 40 do 45 podpisów. Dlatego dla Sui stosowanie BLS jest bardziej efektywne i rzeczywiście jest to rozwiązanie stosowane obecnie.

Analiza porównawcza schematów podpisów EdDSA i BLS ujawniła próg rentowności wynoszący od 40 do 45 podpisów wsadowych, co pokazuje, że przy puli walidatorów Sui, BLS jest wydajnym wyborem.

„Powinieneś się także martwić, jeśli oprogramowanie nagle stanie się dużo szybsze”

W prezentacji pokazano także, w jaki sposób testy porównawcze mogą wykryć nieoczekiwane zachowania oprogramowania. Jednym z przykładów były biblioteki wdrażające schemat podpisu EdDSA, który zakładał, że klucz publiczny powinien być buforowany i dostarczany jako dane wejściowe do funkcji podpisywania. Jeśli podano nieprawidłowy klucz publiczny, może to doprowadzić do wyodrębnienia klucza prywatnego (jak pokazano w naszym GitHubie ed25519-unsafe-libs).

Ten problem został wykryty, ponieważ niektóre biblioteki wykazywały niezwykle wysoką wydajność, pomijając wyprowadzanie klucza publicznego i używając jako argumentu potencjalnie nieprawidłowego klucza. Chociaż testy porównawcze często mają na celu przyspieszenie oprogramowania, „należy się również martwić, jeśli oprogramowanie nagle stanie się znacznie szybsze”, jak zauważył uczestnik warsztatów.