Այսօր Լինուսը VPN ինտերֆեյսներով ցանցի հաջորդ մասնաճյուղը տեղափոխեց իր մոտ WireGuard- ը. Այս իրադարձության մասին հաղորդում է WireGuard փոստային ցուցակում:
Կոդերի հավաքումը նոր Linux 5.6 միջուկի համար ներկայումս շարունակվում է: WireGuard-ը նոր սերնդի արագ VPN է, որն իրականացնում է ժամանակակից գաղտնագրություն: Այն ի սկզբանե մշակվել է որպես գոյություն ունեցող VPN-ների ավելի պարզ և հարմար այլընտրանք: Հեղինակը կանադացի տեղեկատվական անվտանգության մասնագետ Ջեյսոն Ա. Դոնենֆելդն է։ 2018 թվականի օգոստոսին WireGuard գովասանքի արժանացավ Լինուս Տորվալդսի կողմից։ Մոտավորապես այդ ժամանակ սկսվեց VPN-ը Linux միջուկում ներառելու աշխատանքը: Գործընթացը մի փոքր ավելի երկար տեւեց։
«Ես տեսնում եմ, որ Ջեյսոնը պահանջել է ներգրավել WireGuard-ը միջուկում», - գրել է Լինուսը 2 թվականի օգոստոսի 2018-ին: — Կարո՞ղ եմ ևս մեկ անգամ հայտնել իմ սերը այս VPN-ի նկատմամբ և հույս ունենալ, որ շուտով միաձուլվի: Կոդը կարող է կատարյալ չլինել, բայց ես նայեցի դրան և համեմատած OpenVPN-ի և IPSec-ի սարսափների հետ՝ դա իսկական արվեստի գործ է»:
Չնայած Լինուսի ցանկությանը, միաձուլումը ձգձգվեց մեկուկես տարի։ Պարզվեց, որ հիմնական խնդիրը կապված է կրիպտոգրաֆիկ գործառույթների սեփականության իրականացման հետ, որոնք օգտագործվում էին կատարողականությունը բարելավելու համար: Երկարատև բանակցություններից հետո 2019 թվականի սեպտեմբերին դա տեղի ունեցավ փոխզիջումային որոշում է կայացվել թարգմանել պատչերը միջուկում հասանելի Crypto API ֆունկցիաներին, որոնց վերաբերյալ WireGuard մշակողները բողոքներ ունեն աշխատանքի և ընդհանուր անվտանգության ոլորտում: Բայց նրանք որոշեցին առանձնացնել WireGuard-ի բնիկ կրիպտո ֆունկցիաները առանձին ցածր մակարդակի Zinc API-ի և ի վերջո տեղափոխել դրանք միջուկ: Նոյեմբերին միջուկի մշակողները կատարեցին իրենց խոստումը և համաձայնեց փոխանցել կոդի մի մասը Zinc-ից հիմնական միջուկ: Օրինակ, Crypto API-ում ներառյալ WireGuard-ում պատրաստված ChaCha20 և Poly1305 ալգորիթմների արագ իրականացում:
Վերջապես, 9 թվականի դեկտեմբերի 2019-ին Դեյվիդ Ս. Միլլերը, որը պատասխանատու է Linux միջուկի ցանցային ենթահամակարգի համար, ընդունեց դեպի net-next մասնաճյուղ կարկատաններ WireGuard նախագծից VPN ինտերֆեյսի ներդրմամբ:
Եվ այսօր՝ 29 թվականի հունվարի 2020-ին, փոփոխությունները գնացին Linus՝ միջուկում ներառելու համար։
WireGuard-ի պահանջվող առավելությունները VPN այլ լուծումների նկատմամբ.
Հեշտ օգտագործման համար:
Օգտագործում է ժամանակակից ծածկագրություն՝ աղմուկի արձանագրության շրջանակ, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF և այլն:
Կոմպակտ, ընթեռնելի կոդ, ավելի հեշտ է ուսումնասիրել խոցելիությունը:
WireGuard-ի ողջ հիմնական տրամաբանությունը զբաղեցնում է 4000-ից պակաս կոդ, մինչդեռ OpenVPN-ն և IPSec-ը պահանջում են հարյուր հազարավոր տողեր:
«WireGuard-ը օգտագործում է գաղտնագրման բանալիների երթուղղման հայեցակարգը, որը ներառում է յուրաքանչյուր ցանցային ինտերֆեյսի մասնավոր բանալի կցումը և այն միմյանց միացնելու համար հանրային բանալիների օգտագործումը: Հանրային բանալիները փոխանակվում են SSH-ի նման կապ հաստատելու համար: Բանալիները բանակցելու և առանց օգտագործողի տարածքում առանձին դեյմոն գործարկելու համար միանալու համար Noise_IK մեխանիզմն է Աղմուկի արձանագրության շրջանակնման է SSH-ում authorized_keys-ի պահպանմանը: Տվյալների փոխանցումն իրականացվում է UDP փաթեթներում encapsulation միջոցով: Այն աջակցում է VPN սերվերի IP հասցեն (ռոումինգ) փոխելը, առանց կապը անջատելու հաճախորդի ավտոմատ վերակազմավորմամբ, - գրում Opennet.
Կոդավորման համար օգտագործվում է հոսքի ծածկագիրը ChaCha20 և հաղորդագրությունների վավերացման ալգորիթմ (MAC) Poly1305- ընախագծված Դանիել Բերնշտայնի կողմից (Daniel J. Bernstein), Տանյա Լանգեն և Պիտեր Շվաբեն։ ChaCha20-ը և Poly1305-ը դիրքավորվում են որպես AES-256-CTR-ի և HMAC-ի ավելի արագ և անվտանգ անալոգներ, որոնց ծրագրային ներդրումը թույլ է տալիս հասնել ֆիքսված կատարման ժամանակ՝ առանց հատուկ ապարատային աջակցության օգտագործման: Համատեղ գաղտնի բանալի ստեղծելու համար ներդրման ժամանակ օգտագործվում է էլիպսային կորի Diffie-Hellman արձանագրությունը Curve25519, առաջարկել է նաև Դանիել Բերնշտեյնը։ Հեշինգի համար օգտագործվող ալգորիթմն է BLAKE2s (RFC7693).
Կատարումը չափվել է օգտագործելով iperf3, ցույց է տալիս միջին արդյունքը 30 րոպեի ընթացքում:
Տեսականորեն, երբ ինտեգրվելով ցանցի կույտին, WireGuard-ը պետք է ավելի արագ աշխատի: Բայց իրականում դա պարտադիր չէ, որ տեղի ունենա միջուկում ներկառուցված Crypto API ծածկագրային գործառույթներին անցնելու պատճառով: Թերևս դրանցից ոչ բոլորն են դեռ օպտիմիզացված հայրենի WireGuard-ի կատարողական մակարդակին:
«Իմ տեսանկյունից, WireGuard-ը ընդհանուր առմամբ իդեալական է օգտագործողի համար: Ցածր մակարդակի բոլոր որոշումները ընդունվում են ճշգրտման մեջ, ուստի տիպիկ VPN ենթակառուցվածքի պատրաստման գործընթացը տևում է ընդամենը մի քանի րոպե: Գրեթե անհնար է խաթարել կազմաձևը. писали Habré-ում 2018 թ. - Տեղադրման գործընթացը մանրամասն նկարագրված պաշտոնական կայքում, ես կցանկանայի առանձին նշել գերազանց OpenWRT աջակցություն. Կոդի բազայի օգտագործման այս հեշտությունը և կոմպակտությունը ձեռք են բերվել բանալիների բաշխումը վերացնելու միջոցով: Չկա սերտիֆիկատների բարդ համակարգ և այս ամբողջ կորպորատիվ սարսափը. կարճ գաղտնագրման բանալիները բաշխվում են SSH ստեղների նման»:
WireGuard նախագիծը զարգանում է 2015 թվականից, այն ենթարկվել է աուդիտի և պաշտոնական ստուգում. WireGuard-ի աջակցությունը ինտեգրված է NetworkManager-ում և systemd-ում, իսկ միջուկի patches-ը ներառված է Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph և ALT բազային բաշխումների մեջ: