VPN-ի նոր ներդրումը՝ WireGuard-ը, ավելացվել է FreeBSD կոդերի բազայում:

FreeBSD աղբյուրի ծառը թարմացվել է VPN WireGuard-ի նոր ներդրմամբ՝ հիմնված միջուկի մոդուլի կոդի վրա, որը համատեղ արտադրվել է հիմնական FreeBSD և WireGuard զարգացման թիմերի կողմից՝ Ջեյսոն Ա. Դոնենֆելդի՝ VPN WireGuard-ի հեղինակի և Ջոն Հ. Բալդուինի ներդրումներով): GDB-ի և FreeBSD-ի հայտնի մշակող, ով 2000-ականների սկզբին իրականացրել է SMP-ի և NUMA-ի աջակցություն FreeBSD միջուկում: Այն բանից հետո, երբ վարորդն ընդունվի FreeBSD-ում (sys/dev/wg), դրա մշակումն ու սպասարկումն այսուհետ կիրականացվեն FreeBSD պահոցում:

Մինչ կոդի ընդունումը, FreeBSD հիմնադրամի աջակցությամբ իրականացվել է փոփոխությունների ամբողջական վերանայում, որի ընթացքում վերլուծվել է նաև վարորդի փոխազդեցությունը միջուկի մնացած ենթահամակարգերի հետ և միջուկի կողմից տրամադրված կրիպտոգրաֆիկ պրիմիտիվների օգտագործման հնարավորությունը։ գնահատվել է.

Վարորդի կողմից պահանջվող գաղտնագրման ալգորիթմներն օգտագործելու համար ընդլայնվել է FreeBSD միջուկի կրիպտոենթահամակարգի API-ն, որին ավելացվել է զրահ, որը թույլ է տալիս օգտագործել FreeBSD-ում չաջակցվող ալգորիթմները ստանդարտ կրիպտո-API-ի միջոցով՝ օգտագործելով անհրաժեշտ ալգորիթմներ լիբսոդիումի գրադարանից: Վարորդի մեջ ներկառուցված ալգորիթմներից մնացել է միայն Blake2 հեշերի հաշվարկման կոդը, քանի որ FreeBSD-ում ներկայացված այս ալգորիթմի իրականացումը կապված է ֆիքսված հեշի չափի հետ:

Բացի այդ, վերանայման գործընթացում իրականացվել է կոդի օպտիմիզացում, ինչը հնարավորություն է տվել բարձրացնել բազմամիջուկ պրոցեսորների վրա բեռի բաշխման արդյունավետությունը (ապահովվել է CPU միջուկներին փաթեթների գաղտնագրման և վերծանման առաջադրանքների միատեսակ հավասարակշռում): Արդյունքում, փաթեթների մշակման ժամանակ ծախսերը մոտ էին 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-ում, որը նման է SSH-ում autorized_keys-ի պահպանմանը: Տվյալների փոխանցումն իրականացվում է UDP փաթեթներում encapsulation միջոցով: Այն աջակցում է VPN սերվերի IP հասցեի (ռոումինգ) փոփոխությանը՝ առանց կապը խզելու հաճախորդի ավտոմատ վերակազմավորմամբ:

Կոդավորումն օգտագործում է ChaCha20 հոսքի ծածկագիրը և Poly1305 հաղորդագրության վավերացման (MAC) ալգորիթմը, որը մշակվել է Դանիել Ջ. Բերնշտեյնի, Տանյա Լանգի և Պիտեր Շվաբեի կողմից: ChaCha20-ը և Poly1305-ը տեղակայված են որպես AES-256-CTR-ի և HMAC-ի ավելի արագ և անվտանգ անալոգներ, որոնց ծրագրային ներդրումը թույլ է տալիս հասնել ֆիքսված կատարման ժամանակ՝ առանց հատուկ ապարատային աջակցության ներգրավման: Համատեղ գաղտնի բանալի ստեղծելու համար օգտագործվում է Elliptic Curve Diffie-Hellman արձանագրությունը Curve25519 ներդրման մեջ, որը նույնպես առաջարկվել է Դանիել Բերնշտեյնի կողմից: Հեշինգի համար օգտագործվում է BLAKE2s ալգորիթմը (RFC7693):

Source: opennet.ru

Добавить комментарий