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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!


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

Источник: https://habr.com/ru/company/selectel/blog/523980/


Интересные статьи

Интересные статьи

Публикуя перевод первой статьи из цикла материалов о реализации epoll, мы провели опрос, посвящённый целесообразности перевода продолжения цикла. Более 90% участников опроса высказались з...
Команда Rust рада объявить о новой версии Rust 1.46.0. Rust — это язык программирования, который позволяет каждому создавать надёжное и эффективное программное обеспечение. Если у ва...
Команда Rust опубликовала новый корректирующий выпуск Rust, 1.41.1. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если вы устано...
Представляем вашему вниманию перевод публикации о новой версии всеми любимого языка программирования Rust. Введение Команда разработчиков Rust рада сообщить о выпуске новой версии, 1.37.0. Rust...
Здравствуйте. Я уже давно не пишу на php, но то и дело натыкаюсь на интернет-магазины на системе управления сайтами Битрикс. И я вспоминаю о своих исследованиях. Битрикс не любят примерно так,...