Linux: tshem lub pas dej ua ke / dev / random

/dev/random, lub cryptographically ruaj ntseg pseudo-random tooj generator (CSPRNG), paub tias muaj ib qho teeb meem ntxhov siab: thaiv. Kab lus no piav qhia koj yuav daws tau li cas.

Ob peb lub hlis dhau los no, cov chaw tsim cov naj npawb random nyob rau hauv cov ntsiav tau rov ua haujlwm me ntsis, tab sis cov teeb meem hauv lub subsystem no tau raug daws nyob rau hauv qhov dav. sij hawm. Feem ntau kawg hloov tau tsim los tiv thaiv getrandom() system hu los ntawm thaiv lub sijhawm ntev thaum lub kaw lus khau raj, tab sis lub hauv paus yog vim li cas rau qhov no yog qhov thaiv tus cwj pwm ntawm lub pas dej random. Ib thaj chaw tsis ntev los no yuav tau tshem lub pas dej no thiab nws yuav tsum tau mus rau lub hauv paus tseem ceeb.

Andy Lutomirski tau luam tawm qhov thib peb version ntawm thaj ua rau lub Kaum Ob Hlis kawg. Nws pab "ob qhov kev hloov pauv loj rau random Linux APIs". Lub thaj ntxiv tus chij tshiab GRND_INSECURE rau getrandom() system hu (txawm hais tias Lutomirsky hais txog nws li getentropy(), uas yog siv hauv glibc siv getrandom() nrog cov chij ruaj); tus chij no ua rau hu rau ib txwm rov qab cov ntaub ntawv thov, tab sis tsis tau lees tias cov ntaub ntawv yog random. Lub kernel tsuas yog ua nws qhov zoo tshaj plaws los tsim cov ntaub ntawv zoo tshaj plaws uas nws muaj nyob rau lub sijhawm. "Tej zaum qhov zoo tshaj plaws los ua yog hu nws 'INSECURE' (tsis muaj kev ruaj ntseg) los tiv thaiv qhov API no los ntawm kev siv rau tej yam uas xav tau kev ruaj ntseg. "

Cov thaj ua rau thaj kuj tshem tawm lub pas dej thaiv. Lub kernel tam sim no tuav ob lub pas dej ua ke, ib qho sib txuas rau / dev / random thiab lwm qhov rau / dev / urandom, raws li tau piav qhia hauv no Tshooj 2015. Lub pas dej thaiv yog lub pas dej ua ke rau /dev/random; nyeem rau cov cuab yeej ntawd yuav thaiv (lub ntsiab lus nws lub npe) kom txog thaum "tau" entropy tau sau los ntawm lub kaw lus kom txaus siab rau qhov kev thov. Kev nyeem ntxiv los ntawm cov ntaub ntawv no tseem raug thaiv yog tias tsis muaj entropy txaus hauv lub pas dej.

Tshem tawm lub pas dej xauv txhais tau hais tias kev nyeem ntawv los ntawm /dev/random coj zoo li getrandom() nrog cov chij teeb rau xoom (thiab tig tus chij GRND_RANDOM rau hauv ib qho noop). Thaum lub cryptographic random tooj generator (CRNG) pib, nyeem los ntawm /dev/random thiab hu rau getrandom(...,0) yuav tsis thaiv thiab yuav xa rov qab cov nyiaj thov ntawm cov ntaub ntawv random.

Lutomirsky hais tias: "Kuv ntseeg tias Linux thaiv pas tau dhau los lawm. CRNG Linux tsim cov zis uas zoo txaus txawm tias siv rau tiam tseem ceeb. Lub pas dej thaiv thaiv tsis muaj zog nyob rau hauv ib qho kev nkag siab ntawm cov khoom siv thiab yuav tsum muaj ntau qhov kev tsim kho ntawm qhov tsis zoo los txhawb nws. "

Cov kev hloov pauv tau ua nrog lub hom phiaj ntawm kev ua kom ntseeg tau tias cov kev pabcuam uas twb muaj lawm yuav tsis cuam tshuam tiag tiag, thiab qhov tseeb, yuav muaj teeb meem tsawg dua nrog kev tos ntev rau tej yam xws li GnuPG tseem ceeb tiam.

β€œCov ntu no yuav tsum tsis txhob cuam tshuam ib qho kev pab cuam uas twb muaj lawm. /dev/urandom tseem tsis hloov. /dev/random tseem thaiv tam sim ntawd thaum khau raj, tab sis nws thaiv tsawg dua ua ntej. getenttropy() nrog rau cov chij uas twb muaj lawm yuav rov qab tau qhov txiaj ntsig uas tsuas yog tsim nyog rau cov hom phiaj siv tau ua ntej."

Lutomirsky tau sau tseg tias nws tseem yog ib lo lus nug qhib seb lub ntsiav yuav tsum muab lub npe hu ua "tus lej lej tseeb," uas yog qhov thaiv cov ntsiav yuav tsum ua rau qee yam. Nws pom tsuas yog ib qho laj thawj rau qhov no: "ua raws li tsoomfwv cov qauv." Lutomirsky tau hais tias yog lub kernel yuav tsum muab qhov no, nws yuav tsum tau ua los ntawm kev sib txawv kiag li, lossis nws yuav tsum tau txav mus rau hauv cov neeg siv qhov chaw, tso cai rau tus neeg siv los khaws cov qauv raw cov xwm txheej uas tuaj yeem siv los tsim xws li lub pas dej xauv.

Stephan MΓΌller hais tias nws lub teeb thaj ua rau thaj rau Linux Random Number Generator (LRNG) (tam sim no version 26 tso tawm) tuaj yeem yog txoj hauv kev los muab cov lej sib txawv tiag tiag rau cov ntawv thov uas xav tau. LRNG yog "ua raws li SP800-90B Cov Lus Qhia ntawm Entropy Sources Siv los tsim cov khoom siv Random," ua rau kev daws teeb meem rau tsoomfwv cov qauv teeb meem.
Matthew Garrett tau tawm tsam rau lo lus "cov ntaub ntawv tseeb random," ceeb toom tias cov khoom siv coj mus kuaj tuaj yeem ua qauv raws li qhov txaus los ua kom lawv kwv yees: "peb tsis tau ua piv txwv quantum txheej xwm ntawm no."

MΓΌller tau teb tias lo lus los ntawm German tus qauv AIS 31 los piav qhia txog tus lej random generator uas tsuas yog ua rau qhov tshwm sim "tus nqi tib yam li cov suab nrov hauv qab tsim cov khoom lag luam."

Cov ntsiab lus sib txawv ib sab, muaj lub pas dej xauv raws li tau hais los ntawm LRNG thaj ua rau thaj yuav tsuas ua rau muaj ntau yam teeb meem, tsawg kawg yog tias nws nkag mus yam tsis muaj cai.

Raws li Lutomirsky hais tias: β€œQhov no tsis daws qhov teeb meem. Yog tias ob tus neeg siv sib txawv khiav cov kev pab cuam ruam xws li gnupg, lawv yuav cia li tso ib leeg. Kuv pom tias tam sim no muaj ob qhov teeb meem tseem ceeb nrog / dev / random: nws yog qhov ua rau DoS (piv txwv li kev siv peev txheej, kev ua phem lossis ib yam dab tsi zoo sib xws), thiab vim tias tsis muaj cai siv nws, nws kuj raug tsim txom. Gnupg tsis ncaj ncees lawm, nws yog ib tug tag nrho vau. Yog tias peb ntxiv qhov tshiab tsis tsim nyog interface uas gnupg thiab cov kev pabcuam zoo sib xws yuav siv, peb yuav poob dua. "

Mueller tau sau tseg tias qhov sib ntxiv ntawm getrandom() tam sim no yuav tso cai rau GnuPG siv qhov kev sib tshuam no, vim nws yuav muab qhov tsim nyog lav tias lub pas dej tau pib pib. Raws li kev sib tham nrog GnuPG tus tsim tawm Werner Koch, Mueller ntseeg tias qhov kev lees paub tsuas yog vim li cas GnuPG tam sim no nyeem ncaj qha los ntawm /dev/random. Tab sis yog tias muaj qhov tsis muaj txiaj ntsig zoo uas cuam tshuam rau kev tsis lees paub ntawm kev pabcuam (raws li / dev / random yog hnub no), Lutomirsky sib cav tias nws yuav raug siv tsis raug los ntawm qee cov ntawv thov.

Theodore Yue Tak Ts'o, tus tsim tawm ntawm Linux lub random tooj subsystem, zoo li tau hloov nws lub siab txog qhov xav tau rau lub pas dej thaiv. Nws tau hais tias tshem tawm lub pas dej no yuav muaj txiaj ntsig zoo tshem tawm lub tswv yim tias Linux muaj qhov tseeb random tooj generator (TRNG): "Qhov no tsis yog qhov tsis tseeb, vim qhov no yog qhov * BSD ib txwm ua."

Nws kuj tseem txhawj xeeb tias kev muab TRNG mechanism tsuas yog siv los ua ib qho cuab yeej rau cov neeg tsim daim ntawv thov thiab ntseeg tias qhov tseeb, muab ntau hom kev kho vajtse txhawb nqa los ntawm Linux, nws tsis tuaj yeem lav TRNG hauv cov ntsiav. Txawm tias muaj peev xwm ua haujlwm nrog cov cuab yeej siv nrog cov cai hauv paus yuav tsis daws qhov teeb meem: "Cov neeg tsim daim ntawv thov qhia meej tias lawv daim ntawv thov raug ntsia ua lub hauv paus rau kev ruaj ntseg, yog li qhov no yog tib txoj kev koj tuaj yeem nkag mus rau 'zoo tiag tiag' random tooj."

Mueller nug seb Cao puas tau tso tseg txoj kev thaiv cov pas dej ua ke uas nws tus kheej tau thov ntev. Cao tau teb tias nws npaj yuav coj Lutomirsky thaj ua rau thaj thiab nquag tawm tsam ntxiv qhov thaiv kev cuam tshuam rov qab rau lub ntsiav.

"Lub ntsiav tsis tuaj yeem ua ib qho kev lees paub txog seb lub suab nrov puas tau raug tus cwj pwm zoo. Qhov tsuas yog qhov GPG lossis OpenSSL tus tsim tawm tuaj yeem tau txais yog qhov tsis paub meej tias TRUERANDOM yog "zoo dua", thiab txij li lawv xav tau kev ruaj ntseg ntau dua, lawv yuav tsis xav tsis thoob sim siv nws. Qee lub sijhawm nws yuav raug thaiv, thiab thaum qee tus neeg siv ntse (tej zaum tus kws tshaj lij kev faib khoom) ntxig nws rau hauv cov ntawv sau thiab cov tshuab tsis ua haujlwm, cov neeg siv tsuas yog yuav tsum yws rau Linus Torvalds nws tus kheej. "

Cao kuj tawm tswv yim muab cryptographers thiab cov neeg uas xav tau TRNG ib txoj hauv kev los sau lawv tus kheej entropy hauv cov neeg siv qhov chaw siv raws li lawv pom zoo. Nws hais tias kev sau entropy tsis yog txheej txheem uas tuaj yeem ua tau los ntawm cov ntsiav ntawm txhua qhov sib txawv ntawm cov khoom siv uas nws txhawb nqa, thiab cov kernel nws tus kheej tsis tuaj yeem kwv yees tus nqi ntawm entropy muab los ntawm ntau qhov chaw.

"Lub ntsiav yuav tsum tsis txhob sib xyaw cov suab nrov sib txawv ua ke, thiab nws yeej yuav tsum tsis txhob sim thov kom paub ntau npaum li cas ntawm entropy nws tau txais thaum nws tab tom sim ua si qee yam "twitchy entropy game" ntawm CPU yooj yim outrageously. architecture rau cov neeg siv khoom. IOT / Embedded rooj plaub qhov twg txhua yam tsis sib xws nrog ib tus tswv oscillator, qhov uas tsis muaj cov lus qhia CPU kom rov xaj lossis hloov npe rau npe, thiab lwm yam. "

"Koj tuaj yeem tham txog kev muab cov cuab yeej sim ua cov kev suav no, tab sis tej yam zoo li no yuav tsum tau ua ntawm txhua tus neeg siv khoom kho vajtse, uas tsis yooj yim rau cov neeg siv khoom siv feem ntau. Yog tias qhov no tsuas yog npaj rau cryptographers, ces cia nws ua tiav hauv lawv qhov chaw siv. Thiab cia peb tsis ua kom yooj yim GPG, OpenSSL, thiab lwm yam kom txhua tus neeg hais tias "peb xav tau "qhov tseeb randomness" thiab yuav tsis daws tsawg dua." Peb tuaj yeem tham txog yuav ua li cas peb muab kev cuam tshuam rau cryptographers kom lawv tuaj yeem tau txais cov ntaub ntawv lawv xav tau los ntawm kev nkag mus rau lub suab nrov nrov, sib cais thiab muaj npe, thiab tej zaum qee qhov suab nrov tuaj yeem lees paub nws tus kheej rau lub tsev qiv ntawv lossis cov neeg siv qhov chaw thov. "

Muaj qee qhov kev sib tham txog qhov zoo li no interface yuav zoo li cas, vim piv txwv li tej zaum yuav muaj kev cuam tshuam txog kev nyab xeeb rau qee qhov xwm txheej. Cao tau sau tseg tias cov keyboard scan codes (piv txwv li keystrokes) tau sib xyaw rau hauv lub pas dej ua ib feem ntawm entropy sau: "Nqa qhov no rau hauv cov neeg siv qhov chaw, txawm tias dhau los ntawm kev hu xov tooj, yuav tsis txawj hais qhov tsawg tshaj plaws." Nws yog qhov ua tau tias lwm lub sijhawm tshwm sim tuaj yeem tsim qee yam ntaub ntawv xa tawm los ntawm sab raws.

Yog li nws zoo li qhov teeb meem ntev nrog Linux tus lej random subsystem yog nyob rau hauv txoj kev los daws qhov teeb meem. Cov kev hloov pauv uas tus lej random subsystem tau dhau los tsis ntev los no tsuas yog ua rau DoS teeb meem thaum siv nws. Tam sim no muaj ntau txoj hauv kev kom tau txais cov lej zoo tshaj plaws uas cov ntsiav tuaj yeem muab tau. Yog tias TRNG tseem xav tau ntawm Linux, ces qhov tsis zoo no yuav tsum tau hais rau yav tom ntej, tab sis feem ntau qhov no yuav tsis ua tiav hauv cov ntsiav nws tus kheej.

Ib co ads πŸ™‚

Ua tsaug uas koj tau nyob nrog peb. Koj puas nyiam peb cov ntawv? Xav pom cov ntsiab lus nthuav ntxiv? Txhawb nqa peb los ntawm kev tso ib qho kev txiav txim lossis qhia rau cov phooj ywg, huab VPS rau cov tsim tawm los ntawm $ 4.99, ib qho tshwj xeeb analogue ntawm nkag-theem servers, uas tau tsim los ntawm peb rau koj: Qhov tseeb tag nrho txog VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps los ntawm $ 19 los yog yuav ua li cas faib cov server? (muaj nrog RAID1 thiab RAID10, mus txog 24 cores thiab mus txog 40GB DDR4).

Dell R730xd 2x pheej yig dua hauv Equinix Tier IV data center hauv Amsterdam? Tsuas yog nyob ntawm no 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV los ntawm $ 199 hauv Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - los ntawm $ 99! Nyeem txog Yuav ua li cas tsim infrastructure Corp. chav kawm nrog kev siv Dell R730xd E5-2650 v4 servers muaj nqis 9000 euros rau ib lub nyiaj?

Tau qhov twg los: www.hab.com

Ntxiv ib saib