لینکس: د تالاشۍ حوض لرې کول /dev/random

/dev/random، د کریپټوګرافیک خوندي سیډو - تصادفي شمیرې جنریټر (CSPRNG) ، د یوې ځورونکي ستونزې په توګه پیژندل کیږي: بلاک کول. دا مقاله تشریح کوي چې تاسو یې څنګه حل کولی شئ.

په تیرو څو میاشتو کې، په کرنل کې د تصادفي شمیر تولید تاسیسات یو څه بیا کار شوي، مګر په دې فرعي سیسټم کې ستونزې د پراخیدو په جریان کې حل شوي. د وخت موده. ډېر وروستي بدلونونه د getrandom() سیسټم کال د اوږدې مودې لپاره د بندیدو څخه مخنیوي لپاره رامینځته شوي کله چې سیسټم بوټ کیږي ، مګر د دې اصلي لامل د تصادفي پول بلاک کولو چلند و. یو وروستي پیچ به دا حوض لرې کړی وي او تمه کیږي چې اصلي کور ته لاړ شي.

انډي لوتومیرسکي د ډسمبر په پای کې د پیچ ​​دریمه نسخه خپره کړه. هغه مرسته کوي "په تصادفي لینکس APIs کې دوه لوی سیمانټیک بدلونونه". پیچ د getrandom() سیسټم کال ته نوی GRND_INSECURE بیرغ اضافه کوي (که څه هم لوټومیرسکي دې ته د getentropy() په توګه اشاره کوي ، کوم چې په glibc کې د ثابت بیرغونو سره د getrandom() په کارولو سره پلي کیږي)؛ دا بیرغ د تلیفون لامل کیږي چې تل د غوښتل شوي ډیټا مقدار بیرته راستانه کړي ، مګر پرته له دې تضمین کړي چې ډاټا تصادفي ده. کرنل به په ساده ډول خپله غوره هڅه وکړي ترڅو غوره تصادفي ډیټا تولید کړي چې دا په ټاکل شوي وخت کې لري. "شاید تر ټولو ښه کار دا وي چې دا 'ناامنه' وبلل شي (ناامنه) ترڅو د دې API څخه د هغه شیانو لپاره کار واخیستل شي چې امنیت ته اړتیا لري."

پیچونه د بلاک کولو حوض هم لرې کوي. کرنل اوس مهال دوه تصادفي ډیټا پولونه ساتي، یو یې د /dev/random او بل یې /dev/urandom سره تړاو لري، لکه څنګه چې پدې کې تشریح شوي. مقالې 2015. د بندولو حوض د /dev/random لپاره پول دی؛ د دې وسیلې لپاره لوستل به بند کړي (د دې نوم معنی) تر هغه چې د غوښتنې پوره کولو لپاره له سیسټم څخه "کافي" انټروپي راټول شوي نه وي. د دې فایل څخه نور لوستل هم بند شوي که چیرې په پول کې کافي انټروپي شتون ونلري.

د تالاشۍ لرې کول پدې معنی دي چې د /dev/random څخه لوستل د getrandom() په څیر چلند کوي د بیرغونو سره صفر ته ټاکل شوي (او د GRND_RANDOM بیرغ په نوپ بدلوي). یوځل چې د کریپټوګرافیک تصادفي شمیرې جنریټر (CRNG) پیل شي ، د /dev/random څخه لوستل او getrandom(...,0) ته زنګ وهل به بلاک نه کړي او د تصادفي معلوماتو غوښتل شوي مقدار بیرته راستون کړي.

لوتومیرسکي وايي: "زه باور لرم چې د لینکس بلاک کولو حوض متروک شوی دی. CRNG لینکس محصول تولیدوي چې کافي ښه دی حتی د کلیدي نسل لپاره کارول کیدی شي. د بندولو پول په هیڅ ډول مادي معنی قوي نه دی او د ملاتړ لپاره د شکمن ارزښت ډیری زیربنا ته اړتیا لري.

بدلونونه د دې هدف سره رامینځته شوي چې ډاډ ترلاسه کړي چې موجوده برنامې به واقعیا اغیزه ونلري ، او په حقیقت کې به د GnuPG کلیدي نسل په څیر شیانو لپاره د اوږدې انتظار سره لږې ستونزې شتون ولري.

"دا قسطونه باید هیڅ موجوده پروګرامونه ګډوډ نه کړي. /dev/urandom بدله پاتې ده. /dev/random لاهم د بوټ پر مهال سمدلاسه بلاک کوي ، مګر دا د پخوا په پرتله لږ بلاک کوي. getentropy() د موجوده بیرغونو سره به یوه پایله بیرته راوړي چې د پخوا په څیر د عملي اهدافو لپاره مناسبه ده."

لوتومیرسکي یادونه وکړه چې دا لاهم یوه خلاصه پوښتنه ده چې ایا دانه باید د "ریښتیني تصادفي شمیرې" په نوم چمتو کړي ، دا هغه څه دي چې د بلاک کولو کرنل باید تر یوې اندازې پورې ترسره کړي. هغه د دې لپاره یوازې یو دلیل ګوري: "د دولتي معیارونو سره موافقت." لوتومیرسکي وړاندیز وکړ چې که دانه دا چمتو کړي ، نو دا باید د بشپړ مختلف انٹرفیس له لارې ترسره شي ، یا دا باید د کارونکي ځای ته ولیږدول شي ، کارونکي ته اجازه ورکوي چې د خام پیښې نمونې بیرته ترلاسه کړي چې د داسې تالاشۍ رامینځته کولو لپاره کارول کیدی شي.

سټیفن مولر د هغه سیټ وړاندیز وکړ پیچونه د لینکس رینډم نمبر جنریټر (LRNG) لپاره (اوس مهال 26 نسخه خپره شوې) کیدی شي د غوښتنلیکونو لپاره ریښتیني تصادفي شمیرې چمتو کولو لاره وي چې ورته اړتیا لري. LRNG "د انټروپي سرچینو په اړه د SP800-90B لارښودونو سره په بشپړ ډول مطابقت لري چې د تصادفي بټونو رامینځته کولو لپاره کارول کیږي ،" دا د حکومت معیارونو ستونزې ته د حل لاره جوړوي.
میتیو ګیریټ د "ریښتیني تصادفي ډیټا" اصطلاح باندې اعتراض وکړ ، یادونه وکړه چې نمونه شوي وسیلې په اصولو کې په کافي اندازه ماډل کیدی شي ترڅو د وړاندوینې وړ شي: "موږ دلته د کوانټم پیښې نمونې نه کوو."

مولر ځواب ورکړ چې دا اصطلاح د آلمان معیاري AIS 31 څخه راځي ترڅو د تصادفي شمیرې جنراتور تشریح کړي چې یوازې پایله تولیدوي "په ورته نرخ کې چې د شور لاندې سرچینه انټروپي تولیدوي."

د اصطلاحاتو توپیرونه په څنګ کې، د تالاشۍ حوض درلودل لکه څنګه چې د LRNG پیچونو لخوا وړاندیز شوي په ساده ډول د مختلفو ستونزو لامل کیږي، لږترلږه که چیرې دا د امتیازاتو پرته لاسرسی ومومي.

لکه څنګه چې لوتومیرسکي وویل: "دا ستونزه نه حل کوي. که دوه مختلف کاروونکي احمق برنامې لکه gnupg پرمخ وړي ، دوی به یوازې یو بل وچ کړي. زه ګورم چې اوس مهال د /dev/random سره دوه اصلي ستونزې شتون لري: دا د DoS (د بیلګې په توګه د سرچینو کمښت، ناوړه نفوذ یا ورته یو څه) ته زیان رسوي، او ځکه چې د دې کارولو لپاره هیڅ امتیاز ته اړتیا نشته، دا د ناوړه ګټه اخیستنې خطر هم لري. Gnupg غلط دی، دا یو بشپړ سقوط دی. که موږ یو نوی بې اختیاره انٹرفیس اضافه کړو چې gnupg او ورته پروګرامونه به یې کاروي، موږ به بیا له لاسه ورکړو."

مولر یادونه وکړه چې د getrandom() اضافه کول به اوس GnuPG ته اجازه ورکړي چې دا انٹرفیس وکاروي، ځکه چې دا به اړین تضمین چمتو کړي چې پول پیل شوی. د GnuPG پراختیا کونکي ورنر کوچ سره د خبرو اترو پراساس ، مولر باور لري چې تضمین یوازینی دلیل دی چې GnuPG اوس مهال مستقیم له /dev/random څخه لوستل کیږي. مګر که چیرې یو بې ګټې انٹرفیس شتون ولري چې د خدماتو انکار کولو لپاره حساس وي (لکه څنګه چې نن /dev/random دی) ، لوټومیرسکي استدلال کوي چې دا به د ځینې غوښتنلیکونو لخوا ناوړه ګټه پورته شي.

تیوډور یو ټیک تسو ، د لینکس د تصادفي شمیرې فرعي سیسټم رامینځته کونکی ، داسې بریښي چې د بلاک کولو حوض اړتیا په اړه خپل فکر بدل کړی. هغه وویل چې د دې حوض لرې کول به په مؤثره توګه له دې مفکورې څخه خلاص شي چې لینکس د ریښتیني تصادفي شمیرې جنریټر (TRNG) لري: "دا بې ځایه نه ده، ځکه چې دا هغه څه دي چې * BSD تل ترسره کړي."

هغه دا هم اندیښمن دی چې د TRNG میکانیزم چمتو کول به په ساده ډول د غوښتنلیک پراختیا کونکو لپاره د بیت په توګه کار وکړي او باور لري چې په حقیقت کې ، د لینوکس لخوا ملاتړ شوي هارډویر مختلف ډولونو ته په پام سره ، په دانا کې د TRNG تضمین کول ناممکن دي. حتی یوازې د ریښو امتیازاتو سره د تجهیزاتو سره کار کولو وړتیا به ستونزه حل نکړي: "د غوښتنلیک جوړونکي مشخص کوي چې د دوی غوښتنلیک د امنیت موخو لپاره د روټ په توګه نصب شي، نو دا یوازینۍ لار ده چې تاسو 'ریښتیا ښه' تصادفي شمیرو ته لاسرسی کولی شئ."

مولر وپوښتل چې ایا کاو د بلاک کولو پول پلي کول پریښودل چې هغه پخپله وړاندیز کړی و. کاو ځواب ورکړ چې هغه پلان لري د لوتومیرسکي پیچونه واخلي او په فعاله توګه د کرنل ته د بلاک کولو انٹرفیس اضافه کولو سره مخالفت کوي.

"دانه نشي کولی کوم تضمین ورکړي چې ایا د شور سرچینه په سمه توګه مشخص شوې که نه. یوازینی شی چې د GPG یا OpenSSL پراختیا کونکی ترلاسه کولی شي یو مبهم احساس دی چې TRUERANDOM "غوره" دی ، او له هغه ځایه چې دوی ډیر امنیت غواړي ، نو دوی به بې له شکه د دې کارولو هڅه وکړي. په یو وخت کې به دا بلاک شي، او کله چې یو بل سمارټ کاروونکي (شاید د توزیع متخصص) دا init سکریپټ کې داخل کړي او سیسټمونه کار ودروي، کاروونکي به یوازې لینس توروالډز ته شکایت وکړي.

Cao د کریپټوګرافرانو او هغو کسانو ته چې واقعیا TRNG ته اړتیا لري د کارونکي ځای کې د خپل انټروپي راټولولو لپاره یوه لاره ته اړتیا لري ترڅو وکارول شي لکه څنګه چې دوی مناسب ښکاري. هغه وايي چې د انټروپي راټولول داسې پروسه نه ده چې د کرنل لخوا په ټولو مختلف هارډویرونو کې ترسره کیدی شي چې دا یې ملاتړ کوي ، او نه هم دانه پخپله د مختلف سرچینو لخوا چمتو شوي د انټروپي مقدار اټکل کولی شي.

"دانه باید د شور مختلف سرچینې یوځای نه کړي، او دا باید د ادعا کولو هڅه ونکړي چې پوه شي چې د انټروپي څومره بټونه ترلاسه کوي کله چې دا په خورا ساده CPU کې د یو ډول "twitchy انټروپي لوبې" لوبولو هڅه کوي. د مصرف کونکو کاروونکو لپاره جوړښت. IOT/ایمبیډ شوي قضیې چیرې چې هرڅه د یو واحد ماسټر آسیلیټر سره همغږي نه وي ، چیرې چې د CPU لارښوونې شتون نلري چې د راجستر بیا تنظیم یا نوم بدل کړي ، او داسې نور.

"تاسو کولی شئ د وسیلو چمتو کولو په اړه وغږیږئ چې هڅه کوي دا محاسبې ترسره کړي، مګر دا ډول شیان باید د هر کارونکي په هارډویر کې ترسره شي، کوم چې په ساده ډول د ډیری توزیع کاروونکو لپاره عملي ندي. که دا یوازې د کریپټوګرافرانو لپاره وي ، نو اجازه راکړئ چې د دوی د کارونکي ځای کې ترسره شي. او راځئ چې GPG، OpenSSL، او داسې نور ساده نه کړو ترڅو هرڅوک ووایي چې "موږ "ریښتیني تصادفي" غواړو او په لږ څه بسنه نه کوو. موږ کولی شو په دې اړه وغږیږو چې څنګه موږ کریپټوګرافرانو ته انٹرفیس چمتو کوو ترڅو دوی وکولی شي هغه معلومات ترلاسه کړي چې دوی ورته اړتیا لري د لومړني شور سرچینو ته لاسرسي سره ، جلا او نومول شوي ، او شاید په یو ډول د شور سرچینه کولی شي ځان کتابتون یا د کارونکي ځای غوښتنلیک ته تصدیق کړي.

د دې په اړه یو څه بحث شتون درلود چې دا ډول انٹرفیس څه ډول ښکاري ، ځکه چې د مثال په توګه ممکن د ځینې پیښو لپاره امنیتي اغیزې وي. کاو یادونه وکړه چې د کیبورډ سکین کوډونه (د بیلګې په توګه کیسټروکونه) د انټروپي راټولولو د یوې برخې په توګه په حوض کې مخلوط شوي: "دا د کارونکي ځای ته راوړل، حتی د یو امتیاز لرونکي سیسټم کال له لارې، لږ تر لږه ویل به ناسم وي." دا خورا ممکنه ده چې د نورو پیښو وختونه ممکن د اړخ چینلونو له لارې یو ډول معلومات لیک رامینځته کړي.

نو داسې ښکاري چې د لینکس تصادفي شمیرې فرعي سیسټم سره اوږدمهاله ستونزه د حل په لاره کې ده. هغه بدلونونه چې د تصادفي شمیرې فرعي سیسټم پدې وروستیو کې پیښ شوي په حقیقت کې یوازې د DoS مسلو پایله لري کله چې د دې کارولو پرمهال. اوس د غوره تصادفي شمیرو ترلاسه کولو لپاره اغیزمنې لارې شتون لري چې دانی کولی شي چمتو کړي. که چیرې TRNG لاهم په لینکس کې مطلوب وي ، نو دا نیمګړتیا به په راتلونکي کې په ګوته شي ، مګر ډیری احتمال دا به پخپله د کرنل دننه ترسره نشي.

ځینې ​​اعلانونه 🙂

له موږ سره د پاتې کیدو لپاره مننه. ایا تاسو زموږ مقالې خوښوي؟ غواړئ نور په زړه پورې مینځپانګه وګورئ؟ د امر په ورکولو یا ملګرو ته وړاندیز کولو سره زموږ ملاتړ وکړئ ، کلاوډ VPS د پراختیا کونکو لپاره له $ 4.99 څخه, د ننوتلو کچې سرورونو یو ځانګړی انلاګ ، کوم چې زموږ لخوا ستاسو لپاره اختراع شوی و: د VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps په اړه بشپړ حقیقت له $ 19 څخه یا څنګه سرور شریک کړئ؟ (د RAID1 او RAID10 سره شتون لري، تر 24 کور پورې او تر 40GB DDR4 پورې).

ډیل R730xd په امستردام کې د Equinix Tier IV ډیټا مرکز کې 2 ځله ارزانه؟ یوازې دلته 2x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 تلویزیون له $199 څخه په هالنډ کې! ډیل R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - له $ 99 څخه! په اړه ولولئ د زیربنا شرکت جوړولو څرنګوالی د ډیل R730xd E5-2650 v4 سرورونو کارولو سره ټولګي د یوې پیسي لپاره د 9000 یورو ارزښت لري؟

سرچینه: www.habr.com

Add a comment