Разработчики 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.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.