Fastcrypto, криптографическая библиотека, используемая в Sui, побила множество рекордов скорости, а наша работа над тестами и анализом безопасности устранила многочисленные уязвимости безопасности, одновременно открывая двери для инноваций путем выявления новых приемов оптимизации.

В документе Fastcrypto: новаторская криптография посредством непрерывного бенчмаркинга, недавно представленном на семинаре по бенчмаркингу Международной конференции по проектированию производительности (ICPE) в Имперском колледже в Лондоне, описывается наш непрерывный и систематический бенчмаркинг криптографических функций в библиотеке Fastcrypto.

Презентация прошла в рамках сессии «Инновации в тестировании производительности: стратегии и технологии» в рамках семинара «Нагрузочное тестирование и бенчмаркинг программных систем». Конференция привлекла гостей как из научных кругов, так и из промышленности, в том числе представителей MongoDB и Amazon, которые также выступали на том же семинаре.

Мы подчеркнули систематическое и постоянное тестирование библиотеки Fastcrypto, которая представляет собой набор криптографических функций, таких как цифровые подписи, хэш-функции и доказательства с нулевым разглашением. В Fastcrypto все функции постоянно тестируются при выпуске и по требованию, а результаты публикуются в Интернете. Подобные функции можно легко сравнивать, и мы сохраняем исторические данные, чтобы иметь возможность отслеживать производительность с течением времени.

В презентации подчеркивалось, как эти тесты способствовали принятию более обоснованных решений при разработке Fastcrypto и Sui, влияя на выбор зависимостей и использования, а также оптимизируя концентрацию ресурсов разработчиков.

Квалифицированное принятие решений на основе эталонных показателей

В тематическом исследовании из статьи рассматривается проблема выбора схемы подписи для валидаторов в Sui. Чтобы пользователь мог отправить транзакцию в Sui, транзакция должна быть подписана кворумом валидаторов, объединенных в сертификат транзакции. При примерно 100 валидаторах и равномерно распределенной доле кворум состоит из 67 валидаторов, то есть каждый валидатор должен проверить 67 подписей за транзакцию.

Схема подписи BLS позволяет проверять несколько подписей, как если бы они были одной подписью, но это намного медленнее, чем альтернативы, такие как EdDSA. Детальный сравнительный анализ показал, что точка безубыточности между этими двумя схемами находится между 40 и 45 подписями. Следовательно, для Суи использование BLS более эффективно, и это действительно то, что используется сегодня.

Сравнительный анализ схем подписей EdDSA и BLS выявил точку безубыточности от 40 до 45 пакетных подписей, показывая, что с пулом валидаторов Sui BLS является эффективным выбором.

«Вам также следует беспокоиться, если программное обеспечение внезапно станет намного быстрее»

В презентации также было продемонстрировано, как тесты производительности могут выявить непредвиденное поведение программного обеспечения. Одним из примеров были библиотеки, реализующие схему подписи EdDSA, которая предполагала, что открытый ключ должен быть кэширован и предоставлен в качестве входных данных для функции подписи. Если был предоставлен неправильный открытый ключ, это может привести к извлечению закрытого ключа (как показано в нашем GitHub ed25519-unsafe-libs).

Эта проблема была обнаружена потому, что некоторые библиотеки демонстрировали необычно высокую производительность, обходя создание открытого ключа и используя потенциально неправильный ключ, предоставленный в качестве аргумента. Хотя тесты часто направлены на ускорение программного обеспечения, «вам также следует беспокоиться, если программное обеспечение внезапно станет намного быстрее», как заметил один из слушателей семинара.