Nagu teada, on /dev/random, krĂŒptograafiliselt turvaline pseudojuhuslike arvude generaator (CSPRNG), ĂŒhe ebameeldiva probleemiga - takistustega. Selles artiklis kĂ€sitletakse, kuidas seda lahendada.
Viimase paari kuu jooksul on juhuslike arvude genereerimise vahendeid tuumas veidi ĂŒmber töötatud, kuid selle alamkĂ€su probleemide lahendamine on toimunud laiemates Viimased tehti selleks, et vĂ€ltida sĂŒsteemikutsu getrandom() pikaldast blokeerimist sĂŒsteemi kĂ€ivitamisel, kuid selle aluseks olid takistava juhusliku basseini kĂ€itumine. Hiljutine parandus eemaldas selle basseini ja oodati, et see suundub pĂ”hituuma.
Andy Lutomirski avaldas detsembri lĂ”pus kolmanda versiooni parandusest. See toob endaga âkaks peamist semantilist muudatust Linuxi juhuslikes API-desâ. Patach lisab uue GRND_INSECURE lipu sĂŒsteemikĂ”nele getrandom() (kuigi Lutomiirski nimetab seda getentropy'ks, mis on glibc-s rakendatud getrandom() kaudu fikseeritud lippudega); see lipp sunnib kĂ”net alati tagastama soovitud andmete hulga, kuid ilma garantiita, et need andmed oleksid juhuslikud. SĂŒdamik pĂŒĂŒab lihtsalt anda parimaid juhuslikke andmeid, mis tal antud hetkel on. âTĂ”enĂ€oliselt on parim, mida teha, nimetada seda 'INSECURE' (mitteohutuks), et takistada selle API kasutamist asjade jaoks, mis vajavad turvalisust.â (ohtlik), et takistada selle API kasutamist olukordades, kus on vajalik turvalisus.
Patchid eemaldavad ka blokeeritud puu. Praegu toetab sĂŒdamik kahte juhuslike andmete puu, millest ĂŒks vastab /dev/random'ile ja teine /dev/urandom'ile, nagu on kirjeldatud selles 2015. aastal. Blokeeritud puu on puu /dev/random jaoks; selle seadme lugemine blokeeritakse (tĂ€hendab, et selle nimi) seni, kuni sĂŒsteemist on kogutud piisav entropia, et rahuldada pĂ€ringut. Edasi lugemine sellest failist blokeeritakse samuti, kui puus pole piisavalt entropiat.
Lukustusploki eemaldamine tĂ€hendab, et lugemine /dev/random kĂ€itub nagu getrandom() nulli tĂ€histega (ja muudab GRND_RANDOM mĂ€rgi noop-iks). PĂ€rast krĂŒptograafilise juhuslikkuse generaatori (CRNG) algatamist ei blokeeri lugemine /dev/random ja getrandom(âŠ,0) vĂ€ljakutsed ning tagastab nĂ”utava hulga juhuslikke andmeid.
Lutomirski ĂŒtleb: «Ma arvan, et Linuxi blokeeriv plokk on oma aja ĂŒle elanud. Linuxi CRNG genereerib vĂ€ljundit, mis on piisavalt hea, et seda kasutada isegi vĂ”tmete genereerimiseks. Blokeeriv plokk ei ole mingil materiaalsel tasemel tugevam ja selle hoidmiseks on vajalik palju kĂŒsitava vÀÀrtusega infrastruktuuri.»
Muudatused on tehtud eesmÀrgiga, et olemasolevad programmid ei kannataks ja tegelikult muutub vÀhem probleemseks pika ooteaegade olukord, nagu GnuPG vÔtmete genereerimine.
âNeed seeriad ei tohi rikkuda olemasolevaid programme. /dev/urandom jÀÀb muutumatuks. /dev/random jÀÀb endiselt kohe pĂ€rast laadimist blokeerituks, kuid vĂ€hem kui varem. getentropy() koos olemasolevate lipudega tagastab tulemuse, mis on praktiliste eesmĂ€rkide jaoks sama sobiv nagu varem.â
Lutomirski mĂ€rkis, et siiani on avatud kĂŒsimus, kas kernel peaks pakkuma nn âpĂ€ris juhuslikke numbreidâ, nagu peaks blokeeriv kernel mingil mÀÀral tegema. Ta nĂ€eb selleks vaid ĂŒhte pĂ”hjust: âriiklike standardite jĂ€rgimineâ. Lutomirski pakkus, et kui kernel peab seda tagama, siis peaks see toimuma tĂ€iesti erineva liidese kaudu vĂ”i tuleks see viia kasutajaruumi, pakkudes talle vĂ”imalust hankida tooreid sĂŒndmuste proovide, mida saab kasutada sellise blokeerimismahuti moodustamiseks.
Stephan MĂŒller pakkus, et tema komplekt Linuxi juhuslike arvnĂ€htude generaator (LRNG) (praegu on vĂ€lja antud 26. versioon) vĂ”ib olla viis tĂ”eliselt juhuslike arvnĂ€htude pakkumiseks rakendustele, mis seda vajavad. LRNG "vastab tĂ€ielikult "Juhendite nĂ”uetele energiaallikate jaoks, mida kasutatakse juhuslike bitide genereerimiseks" SP800-90B", mistĂ”ttu on see lahendus riiklikele standarditele.
Matthew Garrett kahtles mĂ”iste "tĂ”elised juhuslikud andmed" ĂŒle, mĂ€rkides, et valitud seadmeid saab pĂ”himĂ”tteliselt simuleerida piisavalt tĂ€pselt, et muuta need ennustatavaks: "me ei korja siin kvantĂŒritusi".
MĂŒller vastas, et see termin tuleneb Saksamaa standardist AIS 31, mis kirjeldab juhuslikke arvnĂ€htude generaatorit, mis ainult vĂ€ljastab tulemuse "sama kiirusel, millega baasiline mĂŒraallikas tootab entropiat".
Lisaks terminoloogia erinevustele tÔi LRNG patƥides ette nÀhtud lukustamisbaseni olemasolu lihtsalt kaasa erinevaid probleeme, vÀhemalt kui see on kergesti ligipÀÀsetav ilma privileege omamata.
Kuidas ĂŒtles Lutomirski: âSee ei lahenda probleemi. Kui kaks erinevat kasutajat kĂ€ivitavad rumalaid programme, nagu gnupg, lihtsalt tĂŒhjendavad nad ĂŒksteist. NĂ€en, et hetkel on kaks peamist probleemi /dev/randomiga: see on aldis DoS-le (st ressursi ammendamine, halvad mĂ”jud vĂ”i midagi sarnast), ja kuna selle kasutamiseks ei ole mingeid privileege nĂ”utud, on see samuti aldis kuritarvitustele. Gnupg on vale, see on tĂ€ielik kokkuvarisemine. Kui lisame uue mittepriviligeeritud liidese, mida gnupg ja sarnased programmid kasutavad, siis kaotame me jĂ€lle.â
MĂŒller mĂ€rkis, et getrandom() lisamine vĂ”imaldab nĂŒĂŒd GnuPG-l seda liidest kasutada, kuna see tagab, et puhver on initsialiseeritud. PĂ€rast arutelusid GnuPG arendaja Werner Kocho (Werner Koch) kanssa usub MĂŒller, et see garantii on ainus pĂ”hjus, miks GnuPG praegu loeb otse /dev/random. Kuid kui on olemas privileegita liides, mis on aldis teenuse keelamisele (nagu praegu /dev/random), siis vĂ€idab Lutomirski, et seda kasutatakse valesti mĂ”nede rakenduste poolt.
Teodor Tsao (Theodore Yue Tak Tsâo), Linuxi juhuslike numbrite alam-sĂŒsteemi arendaja, nĂ€ib olevat muutnud oma arvamust blokeeriva puhvri vajaduse osas. Ta ĂŒtles, et selle puhvri eemaldamine vĂ”imaldab efektiivselt vabaneda ideest, et Linuxil on tĂ”eline juhuslike numbrite generaator (TRNG): «see ei ole mĂ”ttetuks, kuna see on just see, mida *BSD on alati teinud."
Ta on mures, et TRNG mehhanismi pakkumine teenib lihtsalt rakenduste arendajate köitmiseks ja arvab, et arvestades Linuxi toetatavaid erinevaid riistvara tĂŒĂŒpe, on kĂŒllalt keeruline tagada TRNG tuumas. Probleemi ei lahenda isegi juurprivileegide alusel töötamine. «Rakenduste arendajad nĂ”uavad, et nende rakendust tuleks turvalisuse huvides kĂ€itada kui juur, sest ainult nii on vĂ”imalik pÀÀseda «tĂ”eliselt headele» juhuslikele numbritele».
MĂŒller kĂŒsis, kas Cao on loobunud blokeeriva koosluse rakendamisest, mida ta ise juba ammu soovitas. Cao vastas, et plaanib vĂ”tta Lutomirski patĆĄid ja on aktiivselt vastu blokeeriva liidese lisamisele tagasi tuumasse.
Kern ei saa anda mingeid garantiisid selle kohta, kas mĂŒrasaajate kirjeldamine on olnud nĂ”uetekohane. Ainus, mille GPG vĂ”i OpenSSL arendaja vĂ”ib saada, on hĂ€gune tunne, et TRUERANDOM on "parem", ja kuna nad soovivad suuremat turvalisust, ĂŒritavad nad seda kindlasti kasutada. Teatud hetkel hakatakse seda blokeerima, ja kui mĂ”ni muu tark kasutaja (vĂ”ib-olla jaotuse funktsioneerimise spetsialist) lisab selle init-skripti, ei tööta sĂŒsteemid enam; kasutajatel jÀÀb vaid Linus Torvaldsi kaebamine.
Cao toetab samuti krĂŒptograafidele ja neile, kes tĂ”eliselt vajavad TRNG-d, vĂ”imalust koguda omaenda entropiat kasutajaruumi, et kasutada seda omal Ă€ra. Ta ĂŒtleb, et entropia kogumine ei ole protsess, mida tuum saab teha kĂ”ikide toetatud riistvarade puhul, veelgi enam ei saa tuum ise hinnata, kui palju entropiat pakuvad erinevad allikad.
«Tuum ei tohiks segada erinevaid mĂŒra allikaid ning see ei tohiks proovida vĂ€ita, kui palju bitivĂ€het ta saab, pĂŒĂŒdes mĂ€ngida mingit "tĂ”rvatud entropia mĂ€ngu" lihtsas, uskumatult aluses CPU arhitektuuris IoT/embeddatud kasutusjuhtude jaoks, kui kĂ”ik on ĂŒksiku meistrigeneraatoriga desĂŒnkroniseeritud, pole mingit CPU kĂ€sku registri ĂŒmberpaigutamiseks vĂ”i ĂŒmbernimetamiseks jne.»
âSaame rÀÀkida tööriistade pakkumisest, mis pĂŒĂŒavad neid arvutusi teha, kuid sellised asjad peaksid toimuma iga kasutaja seadmetes, mis on enamiku levituse kasutajate jaoks lihtsalt ebatĂ”hus. Kui see on mĂ”eldud ainult krĂŒptograafidele, siis las see toimuda nende kasutajaruumi. Ja Ă€rgem lihtsustagem GPG-d, OpenSSL-i jne, nii et kĂ”ik ĂŒtlevad: âme tahame âtĂ”elist juhuslikkustâ ja ei lepi millegagi vĂ€hemagaâ. V vĂ”ime rÀÀkida sellest, kuidas pakume krĂŒptograafidele liideseid, et nad saaksid vajalikku teavet tĂ€nu juurdepÀÀsule esmasele noise source'ile, mis on eraldatud ja nimetatud, ja vĂ”ib-olla suudab noise source mĂ”nel viisil end autentida raamatukogus vĂ”i kasutajarakenduses.â
Toimus vĂ€ike arutelu selle ĂŒle, milline selline kasutajaliides vĂ”iks vĂ€lja nĂ€ha, arvestades, et nĂ€iteks mĂ”ned sĂŒndmused vĂ”ivad tĂ”statada turvalisuse kĂŒsimusi. Cao mĂ€rkis, et klaviatuuriskaneerimise koodid (st klahvivajutused) segunevad kogumise osana entropiapooles: âSeda kasutajaruumi viia, isegi lĂ€bi privileege omava sĂŒsteemikutsungi, oleks vĂ€hemasti mitte ettevaatlik.â On tĂ€iesti vĂ”imalik, et muutlikud sĂŒndmused vĂ”ivad luua mingit teavet kĂ”rvalkanalite kaudu.
Seega tekib tunne, et pikaajaline Linuxi juhuslike arvude alamsĂŒsteemi probleem on lahenduse teel. Hiljutised muutused juhuslike arvude alamsĂŒsteemis on tegelikult ainult tekitanud DoS-probleeme selle kasutamise kĂ€igus. NĂŒĂŒd on aga saadaval efektiivsed viisid parimate juhuslike numbrite saamiseks, mida tuumik vĂ”ib pakkuda. Kui TRNG on Linuxi jaoks endiselt soovitav, tuleb see puudus tulevikus lahendada, kuid tĂ”enĂ€oliselt ei tehta seda tuum ise.
Veidi reklaami đ
AitĂ€h, et olete meiega. Kas teile meeldivad meie artiklid? Kas soovite nĂ€ha rohkem huvitavaid materjale? Toetage meid, tehes tellimuse vĂ”i soovitades meid tuttavatele. , ainulaadne sisenemise taseme serverite analoog, mille oleme teie jaoks vĂ€lja mĂ”elnud: (saadaval on RAID1 ja RAID10 variandid, kuni 24 sĂŒdamikku ja kuni 40GB DDR4).
Kas Dell R730xd on kaks korda odavam Equinixi Tier IV andmete keskuses Amsterdamis? Ainult meie juures Hollandi turul! Dell R420 â 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB â alates $99! Lugege, kuidas
Allikas: habr.com
