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

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

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

Sequoia представляет утилиту командной строки sq с поддержкой субкоманд в стиле Git и два варианта API — низкоуровневый и высокоуровневый. Имеются обвязки для языков Си и Python. Поддерживается большинство возможностей, описанных в стандарте OpenPGP, для шифрования, расшифровки, создания и проверки цифровых подписей. Из расширенных возможностей отмечается поддержка верификации по отдельно поставляемым цифровым подписям (detached signature), адаптация для интеграции с пакетными менеджерами (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.

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