Linux: mbusak blumbang kunci /dev/random

/ dev / acak, generator nomer pseudo-acak cryptographically aman (CSPRNG), dikenal duwe masalah ngganggu: pamblokiran. Artikel iki nerangake carane sampeyan bisa ngatasi.

Ing sawetara sasi kepungkur, fasilitas generasi nomer acak ing kernel wis rada digarap maneh, nanging masalah ing subsistem iki wis ditanggulangi liwat dalan sing luwih akeh. pigura wektu. Paling owah-owahan pungkasan digawe kanggo nyegah getrandom () telpon sistem Watesan kanggo dangu nalika sistem boots, nanging alesan ndasari iki prilaku Watesan saka blumbang acak. A tembelan anyar bakal mbusak blumbang iki lan wis samesthine kanggo Kepala menyang inti utama.

Andy Lutomirski nerbitake versi katelu saka tembelan ing pungkasan Desember. Dheweke nyumbang "loro owah-owahan semantik utama menyang API Linux acak". Tembelan nambah flag GRND_INSECURE anyar kanggo getrandom () sistem telpon (sanajan Lutomirsky nuduhake minangka getentropy (), kang dipun ginakaken ing glibc nggunakake getrandom () karo panji tetep); flag iki nimbulakΓ© telpon tansah bali jumlah data sing dijaluk, nanging tanpa njamin sing data acak. Kernel mung bakal nindakake sing paling apik kanggo ngasilake data acak sing paling apik ing wektu tartamtu. "Mungkin sing paling apik yaiku nelpon 'INSECURE' (ora aman) kanggo nyegah API iki digunakake kanggo perkara sing mbutuhake keamanan."

Patch uga mbusak blumbang pamblokiran. Kernel saiki njaga rong kumpulan data acak, siji cocog karo / dev / acak lan liyane kanggo / dev / urandom, kaya sing diterangake ing iki. artikel 2015. Kolam pamblokiran iku blumbang kanggo / dev / acak; maca kanggo piranti sing bakal mblokir (tegese jeneng) nganti "cukup" entropi wis diklumpukake saka sistem kanggo gawe marem request. Waca liyane saka file iki uga diblokir yen ora cukup entropi ing blumbang.

Mbusak blumbang kunci tegese maca saka / dev / acak tumindak kaya getrandom () karo gendΓ©ra disetel kanggo nul (lan nguripake flag GRND_RANDOM menyang noop). Sawise generator nomer acak cryptographic (CRNG) diwiwiti, maca saka / dev / acak lan nelpon menyang getrandom (..., 0) ora bakal mblokir lan bakal ngasilake jumlah data acak sing dijaluk.

Lutomirsky ngandika: "Aku percaya yen blumbang pamblokiran Linux wis dadi lungse. CRNG Linux ngasilake output sing cukup apik kanggo digunakake kanggo generasi kunci. Kolam pamblokiran kasebut ora kuwat ing babagan materi lan mbutuhake akeh prasarana sing bisa diragukan kanggo ndhukung.

Owah-owahan kasebut ditindakake kanthi tujuan kanggo mesthekake yen program sing wis ana ora bakal kena pengaruh, lan nyatane, bakal ana masalah sing luwih sithik nalika ngenteni suwe kanggo perkara kaya generasi kunci GnuPG.

"Episod iki ora kena ngganggu program sing wis ana. / dev / urandom tetep ora owah. / dev / acak isih mblokir langsung nalika boot, nanging pamblokiran kurang saka sadurunge. getentropy() karo gendera sing ana bakal ngasilake asil sing cocog kanggo tujuan praktis kaya sadurunge."

Lutomirsky nyathet yen isih ana pitakonan sing mbukak apa kernel kudu nyedhiyakake sing diarani "nomer acak sing bener," yaiku apa sing kudu ditindakake dening kernel pamblokiran. Dheweke ndeleng mung siji alesan kanggo iki: "selaras karo standar pemerintah." Lutomirsky nyaranake yen kernel nyedhiyakake iki, kudu ditindakake liwat antarmuka sing beda banget, utawa kudu dipindhah menyang ruang pangguna, supaya pangguna bisa njupuk conto acara mentah sing bisa digunakake kanggo nggawe blumbang kunci kasebut.

Stephan MΓΌller ngusulake supaya pesawate tambalan kanggo Linux Random Number Generator (LRNG) (versi saiki 26 dirilis) bisa dadi cara kanggo nyedhiyani nomer acak bener kanggo aplikasi sing mbutuhake. LRNG "selaras karo Pedoman SP800-90B babagan Sumber Entropi sing Digunakake kanggo Ngasilake Bit Acak," dadi solusi kanggo masalah standar pemerintah.
Matthew Garrett mbantah istilah "data acak sing sejatine," nyathet manawa piranti sing diconto ing prinsip bisa dimodelake kanthi tepat supaya bisa diprediksi: "kita ora nggawe conto acara kuantum ing kene."

Müller nanggapi yen istilah kasebut asale saka standar Jerman AIS 31 kanggo njlèntrèhaké generator nomer acak sing mung ngasilake asil "ing tingkat sing padha karo sumber gangguan sing ndasari ngasilake entropi."

Beda terminologi aside, gadhah blumbang kunci minangka disaranake dening patch LRNG mung bakal mimpin kanggo macem-macem masalah, paling yen diakses tanpa hak istimewa.

Minangka Lutomirsky ngandika: "Iki ora ngrampungake masalah. Yen loro pangguna beda mbukak program bodho kaya gnupg, padha mung bakal saluran saben liyane. Aku weruh sing saiki ana loro masalah utama karo / dev / acak: iku rawan kanggo DoS (i. e. sumber daya panipisan, pengaruh angkoro utawa soko padha), lan wiwit ora ana hak istimewa sing dibutuhake kanggo nggunakake, iku uga rawan kanggo planggaran. Gnupg salah, iku ambruk lengkap. Yen kita nambah antarmuka unprivileged anyar sing gnupg lan program padha bakal digunakake, kita bakal ilang maneh."

Mueller nyatet sing Kajaba saka getrandom () saiki bakal ngidini GnuPG nggunakake antarmuka iki, awit iku bakal nyedhiyani njamin perlu sing blumbang wis initialized. Adhedhasar diskusi karo pangembang GnuPG Werner Koch, Mueller yakin manawa jaminan mung siji-sijine alesan GnuPG maca langsung saka /dev/random. Nanging yen ana antarmuka unprivileged sing rentan kanggo nolak layanan (minangka / dev / acak dina iki), Lutomirsky argue sing bakal misused dening sawetara aplikasi.

Theodore Yue Tak Ts'o, pangembang subsistem nomer acak Linux, katon wis ngganti pikirane babagan perlu kanggo blumbang pamblokiran. Dheweke ujar manawa mbusak blumbang iki bakal ngilangi ide manawa Linux duwe generator nomer acak (TRNG): "Iki dudu omong kosong, amarga iki pancen sing ditindakake *BSD."

Dheweke uga prihatin yen nyedhiyakake mekanisme TRNG mung bakal dadi umpan kanggo pangembang aplikasi lan percaya yen nyatane, amarga macem-macem jinis hardware sing didhukung Linux, ora bisa njamin TRNG ing kernel. Malah kemampuan kanggo nggarap peralatan mung kanthi hak istimewa root ora bakal ngrampungake masalah: "Pengembang aplikasi nemtokake manawa aplikasi kasebut diinstal minangka root kanggo tujuan keamanan, supaya iki mung siji-sijine cara sampeyan bisa ngakses nomer acak sing 'apik banget'."

Mueller takon apa Cao wis nilar implementasine blumbang pamblokiran sing piyambak wis dawa ngajokaken. Cao nanggapi yen dheweke rencana njupuk patch Lutomirsky lan aktif nentang nambahake antarmuka pamblokiran maneh menyang kernel.

"Kernel ora bisa njamin manawa sumber swara wis diciriake kanthi bener. Siji-sijine pangembang GPG utawa OpenSSL yaiku perasaan sing ora jelas yen TRUERANDOM "luwih apik", lan amarga pengin keamanan luwih akeh, mesthine bakal nyoba nggunakake. Ing sawetara titik bakal diblokir, lan nalika sawetara pangguna pinter liyane (mbok menawa spesialis distribusi) nglebokake ing skrip init lan sistem mandheg digunakake, pangguna mung kudu sambat marang Linus Torvalds dhewe.

Cao uga nyengkuyung menehi kriptografi lan wong-wong sing bener-bener butuh TRNG cara kanggo panen entropi dhewe ing ruang pangguna supaya bisa digunakake kaya sing dikarepake. Dheweke ujar manawa ngempalaken entropi dudu proses sing bisa ditindakake dening kernel ing kabeh hardware sing beda-beda sing didhukung, lan kernel uga ora bisa ngira jumlah entropi sing diwenehake dening macem-macem sumber.

"Kernel ngirim ora nyampur sumber swara beda bebarengan, lan mesthi ora kudu nyoba kanggo ngaku ngerti carane akeh bit saka entropi iku njupuk nalika nyoba kanggo muter sawetara jenis" game entropi twitchy "ing CPU outrageously prasaja. arsitektur kanggo pangguna konsumen. Kasus IOT / Embedded sing kabeh ora sinkron karo osilator master siji, sing ora ana instruksi CPU kanggo ngatur maneh utawa ngganti jeneng registrasi, lsp.

"Sampeyan bisa ngomong babagan nyediakake alat sing nyoba nindakake petungan kasebut, nanging perkara kasebut kudu ditindakake ing saben hardware pangguna, sing mung ora praktis kanggo umume pangguna distribusi. Yen iki mung ditrapake kanggo para kriptografi, mula ditindakake ing ruang pangguna. Lan aja nyederhanakake GPG, OpenSSL, lan liya-liyane supaya saben wong ngomong "kita pengin "acak bener" lan ora bakal mapan. Kita bisa ngomong babagan cara nyedhiyakake antarmuka kanggo para kriptografi supaya bisa entuk informasi sing dibutuhake kanthi ngakses sumber swara utama, dipisahake lan dijenengi, lan bisa uga sumber swara bisa otentikasi dhewe menyang perpustakaan utawa aplikasi ruang pangguna.

Ana sawetara dhiskusi babagan kaya apa antarmuka kasebut, amarga umpamane, bisa uga ana implikasi keamanan kanggo sawetara acara. Cao nyathet yen kode pindai keyboard (yaiku keystrokes) dicampur dadi blumbang minangka bagΓ©an saka koleksi entropi: "Nggawa iki menyang ruang panganggo, sanajan liwat telpon sistem sing duwe hak istimewa, mesthine ora wicaksana." Bisa uga manawa wektu acara liyane bisa nggawe sawetara jinis kebocoran informasi liwat saluran sisih.

Dadi katon kaya masalah sing wis suwe karo subsistem nomer acak Linux ana ing dalan menyang solusi. Owah-owahan sing ditindakake dening subsistem nomer acak bubar mung nyebabake masalah DoS nalika nggunakake. Saiki ana cara sing efisien kanggo entuk nomer acak sing paling apik sing bisa diwenehake kernel. Yen TRNG isih dikarepake ing Linux, cacat iki kudu ditanggulangi ing mangsa ngarep, nanging kemungkinan iki ora bakal ditindakake ing kernel dhewe.

Sawetara iklan πŸ™‚

Matur nuwun kanggo tetep karo kita. Apa sampeyan seneng karo artikel kita? Pengin ndeleng konten sing luwih menarik? Ndhukung kita kanthi nggawe pesenan utawa menehi rekomendasi menyang kanca, cloud VPS kanggo pangembang saka $4.99, analog unik saka server level entri, sing diciptakake kanggo sampeyan: Bebener kabeh babagan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps saka $ 19 utawa carane nuduhake server? (kasedhiya karo RAID1 lan RAID10, munggah 24 intine lan nganti 40GB DDR4).

Dell R730xd 2 kaping luwih murah ing pusat data Equinix Tier IV ing Amsterdam? Mung kene 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV saka $199 ing Walanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - saka $99! Maca babagan Carane mbangun infrastruktur corp. kelas karo nggunakake Dell R730xd E5-2650 v4 server worth 9000 euro kanggo Penny?

Source: www.habr.com

Add a comment