company_banner

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


    Вчера был представлен выпуск пакета 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, а не только низкоуровневый, как сейчас.

    Selectel
    ИТ-инфраструктура для бизнеса

    Комментарии 1

      0
      Есть ли в Sequoia поддержка аппаратных токенов для хранения и работы с ключами типа Nitrokey PRO2, GNUK и т.п.?

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое