Разработчики VPN WireGuard представили новую криптографическую библиотеку Zinc

2 августа 2018 года

Для включения в основной состав ядра Linux предложены патчи с реализацией VPN-интерфейса от проекта WireGuard, который развивается последние три года, прошёл аудит применяемых методов шифрования и хорошо зарекомендовал себя в ряде крупных внедрений, обрабатывающих большие объёмы трафика. До сих пор WireGuard поставлялся в виде отдельного модуля к ядру, но сейчас разработчики считают, что проект достиг готовности для включения в основное ядро. WireGuard сочетает применение проверенных современных методов шифрования с предоставлением минималистичной реализации, очень быстрой, простой в использовании и лишенной усложнений. Подробнее о проекте можно прочитать в первом анонсе.

Обновлённая реализация WireGuard примечательна созданием новой криптографической библиотеки Zinc (Архивная копия от 9 ноября 2020 на Wayback Machine), в которую вынесены все применяемые проектом криптоалгоритмы. Отмечается, что при разработке создатели Zinc попытались избежать усложнений и на основе написанных для WireGuard криптографических примитивов подготовили решение, которое было бы меньше библиотеки, но больше просто набора файлов с кодом.

Zinc предлагает криптографический API, более минималистичный и низкоуровневый, чем текущее crypto API ядра. Zinc может дополнить текущий crypto API, предоставить основу для его реализации и со временем вытеснить его. Zinc предоставляет готовый к применению, протестированный и верифицированный набор криптографических примитивов, код которых собран в одном месте и представлен как lib/zinc/ (без выноса ассемблерного кода в arch/). Код оптимизирован для достижения высокой производительности и автоматически задействует инструкции SIMD для ускорения вычислений.

Из основных принципов построения нового API отмечается желание избежать лишних высокоуровневых абстракций, которые становятся источником проблем при некорректном использовании разработчиками. В Zinc предоставляется только простой набор готовых функций, которые можно применять только по прямому назначению без неоднозначных трактовок.

В текущем виде предлагаются следующие криптографические примитивы:

  • Потоковые шифры ChaCha20 и HChaCha20 (реализованы оптимизации для x86_64 SSSE3, x86_64 AVX-2, x86_64 AVX-512F, x86_64 AVX-512VL, ARM NEON, ARM64 NEON, MIPS);
  • Алгоритм аутентификации сообщений (MAC) Poly1305 (оптимизации x86_64, x86_64 AVX, x86_64 AVX-2, x86_64 AVX-512F, ARM NEON, ARM64 NEON, MIPS, MIPS64);
  • Протокол Диффи-Хеллмана на эллиптических кривых в реализации Curve25519, используемый для генерации совместного секретного ключа (оптимизации x86_64 BMI2, x86_64 ADX, ARM NEON);
  • Алгоритм хэширования BLAKE2s (RFC7693) (оптимизации x86_64 AVX, x86_64 AVX-512VL);
  • Механизмы аутентифицированного шифрования ChaCha20-Poly1305 и XChaCha20-Poly1305.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Разработчики VPN WireGuard представили новую криптографическую библиотеку Zinc», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.