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

Стаття «Fastcrypto: піонерська криптографія за допомогою безперервного порівняльного аналізу», нещодавно представлена ​​на семінарі з порівняльного аналізу Міжнародної конференції з розробки продуктивності (ICPE) в Імперському коледжі в Лондоні, описує наш постійний і систематичний порівняльний аналіз криптографічних функцій у бібліотеці Fastcrypto.

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

Ми висвітлили систематичний і постійний порівняльний аналіз бібліотеки Fastcrypto, яка є набором криптографічних функцій, таких як цифрові підписи, хеш-функції та докази з нульовим знанням. У Fastcrypto всі функції безперервно тестуються після випуску та на вимогу, а результати публікуються в Інтернеті. Подібні функції можна легко порівнювати, і ми зберігаємо історичні дані, щоб мати можливість відстежувати продуктивність з часом.

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

Кваліфіковане прийняття рішень з орієнтирів

Приклад із статті розглядав проблему вибору схеми підпису для валідаторів у Sui. Щоб користувач міг подати транзакцію до Sui, транзакція має бути підписана кворумом валідаторів, об’єднаних у сертифікат транзакції. З приблизно 100 валідаторами та порівну розподіленими частками, кворум складається з 67 валідаторів, тобто кожен валідатор повинен перевірити 67 підписів на транзакцію.

Схема підпису BLS дозволяє перевіряти кілька підписів так, ніби вони є єдиним підписом, але це набагато повільніше, ніж альтернативи, такі як EdDSA. Детальний порівняльний аналіз показав, що точка беззбитковості між цими двома схемами становить від 40 до 45 підписів. Отже, для Sui використання BLS є більш ефективним, і це дійсно те, що використовується сьогодні.

Порівняльний аналіз схем підписів EdDSA та BLS виявив точку беззбитковості від 40 до 45 пакетних підписів, показуючи, що з пулом валідаторів Sui BLS є ефективним вибором.

«Ви також повинні хвилюватися, якщо програмне забезпечення раптом стане набагато швидшим»

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

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