Представлен выпуск пакета Sequoia 0.20.0, предлагающего библиотеку функций и инструментарий командной стоки с реализацией стандартов OpenPGP (RFC-4880). Sequoia развивается тремя участниками проекта GnuPG, которые для повышения безопасности и надёжности кодовой базы решили создать новую свободную реализацию OpenPGP на языке Rust, предоставляющем средства для безопасной работы с памятью. Код проекта распространяется под лицензией GPLv2+.
Кроме повышения безопасности, в Sequoia также пытаются избавиться от недостатков GnuPG, которые без нарушения совместимости или существенной переработки кодовой базы невозможно устранить в основном проекте. Например, GnuPG имеет достаточно тесную связь между компонентами, что затрудняет внесение изменений, запутывает кодовую базу и мешает созданию полноценной системы unit-тестирования. Инструментарий командной строки gpupg не синхронизирован по функциональности с библиотекой функций и некоторые действия можно выполнить только при помощи утилиты.
Sequoia представляет утилиту командной строки sq с поддержкой субкоманд в стиле Git и два варианта API — низкоуровневый и высокоуровневый. Имеются обвязки для языков Си и Python. Поддерживается большинство возможностей, описанных в стандарте OpenPGP, для шифрования, расшифровки, создания и проверки цифровых подписей. Из расширенных возможностей отмечается поддержка верификации по отдельно поставляемым цифровым подписям, адаптация для интеграции с пакетными менеджерами (APT, RPM, cargo и т.п.), возможность ограничения подписей по пороговым значениям и времени.
Низкоуровневый API максимально близко воспроизводит возможности OpenPGP и некоторые связанные расширения, такие как поддержка ECC и элементы из черновика будущей редакции стандарта. Исключения составляют только устаревшие части спецификации, которые могут негативно повлиять на безопасность, например, поддержка хэшей MD5. Низкоуровневый API также поддерживает небуферизированную обработку сообщений. Низкоуровневый 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, Windows, macOS, Android и iOS. Имеется возможность использования предоставляемых платформами криптографических сервисов, таких как сопроцессоры для вычисления в изолированных анклавах. Для обеспечения дополнительной изоляции практикуется разделение по отдельным процессам сервисов, работающих с открытыми и закрытыми ключами. Например, в форме отдельного процесса развивается хранилище ключей. Для взаимодействия процессов используется протокол Cap’n Proto.
В новой версии добавлены низкоуровневый пакет sequoia-openpgp, программа sqv (замена gpgv) для верификации отсоединённых цифровых подписей (detached signature) и утилита sqop с реализацией интерфейса, не учитывающего состояние (Stateless OpenPGP CLI). До версии 1.46 подняты требования к языку Rust. Расширено применение системы непрерывной интеграции для проверки изменений и улучшен набор для тестирования совместимости с OpenPGP.
Источник: https://www.opennet.ru/opennews/art.shtml?num=53905