Linux: rakirina hewza qefilê /dev/random

/dev/random, çêkerek hejmarên pseudo-random (CSPRNG) ewledar a krîptografî, tê zanîn ku pirsgirêkek acizker heye: astengkirin. Ev gotar diyar dike ku hûn çawa dikarin wê çareser bikin.

Di van çend mehên borî de, dezgehên hilberîna hejmarên rasthatî yên di kernelê de hinekî ji nû ve hatine xebitandin, lê pirsgirêkên di vê jêrpergalê de bi dirêjahiya berfirehtir hatine çareser kirin. çarçoveya demê. Herî zêde guhertinên dawîn hatin çêkirin da ku pêşî li astengkirina banga pergala getrandom() ji bo demek dirêj ve were girtin dema ku pergalê boot dike, lê sedema bingehîn a vê yekê tevgera astengkirina hewza random bû. Pêvekek vê dawîyê dê vê hewzê rakira û dê were hêvî kirin ku ew ber bi bingeha bingehîn ve biçe.

Andy Lutomirski guhertoya sêyemîn a patchê di dawiya Kanûnê de weşand. Ew beşdariyê dike "du guhertinên girîng ên semantîk ên API-yên Linux-ê yên rasthatî". Patch ala nû ya GRND_INSECURE li banga pergala getrandom() zêde dike (tevî ku Lutomirsky wê wekî getentropy() binav dike, ku di glibc de bi karanîna getrandom() bi alayên sabît tête bicîh kirin); ev ala dibe sedem ku bang her gav mîqdara daneya daxwazkirî vegerîne, lê bêyî garantîkirina ku dane rasthatî ne. Kernel dê bi hêsanî çêtirîn xwe bike da ku daneyên çêtirîn rasthatî yên ku di dema hatî dayîn de hilberîne. "Dibe ku baştirîn tiştê ku were kirin ev e ku jê re dibêjin 'Bêbawer' (ne ewledar) ji bo ku pêşî li vê API-ê bigire ku ji bo tiştên ku hewceyê ewlehiyê ne were bikar anîn."

Pêçikan jî hewza astengkirinê radike. Kernel niha du hewzên daneya rasthatî diparêze, yek bi /dev/random û ya din bi /dev/urandom re têkildar e, wekî ku di vê de hatî destnîşan kirin. gotara 2015. Hewza astengkirinê hewza /dev/random e; ji bo wê cîhazê dixwîne dê asteng bike (tê wateya navê wê) heya ku "têra xwe" entropî ji pergalê were berhev kirin da ku daxwazê ​​têr bike. Xwendinên din ên ji vê pelê jî têne asteng kirin heke di hewzê de têr entropî nebe.

Rakirina hewza qefilandinê tê vê wateyê ku xwendina ji /dev/random mîna getrandom() tevdigere û alên li ser sifir hatine danîn (û ala GRND_RANDOM vediguhere noop). Dema ku hilberînerê hejmarên bêserûber ên krîptografî (CRNG) dest pê kir, xwendina ji /dev/random û bang li getrandom(...,0) nayê asteng kirin û dê mîqdara daneya rasthatî ya daxwazkirî vegerîne.

Lutomirsky dibêje: "Ez bawer dikim ku hewza astengkirina Linux-ê kevn bûye. CRNG Linux hilberek ku têra xwe baş e ku ji bo nifşa sereke jî were bikar anîn diafirîne. Hewza astengkirinê di ti wateya madî de ne bihêztir e û ji bo piştgirîkirina wê pêdivî bi gelek binesaziyên bi nirxek gumanbar heye."

Guhertin bi mebesta ku pê ewle bibin ku bernameyên heyî bi rastî bandor nebin, hatine çêkirin, û bi rastî, dê kêm pirsgirêkên li bendên dirêj ên tiştên mîna nifşa sereke ya GnuPG hebin.

“Divê ev beş tu bernameyên heyî asteng nekin. /dev/urandom nayê guhertin. /dev/random hîn jî yekser piştî bootê asteng dike, lê ew ji berê kêmtir asteng dike. getentropy() bi alayên heyî re dê encamek ku ji bo armancên pratîkî yên berê guncan e vegerîne."

Lutomirsky destnîşan kir ku ew hîn jî pirsek vekirî ye ku gelo divê kernel bi navê "hejmarên rasthatî yên rastîn" peyda bike, ya ku diviyabû ku kernelê astengker heya radeyekê bike. Ew ji bo vê yekê tenê yek sedem dibîne: "lihevhatina bi standardên hukûmetê." Lutomirsky pêşniyar kir ku ger kernel viya peyda bike, divê ew bi navgînek bi tevahî cûda ve were kirin, an jî divê ew di cîhê bikarhêner de were veguheztin, ku bihêle bikarhêner nimûneyên bûyera xav ku dikare were bikar anîn ji bo afirandina hewzek kilîtkirî ya wusa bistîne.

Stephan Müller ev seta xwe pêşniyar kir patches ji bo Linux Random Generator (LRNG) (niha guhertoya 26-ê hatî berdan) dikare bibe rêyek ji bo peydakirina hejmarên rasthatî ji bo serîlêdanên ku jê re hewce ne. LRNG "bi tevahî Rêbernameyên SP800-90B yên li ser Çavkaniyên Entropiyê yên Ji bo Hilberîna Biteyên Tesadûfî têne bikar anîn re lihevhatî ye", ew ji bo pirsgirêka standardên hukûmetê çareseriyek dike.
Matthew Garrett li dijî têgîna "daneyên rasthatî yên rastîn" nerazî bû, û destnîşan kir ku cîhazên hatine nimûne kirin di prensîbê de dikarin bi qasî ku wan pêşbînbar bikin model bikin: "Em li vir bûyerên quantum nimûne nakin."

Müller bersiv da ku ev têgîn ji standarda Almanî AIS 31 tê da ku hilberînerek hejmarên bêserûber rave bike ku tenê encamek çêdike "bi heman rêjeya ku çavkaniya dengî ya bingehîn entropiyê çêdike."

Cûdahiyên termînolojiyê li hêlekê, hebûna hewzek kilîtkirî ya ku ji hêla pêlên LRNG ve hatî pêşniyar kirin dê tenê bibe sedema pirsgirêkên cihêreng, bi kêmî ve heke bê îmtiyaz were gihîştin.

Wekî ku Lutomirsky got: “Ev pirsgirêkê çareser nake. Ger du bikarhênerên cihêreng bernameyên ehmeqî yên mîna gnupg bimeşînin, ew ê tenê hevûdu zuha bikin. Ez dibînim ku niha du pirsgirêkên sereke bi /dev/random re hene: ew ji bo DoS-ê (ango kêmbûna çavkaniyê, bandora xirab an tiştek wusa ye), û ji ber ku ji bo karanîna wê îmtiyaz ne hewce ye, ew di heman demê de mêldarê destdirêjiyê ye. Gnupg xelet e, ew bi tevahî hilweşînek e. Ger em navgînek nû ya bêdestûr ku gnupg û bernameyên mîna wê bikar bînin zêde bikin, em ê dîsa winda bikin."

Mueller destnîşan kir ku lêzêdekirina getrandom() dê naha rê bide GnuPG ku vê navberê bikar bîne, ji ber ku ew ê garantiya pêwîst peyda bike ku hewz hatî destpêkirin. Li ser bingeha nîqaşên bi pêşdebirê GnuPG Werner Koch re, Mueller bawer dike ku garantî yekane sedem e ku GnuPG niha rasterast ji /dev/random dixwîne. Lê heke navbeynek bêdestûr hebe ku ji redkirina karûbarê re têkildar e (wek ku îro /dev/random e), Lutomirsky arguman dike ku ew ê ji hêla hin serîlêdanan ve xelet were bikar anîn.

Theodore Yue Tak Ts'o, pêşdebirê binepergala hejmarên çawalêhato ya Linux-ê, dixuye ku hişê xwe di derbarê hewcedariya hewza astengkirinê de guhezandiye. Wî got ku rakirina vê hewzê dê bi bandor ji ramana ku Linux xwedan çêkerek hejmarên rasthatî (TRNG) e, xilas bike: "ev ne bêaqil e, ji ber ku ev e ya ku *BSD her gav kiriye."

Ew di heman demê de fikar e ku peydakirina mekanîzmayek TRNG-ê dê tenê ji bo pêşdebirên serîlêdanê wekî xelekek xizmet bike û bawer dike ku bi rastî, ji ber cûreyên cûda yên hardware yên ku ji hêla Linux ve têne piştgirî kirin, ne gengaz e ku TRNG di kernelê de were garantî kirin. Tewra şiyana xebata bi alavên tenê bi îmtiyazên root re dê pirsgirêkê çareser neke: "Pêşvebirên serîlêdanê diyar dikin ku serîlêdana wan ji bo mebestên ewlehiyê wekî root were saz kirin, da ku tenê bi vî rengî hûn karibin xwe bigihînin hejmarên rasthatî yên 'bi rastî baş'."

Mueller pirsî gelo Cao dev ji pêkanîna hewza astengkirinê berdaye ku wî bixwe demek dirêj pêşniyar kiribû. Cao bersiv da ku ew plan dike ku paçên Lutomirsky bigire û bi aktîvî li dijî lê zêdekirina navbeynek astengker li kernelê ye.

"Kernel nikare garantiyek bide ka ka çavkaniya deng bi rêkûpêk hatî diyar kirin an na. Tişta ku pêşdebirek GPG an OpenSSL dikare bistîne hestek nezelal e ku TRUERANDOM "çêtir" e, û ji ber ku ew bêtir ewlehiyê dixwazin, ew ê bê guman hewl bidin ku wê bikar bînin. Di deverekê de ew ê were asteng kirin, û gava ku hin bikarhênerek din a jîr (dibe ku pisporek belavkirinê) wê têxe nav skrîpta destpêkê û pergalên xebatê rawestînin, bikarhêner dê tenê ji Linus Torvalds re gilî bikin."

Cao di heman demê de parêzvan dike ku ji krîptografan û yên ku bi rastî hewceyê TRNG-ê ne rêyek bide da ku entropiya xwe di cîhê bikarhêner de berhev bike da ku wekî ku ew guncan dibînin bikar bînin. Ew dibêje ku berhevkirina entropiyê ne pêvajoyek e ku ji hêla kernelê ve li ser hemî hardwareyên cihêreng ên ku ew piştgirî dike were meşandin, ne jî kernel bixwe dikare mîqdara entropiyê ya ku ji hêla çavkaniyên cihêreng ve hatî peyda kirin texmîn bike.

"Divê kernel çavkaniyên cuda dengî bi hev re tevlihev neke, û bê guman pêdivî ye ku ew ne hewil bide ku bizanibe çend bit entropiyê distîne dema ku ew hewl dide ku li ser CPU-yek pir hêsan dilîze cûreyek "lîstika entropiyê ya twitchy" bilîze. mîmarî ji bo bikarhênerên xerîdar. IOT / Bûyerên pêvekirî yên ku her tişt bi yek oscilatorek sereke re ne hevdeng e, li ku derê rêwerzek CPU-yê tune ku ji nû ve rêzkirin an navek qeydê biguherîne, hwd.

"Hûn dikarin li ser peydakirina amûrên ku hewl didin van hesaban bikin bipeyivin, lê tiştên weha divê li ser hardware ya her bikarhênerek bêne kirin, ku ji bo piraniya bikarhênerên belavkirinê ne pratîkî ye. Ger ev tenê ji bo krîptografan tête armanc kirin, wê hingê bila ew di cîhê bikarhênerê wan de were kirin. Û bila em GPG, OpenSSL, hwd. sade nekin da ku her kes bêje "em "rasthatîbûna rastîn" dixwazin û em ê kêm nebin." Em dikarin biaxivin ka em çawa pêwendiyan ji krîptografan re peyda dikin da ku ew agahdariya ku ew hewce ne bi gihîştina çavkaniyên dengê seretayî, veqetandî û binavkirî bistînin, û dibe ku bi rengekî çavkaniya deng dikare xwe bi pirtûkxaneyek an serîlêdana cîhê bikarhêner verast bike."

Hin nîqaş li ser wê yekê hate kirin ku têkiliyek wusa çawa xuya dike, ji ber ku mînakî dibe ku ji bo hin bûyeran encamên ewlehiyê hebin. Cao destnîşan kir ku kodên şopandina klavyeyê (ango lêdana bişkojkan) wekî beşek ji berhevkirina entropiyê di hewzek de têne tevlihev kirin: "Ka anîna vê nav cîhê bikarhêner, tewra bi bangek pergalê ya îmtiyazê, bi kêmanî bêaqil nabe." Pir mimkun e ku demên din ên bûyeran dikarin bi kanalên alîgir ve cûreyek lewazkirina agahdariyê biafirînin.

Ji ber vê yekê wusa dixuye ku pirsgirêkek demdirêj a bi bine-pergala hejmarên bêserûber a Linux-ê li ser riya çareseriyê ye. Guhertinên ku di van demên dawî de bine-pergala hejmarên rasthatî derbas bûye, di dema karanîna wê de tenê di pirsgirêkên DoS-ê de encam dane. Naha awayên bikêr hene ku meriv hejmarên herî rasthatî yên ku kernel dikare peyda bike bigire. Ger TRNG hîn jî li Linux-ê tê xwestin, wê hingê pêdivî ye ku ev xeletî di pêşerojê de were çareser kirin, lê bi îhtîmalek mezin ew ê di nav kernel bixwe de neyê kirin.

Hin reklam 🙂

Spas ji bo ku hûn bi me re bimînin. Ma hûn ji gotarên me hez dikin? Ma hûn dixwazin naveroka balkêştir bibînin? Piştgiriya me bikin bi danîna fermanek an pêşniyarkirina hevalan, ewr VPS ji bo pêşdebiran ji 4.99 $, analogek bêhempa ya pêşkêşkerên asta têketinê, ku ji hêla me ve ji bo we hatî vedîtin: Tevahiya rastiyê di derbarê VPS (KVM) E5-2697 v3 (6 Cores) 10 GB DDR4 480 GB SSD 1Gbps ji 19 $ an çawa serverek parve dike? (bi RAID1 û RAID10, heta 24 core û heya 40 GB DDR4 peyda dibe).

Dell R730xd 2x erzantir li navenda daneya Equinix Tier IV li Amsterdam? Tenê li vir 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ji 199$ li Hollanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ji $99! Li ser bixwînin Meriv çawa pargîdaniya binesaziyê ava dike. pola bi karanîna serverên Dell R730xd E5-2650 v4 bi nirxek 9000 euro ji bo quruşek?

Source: www.habr.com

Add a comment