Ինչու գաղտնագրված VPN փաթեթը կարող է ավելի քիչ արժենալ, քան դուք եք կարծում
Եւս մեկ գաղտնագրային պիտակը եւս մեկ աշխատանքի միավոր չէ։ Համեմատեք ամբողջ ուղին՝ AEAD կառուցվածքը, CPU-ի աջակցությունը, բուֆերացումը եւ համաձայնեցված տվյալների ռեժիմը։
Երկու պրոֆիլ փորձարկվում է նույն դարպասի վրա՝ մեկը գաղտնագրմամբ, մյուսը՝ առանց, եւ գաղտնագրվածը ավելի դանդաղ չէ։ Երբեմն այն ավելի արագ է, ինչը սովորաբար երկար վիճաբանություն է առաջացնում այն մասին՝ թեստը ճիշտ է անցկացվել, թե ոչ։ Արդյունքը հավատալի է, որովհետեւ փաթեթի արժեքը կոնֆիգուրացիայի գաղտնագրային բառերի քանակը չէ։ Այն գործողությունների ամբողջությունն է, որ կատարում է իրականացումը՝ իր ունեցած սարքաշարի վրա, իր ընտրած բուֆերի դասավորությամբ։
Ախտանիշը՝ դանդաղը գաղտնագրված պրոֆիլը չէ
Ենթադրենք՝ պատմական թեստը AEAD գաղտնագիրը համեմատում է «առանց գաղտնագրման» ռեժիմի հետ, որը դեռեւս յուրաքանչյուր փաթեթի համար առանձին նույնականացման կոդ է հաշվարկում։ Երկրորդ պրոֆիլը թաքցնում է բեռնվածքի բովանդակությունը, բայց պահում է փաթեթային հեշ, եւ այնպիսի պրոցեսորի վրա, որտեղ այդ հեշի արագացում չկա, այն կարող է ավելի թանկ արժենալ, քան այն ինտեգրված կառուցվածքը, որը պետք է հաղթահարեր։
Կոնֆիգուրացիայի պիտակը ասում է «գաղտնագրում», եւ պիտակը հենց այն է, ինչին նայում են համեմատությունների մեծ մասը։ Փաթեթի ուղին այլ բան է ասում՝ մեկ պրոֆիլը կատարում է միացյալ գործողություն, որի համար CPU-ն հրահանգներ ունի, իսկ մյուսը՝ առանձին գործողություն, որի համար չունի։ Միայն կոնֆիգուրացիայի ֆայլը կարդալը երբեք չի բացահայտի այդ տարբերությունը, որովհետեւ երկու գրառումներն էլ մեկ տողի տեսք ունեն։ Միայն համաձայնեցված ռեժիմը եւ դրա հետեւում գտնվող կոդի ուղին են բացատրում արդյունքը։
Սա է ամբողջ բացատրությունը, եւ այն չի պահանջում որեւէ պնդում, թե որ պրիմիտիվն է համընդհանուր առումով ավելի արագ։ Երկուսն էլ կարող են արագ լինել, երկուսն էլ՝ դանդաղ, եւ հերթականությունը կախված է մեքենայից ու կոդից։
Հաշվեք գործողություններ, ոչ պիտակներ
AEAD կառուցվածքը, ինչպես նկարագրում է RFC 5116-ը, իրականացմանը տալիս է մեկ ինտերֆեյս, որը վերադարձնում է գաղտնագրված տեքստը եւ պիտակը միասին։ AES-GCM-ը մեկ օրինակ է՝ հաշվիչի ռեժիմի գաղտնագրում՝ համակցված Galois իսկորոշիչի հետ։ Ինտերֆեյսը ամբողջականությունը անվճար չի դարձնում, այն համակցությունը լավ սահմանված է դարձնում, եւ հենց դա է թույլ տալիս իրականացմանը զույգը որպես մեկ միավոր օպտիմալացնել։
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
Սրանք մշակման ուրվանկարներ են, ոչ կոնֆիգուրացիայի խորհուրդ։ Առաջինը գաղտնիություն չունի, բայց միեւնույն է CPU է ծախսում իսկորոշման վրա, եւ հենց դրա համար «անջատիր գաղտնագրումը» «անջատիր գաղտնագրային աշխատանքը»-ի հոմանիշը չէ։
Երկրորդը կարող է ավելի էժան լինել, որովհետեւ պրոցեսորները հրահանգներ են տալիս երկու կեսի համար՝ AES փուլեր եւ Galois դաշտի օգտագործած առանց տեղափոխման բազմապատկում։ Գրադարանները նաեւ անկախ բուֆերները մշակում են զուգահեռ, ինչը հրահանգներին զբաղված է պահում հիշողության սպասելու փոխարեն։
Ինչ է իրականում հնարավոր դարձնում համաձայնեցված ռեժիմը
Community OpenVPN-ում AEAD տվյալների գաղտնագիրը նշանակում է, որ auth ընտրանքն այլեւս իր առանձին տվյալների ալիքի HMAC չի ներդրում։ Գաղտնագրման ընտրանքի տեղեկատուն նկարագրում է այդ շրջանակը, եւ հենց դա է պատճառը, որ տեքստային ֆայլում նմանատիպ թվացող երկու կոնֆիգուրացիաներ կարող են տարբերվել փաթեթային աշխատանքով։
Կարդացեք համաձայնեցված ռեժիմը, ոչ թե ցանկությունների ցանկը։ Թույլատրված գաղտնագրերի ցանկը եւ TLS փաթեթի անունը ձեզ չեն ասում, թե որ գործողություններն են կատարվում բեռնվածքի վրա, եւ հին cipher տողը կարող է չնկարագրել, թե ինչ է ընտրել ընթացիկ կապը։
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
Առաջին հրահանգը թվարկում է այն գաղտնագրերը, որոնք աջակցում է բինարը, ինչը հնարավորությունների ցանկ է, ոչ թե համաձայնեցված արդյունք։ Երկրորդը ցույց է տալիս, թե սերվերն իրականում ինչ է խնդրում։ Կապի մատյանն այն տեղն է, որտեղ հաստատվում է վերջնական ընտրությունը, որովհետեւ հաճախորդը կարող է ընկնել մի բանի վրա, ինչ սերվերը թույլ է տալիս, բայց ոչ ոք չի նկատի ունեցել։
Չափեք այն ծանրաբեռնվածությունը, որն իրականում գործարկում եք
Գաղտնագրային միկրոչափումը չափում է պրիմիտիվն իր իսկ պայմաններում։ VPN փոխանցումը նաեւ պատճենում է բուֆերներ, պլանավորում է թելեր կամ ընդհատումներ, ստուգում է քաղաքականություն եւ անցնում ցանցով։ Այդ մասերը հաճախ գերակշռում են, եւ դրա համար ավելի արագ պրիմիտիվը միշտ չէ, որ ավելի արագ թունել է տալիս։
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Այս երկու հրահանգները ձեզ մոտավոր տեղական համեմատություն են տալիս ձեր առջեւի մեքենայի պրիմիտիվների վերաբերյալ, եւ նրանք ազնիվ են, որ միկրոչափումներ են։ Նրանք ոչինչ չեն ասում ձեր թունելի թողունակության մասին, եւ երբեք չպետք է այդպես մեջբերվեն։
Ապա չափեք այն ծանրաբեռնվածությունը, որ կարեւոր է՝ մնացած ամեն ինչ անփոփոխ պահելով՝ նույն վերջնակետը, նույն փաթեթի չափերը, նույն տրանսպորտը, նույն սեղմման քաղաքականությունը։ Եթե պրոֆիլի փոփոխությունը փոխել է նաեւ տրանսպորտը կամ մշակման տեղը, ապա արդյունքը նկարագրում է այդ փաթեթը, ոչ թե գաղտնագրությունը։
Նպատակը նույնպես աչքի առաջ պահեք։ Ազատ գաղտնագրային հզորություն ունեցող տվյալների ուղին կարող է դեռեւս սահմանափակված լինել ուշացումով, որովհետեւ հավելվածը սպասում է ետ ու առաջ ուղեւորությունների, եւ զանգվածային հզորության շահույթը չի ուղղում շատախոս արձանագրությունը։ Չափեք աջակցվող եւ քաղաքականությամբ հաստատված կոնֆիգուրացիան որպես ամբողջություն, եւ «քիչ արկղերը պետք է ավելի արագ լինեն» պնդումը վերաբերվեք որպես այն վարկածի, որն այն է։ Օգտակար հարցը ոչ թե այն է, թե գաղտնագրումը ինչ-որ բան արժե, այլ այն, թե արժեքը երեւում է այն չափման մեջ, որն իրոք կարեւոր է ձեզ համար։