আমি কীভাবে কোনও উবুন্টু ভার্চুয়াল মেশিনে কাজ করতে / দেব / এলোমেলো করব?


19

স্পষ্টতই, / dev / এলোমেলো হার্ডওয়্যার বিঘ্ন বা শারীরিক হার্ডওয়্যার অনুরূপ অনির্দেশ্য দিকের উপর ভিত্তি করে। ভার্চুয়াল মেশিনগুলিতে শারীরিক হার্ডওয়্যার না থাকায় ভার্চুয়াল মেশিনের cat /dev/randomঅভ্যন্তরে চলমান কিছুই আসে না। আমি উবুন্টু সার্ভার 11.04 হোস্ট এবং অতিথি হিসাবে, libvirt / KVM সহ ব্যবহার করছি।

আমার একটি ভিএম এর মধ্যে কার্বেরোস সেট আপ করা দরকার, তবে krb5_newrealmসিস্টেমটি কোনও উত্পাদন করছে না বলে কেবল চিরতরে "র্যান্ডম ডেটা লোড হচ্ছে" স্তব্ধ।

কেউ কি জানেন কীভাবে এটিকে ঘিরে কাজ করা যায়? হোস্টের / dev / এলোমেলো (যা খুব চ্যাটি হয়) ভিএম-তে পাস করা সম্ভব হয় যাতে ভিএম এটির এলোমেলো ডেটা ব্যবহার করতে পারে?

আমি পড়েছি যে এখানে কিছু সফ্টওয়্যার বিকল্প রয়েছে, তবে এগুলি এলোমেলো নয় বলে তারা ক্রিপ্টোলজির পক্ষে ভাল নয়।

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

উত্তর:


10

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

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

যদি কোনও কারণে এটি কাজ না করে, তবে সহজ সমাধানটি হ'ল মাইন এনট্রপিতে একটি প্রোগ্রাম লিখে এটি সিস্টেম পুলে যুক্ত করা। নেটওয়ার্ক ইন্টারফেসটি আপনার সবচেয়ে নির্ভরযোগ্য উত্স। উদাহরণস্বরূপ, আপনি কোড লিখতে পারেন:

1) টিএসসিকে জিজ্ঞাসা করুন।

2) একই শারীরিক মেশিনে নেই বলে পরিচিত একটি সার্ভারে একটি ডিএনএস কোয়েরি জারি করুন।

3) কোয়েরি শেষ হলে টিএসসিকে জিজ্ঞাসা করুন।

4) সমস্ত টিএসসি মান সংগ্রহ করে এটি কয়েকবার পুনরাবৃত্তি করুন।

5) জমে থাকা টিএসসি ফাংশনগুলিতে একটি সুরক্ষিত হ্যাশ সঞ্চালন করুন।

6) সুরক্ষিত হ্যাশ ফাংশনটির আউটপুটটিকে সিস্টেমের এনট্রপি পুলে পাস করুন।

)) এন্ট্রপি পুল স্তর পর্যবেক্ষণ করুন এবং এটি কম হওয়া পর্যন্ত অপেক্ষা করুন। এটি হয়ে গেলে, পদক্ষেপ 1 এ ফিরে যান।

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


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

1
এনট্রপি পুলটি কী পূরণ করে তা দেখতে আপনি কিছু পরীক্ষা করতে পারেন। একবার আপনি কিছু আবিষ্কার করেন যা কাজ করে, আপনি কেবল এটি করতে পারেন। নেটওয়ার্ক ট্র্যাফিক এটি করা উচিত। ড্রাইভের ক্রিয়াকলাপটি এটি করা উচিত। আপনি এই আদেশটি দিয়ে কী কাজ করে তা পরীক্ষা করতে পারেন: cat /proc/sys/kernel/random/entropy_availযে কোনও কিছু যা কাজ করে তা বাড়িয়ে তোলে।
ডেভিড শোয়ার্টজ

মনে রাখবেন যে চলমান বিড়াল "খায়" এন্ট্রপি (ঠিকানার জায়গার এলোমেলোকরণ)। আপনি ব্যবহার করতে পারেন python -c 'while True: import time; print str(time.sleep(1))[0:0] + open("/proc/sys/kernel/random/entropy_avail", "rb").read(),'। হ্যাঁ, এটি পড়া শক্ত, তবে আমি মন্তব্যগুলিতে নতুন লাইন প্রবেশের কোনও উপায় দেখতে পাচ্ছি না ...
ডনচো গুনচেভ

10

আমি আমার সমস্ত হেডলেস সার্ভারগুলিতে হ্যাজেড ব্যবহার করি যা ক্রিপ্টোগ্রাফিক অপারেশন করে (যেমন টিএলএস হ্যান্ডশেকস, কার্বেরোস, ইত্যাদি), এটি বেশিরভাগ উবুন্টু সংস্করণগুলির প্যাকেজ সংগ্রহস্থলের মধ্যে থাকা উচিত: http://packages.ubuntu.com/search?keywords=have&&archon=names&suite=all§ion=all

হ্যাজেড আধুনিক প্রসেসরের অভ্যন্তরীণ অবস্থা থেকে এনট্রপি নিষ্কাশন করতে HAVAGE অ্যালগরিদম ব্যবহার করে। এখানে একটি নির্বিঘ্ন ব্যাখ্যা: http://www.irisa.fr/caps/projects/ Shippor /

এনটি প্যাকেজটির সাহায্যে উত্পন্ন এনট্রপির এলোমেলোতা পরীক্ষা করতে পারেন। আমার সিস্টেমে হ্যাজড থেকে উত্পন্ন উত্সাহটি এনট দ্বারা সমস্ত এলোমেলো পরীক্ষায় পাস করেছে


নিশ্চিত হওয়ার জন্য আপনাকে এনআইএসটি পরীক্ষার স্যুটও চালানো দরকার।
মাইকেল হ্যাম্পটন

7

হ্যাঁ আপনি এটি বীজ করতে পারেন, থেকে:

http://manpages.ubuntu.com/manpages/jaunty/man4/random.4.html

আপনি এটি কেবল / dev / urandom এ রেখে দিতে পারেন এবং এটি এনট্রপি পুল বীজ করা উচিত। আমি এটি দ্বারা নিশ্চিত করতে সক্ষম হয়েছি:

root@mx01-ewr:/proc/sys/kernel/random# cat entropy_avail 
128
root@mx01-ewr:/proc/sys/kernel/random# cat /dev/xvda >/dev/urandom  &
[1] 16187 # just using this as a source of data, you could do ssh hostIP 'cat /dev/random' >... etc
root@mx01-ewr:/proc/sys/kernel/random# cat entropy_avail 
1221
root@mx01-ewr:/proc/sys/kernel/random# cat entropy_avail 
1398

বোনাস আপনি যদি এসএসএস কমান্ডটিকে রাউটার দিয়ে যান তবে এটি এনট্রপি জেনারেট করে * :)


আমি মাঝের অংশ সম্পর্কে বিভ্রান্ত। সিস্টেমে আমার কাছে "/ dev / xvda" নেই। হোস্টের / ডিভ / র্যান্ডমকে ভিএম এর / দেব / ইউরানডোমে রুট করার জন্য ssh ব্যবহার করার লক্ষ্য কি? আমি যে কোনও কিছু "/ dev / urandom" এ পাঠাতে পারি এবং এটি "/ dev / এলোমেলো" থেকে বেরিয়ে আসে?
নিক

আমি "ssh 192.168.1.1 'cat / dev / random'" ব্যবহার করে হোস্টের কাছ থেকে র্যান্ডম ডেটা পেতে পারি, তবে কীভাবে এটি অতিথিদের "/ dev / এলোমেলো" প্রভাবিত করতে হয় তা আমি জানি না। "ssh 192.168.1.1 'cat / dev / random'> / dev / urandom" তেমন কিছু করছে বলে মনে হচ্ছে না।
নিক

আমি কেবলমাত্র একটি টার্মিনালে 'ক্যাট / ডেভ / এলোমেলো' চালিয়ে পরীক্ষা করেছি এবং এটি ডেটা আউটপুট আটকানো অবধি অপেক্ষা করে। তারপরে আর একটিতে আমি 'বিড়াল সামরানডমফিল> / দেব / ইউরানডম' করেছি এবং আস্তে আস্তে 'বিড়াল / দেব / র্যান্ডম' আবার আউটপুট স্টাফ করা শুরু করে। দেখে মনে হচ্ছে উপযুক্ত / দেব / এলোমেলো ইনপুট তৈরি করতে আপনার / ডিভ / ইউরেনডমটিতে প্রচুর এলোমেলো ইনপুট দরকার। আপনি কি বলছেন যে বিড়ালটি করার সময় ... '> / dev / ইউরানডম আপনি / dev / এলোমেলোভাবে কোনও আউটপুট দেখছেন না?
বহুবর্ষ

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

সহায়ক উত্তরের জন্য +1।
নিক

5

এটি আমার পক্ষে কাজ করেছে

কোনও ভিএম-এর অভ্যন্তরে ক্রেবি 5_নিউরালম চালানো সম্পূর্ণ হতে দীর্ঘ সময় নিতে পারে ("এলোমেলো ডেটা লোড হচ্ছে" বার্তাটি দেখানোর পরে)। জিনিসগুলি কিছুটা দ্রুত করতে আপনি নীচের হ্যাকটি ব্যবহার করতে পারেন।

$ sudo aptitude install rng-tools -y
$ sudo rngd -r /dev/urandom -o /dev/random  # don't do this in production!

http://fossies.org/linux/john/doc/Kerberos- অডিটিং-HOWTO.md এ পোস্ট করা হয়েছে


1

এক্স 86 উত্তরটি নিশ্চিত হয়ে গেছে যে আপনার ভিএম আরডিআর্যান্ড বা আরডিসিডকে ফাঁদে ফেলবে না। আপনি অনেক কিছুর জন্য আপনার ভিএমকে বিশ্বাস করেন, এটি তাদের মধ্যে একটি।

একটি স্নেডি ব্রিজ সিপিইউ পোস্টে যথেষ্ট সাম্প্রতিক আরএনজিডি, (বা বলা যেতে পারে) আরডিআর্যান্ড বা আরডিসিড ব্যবহার করবে এবং একটি আনপ্রেডড আরডিআর্যান্ড বা আরডিসিড ভিএম-তে প্রবেশ করবে। / dev / এলোমেলোভাবে এনট্রপির সত্যিকারের (ভার্চুয়াল নয়) উত্সের সাথে কাজ করে।

এটি দুর্ঘটনাক্রমে নয়। এটি ঠিক ইন্টেল আর্কিটেকচার ডক্সে রয়েছে।

কোনও ডিভাইস ভিত্তিক হার্ডওয়্যার এনট্রপি উত্সের জন্য (IE এটি ভাগ করতে কার্নেল ড্রাইভার ব্যবহার করে) আপনার শারীরিক উত্সকে সঠিকভাবে ভার্চুয়ালাইজ করার জন্য ভিএম প্রয়োজন। যদি তারা এটি করে এবং তা যদি করে থাকে তবে কোন ডিভাইসের জন্য আমার কোনও ক্লু নেই।

যদি আপনার আরএনজিডির নীচে ড্রিং বিকল্প না থাকে তবে এটি আপডেট করুন। যদি আপনার হার্ডওয়্যারটিতে একটি দ্রুত হার্ডওয়্যার আরএনজি না থাকে, তবে আপনি ধ্বংস হয়ে গেছেন এবং সুরক্ষার প্রয়োজনে আপনার আলাদা আলাদা হার্ডওয়্যার ব্যবহার করা উচিত।

# rngd --help
Usage: rngd [OPTION...]
Check and feed random data from hardware device to kernel entropy pool.

  -b, --background           Become a daemon (default)
  **-d, --no-drng=1|0          Do not use drng as a source of random number input**
                             (default: 0)
  -f, --foreground           Do not fork and become a daemon
  -n, --no-tpm=1|0           Do not use tpm as a source of random number input
                             (default: 0)
  -o, --random-device=file   Kernel device used for random number output
                             (default: /dev/random)
  -p, --pid-file=file        File used for recording daemon PID, and multiple
                             exclusion (default: /var/run/rngd.pid)
  -q, --quiet                Suppress error messages
  -r, --rng-device=file      Kernel device used for random number input
                             (default: /dev/hwrng)
  -s, --random-step=nnn      Number of bytes written to random-device at a time
                             (default: 64)
  -v, --verbose              Report available entropy sources
  -W, --fill-watermark=n     Do not stop feeding entropy to random-device until
                             at least n bits of entropy are available in the
                             pool (default: 2048), 0 <= n <= 4096
 -?, --help                 Give this help list
  --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to Jeff Garzik <jgarzik@pobox.com>.

0

আমার পাশাপাশি ক্রেবি 5_নিউরালাম ঝুলতে সমস্যা ছিল। উপরের উত্তরের উপর ভিত্তি করে এটি আমার পক্ষে ভালভাবে কাজ করেছে:

cat /dev/sda > /dev/urandom

আপনি এলোমেলো ডেটার জন্য আপনার প্রয়োজনীয়তা সম্পন্ন হয়ে গেলে আপনি এটি হত্যা করতে চাইতে পারেন। / dev / sda সম্ভবত আপনার প্রয়োজনের চেয়ে বেশি ডেটা আছে।

দ্রষ্টব্য: আমি নিশ্চিত না যে এই পদ্ধতিতে উত্পন্ন এলোমেলো ডেটা আসলে কতটা এলোমেলো।


পোস্টারের নাম ব্যবহার করে দয়া করে অন্যান্য পোস্টগুলি দেখুন। "উপরে" বা "নীচে" বলা অর্থহীন কারণ আপনি সকলে একই ক্রমযুক্ত পোস্টগুলি দেখতে পাচ্ছেন না।
জন গার্ডেনিয়ার্স

4
এটি কার্যকর হতে পারে তবে / ডিভ / এসডিএতে প্রচুর পরিমাণে নন-র্যান্ডম ডেটা থাকে (কমপক্ষে শূন্যের টন), যা সুরক্ষা দৃষ্টিকোণ থেকে ধারণাটি খুব ভাল করে না। শূন্যগুলি ছাড়াও এটি এমবিআর দিয়ে শুরু হয় যা আসলে খুব অনুমানযোগ্য, আমি কমপক্ষে 3 বাইট অনুমান করতে পারি ... বা এটি বুট করবে না;)
ডনচো গুনচেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.