Linux: yiyọ adagun titiipa / dev/ID

/ dev/ID, olupilẹṣẹ nọmba ID apseudo kan ti o ni aabo cryptographically (CSPRNG), ni a mọ lati ni iṣoro didanubi kan: idilọwọ. Nkan yii ṣe alaye bi o ṣe le yanju rẹ.

Ni awọn oṣu diẹ sẹhin, awọn ohun elo iran nọmba laileto ninu ekuro ti ni atunṣe diẹ, ṣugbọn awọn iṣoro ninu eto-ipilẹ yii ti ni ipinnu ni akoko ti o gbooro. asiko. Julọ julọ kẹhin ayipada ni a ṣe lati ṣe idiwọ ipe eto getrandom () lati dina fun igba pipẹ nigbati awọn bata orunkun eto, ṣugbọn idi pataki fun eyi ni ihuwasi ìdènà ti adagun laileto. Patch laipe kan yoo ti yọ adagun-odo yii kuro ati pe yoo ti nireti lati lọ si ọna mojuto akọkọ.

Andy Lutomirski ṣe atẹjade ẹya kẹta ti alemo ni opin Oṣu kejila. O ṣe alabapin "ayipada atunmọ pataki meji si Lainos APIs laileto". Patch naa ṣe afikun asia GRND_INSECURE tuntun si eto eto getrandom (biotilejepe Lutomirsky tọka si bi getentropy (), eyiti a ṣe ni glibc nipa lilo getrandom () pẹlu awọn asia ti o wa titi); Flag yii nfa ipe pada nigbagbogbo iye data ti o beere, ṣugbọn laisi idaniloju pe data jẹ laileto. Ekuro yoo ṣe ohun ti o dara julọ lati ṣe agbejade data ID ti o dara julọ ti o ni ni akoko ti a fifun. "Boya ohun ti o dara julọ lati ṣe ni pe ni 'AILẸNI' (ailewu) lati ṣe idiwọ API yii fun lilo awọn nkan ti o nilo aabo."

Awọn abulẹ tun yọ adagun ìdènà. Ekuro lọwọlọwọ n ṣetọju awọn adagun data ID meji, ọkan ti o baamu / dev/random ati ekeji si / dev/urandom, bi a ti ṣalaye ninu eyi article Ọdun 2015. Awọn ìdènà pool ni awọn pool fun / dev / ID; kika fun ẹrọ yẹn yoo dina (itumọ orukọ rẹ) titi di igba ti a ti gba “to” entropy lati inu eto lati ni itẹlọrun ibeere naa. Awọn kika siwaju lati faili yii tun jẹ idinamọ ti ko ba si entropy to ni adagun-odo.

Yiyọ kuro ni adagun titiipa tumọ si pe kika lati / dev / ID ṣe ihuwasi bi getrandom () pẹlu awọn asia ti a ṣeto si odo (o si yi asia GRND_RANDOM sinu noop kan). Ni kete ti olupilẹṣẹ nọmba ID cryptographic (CRNG) ti wa ni ipilẹṣẹ, kika lati / dev/ ID ati awọn ipe si getrandom(...,0) kii yoo dina ati pe yoo da iye ti o beere fun data ID pada.

Lutomirsky sọ pé: “Mo gbagbọ pe adagun dina Linux ti di atijo. CRNG Lainos ṣe ipilẹṣẹ iṣelọpọ ti o dara to lati paapaa lo fun iran bọtini. Adagun ìdènà ko ni okun sii ni eyikeyi ọna ohun elo ati pe o nilo ọpọlọpọ awọn amayederun ti iye ṣiyemeji lati ṣe atilẹyin. ”

Awọn ayipada ni a ṣe pẹlu ibi-afẹde ti idaniloju pe awọn eto ti o wa tẹlẹ kii yoo ni ipa gaan, ati ni otitọ, awọn iṣoro diẹ yoo wa pẹlu awọn iduro gigun fun awọn nkan bii iran bọtini GnuPG.

“Awọn iṣẹlẹ wọnyi ko gbọdọ dabaru eyikeyi awọn eto ti o wa tẹlẹ. /dev/urandom maa wa ko yipada. / dev / ID si tun di awọn bulọọki lẹsẹkẹsẹ lori bata, ṣugbọn o jẹ ki o kere ju ti iṣaaju lọ. getentropy () pẹlu awọn asia ti o wa tẹlẹ yoo da abajade kan pada ti o jẹ deede fun awọn idi iṣe bi iṣaaju.”

Lutomirsky ṣe akiyesi pe o tun jẹ ibeere ṣiṣi boya ekuro yẹ ki o pese ohun ti a pe ni “awọn nọmba ID otitọ,” eyiti o jẹ ohun ti ekuro idinamọ yẹ lati ṣe si iwọn kan. Ó rí ìdí kan ṣoṣo fún èyí: “ìbára mọ́ àwọn ìlànà ìjọba.” Lutomirsky daba pe ti ekuro ba pese eyi, o yẹ ki o ṣee ṣe nipasẹ wiwo ti o yatọ patapata, tabi o yẹ ki o gbe lọ si aaye olumulo, gbigba olumulo laaye lati gba awọn apẹẹrẹ iṣẹlẹ iṣẹlẹ aise ti o le ṣee lo lati ṣẹda iru adagun titiipa kan.

Stephan Müller daba pe ṣeto rẹ awọn abulẹ fun Lainos ID Number monomono (LRNG) (Lọwọlọwọ version 26 tu) le jẹ ọna kan lati pese otitọ awọn nọmba ID fun awọn ohun elo ti o nilo. LRNG jẹ “ni ifaramọ ni kikun pẹlu Awọn Itọsọna SP800-90B lori Awọn orisun Entropy Ti a lo lati Ṣe ipilẹṣẹ Awọn Bits Aileto,” ṣiṣe ni ojutu si iṣoro awọn iṣedede ijọba.
Matthew Garrett tako ọrọ naa “data laileto tootọ,” ṣakiyesi pe awọn ẹrọ ti a ṣapejuwe le jẹ apẹrẹ ni deede to lati jẹ ki wọn jẹ asọtẹlẹ: “a ko ṣe apẹẹrẹ awọn iṣẹlẹ kuatomu nibi.”

Müller fesi pe ọrọ naa wa lati boṣewa German AIS 31 lati ṣe apejuwe olupilẹṣẹ nọmba ID kan ti o ṣe abajade nikan “ni iwọn kanna bi orisun ariwo ti o wa ni ipilẹ ti n ṣe agbejade entropy.”

Awọn iyatọ ọrọ-ọrọ ni apakan, nini adagun titiipa bi a ti daba nipasẹ awọn abulẹ LRNG yoo rọrun ja si awọn iṣoro pupọ, o kere ju ti o ba wọle laisi awọn anfani.

Gẹgẹbi Lutomirsky sọ: “Eyi ko yanju iṣoro naa. Ti awọn olumulo oriṣiriṣi meji ba ṣiṣẹ awọn eto aṣiwere bii gnupg, wọn yoo kan fa ara wọn silẹ. Mo rii pe awọn iṣoro akọkọ meji lọwọlọwọ wa pẹlu / dev / ID: o ni itara si DoS (ie idinku awọn orisun, ipa irira tabi nkan ti o jọra), ati pe nitori ko si awọn anfani ti o nilo lati lo, o tun ni ilokulo. Gnupg ko tọ, o jẹ iparun patapata. Ti a ba ṣafikun wiwo ti ko ni anfani tuntun ti gnupg ati awọn eto ti o jọra yoo lo, a yoo padanu lẹẹkansi.”

Mueller ṣe akiyesi pe afikun ti getrandom () yoo gba GnuPG laaye lati lo wiwo yii, nitori yoo pese iṣeduro pataki pe adagun naa ti wa ni ibẹrẹ. Da lori awọn ijiroro pẹlu GnuPG Olùgbéejáde Werner Koch, Mueller gbagbo wipe awọn lopolopo jẹ nikan ni idi GnuPG Lọwọlọwọ ka taara lati / dev/ID. Ṣugbọn ti o ba wa ni wiwo ti ko ni anfani ti o ni ifaragba si kiko iṣẹ (bi / dev / ID jẹ loni), Lutomirsky jiyan pe yoo jẹ ilokulo nipasẹ awọn ohun elo kan.

Theodore Yue Tak Ts'o, Olùgbéejáde ti Linux ká ID nọmba subsystem, han lati ti yi pada ọkàn rẹ nipa awọn nilo fun a ìdènà pool. O sọ pe yiyọ adagun-odo yii yoo mu imunadoko kuro ni imọran pe Linux ni olupilẹṣẹ nọmba ID otitọ (TRNG): "Eyi kii ṣe isọkusọ, nitori eyi ni pato ohun ti * BSD ti ṣe nigbagbogbo."

O tun ṣe aniyan pe ipese ẹrọ TRNG kan yoo ṣiṣẹ ni irọrun bi idẹ fun awọn olupilẹṣẹ ohun elo ati gbagbọ pe ni otitọ, fun awọn oriṣi ohun elo ti o ni atilẹyin nipasẹ Linux, ko ṣee ṣe lati ṣe iṣeduro TRNG ninu ekuro. Paapaa agbara lati ṣiṣẹ pẹlu ohun elo nikan pẹlu awọn anfani gbongbo kii yoo yanju iṣoro naa: "Awọn olupilẹṣẹ ohun elo pato pe a fi sori ẹrọ ohun elo wọn bi gbongbo fun awọn idi aabo, nitorinaa eyi ni ọna kan ṣoṣo ti o le wọle si awọn nọmba laileto 'dara gaan'."

Mueller beere boya Cao ti kọ imuse adagun adagun duro ti on tikararẹ ti daba fun igba pipẹ. Cao dahun pe o ngbero lati mu awọn abulẹ Lutomirsky ati ni itara tako fifi wiwo idinamọ pada si ekuro.

“Ekuro ko le ṣe awọn iṣeduro eyikeyi boya boya orisun ariwo ti jẹ afihan daradara. Ohun kan ṣoṣo ti GPG tabi OpenSSL Olùgbéejáde le gba ni rilara aiduro pe TRUERANDOM “dara julọ”, ati pe niwọn igba ti wọn fẹ aabo diẹ sii, laiseaniani wọn yoo gbiyanju lati lo. Ni aaye kan yoo dina, ati nigbati diẹ ninu awọn olumulo ọlọgbọn miiran (boya alamọja pinpin) fi sii sinu iwe afọwọkọ init ati awọn ọna ṣiṣe da iṣẹ duro, awọn olumulo yoo ni lati kerora si Linus Torvalds funrararẹ. ”

Cao tun ṣe agbero fifun awọn oluyaworan ati awọn ti o nilo TRNG ni ọna lati ṣe ikore entropy tiwọn ni aaye olumulo lati lo bi wọn ṣe rii pe o yẹ. O sọ pe gbigba entropy kii ṣe ilana ti o le ṣe nipasẹ ekuro lori gbogbo ohun elo oriṣiriṣi ti o ṣe atilẹyin, tabi ekuro funrararẹ ko le ṣe iṣiro iye entropy ti a pese nipasẹ awọn orisun oriṣiriṣi.

“Ekuro ko yẹ ki o dapọ awọn orisun ariwo oriṣiriṣi papọ, ati pe dajudaju ko yẹ ki o gbiyanju lati beere lati mọ iye awọn die-die ti entropy ti o n gba nigbati o n gbiyanju lati mu iru “ere entropy twitchy” lori Sipiyu ti o rọrun pupọ. faaji fun awọn olumulo olumulo. IOT/Awọn ọran ti a fi sii nibiti ohun gbogbo ko ni amuṣiṣẹpọ pẹlu oscillator ọga kan, nibiti ko si itọnisọna Sipiyu lati tunto tabi tunrukọ iforukọsilẹ, ati bẹbẹ lọ. ”

“O le sọrọ nipa ipese awọn irinṣẹ ti o gbiyanju lati ṣe awọn iṣiro wọnyi, ṣugbọn iru awọn nkan ni lati ṣee ṣe lori ohun elo olumulo kọọkan, eyiti ko wulo fun pupọ julọ awọn olumulo pinpin. Ti eyi ba jẹ ipinnu nikan fun awọn oluyaworan, lẹhinna jẹ ki o ṣee ṣe ni aaye olumulo wọn. Ati pe ki a ma ṣe simplify GPG, OpenSSL, ati bẹbẹ lọ ki gbogbo eniyan sọ pe "a fẹ "aileto otitọ" ati pe kii yoo yanju fun kere si." A le sọrọ nipa bawo ni a ṣe n pese awọn atọkun si awọn oluyaworan ki wọn le gba alaye ti wọn nilo nipa iraye si awọn orisun ariwo akọkọ, ti a ya sọtọ ati ti a darukọ, ati boya bakan orisun ariwo le ṣe ijẹrisi ararẹ si ile-ikawe tabi ohun elo aaye olumulo. ”

Ifọrọwọrọ kan wa nipa kini iru wiwo le dabi, nitori fun apẹẹrẹ awọn ilolu aabo le wa fun awọn iṣẹlẹ kan. Cao ṣe akiyesi pe awọn koodu ọlọjẹ keyboard (ie awọn bọtini bọtini) ti wa ni idapọ sinu adagun kan gẹgẹbi apakan ti gbigba entropy: “Kiko eyi sinu aaye olumulo, paapaa nipasẹ ipe eto eto, yoo jẹ aimọgbọnwa lati sọ o kere ju.” O ṣee ṣe pupọ pe awọn akoko iṣẹlẹ miiran le ṣẹda iru jijo alaye nipasẹ awọn ikanni ẹgbẹ.

Nitorinaa o dabi pe iṣoro ti o duro pẹ pipẹ pẹlu eto ipilẹ nọmba ID ti Linux wa ni ọna si ojutu kan. Awọn ayipada ti awọn nọmba ID nọmba subsystem ti lọ laipẹ ti kosi nikan ja si ni DoS oran nigba lilo o. Bayi awọn ọna ti o munadoko wa lati gba awọn nọmba ID ti o dara julọ ti ekuro le pese. Ti TRNG tun jẹ iwunilori lori Lainos, lẹhinna abawọn yii yoo nilo lati koju ni ọjọ iwaju, ṣugbọn o ṣeeṣe julọ eyi kii yoo ṣee ṣe laarin ekuro funrararẹ.

Diẹ ninu awọn ipolowo 🙂

O ṣeun fun gbigbe pẹlu wa. Ṣe o fẹran awọn nkan wa? Ṣe o fẹ lati rii akoonu ti o nifẹ si diẹ sii? Ṣe atilẹyin fun wa nipa gbigbe aṣẹ tabi iṣeduro si awọn ọrẹ, awọsanma VPS fun awọn olupilẹṣẹ lati $ 4.99, afọwọṣe alailẹgbẹ ti awọn olupin ipele-iwọle, eyiti a ṣẹda nipasẹ wa fun ọ: Gbogbo otitọ nipa VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps lati $19 tabi bi o ṣe le pin olupin kan? (wa pẹlu RAID1 ati RAID10, to awọn ohun kohun 24 ati to 40GB DDR4).

Dell R730xd 2x din owo ni Equinix Tier IV ile-iṣẹ data ni Amsterdam? Nikan nibi 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV lati $199 ni Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - lati $99! Ka nipa Bii o ṣe le kọ Infrastructure Corp. kilasi pẹlu awọn lilo ti Dell R730xd E5-2650 v4 apèsè pa 9000 yuroopu fun Penny?

orisun: www.habr.com

Fi ọrọìwòye kun