Արդյո՞ք VPN-ում վերջանում է էնտրոպիան. ինչ է իրականում ցույց տալիս entropy_avail-ը
Բեռնարկման պահին կանգ առնելը և դանդաղ կայացած թունելը տարբեր խափանումներ են։ Կարդացեք փուլը, հաշվիչի իրական իմաստը և հերթը, նախքան պատահականությանը մեղադրելը։
Միջուկի պատահականության սպառումը դանդաղ VPN-ի համար գրավիչ բացատրություն է և գրեթե միշտ սխալ՝ այն ախտանիշի համար, որի մասին մարդիկ հայտնում են։ Պատահական ելքին սպասող հոսթը կանգ է առնում որոշակի պահին, սովորաբար բեռնարկման սկզբում կամ բանալիների մշակման ընթացքում։ Այն թունելը, որը արագ միանում է և հետո դանդաղ փոխանցում իրականում նկարագրում է թողունակությունը։ Առանձնացրեք այդ երկու դիտարկումները, նախքան դեմոն տեղադրելը՝ մի թիվ շտկելու համար, որը դեռ չեք ավարտել կարդալ։
Ինչու է առասպելը պահպանվում
Երկու խնդիրներն էլ իրական են և հեռվից նման են։ Թարմ բեռնված վիրտուալ մեքենայի վրա մեկնարկային կանգերը իսկապես լինում են, և դանդաղ կայացած թունելը նույնքան իրական է։ Սխալը ենթադրելն է, թե երկրորդը պայմանավորված է առաջինով, քանի որ գաղտնագրությունը հայտնվում է երկու պատմություններում էլ։ Ոչինչ գաղտնագրում բառի մեջ չի նշանակում, որ յուրաքանչյուր փոխանցված բայթ սպառում է միջավայրի աղմուկի նոր բայթ։
Այս գեներատորներն այդպես չեն աշխատում։ Գաղտնագրային գրադարանը պահում է սերմով գեներատոր և դրանից վերցնում ելք՝ վերասերմավորելով իր սեփական քաղաքականությամբ, ուստի թանկ պահը սերմավորումն է, ոչ թե հաստատուն փոխանցումը։
Ինչ է անում գեներատորը յուրաքանչյուր փաթեթի համար
OpenSSL 3-ում լռելյայն գեներատորի հիերարխիան կառուցվում է DRBG օրինակներից, որոնք սերմավորում և վերասերմավորում են ըստ կոնֆիգուրացիայի և վիճակի։ OpenVPN 2.6-ում AEAD տվյալների ուղին իր nonce-ը ստանում է փաթեթի հերթական համարից՝ զուգակցված յուրաքանչյուր սեսիայի անուղղակի արժեքի հետ, մինչդեռ ավելի հին CBC ուղին յուրաքանչյուր փաթեթի համար վերցնում է կեղծպատահական IV։ Ոչ մի օրինաչափություն չի աջակցում այն կանոնին, թե գիգաբայթ տեղափոխելը սպառում է գիգաբայթ թարմ միջուկային աղմուկ։ Երկուսն էլ աջակցում են այն մտքին, որ բանալիների գեներացումն ու ձեռքսեղմումներն են այն տեղը, որտեղ սերմավորումը կարևոր է։
CBC դեպքն արժե անվանել, որովհետև այն նման է առասպելին և այդպիսին չէ. նրա յուրաքանչյուր փաթեթի IV-ը գալիս է գրադարանի գեներատորից՝ գրադարանի սեփական վերասերմավորման գրաֆիկով, երբեք յուրաքանչյուր փաթեթի համար միջուկային կանչից։ Երբ ինչ-որ մեկը մեջբերում է մեկ բայթի էնտրոպիայի արժեքը, հարցրեք, թե գրադարանի որ տարբերակն ու որ կոդի ուղին են չափել։
Որտեղ է իրականում երևում սպասումը
Ժամանակի դրոշմանիշները դրեք փուլերի շուրջ, ոչ թե սեսիայի. մեկնարկ, նույնականացում, բանալու փոփոխություն և փոխանցում։ Թունելի օգտագործելի դառնալուց առաջ սպասումը տարբեր բողոք է, քան ցածր կայուն արագությունը, և դրանցից միայն մեկն է մատնանշում պատահականությանը։ Linux-ում սովորական getrandom() հարցումը կարող է արգելափակվել մինչև միջուկի պատահական աղբյուրի սկզբնավորումը, ինչի պատճառով այս խնդրի բեռնարկման տարբերակն իրական է վիրտուալ մեքենաներում և ներկառուցված տախտակներում, որոնք սկզբում քիչ բան ունեն լողավազանը կերակրելու համար։
| Փուլ | Ինչ գործարկել | Ընթերցում, որը նշանակում է սպասում | Ընթերցում, որը նշանակում է թողունակություն |
|---|---|---|---|
| Բեռնարկում, ցանկացած թունելից առաջ | systemd-analyze critical-chain | միավոր, որը վայրկյաններ է նստում նախքան թունելի մեկնարկը | կիրառելի չէ, դեռ ոչինչ չի փոխանցվում |
| Ձեռքսեղմում | journalctl -u openvpn-server@server -b | երկար բացվածք նախքան սկզբնավորման հաջորդականության ավարտը | կիրառելի չէ, թունելը վերևում չէ |
| Կայացած փոխանցում | ss -tin կողքին sar -n DEV 1 | արգելափակված պրոցես՝ դատարկ սոքեթային հերթերով | լցված հերթեր, վերահաղորդումներ և մեկ զբաղված թել |
Երկու էժան հրամաններ պատկանում են այդ հավաքածուի սկզբին, և դրանք լուծում են հեշտ հարցերը նախքան աղյուսակի կարիքը։ Այն հաշվիչը, որը նրանք կարդում են, էնտրոպիայի հաշվառում է, ոչ թե թողունակության չափիչ, և մեկ պատկեր չի կարող ցույց տալ, որ պրոցեսը արգելափակված է, որքան է սպասել կամ որ ինտերֆեյսն են կանչում նրա գրադարանի ֆունկցիաները։ Վերականգնումից հետո վերցված նմուշը սովորաբար ընդհանրապես բաց է թողնում կանգը, ուստի միջուկի տարբերակը պահեք ընթերցման կողքին։
cat /proc/sys/kernel/random/entropy_avail
uname -rՀամապատասխանեցրեք ուղղումը ընթերցմանը
Եթե միջուկն իսկապես սպասում է սկզբնավորմանը, նայեք հարթակի աջակցվող սերմավորման ուղուն, ոչ թե թունելին։ Վիրտուալ մեքենային կարելի է տալ հոսթի կողմից տրամադրված պատահական սարք, օրինակ՝ virtio-rng, և պատկերի նախապատրաստումը կարևոր է, որովհետև շատ հյուրերի մեջ անփոփոխ պատճենված սերմը անկախ սկզբնավորում չէ։ Եթե գրադարանը բեռնարկումից հետո հաղորդում է սերմավորման ձախողումների մասին, ուսումնասիրեք նրա կարգավորված աղբյուրն ու մատակարարի վարքը՝ միջուկի կարգավորումները փոխելու փոխարեն։
ss -tin dst 203.0.113.7
sar -n DEV 1 5OpenSSL-ի գեներատորի փաստաթղթերը նկարագրում են, թե ինչպես է այդ հիերարխիան ստանում մուտք և երբ է տեղի ունենում վերասերմավորումը, ինչը շատ ավելի նեղ պնդում է, քան առասպելը, և ճիշտ է միայն այդ իրականացման համար։ Էնտրոպիայի դեմոնը համընդհանուր արագության վերանորոգում չէ, և այն տեղադրելը՝ հաշվիչը բարձրացնելու համար, փոխում է անվտանգության ենթադրություն՝ առանց ուշացում ցույց տալու։ Թողունակության համար հետևեք տվյալների ուղուն. մեկ հագեցած թել, վերահաղորդումներ, արտաքին կորուստ և հերթերի կորուստ յուրաքանչյուրը տարբեր ուղղում է պահանջում, և բուֆերի չափերը լուծում են սոքեթի բուֆերացումը՝ իրենց սեփական հերթային ապացույցներով։