18.04.2021

Релиз Sequoia 1.0, реализации OpenPGP на языке Rust


После трёх с половиной лет разработки опубликован выпуск пакета Sequoia 1.0, развивающего библиотеку функций и инструментарий командной строки с реализацией стандарта OpenPGP (RFC-4880). Выпуск подытожил работу над низкоуровневым API, в котором реализован охват стандарта OpenPGP, достаточный для полноценного использования. Код проекта написан на языке Rust и распространяется под лицензией GPLv2+. Реализация криптографических алгоритмов основана на библиотеке Nettle. Поддерживаются платформы Linux, FreeBSD, Windows, macOS, Android и iOS.

Проект был основан тремя участниками разработки GnuPG из компании g10code, специализирующейся на аудите криптосистем и разработке дополнений к GnuPG. Команда Sequoia также известна созданием сервера ключей Hagrid, который применяется в сервисе keys.openpgp.org. Целью нового проекта была переработка архитектуры и применение новых техник повышения безопасности и надёжности кодовой базы.

Для повышения защиты в Sequoia применяются не только средства безопасного программирования с использованием языка Rust, но и защита от ошибок на уровне API. Например, API не позволяет случайно экспортировать материал секретного ключа, так как по умолчанию операции экспорта требуют явного выбора. Аналогично API подстраховывает от пропуска важных действий при обновлении цифровой подписи — по умолчанию автоматически обновляется время создания, алгоритм хэширования и эмитент подписи.

В Sequoia также пытаются избавиться от недостатков GnuPG, таких как рассинхронизация функциональности инструментов командной строки с библиотекой функций (некоторые действия можно выполнить только при помощи утилиты) и слишком тесная связь между компонентами, которая затрудняет внесение изменений, запутывает кодовую базу и мешает созданию полноценной системы unit-тестирования.

Sequoia развивает утилиту командной строки sq с поддержкой субкоманд в стиле Git, программу sqv (замена gpgv) для верификации отсоединённых цифровых подписей (detached signature), утилиту sqop (Stateless OpenPGP CLI) и библиотеку sequoia-openpgp. Имеются обвязки для языков Си и Python. Поддерживается большинство возможностей, описанных в стандарте OpenPGP, для шифрования, расшифровки, создания и проверки цифровых подписей. Из расширенных возможностей отмечается поддержка верификации по отдельно поставляемым цифровым подписям (detached signature), адаптация для интеграции с пакетными менеджерами (APT, RPM, cargo и т.п.), возможность ограничения подписей по пороговым значениям и времени.

Для упрощения разработки, отладки и разбора инцидентов предлагаются инструменты инспектирования пакетов, которые интегрированы с парсером и дают возможность наглядно проанализировать структуру зашифрованных сообщений, цифровых подписей и ключей. Для обеспечения защиты поддерживается использование криптографических сервисов, таких как сопроцессоры для вычисления в изолированных анклавах. Для дополнительной изоляции практикуется разделение по отдельным процессам сервисов, работающих с открытыми и закрытыми ключами (взаимодействие процессов организовано при помощи протокола Cap’n Proto). Например, в форме отдельного процесса развивается хранилище ключей.

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

Отмечается, что по намеченной функциональности Sequoia достиг готовности к релизу 1.0 ещё год назад, но разработчики решили не торопиться и выделить больше времени на проверку наличия ошибок и написание качественной и полной документации с отсылками на информацию в стандарте OpenPGP и примерами использования.

Релиз 1.0 пока охватывает только crate-пакет sequoia-openpgp и утилиту для проверки цифровых подписей sqv. CLI-интерфейс «sq» и высокоуровневые API пока не стабилизированы и дорабатываются. Из ограничений, которые планируются устранить в дальнейших выпусках, отмечается реализация сервисов для хранения закрытых и открытых ключей, поддержка незашифрованных (cleartext) цифровых подписей и возможность использования регулярных выражений для определения заслуживающих доверия подписей.

Источник: https://www.opennet.ru/opennews/art.shtml?num=54272

Добавить комментарий