ලිනක්ස්: අගුළු සංචිතය ඉවත් කිරීම /dev/random

/dev/random, ගුප්ත ලේඛන ආරක්ෂිත ව්‍යාජ සසම්භාවී අංක උත්පාදකයක් (CSPRNG), එක් කරදරකාරී ගැටලුවක් ඇති බව දන්නා කරුණකි: අවහිර කිරීම. ඔබට එය විසඳිය හැකි ආකාරය මෙම ලිපියෙන් විස්තර කෙරේ.

පසුගිය මාස කිහිපය තුළ, කර්නලයේ අහඹු සංඛ්‍යා උත්පාදන පහසුකම් තරමක් ප්‍රතිනිර්මාණය කර ඇත, නමුත් මෙම උප පද්ධතියේ ගැටළු පුළුල් ලෙස විසඳා ඇත. කාල රාමුව. වඩාත් අවසාන වෙනස්කම් පද්ධතිය ආරම්භ වන විට getrandom() පද්ධති ඇමතුම දිගු වේලාවක් අවහිර වීම වැළැක්වීම සඳහා සාදන ලදී, නමුත් මෙයට මූලික හේතුව වූයේ අහඹු සංචිතයේ අවහිර හැසිරීමයි. මෑත කාලීන පැල්ලමක් මෙම තටාකය ඉවත් කර ඇති අතර එය ප්‍රධාන හරය දෙසට ගමන් කිරීමට බලාපොරොත්තු විය.

Andy Lutomirski දෙසැම්බර් අගදී පැච් එකේ තුන්වන අනුවාදය ප්‍රකාශයට පත් කළේය. ඔහු දායක වේ "සසම්භාවී ලිනක්ස් API සඳහා ප්රධාන අර්ථකථන වෙනස්කම් දෙකක්". පැච් විසින් getrandom() පද්ධති ඇමතුමට නව GRND_INSECURE ධජයක් එක් කරයි (Lutomirsky එය getentropy() ලෙස සඳහන් කරයි, එය glibc හි ස්ථාවර ධජ සහිත getrandom() භාවිතයෙන් ක්‍රියාත්මක වේ); මෙම ධජය ඇමතුමට සෑම විටම ඉල්ලා සිටින දත්ත ප්‍රමාණය ආපසු ලබා දෙයි, නමුත් දත්ත අහඹු බව සහතික නොකර. ලබා දී ඇති අවස්ථාවේ දී ඇති හොඳම අහඹු දත්ත නිෂ්පාදනය කිරීමට කර්නලය සරලව උපරිමයෙන් කරනු ඇත. "සමහරවිට කළ යුතු හොඳම දේ එය 'අනාරක්ෂිත' ලෙස හැඳින්වීමයි. (අනාරක්ෂිත) මෙම API ආරක්ෂාව අවශ්‍ය දේවල් සඳහා භාවිතා කිරීම වැළැක්වීමට."

පැච් අවහිර කිරීමේ තටාකය ද ඉවත් කරයි. කර්නලය දැනට සසම්භාවී දත්ත සංචිත දෙකක් පවත්වාගෙන යයි, එකක් /dev/random සහ අනෙක /dev/urandom වෙත, මෙහි විස්තර කර ඇත. ලිපියයි 2015. අවහිර කිරීමේ සංචිතය යනු /dev/random සඳහා වන සංචිතයයි; ඉල්ලීම තෘප්තිමත් කිරීම සඳහා පද්ධතියෙන් "ප්‍රමාණවත්" එන්ට්‍රොපි එකතු කරන තෙක් එම උපාංගය සඳහා කියවීම අවහිර කරනු ඇත (එහි නමේ තේරුම). සංචිතයේ ප්‍රමාණවත් එන්ට්‍රොපියක් නොමැති නම් මෙම ගොනුවෙන් වැඩිදුර කියවීම් ද අවහිර කරනු ලැබේ.

අගුළු සංචිතය ඉවත් කිරීම යන්නෙන් අදහස් වන්නේ /dev/random වෙතින් කියවීම ධජ ශුන්‍යයට සකසා ඇති getrandom() ලෙස හැසිරෙන බවයි (සහ GRND_RANDOM ධජය noop එකක් බවට පත් කරයි). ක්‍රිප්ටෝග්‍රැෆික් සසම්භාවී අංක උත්පාදක යන්ත්‍රය (CRNG) ආරම්භ කළ පසු, /dev/random වෙතින් කියවීම සහ getrandom(...,0) වෙත ඇමතුම් අවහිර නොකරන අතර ඉල්ලා සිටින අහඹු දත්ත ප්‍රමාණය ආපසු ලබා දෙනු ඇත.

Lutomirsky පවසයි: “ලිනක්ස් අවහිර කිරීමේ සංචිතය යල්පැන ගොස් ඇති බව මම විශ්වාස කරමි. CRNG Linux යතුරු උත්පාදනය සඳහා පවා භාවිතා කිරීමට තරම් හොඳ ප්‍රතිදානයක් ජනනය කරයි. අවහිර කිරීමේ සංචිතය කිසිදු ද්‍රව්‍යමය අර්ථයකින් ශක්තිමත් නොවන අතර එයට සහාය වීමට සැක සහිත වටිනාකමක් ඇති යටිතල පහසුකම් රාශියක් අවශ්‍ය වේ.

පවතින වැඩසටහන්වලට ඇත්ත වශයෙන්ම බලපෑමක් නොවන බව සහතික කිරීමේ අරමුණින් වෙනස්කම් සිදු කරන ලද අතර, ඇත්ත වශයෙන්ම, GnuPG යතුරු උත්පාදනය වැනි දේ සඳහා දිගු රැඳී සිටීමේ ගැටළු අඩු වනු ඇත.

“මෙම කථාංග පවතින කිසිදු වැඩසටහනකට බාධා නොකළ යුතුය. /dev/urandom නොවෙනස්ව පවතී. /dev/random තවමත් boot වූ වහාම අවහිර කරයි, නමුත් එය පෙරට වඩා අඩුවෙන් අවහිර කරයි. පවතින ධජ සමඟ getentropy() පෙර පරිදිම ප්‍රායෝගික අරමුණු සඳහා සුදුසු ප්‍රතිඵලයක් ලබා දෙනු ඇත."

ලුටොමිර්ස්කි සඳහන් කළේ කර්නලය ඊනියා “සැබෑ අහඹු සංඛ්‍යා” සැපයිය යුතුද යන්න තවමත් විවෘත ප්‍රශ්නයක් වන අතර එය අවහිර කරන කර්නලය යම් ප්‍රමාණයකට කළ යුතුව තිබුණි. මේ සඳහා ඔහු දකින්නේ එක් හේතුවක් පමණි: "රජයේ ප්‍රමිතීන්ට අනුකූල වීම." Lutomirsky යෝජනා කළේ කර්නලය මෙය සපයන්නේ නම්, එය සම්පූර්ණයෙන්ම වෙනස් අතුරු මුහුණතක් හරහා සිදු කළ යුතු බවත්, නැතහොත් එය පරිශීලක අවකාශයට ගෙන යා යුතු බවත්, එවැනි අගුළු සංචිතයක් නිර්මාණය කිරීමට භාවිතා කළ හැකි අමු සිදුවීම් සාම්පල ලබා ගැනීමට පරිශීලකයාට ඉඩ සලසන බවත්ය.

ස්ටෙපාන් මුලර් ඔහුගේ කට්ටලය යෝජනා කළේය පැච් Linux Random Number Generator (LRNG) සඳහා (දැනට නිකුත් කර ඇති අනුවාදය 26) එය අවශ්‍ය යෙදුම් සඳහා සත්‍ය අහඹු සංඛ්‍යා සැපයීමට ක්‍රමයක් විය හැකිය. LRNG "සසම්භාවී බිටු ජනනය කිරීමට භාවිතා කරන එන්ට්‍රොපි මූලාශ්‍ර පිළිබඳ SP800-90B මාර්ගෝපදේශ සමඟ සම්පුර්ණයෙන්ම අනුකූල වේ," එය රජයේ ප්‍රමිතීන් ගැටලුවට විසඳුමක් බවට පත් කරයි.
මැතිව් ගැරට් "සැබෑ අහඹු දත්ත" යන යෙදුමට විරුද්ධ විය, නියැදි කරන ලද උපාංග ප්‍රතිපත්තිමය වශයෙන් ඒවා පුරෝකථනය කළ හැකි පරිදි නිශ්චිතව ආකෘතිගත කළ හැකි බව සඳහන් කළේය: "අපි මෙහි ක්වොන්ටම් සිද්ධීන් නියැදි නොකරමු."

මුලර් ප්‍රතිචාර දැක්වූයේ "යටින් පවතින ශබ්ද ප්‍රභවය එන්ට්‍රොපිය නිපදවන වේගයට සමාන වේගයකින්" ප්‍රතිඵලයක් පමණක් නිපදවන අහඹු සංඛ්‍යා උත්පාදකයක් විස්තර කිරීමට මෙම යෙදුම ජර්මානු සම්මත AIS 31 වෙතින් එන බවයි.

පාරිභාෂික වෙනස්කම් පසෙක තබා, LRNG පැච් මගින් යෝජනා කර ඇති පරිදි අගුළු සංචිතයක් තිබීම, අවම වශයෙන් වරප්‍රසාද නොමැතිව ප්‍රවේශ වන්නේ නම්, විවිධ ගැටළු වලට තුඩු දෙනු ඇත.

Lutomirsky පැවසූ පරිදි: “මෙය ගැටලුව විසඳන්නේ නැත. වෙනස් පරිශීලකයින් දෙදෙනෙකු gnupg වැනි මෝඩ වැඩසටහන් ක්‍රියාත්මක කරන්නේ නම්, ඔවුන් එකිනෙකා ඉවතට ගලා යයි. /dev/random සමග දැනට ප්‍රධාන ගැටළු දෙකක් ඇති බව මම දකිමි: එය DoS වලට ගොදුරු වේ (එනම් සම්පත් ක්ෂය වීම, ද්වේශ සහගත බලපෑම් හෝ ඒ හා සමාන දෙයක්), සහ එය භාවිතා කිරීමට වරප්‍රසාද අවශ්‍ය නොවන බැවින්, එය අනිසි ලෙස භාවිතා කිරීමටද නැඹුරු වේ. Gnupg වැරදියි, ඒක සම්පුර්ණ කඩා වැටීමක්. අපි gnupg සහ ඒ හා සමාන වැඩසටහන් භාවිතා කරන නව වරප්‍රසාද රහිත අතුරු මුහුණතක් එකතු කළහොත්, අපට නැවත අහිමි වනු ඇත."

Getrandom() එකතු කිරීම GnuPG හට මෙම අතුරුමුහුණත භාවිතා කිරීමට ඉඩ ලබා දෙන බව Mueller සඳහන් කළේය, මන්ද එය සංචිතය ආරම්භ කර ඇති බවට අවශ්‍ය සහතිකය ලබා දෙනු ඇත. GnuPG සංවර්ධක Werner Koch සමඟ සාකච්ඡා මත පදනම්ව, Mueller විශ්වාස කරන්නේ GnuPG දැනට /dev/random වෙතින් කෙලින්ම කියවීමට එකම හේතුව සහතිකය බවයි. නමුත් සේවාව ප්‍රතික්ෂේප කිරීමට ගොදුරු විය හැකි වරප්‍රසාද රහිත අතුරු මුහුණතක් තිබේ නම් (අද /dev/random ලෙස), Lutomirsky තර්ක කරන්නේ එය සමහර යෙදුම් විසින් වැරදි ලෙස භාවිතා කරනු ඇති බවයි.

Linux හි සසම්භාවී සංඛ්‍යා උප පද්ධතියේ සංවර්ධක Theodore Yue Tak Ts'o, අවහිර කිරීමේ සංචිතයක අවශ්‍යතාවය පිළිබඳව ඔහුගේ අදහස වෙනස් කර ඇති බව පෙනේ. මෙම සංචිතය ඉවත් කිරීමෙන් ලිනක්ස් සතුව සත්‍ය සසම්භාවී සංඛ්‍යා උත්පාදකයක් (TRNG) ඇත යන අදහස ඵලදායී ලෙස ඉවත් කළ හැකි බව ඔහු පැවසීය: "මෙය විකාරයක් නොවේ, මන්ද මෙය හරියටම *BSD සැමවිටම කර ඇත."

TRNG යාන්ත්‍රණයක් සැපයීම යෙදුම් සංවර්ධකයින් සඳහා ඇමක් ලෙස ක්‍රියා කරනු ඇතැයි ඔහු සැලකිලිමත් වන අතර, ඇත්ත වශයෙන්ම, Linux මඟින් සහය දක්වන විවිධ වර්ගයේ දෘඩාංග අනුව, කර්නලය තුළ TRNG සහතික කළ නොහැකි බව ඔහු විශ්වාස කරයි. මූල වරප්‍රසාද සමඟ පමණක් උපකරණ සමඟ වැඩ කිරීමේ හැකියාව පවා ගැටළුව විසඳන්නේ නැත: "යෙදුම් සංවර්ධකයින් ඔවුන්ගේ යෙදුම ආරක්‍ෂක අරමුණු සඳහා root ලෙස ස්ථාපනය කළ යුතු බව සඳහන් කරයි, එවිට ඔබට 'ඇත්තටම හොඳ' අහඹු අංක වෙත ප්‍රවේශ විය හැකි එකම මාර්ගය මෙයයි."

ඔහු විසින්ම දිගු කලක් යෝජනා කළ අවහිර කිරීමේ සංචිත ක්‍රියාත්මක කිරීම කාඕ අත්හැර දැමුවාද යන්න මුලර් ඇසීය. Cao ප්‍රතිචාර දැක්වූයේ ඔහු Lutomirsky ගේ පැච් ගැනීමට සැලසුම් කරන බවත් නැවත කර්නලයට අවහිර කරන අතුරු මුහුණතක් එක් කිරීමට ක්‍රියාකාරීව විරුද්ධ වන බවත්ය.

“ශබ්ද ප්‍රභවය නිසි ලෙස සංලක්ෂිත කර තිබේද යන්න පිළිබඳව කර්නලයට කිසිදු සහතිකයක් ලබා දිය නොහැක. GPG හෝ OpenSSL සංවර්ධකයෙකුට ලබා ගත හැකි එකම දෙය වන්නේ TRUERANDOM "වඩා හොඳ" යන නොපැහැදිලි හැඟීමක් වන අතර, ඔවුන්ට වැඩි ආරක්ෂාවක් අවශ්‍ය බැවින්, ඔවුන් එය භාවිතා කිරීමට උත්සාහ කරනු ඇත. යම් අවස්ථාවක දී එය අවහිර වනු ඇති අතර, වෙනත් ස්මාර්ට් පරිශීලකයෙකු (සමහර විට බෙදා හැරීමේ විශේෂඥයෙකු) එය init ස්ක්‍රිප්ට් එකට ඇතුළු කළ විට සහ පද්ධති ක්‍රියා විරහිත වූ විට, පරිශීලකයින්ට පැමිණිලි කිරීමට සිදු වන්නේ Linus Torvalds වෙත පමණි.

Cryptographers සහ ඇත්ත වශයෙන්ම TRNG අවශ්‍ය අයට තමන් කැමති පරිදි භාවිතා කිරීමට පරිශීලක අවකාශයේ තමන්ගේම එන්ට්‍රොපි අස්වැන්න ලබා ගැනීමට ක්‍රමයක් ලබා දෙන ලෙස Cao යෝජනා කරයි. ඔහු පවසන්නේ එන්ට්‍රොපි එකතු කිරීම කර්නලයට එය සහය දක්වන විවිධ දෘඩාංග මත සිදු කළ හැකි ක්‍රියාවලියක් නොවන බවත්, විවිධ මූලාශ්‍රවලින් සපයන එන්ට්‍රොපි ප්‍රමාණය කර්නලයටම තක්සේරු කළ නොහැකි බවත්ය.

"කර්නලය විවිධ ශබ්ද ප්‍රභවයන් එකට මිශ්‍ර නොකළ යුතු අතර, එය ඉතා සරල CPU එකක යම් ආකාරයක "twitchy entropy ක්‍රීඩාවක්" ක්‍රීඩා කිරීමට උත්සාහ කරන විට එයට ලැබෙන එන්ට්‍රොපි බිටු ගණන දැන ගැනීමට එය නිසැකවම උත්සාහ නොකළ යුතුය. පාරිභෝගික පරිශීලකයින් සඳහා ගෘහනිර්මාණ ශිල්පය IOT/Embedded සිද්ධි, සියල්ල තනි ප්‍රධාන දෝලකයක් සමඟ සමමුහුර්ත වී නොමැති විට, ලේඛනයක් නැවත ඇණවුම් කිරීමට හෝ නැවත නම් කිරීමට CPU උපදෙස් නොමැති විට යනාදිය."

“මෙම ගණනය කිරීම් කිරීමට උත්සාහ කරන මෙවලම් සැපයීම ගැන ඔබට කතා කළ හැකිය, නමුත් එවැනි දේවල් එක් එක් පරිශීලකයාගේ දෘඪාංග මත සිදු කළ යුතුය, එය බොහෝ බෙදාහැරීම් භාවිතා කරන්නන් සඳහා ප්‍රායෝගික නොවේ. මෙය ගුප්ත ලේඛන ශිල්පීන් සඳහා පමණක් අදහස් කරන්නේ නම්, එය ඔවුන්ගේ පරිශීලක අවකාශය තුළ සිදු කිරීමට ඉඩ දෙන්න. තවද අපි GPG, OpenSSL යනාදිය සරල නොකරමු, එවිට සෑම කෙනෙකුම පවසන්නේ "අපට "සැබෑ අහඹු බව" අවශ්‍ය වන අතර අඩුවෙන් විසඳා නොගනු ඇත. අපි ක්‍රිප්ටෝග්‍රැපර්වරුන්ට අතුරුමුහුණත් සපයන ආකාරය ගැන කතා කළ හැකි අතර එමඟින් ප්‍රාථමික ශබ්ද ප්‍රභවයන් වෙත ප්‍රවේශ වීමෙන් ඔවුන්ට අවශ්‍ය තොරතුරු ලබා ගත හැකිය, වෙන් කර නම් කර ඇත, සමහර විට ශබ්ද ප්‍රභවයට පුස්තකාලයකට හෝ පරිශීලක අභ්‍යවකාශ යෙදුමකට සත්‍යාපනය කළ හැකිය."

එවැනි අතුරු මුහුණතක් කෙබඳු විය හැකිද යන්න පිළිබඳව යම් සාකච්ඡාවක් ඇති විය, උදාහරණයක් ලෙස සමහර සිදුවීම් සඳහා ආරක්ෂක ඇඟවුම් තිබිය හැකි බැවිනි. එන්ට්‍රොපි එකතු කිරීමේ කොටසක් ලෙස යතුරුපුවරු ස්කෑන් කේත (එනම් යතුරු පහර) සංචිතයකට මිශ්‍ර කර ඇති බව Cao සඳහන් කළේය: "මෙය වරප්‍රසාදිත පද්ධති ඇමතුමක් හරහා වුවද පරිශීලක අවකාශයට ගෙන ඒම, අවම වශයෙන් පැවසීම නුවණට හුරු නොවේ." වෙනත් සිදුවීම් වේලාවන් පැති නාලිකා හරහා යම් ආකාරයක තොරතුරු කාන්දුවීමක් ඇති කළ හැකිය.

එබැවින් ලිනක්ස් හි සසම්භාවී සංඛ්‍යා උප පද්ධතිය සමඟ දිගුකාලීන ගැටලුවක් විසඳුමක් කරා යන බව පෙනේ. සසම්භාවී සංඛ්‍යා උපපද්ධතිය මෑතකදී සිදු කර ඇති වෙනස්කම් ඇත්ත වශයෙන්ම එය භාවිතා කිරීමේදී DoS ගැටළු වලට පමණක් හේතු වී ඇත. දැන් කර්නලයට සැපයිය හැකි හොඳම අහඹු සංඛ්යා ලබා ගැනීමට කාර්යක්ෂම ක්රම තිබේ. ලිනක්ස් මත TRNG තවමත් අවශ්‍ය නම්, අනාගතයේදී මෙම දෝෂය ආමන්ත්‍රණය කිරීමට අවශ්‍ය වනු ඇත, නමුත් බොහෝ විට මෙය කර්නලය තුළම සිදු නොවනු ඇත.

සමහර දැන්වීම් 🙂

අප සමඟ රැඳී සිටීම ගැන ඔබට ස්තුතියි. ඔබ අපේ ලිපි වලට කැමතිද? වඩාත් රසවත් අන්තර්ගතය බැලීමට අවශ්‍යද? ඇණවුමක් කිරීමෙන් හෝ මිතුරන්ට නිර්දේශ කිරීමෙන් අපට සහාය වන්න, $4.99 සිට සංවර්ධකයින් සඳහා cloud VPS, ඔබ වෙනුවෙන් අප විසින් නිර්මාණය කරන ලද ප්‍රවේශ මට්ටමේ සේවාදායකයන්ගේ අද්විතීය ප්‍රතිසමයක්: VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ගැන සම්පූර්ණ සත්‍යය $19 සිට හෝ සේවාදායකයක් බෙදා ගන්නේ කෙසේද? (RAID1 සහ RAID10, cores 24 දක්වා සහ 40GB DDR4 දක්වා ඇත).

Dell R730xd ඇම්ස්ටර්ඩෑම් හි Equinix Tier IV දත්ත මධ්‍යස්ථානයේ 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

අදහස් එක් කරන්න