Binance додає реалізацію з відкритим вихідним кодом для алгоритму цифрового підпису Edwards-Curve (EdDSA) у бібліотеці TSS

2020-03-16

 

Три місяці тому Binance оголосила про впровадження бібліотеки з пороговою схемою підпису (TSS) із відкритим вихідним кодом в якості основного кроку, який ми зробили, щоб внести свій внесок в розробку блокчейна з відкритим вихідним кодом. Бібліотека сумісна з блокчейнами на основі ECDSA, включаючи мережі Binance Chain, Bitcoin і Ethereum. Вона уже використовувалася для побудови мостів токен свапу та інших функцій.

Команда розробників Binance Chain продовжує свої зусилля з розробки цієї захоплюючої нової технології. Сьогодні ми раді оголосити про реалізацію бібліотеки TSS для EdDSA з відкритим вихідним кодом, яка буде розширюватися для підтримки більшої кількості типів блокчейнів, включаючи Cardano, NANO, Stellar Lumens, WAVES і навіть Libra!

Чому EdDSA

Еліптичні криві є одними із найпотужніших типів криптографії, які сьогодні широко використовуються, і Edwards криві  є найостаннішими і найбільшими серед еліптичних кривих. Алгоритми цифрового підпису еліптичної кривої можуть підписувати повідомлення швидше, ніж існуючі алгоритми підпису, такі як RSA, DSA або ElGamal. У поєднанні з Edwards кривими алгоритм цифрового підпису кривої Edwards (або скорочено EdDSA) являє собою схему цифрового підпису, що використовує варіант Schnorr підписів на основі закручених Edwards кривих.

Здавалося б, деякі блокчейни, такі як Tezos, Libra і Cardano, вирішили використовувати алгоритм EdDSA з кривою Ed25519 замість ECDSA з кривою secp256k1. Але чому?

Основні характеристики підписи EdDSA:

  • Прискорена перевірка: алгоритм EdDSA простіше, ніж ECDSA, і його легше зрозуміти і реалізувати. Через цю простоту EdDSA часто працює трохи краще, ніж ECDSA.

  • Безпека [1]: Schnorr підписи надійно захищені. Точніше кажучи, вони не піддаються атаці обраного повідомлення і не змінються. З іншого боку, така гнучкість можлива в схемі підпису ECDSA і привела до багатьох проблем із Bitcoin.  

  • Лінійність [1]: Ми можемо скласти кілька Schnorr підписів, і результат все ще залишається дійсним підписом. Це може заощадити обчислювальні ресурси і сформувати будівельні блоки для різних конструкцій більш високого рівня, які підвищують ефективність і конфіденційність, таких як транзакції з декількома підписами і багато іншого.

Перш за все безпека.

Безпека завжди була головним пріоритетом для Binance і команд розробників Binance. Kudelski Security були запрошені для проведення аудиту безпеки першої версії tss-lib. Нова реалізація EdDSA повторно використала більшу частину існуючої кодової бази, і нові перевірки реалізації активно виконуються. Ви можете відслідковувати оновлення у GitHub тут.

Tss бібліотека є частиною програми Binance Bug Bounty, де дослідники можуть повідомляти про уразливість і отримувати винагороди. Оскільки дослідження і технології TSS все ще досить нові, криптографи активно аналізують нашу реалізацію. Поки що це призвело до виправлень для двох поліпшень безпеки:

  1. https://github.com/binance-chain/tss-lib/releases/tag/v1.1.0

  2. https://github.com/binance-chain/tss-lib/releases/tag/v1.2.0

Обидві ці знахідки роблять бібліотеку Binance TSS однією з найбезпечніших реалізацій TSS. Ми хочемо висловити нашу подяку за ваш експертний аналіз і своєчасну звітність з цих питань.

Майбутні плани

Сьогодні ми додаємо бібліотеки, пов'язані з EdDSA, до існуючої бази коду tss-lib з відкритим вихідним кодом у випуску v1.3.0. Ми очікуємо, що більше членів екосистеми і спільноти Binance зможуть інтегрувати цю бібліотеку TSS зі своїми додатками, такими як гаманці і кастодіани, і продовжувати розвивати цю чудову нову технологію.

Це тільки одна вітка в нашій роботі з TSS. Ми продовжуємо досліджувати і впроваджувати краще рішення для управління активами і багато іншого разом з спільнотою Binance Chain. Створення спільноти з відкритим вихідним кодом принесе користь як спільноті Binance Chain, так і глобальній блокчейн та крипто спільноті.

Примітка: 

[1] https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki#Motivation