OWASP বিভাগ: MASVS-CRYPTO: ক্রিপ্টোগ্রাফি
এক নজরে
ডেটার গোপনীয়তা ও ইন্টিগ্রিটি সুরক্ষিত রাখতে ক্রিপ্টোগ্রাফির ব্যাপক ব্যবহার সত্ত্বেও, ডেভেলপাররা অসাবধানতাবশত দুর্বল বা পুরনো ক্রিপ্টোগ্রাফিক অ্যালগরিদম প্রয়োগ করলে উল্লেখযোগ্য ঝুঁকি তৈরি হয়। এই অ্যালগরিদমের অন্তর্নিহিত দুর্বলতার কারণে এই সমস্যা হয়, যা প্রয়োজনীয় কম্পিউটেশনাল ক্ষমতা বা জ্ঞানসম্পন্ন ক্ষতিকর ব্যক্তিরা কাজে লাগাতে পারে। এই ধরনের শোষণের পরিণাম গুরুতর হতে পারে, যার ফলে সম্ভাব্য অননুমোদিত অ্যাক্সেস, ডেটার নিরাপত্তা লঙ্ঘন এবং সংবেদনশীল তথ্যের ম্যানিপুলেশন হতে পারে।
প্রভাব
সংবেদনশীল ডেটা প্রকাশ, পরিবর্তন বা জাল করা হতে পারে। ক্রিপ্টোগ্রাফিক অ্যালগরিদম কাজ না করলে বা ঝুঁকিপূর্ণ হলে, তা থেকে দুর্বলতা তৈরি হতে পারে এবং সংবেদনশীল তথ্য ডিক্রিপ্ট, ডেটা টেম্পার বা বৈধ এন্টিটির ছদ্মবেশ ধারণ করার জন্য অপব্যবহার করা হতে পারে। এই ধরনের দুর্বলতার সুযোগ নেওয়ার ফলে ডেটার নিরাপত্তা লঙ্ঘন, আর্থিক ক্ষতি, সুনাম নষ্ট হওয়া এবং ব্যবহারকারীর বিশ্বাস হারানোর মতো ঘটনা ঘটতে পারে।
ঝুঁকি: দুর্বল বা ভাঙা ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন
দুর্বল বা ভাঙা ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন (যেমন MD5 বা SHA1) ব্যবহার করলে
ডেটার নিরাপত্তা ও ইন্টিগ্রিটির ক্ষেত্রে উল্লেখযোগ্য ঝুঁকি তৈরি হয়। হ্যাশ ফাংশন
ইনপুট ডেটার অনন্য, নির্দিষ্ট দৈর্ঘ্যের ফিঙ্গারপ্রিন্ট (হ্যাশ) তৈরি করার জন্য ডিজাইন করা হয়েছে,
যা ডেটা ইন্টিগ্রিটি যাচাইকরণ, পাসওয়ার্ড স্টোরেজ এবং ডিজিটাল স্বাক্ষর সহ বিভিন্ন উদ্দেশ্যে
ব্যবহার করা হয়। তবে, দুর্বল বা আপোস করা হ্যাশ ফাংশন ব্যবহার করা হলে, বেশ কিছু দুর্বলতা দেখা দিতে পারে:
- কলিশন অ্যাটাক: দুর্বল হ্যাশ ফাংশন কলিশন অ্যাটাকের ক্ষেত্রে সংবেদনশীল হয়, যেখানে আক্রমণকারী দুটি আলাদা ইনপুট খুঁজে পায় যা একই হ্যাশ ভ্যালু তৈরি করে। এর ফলে তারা বৈধ ডেটার পরিবর্তে ক্ষতিকর ডেটা ব্যবহার করতে পারে এবং তা শনাক্ত করা যায় না, যার ফলে ডেটা ইন্টিগ্রিটি বিঘ্নিত হয়।
- ডেটার নিরাপত্তা লঙ্ঘন: পাসওয়ার্ড দুর্বল অ্যালগরিদমের মাধ্যমে হ্যাশ করা হলে, সিস্টেমের নিরাপত্তা লঙ্ঘন করে ব্যবহারকারীর ক্রেডেনশিয়াল প্রকাশ করে দেওয়া হতে পারে। অ্যাটাকাররা তখন পাসওয়ার্ড ক্র্যাক করার জন্য রেনবো টেবল বা অন্যান্য টেকনিক ব্যবহার করতে পারে, যার ফলে অ্যাকাউন্টে অননুমোদিত অ্যাক্সেস পেয়ে যায়।
- ডিজিটাল স্বাক্ষরের অস্বীকৃতি: ডিজিটাল স্বাক্ষরে ব্যবহৃত দুর্বল হ্যাশ ফাংশন জাল স্বাক্ষর তৈরি করতে কাজে লাগানো যেতে পারে, যার ফলে ডকুমেন্ট বা মেসেজের সত্যতা এবং ইন্টিগ্রিটি নির্ধারণ করা কঠিন হয়ে পড়ে।
মিটিগেশন
এইসব ঝুঁকি কমাতে, SHA-2 বা SHA-3-এর মতো শক্তিশালী, ভালভাবে যাচাই করা ক্রিপ্টোগ্রাফিক
হ্যাশ ফাংশন ব্যবহার করা এবং
নতুন দুর্বলতা খুঁজে পাওয়ার সাথে সাথে সেগুলি আপডেট করা অত্যন্ত গুরুত্বপূর্ণ। এছাড়াও,
পাসওয়ার্ড সল্টিং এবং bcrypt বা
Argon2-এর মতো পাসওয়ার্ড-নির্দিষ্ট হ্যাশিং অ্যালগরিদম ব্যবহার করার মতো নিরাপত্তা সংক্রান্ত পদ্ধতি গ্রহণ করলে, ডেটা সুরক্ষা আরও উন্নত করা যেতে পারে।
ঝুঁকি: দুর্বল বা ভাঙা ক্রিপ্টোগ্রাফিক এনক্রিপশন ফাংশন
দুর্বল বা ভাঙা ক্রিপ্টোগ্রাফিক এনক্রিপশন ফাংশন (যেমন DES বা
RC4) ব্যবহার করলে সংবেদনশীল ডেটার গোপনীয়তা গুরুতর ঝুঁকির মুখে পড়ে। এনক্রিপশন
তথ্যকে অপাঠ্য ফরম্যাটে পরিবর্তন করে সুরক্ষিত রাখার জন্য ডিজাইন করা হয়েছে,
কিন্তু এনক্রিপশন অ্যালগরিদমে ত্রুটি থাকলে, এই সুরক্ষা বাইপাস করা যেতে পারে:
- ডেটার নিরাপত্তা লঙ্ঘন: দুর্বল এনক্রিপশন অ্যালগরিদম ব্রুট-ফোর্স অ্যাটাক, নোন-প্লেনটেক্সট অ্যাটাক ও ক্রিপ্টঅ্যানালিসিস টেকনিক সহ বিভিন্ন ধরনের অ্যাটাকের শিকার হতে পারে। এই ধরনের অ্যাটাক সফল হলে, এনক্রিপ্ট করা ডেটা প্রকাশ হয়ে যেতে পারে, যার ফলে ব্যক্তিগত বিবরণ, ফাইন্যান্সিয়াল রেকর্ড বা গোপনীয় ব্যবসায়িক ডেটার মতো সংবেদনশীল তথ্যে অননুমোদিত অ্যাক্সেস পাওয়া যেতে পারে।
- ডেটা ম্যানিপুলেশন ও টেম্পারিং: আক্রমণকারী ডেটা সম্পূর্ণভাবে ডিক্রিপ্ট করতে না পারলেও, এনক্রিপশন অ্যালগরিদম দুর্বল হলে, তারা শনাক্তকরণ ছাড়াই এটি ম্যানিপুলেট করতে সক্ষম হতে পারে। এর ফলে ডেটা অননুমোদিতভাবে পরিবর্তন করা হতে পারে, যার ফলে সম্ভাব্য জালিয়াতি, মিথ্যা বর্ণনা বা অন্যান্য ক্ষতিকর অ্যাক্টিভিটি হতে পারে।
মিটিগেশন
এনক্রিপশন ফাংশনে শক্তিশালী ক্রিপ্টোগ্রাফিক অ্যালগরিদম ব্যবহার করুন
এইসব ঝুঁকি কমাতে, শক্তিশালী, ভালভাবে যাচাই করা ক্রিপ্টোগ্রাফিক অ্যালগরিদম ব্যবহার করা এবং 'কী' ম্যানেজমেন্ট ও এনক্রিপশন প্রয়োগের জন্য পেশাদার পদ্ধতি অনুসরণ করা অত্যন্ত গুরুত্বপূর্ণ। নিয়মিত এনক্রিপশন অ্যালগরিদম আপডেট করা এবং নতুন নতুন বিপদের ব্যাপারে আপ-টু-ডেট থাকা ডেটার নিরাপত্তা বজায় রাখার জন্য অত্যন্ত গুরুত্বপূর্ণ।
ব্যবহার করার জন্য কিছু সাজেস্ট করা ডিফল্ট অ্যালগরিদম:
- সিমেট্রিক এনক্রিপশন:
GCMমোড সহAES-128/AES-256Chacha20
- অ্যাসিমেট্রিক এনক্রিপশন:
OAEPপ্যাডিং সহRSA-2048/RSA-4096
সাধারণ ত্রুটি কমাতে ক্রিপ্টোগ্রাফি লাইব্রেরি থেকে নিরাপদ প্রিমিটিভ ব্যবহার করুন
উপযুক্ত এনক্রিপশন অ্যালগরিদম বেছে নেওয়া গুরুত্বপূর্ণ হলেও, নিরাপত্তার দুর্বলতা
সত্যিই কমাতে, এমন ক্রিপ্টোগ্রাফি লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন যা
স্ট্রিমলাইন করা API অফার করে এবং ডিফল্ট কনফিগারেশন সুরক্ষিত করার উপর জোর দেয়। এই
পদ্ধতিটি শুধুমাত্র আপনার অ্যাপ্লিকেশনের নিরাপত্তাকে শক্তিশালী করে না, বরং
কোডিং ত্রুটির মাধ্যমে দুর্বলতা প্রবর্তনের সম্ভাবনাকে উল্লেখযোগ্যভাবে
কমিয়ে দেয়। যেমন, Tink দুটি আলাদা বিকল্প অফার করে এনক্রিপশন সংক্রান্ত পছন্দকে সহজ করে তোলে: AEAD এবং Hybrid এনক্রিপশন, যা ডেভেলপারদের জন্য নিরাপত্তা সংক্রান্ত সিদ্ধান্ত নেওয়া সহজ করে তোলে।
ঝুঁকি: দুর্বল বা ভাঙা ক্রিপ্টোগ্রাফিক সিগনেচার ফাংশন
দুর্বল বা ভাঙা ক্রিপ্টোগ্রাফিক সিগনেচার ফাংশন (যেমন
RSA-PKCS#1 v1.5, বা দুর্বল হ্যাশ ফাংশনের উপর ভিত্তি করে তৈরি করা)
ব্যবহার করলে ডেটা এবং যোগাযোগের অখণ্ডতার ক্ষেত্রে গুরুতর ঝুঁকি তৈরি হয়। ডিজিটাল
স্বাক্ষর যাচাইকরণ, নন-রিপুডিয়েশন ও ডেটা
ইন্টিগ্রিটি প্রদান করার জন্য ডিজাইন করা হয়েছে, যা নিশ্চিত করে যে কোনও মেসেজ বা ডকুমেন্ট নির্দিষ্ট প্রেরকের কাছ থেকে এসেছে
এবং এতে কোনও কারচুপি করা হয়নি। তবে, অন্তর্নিহিত সিগনেচার অ্যালগরিদমে
ত্রুটি থাকলে, এই নিশ্চয়তা বিঘ্নিত হতে পারে:
- জাল স্বাক্ষর: দুর্বল স্বাক্ষর অ্যালগরিদম আক্রমণের জন্য ঝুঁকিপূর্ণ হতে পারে যা ক্ষতিকর ব্যক্তিদের জাল স্বাক্ষর তৈরি করার অনুমতি দেয়। এর অর্থ হল, তারা শনাক্ত না হয়েই বৈধ এন্টিটির ছদ্মবেশ ধারণ করতে, জাল ডকুমেন্ট তৈরি করতে বা মেসেজ টেম্পার করতে পারবে।
- স্বাক্ষর অস্বীকার করা: কোনও স্বাক্ষর অ্যালগরিদম ভেঙে গেলে, একজন স্বাক্ষরকারী মিথ্যা দাবি করতে পারেন যে তিনি কোনও ডকুমেন্টে স্বাক্ষর করেননি, যা অস্বীকার না করার নীতিকে দুর্বল করে এবং আইনি ও লজিস্টিক চ্যালেঞ্জ তৈরি করে।
- ডেটা ম্যানিপুলেশন ও টেম্পারিং: ডেটার ইন্টিগ্রিটি সুরক্ষিত করার জন্য যেসব ক্ষেত্রে স্বাক্ষর ব্যবহার করা হয়, সেখানে দুর্বল অ্যালগরিদম থাকলে, আক্রমণকারীরা স্বাক্ষর বাতিল না করেই ডেটা পরিবর্তন করতে পারে। এর ফলে, টেম্পারিং শনাক্ত করা যায় না এবং গুরুত্বপূর্ণ তথ্য ফাঁস হওয়ার সম্ভাবনা থাকে।
মিটিগেশন
শক্তিশালী ক্রিপ্টোগ্রাফিক সিগনেচার অ্যালগরিদম ব্যবহার করুন
এইসব ঝুঁকি কমাতে, শক্তিশালী, ভালভাবে যাচাই করা ক্রিপ্টোগ্রাফিক স্বাক্ষর অ্যালগরিদম ব্যবহার করা অত্যন্ত গুরুত্বপূর্ণ:
সাধারণ ত্রুটি কমাতে ক্রিপ্টোগ্রাফি লাইব্রেরি থেকে নিরাপদ প্রিমিটিভ ব্যবহার করুন
সঠিক সিগনেচার অ্যালগরিদম বেছে নেওয়া অত্যন্ত গুরুত্বপূর্ণ, তবে নিরাপত্তার দুর্বলতা
সত্যিই কমাতে, এমন একটি ক্রিপ্টোগ্রাফি লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন যা ডিফল্টভাবে
দৃঢ় নিরাপত্তা নিশ্চিত করে। উদাহরণস্বরূপ, Tink, একটি সহজ এবং ব্যাপক API-এর মধ্যে, ডিফল্ট বিকল্প হিসাবে নিরাপদ কার্ভ সহ ECDSA অফার করে স্বাক্ষর পছন্দগুলিকে সহজ করে তোলে। এই পদ্ধতি শুধু নিরাপত্তা উন্নত করে না,
জটিল কনফিগারেশন বা সিদ্ধান্ত নেওয়ার প্রয়োজনীয়তা দূর করে ডেভেলপমেন্টের কাজও
সহজ করে তোলে।
রিসোর্স
- Tink ক্রিপটোগ্রাফি লাইব্রেরি
- Android অ্যাপ কোয়ালিটি: ক্রিপটোগ্রাফি
- Tink-এর মাধ্যমে ডিজিটাল স্বাক্ষর
- Tink-এর সাথে হাইব্রিড এনক্রিপশন
- Tink-এর মাধ্যমে যাচাইকৃত এনক্রিপশন
- দুর্বল বা ভাঙা ক্রিপ্টোগ্রাফিক হ্যাশ এবং এনক্রিপশন ফাংশন Android নিরাপত্তা লিন্ট
- CWE-327: ভাঙা বা ঝুঁকিপূর্ণ ক্রিপ্টোগ্রাফিক অ্যালগরিদমের ব্যবহার
- CWE-328: দুর্বল হ্যাশের ব্যবহার
- CWE-780: OAEP ছাড়া RSA অ্যালগরিদমের ব্যবহার
- অনুমোদিত হ্যাশ ফাংশন সম্পর্কে NIST পৃষ্ঠা
- অ্যাডভান্সড এনক্রিপশন স্ট্যান্ডার্ড (Wikipedia)
- সিকিওর হ্যাশ অ্যালগরিদম ২ (Wikipedia)
- সিকিওর হ্যাশ অ্যালগরিদম ৩ (Wikipedia)
- RSA ক্রিপ্টোসিস্টেম (Wikipedia)
- ইলিপটিক কার্ভ ডিজিটাল সিগনেচার অ্যালগরিদম (Wikipedia)
- স্ট্রিম সাইফার ChaCha (Wikipedia)
- সল্টিং পাসওয়ার্ড (Wikipedia)
- হাইব্রিড ক্রিপ্টোসিস্টেম (Wikipedia)
- যাচাই করা এনক্রিপশন