Java.util.Random এবং java.security.SecureRandom এর মধ্যে পার্থক্য


202

আমার দলটি এমন কিছু সার্ভার সাইড কোড হস্তান্তর করেছে (জাভাতে) যা এলোমেলো টোকেন উত্পন্ন করে এবং আমার এটি সম্পর্কে একটি প্রশ্ন আছে -

এই টোকেনগুলির উদ্দেশ্যটি মোটামুটি সংবেদনশীল - সেশন আইডি, পাসওয়ার্ড পুনরায় সেট লিঙ্ক ইত্যাদির জন্য ব্যবহৃত হয় তাই তাদের ক্রিপ্টোগ্রাফিকভাবে এলোমেলো হওয়া দরকার যাতে কেউ তাদের অনুমান করতে না পারে বা এগুলি কার্যকরভাবে জোর করে তোলে। টোকেনটি "দীর্ঘ" তাই এটি 64 বিট দীর্ঘ।

কোডটি বর্তমানে java.util.Randomএই টোকেনগুলি তৈরি করতে শ্রেণিটি ব্যবহার করে । এর জন্য ডকুমেন্টেশনটিjava.util.Random পরিষ্কারভাবে নিম্নলিখিতটি বলে:

Java.util.Random এর উদাহরণগুলি ক্রিপ্টোগ্রাফিকভাবে নিরাপদ নয়। সুরক্ষা-সংবেদনশীল অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহারের জন্য ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত সিউডো-এলোমেলো নম্বর জেনারেটর পেতে সিকিউরআরন্ডম ব্যবহারের পরিবর্তে বিবেচনা করুন।

যাইহোক, কোডটি বর্তমানে যেভাবে ব্যবহার করছে java.util.Randomতা হ'ল - এটি java.security.SecureRandomক্লাসটি ইনস্ট্যান্ট করে এবং তারপরে শ্রেণিকে তাত্ক্ষণিকভাবে ব্যবহার করার SecureRandom.nextLong()জন্য বীজ প্রাপ্ত করার জন্য পদ্ধতিটি ব্যবহার করে java.util.Random। তারপরে এটি java.util.Random.nextLong()টোকেন উত্পন্ন করতে পদ্ধতি ব্যবহার করে ।

সুতরাং এখন আমার প্রশ্ন - এটি এখনও বোধহয় সুরক্ষিত যে java.util.Randomবীজ ব্যবহার করা হচ্ছে java.security.SecureRandom? আমার কি কোডটি পরিবর্তন করতে হবে যাতে এটি java.security.SecureRandomটোকেনগুলি তৈরি করতে একচেটিয়াভাবে ব্যবহৃত হয়?

বর্তমানে কোড বীজের Randomশুরুতে একবার


14
একবার বীজ পরে, java.util.Random থেকে আউটপুট হ'ল সংখ্যার নির্ধারক ক্রম। আপনি এটি নাও চাইতে পারেন।
পিটার btibraný

1
কোডটি কি Randomএকবার শুরুর সময় বীজ দেয়, বা এটি প্রতিটি টোকেনের জন্য একটি নতুন বীজ দেয়? আশা করি, এটি একটি মূ .় প্রশ্ন, তবে আমি ভেবেছিলাম যে আমি এটি পরীক্ষা করব।
টম অ্যান্ডারসন

8
র্যান্ডমটির কেবলমাত্র 48-বিট অভ্যন্তরীণ অবস্থা রয়েছে এবং 2 next 48 কল পরের পুনরাবৃত্তি হবে নেক্সটলং () -এর অর্থ হল এটি সমস্ত সম্ভাব্য longবা doubleমান উত্পাদন করে না ।
পিটার লরি

3
আরও একটি গুরুতর সমস্যা আছে। Bits৪ বিটের অর্থ হল 1.84 * 10 ^ 19 সম্ভাব্য সংমিশ্রণ যা একটি পরিশীলিত আক্রমণ প্রতিরোধ করতে খুব কম is সেখানে এমন মেশিন রয়েছে যা 60 ঘন্টার মধ্যে প্রতি সেকেন্ডে 90 * 10 ^ 9 কীগুলির সাথে একটি 56 বিট ডিইএস কোড (ফ্যাক্টর 256 কম) ফাটল। 128 বিট বা দুটি লম্বা ব্যবহার করুন!
থারস্টেন এস

উত্তর:


232

মান ওরাকল JDK 7 বাস্তবায়ন ব্যবহারসমূহ কি একটি লিনিয়ার Congruential জেনারেটর বলা হচ্ছে র্যান্ডম মান উত্পাদন করতে java.util.Random

java.util.Randomউত্স কোড (JDK 7u2) থেকে নেওয়া হয়েছে , পদ্ধতি সম্পর্কে একটি মন্তব্য থেকে protected int next(int bits), যা এলোমেলো মানগুলি উত্পন্ন করে:

এটি একটি লিনিয়ার কংগ্রেসিয়াল সিউডোরেন্ডম নম্বর জেনারেটর, ডিএইচ লেহমার দ্বারা সংজ্ঞায়িত করা হয়েছে এবং ডোনাল্ড ই নথ দ্বারা বর্ণিত হয়েছে আর্ট অফ কম্পিউটার প্রোগ্রামিং-এ, খণ্ড 3: সেমিনিউমেরিকাল অ্যালগরিদম , বিভাগ 3.2.1।

লিনিয়ার সম্মিলিত জেনারেটরের পূর্বাভাস

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

কিভাবে লিনিয়ার ক্রেগ্রুভেনিয়াল জেনারেটর ভাঙবেন

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

সুরক্ষা "উন্নত" বীজের সাথে উন্নত হয় না। আপনি যদি একটি এলোমেলো মান উত্পন্ন করে SecureRandomবা এমনকি ডাই বেশ কয়েকবার ঘূর্ণন করে মান উত্পাদন করেন তবে এটি সহজ নয় ।

একজন আক্রমণকারী কেবল পর্যবেক্ষণ করা আউটপুট মানগুলি থেকে বীজ গণনা করবে। এটি ক্ষেত্রে 2 ^ 48 এর চেয়ে উল্লেখযোগ্যভাবে কম সময় নেয় java.util.Random। অবিশ্বাসীরা এই পরীক্ষাটি ব্যবহার করে দেখতে পারেন , যেখানে এটি দেখানো হয়েছে যে আপনি ভবিষ্যতে Randomআউটপুটগুলি প্রায় 2 ^ 16 সময় অনুসারে মাত্র দুটি (!) আউটপুট মান পর্যবেক্ষণ করতে পারেন । আধুনিক কম্পিউটারে এখনই আপনার এলোমেলো সংখ্যার আউটপুট পূর্বাভাস দিতে এক সেকেন্ডও সময় লাগে না।

উপসংহার

আপনার বর্তমান কোডটি প্রতিস্থাপন করুন। SecureRandomএকচেটিয়াভাবে ব্যবহার করুন । তারপরে কমপক্ষে আপনার কিছুটা গ্যারান্টি থাকবে যে ফলাফলটি অনুমান করা শক্ত be আপনি যদি কোনও ক্রিপ্টোগ্রাফিক সুরক্ষিত PRNG এর বৈশিষ্ট্যগুলি চান (আপনার ক্ষেত্রে এটি আপনি চান) তবে আপনাকে কেবল তার সাথে যেতে হবে SecureRandom। এটি যেভাবে ব্যবহার করা উচিত ছিল তা পরিবর্তন করার বিষয়ে চতুর হওয়ার ফলে প্রায় সর্বদা কম সুরক্ষিত কিছু হবে ...


4
খুব সহায়ক, আপনি কীভাবে সিকিউরআরন্ডম কীভাবে কাজ করে তা ব্যাখ্যা করতেও (যেমন র্যান্ডম কীভাবে কাজ করে তা ব্যাখ্যা করার মতো) ..
গ্রেডডিপলিউড

4
এটি সুরক্ষার উদ্দেশ্যটিকে পরাস্ত করে
আজফুলমে

আমি জানি, সেই পাঠটি কঠিনভাবে শিখেছি। তবে একটি শক্ত সাইফার এবং হার্ড-টু-সন্ধানের উত্সটি ভালভাবে কাজ করে। খাঁজ এটিতে কিছু শিখতে পারে (তিনি "পাসওয়ার্ড ফাইল" কী হিসাবে ব্যবহার করে বেসিক এনক্রিপশন সহ এনস্টোনযুক্ত একটি .lastlogin ফাইলটিতে তার ব্যবহারকারীর পাসওয়ার্ডটি এনকোড করেছেন)
Azulflame

1
এখানে আসল প্রশ্ন: জাভা যদি একইরকম এপিআই দিয়ে আরও সুরক্ষিত প্রেঙ তৈরি করতে পারে তবে কেন তারা কেবল ভাঙ্গাটি প্রতিস্থাপন করেনি?
জোয়েল কোহোর্ন

11
@ জোয়েলকোহুর্ন এটি Randomভাঙ্গা নয় - এটি কেবল বিভিন্ন পরিস্থিতিতে ব্যবহার করা উচিত। অবশ্যই, আপনি সর্বদা SecureRandom ব্যবহার করতে পারেন। তবে সাধারণভাবে SecureRandomখাঁটি থেকে ধীরে ধীরে ধীর Random। এবং এমন কিছু ঘটনা রয়েছে যেখানে আপনি কেবল ভাল পরিসংখ্যানগত বৈশিষ্ট্য এবং দুর্দান্ত পারফরম্যান্সে আগ্রহী, তবে আপনি সুরক্ষা সম্পর্কে সত্যই যত্ন নেন না: মন্টে-কার্লো সিমুলেশনগুলি একটি ভাল উদাহরণ। আমি একটি অনুরূপ উত্তরে সে সম্পর্কে মন্তব্য করেছি , সম্ভবত আপনি এটি দরকারী পাবেন।
এম্বোস

72

এলোমেলোভাবে কেবল 48 টি বিট থাকে যেখানে সিকিউরআরন্ডম হিসাবে 128 বিট পর্যন্ত থাকতে পারে। তাই সুরক্ষিতভাবে পুনরাবৃত্তি হওয়ার সম্ভাবনা খুব কম।

এলোমেলো ব্যবহার system clockবীজ যেমন / অথবা বীজ তৈরি করতে। সুতরাং আক্রমণকারী যদি বীজ উত্পাদনের সময়টি জানত তবে তাদের সহজেই পুনরুত্পাদন করা যেতে পারে। তবে SecureRandomRandom Data আপনার কাছ থেকে নেয় os(এগুলি কী-স্ট্রোক ইত্যাদির মধ্যে অন্তর হতে পারে - বেশিরভাগ ওএস এই ডেটাগুলি ফাইলে সংরক্ষণ করে - /dev/random and /dev/urandom in case of linux/solaris) এবং এটি বীজ হিসাবে ব্যবহার করে।
সুতরাং যদি ছোট টোকেনের আকারটি ঠিক থাকে (র্যান্ডমের ক্ষেত্রে) তবে আপনি কোনও কোড পরিবর্তন ছাড়াই আপনার কোডটি ব্যবহার চালিয়ে যেতে পারেন, যেহেতু আপনি বীজ উত্পাদন করতে সিকিওরআরডম ব্যবহার করছেন। তবে আপনি যদি বৃহত্তর টোকেন চান (যা বিষয় হতে পারে না brute force attacks) সিকিউরর্যান্ডম-এর সাথে যান -
এলোমেলো ক্ষেত্রে কেবল 2^48চেষ্টা করা দরকার, আজকের সময়ের উন্নত সিপিইউ ব্যবহারিক সময়ে এটি ভেঙে ফেলা সম্ভব। তবে সুরক্ষার জন্য 2^128প্রচেষ্টা প্রয়োজন হবে, যা আজকের উন্নত মেশিনগুলির সাথে এমনকি ভেঙে যেতে বছর এবং বছর সময় লাগবে। আরও তথ্যের জন্য এই লিঙ্কটি

দেখুন । সম্পাদনা @ এম্বেস দ্বারা সরবরাহিত লিঙ্কগুলি পড়ার পরে, এটি স্পষ্ট যে বীজটি এটি এলোমেলোভাবে সম্ভবত জাভা.ইটিল.র্যান্ডম ব্যবহার করা উচিত নয়। আউটপুট পর্যবেক্ষণ করে বীজ গণনা করা খুব সহজ। SecureRandom জন্য যান - নেটিভ PRNG ব্যবহার করুন (উপরের লিঙ্কে দেওয়া আছে) কারণ এটি প্রতিটি কলের জন্য ফাইল থেকে এলোমেলো মান নেয়



/dev/randomnextBytes()। এই পদ্ধতি একটি আক্রমণকারী আউটপুট দেখে পারবে না কিছু আউট করতে যদি না তিনি বিষয়বস্তু নিয়ন্ত্রণ করছে /dev/randomফাইল (যা খুবই অসম্ভাব্য) SHA1 prng অ্যালগরিদম গণনা করে বীজ শুধুমাত্র একবার এবং আপনার VM- র যদি একই ব্যবহার মাসের জন্য চলমান বীজ, এটি আক্রমনকারী দ্বারা ক্র্যাক করা হতে পারে যিনি নিষ্ক্রিয়ভাবে আউটপুট পর্যবেক্ষণ করছেন। দ্রষ্টব্য - যদি আপনি আপনার ওএস থেকে দ্রুত এলোমেলো বাইটগুলি (এনট্রপি) লিখতে সক্ষম হন , তবে ন্যাটিভ পিআরএনজি ব্যবহার করার সময় আপনি সমস্যার মধ্যে পড়তে পারেন । সেক্ষেত্রে SecureRandom এর একটি SHA1 PRNG উদাহরণ এবং প্রতি কয়েক মিনিট (বা কিছু বিরতি) ব্যবহার করুন, এই উদাহরণটি থেকে মান সহ বীজ করুন


nextBytes()/dev/randomnextBytes()SecureRandom এর একটি নেটিভ PRNG উদাহরণ। এই দুটি সমান্তরালভাবে চালানো নিশ্চিত করবে যে আপনি নিয়মিতভাবে সত্যিকারের র্যান্ডম মানগুলি বপন করছেন, অপারেটিং সিস্টেমের মাধ্যমে প্রাপ্ত এন্ট্রপিও ক্লান্ত করবেন না।


এটির পূর্বাভাস দেওয়ার জন্য 2 ^ 48 এর চেয়ে অনেক কম প্রয়োজন Random, ওপি মোটেও ব্যবহার Randomকরা উচিত নয় ।
এমবস

@ এম্বেস: আমি ব্রুটফোর্সের কথা বলছি।
আশ্বিন

1
লিনাক্সের সাথে সাবধানতা অবলম্বন করুন: এটি এনট্রপি ক্লান্তিতে পৌঁছতে পারে (হার্ডওয়্যারের চেয়ে ভিএম-তে আরও বেশি)! /proc/sys/kernel/random/entropy_availকিছু থ্রেড ডাম্পগুলি দেখুন এবং পরীক্ষা করুন যে পড়ার সময় খুব বেশি দীর্ঘ অপেক্ষা নেই/dev/random
ইয়ভেস মার্টিন

2
লক্ষ্য করুন যে ওরাকল জেআরই (কমপক্ষে 1.7) ডিফল্টরূপে / dev / urandom এর সাথে কাজ করে এবং / dev / এলোমেলো নয় তাই আপনার উত্তরটির প্রত্যয়টি আর সঠিক হয় না। সুরক্ষিত সম্পত্তি.সোর্স সম্পত্তিটির জন্য check জাভাআহোহোম / লিব / সুরক্ষা / জাভা.সিকিউরিটি যাচাই করতে
বোয়াজ

1
আমাদের জাভা.সিকিউরিটি ফাইলটিতে ফাইলের পরিবর্তে নিরাপদরন্ডম.সোর্স = ফাইল: / দেব / ইউরানডম ছিল: /// দেব / ইউরানডম (ফাইল প্রোটোকলের জন্য কোলনের পরে দুটি স্ল্যাশ, তারপরে ফাইল সিস্টেমের মূলের জন্য আরও একটি স্ল্যাশ), এটি পিছনে পড়েছে / dev / এলোমেলোভাবে যা এন্ট্রপি পুল ক্লান্তিতে সমস্যা সৃষ্টি করেছে। এটি সম্পাদনা করা যায়নি, সুতরাং অ্যাপ্লিকেশন শুরুতে ডানদিকে একটি সিস্টেম সম্পত্তি java.security.egd সেট করতে হয়েছিল।
ম্যাক্সপলক

11

যদি আপনি java.util.Random.nextLong()একই বীজের সাথে দু'বার চালনা করেন তবে এটি একই সংখ্যা তৈরি করবে। সুরক্ষার কারণে আপনি আটকে থাকতে চান java.security.SecureRandomকারণ এটি অনেক কম অনুমানযোগ্য।

2 টি ক্লাস সমান, আমার মনে হয় আপনাকে কেবল একটি রিফ্যাক্টরিং সরঞ্জাম দিয়ে পরিবর্তন Randomকরতে SecureRandomহবে এবং আপনার বিদ্যমান কোডগুলির বেশিরভাগই কাজ করবে।


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

1
বিভিন্ন SecureRandom বাস্তবায়ন আছে, কিছু PRNGs, কিছু না। অন্যদিকে, java.util.Random সর্বদা PRNG (যেমন এর জাভাডকে সংজ্ঞায়িত)।
পিটার btibraný

3

যদি আপনার বিদ্যমান কোডটি পরিবর্তন করা একটি সাশ্রয়ী মূল্যের কাজ, তবে আমি আপনাকে জাভাদোকের পরামর্শ অনুযায়ী সিকিউরর্যান্ডম ক্লাসটি ব্যবহার করার পরামর্শ দিচ্ছি।

এমনকি যদি আপনি খুঁজে পান তবে র‌্যান্ডম শ্রেণির প্রয়োগটি অভ্যন্তরীণভাবে SecureRandom শ্রেণি ব্যবহার করে। আপনার এটি গ্রহণ করা উচিত নয়:

  1. অন্যান্য ভিএম বাস্তবায়ন একই কাজ করে।
  2. জেডিকে ভবিষ্যতের সংস্করণগুলিতে র্যান্ডম শ্রেণির প্রয়োগ এখনও সিকিউরর্যান্ডম ক্লাস ব্যবহার করে

সুতরাং ডকুমেন্টেশনের পরামর্শ অনুসরণ এবং সিকিউরর্যান্ডম দিয়ে সরাসরি যাওয়ার জন্য এটি আরও ভাল পছন্দ।


আমি বিশ্বাস করি না যে আসল প্রশ্নটি বলেছিল যে java.util.Randomবাস্তবায়ন SecureRandomঅভ্যন্তরীণভাবে ব্যবহৃত হয়েছিল , এটি বলেছিল যে তাদের কোডটিSecureRandom বীজ বপন করতে ব্যবহার করে Random। তবুও, আমি এখনও পর্যন্ত উভয় উত্তরের সাথে একমত; SecureRandomএকটি সুস্পষ্টভাবে নির্বিচার সমাধান সমাধান এড়ানোর জন্য এটি ব্যবহার করা ভাল ।
পালাপতিম

2

বর্তমানের রেফারেন্স বাস্তবায়ন java.util.Random.nextLong()পদ্ধতিটিতে দুটি কল করে next(int)যা বর্তমান বীজের 32 বিট সরাসরি প্রকাশ করে:

protected int next(int bits) {
    long nextseed;
    // calculate next seed: ...
    // and store it in the private "seed" field.
    return (int)(nextseed >>> (48 - bits));
}

public long nextLong() {
    // it's okay that the bottom word remains signed.
    return ((long)(next(32)) << 32) + next(32);
}

ফলাফলের উপরের 32 বিটটি nextLong()হ'ল বীজের বিট। যেহেতু বীজের প্রস্থটি 48 বিট (জাভাদোক বলে) তাই দ্বিতীয় 32 বিট উত্পাদিত বীজ নির্ধারণের জন্য অবশিষ্ট 16 বিট (যা কেবলমাত্র 65.536 চেষ্টা করে) ধরে পুনরাবৃত্তি করতে পারে।

একবার বীজ জানা হয়ে গেলে, নিম্নলিখিত সমস্ত টোকেনগুলি সহজেই গণনা করা যায়।

nextLong()সরাসরি আউটপুট ব্যবহার করে , আংশিকভাবে পিএনজির গোপনীয়তা এমন একটি ডিগ্রি যে পুরো গোপনীয়তাটি খুব অল্প পরিমাণে গতিতে গণনা করা যায়। বিপজ্জনক!

* যদি দ্বিতীয় 32 বিটটি নেতিবাচক হয় তবে কিছু প্রচেষ্টা প্রয়োজন তবে এটি খুঁজে বের করতে পারে।


সঠিক। Jazzy.id.au/default/2010/09/20/…কীভাবে java.util.random দ্রুত ক্র্যাক করবেন তা দেখুন !
gy ই

2

বীজ অর্থহীন। একটি ভাল এলোমেলো জেনারেটর নির্বাচিত প্রথম দিকের মধ্যে পৃথক হয়। প্রতিটি র্যান্ডম জেনারেটর একটি সংখ্যা থেকে শুরু হয় এবং একটি 'রিং'-এর মাধ্যমে পুনরাবৃত্তি করে। যার অর্থ, আপনি পুরানো অভ্যন্তরীণ মান সহ এক নম্বর থেকে অন্যটিতে এসেছেন। তবে কিছুক্ষণ পরে আপনি আবার শুরুতে পৌঁছান এবং আবার শুরু করুন। সুতরাং আপনি চক্র চালান। (একটি এলোমেলো জেনারেটরের কাছ থেকে ফেরতের মান অভ্যন্তরীণ মান নয়)

আপনি যদি কোনও রিং তৈরির জন্য একটি প্রধান সংখ্যা ব্যবহার করেন তবে সমস্ত সম্ভাব্য সংখ্যার মধ্য দিয়ে একটি পূর্ণ চক্র সম্পন্ন করার আগে, সেই রিংয়ের সমস্ত নম্বর বেছে নেওয়া হবে। আপনি যদি অ মৌলিক সংখ্যা নেন তবে সমস্ত সংখ্যা চয়ন করা হয় না এবং আপনি আরও ছোট চক্র পান।

আপনার প্রথম অ্যালিমেন্টে ফিরে আসার আগে উচ্চ প্রাথমিক সংখ্যাগুলির অর্থ দীর্ঘতর চক্র। সুতরাং, সুরক্ষিত এলোমেলো জেনারেটরের আরও দীর্ঘ চক্র রয়েছে, আবার শুরুতে পৌঁছানোর আগে, কেন এটি নিরাপদ। আপনি সংক্ষিপ্ততর চক্রের মতো সহজ সংখ্যাটি উত্পন্ন করতে পারবেন না।

অন্য শব্দের সাথে: আপনাকে সমস্ত প্রতিস্থাপন করতে হবে।


0

আমি খুব বেসিক শব্দগুলি ব্যবহার করার চেষ্টা করব যাতে আপনি সহজেই এলোমেলো এবং সুরক্ষিত র্যান্ডম এবং সিকিওরর্যান্ডম ক্লাসের গুরুত্বের মধ্যে পার্থক্য বুঝতে পারবেন।

কখনও ভাবছেন কীভাবে ওটিপি (ওয়ান টাইম পাসওয়ার্ড) উত্পন্ন হয়? একটি ওটিপি জেনারেট করার জন্য আমরাও র্যান্ডম এবং সিকিউরর্যান্ডম ক্লাস ব্যবহার করি। এখন আপনার ওটিপিটিকে শক্তিশালী করার জন্য, সিকিউরআরডম আরও ভাল কারণ এটি বর্তমানে মেশিন দ্বারা প্রায় অসম্ভব যে ওটিপিটি ক্র্যাক করতে 2 ^ 128 চেষ্টা করে দেখেছিল তবে যদি র্যান্ডম ক্লাস ব্যবহার করা হয় তবে আপনার ওটিপি এমন কাউকে ক্র্যাক করতে পারে যে এটি আপনার ডেটা ক্ষতি করতে পারে কারণ এটি নিয়েছিল ক্র্যাক করার জন্য মাত্র 2 ^ 48 চেষ্টা করুন।

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