Linux: blokeo multzoa kentzea /dev/random

/dev/random, kriptografikoki seguru sasi-ausazko zenbaki-sorgailuak (CSPRNG), arazo gogaikarri bat duela ezaguna da: blokeatzea. Artikulu honek nola konpondu dezakezun azaltzen du.

Azken hilabeteotan, nukleoan ausazko zenbakiak sortzeko instalazioak apur bat berritu dira, baina azpisistema honetako arazoak konponbide zabalagoan zehar konpondu dira. denbora-tartea. Gehien azken aldaketak getrandom() sistemaren deia denbora luzez blokeatzea saihesteko egin ziren sistema abiaraztean, baina horren azpiko arrazoia ausazko igerilekuaren blokeo-portaera izan zen. Azken adabaki batek igerileku hau kenduko zuen eta nukleo nagusirantz joatea espero zen.

Andy Lutomirskik abenduaren amaieran argitaratu zuen adabakiaren hirugarren bertsioa. Ekartzen du "ausazko Linux APIetarako bi aldaketa semantiko nagusi". Adabakiak GRND_INSECURE bandera berri bat gehitzen dio getrandom() sistema-deiari (nahiz eta Lutomirsky-k getentropy() deitzen dio, glibc-en inplementatzen dena getrandom() erabiliz bandera finkoekin; bandera honek deiak eskatutako datu kopurua beti itzultzea eragiten du, baina datuak ausazkoak direla bermatu gabe. Nukleoak bere onena egingo du unean unean dituen ausazko datu onenak ekoizteko. "Ziurrenik, egin daitekeen gauzarik onena" INSEGURUA" deitzea da (seguru gabea) API hau segurtasuna behar duten gauzetarako erabiltzea saihesteko".

Adabakiek blokeo igerilekua ere kentzen dute. Nukleoak gaur egun ausazko bi datu multzo mantentzen ditu, bata /dev/random-ri dagokiona eta bestea /dev/urandom-i, honetan azaltzen den moduan. Artikulu 2015. Blokeo-igerilekua /dev/random-erako igerilekua da; gailu horretarako irakurketak blokeatu egingo dira (bere izena esan nahi du) sistematik entropia "nahikoa" bildu arte eskaera asetzeko. Fitxategi honetako irakurketa gehiago blokeatzen dira igerilekuan entropia nahikorik ez badago.

Blokeo multzoa kentzeak esan nahi du /dev/random-etik irakurtzeak getrandom() bezala jokatzen duela banderak zeroan ezarrita (eta GRND_RANDOM bandera noop bihurtzen du). Ausazko zenbaki-sorgailu kriptografikoa (CRNG) hasieratuta dagoenean, /dev/random-etik irakurtzea eta getrandom(...,0) deiak ez dira blokeatuko eta eskatutako ausazko datu kopurua itzuliko du.

Lutomirsky-k dio: "Uste dut Linux blokeatzeko igerilekua zaharkituta geratu dela. CRNG Linux-ek nahikoa ona den irteera sortzen du gakoak sortzeko ere erabiltzeko. Blokeo-igerilekua ez da inongo zentzu materialean sendoagoa eta balio dudazko azpiegitura asko behar ditu eusteko".

Aldaketak lehendik dauden programek benetan kaltetuak izan ez daitezen bermatzeko helburuarekin egin ziren, eta, hain zuzen ere, arazo gutxiago egongo lirateke GnuPG gakoen sorkuntza bezalako gauzetarako itxaronaldi luzeekin.

"Atal hauek ez dute lehendik dauden programarik eten behar. /dev/urandom ez da aldatu. /dev/random oraindik berehala blokeatzen du abiaraztean, baina lehen baino gutxiago blokeatzen du. getentropy() lehendik dauden banderak helburu praktikoetarako lehen bezain egokia den emaitza itzuliko du."

Lutomirsky-k adierazi zuen oraindik galdera irekia dela nukleoak "egiazko ausazko zenbakiak" deiturikoak eman behar ote dituen, hau da, blokeatze-kernelak neurri batean egin behar zuena. Arrazoi bakarra ikusten du horretarako: "gobernuaren estandarrak betetzea". Lutomirsky-k iradoki zuen nukleoak hori emango balu, guztiz bestelako interfaze baten bidez egin beharko litzatekeela, edo erabiltzaile-espaziora eraman beharko litzatekeela, erabiltzaileak blokeo-talde bat sortzeko erabil litezkeen gertaeren lagin gordinak berreskuratzeko aukera emanez.

Stephan MΓΌller-ek iradoki zuen bere multzoa adabakiak Linux Random Number Generator (LRNG) (gaur egun 26 bertsioa kaleratua) behar duten aplikazioei benetako ausazko zenbakiak emateko modu bat izan liteke. LRNG "ausazko bitak sortzeko erabiltzen diren entropia-iturriei buruzko SP800-90B jarraibideekin guztiz betetzen da", gobernuaren estandarren arazoari irtenbidea emateko.
Matthew Garrettek "egiazko ausazko datuak" terminoari aurka egin zion, eta adierazi zuen lagindako gailuak printzipioz nahikoa zehatz modelatu litezkeela aurreikusteko modukoak: "ez gara hemen gertakari kuantikoak lagintzen ari".

MΓΌller-ek erantzun zuen terminoa Alemaniako AIS 31 estandarretik datorrela emaitza bat soilik sortzen duen ausazko zenbaki-sorgailu bat deskribatzeko, "azpian dagoen zarata iturriak entropia sortzen duen abiadura berean".

Terminologia desberdintasunak alde batera utzita, LRNG adabakiek iradokitzen duten blokeo-talde bat edukitzeak hainbat arazo besterik ez ditu ekarriko, pribilegiorik gabe sartzen bada behintzat.

Lutomirskyk esan zuen bezala: Β«Honek ez du arazoa konpontzen. Bi erabiltzaile ezberdin gnupg bezalako programa ergelak exekutatzen badituzte, elkar hustuko dute. Gaur egun /dev/random-ekin bi arazo nagusi daudela ikusten dut: DoS-a izateko joera du (hau da, baliabideak agortzea, eragin gaiztoa edo antzeko zerbait), eta erabiltzeko pribilegiorik behar ez denez, gehiegikeriak egiteko joera du. Gnupg oker dago, erabateko kolapsoa da. Gnupg eta antzeko programek erabiliko duten pribilegiorik gabeko interfaze berri bat gehitzen badugu, berriro galduko dugu."

Muellerrek adierazi zuen getrandom() gehitzeak GnuPG-k interfaze hau erabiltzeko aukera emango duela, igerilekua hasieratu izanaren beharrezko bermea emango duelako. Werner Koch GnuPG garatzailearekin izandako eztabaidetan oinarrituta, Muellerrek uste du bermea dela gaur egun GnuPGk /dev/random-etik zuzenean irakurtzen duen arrazoi bakarra. Baina pribilegiorik gabeko interfaze bat badago zerbitzua ukatzeko gai dena (gaur /dev/random den bezala), Lutomirsky-k dio aplikazio batzuek gaizki erabiliko dutela.

Theodore Yue Tak Ts'o, Linux-en ausazko zenbakien azpisistemaren garatzaileak, badirudi iritziz aldatu zuela blokeo-igerilekuaren beharrari buruz. Esan zuen igerileku hau kentzeak Linuxek benetako ausazko zenbaki-sorgailu bat (TRNG) duela dioen ideia kenduko zuela: "Hau ez da zentzugabekeria, horixe baita *BSDk beti egin duena".

Era berean, kezkatuta dago TRNG mekanismo bat eskaintzeak aplikazioen garatzaileentzako amu gisa balioko duelako eta uste du, izan ere, Linuxek onartzen dituen hardware mota desberdinak kontuan hartuta, ezinezkoa dela TRNG nukleoan bermatzea. Erro pribilegioekin soilik ekipoekin lan egiteko gaitasunak ere ez du arazoa konponduko: "Aplikazioen garatzaileek zehazten dute beren aplikazioa root gisa instalatu behar dela segurtasun-helburuetarako, horrela "benetan onak" ausazko zenbakietara sartzeko modu bakarra izan dadin".

Muellerrek galdetu zuen ea Caok bertan behera utzi zuen berak aspaldi proposatu zuen blokeo-igerilekuaren ezarpena. Caok erantzun zuen Lutomirskyren adabakiak hartzeko asmoa duela eta blokeo-interfaze bat nukleoan berriro gehitzearen aurka dagoela aktiboki.

β€œNukleoak ezin du inolako bermerik eman zarata iturria behar bezala karakterizatu den ala ez jakiteko. GPG edo OpenSSL garatzaile batek lor dezakeen gauza bakarra TRUERANDOM "hobea" dela da, eta segurtasun gehiago nahi dutenez, erabiltzen saiatuko dira, dudarik gabe. Noizbait blokeatu egingo da, eta beste erabiltzaile adimendun batek (agian banaketa espezialista batek) hasierako scriptean txertatzen duenean eta sistemak funtzionatzeari uzten dionean, erabiltzaileek Linus Torvalds berari kexatu besterik ez dute egin beharko.

Cao-k ere defendatzen du kriptografoei eta benetan TRNG behar dutenei erabiltzaileen espazioan beren entropia biltzeko modu bat ematea, komeni zaien moduan erabiltzeko. Dioenez, entropia biltzea ez da kernelak onartzen dituen hardware ezberdin guztietan egin dezakeen prozesu bat, ezta kernelak berak iturri ezberdinek emandako entropia-kopurua kalkulatu ere.

"Nukleoak ez luke zarata-iturri desberdinak elkarrekin nahastu behar, eta, zalantzarik gabe, ez luke zenbat entropia bit lortzen ari den nolabaiteko "entropia-joko" bat egiten saiatzen ari denean CPU izugarri sinple batean. arkitektura kontsumitzaileentzako erabiltzaileentzat. IOT/Embedded kasuak non dena sinkronizatuta dagoen osziladore nagusi bakarrarekin, non ez dagoen PUZaren instrukziorik erregistro bat berrantolatzeko edo izena aldatzeko, etab.”

β€œKalkulu horiek egiten saiatzen diren tresnak eskaintzeaz hitz egin daiteke, baina horrelakoak erabiltzaile bakoitzaren hardwarean egin behar dira, eta hori ez da praktikoa banaketa erabiltzaile gehienentzat. Hau kriptografoentzat soilik bada pentsatuta, utzi haien erabiltzaile-espazioan egin. Eta ez ditzagun sinplifikatu GPG, OpenSSL, etab., denek esan dezaten "egiazko ausazkotasuna" nahi dugu eta ez gara gutxiagorekin konformatuko". Hitz egin dezakegu nola eskaintzen diegun interfazeak kriptografoei, behar duten informazioa lor dezaten lehen mailako zarata-iturrietara sartuz, bereizita eta izendatuta, eta, beharbada, nolabait zarata-iturburua liburutegi edo erabiltzailearen espazioko aplikazio batean autentifikatu daiteke".

Halako interfaze bat nolakoa izan zitekeen eztabaidatu zen, adibidez, gertaera batzuetan segurtasun-inplikazioak egon zitezkeelako. Cao-k adierazi zuen teklatuaren eskaneatu kodeak (hau da, tekla sakatzeak) multzo batean nahasten direla entropia-bilketaren zati gisa: "Hau erabiltzaileen espaziora ekartzea, sistema pribilegiatu baten bidez ere, ez litzateke zentzuzkoa esateko". Litekeena da beste gertaeren denborak nolabaiteko informazio-isurketa sortzea alboko kanaletatik.

Beraz, badirudi Linuxen ausazko zenbakien azpisistemarekin aspaldiko arazo bat konponbiderako bidean dagoela. Ausazko zenbakien azpisistemak azkenaldian jasan dituen aldaketek DoS arazoak bakarrik eragin dituzte hura erabiltzean. Orain, nukleoak eman ditzakeen ausazko zenbaki onenak lortzeko modu eraginkorrak daude. TRNG Linux-en oraindik desiragarria bada, akats hori etorkizunean zuzendu beharko da, baina ziurrenik hori ez da nukleoan bertan egingo.

Iragarki batzuk πŸ™‚

Eskerrik asko gurekin geratzeagatik. Gustuko dituzu gure artikuluak? Eduki interesgarri gehiago ikusi nahi? Lagun iezaguzu eskaera bat eginez edo lagunei gomendatuz, Garatzaileentzako hodeiko VPS 4.99 $-tik aurrera, sarrera-mailako zerbitzarien analogo paregabea, guk zuretzat asmatu duguna: VPS (KVM) E5-2697 v3 (6 Nukleoak) 10GB DDR4 480GB SSD 1Gbps 19Gbps-ri buruzko egia osoa XNUMX $-tik edo zerbitzari bat nola partekatu? (RAID1 eta RAID10-ekin erabilgarri, 24 nukleoraino eta 40 GB DDR4 arte).

Dell R730xd 2 aldiz merkeagoa Amsterdameko Equinix Tier IV datu-zentroan? Hemen bakarrik 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 telebista 199 $-tik aurrera Herbehereetan! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 $-tik aurrera! Irakurri buruz Nola eraiki azpiegitura korporazioa. klasea Dell R730xd E5-2650 v4 zerbitzarien erabilerarekin 9000 euroko balioa duten zentimo baten truke?

Iturria: www.habr.com

Gehitu iruzkin berria