Додадена е нова имплементација на VPN WireGuard во базата на кодови на FreeBSD

Изворното дрво на FreeBSD е ажурирано со нова имплементација на VPN WireGuard, базирана на кодот на модулот на јадрото, заеднички произведен од основните развојни тимови на FreeBSD и WireGuard со придонеси од Џејсон А. Доненфелд, автор на VPN WireGuard и Џон Х. Болдвин). добро познат развивач на GDB и FreeBSD, кој имплементираше поддршка за SMP и NUMA во кернелот FreeBSD во раните 2000-ти. Откако двигателот ќе биде прифатен во FreeBSD (sys/dev/wg), неговиот развој и одржување отсега натаму ќе се вршат во складиштето на FreeBSD.

Пред да се прифати кодот, беше спроведен целосен преглед на промените со поддршка на Фондацијата FreeBSD, при што беше анализирана и интеракцијата на драјверот со останатите потсистеми на кернелот и можноста за користење криптографски примитиви обезбедени од кернелот беше оценета.

За да се користат криптографските алгоритми што ги бара возачот, API-то на крипто-потсистемот на кернелот FreeBSD беше проширен, на кој беше додаден темперамент што овозможува користење на алгоритми кои не се поддржани во FreeBSD преку стандардниот крипто-API, користејќи ја имплементацијата на неопходни алгоритми од библиотеката либсодиум. Од алгоритмите вградени во драјверот, останува само кодот за пресметување на хашовите на Blake2, бидејќи имплементацијата на овој алгоритам обезбеден во FreeBSD е поврзана со фиксна големина на хашот.

Покрај тоа, за време на процесот на преглед, беше извршена оптимизација на кодот, што овозможи да се зголеми ефикасноста на распределбата на оптоварувањето на повеќејадрените процесори (обезбедено е униформно балансирање на доделувањето на задачите за шифрирање и декрипција на пакети на јадрата на процесорот). Како резултат на тоа, трошоците при обработката на пакетите беа блиски до оние на имплементацијата на двигателот на Linux. Кодот, исто така, обезбедува можност за користење на драјверот ossl за да се забрзаат операциите за шифрирање.

За разлика од претходниот обид да се интегрира WireGuard во FreeBSD, новата имплементација ја користи стандардната алатка wg, наместо изменета верзија на ifconfig, што овозможува унифицирање на конфигурацијата на Linux и FreeBSD. Услужната алатка wg, како и драјверот, се вклучени во изворниот код на FreeBSD, што беше овозможено со промена на лиценцата за кодот wg (шифрата сега е достапна под лиценците MIT и GPL). Последниот обид да се вклучи WireGuard во FreeBSD беше направен во 2020 година, но заврши со скандал, како резултат на што веќе додадениот код беше отстранет поради низок квалитет, невнимателна работа со бафери, употреба на никулци наместо проверки, нецелосна имплементација на протоколот и повреда на GPL лиценцата.

Да ве потсетиме дека VPN WireGuard е имплементиран врз основа на современи методи за шифрирање, обезбедува многу високи перформанси, лесен е за користење, без компликации и се докажа во голем број големи распоредувања кои обработуваат голем обем на сообраќај. Проектот се развива од 2015 година и претрпе ревизија и формална верификација на користените методи за шифрирање. WireGuard го користи концептот на рутирање на клучот за шифрирање, кој вклучува прикачување приватен клуч на секој мрежен интерфејс и негово користење за врзување на јавните клучеви.

Јавните клучеви се разменуваат за да се воспостави врска на сличен начин како SSH. За да се преговараат клучевите и да се поврзете без да се извршува посебен демон во корисничкиот простор, се користи механизмот Noise_IK на Noise Protocol Framework, слично на одржувањето на authorized_keys во SSH. Преносот на податоците се врши преку енкапсулација во UDP пакети. Поддржува менување на IP адресата на VPN серверот (роаминг) без исклучување на врската со автоматска реконфигурација на клиентот.

Енкрипцијата ја користи шифрата за поток ChaCha20 и алгоритмот за автентикација на пораки Poly1305 (MAC), развиен од Даниел Џ. Бернштајн, Тања Ланге и Питер Швабе. ChaCha20 и Poly1305 се позиционирани како побрзи и побезбедни аналози на AES-256-CTR и HMAC, чија софтверска имплементација овозможува постигнување на фиксно време на извршување без употреба на специјална хардверска поддршка. За генерирање на заеднички таен клуч, елиптичната крива Diffie-Hellman протокол се користи во имплементацијата Curve25519, исто така предложена од Даниел Бернштајн. Алгоритмот BLAKE2s (RFC7693) се користи за хаширање.

Извор: opennet.ru

Додадете коментар