security - what - एन्क्रिप्शन




एकाधिक प्राप्तकर्ताओं के लिए एक संदेश को कैसे एन्क्रिप्ट करना है? (4)

अगर मैं आपको सही ढंग से समझा, तो आपके पास कुछ डेटा है जो आप एन्क्रिप्शन कुंजी एन 'कुंजी टुकड़ों' में विभाजित करने के लिए एन्क्रिप्ट और वितरित करने के लिए तैयार हैं। (आपके मामले में 2 टुकड़े)

इसके लिए आप एक्सओआर आधारित विभाजन का इस्तेमाल कर सकते हैं, यहां बताया गया है कि यह कैसे काम करता है: आप आवश्यक संख्या में टुकड़े - एन और गुप्त कुंजी प्रदान करते हैं - आपकी कुंजी के एन टुकड़े उत्पन्न करने के लिए आपको (एन -1) बनाने की जरूरत है यादृच्छिक संख्या: आर 1, आर 2, आर 3,। । । , आरएन -1 इसके लिए आप एक सिक्योररेन्डम नंबर जनरेटर का उपयोग कर सकते हैं, जो हमें डुप्लिकेट से बचाएगा। तब आप इन आरएन -1 टुकड़ों और आपकी कुंजी पर XOR फ़ंक्शन संचालित करते हैं - कश्मीर:
आर एन = आर 1 ⊕ आर 2 ⊕ आर 3 ⊕ ⊕ आरएन -1 ⊕ के

अब आपके पास आपके एन टुकड़े हैं: आर 1, आर 2, आर 3, ..., आरएन -1, आरएन और आप कश्मीर को नष्ट कर सकते हैं। ये टुकड़े आपके कोड में फैल सकते हैं या उपयोगकर्ताओं को भेजे जा सकते हैं।

कुंजी को पुन: संयोजित करने के लिए, हम अपने आरएन टुकड़ों पर एक्सओआर ऑपरेशन का उपयोग करते हैं:
के = आर 1 ⊕ आर 2 ⊕ आर 3 ⊕ ⊕ आरएन -1 ⊕ आरएन

XOR फ़ंक्शन (⊕) के साथ प्रत्येक टुकड़ा कुंजी के पुनर्निर्माण में स्वाभाविक रूप से महत्वपूर्ण है, अगर किसी भी टुकड़े में किसी भी बिट को बदल दिया जाता है, तो कुंजी वसूली योग्य नहीं है।

अधिक जानकारी और कोड के लिए, आप उस प्रयोजन के लिए लिखित एंड्रॉइड यूटिलिटी को देख सकते हैं:
गीथहब प्रोजेक्ट: https://github.com/aivarsda/Secret-Key-Split-Util

इसके अलावा आप गुप्त कुंजी अलगाने वाला डेमो ऐप जो उस उपयोगिता का उपयोग करते हैं, कोशिश कर सकते हैं:
GooglePlay: https://play.google.com/store/apps/details?id=com.aivarsda.keysplitter

डेटा एन्क्रिप्शन को पूरा करने के लिए बुनियादी तौर पर क्या दो कुंजी (जो कि पासवर्ड-आधारित हो) हो सकता है, लेकिन डेटा को डिक्रिप्ट करने के लिए दो कुंजी के केवल एक (या तो एक) की आवश्यकता है?

उदाहरण के लिए, डेटा उपयोगकर्ता के पासवर्ड और उसकी कंपनी के पासवर्ड से एन्क्रिप्ट किया जाता है, और तब वह या उसकी कंपनी डेटा को डिक्रिप्ट कर सकता है। उनमें से कोई अन्य पासवर्ड नहीं जानता है एन्क्रिप्टेड डेटा की केवल एक प्रति संचित है।

मेरा मतलब सार्वजनिक / निजी कुंजी नहीं है शायद सममित कुंजी क्रिप्टोग्राफी के जरिए और संभवतः इसमें एन्क्रिप्ट करने के लिए उनको उपयोग करने के लिए एक साथ चाबियाँ एक्सरिंग की तरह कुछ शामिल है।

अद्यतन: मैं भी उस समाधान को खोजना चाहूंगा जिसमें कोई भी चाबियाँ संचय नहीं करना शामिल है


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

एक तरह से यह किया जा सकता है कि आदेश टी -1 का बहुपद बना कर, गुप्त को पहले गुणांक के रूप में स्थापित किया गया, और बाकी के गुणों को यादृच्छिक रूप से चुनना। उसके बाद, इस वक्र पर यादृच्छिक अंक चयनित होते हैं और शेयर बन जाते हैं।


मुझे लगता है कि मैं एक समाधान के बारे में सोचा था जो काम करेगा:

D = data to encrypt
h1 = hash(userpassword)
h2 = hash(companyPassword)
k = h1 concat h2

E = function to encrypt
//C is the encrypted data
C = E_h1(h2) concat E_h2(h1) concat E_k(D)

फिर या तो कोई व्यक्ति दूसरे व्यक्ति के हैश को डिक्रिप्ट कर सकता है, और फिर उन्हें बाकी डेटा को डिक्रिप्ट करने के लिए जोड़ सकता है

शायद इस से बेहतर समाधान क्या है?


सामान्यतया, आप जो भी करते हैं, एक बेतरतीब ढंग से उत्पन्न की गई कुंजी के साथ डेटा को एन्क्रिप्ट करते हैं, और उसके बाद उस ज्ञात कुंजी के साथ एन्क्रिप्ट किए गए उस यादृच्छिक कुंजी के संस्करणों को जोड़ते हैं। इसलिए एक वैध कुंजी वाला कोई भी 'वास्तविक' कुंजी को खोज सकता है जिसका उपयोग डेटा को एन्क्रिप्ट करने के लिए किया गया था।





cryptography