PHP में प्रतिवर्ती एन्क्रिप्शन पर आकर्षक क्रिप्टोग्राफी या शोध

क्रिप्टोग्राफी का एक मुख्य सत्य यह है कि यदि आप पेशेवर नहीं हैं तो आपको इस क्षेत्र में कुछ भी आविष्कार नहीं करना चाहिए। यह आंशिक रूप से सच है, क्योंकि सूचना प्रौद्योगिकी के क्षेत्र में दशकों से सभी सर्वश्रेष्ठ का आविष्कार, सामना और उपयोग किया गया है। सच्चाई का दूसरा पक्ष यह है कि ज्ञान के एक निश्चित क्षेत्र का विकास केवल ताजे विचारों की निरंतर प्रवाह और उसमें मूल समाधानों के साथ होता है।

स्पष्ट कारणों के लिए, हम एईएस जैसे औद्योगिक क्रिप्टोग्राफी के दिग्गजों पर नहीं रेंगेंगे, लेकिन गोता लगाने के लिए, इसलिए बोलने के लिए, लाठी और खुशियों के साथ हमारे अपने क्रिप्टोग्राफिक सर्वेक्षण।

आंशिक रूप से क्योंकि यह दिलचस्प है, आंशिक रूप से क्योंकि जब कुछ अपना खुद का मॉडलिंग करता है और मान्यता प्राप्त मानकों के साथ तुलना करता है, तो आप स्पष्ट रूप से विपरीत, प्रभावी समाधान और फ्रैंक चूक को देख सकते हैं, आप समझ सकते हैं कि आप दक्षता बढ़ाने के लिए क्या प्रयास कर सकते हैं।

लेकिन पहले से ही पानी।

मान लीजिए कि हमारे वेब एप्लिकेशन को php में लिखा गया है, रिवर्सिबल एन्क्रिप्शन की आवश्यकता है, और हमें विश्वास है कि हम अपना स्वयं का सिफर सिस्टम लिख सकते हैं।

इसलिए, हम एक निजी और सार्वजनिक कुंजी के साथ प्रतिवर्ती एन्क्रिप्शन की अपनी प्रणाली लिखेंगे, एक जिसमें थोड़ी अधिक सुरक्षित क्रिप्टोग्राफिक एल्गोरिथ्म की निम्नलिखित विशेषताएं होंगी:

  1. परिणामी सिफर में शोर पात्रों की उपस्थिति।
  2. प्रेषक-गंतव्य के प्रत्येक चैनल में जानकारी एक निजी कुंजी का उपयोग करके एन्क्रिप्ट की जाएगी, और प्रत्येक कुंजी के लिए पत्राचार समारोह अद्वितीय होगा।
  3. प्रत्येक संदेश को एक डाइजेस्ट कोड प्राप्त होगा - एक अद्वितीय कोड जो निजी कुंजी और मूल संदेश का एक फ़ंक्शन है। यह न केवल "प्रेषक-गंतव्य" चैनल के लिए, बल्कि प्रत्येक व्यक्तिगत संदेश के लिए पत्राचार फ़ंक्शन "स्रोत चरित्र <=> एन्कोडेड वर्ण" की विशिष्टता प्राप्त करने के लिए आवश्यक है।

    इस प्रकार, यहां तक ​​कि अगर हम कल्पना करते हैं कि यह ज्ञात है कि क्रिप्टोग्राफिक विश्लेषण के उपयोग के माध्यम से एक विशेष संदेश के लिए कोडित और मूल अक्षर मेल खाते हैं, उदाहरण के लिए, आवृत्ति विश्लेषण, यह किसी अन्य संदेश की जांच करते समय कोई प्राथमिकता नहीं देता है।
  4. आवृत्ति विश्लेषण को जटिल करने के लिए, हम प्रत्येक स्रोत संदेश प्रतीक को दो सिफर प्रतीकों के साथ कूटबद्ध करेंगे।

तो क्या हुआ

दरअसल, आप यहां अंतिम परिणाम देख सकते हैं

सिम्कोडर क्लास

SymCoder वर्ग में एन्क्रिप्शन और डिक्रिप्शन विधियाँ शामिल हैं।

एन्क्रिप्शन कोड () विधि द्वारा किया जाता है, जो इनपुट पर मूल संदेश प्राप्त करता है।

यहां, tab_coded में उत्पन्न पत्राचार तालिका पर संदेश एक एन्क्रिप्टेड संदेश बनाता है, किनारों के आसपास और शोर प्रतीकों के साथ पतला होता है।

शोर प्रतीकों, वैसे, प्रत्येक प्रेषक-गंतव्य चैनल के लिए अद्वितीय हैं, क्योंकि वे चैनल कुंजी का उपयोग करके उत्पन्न होते हैं, लेकिन संदेशों के लिए अद्वितीय नहीं हैं। Code_symbols में एन्क्रिप्शन के लिए उपयोग किए जाने वाले वर्ण कुछ विराम चिह्न वर्ण और वर्ण जैसे%, @, आदि हैं।

प्रत्येक कोडित वर्ण के लिए, स्पष्ट कारणों से code_symbols से दो वर्ण हैं, कि उनमें से कई बार कोडित वर्णों की तुलना में कम हैं।

Create_tab_coded मिलान तालिका कोड वर्ण सरणी में तत्वों की संख्या के बराबर तत्वों की संख्या के साथ एक संदेश में हैश कुंजी हैश के अनुवाद का उपयोग करके बनाया गया है। दो-वर्ण कोड के बायपास की शुरुआत की स्थिति भी हमेशा अलग होती है और चैनल कुंजी से जुड़ी होती है। यह सुनिश्चित करना संभव बनाता है कि एन्कोड किए गए वर्णों को दरकिनार करने के लिए एल्गोरिथ्म और कोड वर्णों के लिए उनके पत्राचार हमेशा (अच्छी तरह से, या अक्सर गारंटी वाले) अलग होंगे।

उदाहरण के लिए, "हेल्लो वर्ल्ड" संदेश इनकोडिंग इस तरह दिखता है:

Digest-a00bf11d-&?==&!&?.@.@=!=-.?&1.#&?=:.:.1%!&-%@&@%~&1^#=?%%.!%+.?.~=?..&?%&&:%~.#%@&1&1&#.#=?.#.?.!&#&1==&=.-=!

और यहाँ एक ही संदेश फिर से एन्कोड किया गया है:

Digest-a00bf11d-=:.?=:&!.?.1&-&#=:=?.?.=.?.!&=%!=-%@=!%~.=^#.1%%.!%+=:.~.@..==%&&1%~.1%@=?.@.!&=.!&@=:&1.==:=!.1&#&:

यह देखा जा सकता है कि एक ही संदेश का पाचन समान है, लेकिन सिफर अलग हो जाता है - शोर प्रतीकों को मनमाने ढंग से मिलान करके और प्रत्येक नए एन्क्रिप्शन के लिए यादृच्छिक क्रम में जोड़ा जाता है।

संदेशों में अतिरेक होता है, जो संदेश की मात्रा बढ़ने के साथ घटता जाता है, 10% शोर तक पहुँचता है (सबसे छोटे संदेशों के लिए, शोर 90% और अधिक प्रतिशत तक पहुँच जाता है), एक एन्क्रिप्टेड संदेश की न्यूनतम लंबाई 116 वर्ण है। इस एन्क्रिप्शन विधि की कुछ कमियों में से एक एन्कोडेड संदेशों में दोगुनी वृद्धि है।

डिकोडिंग फॉर्म "कोड सिंबल" का रिवर्स ट्रांसलेशन है - मूल सिंबल जो कि संदेश से निकले शोर के साथ है। क्या कुंजी हो सकती है? सिद्धांत रूप में, कोई भी स्ट्रिंग जो गंतव्य-प्राप्तकर्ता प्रकार के प्रत्येक जोड़े के लिए अद्वितीय है।

उदाहरण के लिए, यदि आप संदेश एन्क्रिप्शन के साथ एक संदेशवाहक बनाते हैं, तो इस स्थिति में, निजी कुंजी का सबसे सरल संस्करण md5 ($ user_id_1। $ Salt। $ User_id_2) हो सकता है, तो कुंजी प्रत्येक संदेश चैनल के लिए अद्वितीय होगी।

Source: https://habr.com/ru/post/hi425155/


All Articles