Coinbase відкрила вихідні тексти криптографічної бібліотеки Kryptology
Coinbase відкрила джерело криптографічної бібліотеки Kryptology
Coinbase має відкритий вихідний код криптографічної бібліотеки Kryptology , яка пропонує набір криптографічних алгоритмів для використання в розподілених системах, в яких шифрування і аутентифікація здійснюються із залученням декількох учасників. Код написаний мовою Go і поширюється під ліцензією Apache 2.0.
Відзначається, що код бібліотеки пройшов аудит безпеки, а API розроблений з оглядкою на простоту і захист від випадкових помилок або неправильного використання, які можуть привести до зниження довговічності реалізованих механізмів. При розробці також були враховані типові проблеми, з якими довелося зіткнутися Coinbase.
До складу бібліотеки входять:
- Реалізація схеми секретного поділу Шаміра, яка дозволяє розділити секретне повідомлення між N сторонами, щоб будь-які сторони K (K ≤ N) могли спільно відновити повне повідомлення, але даних від сторін K-1 недостатньо для отримання будь-якої інформації про вихідне повідомлення. В якості практичного застосування методу згадуються багатокористувацькі системи авторизації, в яких для отримання доступу необхідна присутність певної кількості людей, і кожен окремо не може пройти авторизацію, а також системи біометричної аутентифікації.
- Порогові реалізації алгоритму ECDSA (Алгоритм цифрового підпису еліптичної кривої) - це GG20 і DKLs18, які пропонують схеми поділу закритих ключів для спільного формування цифрових підписів, що вимагають участі певної мінімальної кількості власників спільних ключів в процесі створення підпису.
- BLS DKG і ed25119 DKG розповсюдили інструменти генерації ключів , які дозволяють розбити розрахунки, проведені для формування відкритих і закритих ключів між декількома сторонами, так що ключі можуть бути згенеровані тільки при спільній роботі, жодна зі сторін не має доступу до закритих ключів і компроміс однієї зі сторін не загрожує всій системі.
- Реалізація перевірених алгоритмів криптографії Camshoup і ElGamal, які вирішують завдання підтвердження того, що переданий шифротекст був зашифрований заданим відкритим ключем, без надання ключа для розшифровки.