லினக்ஸ்: லாக் பூலை அகற்றுதல் /dev/random

/dev/random, ஒரு கிரிப்டோகிராஃபிகலாக பாதுகாப்பான போலி-ரேண்டம் எண் ஜெனரேட்டரில் (CSPRNG), ஒரு எரிச்சலூட்டும் பிரச்சனை இருப்பதாக அறியப்படுகிறது: தடுப்பது. அதை எப்படி தீர்க்கலாம் என்பதை இந்தக் கட்டுரை விளக்குகிறது.

கடந்த சில மாதங்களாக, கர்னலில் உள்ள சீரற்ற எண் உருவாக்கும் வசதிகள் சிறிதளவு மறுவேலை செய்யப்பட்டுள்ளன, ஆனால் இந்த துணை அமைப்பில் உள்ள சிக்கல்கள் பரந்த போக்கில் தீர்க்கப்பட்டுள்ளன. கால அளவு. மிகவும் கடைசி மாற்றங்கள் சிஸ்டம் பூட் ஆகும் போது நீண்ட நேரம் கெட்ராண்டம்() சிஸ்டம் கால் தடுப்பதைத் தடுக்கும் வகையில் உருவாக்கப்பட்டன, ஆனால் இதற்கு அடிப்படைக் காரணம் ரேண்டம் பூலின் தடுப்பு நடத்தை ஆகும். சமீபத்திய இணைப்பு இந்த குளத்தை அகற்றியிருக்கும், மேலும் அது முக்கிய மையத்தை நோக்கி செல்லும் என்று எதிர்பார்க்கப்படுகிறது.

ஆண்டி லுடோமிர்ஸ்கி டிசம்பர் இறுதியில் பேட்சின் மூன்றாவது பதிப்பை வெளியிட்டார். அவர் பங்களிக்கிறார் "ரேண்டம் லினக்ஸ் ஏபிஐக்கு இரண்டு முக்கிய சொற்பொருள் மாற்றங்கள்". பேட்ச் ஒரு புதிய GRND_INSECURE கொடியை getrandom() அமைப்பு அழைப்பில் சேர்க்கிறது (Lutomirsky அதை getentropy() என்று குறிப்பிடுகிறார், இது glibc இல் நிலையான கொடிகளுடன் getrandom() ஐப் பயன்படுத்தி செயல்படுத்தப்படுகிறது); இந்தக் கொடியானது அழைப்பு எப்பொழுதும் கோரப்பட்ட தரவின் அளவைத் திருப்பித் தருகிறது, ஆனால் தரவு சீரற்றது என்று உத்தரவாதம் இல்லாமல். கொடுக்கப்பட்ட நேரத்தில் தன்னிடம் உள்ள சிறந்த சீரற்ற தரவை உருவாக்க கர்னல் தன்னால் முடிந்த அனைத்தையும் செய்யும். "அநேகமாகச் செய்ய வேண்டிய சிறந்த விஷயம், 'பாதுகாப்பற்றது' என்று அழைப்பதுதான். (பாதுகாப்பற்றது) பாதுகாப்பு தேவைப்படும் விஷயங்களுக்கு இந்த API பயன்படுத்தப்படுவதைத் தடுக்க."

திட்டுகள் தடுக்கும் குளத்தையும் அகற்றும். கர்னல் தற்போது இரண்டு சீரற்ற தரவுக் குளங்களை பராமரிக்கிறது, ஒன்று /dev/random மற்றும் மற்றொன்று /dev/urandom, இதில் விவரிக்கப்பட்டுள்ளது. கட்டுரை 2015. தடுக்கும் குளம் என்பது /dev/random க்கான பூல் ஆகும்; கோரிக்கையை பூர்த்தி செய்ய கணினியிலிருந்து "போதுமான" என்ட்ரோபி சேகரிக்கப்படும் வரை அந்த சாதனத்திற்கான ரீட்கள் (அதன் பெயரைக் குறிக்கும்) தடுக்கும். குளத்தில் போதுமான என்ட்ரோபி இல்லை என்றால், இந்தக் கோப்பிலிருந்து கூடுதல் வாசிப்புகளும் தடுக்கப்படும்.

பூட்டுக் குளத்தை அகற்றுவது என்பது /dev/random இலிருந்து படிப்பது, பூஜ்ஜியமாக அமைக்கப்பட்ட கொடிகளுடன் getrandom() போல் செயல்படுகிறது (மற்றும் GRND_RANDOM கொடியை noop ஆக மாற்றுகிறது). கிரிப்டோகிராஃபிக் ரேண்டம் எண் ஜெனரேட்டர் (CRNG) துவக்கப்பட்டதும், /dev/random இலிருந்து படித்தல் மற்றும் getrandom(...,0)க்கான அழைப்புகள் தடுக்கப்படாது மற்றும் கோரப்பட்ட ரேண்டம் டேட்டாவை வழங்கும்.

லுடோமிர்ஸ்கி கூறுகிறார்: "லினக்ஸ் தடுப்புக் குளம் வழக்கற்றுப் போய்விட்டது என்று நான் நம்புகிறேன். CRNG லினக்ஸ் வெளியீட்டை உருவாக்குகிறது, அது முக்கிய உற்பத்திக்கு கூட பயன்படுத்தப்படும். தடுப்புக் குளம் எந்தவொரு பொருள் அர்த்தத்திலும் வலுவாக இல்லை, மேலும் அதை ஆதரிக்க சந்தேகத்திற்குரிய மதிப்பின் உள்கட்டமைப்பு தேவைப்படுகிறது.

தற்போதுள்ள திட்டங்கள் உண்மையில் பாதிக்கப்படாமல் இருப்பதை உறுதிசெய்யும் நோக்கத்துடன் மாற்றங்கள் செய்யப்பட்டன, உண்மையில், GnuPG விசை உருவாக்கம் போன்றவற்றிற்காக நீண்ட நேரம் காத்திருக்கும் போது குறைவான சிக்கல்கள் இருக்கும்.

"இந்த எபிசோடுகள் ஏற்கனவே இருக்கும் எந்த நிகழ்ச்சிகளையும் சீர்குலைக்கக்கூடாது. /dev/urandom மாறாமல் உள்ளது. /dev/random இன்னும் துவக்கத்தில் உடனடியாகத் தடுக்கிறது, ஆனால் அது முன்பை விட குறைவாகத் தடுக்கிறது. ஏற்கனவே உள்ள கொடிகளுடன் getentropy() முன்பு போலவே நடைமுறை நோக்கங்களுக்காக பொருத்தமான ஒரு முடிவை வழங்கும்."

கர்னல் "உண்மையான சீரற்ற எண்கள்" என்று அழைக்கப்படுவதை வழங்க வேண்டுமா என்பது இன்னும் திறந்த கேள்வியாக உள்ளது என்று லுடோமிர்ஸ்கி குறிப்பிட்டார், இது ஒரு குறிப்பிட்ட அளவிற்கு தடுக்கும் கர்னல் செய்ய வேண்டும். இதற்கு அவர் ஒரே ஒரு காரணத்தைக் காண்கிறார்: "அரசாங்கத் தரங்களுக்கு இணங்குதல்." கர்னல் இதை வழங்க வேண்டுமானால், அது முற்றிலும் மாறுபட்ட இடைமுகத்தின் மூலம் செய்யப்பட வேண்டும் அல்லது பயனர் இடத்திற்கு நகர்த்தப்பட வேண்டும் என்று Lutomirsky பரிந்துரைத்தார்.

ஸ்டீபன் முல்லர் தனது தொகுப்பை பரிந்துரைத்தார் திட்டுகள் Linux ரேண்டம் நம்பர் ஜெனரேட்டருக்கு (LRNG) (தற்போது பதிப்பு 26 வெளியிடப்பட்டுள்ளது) தேவைப்படும் பயன்பாடுகளுக்கு உண்மையான சீரற்ற எண்களை வழங்குவதற்கான ஒரு வழியாகும். LRNG ஆனது "ரேண்டம் பிட்களை உருவாக்க பயன்படும் என்ட்ரோபி ஆதாரங்களில் SP800-90B வழிகாட்டுதல்களுடன் முழுமையாக இணங்குகிறது," இது அரசாங்க தரநிலை பிரச்சனைக்கு தீர்வாக அமைகிறது.
"உண்மையான சீரற்ற தரவு" என்ற சொல்லை மேத்யூ காரெட் எதிர்த்தார், மாதிரி செய்யப்பட்ட சாதனங்கள் கொள்கையளவில் அவற்றை யூகிக்கக்கூடிய வகையில் துல்லியமாக மாதிரியாக மாற்றலாம் என்று குறிப்பிட்டார்: "நாங்கள் இங்கு குவாண்டம் நிகழ்வுகளை மாதிரியாக எடுக்கவில்லை."

முல்லர் பதிலளித்தார், "அடிப்படையான இரைச்சல் மூலமானது என்ட்ரோபியை உருவாக்கும் அதே விகிதத்தில்" ஒரு முடிவை மட்டுமே உருவாக்கும் ஒரு சீரற்ற எண் ஜெனரேட்டரை விவரிக்க ஜெர்மன் தரநிலை AIS 31 இலிருந்து வந்தது.

சொற்பொழிவு வேறுபாடுகள் ஒருபுறம் இருக்க, LRNG இணைப்புகளால் பரிந்துரைக்கப்பட்ட பூல் பூலைக் கொண்டிருப்பது பல்வேறு சிக்கல்களுக்கு வழிவகுக்கும், குறைந்தபட்சம் அதை சலுகைகள் இல்லாமல் அணுகினால்.

லுடோமிர்ஸ்கி கூறியது போல்: "இது சிக்கலை தீர்க்காது. இரண்டு வெவ்வேறு பயனர்கள் gnupg போன்ற முட்டாள் நிரல்களை இயக்கினால், அவர்கள் ஒருவரையொருவர் வடிகட்டுவார்கள். /dev/random உடன் தற்போது இரண்டு முக்கிய பிரச்சனைகள் இருப்பதை நான் காண்கிறேன்: இது DoS (அதாவது வளம் குறைதல், தீங்கிழைக்கும் செல்வாக்கு அல்லது அது போன்ற ஏதாவது) க்கு வாய்ப்புள்ளது, மேலும் இதைப் பயன்படுத்த எந்தச் சலுகையும் தேவையில்லை என்பதால், அது துஷ்பிரயோகத்திற்கும் வாய்ப்புள்ளது. Gnupg தவறு, இது ஒரு முழுமையான சரிவு. gnupg மற்றும் ஒத்த நிரல்களைப் பயன்படுத்தும் புதிய சலுகையற்ற இடைமுகத்தைச் சேர்த்தால், மீண்டும் இழப்போம்."

Getrandom()ஐச் சேர்ப்பது இப்போது GnuPG ஐ இந்த இடைமுகத்தைப் பயன்படுத்த அனுமதிக்கும் என்று முல்லர் குறிப்பிட்டார், ஏனெனில் இது குளம் துவக்கப்பட்டதற்கான தேவையான உத்தரவாதத்தை வழங்கும். GnuPG டெவலப்பர் வெர்னர் கோச் உடனான விவாதங்களின் அடிப்படையில், GnuPG தற்போது /dev/random இலிருந்து நேரடியாகப் படிப்பதற்கு உத்தரவாதம் மட்டுமே காரணம் என்று முல்லர் நம்புகிறார். ஆனால் சேவை மறுப்புக்கு ஆளாகக்கூடிய சலுகை இல்லாத இடைமுகம் இருந்தால் (இன்றைய /dev/random என), சில பயன்பாடுகளால் அது தவறாகப் பயன்படுத்தப்படும் என்று லுடோமிர்ஸ்கி வாதிடுகிறார்.

லினக்ஸின் ரேண்டம் எண் துணை அமைப்பின் டெவலப்பர் தியோடர் யூ தக் டிசோ, ஒரு தடுப்புக் குளத்தின் தேவை குறித்து தனது எண்ணத்தை மாற்றிக்கொண்டதாகத் தெரிகிறது. இந்த குளத்தை அகற்றுவது லினக்ஸில் உண்மையான ரேண்டம் எண் ஜெனரேட்டர் (டிஆர்என்ஜி) உள்ளது என்ற எண்ணத்தை திறம்பட அகற்றும் என்று அவர் கூறினார்: "இது முட்டாள்தனம் அல்ல, ஏனெனில் இதுவே *BSD எப்போதும் செய்து வருகிறது."

டிஆர்என்ஜி பொறிமுறையை வழங்குவது பயன்பாட்டு டெவலப்பர்களுக்கு ஒரு தூண்டுதலாக செயல்படும் என்றும் அவர் கவலைப்படுகிறார், உண்மையில், லினக்ஸால் ஆதரிக்கப்படும் பல்வேறு வகையான வன்பொருளைக் கருத்தில் கொண்டு, கர்னலில் டிஆர்என்ஜிக்கு உத்தரவாதம் அளிக்க முடியாது என்று நம்புகிறார். ரூட் சலுகைகளுடன் மட்டுமே உபகரணங்களுடன் பணிபுரியும் திறன் கூட சிக்கலை தீர்க்காது: "அப்ளிகேஷன் டெவலப்பர்கள் தங்கள் பயன்பாடு பாதுகாப்பு நோக்கங்களுக்காக ரூட்டாக நிறுவப்பட வேண்டும் என்று குறிப்பிடுகின்றனர், இதன் மூலம் நீங்கள் 'நல்ல' சீரற்ற எண்களை அணுக முடியும்."

முல்லர், காவோ நீண்ட காலமாக முன்மொழிந்த தடுப்புக் குளச் செயலாக்கத்தை கைவிட்டுவிட்டாரா என்று கேட்டார். லுடோமிர்ஸ்கியின் இணைப்புகளை எடுக்கத் திட்டமிட்டுள்ளதாகவும், கர்னலில் மீண்டும் ஒரு தடுப்பு இடைமுகத்தைச் சேர்ப்பதை தீவிரமாக எதிர்ப்பதாகவும் காவோ பதிலளித்தார்.

"இரைச்சல் மூலமானது சரியாக வகைப்படுத்தப்பட்டுள்ளதா என்பதற்கு கர்னலால் எந்த உத்தரவாதமும் அளிக்க முடியாது. ஒரு GPG அல்லது OpenSSL டெவலப்பர் பெறக்கூடிய ஒரே விஷயம் TRUERANDOM "சிறந்தது" என்ற தெளிவற்ற உணர்வு, மேலும் அவர்கள் அதிக பாதுகாப்பை விரும்புவதால், அவர்கள் சந்தேகத்திற்கு இடமின்றி அதைப் பயன்படுத்த முயற்சிப்பார்கள். ஒரு கட்டத்தில் அது தடுக்கப்படும், மேலும் சில ஸ்மார்ட் பயனர்கள் (ஒருவேளை விநியோக நிபுணர்) அதை init ஸ்கிரிப்ட்டில் செருகினால், கணினிகள் வேலை செய்வதை நிறுத்தும் போது, ​​பயனர்கள் லினஸ் டொர்வால்ட்ஸிடம் மட்டுமே புகார் செய்ய வேண்டும்.

கிரிப்டோகிராஃபர்கள் மற்றும் உண்மையில் டிஆர்என்ஜி தேவைப்படுபவர்கள் தங்களின் சொந்த என்ட்ரோபியை பயனர் இடத்தில் அறுவடை செய்ய ஒரு வழியை வழங்க வேண்டும் என்று காவோ பரிந்துரைக்கிறார். என்ட்ரோபியை சேகரிப்பது என்பது கர்னலால் அது ஆதரிக்கும் அனைத்து வெவ்வேறு வன்பொருள்களிலும் செய்யக்கூடிய ஒரு செயல்முறை அல்ல, அல்லது வெவ்வேறு மூலங்களால் வழங்கப்பட்ட என்ட்ரோபியின் அளவை கர்னலால் மதிப்பிட முடியாது என்று அவர் கூறுகிறார்.

"கர்னல் வெவ்வேறு இரைச்சல் மூலங்களை ஒன்றாகக் கலக்கக் கூடாது, மேலும் இது ஒரு மூர்க்கத்தனமான எளிமையான CPU இல் சில வகையான "இறுக்கும் என்ட்ரோபி விளையாட்டை" விளையாட முயற்சிக்கும்போது அது எத்தனை பிட் என்ட்ரோபியைப் பெறுகிறது என்பதை அறிய முயலக்கூடாது. நுகர்வோர் பயனர்களுக்கான கட்டிடக்கலை IOT/உட்பொதிக்கப்பட்ட வழக்குகள், ஒரு முதன்மை ஆஸிலேட்டருடன் அனைத்தும் ஒத்திசைக்கப்படவில்லை, ஒரு பதிவேட்டை மறுவரிசைப்படுத்த அல்லது மறுபெயரிடுவதற்கு CPU அறிவுறுத்தல்கள் இல்லை, முதலியன."

"இந்த கணக்கீடுகளைச் செய்ய முயற்சிக்கும் கருவிகளை வழங்குவது பற்றி நீங்கள் பேசலாம், ஆனால் ஒவ்வொரு பயனரின் வன்பொருளிலும் இதுபோன்ற விஷயங்களைச் செய்ய வேண்டும், இது பெரும்பாலான விநியோக பயனர்களுக்கு நடைமுறையில் இல்லை. இது கிரிப்டோகிராஃபர்களுக்காக மட்டுமே இருந்தால், அதை அவர்களின் பயனர் இடத்தில் செய்யட்டும். மேலும் GPG, OpenSSL போன்றவற்றை எளிமையாக்க வேண்டாம், அதனால் அனைவரும் "எங்களுக்கு "உண்மையான சீரற்ற தன்மை" வேண்டும், மேலும் குறைவாக இருக்க மாட்டோம்." கிரிப்டோகிராஃபர்களுக்கு நாம் எவ்வாறு இடைமுகங்களை வழங்குகிறோம் என்பதைப் பற்றி பேசலாம், இதன் மூலம் அவர்கள் முதன்மை இரைச்சல் மூலங்களை அணுகுவதன் மூலம் அவர்களுக்குத் தேவையான தகவலைப் பெறலாம், பிரிக்கப்பட்டு பெயரிடப்பட்டது, மேலும் சத்தம் மூலமானது ஒரு நூலகம் அல்லது பயனர் விண்வெளி பயன்பாட்டிற்கு தன்னை அங்கீகரிக்கலாம்."

அத்தகைய இடைமுகம் எப்படி இருக்கும் என்பது பற்றி சில விவாதங்கள் இருந்தன, உதாரணமாக சில நிகழ்வுகளுக்கு பாதுகாப்பு தாக்கங்கள் இருக்கலாம். என்ட்ரோபி சேகரிப்பின் ஒரு பகுதியாக விசைப்பலகை ஸ்கேன் குறியீடுகள் (அதாவது விசை அழுத்தங்கள்) ஒரு குளத்தில் கலக்கப்படுகின்றன என்று காவ் குறிப்பிட்டார்: "இதை பயனர் இடத்திற்கு கொண்டு வருவது, சலுகை பெற்ற கணினி அழைப்பு மூலம் கூட, குறைந்தபட்சம் சொல்வது விவேகமற்றது." மற்ற நிகழ்வு நேரங்கள் பக்க சேனல்கள் மூலம் சில வகையான தகவல் கசிவை உருவாக்கலாம்.

எனவே லினக்ஸின் ரேண்டம் எண் துணை அமைப்பில் நீண்டகாலமாக இருந்து வரும் பிரச்சனை ஒரு தீர்வுக்கான பாதையில் உள்ளது போல் தெரிகிறது. ரேண்டம் எண் துணை அமைப்பில் சமீபத்தில் ஏற்பட்ட மாற்றங்கள் உண்மையில் அதைப் பயன்படுத்தும் போது DoS சிக்கல்களை மட்டுமே ஏற்படுத்தியது. இப்போது கர்னல் வழங்கக்கூடிய சிறந்த சீரற்ற எண்களைப் பெறுவதற்கான திறமையான வழிகள் உள்ளன. லினக்ஸில் TRNG இன்னும் விரும்பத்தக்கதாக இருந்தால், எதிர்காலத்தில் இந்த குறைபாட்டை நிவர்த்தி செய்ய வேண்டும், ஆனால் பெரும்பாலும் இது கர்னலிலேயே செய்யப்படாது.

சில விளம்பரங்கள் 🙂

எங்களுடன் தங்கியதற்கு நன்றி. எங்கள் கட்டுரைகளை விரும்புகிறீர்களா? மேலும் சுவாரஸ்யமான உள்ளடக்கத்தைப் பார்க்க வேண்டுமா? ஒரு ஆர்டரை வைப்பதன் மூலம் அல்லது நண்பர்களுக்கு பரிந்துரை செய்வதன் மூலம் எங்களை ஆதரிக்கவும், $4.99 இலிருந்து டெவலப்பர்களுக்கான கிளவுட் VPS, நுழைவு-நிலை சேவையகங்களின் தனித்துவமான அனலாக், இது உங்களுக்காக எங்களால் கண்டுபிடிக்கப்பட்டது: VPS (KVM) E5-2697 v3 (6 கோர்கள்) 10GB DDR4 480GB SSD 1Gbps பற்றிய முழு உண்மை $19 அல்லது எப்படி ஒரு சர்வரைப் பகிர்வது? (RAID1 மற்றும் RAID10 உடன் கிடைக்கும், 24 கோர்கள் வரை மற்றும் 40GB DDR4 வரை).

ஆம்ஸ்டர்டாமில் உள்ள Equinix Tier IV தரவு மையத்தில் Dell R730xd 2 மடங்கு மலிவானதா? இங்கே மட்டும் 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV $199 இலிருந்து நெதர்லாந்தில்! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 முதல்! பற்றி படிக்கவும் உள்கட்டமைப்பு நிறுவனத்தை எவ்வாறு உருவாக்குவது. ஒரு பைசாவிற்கு 730 யூரோக்கள் மதிப்புள்ள Dell R5xd E2650-4 v9000 சேவையகங்களைப் பயன்படுத்தும் வகுப்பு?

ஆதாரம்: www.habr.com

கருத்தைச் சேர்