আমার / দেব / এলোমেলো কেন ডিডি ব্যবহার করার সময় এত ধীর?


29

আমি প্রচুর হার্ড ড্রাইভগুলি আধা-নিরাপদে মুছে ফেলার চেষ্টা করছি। নিম্নলিখিত 20-50Mb / s এ কাজ করছে

dd if=/dev/zero of=/dev/sda

কিন্তু

dd if=/dev/random of=/dev/sda 

কাজ না বলে মনে হচ্ছে। আমি টাইপ করার সময়

dd if=/dev/random of=stdout

আমি বিএস = এবং কাউন্ট = এর জন্য যা পাস তা নির্বিশেষে এটি আমাকে কয়েকটা বাইট দেয়

আমি কি / দেব / এলোমেলো ভুল ব্যবহার করছি? এই সমস্যা সমাধানের দিকে এগিয়ে যাওয়ার জন্য আমার আর কোন তথ্যের সন্ধান করা উচিত? এটির কোনও স্ক্রিপ্ট বা এর মতো কিছু করার উপায় আছে

makeMyLifeEasy | dd if=stdin of=/dev/sda

বা এরকম কিছু ...


1
ঠিক যেমন একটি নোট: আপনি যদি সন্দেহ করেন না যে সিআইএ আপনার ডেটা অনুসরণ করছে, জিরো (/ দেব / শূন্য) দিয়ে একটি একক ওভাররাইট সম্ভবত যথেষ্ট enough আলোচনার জন্য উদাহরণস্বরূপ superuser.com/questions/215852/… দেখুন ।
sleske

কেন /dev/randomকেবল পাঠ থেকে কিছু বাইট রিটার্ন দেয়, দেখুন superuser.com/a/712515/139307
mklement0

উত্তর:


42

উভয় /dev/randomএবং /dev/urandomএকটি "এনট্রপি পুল" ব্যবহার করুন। পুলটি ফুরিয়ে গেলে, /dev/randomএটি পুনরায় পূরণের জন্য অপেক্ষা করে, যার জন্য মনিটরিং সিস্টেমের আচরণের প্রয়োজন হয় (কীবোর্ড ইনপুট, মাউস মুভমেন্ট ইত্যাদি), তবে /dev/urandomআপনাকে সিউডো-এলোমেলো ডেটা দেওয়া চালিয়ে যাবে। /dev/randomতাত্ত্বিকভাবে উচ্চতর মানের, তবে /dev/urandomআপনার উদ্দেশ্যগুলির জন্য এটি অবশ্যই যথেষ্ট ভাল। (তবে /dev/urandomএটি সম্ভবত অন্য কয়েকটি পদ্ধতির তুলনায় ধীর হতে পারে A একটি দ্রুত, তবে নিম্ন মানের, জেনারেটর সম্ভবত হার্ড ড্রাইভগুলি মুছে ফেলার জন্য যথেষ্ট ভাল It's এটি স্পষ্ট নয় যে আক্রমণকারীটি যে ক্রমটি উত্পন্ন হতে চলেছে তা জেনে কোনও সুবিধা অর্জন করবে, বা 0, 1, 2, 3, 4, .... এর মতো ক্রমিকের চেয়ে এলোমেলো সংখ্যাগুলি এই উদ্দেশ্যে আরও ভাল )

random(4)ম্যান পৃষ্ঠাটি উদ্ধৃত :

আপনার সম্পর্কে কিনা ব্যবহার করা উচিত নিশ্চিত না হলে /dev/randomবা /dev/urandom, তারপর সম্ভবত আপনি আধুনিক ব্যবহার করতে চান। একটি সাধারণ নিয়ম হিসাবে, /dev/urandomদীর্ঘকালীন জিপিজি / এসএসএল / এসএসএইচ কীগুলি বাদে অন্য কিছুর জন্য ব্যবহার করা উচিত।

আপডেট : আমি লেখার পরে `র্যান্ডম (4) ম্যান পৃষ্ঠা আপডেট করা হয়েছে। এটি এখন বলে:

/dev/randomইন্টারফেস একটি লিগ্যাসি ইন্টারফেস বিবেচনা করা হয়, এবং /dev/urandomপছন্দ করা হয় এবং সমস্ত ব্যবহারের ক্ষেত্রে যথেষ্ট, অ্যাপ্লিকেশন যা তাড়াতাড়ি বুট করার সময় যদৃচ্ছতা প্রয়োজন ছাড়া; এই অ্যাপ্লিকেশনগুলির জন্য, getrandom(2)পরিবর্তে অবশ্যই ব্যবহার করা উচিত, কারণ এটি এনট্রপি পুলটি শুরু না হওয়া অবধি বন্ধ হয়ে যাবে।

টমাস হান রচিত " দেবতা সম্পর্কে / দেব / ইউরানডম " এছাড়াও দেখুন

তবে /dev/urandom, এটি অবরুদ্ধ হবে না যদিও আপনি প্রচুর পরিমাণে ডেটা তৈরি করতে চান তবে খুব ধীর হতে পারে। আপনার সিস্টেমে চেষ্টা করার আগে কিছু পরিমাপ করুন।

সম্পাদনা: নীচে "সত্য" র্যান্ডম সংখ্যা বনাম সিউডো-এলোমেলো সংখ্যার উপর একটি চিত্র রয়েছে। আপনার আগ্রহী সমস্তই যদি প্রশ্নের উত্তর হয় তবে আপনি এখন পড়া বন্ধ করতে পারেন।

আমি দাবিগুলি (অন্য উত্তরগুলি সহ এখানে) মনে করেছি যা /dev/randomসিউডো-র্যান্ডম নম্বর জেনারেটরের (পিআরএনজি) এর বিপরীতে একটি "সত্য" র্যান্ডম নম্বর জেনারেটর প্রয়োগ করে। উদাহরণস্বরূপ, উইকিপিডিয়া নিবন্ধটি এমন দাবি করে। আমি বিশ্বাস করি না যে এটি সঠিক। এটি সম্পর্কে এখানে কিছু আলোচনা রয়েছে যা হার্ডওয়্যার র্যান্ডম সংখ্যার জেনারেটরকে বোঝায়, তবে আমি এমন কোনও প্রমাণ দেখতে পাই না যে /dev/randomসাধারণত এই জাতীয় ডিভাইস ব্যবহার করে, বা সাধারণ কম্পিউটার এমনকি এমন একটি ডিভাইস ব্যবহার করে। তারা সিআর ফাংশনের মতো পিআরএনজি থেকে পৃথক rand()যে তারা নির্বিচারবাদী নয়, যেহেতু তারা এমন উত্স থেকে এনট্রপি সংগ্রহ করে যেগুলি ব্যবহারিকভাবে অপ্রত্যাশিত।

আমি বলব এখানে তিনটি শ্রেণীর "এলোমেলো" নম্বর জেনারেটর রয়েছে:

  1. সি এর rand()ফাংশনের মতো নির্ধারিত পিআরএনজিগুলি পুনরাবৃত্তযোগ্য ক্রমগুলি তৈরি করতে একটি অ্যালগরিদম ব্যবহার করে যা সত্যিকারের এলোমেলো ক্রমের স্ট্যাটিস্টিকাল বৈশিষ্ট্যগুলি (কম বা কম) তৈরি করে। গেমসের জন্য এগুলি যথেষ্ট ভাল হতে পারে (সেগুলি বীজ দেওয়ার একটি ভাল উপায় দেওয়া হয়েছে), এবং অ্যাপ্লিকেশনগুলির জন্য প্রয়োজনীয় যা পুনরাবৃত্তিযোগ্যতা প্রয়োজন, তবে তারা ক্রিপ্টোগ্রাফির জন্য উপযুক্ত নয়।

  2. I / O ক্রিয়াকলাপের মতো কিছু ব্যবহারিকভাবে অপ্রত্যাশিত উত্স থেকে জেনারেটর পছন্দ করে /dev/randomএবং /dev/urandomসেই ফসল কাটতে পারে (এ কারণেই কিবোর্ডে পাউন্ডিং করা বা মাউস সরিয়ে নেওয়া /dev/randomআরও ডেটা তৈরি করতে পারে )। এগুলি পিআরএনজির সংজ্ঞা পূরণ করে কিনা তা আমার কাছে স্পষ্ট নয় (আমি এমন সংজ্ঞা দেখেছি যেগুলি বলে যে একটি পিআরএনজি হ'ল ডিস্ট্রিমেন্টিক), তবে তারা সত্যিকারের এলোমেলো সংখ্যা জেনারেটরও নয়।

  3. হার্ডওয়্যার এলোমেলো সংখ্যা জেনারেটর যা তাদের প্রাথমিক অবস্থা সম্পর্কে সম্পূর্ণ জ্ঞান থাকা সত্ত্বেও শারীরিকভাবে অনির্দেশ্য এবং সঠিক পরিসংখ্যানগত বৈশিষ্ট্যগুলি নিশ্চিত করতে গাণিতিক কৌশলগুলিও ব্যবহার করে।


2
এমনকি / ডিভ / ইউরানডম ধীরগতির ধরণের যা আপনার যদি বিপুল পরিমাণ ডিস্ক স্পেস পূরণ করতে হয় (সম্পূর্ণ পার্টিশনের মতো, এগুলিতে এনক্রিপ্ট করা ফাইল সিস্টেম তৈরি করার আগে)। এটি দুর্দান্ত উত্তর এবং বিস্তারিত ব্যাখ্যার জন্য ছোট সংযোজন হিসাবে নেওয়া উচিত।
ভেষ্ট

যেহেতু আপনি একটি এলোমেলো বিট থেকে একাধিক বিস্তৃত এনট্রপি গণনা করতে পারবেন না / তৈরি করতে পারবেন না, ইনপুট হিসাবে প্রাপ্ত 'র্যান্ডম' বিটগুলির থেকে বেশি যা কিছু 'র্যান্ডম' বিট উত্পন্ন / আউটপুট করে তা হ'ল সর্বোত্তমভাবে সিউডো-এলোমেলো। সুতরাং, /dev/urandomস্পষ্টভাবে ছদ্ম-এলোমেলো। /dev/randomএটি তার ইনপুটটির এনট্রপির একটি রক্ষণশীল প্রাক্কলন তৈরি করার চেষ্টা করে এবং এর চেয়ে বেশি এনট্রপি আউটপুট দেয় না (এটি মনে করে) আসলে এটি পার্থক্য করে। এটি একটি উত্সর্গীকৃত টিআরএনজি ডিভাইসের উপস্থিতি থেকে স্বতন্ত্র, কারণ কীবোর্ড বা নেটওয়ার্ক আইও বনাম সময়ের মতো কোনও প্রকারের স্বাধীন ইভেন্ট থেকেও সত্যিকারের এনট্রপি পাওয়া যায়।
জিমিবি

13

/dev/randomসত্যিকারের এনট্রপি, সত্যই এলোমেলো বাইটের উত্স। যেমন, এটি এলোমেলো উত্স প্রয়োজন। এলোমেলোতা পড়ে আপনি এটি ব্যবহার করতে পারেন up এটি আপনাকে এলোমেলোভাবে সমস্ত উপহার দেবে, তারপরে এটি আরও বেশি হওয়া পর্যন্ত অবরুদ্ধ করুন। আপনি সম্ভবত সেখানে অপেক্ষা করছেন, এবং মেশিনটি খুব সামান্য নতুন এলোমেলোভাবে পেয়েছে, এবং এটি কেবল অপেক্ষা করে।

/dev/randomসত্যিকারের র্যান্ডম ক্রিপ্টো জন্য, উচ্চ মানের র্যান্ডমনেস। যেমন, এটি কোনও ডিস্ক ড্রাইভ ওভাররাইটের জন্য ওভারকিল। /dev/zeroকয়েকবার থেকে লেখা ঠিক আছে। বা আপনি লিখতে পারেন /dev/urandom, যা অবরুদ্ধ হবে না এবং সিউডো-এলোমেলো সংখ্যা দেয় যখন এটি সত্যিকারের এলোমেলো হয়ে যায়।


10
না, /dev/random"সত্যিকারের র্যান্ডম বাইটস" তৈরি করে না। এটি এর চেয়ে উচ্চমানের সিউডো- র‌্যান্ডম বাইট জেনারেট /dev/urandomকরে।
কিথ থম্পসন

7

লিনাক্স / ডেভ / এলোমেলো একটি বিশেষ ফাইল যা উচ্চ মানের সিউডো এলোমেলো সংখ্যার পরিবেশন করে। এই বাস্তবায়ন কীবোর্ড, মাউস, ডিস্ক এবং সিস্টেম বিঘ্নগুলি থেকে উত্পন্ন ইভেন্টগুলি থেকে এনট্রপি সংগ্রহ করে। ( এই দস্তাবেজটি দেখুন) সুতরাং যখন এ জাতীয় কোনও ইভেন্ট নেই, এনট্রপি পুলটি খালি থাকে, / ডিভ / র্যান্ডম থেকে পড়লে অতিরিক্ত পরিবেশের গোলমাল সংগ্রহ না করা অবরুদ্ধ হবে। এটি আপনার সমস্যার ব্যাখ্যা দেয়। এন্ট্রপি পুলটি পূরণ করতে আপনি কীবোর্ডে কী টিপতে পারেন।

অন্য নোটে সত্যিকারের এলোমেলো সংখ্যার জেনারেটরটি হার্ডওয়্যার র্যান্ডম নম্বর জেনারেটর ব্যবহার করে যা শারীরিক প্রক্রিয়াগুলি থেকে এলোমেলো সংখ্যা উত্পন্ন করে processes এই প্রক্রিয়াগুলিতে মাইক্রোস্কোপিক ঘটনাটি অন্তর্ভুক্ত যা নিম্ন স্তরের, পরিসংখ্যানগতভাবে এলোমেলো "শব্দ" সংকেত উত্পাদন করে যেমন তাপীয় শব্দ বা ফোটো ইলেকট্রিক প্রভাব বা অন্যান্য শারীরিক ঘটনা। এই প্রক্রিয়াগুলি, তাত্ত্বিকভাবে, সম্পূর্ণ অপ্রত্যাশিত এবং তত্ত্বের অনাকাঙ্ক্ষিত দাবিগুলি পরীক্ষামূলক পরীক্ষার বিষয়।

একটি হার্ডওয়্যার এলোমেলো সংখ্যার জেনারেটর সাধারণত ট্রান্সডুসার দ্বারা শারীরিক ঘটনার কিছু দিককে বৈদ্যুতিক সংকেতে রূপান্তর করে, একটি পরিবর্ধক এবং অন্যান্য বৈদ্যুতিন সার্কিটিকে এলোমেলো ওঠানামাটির প্রশস্ততাকে একটি ম্যাক্রোস্কোপিক স্তরে বৃদ্ধি করে এবং ডিজিটাল রূপান্তরকারীতে কিছু প্রকার অ্যানালগ ধারণ করে consists আউটপুটটিকে ডিজিটাল সংখ্যায় রূপান্তর করতে, প্রায়শই একটি সাধারণ বাইনারি অঙ্ক 0 বা 1 এ বার বার এলোমেলোভাবে পরিবর্তিত সংকেতকে নমুনা দেওয়ার মাধ্যমে, এলোমেলো সংখ্যার একটি সিরিজ পাওয়া যায়।

হার্ডওয়্যার র্যান্ডম নম্বর জেনারেটর ডিভাইস ড্রাইভার এবং অন্যান্য উত্সগুলি থেকে একটি এনট্রপি পুলে পরিবেশগত শব্দ সংগ্রহ করে। এই এনট্রপি পুল থেকে এলোমেলো সংখ্যা তৈরি করা হয়। পড়লে, / dev / এলোমেলো ডিভাইস কেবল এনট্রপি পুলের শব্দগুলির বিটগুলির আনুমানিক সংখ্যার মধ্যে এলোমেলো বাইটগুলি উপস্থিত করবে। এটি আপনার সমস্যার ব্যাখ্যা দেয়।

হার্ডওয়্যার আরএনজি-র কিছু বাস্তবায়ন কার্নেল ডক এবং একটি ডিভাইসে তথ্যগুলিতে ব্যাখ্যা করা হয়েছে ।

/ Dev / এলোমেলো একটি প্রতিচ্ছবি হ'ল / দেব / ইউরানডম ("আনলকড" / নন-ব্লকিং এলোমেলো উত্স) যা অভ্যন্তরীণ পুলটিকে আরও ছদ্ম-র্যান্ডম বিট তৈরি করতে পুনরায় ব্যবহার করে। এর মানে হল যে কলটি ব্লক করবে না, তবে আউটপুটটিতে / dev / এলোমেলো থেকে সংশ্লিষ্ট পড়ার চেয়ে কম এনট্রপি থাকতে পারে।

সুতরাং যদি আপনার অভিপ্রায়টি সিএসপিআরএনজি (ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত সিউডোর্যান্ডম নম্বর জেনারেটর) তৈরি না করে তবে আপনার / ডিভ / ইউরানডম ব্যবহার করা উচিত।


/dev/randomতাপ শব্দের মতো উত্সগুলি কি সত্যই ব্যবহার করে? আমার উপলব্ধি হ'ল এটি অপেক্ষাকৃত সিস্টেমের অবস্থা (তুলনামূলকভাবে) থেকে I / O ক্রিয়াকলাপ এবং প্রক্রিয়া স্থিতির মতো তথ্য ব্যবহার করে। আমি মনে করি না বেশিরভাগ লিনাক্স সিস্টেমে এমন হার্ডওয়্যার রয়েছে যা তাপের আওয়াজ তুলতে পারে। আপনি কি এই সম্পর্কে কিছু ডকুমেন্টেশন উদ্ধৃত করতে পারেন?
কিথ থম্পসন

হ্যাঁ তুমিই ঠিক. আমি উল্লেখ করা তথ্য জেনেরিক হার্ডওয়্যার র্যান্ডম নম্বর জেনারেটরের জন্য প্রযোজ্য।
শচীন দিভেকার

লিঙ্কে লিনাক্সে এটি কীভাবে প্রয়োগ করা হয় সে সম্পর্কে ডকটি দেখুন । সেখানে উল্লেখ করা হয়েছে যে একটি পিসি পরিবেশে, এলআরএনজি কীবোর্ড, মাউস, ডিস্ক এবং সিস্টেম বিঘ্নিত থেকে উদ্ভূত ইভেন্টগুলি থেকে এনট্রপি সংগ্রহ করে। অন্যান্য পরিবেশে, এলআরএনজি উপলব্ধ সংস্থান থেকে এনট্রপি সংগ্রহ করে। উদাহরণস্বরূপ, একটি ওপেনডব্লিউআরটি রাউটারে একটি হার্ড ডিস্ক, মাউস এবং কীবোর্ড অন্তর্ভুক্ত নয় এবং এগুলি এন্ট্রপি উত্স হিসাবে ব্যবহার করা যায় না। অন্যদিকে, রাউটার নেটওয়ার্ক ইভেন্টগুলি থেকে এনট্রপি সংগ্রহ করে।
শচীন দিভেকার

সম্ভবত আপনি আপনার উত্তর আপডেট করতে পারে। /dev/random"সত্যিকারের এলোমেলো সংখ্যা" উত্পন্ন করে বলা ঠিক না বলে আমি বিশ্বাস করি না ।
কিথ থম্পসন

উইকিপিডিয়ায় / ডিভ / র্যান্ডম নিবন্ধে বলা হয়েছে, লিনাক্স প্রথম অনুচ্ছেদে এইভাবে সত্যিকারের র্যান্ডম সংখ্যা জেনারেটর প্রয়োগকারী প্রথম অপারেটিং সিস্টেম ছিল।
শচীন দিভেকার

2

আপনার প্রশ্নের উত্তর না দিয়ে - এখানে ইতিমধ্যে সম্পূর্ণ উত্তর রয়েছে - আপনি দারিকের বুট এবং নুকে ওরফে ডিবিএন যা একটি লাইভ-সিডি ড্রাইভ ওয়াইপার তাও পরীক্ষা করে দেখতে পারেন ।


0

shredকোর্টিলের সাথে আসা কমান্ডটি কেবল ব্যবহার করুন । এটি দক্ষতার সাথে এলোমেলো ডেটা ব্যবহার করে। ডিডি একটি নিম্ন স্তরের সরঞ্জাম এবং এটি সম্ভবত এই কাজের জন্য কিছুটা নিচু স্তর। shredউদাহরণস্বরূপ ডিভাইসের অলিখিত লিখিত অংশগুলি দক্ষতার সাথে এড়িয়ে যাবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.