কি একটি হ্যাশিং অ্যালগরিদম "সুরক্ষিত" করে তোলে?


19

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

তাহলে পার্থক্য কী? আউটপুটটি কি হ্যাশ জিনিসটি উপস্থাপন করে কেবল একটি এলোমেলো সংখ্যা নয়? কিছু হ্যাশিং অ্যালগরিদমকে সুরক্ষিত করে তোলে কী?


8
এই প্রশ্নটি আইটি সুরক্ষা এসই সাইটের জন্য আরও উপযুক্ত ।
বার্নার্ড 18

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

2
অনুরূপ একটি প্রশ্ন ইতিমধ্যে এটি সিকিউরিটি উপর বলা হয়েছে
ChrisF

উত্তর:


34

প্রতিটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন থেকে তিনটি বৈশিষ্ট্য রয়েছে যার মধ্যে একটি রয়েছে H:

  • প্রাক প্রতিরোধের : দেওয়া h, এটির xসাথে কোনও মান খুঁজে পাওয়া শক্ত হওয়া উচিত h = H(x)

  • দ্বিতীয় প্রিমেজ প্রতিরোধের : দেওয়া x1, এটির x2 != x1সাথে খুঁজে পাওয়া শক্ত হওয়া উচিত H(x1) = H(x2)

  • সংঘর্ষ প্রতিরোধ : এটির x1 != x2সাথে দুটি মান খুঁজে পাওয়া শক্ত হওয়া উচিত H(x1) = H(x2)

হ্যাশ টেবিলগুলির (স্ট্রিংগুলির) জন্য সাধারণ প্রোগ্রামিং ভাষাগুলিতে ব্যবহৃত হ্যাশ ফাংশন সহ, সাধারণত এগুলির কোনওটি দেওয়া হয় না, কেবলমাত্র তাদের জন্য সরবরাহ করে:

  • দুর্বল সংঘর্ষ প্রতিরোধ : ডোমেনের এলোমেলোভাবে (বা "সাধারণত") নির্বাচিত মানগুলির জন্য, সংঘর্ষের সম্ভাবনা কম। এটি কোনও আক্রমণকারী ইচ্ছাকৃতভাবে সংঘর্ষ তৈরি করার চেষ্টা করছে বা প্রিমিমেজগুলি অনুসন্ধান করার চেষ্টা করছে সে সম্পর্কে কিছুই বলে না।

উপরের তিনটি বৈশিষ্ট্য হ'ল প্রতিটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশনের জন্য নকশা লক্ষ্য। কিছু ফাংশনের জন্য (যেমন এমডি 4, এসএএএ-0, এমডি 5) জানা যায় যে এটি ব্যর্থ হয়েছে (অন্তত আংশিকভাবে)। বর্তমান প্রজন্ম (SHA-2) সুরক্ষিত বলে ধরে নেওয়া হয়েছে এবং পরবর্তী একটি ("সিকিউর হ্যাশ অ্যালগরিদম 3") বর্তমানে একটি প্রতিযোগিতার পরে মানক হওয়ার প্রক্রিয়াধীন রয়েছে

কিছু ব্যবহারের জন্য (যেমন পাসওয়ার্ড হ্যাশিং এবং পাসওয়ার্ড থেকে কী ডেরাইভেশন), প্রকৃত ব্যবহৃত মানগুলির ডোমেনটি xএত ছোট যে প্রাণবন্ত-জোর করা এই স্থানটি স্বাভাবিক (দ্রুত) সুরক্ষিত হ্যাশ ফাংশনগুলির দ্বারা সম্ভব হয়ে ওঠে এবং এটি যখন আমরা চাই:

  • ধীর সম্পাদন : প্রদত্ত x, মান গণনা করতে এটি কিছু ন্যূনতম (অগ্রাধিকারযুক্ত কনফিগারযোগ্য) পরিমাণ সংস্থান গ্রহণ করে H(x)

তবে অন্যান্য বেশিরভাগ ব্যবহারের জন্য, এটি চাওয়া হয় না, পরিবর্তে কেউ চায়:

  • দ্রুত সম্পাদন : প্রদত্ত x, এর মান গণনা H(x)করা যত দ্রুত সম্ভব (এখনও সুরক্ষিত)।

বেশিরভাগ পুনরাবৃত্তি করে দ্রুত থেকে ধীর হ্যাশ ফাংশন তৈরি করতে কিছু নির্মাণ (যেমন পিবিকেডিএফ 2 এবং স্ক্রিপ্ট) রয়েছে।

আরও কিছু তথ্যের জন্য, আমাদের বোন সাইট ক্রিপ্টোগ্রাফি স্ট্যাক এক্সচেঞ্জের হ্যাশ ট্যাগটি দেখুন ।


3

সুরক্ষিত অর্থ কোনও ব্যক্তি সংঘর্ষের মাধ্যমে আপনাকে ত্রুটিতে প্ররোচিত করতে চায় এমন ব্যক্তির অসুবিধা হবে (যেমন দুটি উত্স একই মানের হয়ে গেছে)।

কিছু বৈশিষ্ট্য:

  • হ্যাশটি জানা, সেই মানটির জন্য হ্যাশ করা একটি ফাইল তৈরি করা কঠিন (বৈকল্পিক, নতুন ফাইলের একটি অংশটি পছন্দসই হ্যাশ হিসাবে দেওয়া হয়েছে)

  • দুটি ভিন্ন ফাইল যা একই মান হ্যাশ করা কঠিন (ভেরিয়েন্ট, ফাইলগুলির একটি অংশ দেওয়া হয়েছে)


3

প্রাথমিক পার্থক্যটি বেশ সহজ: একটি সাধারণ হ্যাশ বোঝানো হয় দুর্ঘটনাক্রমে সংঘর্ষের সংখ্যা হ্রাস করা, যতটা না প্রক্রিয়াটিতে পুরো অংশটি ধীরে ধীরে চালিয়ে নেওয়া যায়।

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

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


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

আসলে, এখানে হ্যাশ ফাংশন রয়েছে যা সংঘর্ষকে সর্বাধিক করার জন্য ডিজাইন করা হয়েছে : সাউন্ডেক্স একটি উদাহরণ। স্পষ্টতই, এটি এটিকে একটি অত্যন্ত কৃপণ সুরক্ষিত হ্যাশ ফাংশন করে তোলে।
Jörg ডব্লু মিত্তাগ

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

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

3

এটি পড়ুন http://www.codinghorror.com/blog/2012/04/speed-hashing.html এটি আমি কখনই ব্যাখ্যা করতে পারি তার থেকে অনেক ভাল ব্যাখ্যা করবে। নিবন্ধের দুটি অত্যন্ত গুরুত্বপূর্ণ শিরোনাম এখানে যা আপনার প্রশ্নকে সরাসরি সম্বোধন করে:

  • সুরক্ষিত হ্যাশগুলি টেম্পার-প্রুফ হওয়ার জন্য তৈরি করা হয়েছে
    • ইনপুট ডেটাতে ক্ষুদ্র একক বিট পরিবর্তনের সাথে এর আউটপুট আমূল পরিবর্তন করে
  • সুরক্ষিত হ্যাশগুলি ধীর হওয়ার জন্য ডিজাইন করা হয়েছে

তার টিএল; শেষে ডিআর বিভাগ:

আপনি যদি একজন ব্যবহারকারী হন:

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

আপনি যদি বিকাশকারী হন:

আপনার সুরক্ষিত হতে হবে এমন যে কোনও কিছু হ্যাশ করার জন্য বিসিআরপিট বা পিবিকেডিএফ 2 ব্যবহার করুন। এই নতুন হ্যাশগুলি বিশেষত জিপিইউগুলিতে প্রয়োগ করা কঠিন হওয়ার জন্য ডিজাইন করা হয়েছিল। হ্যাশের অন্য কোনও রূপ ব্যবহার করবেন না। প্রায় প্রতিটি জনপ্রিয় হ্যাশিং স্কিম পণ্য জিপিইউগুলির অ্যারেগুলি দ্বারা জোরপূর্বক ঝুঁকির শিকার, যা প্রতি বছরের জন্য কেবলমাত্র দ্রুত এবং আরও সমান্তরাল এবং সহজতর প্রোগ্রাম পায়।


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

আপনি সঠিক পাওলো। হ্যাশের কার্যকারিতা হ্যাশের প্রয়োগের উপর নির্ভর করে। তবে ধীর হ্যাশগুলি দ্রুতগতির চেয়ে সর্বদা সুরক্ষিত থাকে। আপনি যদি পারফরম্যান্সের জন্য সুরক্ষা ত্যাগ করতে থাকেন তবে আপনি দ্রুত হ্যাশ ব্যবহার করার কারণ।
নাট

2
@Nate "আরো নিরাপদ" সবসময় দ্ব্যর্থক, কিন্তু এমনকি সবচেয়ে দাতব্য আবেদন অধীনে, "ধীর হ্যাশ সবসময় ফাস্ট বেশী নিরাপদ" স্পষ্টভাবে ভুল। প্রচুর অ্যাপ্লিকেশন রয়েছে যেখানে একটি হ্যাশের গতি অপ্রাসঙ্গিক।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

@ গিলস আপনি একটি উদাহরণ দিতে পারেন? এটি আসলে আমার কাছে সত্য বলে মনে হচ্ছে তবে আরও নির্দিষ্টকরণ সহায়ক হবে।
নাট

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

2

একটি "সুরক্ষিত" হ্যাশ এমন একটি হ্যাশ যা হ্যাশ তৈরির জন্য ব্যবহৃত বার্তাটির পূর্ব জ্ঞান ছাড়াই সূত্র, পুনরুত্পাদনযোগ্য উপায়ে "স্পুফ" করা কঠিন বলে বিশ্বাস করা হয়। যেহেতু তথ্যটি গোপনীয়, তাই একটি হ্যাশের প্রয়োজনীয়তা, এটি প্রমাণীকরণের জন্য ব্যবহার করার উদ্দেশ্যে হ্যাশিং ফাংশনটির একটি ভাল সম্পত্তি।

একটি হ্যাশকে সাধারণত "সুরক্ষিত" হিসাবে বিবেচনা করা হয়, যদি কোনও বার্তা দেওয়া হয় এম, একটি হ্যাশ ফাংশন হ্যাশ (), এবং একটি হ্যাশ মান এইচ দ্বারা উত্পাদিত বিট এল এর দৈর্ঘ্য, তার চেয়ে কম কিছু সম্পাদন করা যায় না (2 এল ) সময়:

  • হ্যাশ () এবং এইচ দেওয়া হয়েছে, উত্পাদন এম (প্রাক প্রতিরোধ)
  • হ্যাশ () এবং এম দেওয়া হয়েছে, আলাদা একটি এম 2 তৈরি করুন যা হ্যাশ (এম 2 ) == এইচ। (দুর্বল সংঘর্ষ প্রতিরোধের)
  • হ্যাশ () দেওয়া, যে কোনও এম 1 এবং এম 2 যেমন হ্যাশ (এম 1 ) == হ্যাশ (এম 2 ) উত্পাদন করুন। (শক্ত সংঘর্ষ প্রতিরোধের)

অতিরিক্তভাবে, একটি "সুরক্ষিত" হ্যাশটির অবশ্যই একটি হ্যাশ দৈর্ঘ্য এল থাকতে হবে যেমন 2 এলপ্রদত্ত বর্তমান হার্ডওয়্যারটি সম্পাদন করার জন্য কোনও কম্পিউটারের জন্য একটি সম্ভাব্য পদক্ষেপ নয়। একটি 32-বিট পূর্ণসংখ্যার হ্যাশটির কেবলমাত্র 2.1 বিলিয়ন মান থাকতে পারে; প্রিমেজ আক্রমণ (একটি নির্দিষ্ট হ্যাশ এইচ উত্পাদনকারী একটি বার্তা সন্ধান করতে) কিছুটা সময় নেওয়ার সময়, এটি অনেক কম্পিউটারের পক্ষে বিশেষত কোড-ব্রেকিংয়ের জন্য সরকারী সংস্থাগুলির হাতে থাকা সরকারী সংস্থাগুলির পক্ষে কার্যকর নয়। এছাড়াও, একটি অ্যালগরিদম যা এলোমেলো বার্তা তৈরি করে এবং তাদের হ্যাশগুলি তৈরি করে এবং সংরক্ষণ করে, সম্ভাবনা অনুসারে, কেবলমাত্র 77 77,০০০ বার্তাগুলির চেষ্টা করার পরে প্রতিটি নতুন বার্তার সাথে একটি নকল হ্যাশ খুঁজে পেতে একটি 50% গুলি করতে পারে এবং একটি হিট করার 75% সুযোগ থাকবে কেবল ১১০,০০০ এর পরে সদৃশ। এমনকি 5৪-বিট হ্যাশগুলিতে এখনও প্রায় ৫ বিলিয়ন মূল্যবোধের চেষ্টা করার পরে 50% সংঘর্ষের সুযোগ রয়েছে। ছোট হ্যাশগুলিতে জন্মদিনের আক্রমণটির শক্তি এটি। বিপরীতে,ডিলিয়ন সংখ্যা (1.5 * 10 34 )।

ক্রিপ্টোগ্রাফিক হ্যাশগুলিতে সর্বাধিক প্রদর্শিত আক্রমণগুলি সংঘর্ষের আক্রমণ হয়েছে এবং 2 এল এরও কম সময়ে সংঘর্ষের বার্তা উত্পন্ন করার দক্ষতা প্রদর্শন করেছে (বেশিরভাগটি এখনও ক্ষতিকারক সময় হয়েছে, তবে ঘনিষ্ঠটিকে অর্ধেক কমানো জটিলতার ক্ষেত্রে উল্লেখযোগ্য হ্রাস) একটি 256-বিট হ্যাশ যেমন 128-বিট হিসাবে সমাধান করা সহজ, একটি 128-বিট যেমন একটি 64-বিট হিসাবে সমাধান করা সহজ, ইত্যাদি)।

ছোট হ্যাশের আকার ছাড়াও, অন্যান্য কারণগুলি যা হ্যাশকে প্রদর্শিতভাবে নিরাপত্তাহীন করতে পারে তা হ'ল:

কম কাজ - একটি হ্যাশটেবল দ্বারা ব্যবহারের জন্য বা অন্যান্য "চেকসাম"-টাইপ উদ্দেশ্যে ব্যবহারের জন্য ডিজাইন করা একটি হ্যাশ সাধারণত কম্পিউটারের জন্য সস্তা হিসাবে ডিজাইন করা হয়। এটি একটি নিষ্ঠুর শক্তি আক্রমণ এত সহজ করে তোলে।

"স্টিকি স্টেট" - হ্যাশিং ফাংশনটি ইনপুটগুলির নিদর্শনগুলির প্রবণ যেখানে ইনপুটটির একটি বিশেষ অতিরিক্ত বাইট দেওয়া হলে এখন পর্যন্ত সমস্ত ইনপুটগুলির বর্তমান হ্যাশ মান পরিবর্তন হয় না। "স্টিকি স্টেট" থাকা সংঘর্ষগুলি সন্ধান করা সহজ করে তোলে, কারণ "স্টিকি স্টেট" হ্যাশ তৈরির বার্তাটি শনাক্ত করার পরে ইনপুট বাইট যুক্ত করে একই বার্তাগুলি উত্পন্ন করা ক্ষুদ্রতর হয় যা হ্যাশটিকে তার "আঠালো অবস্থায়" রাখে same "।

বিচ্ছিন্নকরণ - বার্তাটির প্রতিটি ইনপুট বাইট হ্যাশ মানটির বাইটগুলির মধ্যে সমান-জটিল পদ্ধতিতে বিতরণ করা উচিত। কিছু হ্যাশ ফাংশন হ্যাশের কিছু বিটগুলিতে অনুমানযোগ্য পরিবর্তন তৈরি করে। এটি আবার সংঘর্ষের সৃষ্টি তুচ্ছ করে তোলে; একটি বার্তা দেওয়া যা একটি হ্যাশ তৈরি করে, সংঘর্ষগুলি সহজেই বার্তায় নতুন মানগুলি প্রবর্তন করে তৈরি করা যায় যা কেবলমাত্র পূর্বাভাসে পরিবর্তিত বিটগুলিকে প্রভাবিত করে।


0

হাতের কাজটির জন্য ডান অ্যালগরিদম ব্যবহার করুন।

সিআরসিগুলি ত্রুটি সনাক্তকরণ / সংশোধনের জন্য ব্যবহৃত হয়।

ক্রিপ্টোগ্রাফিক বার্তা হজম যেমন SHA2 ক্রিপ্টোগ্রাফিক কনস্ট্রাক্টস (ডিজিটাল স্বাক্ষর, ম্যাকস, কী ডেরাইভেশন / পাসওয়ার্ড হ্যাশিং ফাংশন) এবং সুরক্ষা প্রোটোকলগুলির জন্য বিল্ডিং ব্লক হিসাবে ব্যবহৃত হয়।

হ্যাশ টেবিল / অভিধান / মানচিত্রে সিপহ্যাশ ব্যবহার করুন

আপনি যেটিকে অনিরাপদ হ্যাশিং অ্যালগরিদম বলছেন তা হ্যাশ টেবিলগুলিতে ব্যবহার করা উচিত নয় , নিম্নলিখিত সিভিই এন্ট্রি দ্বারা প্রমাণিত: সিভিই-2003-0364, সিভিই -2011-4461, সিভিই -2011-4838, সিভিই -2011-4885, সিভিই -১১- 4462, CVE-2011-4815, CVE-2012-0840, CVE-2012-5371 , CVE-2012-5374, CVE-2012-5375

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