2010-04-04 21 views
5

तीन एन्क्रिप्टेड पूर्णांक के औसत की गणना करना संभव है? एन्क्रिप्टिंग की विधि पर कोई बाधा नहीं है। इसका मुद्दा सिर्फ तीन संख्याओं को छिपाने और औसत खोजने के लिए है।तीन एन्क्रिप्टेड संख्याओं की औसत गणना

+2

क्यों न केवल एन्क्रिप्टेड संख्याओं के साथ औसत स्टोर करें? यदि आप 'एन्क्रिप्टेड' संख्याओं से औसत प्राप्त करने में सक्षम हैं, तो आपने उन्हें अच्छी तरह से एन्क्रिप्ट नहीं किया है क्योंकि वे अभी भी गणितीय से संबंधित हैं। – Cam

+0

मेरे उत्तर में, मैंने माना है कि आप एन्क्रिप्टेड औसत परिणाम के रूप में चाहते हैं, न कि अनएन्क्रिप्टेड औसत। जैसा कि अविश्वसनीय रूप से पहले से ही उल्लेख किया गया है, अनएन्क्रिप्टेड औसत की गणना करने में सक्षम होने से जानकारी लीक हो जाएगी, जो क्रिप्टोसिस्टम के लिए एक बहुत ही खराब संपत्ति होगी। –

उत्तर

12

जो आप खोज रहे हैं उसे Homomorphic Encryption कहा जाता है: एक एन्क्रिप्शन योजना जो आपको एन्क्रिप्टेड परिणाम के साथ एन्क्रिप्टेड परिणाम के साथ एन्क्रिप्टेड डेटा पर संचालन करने की अनुमति देती है।

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

आपके मामले में, आप दो आपरेशन की जरूरत है: इसके अलावा और विभाजन। अभी हाल तक, समरूप एन्क्रिप्शन योजनाओं आमतौर पर केवल 1 आपरेशन का समर्थन किया। लेकिन सितंबर 2009 IMB announced the first fully homomorphic cryptosystem में।इसके बाद जल्द ही अन्य शोध published another system

ये क्रिप्टोसिस्टम आपके इच्छित काम करने में सक्षम हो सकते हैं, लेकिन यह सभी कंप्यूटर विज्ञान अनुसंधान काटने वाला है।

+1

बहुत रोचक, धन्यवाद। –

+0

यह काम करेगा, अगर उसे कोई फर्क नहीं पड़ता कि परिणाम अभी भी एन्क्रिप्ट किया गया है। यदि वह परिणाम को डिक्रिप्ट करना चाहता है, तो वह इनपुट को भी डिक्रिप्ट कर सकता है ... –

+0

यदि मैं केवल संख्याओं को "जोड़ना" चाहता हूं तो मैं किस विधि का उपयोग करूंगा? कोई विभाजन नहीं तो एन्क्रिप्टेड नंबर जोड़ने के लिए 1-ऑपरेशन-होमोमोफिक-एन्क्रिप्शन सबसे अच्छा क्या है? – heinob

4

संख्याओं को डिक्रिप्ट करें, फिर उनके औसत की गणना करें। सं

सबसे वास्तविक दुनिया एन्क्रिप्शन तरीकों के साथ:: नहीं

के साथ कुछ stupidly सरल विशेष रूप से औसतन अनुमति देने के लिए डिज़ाइन किया गया कहानियो विधि पूर्ववत करने के लिए:

+1

मुझे नहीं लगता कि यह सवाल का मुद्दा था। मुझे पूरा यकीन है कि ओपी अलग-अलग संख्याओं को प्रकट किए बिना औसत गणना करना चाहता है (यहां तक ​​कि सीपीयू कंप्यूटिंग औसत तक)। –

+1

यह * बिंदु * नहीं हो सकता है, लेकिन गंभीरता से, यह समझदारी से कैसे किया जा सकता है? –

+0

वह, बिल्कुल, मेरा मुद्दा है। –

1
आदर्श एन्क्रिप्शन तरीकों के साथ

हां।

बाद की विधि को कॉल करना "एन्क्रिप्शन" वास्तव में गलत शब्द का उपयोग करेगा।

आप उन्हें decrypting बिना एन्क्रिप्टेड संख्या के औसत की गणना कर सकता है, कि मूल संख्या काफी बहुत आसान decrypting होगा, इसलिए यदि यह किसी भी गंभीर एन्क्रिप्शन एल्गोरिथ्म के साथ काम करता मैं बहुत हैरान हो जाएगा।

0

सामान्य तीन एन्क्रिप्टेड संख्याओं में एन्क्रिप्टेड होने पर एक ही क्रम को बनाए रखना नहीं चाहिए, इसलिए मुझे पूरा यकीन है कि आपको उन्हें डिक्रिप्ट करना होगा और अवतार की गणना करना होगा।

2

मुझे पहले पूछताछ करने के अलावा, जो भी आप पूछते हैं, करने के लिए मुझे कोई आसान तरीका नहीं दिखता है।

औसत (या "अंकगणितीय माध्य") लेना जोड़ना आवश्यक है। अब यदि आप संख्या गुणा करना चाहते हैं, तो आप आरएसए एन्क्रिप्शन के साथ अच्छी तरह से ऐसा कर सकते हैं। यदि पी सादे टेक्स्ट है, सी ciphertext है, और ई एन्क्रिप्शन कुंजी है, तो आरएसए में, सी = पी^ई। आप 3 अलग पूर्णांकों, p1, p2, p3, है और उत्पाद पीपी तो

pp^e = (p1 * p2 * p3)^e = p1^e * p2^e * p3^3 = c1 * c2 * c3 = cp 

है यही कारण है, तो आप तीन प्लेन पूर्णांकों एक साथ गुणा कर सकते हैं या तो और फिर एन्क्रिप्ट, या आप सिर्फ तीन ciphertexts गुणा कर सकते हैं एक साथ, और एक ही जवाब मिलता है। यह आपको "ज्यामितीय माध्य" की ओर कुछ रास्ता मिलेगा, जहां आप सभी संख्याओं को एक साथ गुणा करते हैं, और फिर घन-रूट (या एन संख्याओं के लिए nth रूट) लेते हैं। दुर्भाग्य से, मॉड्यूलर अंकगणित में घन रूट की गणना गैर-तुच्छ है।

0

हैं, और वह भी तब, एन्क्रिप्शन की विधि एक एक-से-एक गणितीय समारोह है, तो यह है, जबकि संख्या एन्क्रिप्ट किए गए हैं ऐसा करने के लिए संभव है।

उदाहरण के लिए, अगर मेरे एन्क्रिप्शन के बहुत असुरक्षित विधि 2 के हर संख्या गुणा करने के लिए है, तो मैं निम्नलिखित करना होगा:

 
function encrypt($number){ 
    return $number*2; 
    } 

$a=encrypt(3); // a= 9 
$b=encrypt(5); // b= 15 
$c=encrypt(6); // c= 18 

$average = ($a+$b+$c)/6; // We divide by 6 because first we divide by 3 to get the average, then by 2 to do the decryption. The method will vary based on the mathematical function. 

केवल अन्य संभावना पहले नंबर डिक्रिप्ट करने के लिए है।

संबंधित मुद्दे