OWASP कैटगरी: MASVS-CRYPTO: क्रिप्टोग्राफ़ी
खास जानकारी
डेटा की गोपनीयता और अखंडता को सुरक्षित रखने के लिए, क्रिप्टोग्राफ़ी का इस्तेमाल बड़े पैमाने पर किया जाता है. हालांकि, जब डेवलपर अनजाने में कमज़ोर या पुराने क्रिप्टोग्राफ़िक एल्गोरिदम लागू करते हैं, तो एक बड़ा जोखिम पैदा होता है. इस जोखिम की वजह, इन एल्गोरिदम में मौजूद कमज़ोरियां हैं. इनका फ़ायदा, नुकसान पहुंचाने वाले ऐसे लोग या इकाइयां उठा सकती हैं जिनके पास ज़रूरी कंप्यूटेशनल पावर या जानकारी है. इस तरह के गलत इस्तेमाल के गंभीर नतीजे हो सकते हैं. इससे किसी व्यक्ति को बिना अनुमति के ऐक्सेस मिल सकता है, डेटा का उल्लंघन हो सकता है, और संवेदनशील जानकारी में छेड़छाड़ हो सकती है.
असर
संवेदनशील डेटा को सार्वजनिक किया जा सकता है, उसमें बदलाव किया जा सकता है या उसे गलत तरीके से पेश किया जा सकता है. क्रिप्टोग्राफ़िक एल्गोरिदम के काम न करने या जोखिम भरे होने की वजह से, कमज़ोरियां पैदा हो सकती हैं. इनका गलत इस्तेमाल करके, संवेदनशील जानकारी को डिक्रिप्ट किया जा सकता है, डेटा में छेड़छाड़ की जा सकती है या किसी भरोसेमंद इकाई के नाम पर धोखाधड़ी की जा सकती है. इस तरह की कमज़ोरियों का फ़ायदा उठाने से, डेटा चोरी हो सकता है, वित्तीय नुकसान हो सकता है, और कंपनी की प्रतिष्ठा को नुकसान पहुंच सकता है. साथ ही, लोगों का भरोसा भी कम हो सकता है.
जोखिम: कमज़ोर या काम न करने वाले क्रिप्टोग्राफ़िक हैश फ़ंक्शन
कमज़ोर या खराब क्रिप्टोग्राफ़िक हैश फ़ंक्शन (जैसे कि MD5
या SHA1
) का इस्तेमाल करने से, डेटा की सुरक्षा और अखंडता को गंभीर खतरा होता है. हैश फ़ंक्शन को इनपुट डेटा के यूनीक और तय लंबाई वाले फ़िंगरप्रिंट (हैश) बनाने के लिए डिज़ाइन किया गया है. इसलिए, ये कई कामों के लिए फ़ायदेमंद होते हैं. जैसे, डेटा की पुष्टि करना, पासवर्ड सेव करना, और डिजिटल हस्ताक्षर. हालांकि, कमज़ोर या हैक किए गए हैश फ़ंक्शन का इस्तेमाल करने पर, कई तरह की समस्याएं हो सकती हैं:
- कॉलिज़न अटैक: कमज़ोर हैश फ़ंक्शन, कॉलिज़न अटैक के लिए संवेदनशील होते हैं. इसमें हमलावर, दो ऐसे अलग-अलग इनपुट ढूंढता है जिनसे एक ही हैश वैल्यू मिलती है. इससे वे बिना किसी की जानकारी के, भरोसेमंद डेटा की जगह नुकसान पहुंचाने वाला डेटा डाल सकते हैं. इससे डेटा की सुरक्षा को खतरा हो सकता है.
- डेटा के गलत इस्तेमाल के मामले: अगर पासवर्ड को कमज़ोर एल्गोरिदम के साथ हैश किया जाता है, तो सिस्टम के डेटा का गलत इस्तेमाल होने पर, उपयोगकर्ता के क्रेडेंशियल सार्वजनिक हो सकते हैं. इसके बाद, हमलावर रेनबो टेबल या अन्य तकनीकों का इस्तेमाल करके पासवर्ड का पता लगा सकते हैं. इससे उन्हें खातों का अनधिकृत ऐक्सेस मिल जाता है.
- डिजिटल हस्ताक्षर की पुष्टि न करना: डिजिटल हस्ताक्षर में इस्तेमाल किए गए कमज़ोर हैश फ़ंक्शन का गलत इस्तेमाल करके, नकली हस्ताक्षर बनाए जा सकते हैं. इससे दस्तावेज़ों या मैसेज की विश्वसनीयता और प्रमाणिकता का पता लगाना मुश्किल हो जाता है.
जोखिम कम करने के तरीके
इन जोखिमों को कम करने के लिए, क्रिप्टोग्राफ़िक हैश फ़ंक्शन का इस्तेमाल करना ज़रूरी है. जैसे, SHA-2
या SHA-3
. साथ ही, इन फ़ंक्शन को अपडेट रखना भी ज़रूरी है, ताकि नई कमज़ोरियों का पता लगाया जा सके. इसके अलावा, सुरक्षा से जुड़े तरीकों को अपनाकर डेटा को और सुरक्षित किया जा सकता है. जैसे, पासवर्ड को साल्ट करना और पासवर्ड के लिए खास हैशिंग एल्गोरिदम का इस्तेमाल करना. जैसे, bcrypt
या Argon2
.
जोखिम: क्रिप्टोग्राफ़िक एन्क्रिप्शन के फ़ंक्शन कमज़ोर हैं या काम नहीं कर रहे हैं
कमज़ोर या खराब क्रिप्टोग्राफ़िक एन्क्रिप्शन फ़ंक्शन (जैसे कि DES
या
RC4
) का इस्तेमाल करने से, संवेदनशील डेटा की निजता को गंभीर खतरा होता है. एन्क्रिप्शन को जानकारी को सुरक्षित रखने के लिए डिज़ाइन किया गया है. इसके तहत, जानकारी को ऐसे फ़ॉर्मैट में बदल दिया जाता है जिसे पढ़ा नहीं जा सकता. हालांकि, अगर एन्क्रिप्शन एल्गोरिदम में कोई गड़बड़ी है, तो इन सुरक्षा सुविधाओं को बायपास किया जा सकता है:
- डेटा का गलत इस्तेमाल: कमज़ोर एन्क्रिप्शन एल्गोरिदम, कई तरह के हमलों के लिए संवेदनशील होते हैं. इनमें ब्रूट-फ़ोर्स अटैक, नो-प्लेनटेक्स्ट अटैक, और क्रिप्ट विश्लेषण की तकनीकें शामिल हैं. अगर ये हमले सफल होते हैं, तो एन्क्रिप्ट (सुरक्षित) किया गया डेटा सार्वजनिक हो सकता है. इससे संवेदनशील जानकारी को बिना अनुमति के ऐक्सेस किया जा सकता है. जैसे, निजी जानकारी, वित्तीय रिकॉर्ड या कारोबार का गोपनीय डेटा.
- डेटा में छेड़छाड़ और बदलाव: अगर हमलावर डेटा को पूरी तरह से डिक्रिप्ट नहीं कर पाता है, तो भी वह डेटा में छेड़छाड़ कर सकता है. ऐसा तब होता है, जब एन्क्रिप्शन एल्गोरिदम कमज़ोर होता है. इससे डेटा में बिना अनुमति के बदलाव किए जा सकते हैं. इससे धोखाधड़ी, गलत जानकारी देने या अन्य नुकसान पहुंचाने वाली गतिविधियां हो सकती हैं.
जोखिम कम करने के तरीके
एन्क्रिप्शन फ़ंक्शन में, मज़बूत क्रिप्टोग्राफ़िक एल्गोरिदम का इस्तेमाल करना
इन जोखिमों को कम करने के लिए, क्रिप्टोग्राफ़िक तरीके से सुरक्षित किए गए मज़बूत एल्गोरिदम का इस्तेमाल करना ज़रूरी है. साथ ही, कुंजी को मैनेज करने और एन्क्रिप्शन लागू करने के सबसे सही तरीकों का पालन करना भी ज़रूरी है. डेटा को सुरक्षित रखने के लिए, एन्क्रिप्शन एल्गोरिदम को नियमित तौर पर अपडेट करना और नए खतरों के बारे में जानकारी रखना भी ज़रूरी है.
इस्तेमाल करने के लिए, सुझाए गए कुछ डिफ़ॉल्ट एल्गोरिदम:
- सिमेट्रिक एन्क्रिप्शन:
AES-128
/AES-256
,GCM
मोड के साथChacha20
- एसिमेट्रिक एन्क्रिप्शन:
OAEP
पैडिंग के साथRSA-2048
/RSA-4096
क्रिप्टोग्राफ़ी लाइब्रेरी से सुरक्षित प्रिमिटिव का इस्तेमाल करके, सामान्य गड़बड़ियों को कम करें
सही एन्क्रिप्शन एल्गोरिदम चुनना ज़रूरी है. हालांकि, सुरक्षा से जुड़ी कमियों को कम करने के लिए, क्रिप्टोग्राफ़ी लाइब्रेरी का इस्तेमाल करें. यह लाइब्रेरी, स्ट्रीमलाइन किया गया एपीआई उपलब्ध कराती है और सुरक्षित डिफ़ॉल्ट कॉन्फ़िगरेशन पर ज़ोर देती है. इस तरीके से, आपके ऐप्लिकेशन की सुरक्षा को बेहतर बनाया जा सकता है. साथ ही, कोडिंग की गड़बड़ियों की वजह से सुरक्षा से जुड़े जोखिमों के होने की संभावना को भी काफ़ी हद तक कम किया जा सकता है. उदाहरण के लिए, Tink एन्क्रिप्शन के विकल्पों को आसान बनाता है. इसके लिए, यह दो अलग-अलग विकल्प उपलब्ध कराता है: AEAD
और Hybrid
एन्क्रिप्शन. इससे डेवलपर को सुरक्षा से जुड़े फ़ैसले लेने में आसानी होती है.
जोखिम: कमज़ोर या काम न करने वाले क्रिप्टोग्राफ़िक सिग्नेचर फ़ंक्शन
कमज़ोर या खराब क्रिप्टोग्राफ़िक सिग्नेचर फ़ंक्शन (जैसे कि
RSA-PKCS#1 v1.5
या कमज़ोर हैश फ़ंक्शन पर आधारित फ़ंक्शन) का इस्तेमाल करने से, डेटा और कम्यूनिकेशन की सुरक्षा को गंभीर खतरा होता है. डिजिटल सिग्नेचर को पुष्टि करने, इनकार न करने, और डेटा की अखंडता बनाए रखने के लिए डिज़ाइन किया गया है. इससे यह पक्का किया जाता है कि कोई मैसेज या दस्तावेज़ किसी खास व्यक्ति ने भेजा है और उसके साथ छेड़छाड़ नहीं की गई है. हालांकि, अगर सिग्नेचर एल्गोरिदम में कोई गड़बड़ी है, तो इन बातों की गारंटी नहीं दी जा सकती:
- फ़र्ज़ी हस्ताक्षर करना: कमज़ोर हस्ताक्षर एल्गोरिद्म, ऐसे हमलों के लिए संवेदनशील हो सकते हैं जिनसे नुकसान पहुंचाने वाले लोग या ग्रुप, फ़र्ज़ी हस्ताक्षर बना सकते हैं. इसका मतलब है कि वे बिना किसी डर के, भरोसेमंद इकाइयों के नाम पर फ़र्ज़ी ईमेल भेज सकते हैं, फ़र्ज़ी दस्तावेज़ बना सकते हैं या ईमेल में छेड़छाड़ कर सकते हैं.
- हस्ताक्षर की पुष्टि न कर पाना: अगर हस्ताक्षर करने वाले एल्गोरिदम में कोई गड़बड़ी होती है, तो हस्ताक्षर करने वाला व्यक्ति यह झूठा दावा कर सकता है कि उसने किसी दस्तावेज़ पर हस्ताक्षर नहीं किए हैं. इससे हस्ताक्षर की पुष्टि न कर पाने के सिद्धांत का उल्लंघन होता है. साथ ही, कानूनी और लॉजिस्टिकल समस्याएं पैदा होती हैं.
- डेटा में बदलाव करना और छेड़छाड़ करना: ऐसे मामलों में जहां डेटा की सुरक्षा के लिए सिग्नेचर का इस्तेमाल किया जाता है, कमज़ोर एल्गोरिदम की वजह से हमलावर, सिग्नेचर को अमान्य किए बिना डेटा में बदलाव कर सकते हैं. इससे छेड़छाड़ का पता नहीं चल पाता और अहम जानकारी के साथ समझौता हो सकता है.
जोखिम कम करने के तरीके
क्रिप्टोग्राफ़िक सिग्नेचर के लिए मज़बूत एल्गोरिदम का इस्तेमाल करना
इन जोखिमों को कम करने के लिए, क्रिप्टोग्राफ़िक सिग्नेचर के मज़बूत और अच्छी तरह से जांचे गए एल्गोरिदम का इस्तेमाल करना ज़रूरी है:
PSS
पैडिंग के साथRSA-2048
/RSA-4096
- सुरक्षित कर्व के साथ, Elliptic Curve Digital Signature Algorithm (
ECDSA
)
क्रिप्टोग्राफ़ी लाइब्रेरी से सुरक्षित प्रिमिटिव का इस्तेमाल करके, सामान्य गड़बड़ियों को कम करें
सही सिग्नेचर एल्गोरिदम चुनना ज़रूरी है. हालांकि, सुरक्षा से जुड़ी कमियों को कम करने के लिए, ऐसी क्रिप्टोग्राफ़ी लाइब्रेरी का इस्तेमाल करें जो डिफ़ॉल्ट रूप से सुरक्षा से जुड़ी मज़बूत गारंटी देती हो. उदाहरण के लिए, Tink, हस्ताक्षर के विकल्पों को आसान बनाता है. यह ECDSA
को सुरक्षित कर्व के साथ डिफ़ॉल्ट विकल्प के तौर पर उपलब्ध कराता है. यह सब एक आसान और पूरी जानकारी देने वाले एपीआई के ज़रिए होता है. इस तरीके से न सिर्फ़ सुरक्षा बढ़ती है, बल्कि डेवलपमेंट की प्रोसेस भी आसान हो जाती है. ऐसा इसलिए, क्योंकि इसमें जटिल कॉन्फ़िगरेशन या फ़ैसले लेने की ज़रूरत नहीं होती.
संसाधन
- Tink क्रिप्टोग्राफ़ी लाइब्रेरी
- Android ऐप्लिकेशन की क्वालिटी: क्रिप्टोग्राफ़ी
- Tink की मदद से डिजिटल हस्ताक्षर करना
- Tink की मदद से हाइब्रिड एन्क्रिप्शन
- Tink की मदद से पुष्टि किया गया एन्क्रिप्शन
- Android Security Lint में क्रिप्टोग्राफ़िक हैश और एन्क्रिप्शन फ़ंक्शन का कमज़ोर या खराब होना
- CWE-327: Use of a Broken or Risky Cryptographic Algorithm
- CWE-328: Use of Weak Hash
- CWE-780: Use of RSA Algorithm without OAEP
- मंज़ूरी वाले हैश फ़ंक्शन के बारे में NIST पेज
- ऐडवांस एन्क्रिप्शन स्टैंडर्ड (Wikipedia)
- Secure Hash Algorithm 2 (Wikipedia)
- Secure Hash Algorithm 3 (Wikipedia)
- आरएसए क्रिप्टोसिस्टम (विकिपीडिया)
- Elliptic Curve Digital Signature Algorithm (Wikipedia)
- स्ट्रीम सिफ़र ChaCha (Wikipedia)
- पासवर्ड में साल्ट जोड़ना (Wikipedia)
- हाइब्रिड क्रिप्टोसिस्टम (Wikipedia)
- पुष्टि किया गया एन्क्रिप्शन