Linux: fjarlægir læsilaug /dev/random

Vitað er að /dev/random, dulmálslega öruggur gervi-handahófsnúmeraframleiðandi (CSPRNG), hefur eitt pirrandi vandamál: að loka. Þessi grein útskýrir hvernig þú getur leyst það.

Undanfarna mánuði hefur slembitölumyndunaraðstaðan í kjarnanum verið endurunnin lítillega, en vandamál í þessu undirkerfi hafa verið leyst í gegnum hið víðtæka tímarammi. Mest síðustu breytingar voru gerðar til að koma í veg fyrir að getrandom() kerfiskallið lokaðist í langan tíma þegar kerfið ræsir, en undirliggjandi ástæðan fyrir því var lokunarhegðun handahófshópsins. Nýlegur plástur hefði fjarlægt þessa laug og búist hefði verið við að hún stefndi í átt að aðalkjarnanum.

Andy Lutomirski birti þriðju útgáfuna af plástrinum í lok desember. Hann leggur sitt af mörkum "tvær helstu merkingarbreytingar á handahófi Linux API". Plásturinn bætir nýjum GRND_INSECURE fána við getrandom() kerfiskallið (þó að Lutomirsky vísi til þess sem getentropy(), sem er útfært í glibc með því að nota getrandom() með föstum fánum); þetta flagg veldur því að símtalið skilar alltaf því gagnamagni sem óskað er eftir, en án þess að tryggja að gögnin séu af handahófi. Kjarninn mun einfaldlega gera sitt besta til að framleiða bestu handahófskenndu gögnin sem hann hefur á hverjum tíma. „Það besta sem hægt er að gera er líklega að kalla þetta „ÓÖRYG“ (óöruggt) til að koma í veg fyrir að þetta API sé notað fyrir hluti sem þarfnast öryggis."

Plástrarnir fjarlægja einnig lokunarlaugina. Kjarninn heldur nú úti tveimur handahófskenndum gagnasafnum, annar samsvarar /dev/random og hinn /dev/urandom, eins og lýst er í þessu grein 2015. Lokunarlaugin er laugin fyrir /dev/random; les fyrir það tæki mun loka (sem þýðir nafn þess) þar til "nógu" óreiðu hefur verið safnað úr kerfinu til að fullnægja beiðninni. Frekari lestur úr þessari skrá er einnig lokaður ef það er ekki næg óreiðu í lauginni.

Að fjarlægja læsingarpottinn þýðir að lestur úr /dev/random hegðar sér eins og getrandom() með fánum stillt á núll (og breytir GRND_RANDOM fánanum í noop). Þegar dulmáli handahófsnúmeraframleiðandinn (CRNG) hefur verið frumstilltur, mun lestur úr /dev/random og kalla á getrandom(...,0) ekki loka og mun skila umbeðnu magni af handahófi gagna.

Lutomirsky segir: „Ég tel að Linux-lokunarlaugin sé orðin úrelt. CRNG Linux býr til framleiðsla sem er nógu góð til að jafnvel vera notuð fyrir lykilframleiðslu. Lokunarlaugin er ekki sterkari í neinum efnislegum skilningi og krefst mikillar innviða sem hafa vafasamt gildi til að standa undir henni.“

Breytingarnar voru gerðar með það að markmiði að tryggja að núverandi forrit yrðu í raun ekki fyrir áhrifum og í raun væru færri vandamál með langa bið eftir hlutum eins og GnuPG lyklaframleiðslu.

„Þessir þættir mega ekki trufla neina núverandi dagskrá. /dev/urandom helst óbreytt. /dev/random blokkar samt strax við ræsingu, en það lokar minna en áður. getentropy() með núverandi fánum mun skila niðurstöðu sem er jafn hentug í hagnýtum tilgangi og áður."

Lutomirsky tók fram að það væri enn opin spurning hvort kjarninn ætti að gefa upp svokallaðar „sannar slembitölur,“ sem er það sem blokkandi kjarninn átti að gera að vissu marki. Hann sér aðeins eina ástæðu fyrir þessu: „fylgni við staðla stjórnvalda. Lutomirsky stakk upp á því að ef kjarninn myndi útvega þetta ætti það að vera gert í gegnum allt annað viðmót, eða það ætti að færa það inn í notendarými, sem gerir notandanum kleift að sækja hrá atburðasýni sem hægt væri að nota til að búa til slíkan láshóp.

Stephan Müller lagði til að sett hans plástra fyrir Linux Random Number Generator (LRNG) (nú útgáfa 26 gefin út) gæti verið leið til að gefa upp sannar slembitölur fyrir forrit sem þurfa á því að halda. LRNG er „fullkomlega í samræmi við SP800-90B leiðbeiningar um óreiðuheimildir sem notaðar eru til að búa til handahófskennda bita,“ sem gerir það að lausn á staðlavandamáli stjórnvalda.
Matthew Garrett mótmælti hugtakinu „sönn handahófskennd gögn“ og benti á að tækin sem tekin voru sýni gætu í grundvallaratriðum verið nægilega nákvæm til að gera þau fyrirsjáanleg: „Við erum ekki að taka sýnishorn af skammtaatburðum hér.

Müller svaraði því til að hugtakið komi frá þýska staðlinum AIS 31 til að lýsa slembitöluframleiðanda sem framleiðir aðeins niðurstöðu "á sama hraða og undirliggjandi hávaðagjafi framleiðir óreiðu."

Til hliðar við orðalagsmun, að hafa læsingarlaug eins og lagt er til í LRNG plástrunum mun einfaldlega leiða til ýmissa vandamála, að minnsta kosti ef aðgangur er að honum án réttinda.

Eins og Lutomirsky sagði: „Þetta leysir ekki vandamálið. Ef tveir mismunandi notendur keyra heimskuleg forrit eins og gnupg munu þeir bara tæma hver annan. Ég sé að það eru tvö meginvandamál með /dev/random eins og er: það er viðkvæmt fyrir DoS (þ.e. auðlindaþurrð, skaðleg áhrif eða eitthvað álíka), og þar sem engin réttindi eru nauðsynleg til að nota það, þá er það einnig viðkvæmt fyrir misnotkun. Gnupg hefur rangt fyrir sér, þetta er algjört hrun. Ef við bætum við nýju óforréttindaviðmóti sem gnupg og svipuð forrit munu nota, munum við tapa aftur."

Mueller tók fram að viðbót getrandom() mun nú leyfa GnuPG að nota þetta viðmót, þar sem það mun veita nauðsynlega tryggingu fyrir því að laugin hafi verið frumstillt. Byggt á viðræðum við GnuPG þróunaraðila Werner Koch, telur Mueller að ábyrgðin sé eina ástæðan fyrir því að GnuPG les núna beint úr /dev/random. En ef það er óforréttindaviðmót sem er næmt fyrir afneitun á þjónustu (eins og /dev/random er í dag), heldur Lutomirsky því fram að það verði misnotað af sumum forritum.

Theodore Yue Tak Ts'o, þróunaraðili slembitöluundirkerfis Linux, virðist hafa skipt um skoðun varðandi þörfina fyrir lokunarlaug. Hann sagði að með því að fjarlægja þessa laug myndi í raun losna við þá hugmynd að Linux væri með sannan slembitölugjafa (TRNG): "þetta er ekki bull, þar sem þetta er nákvæmlega það sem *BSD hefur alltaf gert."

Hann hefur einnig áhyggjur af því að útvegun TRNG vélbúnaðar muni einfaldlega þjóna sem agn fyrir forritara og telur að í raun, miðað við mismunandi gerðir vélbúnaðar sem styður Linux, sé ómögulegt að tryggja TRNG í kjarnanum. Jafnvel getan til að vinna með búnaði eingöngu með rótarréttindi mun ekki leysa vandamálið: „Forritaframleiðendur tilgreina að forritið þeirra sé sett upp sem rót í öryggisskyni, þannig að þetta er eina leiðin sem þú getur fengið aðgang að „mjög góðu“ handahófskenndu tölunum.“

Mueller spurði hvort Cao hefði hætt við framkvæmd stöðvunarlaugarinnar sem hann sjálfur hafði lengi lagt til. Cao svaraði því til að hann ætli að taka plástra Lutomirsky og er virkur á móti því að bæta við lokunarviðmóti aftur í kjarnann.

„Kjarninn getur ekki gefið neinar tryggingar fyrir því hvort hávaðagjafinn hafi verið rétt skilgreindur. Það eina sem GPG eða OpenSSL forritari getur fengið er óljós tilfinning um að TRUERANDOM sé „betra“ og þar sem þeir vilja meira öryggi munu þeir án efa reyna að nota það. Á einhverjum tímapunkti verður því lokað og þegar einhver annar snjallnotandi (kannski dreifingarsérfræðingur) setur það inn í init scriptið og kerfin hætta að virka, þurfa notendur aðeins að kvarta til Linus Torvalds sjálfs.“

Cao er einnig talsmaður þess að gefa dulmálsfræðingum og þeim sem raunverulega þurfa TRNG leið til að uppskera eigin óreiðu í notendarými til að nota eins og þeim sýnist. Hann segir að söfnun óreiðu sé ekki ferli sem hægt er að framkvæma af kjarnanum á öllum mismunandi vélbúnaði sem hann styður, né getur kjarninn sjálfur áætlað magn óreiðu sem mismunandi uppsprettur veita.

„Kjarninn ætti ekki að blanda saman mismunandi hávaðagjöfum og hann ætti svo sannarlega ekki að vera að reyna að segjast vita hversu marga bita af óreiðu hann er að fá þegar hann er að reyna að spila einhvers konar „twitchy entropy game“ á svívirðilega einföldum örgjörva arkitektúr fyrir neytendanotendur. IOT/Embedded tilvik þar sem allt er í ósamræmi við einn master oscillator, þar sem engin CPU kennsla er til að endurraða eða endurnefna skrá o.s.frv.“

„Það má tala um að útvega verkfæri sem reyna að gera þessa útreikninga, en slíkt þarf að gera á vélbúnaði hvers notanda, sem er einfaldlega ekki hagkvæmt fyrir flesta dreifingarnotendur. Ef þetta er aðeins ætlað dulritunarfræðingum, þá láttu það gerast í notendarými þeirra. Og við skulum ekki einfalda GPG, OpenSSL o.s.frv. þannig að allir segi "við viljum "sanna handahófi" og sættum okkur ekki við minna." Við getum talað um hvernig við útvegum dulritunarfræðingum viðmót þannig að þeir geti fengið þær upplýsingar sem þeir þurfa með því að fá aðgang að aðal hávaðauppsprettunum, aðskildum og nefndum, og kannski getur hávaðagjafinn á einhvern hátt auðkennt sig við bókasafn eða notendarýmisforrit.“

Nokkrar umræður urðu um hvernig slíkt viðmót gæti litið út, þar sem það gæti til dæmis haft öryggisáhrif fyrir suma atburði. Cao benti á að lyklaborðsskannakóðum (þ.e. ásláttur) sé blandað saman í laug sem hluti af óreiðusöfnun: "Að koma þessu inn í notendarými, jafnvel í gegnum forréttindakerfissímtal, væri vægast sagt óskynsamlegt." Það er vel mögulegt að aðrar tímasetningar viðburða geti skapað einhvers konar upplýsingaleka í gegnum hliðarrásir.

Svo það lítur út fyrir að langvarandi vandamál með slembitöluundirkerfi Linux sé á leiðinni að lausn. Breytingarnar sem slembitöluundirkerfið hefur gengið í gegnum nýlega hafa í raun aðeins leitt til DoS vandamála við notkun þess. Nú eru til skilvirkar leiðir til að fá bestu handahófskenndu tölurnar sem kjarninn getur veitt. Ef TRNG er enn æskilegt á Linux, þá þarf að taka á þessum galla í framtíðinni, en líklegast verður þetta ekki gert innan kjarnans sjálfs.

Nokkrar auglýsingar 🙂

Þakka þér fyrir að vera hjá okkur. Líkar þér við greinarnar okkar? Viltu sjá meira áhugavert efni? Styðjið okkur með því að leggja inn pöntun eða mæla með því við vini, cloud VPS fyrir forritara frá $4.99, einstök hliðstæða upphafsþjóna, sem var fundið upp af okkur fyrir þig: Allur sannleikurinn um VPS (KVM) E5-2697 v3 (6 kjarna) 10GB DDR4 480GB SSD 1Gbps frá $19 eða hvernig á að deila netþjóni? (fáanlegt með RAID1 og RAID10, allt að 24 kjarna og allt að 40GB DDR4).

Dell R730xd 2x ódýrari í Equinix Tier IV gagnaveri í Amsterdam? Aðeins hér 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 sjónvarp frá $199 í Hollandi! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - frá $99! Lestu um Hvernig á að byggja upp infrastructure Corp. flokki með notkun Dell R730xd E5-2650 v4 netþjóna að verðmæti 9000 evrur fyrir eyri?

Heimild: www.habr.com

Bæta við athugasemd