2013-09-06 8 views
7

एक सामान्य आरएसए कार्यान्वयन में एक बहु-परिशुद्धता पूर्णांक लाइब्रेरी शामिल है। एक सामान्य बहु-परिशुद्धता पूर्णांक लाइब्रेरी बड़े पूर्णांक का प्रतिनिधित्व करने के लिए गतिशील आवंटन का उपयोग करती है क्योंकि मशीन शब्दों के सरणी केवल सही आकार के होते हैं।गतिशील आवंटन के बिना आरएसए का कार्यान्वयन

मुझे उम्मीद है कि गणितीय पूर्णांक पर एक बाध्य होना चाहिए, जब बहु-परिशुद्धता पूर्णांक का उपयोग केवल ज्ञात लंबाई (आमतौर पर, सममित एन्क्रिप्शन कुंजी) के संदेशों को एन्क्रिप्ट या डिक्रिप्ट करने के लिए किया जा सकता है, कहें, आरएसए -2048, और कि सभी आवश्यक मध्यवर्ती परिणामों के लिए या तो स्थैतिक या ढेर पर स्थान आवंटित करके एल्गोरिदम लागू करना संभव होगा।

मुझे यह पता चला कि यह संभव है this forum thread। यह अधिकतम पूर्णांक आकार इंगित नहीं करता है। शायद यह स्पष्ट है ("आपको सभी पूर्णांक के लिए 2048 बिट्स चाहिए, डुह!")। किसी भी मामले में, यदि कोई है तो मैं पहले से ही मौजूदा कार्यान्वयन में अधिक रुचि रखूंगा।

एक पक्ष सवाल है कि अपने स्वयं के प्रवेश के लायक नहीं है के रूप में, अण्डाकार वक्र क्रिप्टोग्राफी के विशिष्ट कार्यान्वयन गतिशील आवंटन की जरूरत है?

+0

मुझे लगता है कि सभी अंडाकार घटता की जगह एक ढेर है, तो नहीं? –

+0

इस बात पर विश्वास नहीं है कि यह विषय पर है। यह गणितज्ञों/क्रिप्टोग्राफरों (विषय से बाहर) और मौजूदा पुस्तकालय या संसाधन (विषय से बाहर) के लिए एक अनुरोध दोनों के लिए एक प्रश्न है। –

+0

@DuncanJones गणितज्ञों के लिए एक प्रश्न के रूप में, यह सवाल एक गैर प्रश्न है। आरएसए के गणित किया जाता है। मध्यवर्ती परिणामों की संख्या और उनके आकार कार्यान्वयन विवरण हैं। मैं मानता हूं कि मौजूदा कार्यान्वयन के लिए मेरी कॉल इसे इस तरह से विषय-वस्तु बनाती है। अगर मैंने कहा, "मैं पोलारएसएसएल के {बिग्नम, आरएसए} को कुछ भी समझ नहीं पा रहा हूं, तो यह मदद करेगा। {सी, एच}, कृपया मुझे उचित आकारों के हार्ड-आवंटन स्थिर आवंटन में मदद करें"? शायद नहीं, तो यह हल होने वाली समस्या की न्यूनतम समझ का प्रदर्शन नहीं करेगा। जो मैं निश्चित रूप से नहीं है। मैं अपराधी हूं। –

उत्तर

1

यह संभव गतिशील आवंटन के बिना एक बहु सटीक पूर्णांक वर्ग को लागू करने के लिए है

हां।

मैं C# BigInteger Class में एक ऐसी ही कार्यान्वयन के बारे में पता कर रहा हूँ। (और अंतर्निहित clr रनटाइम क्या करता है यह नहीं है)।

मैं सी/C++ किसी भी स्थिर आकार बफर के बारे में पता नहीं कर रहा हूँ। लेकिन मैं केवल बोटन, क्रिप्टो ++, और ओपनएसएसएल से परिचित हूं।

जो मैंने कार्यान्वयन के बारे में देखा है, सार्वजनिक एक्सपोनेंट e कभी-कभी इसे int या long बनाने का अनुकूलन प्राप्त करता है। लेकिन n और d बहु-परिशुद्धता हैं। (और मैं देखना चाहता हूं कि यह कैसे कुछ दिन उड़ाता है)।

अंत में, routers और अन्य कम शक्ति उपकरण अक्सर भेजने पर इस अनुकूलन लेने के लिए और बफ़र्स प्राप्त (मैं एक आदमी है जो एक बिजली इंजीनियर और डिज़ाइन किया गया रूटर था के साथ काम करते थे)। वे बस स्मृति का एक हिस्सा आरक्षित करते हैं और सॉफ्टवेयर स्थिर बफर तक पहुंचने के लिए एक इंडेक्स का उपयोग करता है। इसलिए यह विश्वास करना मुश्किल नहीं है कि उन्होंने आपके द्वारा बोलने वाले अनुकूलन को लिया है।


RSA-2048, और कहा कि यह सभी आवश्यक मध्यवर्ती परिणाम के लिए जगह का आवंटन या तो स्थिर है या ढेरों पर से एल्गोरिथ्म लागू करने के लिए संभव हो जाएगा।

हां, यदि आप अधिकतम आरएसए मॉड्यूलस आकार या ईसी प्राइम फ़ील्ड आकार को सीमित करने के लिए स्वीकार करते हैं तो आप निश्चित आकार वाले बफर का उपयोग करके साइन आवृत्ति योजना के साथ ऐसा कर सकते हैं।

एक आरएसए सार्वजनिक कुंजी (ई, एन) है। छोटे e पर चेतावनी के बावजूद, आपको 2048/8 = 256 बाईस या ऑक्टेट्स के दो बफर की आवश्यकता होगी।

एक आरएसए precomputation चाल के बिना निजी कुंजी बस (ई, डी, एन) है। तो आपको 256 बाइट्स या ऑक्टेट्स के तीन बफर की आवश्यकता होगी।

यदि आप एक पीडीपी -8 12 बिट बाइट के साथ काम कर रहे थे, तो आप कम बाइट की आवश्यकता होगी।


यह अधिकतम पूर्णांक आकार संकेत नहीं है।

विस्तार में शैतान शायद गुणा है। इसलिए आपको गुणा करने के लिए स्क्रैच बफर की आवश्यकता होगी। इसका मतलब है कि आपको ~ 2 * 2048-बिट आकार के बफर की आवश्यकता होगी (गुणा 2 m आकार के बफर आकार 2m -1 का परिणाम बनाता है)। गुणा के परिणाम को कम करना होगा। उनका और अनुकूलन हो सकता है, लेकिन मैं आमतौर पर उन विवरणों से खुद को चिंता नहीं करता हूं।

संबंधित, अधिकतम संदेश आकार और अधिकतम सिफर टेक्स्ट आकार n से संबंधित है। क्रिप्टो ++ में, उन्हें MaxPreImageSize (सादे पाठ के लिए) और MaxImageSize (सिफर टेक्स्ट के लिए) के साथ पुनर्प्राप्त किया जा सकता है। MaxPreImageSize और MaxImageSize वापसी n - 1


एक पक्ष सवाल है कि अपने स्वयं के प्रवेश के लायक नहीं है के रूप में, अण्डाकार वक्र क्रिप्टोग्राफी के विशिष्ट कार्यान्वयन गतिशील आवंटन की जरूरत है?

यह अंतर्निहित कार्यान्वयन पर निर्भर करता है। एक प्रमुख क्षेत्र के ऊपर एक वक्र (Certicom के SEC1, Elliptic Curve Domain Parameters से, धारा 3, पेज 16) डोमेन पैरामीटर द्वारा परिभाषित किया गया है:

Elliptic curve domain parameters over F_p are a sextuple: 

    T = (p, a, b, G, n, h) 
  • p एक बड़ी प्रधानमंत्री है और यह एक बहु सटीक पूर्णांक की जरूरत है

  • a और b गुणांक हैं जो वक्र को परिभाषित करते हैं। आमतौर पर 'छोटे' होते हैं (उदाहरण के लिए, a = 3), लेकिन उन्हें गैर-मानक घटता के लिए बहु-परिशुद्धता पूर्णांक की आवश्यकता हो सकती है। उदाहरण के लिए, डीजेबी का ed25519 वक्र y^2 = x^3 - 102314837768112 x + 398341948620716521344 है।

  • G आधार बिंदु है, इसलिए यह वास्तव में वक्र पर एक तत्व (या बिंदु) है। इसका मतलब है एक (एक्स, वाई) समन्वय और शायद बहु परिशुद्धता पूर्णांक की आवश्यकता है।

  • n आदेश G का एक प्रमुख जिसका अर्थ है अपने nealry के रूप में बड़े रूप में n

  • h सहायक कारक है और इसके आमतौर पर बहुत छोटा है: 4 या 2, या 1.

जब आप वक्र के लिए एक महत्वपूर्ण जोड़ी बनाते हैं, आपको एक यादृच्छिक निजी एक्सपोनेंट d (या x) की आवश्यकता होती है, और यह एक्सपोनिएशन के बाद एक तत्व (वक्र पर बिंदु) बनाता है। यही है, पब्लिक की (एक्स, वाई) = G^x। तो आपके पास तीन और बहु-सटीक पूर्णांक हैं।

दायर एक बाइनरी पर एक वक्र बहुपद व्यक्त करने के लिए एक तरीका की जरूरत है। तो आपको शायद बहु-परिशुद्धता पूर्णांक की आवश्यकता होगी (प्राइम फ़ील्ड में p के लिए उपयोग किया जाता है)।

तो, अंडाकार वक्र पर अधिकांश 'चीजें' को बहु-परिशुद्धता पूर्णांक की आवश्यकता होती है।

आप डोमेन पैरामीटर के उदाहरण देख सकते हैं, उदाहरण के लिए, Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation

0

यह RSA implementation, BearSSL के अंदर, थॉमस पोर्निन द्वारा, वास्तव में वे गुण हैं जिनके बारे में मैं पूछ रहा था। BearSSL के वेबपृष्ठ से:

कोई भी गतिशील आवंटन नहीं। सभी पुस्तकालयों में एक एकल मॉलोक() कॉल नहीं है।

...

बड़ा डेस्कटॉप और सर्वर OS पर, इस सुविधा को अभी भी एक दिलचस्प विशेषता प्रदान करता है: मेमोरी लीक और स्मृति के आधार पर Dos हमलों के लिए प्रतिरक्षा। बाहरी लोग बीयरएसएसएल को मेगाबाइट्स रैम आवंटित नहीं कर सकते हैं क्योंकि बीयरएसएसएल वास्तव में राम को आवंटित करने के बारे में नहीं जानता है।

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