Linux: retire lock pool /dev/random

/dev/random, yon dèlko pseudo-random number (CSPRNG) ki an sekirite kriptografik, li te ye genyen yon pwoblèm anmèdan: bloke. Atik sa a eksplike kijan ou ka rezoud li.

Pandan kèk mwa ki sot pase yo, enstalasyon jenerasyon nimewo o aza nan nwayo a te yon ti kras retravay, men pwoblèm nan subsistèm sa a te rezoud sou kou a pi laj. kad tan. Pi plis la dènye chanjman yo te fè pou anpeche apèl sistèm getrandom() bloke pou yon bon bout tan lè sistèm lan demare, men rezon ki kache pou sa a se te konpòtman bloke nan pisin o aza. Yon patch ki sot pase yo ta retire pisin sa a epi li ta dwe dirije nan direksyon nwayo prensipal la.

Andy Lutomirski pibliye twazyèm vèsyon patch la nan fen Desanm. Li kontribye "de gwo chanjman semantik nan API Linux o aza". Patch la ajoute yon nouvo drapo GRND_INSECURE nan apèl sistèm getrandom() (byenke Lutomirsky refere li kòm getentropy(), ki aplike nan glibc lè l sèvi avèk getrandom() ak drapo fiks); drapo sa a lakòz apèl la toujou retounen kantite done yo mande yo, men san yo pa garanti ke done yo se o aza. Kernel la pral tou senpleman fè pi byen li yo pou pwodui pi bon done o aza li genyen nan moman yo bay la. "Pwobableman pi bon bagay pou w fè se rele l 'ANSEKIR. (ensekirite) pou anpeche API sa a itilize pou bagay ki bezwen sekirite."

Patch yo tou retire pisin nan bloke. Kernel la kounye a kenbe de pisin done o aza, youn ki koresponn ak /dev/random ak lòt la nan /dev/uradom, jan sa dekri nan sa a. Atik 2015. Pisin nan bloke se pisin lan pou /dev/random; lekti pou aparèy sa a pral bloke (sa vle di non li) jiskaske "ase" entropi yo te kolekte nan sistèm nan satisfè demann lan. Pli lwen lekti nan dosye sa a tou bloke si pa gen ase entropi nan pisin lan.

Retire pisin lock la vle di ke lekti nan /dev/random konpòte li tankou getrandom() ak drapo mete a zewo (epi li vire drapo GRND_RANDOM nan yon noop). Yon fwa dèlko nimewo o aza kriptografik la (CRNG) inisyalize, lekti nan /dev/random ak apèl nan getrandom(...,0) pa pral bloke epi yo pral retounen kantite done o aza yo mande yo.

Lutomirsky di: "Mwen kwè ke pisin bloke Linux la vin demode. CRNG Linux jenere pwodiksyon ki bon ase pou menm itilize pou jenerasyon kle. Pisin bloke a pa pi fò nan okenn sans materyèl e li mande anpil enfrastrikti ki gen anpil valè pou sipòte li.”

Chanjman yo te fèt ak objektif pou asire ke pwogram ki deja egziste yo pa ta reyèlman afekte, e an reyalite, ta gen mwens pwoblèm ak tan tann pou bagay tankou jenerasyon kle GnuPG.

"Ezòd sa yo pa dwe deranje okenn pwogram ki egziste deja. /dev/urandom rete san chanjman. /dev/random toujou bloke imedyatman sou bòt, men li bloke mwens pase anvan. getentropy() ak drapo ki deja egziste yo pral retounen yon rezilta ki apwopriye pou rezon pratik tankou anvan."

Lutomirsky te note ke li se toujou yon kesyon ouvè si nwayo a ta dwe bay sa yo rele "vrè nimewo o aza," ki se sa nwayo a bloke te sipoze fè nan yon sèten limit. Li wè yon sèl rezon pou sa: "konfòmite ak estanda gouvènman an." Lutomirsky sigjere ke si nwayo a te bay sa a, li ta dwe fè atravè yon koòdone konplètman diferan, oswa li ta dwe deplase nan espas itilizatè a, ki pèmèt itilizatè a rekipere echantiyon evènman anvan tout koreksyon ki ta ka itilize yo kreye tankou yon pisin fèmen.

Stephan Müller sijere ke mete l 'yo plak pou Linux Random Number Generator (LRNG) (aktyèlman vèsyon 26 lage) ta ka yon fason yo bay nimewo o aza vre pou aplikasyon ki bezwen li. LRNG se "konfòme nèt ak SP800-90B Gid sou sous entropi yo itilize pou jenere Bits o aza," fè li yon solisyon a pwoblèm estanda gouvènman an.
Matthew Garrett te fè objeksyon kont tèm "vrè done o aza" la, li te remake ke aparèy yo pran echantiyon yo ta ka an prensip modelize ase jisteman pou fè yo previzib: "nou pa pran echantiyon evènman pwopòsyon isit la."

Müller reponn ke tèm nan soti nan estanda Alman AIS 31 pou dekri yon dèlko nimewo o aza ki sèlman pwodui yon rezilta "nan menm vitès ak sous bri ki kache a pwodui entropi."

Diferans tèminoloji sou kote, gen yon pisin fèmen jan yo sijere pa plak LRNG yo pral tou senpleman mennen nan divès pwoblèm, omwen si li gen aksè san privilèj.

Kòm Lutomirsky te di: “Sa a pa rezoud pwoblèm nan. Si de itilizatè diferan kouri pwogram estipid tankou gnupg, yo pral jis vide youn ak lòt. Mwen wè ke kounye a gen de pwoblèm prensipal ak /dev/random: li gen tandans fè DoS (sa vle di rediksyon resous, enfliyans move oswa yon bagay ki sanble), epi kòm pa gen okenn privilèj yo oblije itilize li, li tou tendans abi. Gnupg mal, se yon efondreman konplè. Si nou ajoute yon nouvo koòdone san privilèj ke gnupg ak pwogram ki sanble ap itilize, n ap pèdi ankò."

Mueller te note ke adisyon a nan getrandom() pral pèmèt GnuPG sèvi ak koòdone sa a, paske li pral bay garanti ki nesesè ke pisin lan te inisyalize. Dapre diskisyon ak pwomotè GnuPG Werner Koch, Mueller kwè ke garanti a se sèl rezon ki fè GnuPG kounye a li dirèkteman nan /dev/random. Men, si gen yon koòdone san privilèj ki sansib a refi sèvis (tankou /dev/random se jodi a), Lutomirsky diskite ke kèk aplikasyon pral mal itilize li.

Theodore Yue Tak Ts'o, pwomotè sous-sistèm nimewo o aza Linux, sanble li te chanje lide sou bezwen pou yon pisin bloke. Li te di ke retire pisin sa a ta efektivman debarase m de lide ke Linux gen yon vrè dèlko nimewo o aza (TRNG): "sa a se pa istwa san sans, depi sa a se egzakteman sa * BSD te toujou fè."

Li se tou konsène ke bay yon mekanis TRNG pral tou senpleman sèvi kòm yon Garnier pou devlopè aplikasyon epi li kwè ke an reyalite, bay diferan kalite pyès ki nan konpitè sipòte pa Linux, li enposib garanti TRNG nan nwayo a. Menm kapasite nan travay ak ekipman sèlman ak privilèj rasin pa pral rezoud pwoblèm nan: "Devlopè aplikasyon yo presize ke aplikasyon yo dwe enstale kòm rasin pou rezon sekirite, se konsa ke sa a se sèl fason ou ka jwenn aksè 'reyèlman bon' nimewo yo o aza."

Mueller te mande si Cao te abandone aplikasyon pisin bloke ke li menm li te pwopoze depi lontan. Cao reponn ke li planifye pou pran plak Lutomirsky yo ak aktivman opoze ajoute yon koòdone bloke tounen nan nwayo a.

"Nwayo a pa ka bay okenn garanti sou si sous bri a te byen karakterize. Sèl bagay yon pwomotè GPG oswa OpenSSL ka jwenn se yon santiman vag ke TRUERANDOM se "pi bon", epi depi yo vle plis sekirite, yo pral san dout eseye sèvi ak li. Nan kèk pwen, li pral bloke, epi lè yon lòt itilizatè entelijan (petèt yon espesyalis distribisyon) foure li nan script init la epi sistèm yo sispann travay, itilizatè yo pral sèlman gen pou pote plent bay Linus Torvalds li menm."

Cao tou defann bay kriptograf ak moun ki aktyèlman bezwen TRNG yon fason pou rekòlte pwòp entropi yo nan espas itilizatè yo itilize jan yo wè anfòm. Li di ke kolekte entropi se pa yon pwosesis ki ka fèt pa nwayo a sou tout pyès ki nan konpitè diferan li sipòte, ni nwayo a li menm li ka estime kantite entropi ki bay pa diferan sous.

"Nwayo a pa ta dwe melanje diferan sous bri ansanm, epi li sètènman pa ta dwe eseye fè reklamasyon pou konnen konbyen bit nan entropi li ap resevwa lè li ap eseye jwe yon kalite "jwèt entropi twitchy" sou yon CPU ekzòbitan senp. Achitekti pou itilizatè konsomatè yo. Ka IOT/Embedded kote tout bagay pa senkronize ak yon sèl osilator mèt, kote pa gen okenn enstriksyon CPU pou rekòmande oswa chanje non yon rejis, elatriye.

"Ou ka pale sou bay zouti ki eseye fè kalkil sa yo, men bagay sa yo dwe fè sou pyès ki nan konpitè chak itilizatè, ki tou senpleman pa pratik pou pifò itilizatè distribisyon. Si sa a fèt sèlman pou kriptograf, Lè sa a, kite li dwe fè nan espas itilizatè yo. Epi ann pa senplifye GPG, OpenSSL, elatriye pou tout moun di "nou vle "vrè aza" epi yo pa pral rezoud pou mwens." Nou ka pale sou fason nou bay koòdone kriptograf yo pou yo ka jwenn enfòmasyon yo bezwen lè yo jwenn aksè nan sous prensipal bri yo, separe ak non, e petèt yon jan kanmenm sous bri a ka otantifye tèt li nan yon bibliyotèk oswa aplikasyon espas itilizatè."

Te gen kèk diskisyon sou kisa yon koòdone sa yo ta ka sanble, paske pou egzanp ta ka gen enplikasyon sekirite pou kèk evènman. Cao te note ke kòd eskanè klavye (sa vle di frap) yo melanje nan yon pisin kòm yon pati nan koleksyon antropi: "Pote sa a nan espas itilizatè, menm atravè yon apèl sistèm privilejye, ta dwe saj pou di pi piti." Li se byen posib ke lòt tan evènman ka kreye kèk kalite flit enfòmasyon atravè chanèl bò.

Se konsa, li sanble ke yon pwoblèm ki dire lontan ak subsistèm nimewo o aza Linux a se sou wout la nan yon solisyon. Chanjman yo ke subsistèm nimewo o aza te sibi dènyèman te aktyèlman sèlman lakòz pwoblèm DoS pandan w ap itilize li. Koulye a, gen fason efikas pou jwenn pi bon nimewo o aza nwayo a ka bay. Si TRNG toujou dezirab sou Linux, Lè sa a, defo sa a pral bezwen adrese nan lavni an, men gen plis chans sa a pa pral fè nan nwayo a li menm.

Kèk piblisite 🙂

Mèsi paske w rete avèk nou. Ou renmen atik nou yo? Vle wè plis kontni enteresan? Sipòte nou pa mete yon lòd oswa rekòmande pou zanmi, nwaj VPS pou devlopè soti nan $ 4.99, yon analogue inik nan sèvè nivo antre, ki te envante pa nou pou ou: Tout verite sou VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps soti nan $ 19 oswa ki jan yo pataje yon sèvè? (disponib ak RAID1 ak RAID10, jiska 24 nwayo ak jiska 40GB DDR4).

Dell R730xd 2 fwa pi bon mache nan sant done Equinix Tier IV nan Amstèdam? Sèlman isit la 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV soti nan $199 nan Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - soti nan $ 99! Li sou Ki jan yo bati enfrastrikti corp. klas ak itilizasyon Dell R730xd E5-2650 v4 serveurs ki vo 9000 ero pou yon jounen travay?

Sous: www.habr.com

Add nouvo kòmantè