Недостигот на случајност во јадрото е привлечно објаснување за бавен 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 опишува како оваа хиерархија добива влез и кога се случува пресеменување, што е далеку потесна тврдња од митот и важи само за таа имплементација. Ентропискиот демон не е универзална брзинска поправка, а неговото инсталирање за да порасне бројач менува безбедносна претпоставка без да покаже доцнење. За пропусноста следете ја патеката на податоците: една заситена нишка, повторните испраќања, надворешниот губиток и паѓањето на редовите бараат секој своја поправка, а големините на баферот се занимаваат со баферирањето на сокетот со сопствени докази од редовите.

Поврзани статии