
Paranoid की लाइब्रेरी में क्रिप्टोग्राफिक आर्टिफैक्ट्स पर ज्ञात कमजोरियों की जाँच के कार्यान्वयन शामिल हैं।
पैरानॉयड परियोजना क्रिप्टोग्राफिक कलाकृतियों जैसे सार्वजनिक कुंजी, डिजिटल हस्ताक्षर और सामान्य छद्म-यादृच्छिक संख्याओं पर ज्ञात कमजोरियों की जाँच करती है। यह लाइब्रेरी साहित्य में पाए गए मौजूदा कार्यों के कार्यान्वयन और अनुकूलनों को शामिल करती है। मौजूदा कार्यों ने दिखाया कि इन कलाकृतियों का निर्माण कुछ मामलों में त्रुटिपूर्ण था। निम्नलिखित कुछ उदाहरण हैं जिन पर लाइब्रेरी आधारित है।
लक्ष्य Google के अंदर और बाहर क्रिप्टोग्राफी उपयोग मामलों में विश्वास बढ़ाना है।
असममित एन्क्रिप्शन से निपटते समय, क्रिप्टो कलाकृतियाँ आमतौर पर निम्न होती हैं:
पैरानॉयड के साथ, किसी भी क्रिप्टोग्राफिक कलाकृति का परीक्षण किया जा सकता है, लेकिन इसका प्राथमिक उद्देश्य कमजोर तृतीय-पक्ष हार्डवेयर या सॉफ्टवेयर ब्लैक बॉक्स के उपयोग का पता लगाना है। इसलिए, पैरानॉयड का उपयोग तब भी किया जा सकता है जब हम स्रोत कोड का निरीक्षण करने में सक्षम न हों (ऊपर सूचीबद्ध स्थिति 3)।
परियोजना का उद्देश्य ज्ञात कमजोरियों के साथ-साथ अज्ञात कमजोरियों का पता लगाना है। उदाहरण के लिए, यह प्रोग्रामिंग त्रुटियों या कमजोर स्वामित्व वाले यादृच्छिक संख्या जनरेटर के उपयोग के कारण होने वाली कमजोरियों की पहचान करने का प्रयास करता है। नई कमजोरियों का पता लगाना निश्चित रूप से ज्ञात कमजोरियों का पता लगाने की तुलना में कहीं अधिक कठिन है। ऐसे पता लगाने के लिए कलाकृतियों के बड़े सेट की आवश्यकता हो सकती है या वे कमजोर कलाकृतियों को केवल कम संभावना के साथ खोज सकते हैं।
इसलिए, हमें फीडबैक प्राप्त करने और उस क्रिप्टोग्राफिक लाइब्रेरी के बारे में जानने में बहुत रुचि है जिसने कमजोर क्रिप्टोग्राफिक कलाकृतियाँ उत्पन्न कीं (देखें योगदान के लिए आह्वान )। परियोजना लगातार कार्य प्रगति पर है। कमजोर कार्यान्वयनों के बारे में जानने के बाद योजना उन्हें लक्षित करने वाली जाँचों का विश्लेषण और जोड़ना है।
वर्तमान में लागू जाँचों के लिए दस्तावेज़ीकरण docs पर स्थित है। दस्तावेज़ीकरण समय के साथ अधिक सामग्री से भरा जाएगा।
जाँचों का उपयोग करना सीखने के लिए, आप examples फ़ोल्डर या यूनिट परीक्षणों (*test.py फ़ाइलें) को देख सकते हैं। उदाहरण विभिन्न क्रिप्टो कलाकृतियों का परीक्षण प्रदर्शित करते हैं।
रिपॉजिटरी को क्लोन करें:
$ git clone https://github.com/google/paranoid_crypto.git && cd paranoid_crypto
नोट: नीचे दिए गए कमांड का परीक्षण डेबियन स्थिर संस्करण
(बुकवर्म) पर किया गया है। सुनिश्चित करें कि आप python3.11 या नया उपयोग कर रहे हों।
निर्भरताएँ स्थापित करें:
$ sudo apt update && sudo apt install python3 python3-full python3-pip python3-pybind11 python3-fpylll python3-gmpy2 protobuf-compiler
एक वर्चुअल वातावरण बनाएँ और सक्रिय करें:
$ python3 -m venv --system-site-packages ~/paranoid-venv
$ source ~/paranoid-venv/bin/activate
नोट: यदि आप जानते हैं कि आप क्या कर रहे हैं, तो आप इसके बजाय अगले चरण को छोड़
सकते हैं और pip के लिए --break-system-packages स्विच का उपयोग कर सकते हैं।
paranoid_crypto पायथन पैकेज स्थापित करें:
$ python3 -m pip install .
यह जाँचने के लिए कि स्थापना सफल रही या नहीं, आप यूनिट परीक्षण चला सकते हैं। उदाहरण के लिए:
$ cd paranoid_crypto && python3 -m unittest discover -b -p "*test.py"
.................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 305 tests in 314.660s
OK
वैकल्पिक रूप से, यदि आप इसे कंटेनर में चलाना चाहते हैं, तो आप नीचे दिखाए अनुसार हमारे द्वारा प्रदान किए गए Dockerfile का उपयोग कर सकते हैं।
नोट: सुनिश्चित करें कि आपके पास docker स्थापित है।
रिपॉजिटरी को क्लोन करने के बाद, डॉकर इमेज बनाएँ:
$ docker build -t paranoid-img .
कंटेनर बनाएँ और प्रारंभ करें:
$ docker run --name paranoid-container -it paranoid-img
paranoid-user@6191368b26b8:~$
यह जाँचने के लिए कि स्थापना सफल रही या नहीं, आप यूनिट परीक्षण चला सकते हैं। उदाहरण के लिए:
paranoid-user@6191368b26b8:~$ cd paranoid_crypto && python3 -m unittest discover -b -p "*test.py"
.................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 305 tests in 307.555s
OK
अन्य प्रकाशित कार्यों के समान, हम प्रमाणपत्र पारदर्शिता (CT) से क्रिप्टो कलाकृतियों का विश्लेषण कर रहे हैं, जो 2013 से जारी वेबसाइट प्रमाणपत्रों को पारदर्शी और सत्यापन योग्य बनाने के उद्देश्य से लॉग करता है। सितंबर 2022 तक इसका डेटाबेस 7 बिलियन से अधिक प्रमाणपत्रों वाला है। EC सार्वजनिक कुंजियों और ECDSA हस्ताक्षरों की पैरानॉयड जाँचों के लिए, अब तक हमें CT में कोई कमजोर कलाकृति नहीं मिली है। उच्च या गंभीर गंभीरता वाली RSA सार्वजनिक कुंजी जाँचों के लिए, हमारे पास निम्नलिखित परिणाम हैं:
| परीक्षण नाम | संभावित संबंधित CVE | गंभीरता | कमजोर कलाकृतियों की संख्या |
|---|---|---|---|
| CheckOpensslDenylist | CVE-2008-0166 | SEVERITY_CRITICAL | 3989 |
| CheckROCA | CVE-2017-15361 | SEVERITY_HIGH | 2875 |
| CheckGCD | - | SEVERITY_CRITICAL | 1860 |
| CheckFermat | CVE-2022-26320 | SEVERITY_CRITICAL | 36 |
| CheckContinuedFractions | - | SEVERITY_CRITICAL | 16 |
| CheckBitPatterns | - | SEVERITY_CRITICAL | 6 |
| CheckPermutedBitPatterns | - | SEVERITY_CRITICAL | 6 |
| CheckKeypairDenylist | CVE-2021-41117 | SEVERITY_CRITICAL | 4 |
| CheckPollardpm1 | - | SEVERITY_CRITICAL | 1 |