Linux: manala ny dobo hidin-trano /dev/random

/dev/random, mpamokatra nomerao pseudo-random (CSPRNG) azo antoka ara-kriptografika, dia fantatra fa manana olana iray mahasosotra: fanakanana. Ity lahatsoratra ity dia manazava ny fomba hamahana azy io.

Tao anatin'ny volana vitsivitsy lasa izay, novolavolaina kely ny trano famokarana nomerao kisendrasendra ao amin'ny kernel, saingy ny olana amin'ity subsystem ity dia voavaha nandritra ny fotoana malalaka kokoa. fotoana natokana. Ny be indrindra fiovana farany natao hanakanana ny antson'ny rafitra getrandom() mandritra ny fotoana maharitra rehefa mandeha ny rafitra, fa ny anton'izany dia ny fihetsika fanakanana ny dobo kisendrasendra. Ny patch vao haingana dia nesorina ity dobo ity ary nanantena ny hizotra mankany amin'ny fototra fototra.

Andy Lutomirski dia namoaka ny dikan-teny fahatelo amin'ny patch tamin'ny faran'ny volana Desambra. Mandray anjara izy "fiovana semantika roa lehibe amin'ny API Linux kisendrasendra". Ny patch dia manampy saina GRND_INSECURE vaovao amin'ny antson'ny rafitra getrandom() (na dia miantso azy io ho getentropy() aza i Lutomirsky, izay ampiharina amin'ny glibc mampiasa getrandom() miaraka amin'ny saina raikitra); Ity sainam-pirenena ity dia mahatonga ny antso hamerenana hatrany ny habetsaky ny angona nangatahana, saingy tsy misy antoka fa ny angon-drakitra dia kisendrasendra. Ny kernel dia hanao izay ho afany amin'ny famokarana ny angona kisendrasendra tsara indrindra ananany amin'ny fotoana nomena. "Angamba ny tsara indrindra atao dia ny miantso azy io hoe 'INSECURE' (tsy azo antoka) mba hisakanana ity API ity tsy hampiasaina amin'ny zavatra mila fiarovana."

Esory ny dobo fanakanana ihany koa ireo paty. Ny kernel amin'izao fotoana izao dia mitazona dobo data kisendrasendra roa, ny iray mifanitsy amin'ny / dev / random ary ny iray amin'ny / dev / urandom, araka ny voalaza eto lahatsoratra 2015. Ny dobo fanakanana dia ny dobo ho an'ny /dev/random; Ny famakiana ho an'io fitaovana io dia hisakana (midika ny anarany) mandra-pahazoan'ny entropy "ampy" avy amin'ny rafitra mba hanomezana fahafaham-po ny fangatahana. Ny famakiana fanampiny avy amin'ity rakitra ity dia voasakana ihany koa raha tsy ampy ny entropy ao anaty dobo.

Ny fanesorana ny dobo hidin-trano dia midika fa ny famakiana avy amin'ny /dev/random dia manao toy ny getrandom() miaraka amin'ny saina napetraka ho aotra (ary mamadika ny saina GRND_RANDOM ho noop). Raha vantany vao manomboka ny CRNG, ny famakiana avy amin'ny /dev/random sy ny antso mankany amin'ny getrandom(...,0) dia tsy hanakana ary hamerina ny habetsaky ny data kisendrasendra nangatahana.

Lutomirsky hoy izy: “Mino aho fa efa lany andro ny dobo fanakanana Linux. Ny CRNG Linux dia mamokatra vokatra tsara azo ampiasaina amin'ny famokarana fototra. Ny dobo fanakanana dia tsy matanjaka kokoa amin'ny lafiny ara-materialy ary mitaky fotodrafitrasa be dia be amin'ny sanda mampiahiahy hanohanana azy. "

Ny fanovana dia natao mba hahazoana antoka fa tsy hisy fiantraikany amin'ny programa efa misy, ary raha ny marina, dia ho vitsy kokoa ny olana amin'ny fiandrasana ela ny zavatra toy ny GnuPG key generation.

“Tsy tokony hanelingelina ny fandaharana efa misy ireo fizarana ireo. /dev/urandom dia tsy miova. /dev/random dia mbola manakana avy hatrany rehefa boot, fa tsy dia mibahana loatra noho ny teo aloha. getentropy() miaraka amin'ireo saina efa misy dia hamerina valiny izay mety amin'ny tanjona azo ampiharina toy ny teo aloha."

Lutomirsky dia nanamarika fa mbola fanontaniana misokatra ihany raha tokony hanome ilay antsoina hoe "isa tena kisendrasendra" ny kernel, izay no tokony hataon'ny kernel manakana amin'ny lafiny iray. Antony iray ihany no hitany amin’izany: “fanaraha-maso ny fenitry ny governemanta”. Lutomirsky dia nanoro hevitra fa raha ny kernel no hanome izany, dia tokony hatao amin'ny alalan'ny interface hafa tanteraka, na tokony hafindra any amin'ny mpampiasa habaka, mamela ny mpampiasa haka santionany hetsika manta izay azo ampiasaina hamoronana dobo hidin-trano toy izany.

Stephan Müller dia nanolo-kevitra ny hametraka azy tampina ho an'ny Linux Random Number Generator (LRNG) (navoaka amin'izao fotoana izao ny version 26) dia mety ho fomba iray hanomezana isa tena kisendrasendra ho an'ny rindranasa mila izany. LRNG dia "manaraka tanteraka ny SP800-90B Torolàlana momba ny loharanon'ny entropy ampiasaina hamokarana bits kisendrasendra", ka mahatonga azy io ho vahaolana amin'ny olan'ny fenitry ny governemanta.
Matthew Garrett dia nanohitra ny teny hoe "angona tena kisendrasendra", ary nanamarika fa ny fitaovana nalaina tamin'ny foto-kevitra dia azo atao modely tsara mba hahatonga azy ireo ho azo vinaniana: "tsy maka santionany isika eto."

Namaly i Müller fa ny teny dia avy amin'ny fenitra alemana AIS 31 mba hamaritana ny mpamokatra isa kisendrasendra izay tsy mamokatra afa-tsy vokatra "mitovy amin'ny loharanon'ny tabataba mamokatra entropy."

Ankoatra ny fahasamihafan'ny teny, ny fananana dobo hidin-trano araka ny soso-kevitry ny paty LRNG dia hitarika olana isan-karazany, fara faharatsiny raha miditra tsy misy tombontsoa.

Hoy i Lutomirsky: “Tsy mamaha ny olana izany. Raha mampiasa programa adala toa ny gnupg ny mpampiasa roa samy hafa dia hifampitondra rano fotsiny izy ireo. Hitako fa misy olana roa lehibe amin'izao fotoana izao amin'ny /dev/random: mora amin'ny DoS (izany hoe fahapotehan'ny loharanon-karena, fitaoman-dratsy na zavatra mitovitovy amin'izany), ary satria tsy misy tombontsoa takiana amin'ny fampiasana azy, dia mora amin'ny fanararaotana ihany koa. Diso ny Gnupg, rava tanteraka. Raha manampy interface vaovao tsy misy tombontsoa izay hampiasain'ny gnupg sy ny programa mitovy amin'izany isika, dia ho very indray."

Nanamarika i Mueller fa ny fanampiana ny getrandom() dia hamela ny GnuPG hampiasa an'io interface io, satria hanome antoka ilaina fa efa natomboka ny dobo. Miorina amin'ny fifanakalozan-kevitra miaraka amin'i Werner Koch, mpamorona GnuPG, mino i Mueller fa ny antoka ihany no antony hamakian'ny GnuPG mivantana avy amin'ny /dev/random. Fa raha misy interface tsara tsy misy tombontsoa izay mora mandà ny serivisy (toy ny /dev/random amin'izao fotoana izao), Lutomirsky dia milaza fa hampiasa amin'ny fomba diso ny fampiharana sasany.

Theodore Yue Tak Ts'o, mpamorona ny subsystem isa kisendrasendra an'ny Linux, dia toa niova hevitra momba ny filàna dobo fanakanana. Nilaza izy fa ny fanesorana an'io dobo io dia hanala amin'ny fomba mahomby ny hevitra hoe manana tena mpamokatra nomerao kisendrasendra (TRNG) i Linux: "Tsy misy dikany izany, satria izany indrindra no nataon'ny *BSD."

Manahy ihany koa izy fa ny fanomezana mekanika TRNG dia ho fanjonoana fotsiny ho an'ny mpamorona fampiharana ary mino fa raha ny marina, raha jerena ny karazana fitaovana samihafa tohanan'ny Linux, dia tsy azo atao ny miantoka ny TRNG ao amin'ny kernel. Na ny fahaizana miasa amin'ny fitaovana miaraka amin'ny tombontsoa fototra aza dia tsy hamaha ny olana: "Ny mpamorona fampiharana dia mamaritra fa ny fampiharana azy ireo dia apetraka ho fototry ny fiarovana, ka io no hany fomba ahafahanao miditra amin'ny isa kisendrasendra 'tena tsara'."

Nanontany i Mueller raha nandao ny fampiharana ny dobo fanakanana izay efa natolony hatry ny ela i Cao. Namaly i Cao fa mikasa ny haka ny paty an'i Lutomirsky izy ary manohitra am-pahavitrihana ny fampidirana interface manakana hiverina amin'ny kernel.

"Ny kernel dia tsy afaka manome antoka raha toa ka voamarika tsara ny loharanon'ny tabataba. Ny hany zavatra azon'ny mpamorona GPG na OpenSSL dia ny fahatsapana manjavozavo fa ny TRUERANDOM dia "tsara kokoa", ary satria mila fiarovana bebe kokoa izy ireo, dia tsy isalasalana fa hiezaka hampiasa izany izy ireo. Amin'ny fotoana iray dia ho voasakana izany, ary rehefa misy mpampiasa marani-tsaina hafa (angamba manampahaizana manokana amin'ny fizarana) mampiditra azy ao amin'ny sora-baventy init ary tsy miasa intsony ireo rafitra, dia tsy maintsy mitaraina amin'i Linus Torvalds ihany ny mpampiasa.

Cao koa dia manohana ny fanomezana cryptographers sy ireo izay tena mila TRNG fomba iray hanangonana ny entropy ao amin'ny habaka mpampiasa azy mba hampiasaina araka izay hitany fa mety. Nilaza izy fa ny fanangonana entropy dia tsy dingana azon'ny kernel atao amin'ny fitaovana samihafa tohanany, ary tsy afaka manombatombana ny habetsaky ny entropy omen'ny loharano samihafa ny kernel.

"Ny kernel dia tsy tokony hampifangaro loharano samihafa, ary azo antoka fa tsy tokony hiezaka ny hilaza hoe firy ny entropy azony rehefa manandrana milalao karazana" lalao entropy mihetsiketsika" amin'ny CPU tsotra be. Architecture ho an'ny mpampiasa mpanjifa. Raharaha IOT/Embedded izay tsy mifanaraka amin'ny oscillator master tokana ny zava-drehetra, izay tsy misy toromarika CPU hamerenana na hanova anarana ny rejisitra, sns.

“Azonao atao ny miresaka momba ny fanomezana fitaovana manandrana manao ireo kajikajy ireo, fa ny zavatra toy izany dia tsy maintsy atao amin'ny fitaovana ampiasain'ny mpampiasa tsirairay, izay tsy azo ampiharina amin'ny ankamaroan'ny mpampiasa fizarana. Raha natao ho an'ny kriptografika ihany izany, dia avelao any amin'ny habaka mpampiasa azy. Ary aoka isika tsy hanatsotra ny GPG, OpenSSL, sns, mba hilazan'ny rehetra hoe "mila "tena kisendrasendra" isika ary tsy hipetra-potsiny. Afaka miresaka momba ny fomba anomezantsika fifandraisana amin'ireo kriptografika isika mba hahafahan'izy ireo mahazo ny vaovao ilainy amin'ny alàlan'ny fidirana amin'ireo loharanon-tabataba voalohany, misaraka sy nomena anarana, ary angamba mety hanamarina ny tenany amin'ny tranomboky na fampiharana habaka mpampiasa.

Nisy ny adihevitra momba ny mety ho endriky ny interface toy izany, satria mety hisy fiantraikany amin'ny fiarovana amin'ny hetsika sasany, ohatra. Cao dia nanamarika fa ny kaody scan fitendry (izany hoe fanendry bokotra) dia mifangaro ao anaty dobo iray ho ampahany amin'ny fanangonana entropy: "Tsy fahendrena ny mitondra an'io ho any amin'ny habaka mpampiasa, na dia amin'ny alàlan'ny antso an-tariby manokana aza, dia tsy fahendrena raha lazaina." Azo inoana fa mety hamorona karazana fampahalalam-baovao amin'ny alàlan'ny fantsona an-daniny ny fotoanan'ny hetsika hafa.

Noho izany dia toa ny olana efa hatry ny ela amin'ny subsystem nomerika kisendrasendra an'ny Linux dia eo amin'ny lalana mankany amin'ny vahaolana. Ny fiovana izay nolalovan'ny subsystem isa kisendrasendra vao haingana dia niteraka olana amin'ny DoS raha ny fampiasana azy. Ankehitriny dia misy fomba mahomby hahazoana isa tsara indrindra azon'ny kernel omena. Raha mbola tiana amin'ny Linux ny TRNG, dia mila dinihina amin'ny ho avy io lesoka io, saingy azo inoana fa tsy ho vita ao anatin'ny kernel mihitsy izany.

Ny doka sasany 🙂

Misaotra anao nijanona niaraka taminay. Tianao ve ny lahatsoratray? Te-hahita votoaty mahaliana kokoa? Tohano izahay amin'ny fametrahana baiko na fanolorana amin'ny namana, cloud VPS ho an'ny mpamorona manomboka amin'ny $4.99, analogue tsy manam-paharoa amin'ny mpizara ambaratonga fidirana, izay noforoninay ho anao: Ny marina rehetra momba ny VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps avy amin'ny $19 na ahoana no hizarana mpizara? (misy miaraka amin'ny RAID1 sy RAID10, hatramin'ny 24 cores ary hatramin'ny 40GB DDR4).

Dell R730xd 2x mora kokoa amin'ny foibe data Equinix Tier IV any Amsterdam? Eto ihany 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV manomboka amin'ny $199 any Holandy! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - manomboka amin'ny $99! Vakio ny momba ny Ahoana ny fananganana infrastructure corp. kilasy amin'ny fampiasana mpizara Dell R730xd E5-2650 v4 mitentina 9000 euros amin'ny denaria iray?

Source: www.habr.com

Add a comment