Pull to refresh
Selectel
IT-инфраструктура для бизнеса

Вышел пакет Sequoia 0.20.0, реализация OpenPGP на Rust

Reading time 3 min
Views 2.2K

Вчера был представлен выпуск пакета Sequoia 0.20.0. Он предлагает библиотеку функций и инструментарий командной строки с реализацией стандартов OpenPGP (RFC-4880). Команда проекта состоит из трех человек — участников проекта OpenPGP (RFC-4880). Для повышения безопасности и надежности кодовой базы они решили создать новую свободную реализацию OpenPGP на языке Rust. Код проекта распространяется под лицензией GPLv2+.

Цель разработчиков — не только повышение безопасности продукта, но и избавление от недостатков GnuPG. Без нарушения совместимости или кардинальной переработки кодовой базы их нельзя устранить в основном проекте. Так, связь между отдельными компонентами GnuPG достаточно сильная, так что вносить изменения сложно, не говоря уже о создании системы unit-тестирования. Инструментарий командной строки gpupg не синхронизирован по функциональности и библиотекой функций, так что ряд действий можно выполнить лишь при помощи утилиты.

У Sequoia есть утилита командной строки sq с поддержкой субкоманд в стиле Git, плюс два варианта API — низкоуровневый и высокоуровневый. Есть обвязки для языков C и Python. Поддерживается большая часть возможностей, которые описаны в стандарте OpenPGP, для шифрования, расшифровки, создания и проверки цифровых подписей.

Из дополнительных возможностей — это поддержка верификации по отдельно поставляемым цифровым подписям, адаптация для интеграции с пакетными менеджерами и возможность ограничения подписей по пороговым значениям и времени.

Низкоуровневый API очень близко воспроизводит возможности OpenPGP и некоторые связанные расширения, включая поддержку ECC и элементы из «черновика» будущей редакции стандарта. Что касается исключений, это только устаревшие части спецификации, которые могут негативно повлиять на безопасность — например, поддержка хэшей MD5. Также API поддерживает небуферизированную обработку сообщений. По своим возможностям он приблизился к полному охвату стандарта OpenPGP и полностью готов для работы с данными OpenPGP. В ближайшем времени должен выйти стабильный релиз 1.0.

Что касается высокоуровневого API, то он только начинает развиваться и охватывает пока такие возможности, как хранение открытых ключей и функции доступа по сети. Другие вспомогательные и предметно-ориентированные возможности планируется добавлять по мере развития проекта.

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

  sq packet dump --hex message.pgp
 
   New CTB, 13 bytes: One-Pass Signature Packet
       Version: 3
       Type: Binary
       Pk algo: EdDSA Edwards-curve Digital Signature Algorithm
       Hash algo: SHA512
       Issuer: 83F8 2E4F E9A5 E098
       Last: true
 
   00000000  c4 0d                                              frame
   00000002        03                                           version
   00000003           00                                        sigtype
   00000004              0a                                     hash_algo
   00000005                 16                                  pk_algo
   00000006                    83 f8  2e 4f e9 a5 e0 98         issuer
   0000000e                                             01      last

Что касается поддержки платформ, то сейчас пакет работает с платформами Linux, FreeBSD, Windows, macOS, Android и iOS. Есть и возможность работы с предоставляемыми этими платформами криптографическими сервисами, включая сопроцессоры для вычисления в изолированных анклавах. Чтобы обеспечить дополнительную изоляцию, практикуется разделение по отдельным процессам сервисов, которые работают с открытыми и закрытыми ключами. Например, в форме отдельного процесса развивается хранилище ключей. Для обеспечения взаимодействия отдельных процессов используется протокол Cap’n Proto.

В представленной новой версии появился низкоуровневый пакет sequoia-openpgp, программа sqv (замена gpgv) для верификации отсоединенных цифровых подписей (detached signature) и утилита sqop с реализацией интерфейса, не учитывающего состояние (Stateless OpenPGP CLI). Требования к Rust подняты до версии 1.46. Еще расширено использование системы непрерывной интеграции для проверки изменений и улучшен набор для тестирования совместимости с OpenPGP.

В ближайшее время разработчики планируют выпустить версию 1.0, в которой появится и высокоуровневый API, а не только низкоуровневый, как сейчас.

Tags:
Hubs:
+21
Comments 1
Comments Comments 1

Articles

Information

Website
selectel.ru
Registered
Founded
Employees
501–1,000 employees
Location
Россия
Representative
Влад Ефименко