Linux: kuondoa bwawa la kufuli /dev/random

/dev/nasibu, jenereta ya nambari ya ulaghai isiyo na mpangilio (CSPRNG) iliyo salama kwa njia fiche, inajulikana kuwa na tatizo moja la kuudhi: kuzuia. Makala hii inaelezea jinsi unavyoweza kutatua.

Katika kipindi cha miezi michache iliyopita, vifaa vya kutengeneza nambari nasibu kwenye kernel vimefanyiwa kazi upya kidogo, lakini matatizo katika mfumo huu mdogo yametatuliwa kwa muda mrefu zaidi. muda. wengi zaidi mabadiliko ya mwisho yalifanywa ili kuzuia getrandom() simu ya mfumo kuzuiwa kwa muda mrefu wakati buti za mfumo, lakini sababu ya msingi ya hii ilikuwa tabia ya kuzuia ya dimbwi la nasibu. Kiraka cha hivi karibuni kingeondoa dimbwi hili na ingetarajiwa kuelekea msingi mkuu.

Andy Lutomirski alichapisha toleo la tatu la kiraka mwishoni mwa Desemba. Anachangia "mabadiliko makubwa mawili ya kimantiki kwa API za Linux bila mpangilio". Kiraka kinaongeza bendera mpya ya GRND_INSECURE kwenye simu ya mfumo getrandom() (ingawa Lutomirsky inarejelea kama getentropy(), ambayo inatekelezwa katika glibc kwa kutumia getrandom() yenye bendera zisizobadilika); alama hii husababisha simu kurudisha kiasi cha data iliyoombwa kila wakati, lakini bila kuhakikisha kuwa data ni ya nasibu. Kernel itafanya bora zaidi kutoa data bora zaidi ya nasibu iliyo nayo kwa wakati uliowekwa. "Labda jambo bora zaidi kufanya ni kuiita 'INSECURE' (si salama) ili kuzuia API hii kutumiwa kwa vitu vinavyohitaji usalama."

Viraka pia huondoa bwawa la kuzuia. Kernel kwa sasa ina mabwawa mawili ya data nasibu, moja inayolingana na /dev/random na nyingine kwa /dev/urandom, kama ilivyoelezewa katika hii. Ibara ya 2015. Dimbwi la kuzuia ni bwawa la /dev/random; inasoma kwa kifaa hicho kitazuia (ikimaanisha jina lake) hadi entropy "ya kutosha" itakusanywa kutoka kwa mfumo ili kukidhi ombi. Usomaji zaidi kutoka kwa faili hii pia umezuiwa ikiwa hakuna entropy ya kutosha kwenye bwawa.

Kuondoa kidimbwi cha kufuli kunamaanisha kuwa kusoma kutoka /dev/random kunakuwa kama getrandom() na bendera zimewekwa sifuri (na kubadilisha bendera ya GRND_RANDOM kuwa noop). Mara tu jenereta ya nambari nasibu ya kriptografia (CRNG) inapoanzishwa, kusoma kutoka /dev/nasibu na simu hadi getrandom(...,0) haitazuia na itarejesha kiasi kilichoombwa cha data nasibu.

Lutomirsky anasema: "Ninaamini kuwa dimbwi la kuzuia Linux limepitwa na wakati. CRNG Linux hutoa pato ambalo ni nzuri vya kutosha hata kutumika kwa utengenezaji wa ufunguo. Dimbwi la kuzuia halina nguvu kwa maana yoyote ya nyenzo na linahitaji miundombinu mingi ya thamani ya kutilia shaka kulisaidia.

Mabadiliko yalifanywa kwa lengo la kuhakikisha kwamba programu zilizopo hazitaathiriwa, na kwa kweli, kungekuwa na matatizo machache na kusubiri kwa muda mrefu kwa mambo kama vile kizazi muhimu cha GnuPG.

β€œVipindi hivi lazima visivuruge programu zozote zilizopo. /dev/urandom bado haijabadilika. /dev/random bado huzuia mara moja kwenye buti, lakini huzuia kidogo kuliko hapo awali. getentropy() iliyo na bendera zilizopo itarudisha matokeo ambayo yanafaa kwa madhumuni ya vitendo kama hapo awali."

Lutomirsky alibainisha kuwa bado ni swali wazi ikiwa kernel inapaswa kutoa kinachojulikana kama "nambari za kweli za nasibu," ambayo ni nini kernel ya kuzuia ilipaswa kufanya kwa kiasi fulani. Anaona sababu moja tu ya hili: β€œkutii viwango vya serikali.” Lutomirsky alipendekeza kwamba ikiwa kernel ingetoa hii, inapaswa kufanywa kupitia kiolesura tofauti kabisa, au inapaswa kuhamishwa hadi kwenye nafasi ya mtumiaji, kumruhusu mtumiaji kupata sampuli za matukio ghafi ambazo zingeweza kutumika kuunda kidimbwi cha kufuli kama hicho.

Stephan MΓΌller alipendekeza kuwa seti yake mabaka kwa Linux Random Number Generator (LRNG) (toleo la 26 kwa sasa limetolewa) inaweza kuwa njia ya kutoa nambari nasibu za kweli kwa programu zinazohitaji. LRNG "inatii kikamilifu Miongozo ya SP800-90B kuhusu Vyanzo vya Entropy Vinavyotumika Kuzalisha Biti Bila mpangilio," na kuifanya suluhu kwa tatizo la viwango vya serikali.
Matthew Garrett alipinga neno "data ya kweli nasibu," akibainisha kuwa vifaa vilivyotolewa sampuli vinaweza kutengenezwa kwa njia ipasavyo ili kuvifanya kutabirika: "hatuchukui sampuli za matukio mengi hapa."

MΓΌller alijibu kuwa neno hili linatokana na kiwango cha Kijerumani cha AIS 31 kuelezea jenereta ya nambari nasibu ambayo hutoa tu matokeo "kwa kiwango sawa na chanzo cha msingi cha kelele hutoa entropy."

Tofauti za istilahi kando, kuwa na kidimbwi cha kufuli kama inavyopendekezwa na viraka vya LRNG kutasababisha tu matatizo mbalimbali, angalau ikiwa itafikiwa bila upendeleo.

Kama Lutomirsky alisema: β€œHii haisuluhishi tatizo. Ikiwa watumiaji wawili tofauti wataendesha programu za kijinga kama gnupg, watamalizana tu. Ninaona kuwa kwa sasa kuna shida kuu mbili na /dev/random: inakabiliwa na DoS (yaani kupungua kwa rasilimali, ushawishi mbaya au kitu kama hicho), na kwa kuwa hakuna upendeleo unaohitajika kuitumia, pia inakabiliwa na matumizi mabaya. Gnupg si sahihi, ni mporomoko kamili. Ikiwa tutaongeza kiolesura kipya kisicho na upendeleo ambacho gnupg na programu zinazofanana zitatumia, tutapoteza tena."

Mueller alibainisha kuwa nyongeza ya getrandom() sasa itaruhusu GnuPG kutumia kiolesura hiki, kwani itatoa hakikisho muhimu kwamba bwawa limeanzishwa. Kulingana na majadiliano na msanidi wa GnuPG Werner Koch, Mueller anaamini kuwa dhamana ndiyo sababu pekee ambayo GnuPG inasoma moja kwa moja kutoka kwa /dev/random kwa sasa. Lakini ikiwa kuna kiolesura kisicho na upendeleo ambacho kinaweza kunyimwa huduma (kama /dev/random ilivyo leo), Lutomirsky anabisha kuwa kitatumiwa vibaya na baadhi ya programu.

Theodore Yue Tak Ts'o, msanidi wa mfumo mdogo wa nambari nasibu wa Linux, inaonekana amebadilisha mawazo yake kuhusu hitaji la bwawa la kuzuia. Alisema kuwa kuondoa dimbwi hili kungeondoa wazo kwamba Linux ina jenereta ya nambari isiyo ya kawaida (TRNG): "huu sio upuuzi, kwani hivi ndivyo *BSD imekuwa ikifanya kila wakati."

Pia ana wasiwasi kwamba kutoa utaratibu wa TRNG utatumika tu kama chambo kwa watengenezaji wa programu na anaamini kwamba kwa kweli, kutokana na aina tofauti za vifaa vinavyoungwa mkono na Linux, haiwezekani kuhakikisha TRNG kwenye kernel. Hata uwezo wa kufanya kazi na vifaa tu na upendeleo wa mizizi hautasuluhisha shida: "Wasanidi programu wanabainisha kuwa programu zao zisakinishwe kama mzizi kwa madhumuni ya usalama, ili hii ndiyo njia pekee ya kufikia nambari zisizo za nasibu 'nzuri sana'."

Mueller aliuliza kama Cao alikuwa ameachana na utekelezaji wa bwawa la kuzuia ambalo yeye mwenyewe alikuwa amependekeza kwa muda mrefu. Cao alijibu kwamba ana mpango wa kuchukua viraka vya Lutomirsky na anapinga kikamilifu kuongeza kiolesura cha kuzuia kurudi kwenye kokwa.

"Kiini hakiwezi kutoa dhamana yoyote ikiwa chanzo cha kelele kimeainishwa ipasavyo. Kitu pekee ambacho msanidi wa GPG au OpenSSL anaweza kupata ni hisia zisizo wazi kwamba TRUERANDOM ni "bora", na kwa kuwa wanataka usalama zaidi, bila shaka watajaribu kuitumia. Wakati fulani itazuiwa, na wakati mtumiaji mwingine mahiri (labda mtaalamu wa usambazaji) anaiingiza kwenye hati ya init na mifumo itaacha kufanya kazi, watumiaji watalazimika kulalamika tu kwa Linus Torvalds mwenyewe."

Cao pia inatetea kuwapa waandishi wa maandishi na wale ambao kwa kweli wanahitaji TRNG njia ya kuvuna entropy yao wenyewe katika nafasi ya mtumiaji ili kutumia wanavyoona inafaa. Anasema kwamba kukusanya entropy sio mchakato ambao unaweza kufanywa na kernel kwenye vifaa vyote tofauti ambavyo inasaidia, na kernel yenyewe haiwezi kukadiria kiwango cha entropy kilichotolewa na vyanzo tofauti.

"kernel haipaswi kuchanganya vyanzo tofauti vya kelele pamoja, na kwa hakika haipaswi kujaribu kudai kujua ni vipande ngapi vya entropy inapata wakati inajaribu kucheza aina fulani ya "mchezo wa kuteleza" kwenye CPU rahisi sana. usanifu kwa watumiaji wa watumiaji. Hali za IOT/Zilizopachikwa ambapo kila kitu hakijasawazishwa na kiosilata kikuu kimoja, ambapo hakuna maagizo ya CPU ya kupanga upya au kubadilisha jina la rejista, n.k.

"Unaweza kuzungumza juu ya kutoa zana zinazojaribu kufanya hesabu hizi, lakini mambo kama hayo yanapaswa kufanywa kwa vifaa vya kila mtumiaji, ambayo sio rahisi kwa watumiaji wengi wa usambazaji. Ikiwa hii imekusudiwa tu kwa waandishi wa maandishi, basi wacha ifanyike katika nafasi yao ya mtumiaji. Na tusiirahisishe GPG, OpenSSL, n.k. ili kila mtu aseme "tunataka "ubahatishaji wa kweli" na hatutatulia kidogo." Tunaweza kuzungumza kuhusu jinsi tunavyotoa violesura kwa waandishi wa kriptografia ili waweze kupata taarifa wanazohitaji kwa kufikia vyanzo vya msingi vya kelele, vilivyotenganishwa na kutajwa majina, na pengine chanzo cha kelele kinaweza kujithibitisha kwa maktaba au programu ya nafasi ya mtumiaji."

Kulikuwa na mjadala kuhusu jinsi kiolesura kama hicho kinaweza kuonekana, kwani kwa mfano kunaweza kuwa na athari za usalama kwa baadhi ya matukio. Cao alibainisha kuwa misimbo ya kuchanganua kibodi (yaani vibonye) huchanganywa kwenye kidimbwi kama sehemu ya mkusanyiko wa entropy: "Kuleta hii kwenye nafasi ya mtumiaji, hata kupitia simu iliyobahatika ya mfumo, itakuwa si busara kusema machache." Inawezekana kabisa kwamba nyakati zingine za hafla zinaweza kuunda aina fulani ya uvujaji wa habari kupitia njia za kando.

Kwa hivyo inaonekana kama shida ya muda mrefu na mfumo mdogo wa nambari wa Linux uko kwenye njia ya suluhisho. Mabadiliko ambayo mfumo mdogo wa nambari nasibu umepitia hivi majuzi yamesababisha tu masuala ya DoS wakati wa kuutumia. Sasa kuna njia bora za kupata nambari bora za nasibu ambazo kernel inaweza kutoa. Ikiwa TRNG bado inahitajika kwenye Linux, basi dosari hii itahitaji kushughulikiwa katika siku zijazo, lakini uwezekano mkubwa hii haitafanywa ndani ya kernel yenyewe.

Baadhi ya matangazo πŸ™‚

Asante kwa kukaa nasi. Je, unapenda makala zetu? Je, ungependa kuona maudhui ya kuvutia zaidi? Tuunge mkono kwa kuweka agizo au kupendekeza kwa marafiki, VPS ya wingu kwa watengenezaji kutoka $4.99, analogi ya kipekee ya seva za kiwango cha kuingia, ambayo ilivumbuliwa na sisi kwa ajili yako: Ukweli wote kuhusu VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kutoka $19 au jinsi ya kushiriki seva? (inapatikana kwa RAID1 na RAID10, hadi cores 24 na hadi 40GB DDR4).

Dell R730xd 2x nafuu katika kituo cha data cha Equinix Tier IV huko Amsterdam? Hapa tu 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kutoka $199 nchini Uholanzi! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kutoka $99! Soma kuhusu Jinsi ya kujenga miundombinu ya Corp. darasa na matumizi ya seva za Dell R730xd E5-2650 v4 zenye thamani ya euro 9000 kwa senti?

Chanzo: mapenzi.com

Kuongeza maoni