Linux: pagtangtang sa lock pool /dev/random

/dev/random, usa ka cryptographically secure pseudo-random number generator (CSPRNG), nahibal-an nga adunay usa ka makalagot nga problema: pagbabag. Gisaysay niining artikuloha kon unsaon nimo kini pagsulbad.

Sa milabay nga pipila ka mga bulan, ang random number generation nga mga pasilidad sa kernel gamay nga gibag-o, apan ang mga problema niini nga subsystem nasulbad sa dagan sa mas lapad time frame. Ang pinaka katapusan nga mga pagbag-o gihimo aron mapugngan ang getrandom() nga tawag sa sistema gikan sa pag-block sa dugay nga panahon kung ang sistema nag-boot, apan ang hinungdan nga hinungdan niini mao ang pag-ali sa pamatasan sa random pool. Ang usa ka bag-o nga patch makatangtang sa kini nga pool ug kini gilauman nga moadto sa panguna nga kinauyokan.

Gipatik ni Andy Lutomirski ang ikatulo nga bersyon sa patch sa katapusan sa Disyembre. Nagtampo siya "duha ka dagkong pagbag-o sa semantiko sa random nga mga API sa Linux". Ang patch nagdugang ug bag-ong GRND_INSECURE nga bandera sa getrandom() nga tawag sa sistema (bisan tuod ang Lutomirsky nagtawag niini nga getentropy(), nga gipatuman sa glibc gamit ang getrandom() nga adunay fixed flags); kini nga bandila hinungdan sa tawag sa kanunay nga pagbalik sa kantidad sa data nga gihangyo, apan walay garantiya nga ang data mao ang random. Buhaton lang sa kernel ang labing maayo aron makagama ang labing kaayo nga random nga datos nga naa niini sa gihatag nga oras. "Tingali ang labing maayo nga butang nga buhaton mao ang pagtawag niini nga 'INSECURE' (walay kasiguruhan) aron mapugngan kini nga API nga magamit alang sa mga butang nga nanginahanglan seguridad."

Gikuha usab sa mga patch ang blocking pool. Ang kernel sa pagkakaron nagmintinar sa duha ka random data pool, ang usa katugbang sa / dev / random ug ang usa sa / dev / urandom, sama sa gihulagway niini. artikulo 2015. Ang blocking pool mao ang pool para sa /dev/random; Ang pagbasa alang sa kana nga aparato mag-block (nagpasabut sa ngalan niini) hangtod nga makuha ang "igo" nga entropy gikan sa sistema aron matubag ang hangyo. Ang dugang nga mga pagbasa gikan sa kini nga file gibabagan usab kung wala’y igo nga entropy sa pool.

Ang pagtangtang sa lock pool nagpasabut nga ang pagbasa gikan sa /dev/random molihok sama sa getrandom() nga adunay mga bandila nga gibutang sa zero (ug gihimo ang GRND_RANDOM nga bandila nga usa ka noop). Sa higayon nga ang cryptographic random number generator (CRNG) masugdan, ang pagbasa gikan sa /dev/random ug mga tawag sa getrandom(...,0) dili makababag ug mobalik sa gipangayo nga gidaghanon sa random data.

Lutomirsky nag-ingon: "Nagtuo ako nga ang Linux blocking pool nahimo na nga dili na magamit. Ang CRNG Linux nagmugna og output nga igo nga magamit bisan alang sa yawe nga henerasyon. Ang blocking pool dili mas lig-on sa bisan unsang materyal nga kahulugan ug nanginahanglan daghang imprastraktura nga adunay kaduhaduhaan nga kantidad aron masuportahan kini. ”

Ang mga pagbag-o gihimo uban ang katuyoan sa pagsiguro nga ang mga naglungtad nga mga programa dili gyud maapektuhan, ug sa tinuud, adunay gamay nga mga problema sa dugay nga paghulat alang sa mga butang sama sa GnuPG key generation.

"Kini nga mga yugto kinahanglan dili makabalda sa bisan unsang naglungtad nga mga programa. /dev/urandom nagpabilin nga wala mausab. /dev/random nag-block gihapon dayon sa pag-boot, apan mas gamay kini kaysa kaniadto. getentropy() uban sa mga naglungtad nga mga bandila magbalik sa usa ka resulta nga angay alang sa praktikal nga mga katuyoan sama kaniadto."

Si Lutomirsky nakamatikod nga kini usa pa ka bukas nga pangutana kung ang kernel kinahanglan nga maghatag sa gitawag nga "tinuod nga random nga mga numero," nga mao ang kinahanglan nga buhaton sa blocking kernel sa usa ka sukod. Usa ra ang iyang nakita nga hinungdan niini: "pagsunod sa mga sumbanan sa gobyerno." Gisugyot ni Lutomirsky nga kung ang kernel maghatag niini, kini kinahanglan nga buhaton pinaagi sa usa ka hingpit nga lahi nga interface, o kinahanglan kini ibalhin sa wanang sa gumagamit, nga gitugotan ang tiggamit nga makuha ang mga hilaw nga sampol sa panghitabo nga magamit sa paghimo sa ingon nga lock pool.

Gisugyot ni Stephan MΓΌller nga ang iyang set mga patsa para sa Linux Random Number Generator (LRNG) (karon nga bersyon 26 nga gipagawas) mahimong usa ka paagi sa paghatag og tinuod nga random nga mga numero alang sa mga aplikasyon nga nagkinahanglan niini. Ang LRNG "bug-os nga nagsunod sa SP800-90B Mga Giya sa Entropy Sources nga Gigamit sa Pagmugna og Random Bits," nga naghimo niini nga solusyon sa problema sa mga sumbanan sa gobyerno.
Gisupak ni Matthew Garrett ang termino nga "tinuod nga random nga datos," ingon nga ang mga aparato nga na-sample sa prinsipyo mahimo nga modelo nga tukma aron mahimo silang matag-an: "wala kami nag-sample sa mga panghitabo sa quantum dinhi."

Mitubag si MΓΌller nga ang termino naggikan sa German standard nga AIS 31 aron ihulagway ang usa ka random number generator nga nagpatungha lamang og resulta "sa samang gikusgon nga ang nagpahiping tinubdan sa kasaba nagpatunghag entropy."

Gawas sa mga kalainan sa termino, ang pagbaton ug lock pool nga gisugyot sa mga patch sa LRNG mosangput lang sa lainlaing mga problema, labing menos kung kini ma-access nga wala’y mga pribilehiyo.

Sama sa giingon ni Lutomirsky: β€œDili kini makasulbad sa problema. Kung ang duha ka lainlain nga tiggamit nagpadagan sa mga binuang nga mga programa sama sa gnupg, sila mag-usik sa usag usa. Akong nakita nga sa pagkakaron adunay duha ka nag-unang mga problema sa /dev/random: kini prone sa DoS (ie resource depletion, malisyoso nga impluwensya o susama nga butang), ug tungod kay walay mga pribilihiyo nga gikinahanglan sa paggamit niini, kini usab prone sa pag-abuso. Ang Gnupg sayup, kini usa ka hingpit nga pagkahugno. Kung magdugang kami usa ka bag-ong wala’y pribilehiyo nga interface nga gamiton sa gnupg ug parehas nga mga programa, mawala kami pag-usab."

Namatikdan ni Mueller nga ang pagdugang sa getrandom() karon magtugot sa GnuPG sa paggamit niini nga interface, tungod kay kini maghatag sa gikinahanglan nga garantiya nga ang pool nasugdan na. Base sa mga diskusyon sa developer sa GnuPG nga si Werner Koch, nagtuo si Mueller nga ang garantiya mao lang ang rason nga ang GnuPG karon direktang nagbasa gikan sa /dev/random. Apan kung adunay usa ka dili pribilihiyo nga interface nga delikado sa pagdumili sa serbisyo (sama sa / dev / random karon), si Lutomirsky nangatarungan nga kini magamit sa dili husto sa pipila nga mga aplikasyon.

Si Theodore Yue Tak Ts'o, developer sa Linux's random number subsystem, daw nagbag-o sa iyang hunahuna mahitungod sa panginahanglan sa blocking pool. Siya miingon nga ang pagtangtang niini nga pool epektibo nga makawagtang sa ideya nga ang Linux adunay tinuod nga random number generator (TRNG): "Dili kini binuang, tungod kay mao kini ang kanunay nga gibuhat sa *BSD."

Nabalaka usab siya nga ang paghatag ug mekanismo sa TRNG magsilbi lang nga paon alang sa mga nag-develop sa aplikasyon ug nagtuo nga sa tinuud, tungod sa lainlaing mga lahi sa hardware nga gisuportahan sa Linux, imposible nga magarantiya ang TRNG sa kernel. Bisan ang abilidad sa pagtrabaho sa mga ekipo lamang nga adunay mga pribilehiyo sa gamut dili makasulbad sa problema: "Gitino sa mga nag-develop sa aplikasyon nga ang ilang aplikasyon ma-install ingon gamut alang sa mga katuyoan sa seguridad, aron kini ang bugtong paagi nga ma-access nimo ang 'maayo kaayo' nga random nga mga numero."

Gipangutana ni Mueller kung gibiyaan ba ni Cao ang pagpatuman sa blocking pool nga siya mismo ang dugay nang gisugyot. Gitubag ni Cao nga nagplano siya nga kuhaon ang mga patch ni Lutomirsky ug aktibo nga gisupak ang pagdugang usa ka blocking interface balik sa kernel.

"Ang kernel dili makahimo sa bisan unsang garantiya kung ang gigikanan sa kasaba husto nga gihulagway. Ang bugtong butang nga makuha sa usa ka GPG o OpenSSL developer mao ang usa ka dili klaro nga pagbati nga ang TRUERANDOM "mas maayo", ug tungod kay gusto nila ang dugang nga seguridad, sa walay duhaduha sila mosulay sa paggamit niini. Sa pila ka punto ma-block kini, ug kung ang uban nga maalamon nga tiggamit (tingali usa ka espesyalista sa pag-apod-apod) gisulud kini sa init nga script ug ang mga sistema mohunong sa pagtrabaho, ang mga tiggamit kinahanglan ra nga magreklamo sa Linus Torvalds mismo.

Gipasiugda usab ni Cao ang paghatag sa mga cryptographer ug kadtong tinuod nga nanginahanglan sa TRNG usa ka paagi aron maani ang ilang kaugalingon nga entropy sa wanang sa gumagamit aron magamit kung nakita nila nga angay. Siya nag-ingon nga ang pagkolekta sa entropy dili usa ka proseso nga mahimo sa kernel sa tanan nga lainlaing hardware nga gisuportahan niini, ni ang kernel mismo makabanabana sa kantidad sa entropy nga gihatag sa lainlaing mga gigikanan.

"Ang kernel dili kinahanglan nga magsagol sa lain-laing mga tinubdan sa kasaba, ug kini kinahanglan nga dili mosulay sa pag-angkon nga mahibal-an kung pila ka mga piraso sa entropy ang makuha niini kung kini naningkamot sa pagdula sa usa ka matang sa" twitchy entropy game "sa usa ka hilabihan ka yano nga CPU. arkitektura alang sa mga tiggamit sa konsumidor. IOT/Embedded nga mga kaso diin ang tanan wala ma-sync sa usa ka master oscillator, diin walay instruksiyon sa CPU sa pag-order o pag-usab sa usa ka rehistro, ug uban pa.”

"Mahimo nimong hisgutan ang bahin sa paghatag mga himan nga mosulay sa paghimo niini nga mga kalkulasyon, apan ang ingon nga mga butang kinahanglan buhaton sa matag hardware sa tiggamit, nga dili praktikal alang sa kadaghanan sa mga tiggamit sa pag-apod-apod. Kung kini gituyo lamang alang sa mga cryptographer, nan himoa kini nga buhaton sa ilang user space. Ug dili nato pasimplehon ang GPG, OpenSSL, ug uban pa aron ang tanan moingon nga "gusto nato ang "tinuod nga randomness" ug dili masulbad ang gamay." Makasulti kami kung giunsa namo paghatag ang mga interface sa mga cryptographer aron makuha nila ang impormasyon nga ilang gikinahanglan pinaagi sa pag-access sa mga nag-unang tinubdan sa kasaba, gibulag ug ginganlan, ug tingali sa usa ka paagi ang tinubdan sa kasaba makapamatuod sa iyang kaugalingon sa usa ka librarya o user space nga aplikasyon.

Adunay pipila ka panaghisgot bahin sa kung unsa ang hitsura sa usa ka interface, tungod kay pananglitan adunay mga implikasyon sa seguridad alang sa pipila nga mga panghitabo. Namatikdan ni Cao nga ang mga keyboard scan code (ie mga keystroke) gisagol ngadto sa usa ka pool isip kabahin sa entropy collection: "Ang pagdala niini ngadto sa user space, bisan pinaagi sa usa ka privileged system call, dili maalamon nga isulti ang labing gamay." Posible nga ang ubang mga timing sa panghitabo mahimo’g maghimo usa ka matang sa pagtulo sa kasayuran pinaagi sa mga side channel.

Mao nga ingon og usa ka dugay na nga problema sa random nga subsystem sa numero sa Linux padulong sa solusyon. Ang mga pagbag-o nga naagian sa random number subsystem bag-o lang nagresulta lang sa mga isyu sa DoS samtang gigamit kini. Karon adunay episyente nga mga paagi aron makuha ang labing kaayo nga random nga mga numero nga mahatag sa kernel. Kung ang TRNG gusto gihapon sa Linux, nan kini nga sayup kinahanglan nga sulbaron sa umaabot, apan lagmit dili kini buhaton sa sulod mismo sa kernel.

Pipila ka mga ad πŸ™‚

Salamat sa pagpabilin kanamo. Ganahan ka ba sa among mga artikulo? Gusto nga makakita og mas makapaikag nga sulod? Suportahi kami pinaagi sa pag-order o pagrekomenda sa mga higala, cloud VPS alang sa mga developers gikan sa $4.99, usa ka talagsaon nga analogue sa mga entry-level server, nga giimbento namo alang kanimo: Ang tibuok kamatuoran bahin sa VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps gikan sa $19 o unsaon pagpaambit sa usa ka server? (anaa sa RAID1 ug RAID10, hangtod sa 24 ka mga core ug hangtod sa 40GB DDR4).

Dell R730xd 2 ka beses nga mas barato sa Equinix Tier IV data center sa Amsterdam? Dinhi lang 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV gikan sa $199 sa Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - gikan sa $99! Basaha ang mahitungod sa Unsaon pagtukod sa infrastructure corp. klase sa paggamit sa Dell R730xd E5-2650 v4 server nga nagkantidad ug 9000 euros sa usa ka sentimos?

Source: www.habr.com

Idugang sa usa ka comment