Միջուկի պատահականության սպառումը դանդաղ 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 5

OpenSSL-ի գեներատորի փաստաթղթերը նկարագրում են, թե ինչպես է այդ հիերարխիան ստանում մուտք և երբ է տեղի ունենում վերասերմավորումը, ինչը շատ ավելի նեղ պնդում է, քան առասպելը, և ճիշտ է միայն այդ իրականացման համար։ Էնտրոպիայի դեմոնը համընդհանուր արագության վերանորոգում չէ, և այն տեղադրելը՝ հաշվիչը բարձրացնելու համար, փոխում է անվտանգության ենթադրություն՝ առանց ուշացում ցույց տալու։ Թողունակության համար հետևեք տվյալների ուղուն. մեկ հագեցած թել, վերահաղորդումներ, արտաքին կորուստ և հերթերի կորուստ յուրաքանչյուրը տարբեր ուղղում է պահանջում, և բուֆերի չափերը լուծում են սոքեթի բուֆերացումը՝ իրենց սեփական հերթային ապացույցներով։

Առնչվող հոդվածներ