Fastcrypto, kryptografická knihovna používaná v Sui, překonala mnoho rychlostních rekordů a naše práce na srovnávacích testech a bezpečnostních analýzách opravila četná zranitelnosti zabezpečení a zároveň otevřela dveře inovacím tím, že jsme identifikovali nové optimalizační triky.

Článek Fastcrypto: Pioneering Cryptography Via Continuous Benchmarking, nedávno prezentovaný na srovnávacím workshopu International Conference on Performance Engineering (ICPE) na Imperial College v Londýně, popisuje naše nepřetržité a systematické srovnávání kryptografických funkcí v knihovně Fastcrypto.

Prezentace byla součástí sekce nazvané „Inovace v testování výkonnosti: Strategie a technologie“ v rámci workshopu Load Testing and Benchmarking of Software Systems. Konference přilákala hosty z akademické i průmyslové sféry, včetně zástupců MongoDB a Amazonu, kteří také vystoupili ve stejném workshopu.

Zdůraznili jsme systematické a nepřetržité testování knihovny Fastcrypto, což je sbírka kryptografických funkcí, jako jsou digitální podpisy, hashovací funkce a důkazy s nulovými znalostmi. Ve Fastcrypto jsou všechny funkce průběžně testovány po vydání a na vyžádání a výsledky jsou zveřejňovány online. Podobné funkce lze snadno porovnávat a staráme se o historická data, abychom mohli sledovat výkon v průběhu času.

Prezentace zdůraznila, jak tyto benchmarky usnadnily informovanější rozhodování při vývoji Fastcrypto a Sui, ovlivnily volby závislostí a použití a také optimalizovaly zaměření vývojářských zdrojů.

Kvalifikované rozhodování z benchmarků

Případová studie z článku se zabývala problémem výběru podpisového schématu pro validátory v Sui. Aby uživatel mohl odeslat transakci Sui, musí být transakce podepsána kvorem ověřovatelů, sloučených do transakčního certifikátu. S přibližně 100 validátory a rovnoměrně rozděleným podílem se kvorum skládá z 67 validátorů, což znamená, že každý validátor musí ověřit 67 podpisů na transakci.

Podpisové schéma BLS umožňuje ověření více podpisů, jako by se jednalo o jediný podpis, ale je mnohem pomalejší než alternativy, jako je EdDSA. Detailní benchmarking odhalil, že bod zvratu mezi těmito dvěma schématy je mezi 40 a 45 podpisy. Pro Sui je tedy použití BLS efektivnější a to je skutečně to, co se dnes používá.

Srovnávání podpisových schémat EdDSA a BLS odhalilo bod zvratu 40 až 45 dávkových podpisů, což ukazuje, že s validátorem Sui je BLS výkonnou volbou.

"Měli byste se také obávat, pokud je software náhle mnohem rychlejší."

Prezentace také ukázala, jak mohou benchmarky odhalit neočekávané chování softwaru. Jedním příkladem byly knihovny implementující podpisové schéma EdDSA, které předpokládalo, že veřejný klíč by měl být uložen do mezipaměti a poskytnut jako vstup do funkce podepisování. Pokud byl poskytnut nesprávný veřejný klíč, mohlo by to vést k extrakci soukromého klíče (jak je uvedeno v našem GitHubu ed25519-unsafe-libs).

Tento problém byl zjištěn, protože některé knihovny vykazovaly neobvykle rychlý výkon, obcházely odvození veřejného klíče a jako argument použily potenciálně nesprávný poskytnutý klíč. Zatímco benchmarky se často zaměřují na akceleraci softwaru, „měli byste se také obávat, pokud je software náhle mnohem rychlejší“, jak poznamenal člen publika na workshopu.