Ir zinÄms, ka /dev/random, kriptogrÄfiski droÅ”am pseidogadÄ«juma skaitļu Ä£eneratoram (CSPRNG), ir viena kaitinoÅ”a problÄma: bloÄ·ÄÅ”ana. Å ajÄ rakstÄ ir paskaidrots, kÄ to atrisinÄt.
Dažu pÄdÄjo mÄneÅ”u laikÄ nejauÅ”o skaitļu Ä£enerÄÅ”anas iespÄjas kodolÄ ir nedaudz pÄrveidotas, taÄu problÄmas Å”ajÄ apakÅ”sistÄmÄ ir atrisinÄtas plaÅ”Äkas darbÄ«bas laikÄ.
Endijs Lutomirskis decembra beigÄs publicÄja treÅ”o ielÄpa versiju. ViÅÅ” sniedz ieguldÄ«jumu "divas lielas semantiskÄs izmaiÅas nejauÅ”Äs Linux API". IelÄps pievieno jaunu GRND_INSECURE karogu getrandom() sistÄmas izsaukumam (lai gan Lutomirskis to apzÄ«mÄ kÄ getentropy(), kas ir ieviests glibc, izmantojot getrandom() ar fiksÄtiem karodziÅiem); Å”is karodziÅÅ” liek zvanam vienmÄr atgriezt pieprasÄ«to datu apjomu, taÄu negarantÄjot, ka dati ir nejauÅ”i. Kodols vienkÄrÅ”i darÄ«s visu iespÄjamo, lai iegÅ«tu vislabÄkos izlases datus, kas tam ir konkrÄtajÄ laikÄ. "IespÄjams, vislabÄkais, ko darÄ«t, ir nosaukt to par" NEDROÅ U (nedroÅ”a), lai novÄrstu Ŕīs API izmantoÅ”anu lietÄm, kurÄm nepiecieÅ”ama droŔība."
PlÄksteri arÄ« noÅem bloÄ·ÄjoÅ”o baseinu. Kodols paÅ”laik uztur divus nejauÅ”us datu kopumus, no kuriem viens atbilst /dev/random un otrs /dev/urandom, kÄ aprakstÄ«ts Å”ajÄ
BloÄ·ÄÅ”anas pÅ«la noÅemÅ”ana nozÄ«mÄ, ka lasÄ«Å”ana no /dev/random darbojas kÄ getrandom() ar karodziÅiem, kas iestatÄ«ti uz nulli (un pÄrvÄrÅ” karogu GRND_RANDOM par noop). Kad kriptogrÄfiskais nejauÅ”o skaitļu Ä£enerators (CRNG) ir inicializÄts, lasÄ«Å”ana no /dev/random un izsaukumi uz getrandom(...,0) netiks bloÄ·Äti un atgriezÄ«s pieprasÄ«to nejauÅ”o datu apjomu.
Lutomirskis saka: āEs uzskatu, ka Linux bloÄ·ÄÅ”anas pÅ«ls ir novecojis. CRNG Linux Ä£enerÄ izvadi, kas ir pietiekami laba, lai to izmantotu pat atslÄgu Ä£enerÄÅ”anai. BloÄ·ÄjoÅ”ais baseins nav spÄcÄ«gÄks nekÄdÄ materiÄlÄ nozÄ«mÄ, un tÄ atbalstam ir nepiecieÅ”ama liela apÅ”aubÄmas vÄrtÄ«bas infrastruktÅ«ra.
IzmaiÅas tika veiktas ar mÄrÄ·i nodroÅ”inÄt, lai esoÅ”Äs programmas patieÅ”Äm netiktu ietekmÄtas, un faktiski bÅ«tu mazÄk problÄmu, ilgstoÅ”i gaidot tÄdas lietas kÄ GnuPG atslÄgu Ä£enerÄÅ”ana.
"Å Ä«s epizodes nedrÄ«kst traucÄt esoÅ”Äs programmas. /dev/urandom paliek nemainÄ«gs. /dev/random joprojÄm bloÄ·Ä uzreiz pÄc sÄknÄÅ”anas, taÄu tas bloÄ·Ä mazÄk nekÄ iepriekÅ”. getentropy() ar esoÅ”ajiem karodziÅiem atgriezÄ«s rezultÄtu, kas ir tikpat piemÄrots praktiskiem mÄrÄ·iem kÄ iepriekÅ”."
Lutomirskis atzÄ«mÄja, ka joprojÄm ir atklÄts jautÄjums, vai kodolam ir jÄnodroÅ”ina tÄ sauktie āpatiesie nejauÅ”ie skaitļiā, kas zinÄmÄ mÄrÄ bija jÄdara bloÄ·ÄjoÅ”ajam kodolam. ViÅÅ” tam saskata tikai vienu iemeslu: āatbilstÄ«ba valdÄ«bas standartiemā. Lutomirskis ierosinÄja, ka, ja kodols to nodroÅ”inÄtu, tas bÅ«tu jÄdara, izmantojot pilnÄ«gi citu saskarni, vai arÄ« tas ir jÄpÄrvieto lietotÄja telpÄ, ļaujot lietotÄjam izgÅ«t neapstrÄdÄtus notikumu paraugus, kurus varÄtu izmantot Å”Äda bloÄ·ÄÅ”anas pÅ«la izveidoÅ”anai.
Stephan MĆ¼ller ierosinÄja, ka viÅa komplekts
MetjÅ« Garets iebilda pret terminu āpatiesi nejauÅ”i datiā, norÄdot, ka atlasÄ«tÄs ierÄ«ces principÄ var pietiekami precÄ«zi modelÄt, lai padarÄ«tu tÄs paredzamas: āÅ”eit mÄs neÅemam kvantu notikumus.
MĆ¼ller atbildÄja, ka termins nÄk no VÄcijas standarta AIS 31, lai aprakstÄ«tu nejauÅ”u skaitļu Ä£eneratoru, kas tikai rada rezultÄtu "tÄdÄ paÅ”Ä ÄtrumÄ, kÄ pamatÄ esoÅ”ais trokÅ”Åa avots rada entropiju".
Ja neskaita terminoloÄ£ijas atŔķirÄ«bas, LRNG ielÄpu ieteiktais bloÄ·ÄÅ”anas baseins vienkÄrÅ”i radÄ«s dažÄdas problÄmas, vismaz tad, ja tam piekļūst bez privilÄÄ£ijÄm.
KÄ teica Lutomirskis: "Tas neatrisina problÄmu. Ja divi dažÄdi lietotÄji palaiž tÄdas muļķīgas programmas kÄ gnupg, viÅi viens otru vienkÄrÅ”i iztukÅ”o. Es redzu, ka paÅ”laik ir divas galvenÄs problÄmas ar /dev/random: tas ir pakļauts DoS (t.i., resursu izsÄ«kÅ”anai, ļaunprÄtÄ«gai ietekmei vai tamlÄ«dzÄ«gam), un, tÄ kÄ tÄ izmantoÅ”anai nav vajadzÄ«gas nekÄdas privilÄÄ£ijas, tas ir pakļauts arÄ« ļaunprÄtÄ«gai izmantoÅ”anai. Gnupg kļūdÄs, tas ir pilnÄ«gs sabrukums. Ja pievienosim jaunu nepievilcÄ«gu saskarni, ko izmantos gnupg un lÄ«dzÄ«gas programmas, mÄs atkal zaudÄsim.
Muellers atzÄ«mÄja, ka getrandom() pievienoÅ”ana tagad ļaus GnuPG izmantot Å”o saskarni, jo tas nodroÅ”inÄs nepiecieÅ”amo garantiju, ka pÅ«ls ir inicializÄts. Pamatojoties uz diskusijÄm ar GnuPG izstrÄdÄtÄju Verneru Kohu, Muellers uzskata, ka garantija ir vienÄ«gais iemesls, kÄpÄc GnuPG paÅ”laik lasa tieÅ”i no /dev/random. Bet, ja ir nepievilcÄ«gs interfeiss, kas ir pakļauts pakalpojuma atteikumam (kÄ Å”odien ir /dev/random), Lutomirskis apgalvo, ka dažas lietojumprogrammas to izmantos ļaunprÄtÄ«gi.
Teodors Jue Tak Tso, Linux nejauÅ”o skaitļu apakÅ”sistÄmas izstrÄdÄtÄjs, Ŕķiet, ir mainÄ«jis savas domas par bloÄ·ÄÅ”anas pÅ«la nepiecieÅ”amÄ«bu. ViÅÅ” teica, ka Ŕī pÅ«la noÅemÅ”ana efektÄ«vi atbrÄ«votos no idejas, ka Linux ir patiess nejauÅ”o skaitļu Ä£enerators (TRNG): "tas nav muļķības, jo tieÅ”i to *BSD vienmÄr ir darÄ«jis."
ViÅÅ” arÄ« pauž bažas, ka TRNG mehÄnisma nodroÅ”inÄÅ”ana vienkÄrÅ”i kalpos kÄ Äsma lietojumprogrammu izstrÄdÄtÄjiem, un uzskata, ka patiesÄ«bÄ, Åemot vÄrÄ dažÄdus Linux atbalstÄ«tos aparatÅ«ras veidus, nav iespÄjams garantÄt TRNG kodolÄ. Pat spÄja strÄdÄt ar aprÄ«kojumu tikai ar root tiesÄ«bÄm neatrisinÄs problÄmu: "Lietojumprogrammu izstrÄdÄtÄji droŔības nolÅ«kos norÄda, ka viÅu lietojumprogramma ir jÄinstalÄ kÄ root, lai tas bÅ«tu vienÄ«gais veids, kÄ jÅ«s varat piekļūt" patieÅ”Äm labiem" nejauÅ”ajiem skaitļiem."
Muellers jautÄja, vai Cao ir atteicies no bloÄ·ÄÅ”anas baseina ievieÅ”anas, ko viÅÅ” pats jau sen bija ierosinÄjis. Cao atbildÄja, ka plÄno izmantot Lutomirsky ielÄpus un aktÄ«vi iebilst pret bloÄ·ÄÅ”anas interfeisa pievienoÅ”anu atpakaļ kodolam.
"Kodols nevar sniegt nekÄdas garantijas par to, vai trokÅ”Åa avots ir pareizi raksturots. VienÄ«gais, ko var iegÅ«t GPG vai OpenSSL izstrÄdÄtÄjs, ir neskaidra sajÅ«ta, ka TRUERANDOM ir "labÄks", un, tÄ kÄ viÅi vÄlas lielÄku droŔību, viÅi, bez Å”aubÄm, mÄÄ£inÄs to izmantot. KÄdÄ brÄ«dÄ« tas tiks bloÄ·Äts, un, kad kÄds cits gudrs lietotÄjs (iespÄjams, izplatÄ«Å”anas speciÄlists) to ievietos init skriptÄ un sistÄmas pÄrtrauks darboties, lietotÄjiem bÅ«s jÄsÅ«dzas tikai paÅ”am Linusam Torvaldam.
Cao arÄ« iestÄjas par to, lai kriptogrÄfiem un tiem, kam patieÅ”Äm ir nepiecieÅ”ams TRNG, ir jÄdod veids, kÄ iegÅ«t savu entropiju lietotÄja telpÄ, lai to izmantotu pÄc saviem ieskatiem. ViÅÅ” saka, ka entropijas apkopoÅ”ana nav process, ko kodols var veikt visÄs dažÄdajÄs aparatÅ«rÄ, ko tas atbalsta, kÄ arÄ« pats kodols nevar novÄrtÄt entropijas apjomu, ko nodroÅ”ina dažÄdi avoti.
Kodolam nevajadzÄtu jaukt kopÄ dažÄdus trokÅ”Åu avotus, un tam noteikti nevajadzÄtu mÄÄ£inÄt apgalvot, cik daudz entropijas bitu tas iegÅ«st, mÄÄ£inot spÄlÄt kaut kÄdu "satricinoÅ”u entropijas spÄli" uz nežÄlÄ«gi vienkÄrÅ”Ä CPU. arhitektÅ«ra patÄrÄtÄju lietotÄjiem. IOT/iegultie gadÄ«jumi, kad viss nav sinhronizÄts ar vienu galveno oscilatoru, kur nav CPU norÄdÄ«jumu pÄrkÄrtot vai pÄrdÄvÄt reÄ£istru utt.
āVar runÄt par rÄ«ku nodroÅ”inÄÅ”anu, kas mÄÄ£ina veikt Å”os aprÄÄ·inus, taÄu Å”Ädas lietas ir jÄdara katra lietotÄja aparatÅ«rÄ, kas vairumam izplatÄ«Å”anas lietotÄju vienkÄrÅ”i nav praktiski. Ja tas ir paredzÄts tikai kriptogrÄfiem, tad lai tas tiek darÄ«ts viÅu lietotÄja telpÄ. Un nevienkÄrÅ”osim GPG, OpenSSL u.c., lai visi teiktu "mÄs gribam "patiesu nejauŔību" un nesamierinÄsimies ar mazÄku. MÄs varam runÄt par to, kÄ mÄs nodroÅ”inÄm saskarnes kriptogrÄfiem, lai viÅi varÄtu iegÅ«t nepiecieÅ”amo informÄciju, piekļūstot primÄrajiem trokÅ”Åu avotiem, kas ir atdalÄ«ti un nosaukti, un varbÅ«t kaut kÄdÄ veidÄ trokÅ”Åa avots var autentificÄt sevi bibliotÄkÄ vai lietotÄja telpas lietojumprogrammÄ.
Bija dažas diskusijas par to, kÄ Å”Äds interfeiss varÄtu izskatÄ«ties, jo, piemÄram, daži notikumi var ietekmÄt droŔību. Cao atzÄ«mÄja, ka tastatÅ«ras skenÄÅ”anas kodi (t.i., taustiÅsitieni) tiek sajaukti pÅ«lÄ kÄ daļa no entropijas vÄkÅ”anas: "Ievest to lietotÄja telpÄ, pat izmantojot priviliÄ£Ätu sistÄmas zvanu, bÅ«tu maigi izsakoties neprÄtÄ«gi." PilnÄ«gi iespÄjams, ka citi notikumu laiki var radÄ«t kÄda veida informÄcijas noplÅ«di pa sÄnu kanÄliem.
TÄtad Ŕķiet, ka ilgstoÅ”a problÄma ar Linux nejauÅ”o skaitļu apakÅ”sistÄmu ir ceÄ¼Ä uz risinÄjumu. IzmaiÅas, kas nesen tika veiktas nejauÅ”o skaitļu apakÅ”sistÄmÄ, faktiski ir izraisÄ«juÅ”as tikai DoS problÄmas tÄs lietoÅ”anas laikÄ. Tagad ir efektÄ«vi veidi, kÄ iegÅ«t labÄkos nejauÅ”os skaitļus, ko kodols var nodroÅ”inÄt. Ja TRNG joprojÄm ir vÄlams operÄtÄjsistÄmÄ Linux, tad Ŕī kļūda bÅ«s jÄnovÄrÅ” nÄkotnÄ, taÄu, visticamÄk, tas netiks darÄ«ts paÅ”Ä kodolÄ.
Dažas reklÄmas š
Paldies, ka palikÄt kopÄ ar mums. Vai jums patÄ«k mÅ«su raksti? Vai vÄlaties redzÄt interesantÄku saturu? Atbalsti mÅ«s, pasÅ«tot vai iesakot draugiem,
Dell R730xd 2x lÄtÄk Equinix Tier IV datu centrÄ AmsterdamÄ? Tikai Å”eit
Avots: www.habr.com