Linux: rimuzione di u pool di blocchi /dev/random

/dev/random, un generatore di numeri pseudo-aleatoriu criptograficamente sicuru (CSPRNG), hè cunnisciutu per avè un prublema fastidiosu: u bloccu. Questu articulu spiega cumu pudete risolve.

In l'ultimi mesi, e facilità di generazione di numeri aleatorii in u kernel sò state ligeramente rielaborate, ma i prublemi in questu sottosistema sò stati risolti in u cursu di u più largu. quadru di tempu. U più l'ultimi cambiamenti sò stati fatti per impedisce a chjama di u sistema getrandom () da bluccà per un bellu pezzu quandu u sistema boots, ma u mutivu sottostante per questu era u cumpurtamentu di bloccu di a piscina casuale. Un patch recente avaria sguassatu di sta piscina è si avissi aspittatu per andà versu u core principale.

Andy Lutomirski hà publicatu a terza versione di u patch à a fini di dicembre. Ellu cuntribuisce dui cambiamenti semantichi maiò in l'API aleatorii Linux». U patch aghjusta una nova bandiera GRND_INSECURE à a chjama di u sistema getrandom() (ancu se Lutomirsky si riferisce à questu cum'è getentropy (), chì hè implementatu in glibc usendu getrandom () cù bandieri fissi); sta bandiera face chì a chjama torna sempre a quantità di dati dumandata, ma senza guarantisci chì i dati sò casuali. U kernel farà solu u so megliu per pruduce e megliu dati aleatorii chì hà in u mumentu datu. "Probabilmente u megliu da fà hè di chjamà" INSECURE " (insicure) per impedisce chì questa API sia usata per e cose chì necessitanu di sicurità ".

I patch eliminanu ancu a piscina di bloccu. U kernel mantene attualmente dui pools di dati aleatoriu, unu chì currisponde à /dev/random è l'altru à /dev/urandom, cum'è deskrittu in questu. articulu 2015. A piscina di bloccu hè a piscina per /dev/random; leghje per quellu dispusitivu bluccarà (chì significheghja u so nome) finu à chì "abbastanza" entropia hè stata cullata da u sistema per suddisfà a dumanda. Ulteriori letture da stu schedariu sò ancu bluccati se ùn ci hè micca abbastanza entropia in a piscina.

Eliminà u pool di serratura significa chì a lettura da /dev/random si comporta cum'è getrandom() cù bandiere pusate à zero (è trasforma a bandiera GRND_RANDOM in un noop). Una volta chì u generatore di numeri aleatoriu criptograficu (CRNG) hè inizializatu, a lettura da /dev/random è chjama à getrandom (...) ùn bluccarà micca è restituverà a quantità dumandata di dati aleatorii.

Lutomirsky dice: "Pensu chì a piscina di bloccu Linux hà superatu a so utilità. Linux genera un output abbastanza bonu ancu per esse adupratu per a generazione di chjave. Un pool di bloccu ùn hè micca più forte in alcun modu materiale, è u so mantenimentu richiede assai infrastrutture di valore dubbitu.

I cambiamenti sò stati fatti cù l'obiettivu di assicurà chì i prugrammi esistenti ùn saranu micca veramente affettati, è in fattu, ci saria menu prublemi cù longu aspittà per cose cum'è a generazione di chjave GnuPG.

"Questi episodi ùn devenu micca disturbà i prugrammi esistenti. /dev/urandom resta invariatu. /dev/random blocca sempre immediatamente dopu à u boot, ma blucca menu chè prima. getentropy() cù i bandieri esistenti restituverà un risultatu chì hè cusì adattatu per scopi pratichi cum'è prima ".

Lutomirsky hà nutatu chì hè sempre una quistione aperta se u kernel duveria furnisce i cosiddetti "numeri casuali veri", chì hè ciò chì u kernel di bloccu duverebbe fà in una certa misura. Ellu vede solu una ragione per questu: "rispettu à i normi di u guvernu". Lutomirsky hà suggeritu chì, se u kernel avia da furnisce questu, deve esse fattu per una interfaccia completamente diversa, o si deve esse spustatu in u spaziu di l'utilizatori, chì permettenu à l'utilizatore per ritruvà campioni di l'avvenimentu crudu chì puderia esse usatu per creà un tali pool di serratura.

Stephan Müller hà suggeritu chì u so set patchs per un generatore di numeri aleatorii Linux (LRNG) (attualmente in versione 26) pò esse un modu per furnisce veri numeri aleatorii per l'applicazioni chì li necessitanu. LRNG "cunforma pienamente à i requisiti di a Raccomandazione per e Fonti d'Entropia Aduprate per a Generazione di Bit Aleatori SP800-90B", ciò chì ne face una suluzione à u prublema di i standard guvernamentali.
Matthew Garrett s'oppone à u terminu "veri dati casuali", nutendu chì i dispositi campionati puderanu in principiu esse modellati abbastanza precisamente per fà li prevedibili: "ùn avemu micca campionamentu di l'avvenimenti quantistici quì".

Müller hà rispostu chì u terminu vene da u standard tedescu AIS 31 per discrìviri un generatore di numeri aleatorii chì solu pruduce un risultatu "à u listessu ritmu cum'è a fonte di rumore sottostante produce entropia".

Differenze di terminologia da parte, avè una piscina di serratura cum'è suggerita da i patch LRNG purterà solu à parechji prublemi, almenu s'ellu hè accessu senza privilegi.

Cum'è Lutomirsky hà dettu: "Questu ùn risolve micca u prublema. Se dui utilizatori diffirenti eseguinu prugrammi stupidi cum'è gnupg, si sguasseranu solu l'un l'altru. Vecu chì ci sò attualmente dui prublemi principali cù /dev/random: hè propensu à DoS (vale à dì l'esaurimentu di risorse, influenza maliziosa o qualcosa simili), è postu chì ùn ci hè micca bisognu di privilegi per aduprà, hè ancu propensu à l'abusu. Gnupg hè sbagliatu, hè un colapsu cumpletu. Se aghjustemu una nova interfaccia senza privilege chì gnupg è prugrammi simili anu da aduprà, perdemu di novu ".

Mueller hà nutatu chì l'aghjunzione di getrandom() permetterà avà à GnuPG di utilizà sta interfaccia, postu chì furnisce a garanzia necessaria chì a piscina hè stata inizializzata. Basatu nantu à discussioni cù u sviluppatore di GnuPG Werner Koch, Mueller crede chì a guaranzia hè l'unicu mutivu chì GnuPG attualmente leghje direttamente da /dev/random. Ma s'ellu ci hè una interfaccia senza privilege chì hè suscettibile à a negazione di serviziu (cum'è /dev/random hè oghje), Lutomirsky sustene chì serà abusatu da alcune applicazioni.

Theodore Ts'o (Theodore Yue Tak Ts'o), sviluppatore di u sottosistema di numeri aleatorii Linux, apparentemente hà cambiatu idea nantu à a necessità di una piscina di bloccu. Hà dettu chì a so rimuzione eliminerebbe efficacemente l'idea chì Linux hà un veru generatore di numeri aleatorii (TRNG): "Questu ùn hè micca assuciatu, postu chì questu hè esattamente ciò chì * BSD hà sempre fattu".

Hè ancu preoccupatu chì furnisce un mecanismu TRNG servirà solu cum'è un'esca per i sviluppatori di applicazioni è crede chì in realtà, datu i sfarenti tipi di hardware supportati Linux, hè impussibile di guarantisce TRNG in u kernel. Ancu permette solu i privilegi di root per operà l'hardware ùn risolverà micca u prublema: "I sviluppatori di l'applicazioni specificanu chì a so applicazione sia installata cum'è root per scopi di sicurezza, perchè questu hè l'unicu modu per accede à i numeri aleatorii "veramente boni".

Mueller a demandé si Cao avait abandonné l'implémentation du pool de blocage qu'il avait lui-même proposé depuis longtemps. Cao hà rispostu chì pensa à piglià i patch di Lutomirsky è s'oppone attivamente à aghjunghje una interfaccia di bloccu torna à u kernel.

"U kernel ùn pò micca dà garanzie in quantu à se a fonte di u rumore hè stata carattarizzata bè. L'unicu ciò chì un sviluppatore GPG o OpenSSL pò uttene hè una sensazione vaga chì TRUERANDOM hè "megliu", è postu chì volenu più sicurità, senza dubbitu pruvaranu à aduprà. À un certu puntu serà bluccatu, è quandu un altru utilizatore intelligente (forse un specialista di distribuzione) l'inserisce in u script init è i sistemi cessanu di travaglià, l'utilizatori anu da solu lamentà à Linus Torvalds stessu ".

Cao sustene ancu di dà à i criptografi è à quelli chì anu veramente bisognu di TRNG un modu di cugliera a so propria entropia in u spaziu di l'utilizatori per aduprà cum'è li vede. Dice chì a cullizzioni di l'entropia ùn hè micca un prucessu chì pò esse realizatu da u kernel nantu à tutti i diversi hardware chì sustene, nè u kernel stessu pò estimà a quantità di entropia furnita da diverse fonti.

"U kernel ùn deve micca mischjà diverse fonti di rumore inseme, è certamente ùn deve micca pruvà à pretende di sapè quanti bits d'entropia riceve quandu si prova à ghjucà un tipu di "ghjocu di entropia twitchy" in un CPU scandalosamente simplice. architettura per l'utilizatori di i cunsumatori. IOT / Casi Embedded induve tuttu hè fora di sincronia cù un unicu oscillatore maestru, induve ùn ci hè micca struzzione di CPU per riordinà o rinominà un registru, etc.

"Pudete parlà di furnisce strumenti chì pruvate di fà questi calculi, ma tali cose anu da esse fattu nantu à u hardware di ogni utilizatore, chì ùn hè simplicemente micca praticu per a maiò parte di l'utilizatori di distribuzione. Se questu hè destinatu solu à i criptografi, allora lasciate esse fattu in u so spaziu d'utilizatori. È ùn simplificàmu micca GPG, OpenSSL, etc., cusì chì tutti dicenu "vulemu "veru aleatoriu" è ùn si stallanu micca di menu". Pudemu parlà di cumu furnimu interfacce à i criptografi per ch'elli ponu uttene l'infurmazioni chì anu bisognu accedendu à e fonti di rumore primariu, separati è chjamati, è forsi in qualchì manera a fonte di rumore pò autentificà sè stessu à una biblioteca o una applicazione spaziale d'utilizatore ".

Ci hè stata una discussione nantu à ciò chì una tale interfaccia puderia esse cum'è, postu chì, per esempiu, puderia esse implicazioni di sicurezza per certi avvenimenti. Cao hà nutatu chì i codici di scansione di u teclatu (vale à dì i tasti) sò mischiati in una piscina cum'è parte di a cullizzioni d'entropia: "Purtà questu in u spaziu di l'utilizatori, ancu per mezu di una chjama di sistema privilegiata, ùn saria micca prudente per dì u minimu". Hè abbastanza pussibule chì altri timing di l'avvenimenti ponu creà una sorta di fuga d'infurmazioni attraversu i canali laterali.

Cusì, pare chì u prublema di longa data di u sottosistema di numeri aleatorii Linux hè in strada per una suluzione. I cambiamenti chì u sottosistema di numeri aleatorii hà subitu recentemente anu purtatu solu à prublemi DoS durante u so usu. Avà, però, ci sò modi efficaci per ottene i migliori numeri aleatorii chì u kernel pò furnisce. Se TRNG hè sempre desiderabile per Linux, tandu sta carenza duverà esse affrontata in u futuru, ma assai prubabilmente questu ùn serà micca fattu in u kernel stessu.

Certi annunzii 🙂

Grazie per stà cun noi. Ti piace i nostri articuli ? Vulete vede più cuntenutu interessante? Supportaci facendu un ordine o ricumandendu à l'amichi, cloud VPS per sviluppatori da $ 4.99, un analogu unicu di servitori di livellu d'entrata, chì hè statu inventatu da noi per voi: Tutta a verità nantu à VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps da $ 19 o cumu si sparte un servitore? (dispunibule cù RAID1 è RAID10, finu à 24 core è finu à 40GB DDR4).

Dell R730xd 2 volte più prezzu in u centru di dati Equinix Tier IV in Amsterdam? Solu quì 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV da $ 199 in l'Olanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - da $ 99! Leghje circa Cumu custruisce una infrastruttura corp. classa cù l'usu di i servitori Dell R730xd E5-2650 v4 valenu 9000 XNUMX euro per un centesimu?

Source: www.habr.com

Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster