कई कुंजियों के साथ एन्क्रिप्शन / डिक्रिप्शन


110

क्या डेटा को एन्क्रिप्ट करना संभव है, जैसे कि इसे कई अलग-अलग कुंजी के साथ डिक्रिप्ट किया जा सकता है?

उदाहरण:

मैंने key1 के साथ डेटा एन्क्रिप्ट किया है, लेकिन मैं चाबियाँ 2, 3 और 4 के साथ डिक्रिप्ट करने में सक्षम होना चाहता हूं।

क्या यह संभव है?

जवाबों:


170

GnuPG मानक में बहु-कुंजी एन्क्रिप्शन करता है।

निम्न कमांड doc.txtऐलिस के लिए सार्वजनिक कुंजी और बॉब के लिए सार्वजनिक कुंजी का उपयोग करके एन्क्रिप्ट करेगा । ऐलिस उसकी निजी कुंजी का उपयोग कर डिक्रिप्ट कर सकती है। बॉब अपनी निजी कुंजी का उपयोग करके भी डिक्रिप्ट कर सकता है।

gpg --encrypt --recipient alice@example.com \
    --recipient bob@example.com doc.txt

यह सुविधा "गाइड एन्क्रिप्ट और डिक्रिप्टिंग दस्तावेजों " नामक उपयोगकर्ता गाइड अनुभाग में विस्तृत है


डिट्टो। यह जानना अच्छा होगा कि ऐसा कैसे किया जाए, लेकिन मैं इस पर कोई मैन पेज नहीं छिपा सकता।
मार्कसक्यू

@Mitch, मैं एक उत्तर पोस्ट किया है कि हो सकता है हमारे जवाब है! (कृपया परीक्षण करें और
सराहें

@ मर्कसक्यू, ऊपर मिच के लिए मेरा लिंक देखें । यदि आप कर सकते हैं टेस्ट / धन्यवाद! :-)
अजगर का जन्म

तो इसका परिणाम 1 एन्क्रिप्टेड फ़ाइल है जिसे निजी कुंजी का उपयोग करके पढ़ा जा सकता है, प्रति कुंजी 1 फ़ाइल नहीं?
user8675309

7
@ user8675309, हाँ। डेटा को एक सामान्य सममित कुंजी द्वारा एन्क्रिप्ट किया गया है। प्रत्येक प्राप्तकर्ता की सार्वजनिक कुंजी द्वारा केवल सममित कुंजी को एन्क्रिप्ट किया जाता है। यह प्रत्येक प्राप्तकर्ता के लिए संपूर्ण डेटा को पुनः एन्क्रिप्ट नहीं कर रहा है।
वारबैंक

55

हाँ, यह मुमकिन है

कई प्राप्तकर्ताओं के लिए हां एन्क्रिप्शन संभव है। यह भी तर्कसंगत लगता है जब आपको लगता है कि आप यह पढ़ना चाहते हैं कि आपने किसी को क्या भेजा है और ऐसा करने के लिए आपको प्राप्तकर्ता सूची में होना चाहिए।

कमांड लाइन

gpgकमांड लाइन के माध्यम से इसे कैसे करना है ( डेविड सेगंड्स के उत्तर में वर्णित है ):

gpg --encrypt \
  --recipient alice@example.com \
  --recipient bob@example.com \
clear-message.txt

जीयूआई ग्राहक

आपका GUI कई लोगों के लिए एन्क्रिप्ट करने का एक तरीका प्रदान करता है

तंत्र

सूचना सुरक्षा पर एक सवाल है , कई प्राप्तकर्ता के साथ GPG फ़ाइल का आकार? , जो एन्क्रिप्शन तंत्र की व्याख्या करता है :

GPG एक बार एक सममित कुंजी के साथ फाइल को एन्क्रिप्ट करती है, फिर एक हेडर को लक्ष्य कीपेयर और सममित कुंजी के एक एन्क्रिप्टेड संस्करण की पहचान करता है।

[...] जब कई प्राप्तकर्ताओं को एन्क्रिप्ट किया जाता है, तो इस हेडर को प्रत्येक प्राप्तकर्ता के लिए एक ही सममित कुंजी का विशिष्ट एन्क्रिप्टेड संस्करण प्रदान करते हुए कई बार रखा जाता है ।


4
पिछले दो वाक्यों के लिए विशेष धन्यवाद: उन्होंने अब सब कुछ बिल्कुल स्पष्ट कर दिया है!
रेडिस्टाओ

31

सामान्य रूप से GnuPG और PGP क्लाइंट आमतौर पर "सत्र कुंजी" नामक एक सममित कुंजी के साथ वास्तविक डेटा को एन्क्रिप्ट करते हैं। सत्र कुंजी तब प्रत्येक "प्राप्तकर्ता कुंजी" के साथ एन्क्रिप्ट की जाती है (यानी जिन्हें आप -r / - प्राप्तकर्ता के साथ निर्दिष्ट करते हैं)। इसे कभी-कभी हाइब्रिड सिफर के रूप में जाना जाता है । अभी, मेरा मानना ​​है कि डिफ़ॉल्ट रूप से GnuPG एक 256 बिट सत्र कुंजी और AES का उपयोग करता है ताकि उस AES-256 सत्र कुंजी को प्लेनटेक्स्ट डेटा एन्क्रिप्ट किया जा सके, और आपकी प्राप्तकर्ता कुंजियाँ आपका RSA / DSA / ECDSA / etc हैं। इस मामले में असममित कुंजी।

इस तरह से करने का एक कारण यह है कि एईएस जैसे सममित क्रिप्टोग्राफ़िक एल्गोरिदम आमतौर पर आरएसए जैसे असममित वाले लोगों की तुलना में बहुत तेज़ होते हैं। GnuPG को केवल RSA के साथ ~ 256 बिट्स (सत्र कुंजी) एन्क्रिप्ट करना है, और उस सत्र कुंजी के साथ डेटा को एन्क्रिप्ट करने के लिए एईएस का उपयोग कर सकते हैं (जब तक आप इसे चाहते हैं!)। इंटेल मशीनों में एक अंतर्निहित इंस्ट्रक्शन, एईएस-एनआई , हार्डवेयर में एल्गोरिदम के कुछ चरणों को करने के लिए होता है, जो डेटा को एन्क्रिप्ट / डिक्रिप्ट करने पर GnuPG को अतिरिक्त तेज़ बनाता है।

इस तरह से करने का एक और कारण यह है कि यह पीजीपी-एन्क्रिप्टेड दस्तावेजों को कई पार्टियों को एन्क्रिप्ट करने की अनुमति देता है, बिना दस्तावेज़ के आकार को दोगुना करने के लिए। ध्यान दें कि जब आप एन्क्रिप्ट किए गए दस्तावेज़ (जैसे gpg -ea -r Alice -r Bob -o ciphertext.asc) के लिए कई प्राप्तकर्ताओं को निर्दिष्ट करते हैं , तो एन्क्रिप्ट किया गया दस्तावेज़ जो संग्रहीत हो जाता है (ciphertext.asc) 2x उतना बड़ा नहीं है जितना कि आपने इसे ऐलिस में एन्क्रिप्ट किया था।

यह भी देखें --show-session-keyमें पैरामीटर GPG आदमी पेज एक तीसरी पार्टी उन्हें अपने निजी कुंजी या प्लेन टेक्स्ट डेटा स्थानांतरित करने के बिना एक दस्तावेज है कि आप के लिए एन्क्रिप्टेड है डिक्रिप्ट करने के लिए अनुमति देने के लिए सिर्फ सत्र कुंजी डिक्रिप्ट करने के लिए, उदाहरण के लिए सक्षम होने के लिए।


1
एनक्रिप्टेड डॉक्यूमेंट पर स्पष्टीकरण के लिए धन्यवाद n-n बड़ा नहीं होना जहां n साइनर्स की संख्या है।
19 को theartofbeing

4

हाँ, यह मुमकिन है। Google "मल्टीपार्टी एन्क्रिप्शन" एक शुरुआत के लिए।

AFAIK, हालांकि इसमें कोई ड्रॉप 'एम' नहीं है और इसके लिए 'एम संकुल का उपयोग करें।

- मार्कसक्यू

पुनश्च एक स्केच के लिए यह कैसे किया जा सकता है, इस पर विचार करें। एन्क्रिप्ट किए गए संदेश में निम्न शामिल हैं:

  • पेलोड, एक बार पैड के साथ एन्क्रिप्टेड
  • एक समय पैड, Key1 के साथ एन्क्रिप्टेड
  • एक समय पैड, Key2 के साथ एन्क्रिप्टेड
  • ...
  • एक बार पैड, कीएनएन के साथ एन्क्रिप्टेड

जो कुंजी मैं रखता है वह बस उनकी कुंजी के साथ पैड की प्रतिलिपि को क्रिप्टोकरेंसी देता है, और फिर पेलोड को डिक्रिप्ट करता है।

हालांकि, यह सिर्फ एक सबूत है कि यह किया जा सकता है और वास्तविक कार्यान्वयन के रूप में चूसना होगा । यदि संभव हो तो, आपको अपना स्वयं का एन्क्रिप्शन रोल करने से बचना चाहिए। यदि आपको समझ में नहीं आता है, तो आपको अपने स्वयं के एन्क्रिप्शन को रोल करने से निश्चित रूप से बचना चाहिए ।

----- संपादित करें ------------

अगर मैं गलत हूं और गुनू उपकरण ऐसा करते हैं, तो उनका उपयोग करें। लेकिन मुझे यह कैसे करना है, इसके बारे में कोई जानकारी नहीं मिल सकती है।


1
इस बारे में क्या चूसना हो सकता है कि एक बार जब आप एक बार पैड जानते हैं, तो आपके पास एक ज्ञात सादा पाठ है, साथ ही अन्य कुंजियों के लिए एन्क्रिप्टेड मान भी हैं। इस जानकारी का उपयोग करके, आप यह पता लगाना आसान बना सकते हैं कि अन्य कुंजी क्या हैं।
किबी

2
Googling "मल्टीपार्टी एन्क्रिप्शन" बहुत ऊपर नहीं जाता है। आपको "प्रसारण एन्क्रिप्शन" के साथ बेहतर किस्मत की संभावना होगी जो इस मामले को भी शामिल करती है।
स्टैकट्रेस

1
@ रिबन: चाबियाँ गुप्त नहीं हैं, वे सार्वजनिक हैं। इसलिए यह पता लगाना आसान है कि वे क्या मायने नहीं रखते। (इन योजनाओं का उपयोग केवल उन कुंजियों के साथ किया जाता है जो केवल एन्क्रिप्ट करने के लिए उपयोग की जा सकती हैं, डिक्रिप्टिंग के लिए नहीं।)
डेविड श्वार्ट्ज

5
मुझे पूरा यकीन है कि वास्तविक कार्यान्वयन एक साझा वन-टाइम पैड का उपयोग नहीं करते हैं (जो कि सादे पाठ और एन्क्रिप्टेड पाठ जितना बड़ा होना चाहिए, इस प्रकार संदेश का आकार दोगुना हो जाता है), लेकिन वास्तव में एक साझा सिमिट्रिक एन्क्रिप्शन कुंजी का उपयोग करें (जो आमतौर पर संदेश की तुलना में बहुत छोटा होता है)।
जोकिम सॉर

-16

एकाधिक (दो से अधिक) कुंजी आरएसए शायद इस तरह है - मैं एक गणितज्ञ नहीं हूं, इसलिए यह एल्गोरिथ्म आवश्यक रूप से सुरक्षित नहीं है, मैं सिर्फ इसके साथ एक विचार देना चाहता हूं।

मीटर = पी * क्ष * आर; p, q, r बड़ी अभाज्य संख्याएँ हैं

फाई (एम) = (पी -1) (क्यू -1) (आर -1)

d == (e1 * e2 * e3 * ... * ei) ^ (- 1) (mod fi (m)); e1 ... ei मनमानी संख्याएँ हैं, d की गणना समीकरण को पूरा करने के लिए की जाती है

y1 == x ^ e1 (mod m)

y2 == y1 ^ e2 (mod m)

y3 == y2 ^ e3 (mod m)

...

x == yi ^ d (mod m)

इस एल्गोरिथ्म का उपयोग उदाहरण के लिए ऑनियन राउटर की गति को बढ़ाने के लिए किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.