لينڪس: لاڪ پول کي هٽائڻ /dev/random

/dev/random، هڪ cryptographically محفوظ pseudo-random نمبر جنريٽر (CSPRNG)، معلوم ٿئي ٿو ته هڪ پريشان ڪندڙ مسئلو آهي: بلاڪ ڪرڻ. هي مضمون ٻڌائي ٿو ته توهان ان کي ڪيئن حل ڪري سگهو ٿا.

گذريل ڪجھ مھينن ۾، ڪرنل ۾ بي ترتيب نمبر پيدا ڪرڻ جي سهولتن کي ٿورڙو ڪم ڪيو ويو آھي، پر ھن سبسسٽم ۾ مسئلا حل ڪيا ويا آھن. وقت جو فريم. گهڻو آخري تبديليون Getrandom() سسٽم ڪال کي ڊگھي وقت تائين بلاڪ ٿيڻ کان روڪڻ لاءِ ٺاهيو ويو جڏهن سسٽم بوٽ ٿي ويو، پر ان جو بنيادي سبب بي ترتيب پول جي بلاڪنگ رويي هو. هڪ تازو پيچ هن تلاء کي ختم ڪري ڇڏي ها ۽ اهو توقع ڪئي وڃي ها ته مکيه ڪور ڏانهن سر.

Andy Lutomirski ڊسمبر جي آخر ۾ پيچ جو ٽيون نسخو شايع ڪيو. هو حصو ڏئي ٿو "بي ترتيب لينڪس APIs ۾ ٻه وڏيون بنيادي تبديليون". پيچ هڪ نئون GRND_INSECURE جھنڊو شامل ڪري ٿو getrandom() سسٽم ڪال ۾ (جيتوڻيڪ Lutomirsky ان جو حوالو ڏئي ٿو getentropy()، جيڪو glibc ۾ getrandom() استعمال ڪندي مقرر ٿيل جھنڊن سان لاڳو ٿئي ٿو)؛ هي پرچم ڪال کي هميشه گهربل ڊيٽا جي رقم واپس ڪرڻ جو سبب بڻائيندو آهي، پر انهي جي ضمانت جي بغير ڊيٽا بي ترتيب آهي. ڪرنل صرف ان جي بهترين ڪوشش ڪندو بهترين بي ترتيب واري ڊيٽا پيدا ڪرڻ لاءِ ان کي ڏنل وقت تي. "شايد ڪرڻ لاءِ بهترين شيءِ آهي ان کي 'غير محفوظ' سڏيو (غير محفوظ) هن API کي انهن شين لاءِ استعمال ٿيڻ کان روڪڻ لاءِ جن کي حفاظت جي ضرورت آهي.

پيچ پڻ بلاڪنگ پول کي هٽائي ٿو. ڪرنل في الحال ٻه بي ترتيب ڊيٽا پول برقرار رکي ٿو، ھڪڙو /dev/random ۽ ٻيو /dev/urandom سان، جيئن ھن ۾ بيان ڪيو ويو آھي. مضمون 2015. بلاڪنگ پول /dev/random لاءِ تلاءُ آھي. ان ڊيوائس لاءِ پڙھندو آھي بلاڪ ڪندو (مطلب ان جو نالو) جيستائين درخواست کي پورو ڪرڻ لاءِ سسٽم مان ”ڪافي“ انٽراپي گڏ نه ڪئي وئي آھي. ھن فائل مان وڌيڪ پڙھڻ کي پڻ بند ڪيو ويو آھي جيڪڏھن پول ۾ ڪافي اينٽراپي نه آھي.

لاڪ پول کي هٽائڻ جو مطلب آهي /dev/random مان پڙهڻ سان getrandom() جھنڊو صفر تي سيٽ ڪيو ويو (۽ GRND_RANDOM پرچم کي نوپ ۾ تبديل ڪري ٿو). هڪ ڀيرو cryptographic random number جنريٽر (CRNG) شروع ڪيو ويندو، /dev/random کان پڙهڻ ۽ getrandom(...,0) کي ڪالون بلاڪ نه ٿينديون ۽ بي ترتيب ڊيٽا جي گهربل رقم واپس ڪندا.

Lutomirsky چوي ٿو: "مان سمجهان ٿو ته لينڪس بلاڪنگ پول ختم ٿي چڪو آهي. CRNG لينڪس پيداوار پيدا ڪري ٿي جيڪا ڪافي سٺي آهي اڃا به اهم نسل لاءِ استعمال ٿي سگهي ٿي. بلاڪنگ پول ڪنهن به مادي لحاظ کان مضبوط نه آهي ۽ ان کي سپورٽ ڪرڻ لاءِ مشڪوڪ قدر جي تمام گهڻي انفراسٽرڪچر جي ضرورت آهي.

تبديليون ڪيون ويون ھيون مقصد کي يقيني بڻائڻ ته ته موجوده پروگرام واقعي متاثر نه ٿيندا، ۽ حقيقت ۾، GnuPG ڪيئي نسل جھڙن شين جي ڊگھي انتظار سان گھٽ مسئلا ھوندا.

”اهي قسطون ڪنهن به موجود پروگرامن ۾ خلل نه وجهن. /dev/urandom اڻڄاتل رهي ٿو. /dev/random اڃا تائين فوري طور تي بوٽ تي بلاڪ ڪري ٿو، پر اهو اڳ کان گهٽ بلاڪ. getentropy() موجود جھنڊن سان گڏ ھڪڙو نتيجو واپس آڻيندو جيڪو اڳي وانگر عملي مقصدن لاءِ مناسب آھي.

Lutomirsky نوٽ ڪيو ته اهو اڃا تائين هڪ کليل سوال آهي ته ڇا ڪنيل کي نام نهاد "سچو بي ترتيب نمبر" مهيا ڪرڻ گهرجي، جيڪو اهو آهي ته بلاڪ ڪرڻ واري ڪني کي هڪ خاص حد تائين ڪرڻ گهرجي. هو ان لاءِ صرف هڪ سبب ڏسي ٿو: ”سرڪاري معيارن جي تعميل“. Lutomirsky تجويز ڪيو ته جيڪڏهن ڪرنل کي اهو مهيا ڪرڻ گهرجي، اهو مڪمل طور تي مختلف انٽرفيس ذريعي ڪيو وڃي، يا ان کي صارف جي جاء تي منتقل ڪيو وڃي، صارف کي خام واقعي جي نمونن کي ٻيهر حاصل ڪرڻ جي اجازت ڏني وڃي جيڪا اهڙي تالا ٺاهڻ لاء استعمال ٿي سگهي ٿي.

Stephan Müller تجويز ڪيو ته سندس سيٽ پيچ لينڪس رينڊم نمبر جنريٽر (LRNG) لاءِ (في الحال ورزن 26 جاري ڪيو ويو آهي) هڪ طريقو ٿي سگهي ٿو حقيقي بي ترتيب نمبر مهيا ڪرڻ لاءِ انهن ايپليڪيشنن لاءِ جن کي ان جي ضرورت آهي. LRNG ”انٽراپي ذريعن تي مڪمل طور تي SP800-90B هدايتن جي تعميل آهي، جيڪي رينڊم بِٽ پيدا ڪرڻ لاءِ استعمال ڪيا ويا آهن،“ ان کي حڪومتي معيارن جي مسئلي جو حل بڻائي ٿو.
Matthew Garrett “True random data” جي اصطلاح تي اعتراض ڪيو، اهو نوٽ ڪيو ته نمونا ڪيل ڊوائيسز اصولي طور تي ماڊل ڪري سگهجن ٿيون ته جيئن انهن کي اڳڪٿي ڪري سگهجي: “اسان هتي ڪوانٽم واقعن جو نمونو نه ٿا وٺي رهيا آهيون.”

مولر جواب ڏنو ته اصطلاح جرمن معيار AIS 31 مان اچي ٿو هڪ بي ترتيب نمبر جنريٽر کي بيان ڪرڻ لاءِ جيڪو صرف نتيجو پيدا ڪري ٿو "ساڳئي شرح تي جيئن هيٺيون شور جو ذريعو اينٽراپي پيدا ڪري ٿو."

اصطلاحي اختلافن کي هڪ طرف رکي، LRNG پيچز جي تجويز ڪيل طور تي تالا رکڻ سان مختلف مسئلا پيدا ٿيندا، گهٽ ۾ گهٽ جيڪڏهن اهو بغير ڪنهن استحقاق جي پهچجي.

جيئن Lutomirsky چيو: ”اهو مسئلو حل نٿو ڪري. جيڪڏهن ٻه مختلف استعمال ڪندڙ بيوقوف پروگرامن کي هلائيندا آهن جهڙوڪ gnupg، اهي صرف هڪ ٻئي کي ختم ڪري ڇڏيندا. مان ڏسان ٿو ته في الحال /dev/random سان ٻه مکيه مسئلا آهن: اهو DoS (يعني وسيلن جي گھٽتائي، بدسلوڪي اثر يا ٻيو ڪجهه) جو شڪار آهي، ۽ جيئن ته ان کي استعمال ڪرڻ لاءِ ڪنهن به استحقاق جي ضرورت نه آهي، اهو پڻ غلط استعمال جو شڪار آهي. Gnupg غلط آهي، اهو هڪ مڪمل تباهي آهي. جيڪڏهن اسان هڪ نئون غير امتيازي انٽرفيس شامل ڪيو ته gnupg ۽ اهڙا پروگرام استعمال ڪندا، اسان ٻيهر وڃائي وينداسين.

Mueller نوٽ ڪيو ته getrandom() جو اضافو هاڻي GnuPG کي هن انٽرفيس کي استعمال ڪرڻ جي اجازت ڏيندو، ڇاڪاڻ ته اهو ضروري گارنٽي فراهم ڪندو ته پول شروع ڪيو ويو آهي. GnuPG ڊولپر Werner Koch سان ڳالهين جي بنياد تي، Mueller يقين رکي ٿو ته گارنٽي صرف هڪ سبب آهي GnuPG هن وقت سڌو سنئون /dev/random مان پڙهي ٿو. پر جيڪڏهن اتي هڪ غير امتيازي انٽرفيس آهي جيڪو خدمت کان انڪار ڪرڻ لاءِ حساس آهي (جيئن /dev/random اڄ آهي)، Lutomirsky دليل ڏئي ٿو ته اهو ڪجهه ايپليڪيشنن طرفان غلط استعمال ٿيندو.

Theodore Yue Tak Ts'o، لينڪس جي بي ترتيب نمبر سب سسٽم جو ڊولپر، ظاهر ٿئي ٿو ته هن جي ذهن کي بلاڪنگ پول جي ضرورت بابت تبديل ڪيو آهي. هن چيو ته هن تلاءَ کي هٽائڻ سان ان خيال کان ڇوٽڪارو حاصل ٿيندو ته لينڪس وٽ حقيقي بي ترتيب نمبر جنريٽر (TRNG): "اها بيوقوف ناهي، ڇاڪاڻ ته اهو ئي آهي جيڪو * BSD هميشه ڪيو آهي."

هن کي اهو به خدشو آهي ته هڪ TRNG ميڪانيزم مهيا ڪرڻ صرف ايپليڪيشن ڊولپرز لاءِ هڪ بيت جي طور تي ڪم ڪندو ۽ مڃي ٿو ته حقيقت ۾، لينڪس پاران سپورٽ ڪيل هارڊويئر جي مختلف قسمن جي ڪري، ڪني ۾ TRNG جي ضمانت ڏيڻ ناممڪن آهي. جيتوڻيڪ سامان سان ڪم ڪرڻ جي صلاحيت صرف روٽ استحقاق سان مسئلو حل نه ڪندي: "ايپليڪيشن ڊولپرز بيان ڪن ٿا ته انهن جي ايپليڪيشن کي سيڪيورٽي مقصدن لاء روٽ طور نصب ڪيو وڃي، انهي ڪري ته اهو واحد طريقو آهي جيڪو توهان 'واقعي سٺو' بي ترتيب نمبرن تائين رسائي ڪري سگهو ٿا."

مولر پڇيو ته ڇا ڪائو بلاڪنگ پول تي عمل درآمد کي ڇڏي ڏنو آهي جيڪو هن پاڻ ڊگهي تجويز ڪيو هو. Cao جواب ڏنو ته هو Lutomirsky جي پيچ کي وٺڻ جو ارادو رکي ٿو ۽ فعال طور تي هڪ بلاڪنگ انٽرفيس کي شامل ڪرڻ جي مخالفت ڪري ٿو.

"ڪنيل ڪا به ضمانت نه ٿو ڏئي سگھي ته ڇا شور جو ذريعو صحيح نموني سان منسوب ڪيو ويو آهي. هڪ GPG يا OpenSSL ڊولپر حاصل ڪري سگهي ٿو صرف هڪ مبهم احساس آهي ته TRUERANDOM "بهتر" آهي، ۽ جيئن ته اهي وڌيڪ سيڪيورٽي چاهيندا آهن، اهي بلاشبہ ان کي استعمال ڪرڻ جي ڪوشش ڪندا. ڪجهه نقطي تي ان کي بلاڪ ڪيو ويندو، ۽ جڏهن ڪو ٻيو سمارٽ استعمال ڪندڙ (شايد هڪ تقسيم ماهر) ان کي انٽيٽ اسڪرپٽ ۾ داخل ڪري ٿو ۽ سسٽم ڪم ڪرڻ بند ڪري ٿو، صارفين کي صرف Linus Torvalds کي شڪايت ڪرڻو پوندو.

Cao ڪرپٽوگرافرن کي ڏيڻ جي پڻ حمايت ڪري ٿو ۽ جن کي اصل ۾ TRNG جي ضرورت آهي هڪ طريقو استعمال ڪرڻ لاءِ استعمال ڪرڻ لاءِ پنهنجي اينٽراپي کي استعمال ڪرڻ جي جاءِ ۾ جيئن اهي مناسب ڏسن. هن جو چوڻ آهي ته اينٽراپي گڏ ڪرڻ ڪو اهڙو عمل نه آهي جيڪو ڪرنل طرفان مختلف هارڊويئر تي ڪري سگهجي ٿو جنهن کي هو سپورٽ ڪري ٿو ۽ نه ئي ڪنيل پاڻ مختلف ذريعن پاران مهيا ڪيل اينٽراپي جي مقدار جو اندازو لڳائي سگهي ٿو.

”ڪنيل کي مختلف شور ذريعن کي گڏ نه ڪرڻ گهرجي، ۽ اهو يقيني طور تي دعويٰ ڪرڻ جي ڪوشش نه ڪرڻ گهرجي ته انٽراپي جا ڪيترا بٽ حاصل ڪري رهيا آهن جڏهن اها ڪوشش ڪري رهي آهي ڪنهن قسم جي ”ٽوچي اينٽراپي گيم“ کيڏڻ جي ڪوشش هڪ انتهائي سادي سي پي يو تي. آرڪيٽيڪچر صارفين لاءِ.

"توهان اوزار مهيا ڪرڻ جي باري ۾ ڳالهائي سگهو ٿا جيڪي انهن حسابن کي ڪرڻ جي ڪوشش ڪندا آهن، پر اهڙيون شيون هر صارف جي هارڊويئر تي ٿيڻ گهرجن، جيڪي صرف اڪثر تقسيم استعمال ڪندڙن لاءِ عملي ناهن. جيڪڏهن اهو مقصد صرف ڪرپٽوگرافرز لاءِ آهي، ته پوءِ اهو ڪيو وڃي انهن جي استعمال ڪندڙ جي جاءِ تي. ۽ اچو ته GPG، OpenSSL وغيره کي آسان نه ڪريون ته جيئن هرڪو چوي "اسان چاهيون ٿا "حقيقي بي ترتيب" ۽ گهٽ ۾ گهٽ حل نه ڪنداسين. اسان ان بابت ڳالهائي سگهون ٿا ته ڪيئن اسان ڪرپٽوگرافرز کي انٽرفيس فراهم ڪندا آهيون ته جيئن اهي معلومات حاصل ڪري سگھن جيڪي انهن جي ضرورت آهي بنيادي شور ذريعن تائين رسائي حاصل ڪري، الڳ ٿيل ۽ نالي سان، ۽ شايد ڪنهن به طرح شور جو ذريعو پاڻ کي لائبريري يا يوزر اسپيس ايپليڪيشن جي تصديق ڪري سگهي ٿو.

ان بابت ڪجهه بحث ڪيو ويو ته اهڙي انٽرفيس ڪهڙي طرح نظر اچي سگهي ٿي، ڇاڪاڻ ته مثال طور ڪجهه واقعن لاءِ حفاظتي اثر ٿي سگهي ٿو. Cao نوٽ ڪيو ته ڪيبورڊ اسڪين ڪوڊس (يعني ڪي اسٽروڪ) هڪ پول ۾ مليا آهن انٽراپي گڏ ڪرڻ جي حصي جي طور تي: "هن کي صارف جي جڳهه ۾ آڻڻ، جيتوڻيڪ هڪ مراعات يافته سسٽم ڪال ذريعي، گهٽ ۾ گهٽ چوڻ غير دانشمندي هوندي." اهو بلڪل ممڪن آهي ته ٻين واقعن جي وقتن کي سائڊ چينلز ذريعي ڪجهه قسم جي معلومات جي رسيد پيدا ڪري سگهي ٿي.

تنهن ڪري اهو لڳي ٿو لينڪس جي بي ترتيب نمبر سب سسٽم سان هڪ ڊگهو مسئلو حل جي رستي تي آهي. تبديليون جيڪي بي ترتيب نمبر سب سسٽم تازو ٿي چڪا آهن اصل ۾ صرف ان کي استعمال ڪندي DoS مسئلن جي نتيجي ۾. ھاڻي آھن ڪارآمد طريقا آھن حاصل ڪرڻ جا بھترين بي ترتيب نمبر جيڪي ڪنيل مهيا ڪري سگھن ٿا. جيڪڏهن TRNG اڃا تائين لينڪس تي گهربل آهي، ته پوء هن نقص کي مستقبل ۾ خطاب ڪرڻ جي ضرورت پوندي، پر گهڻو ڪري اهو نه ڪيو ويندو خود ڪنيل اندر.

ڪجھ اشتهار 🙂

اسان سان گڏ رهڻ لاء توهان جي مهرباني. ڇا توهان اسان جا مضمون پسند ڪندا آهيو؟ وڌيڪ دلچسپ مواد ڏسڻ چاهيو ٿا؟ آرڊر ڏيڻ يا دوستن کي سفارش ڪندي اسان جي مدد ڪريو، ڪلائوڊ VPS ڊولپرز لاءِ $4.99 کان, داخلا-سطح سرورز جو هڪ منفرد اينالاگ، جيڪو اسان توهان لاءِ ايجاد ڪيو هو: VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps جي باري ۾ سڄي حقيقت $19 کان يا سرور ڪيئن شيئر ڪجي؟ (RAID1 ۽ RAID10 سان دستياب آهي، 24 ڪور تائين ۽ 40GB DDR4 تائين).

ڊيل R730xd 2x سستا Equinix Tier IV ڊيٽا سينٽر ۾ Amsterdam ۾؟ صرف هتي 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV $199 کان هالينڊ ۾! ڊيل R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 کان! جي باري ۾ پڙهو انفراسٽرڪچر ڪارپوريشن ڪيئن ٺاهيو. ڪلاس ڊيل R730xd E5-2650 v4 سرورز جي استعمال سان 9000 يورو جي قيمت هڪ پني لاءِ؟

جو ذريعو: www.habr.com

تبصرو شامل ڪريو