सर्पेन्ट (सिफर)

From Vigyanwiki
सर्पेंट
Serpent-linearfunction.svg
सर्पेंट की रेखीय मिश्रण अवस्था
General
Designersरॉस एंडरसन, एली बिहम, लार्स नुडसन
First published1998-08-21
Derived fromस्क्वायर
Certificationएईएस फाइनलिस्ट
Cipher detail
Key sizes128, 192 or 256 बिट्स
Block sizes128 बिट्स
Structureप्रतिस्थापन-क्रमपरिवर्तन नेटवर्क
Rounds32
Best public cryptanalysis
सभी सार्वजनिक रूप से ज्ञात हमले कम्प्यूटेशनल रूप से अव्यावहारिक हैं, और उनमें से कोई भी पूरे 32-राउंड सर्पेंट को प्रभावित नहीं करता है। 2011 के एक हमले ने 2116 ज्ञात प्लेनटेक्स्ट, 2107.5 समय और 2104 मेमोरी के साथ 11 राउंड सर्पेंट (सभी प्रमुख आकार) तोड़ दिए (जैसा कि इसमें वर्णित है <रेफरी नाम = एसीएसपी-2011 />)। इसी पेपर में दो हमलों का भी वर्णन है जो सर्पेंट -256 के 12 चक्कर तोड़ते हैं। पहले के लिए 2118 ज्ञात प्लेनटेक्स्ट, 2228.8 समय और 2228 मेमोरी की आवश्यकता होती है। दूसरे हमले के लिए 2116 ज्ञात प्लेनटेक्स्ट और 2121 मेमोरी की आवश्यकता होती है लेकिन इसके लिए 2237.5 समय की भी आवश्यकता होती है।

सर्पेंट सममित की ब्लॉक सिफर है जो उन्नत एन्क्रिप्शन मानक प्रक्रिया (एईएस) प्रतियोगिता में निणार्यक था, जहां इसे रिजंडैल के बाद दूसरा स्थान दिया गया था।[1] सर्पेंट को रॉस एंडरसन, एली बिहम और लार्स नुडसन द्वारा डिज़ाइन किया गया था ।[2]

अन्य उन्नत एन्क्रिप्शन मानक प्रस्तुतियाँ की समान , सर्पेंट के पास ब्लॉक आकार (क्रिप्टोग्राफी) 128 बिट्स का है और 128, 192 या 256 बिट्स के प्रमुख आकार का समर्थन करता है।[3] सिफ़र 32-राउंड प्रतिस्थापन-क्रमपरिवर्तन नेटवर्क है जो चार 32-बिट वर्ड (कंप्यूटर आर्किटेक्चर) के ब्लॉक पर कार्य करता है। प्रत्येक दौर समानांतर में 32 बार आठ 4-बिट से 4-बिट S-बॉक्स में से एक पर लागू होता है। सर्पेंट को डिजाइन किया गया था जिससे कि 32 बिट स्लाइस का उपयोग करके समानांतर कंप्यूटिंग में सभी कार्यों को निष्पादित किया जा सकेता है। यह समानता को अधिकतम करता है, किन्तु डेटा एन्क्रिप्शन मानक पर किए गए व्यापक क्रिप्ट विश्लेषण कार्य के उपयोग की भी अनुमति देता है।

सर्पेंट ने सुरक्षा के लिए रूढ़िवादी दृष्टिकोण अपनाया, बड़े सुरक्षा सीमा का चयन किया गया था। डिजाइनरों ने 16 राउंड को ज्ञात प्रकार के अटैक के लिए पर्याप्त माना, किन्तु 32 राउंड को क्रिप्ट विश्लेषण में भविष्य की खोजों के विरुद्ध बीमा के रूप में निर्दिष्ट किया।[4] एईएस प्रतियोगिता पर आधिकारिक एनआईएसटी रिपोर्ट ने सर्पेंट को आरसी6 और रिजेंडेल (वर्तमान में एईएस) के पर्याप्त सुरक्षा सीमा के विपरीत मार्स और ट्वोफिश के साथ उच्च सुरक्षा सीमा के रूप में वर्गीकृत किया।[1]अंतिम मतदान में, सर्पेंट के अंतिम में सबसे कम नकारात्मक मतदान थे, किन्तु कुल मिलाकर दूसरा स्थान प्राप्त किया क्योंकि रिजेंडेल के पास अधिक सकारात्मक मतदान थे, निर्णायक कारक यह था कि रिजेंडेल ने कहीं अधिक कुशल सॉफ्टवेयर कार्यान्वयन की अनुमति दी थी।

सर्पेंट सिफर एल्गोरिथम सार्वजनिक डोमेन में है और इसका पेटेंट नहीं कराया गया है।[5] संदर्भ कोड सार्वजनिक डोमेन सॉफ्टवेयर है और अनुकूलित कोड जीपीएल के अंतर्गत है।[6] इसके उपयोग के संबंध में कोई प्रतिबंध या बाधा नहीं है। परिणाम स्वरुप , कोई भी लाइसेंस शुल्क का भुगतान किए बिना सर्पेंट को अपने सॉफ़्टवेयर (या हार्डवेयर कार्यान्वयन) में सम्मलित करने के लिए स्वतंत्र है।

मुख्य अनुसूची

सर्पेंट की अनुसूची में 3 मुख्य चरण होते हैं। पहले चरण में यदि आवश्यक हो तो पैडिंग जोड़कर की को आरंभीकृत किया जाता है। यह 256-बिट्स की लंबी की के लिए लघु की मानचित्र बनाने के लिए किया जाता है, "1" बिट को छोटी की के अंत में "0" बिट्स के बाद जोड़ा जाता है जब तक कि छोटी की को लंबी की लंबाई में मानचित्र नहीं किया जाता है।[3]

अगले चरण में, "परेकीस " पहले से आरंभ की गई की का उपयोग करके प्राप्त की जाती हैं। 32-बिट प्रमुख भाग एक्सओरेड, एफआरएसी जो कि सुवर्णमय अनुपात का अंश है और प्रमुख भागों के साथ राउंड सूचकांक एक्सओरेड है, एक्सओआर ऑपरेशन के परिणाम को 11 से बाईं ओर घुमाया जाता है। एफआरएसी और राउंड इंडेक्स को राउंड के पर्यन्त की बिट्स के समान वितरण को प्राप्त करने के लिए जोड़ा गया था।[3]

अंत में "उप की" पहले से उत्पन्न "परेकीस " से ली गई हैं। इसका परिणाम कुल 33 128-बिट "उप की" में होता है।[3]

अंत में की बिट्स को सही कॉलम में रखने के लिए राउंड की या "उप की" को "प्रारंभिक क्रमपरिवर्तन आईपी" में रखा जाता है।[3]


की अनुसूची स्यूडो कोड

#define FRAC 0x9e3779b9     //  fractional part of the golden ratio
#define ROTL(A, n) (A << n) | (A >> (32 - n))

uint32_t key[8] // k
uint32_t words[132]; // w
uint32_t subkey[33][4] // sk

/* key schedule: get prekeys */
void w(uint32_t *w, uint32_t *k) {
    uint32_t imm[140];
    for (short i = 0; i < 8; i++){
        imm[i]=k[i];
    }
	for (short i = 8; i < 140; i++) {
		imm[i] = ROTL((w[i - 8] ^ w[i - 5] ^ w[i - 3] ^ w[i - 1] ^ FRAC ^ (i - 8)), 11);
		w[i-8] = imm[i]
	}
}

/* key schedule: get subkeys */
void k(uint32_t *w, uint32_t (*sk)[4]) { 

	uint8_t i, p, j, s, k;
	
	for (i = 0; i < 33; i++) {
		p = (32 + 3 - i) % 32;
		for (k = 0; k < 32; k++) {
			s = S[p % 8][((w[4 * i + 0] >> k) & 0x1) << 0 |
						 ((w[4 * i + 1] >> k) & 0x1) << 1 |
						 ((w[4 * i + 2] >> k) & 0x1) << 2 |
						 ((w[4 * i + 3] >> k) & 0x1) << 3 ];
			for (j = 0; j < 4; j++) {
				sk[i][j] |= ((s >> j) & 0x1) << k;
			}
		}
	}
}


एस-बॉक्स

सर्पेंट S-बॉक्स 4-बिट क्रमपरिवर्तन हैं और निम्नलिखित गुणों के अधीन हैं।

  • 1-बिट इनपुट अंतर कभी भी 1-बिट आउटपुट अंतर की ओर नहीं ले जाएगा, एक विभेदक विशेषता में 1:4 या उससे कम की संभावना होती है।[7]
  • रैखिक विशेषताओं की संभावना 1:2 और 1:4 के बीच होती है, इनपुट और आउटपुट बिट्स के बीच रैखिक संबंध की संभावना 1:2 और 1:8 के बीच होती है।[7]
  • इनपुट बिट्स के कार्य के रूप में आउटपुट बिट्स का गैर-रैखिक क्रम 3 है। चूंकि ऐसे आउटपुट बिट्स पाए गए हैं जो इनपुट बिट्स के कार्य में केवल 2 का क्रम रखते हैं।[7]

डेटा एन्क्रिप्शन मानक S-बॉक्स की 32 पंक्तियों के आधार पर सर्पेंट S-बॉक्स का निर्माण किया गया है। इन्हें अदला-बदली प्रविष्टियों द्वारा रूपांतरित किया गया था, जिसके परिणामस्वरूप वांछित गुणों वाले सरणियों को सर्पेंट S-बॉक्स के रूप में संग्रहीत किया गया था। यह प्रक्रिया तब तक पुनरावृत्त हुई जब तक कि कुल 8 S-बॉक्स नहीं मिल गए। इस प्रक्रिया में निम्नलिखित "sboxesforserpent" की का उपयोग किया गया था।[3]


क्रमपरिवर्तन और परिवर्तन

प्रारंभिक क्रमचय (आईपी)

प्रारंभिक क्रमचय 128 बिट्स पर समय में बिट्स रोटेट पर कार्य करता है।

for i in 0 .. 127
    swap( bit(i), bit((32 * i) % 127) )


अंतिम क्रमपरिवर्तन (एफपी)

अंतिम क्रमपरिवर्तन 128 बिट्स पर कार्य करता है जो समय में बिट्स को रोटेट करता है।

for i in 0 .. 127
    swap( bit(i), bit((2 * i) % 127) )


रैखिक परिवर्तन (एलटी)

एक्सओआर, S-बॉक्स, बिट शिफ़्ट बाएँ और बिट रोटेट लेफ्ट ऑपरेशंस से मिलकर बनता है। ये ऑपरेशन 4 32-बिट शब्दों पर किए जाते हैं।

for (short i = 0; i < 4; i++) {
    X[i] = S[i][B[i] ^ K[i]];
}
X[0] = ROTL(X[0], 13);
X[2] = ROTL(X[2], 3 );
X[1] = X[1] ^ X[0] ^ X[2];
X[3] = X[3] ^ X[2] ^ (X[0] << 3);
X[1] = ROTL(X[1], 1 );
X[3] = ROTL(X[3], 7 );
X[0] = X[0] ^ X[1] ^ X[3];
X[2] = X[2] ^ X[3] ^ (X[1] << 7);
X[0] = ROTL(X[0], 5 );
X[2] = ROTL(X[2], 22);
for (short i = 0; i < 4; i++) {
    B[i + 1] = X[i];
}


रिजेंडेल विरूद्ध सर्प

रिजेंडेल की आकार के आधार पर दस, बारह या चौदह राउंड के साथ एक प्रतिस्थापन-रैखिक परिवर्तन नेटवर्क है और स्वतंत्र रूप से निर्दिष्ट 128 बिट्स, 192 बिट्स या 256 बिट्स के प्रमुख आकारों के साथ सर्पेंट प्रतिस्थापन-क्रमपरिवर्तन नेटवर्क है जिसमें एक अनुकूलित कार्यान्वयन को सरल बनाने के लिए बत्तीस राउंड और एक प्रारंभिक और अंतिम क्रमचय है। रिजेंडेल में राउंड कार्य में तीन भाग होते हैं। गैर-रेखीय परत, रैखिक मिश्रण परत और की -मिश्रण एक्सओआर परत। सर्पेंट में राउंड फ़ंक्शन में ही 4 × 4 S-बॉक्स के की -मिश्रण एक्सओआर बत्तीस समानांतर अनुप्रयोग होते हैं और अंतिम दौर को छोड़कर रैखिक परिवर्तन होता है, जिसमें अन्य की -मिश्रण एक्सओआर रैखिक परिवर्तन को बदल देता है । रिजेंडेल में नॉनलाइनियर परत 8 × 8 S-बॉक्स का उपयोग करती है जबकि सर्पेंट आठ अलग-अलग 4 × 4 S-बॉक्स का उपयोग करता है। 32 राउंड का अर्थ है कि रिजेंडेल की तुलना में सर्पेंट के पास उच्च सुरक्षा सीमा है; चूँकि, 10 राउंड के साथ रिजेंडेल छोटे ब्लॉकों के लिए तेज़ और सरल है।[8] इसलिए, एईएस प्रतियोगिता में रिजेंडेल को विजेता के रूप में चुना गया था।

सर्पेंट-0 विरूद्ध सर्पेंट-1

मूल सर्पेंट, सर्पेंट-0, फास्ट सॉफ्टवेयर एन्क्रिप्शन पर 5वीं कार्यशाला में प्रस्तुत किया गया था, किन्तु सर्पेंट-1 का कुछ सीमा तक संशोधित संस्करण एईएस प्रतियोगिता में प्रस्तुत किया गया था। एईएस प्रस्तुतियाँ पेपर परिवर्तनों पर चर्चा करता है, जिसमें की -निर्धारण अंतर सम्मलित हैं।

सुरक्षा

एक्सएसएल अटैक , यदि प्रभावी होता है, तो सर्पेंट को दुर्बल कर देगा (चूंकि उतना नहीं जितना कि यह रिजेंडेल को दुर्बल करेगा, जो उन्नत एन्क्रिप्शन मानक बन गया)। चूंकि, कई क्रिप्टो विश्लेषकों का मानना ​​है कि एक बार कार्यान्वयन संबंधी विचारों को ध्यान में रखा जाता है तो एक्सएसएल अटैक क्रूर बल के अटैक से अधिक महंगा होगा।

2000 में, कोहनो एट अल द्वारा पेपर। सर्पेंट के 32 राउंड में से 6 के विरुद्ध बीच-बीच में अटैक और सर्पेंट में 32 राउंड में से 9 के विरुद्ध प्रवर्धित प्रतीगामी अटैक प्रस्तुत करता है।[9]

एली बिहाम, ऑर डंकलमैन और नाथन केलर द्वारा 2001 का अटैक रेखीय क्रिप्ट अटैक प्रस्तुत करता है जो 2118 ज्ञात सादे पाठ के साथ सर्पेंट -128 के 32 राउंड में से 10 को तोड़ता है और 289 समय और सर्पेंट -192/256 के 11 राउंड को 2118 ज्ञात सादे पाठ और 2187 समय के साथ तोड़ता है।[10]

2009 के पेपर में देखा गया है कि सर्पेंट S-बॉक्स का गैर-रैखिक क्रम 3 नहीं था जैसा कि डिजाइनरों द्वारा प्रमाणित किया गया था।[7]

होंगजुन वू, हुआक्सिओनग वांग और फुओंग हा गुयेन द्वारा 2011 के एक अटैक में, रैखिक क्रिप्टैनालिसिस का उपयोग करते हुए, 2116 ज्ञात सादे पाठ, 2107.5 समय और 2104 मेमोरी के साथ सर्पेंट-128 के 11 राउंड को तोड़ता है ।[11]

इसी पेपर में दो अटैक का भी वर्णन है जो सर्प-256 के 12 चक्कर तोड़ते हैं। पहले के लिए 2118 ज्ञात सादे पाठ, 2228.8 समय और 2228 मेमोरी की आवश्यकता होती है। दूसरे अटैक के लिए 2116 ज्ञात सादे पाठ और 2121 मेमोरी की आवश्यकता होती है किन्तु इसके लिए 2237.5 समय की भी आवश्यकता होती है।

यह भी देखें

  • टाइगर - एक ही लेखक द्वारा हैश फ़ंक्शन

फुटनोट्स

  1. 1.0 1.1 Nechvatal, J.; Barker, E.; Bassham, L.; Burr, W.; Dworkin, M.; Foti, J.; Roback, E. (May 2001). "उन्नत एन्क्रिप्शन मानक (एईएस) के विकास पर रिपोर्ट". Journal of Research of the National Institute of Standards and Technology. 106 (3): 511–577. doi:10.6028/jres.106.023. ISSN 1044-677X. PMC 4863838. PMID 27500035.
  2. "नागिन होम पेज".{{cite web}}: CS1 maint: url-status (link)
  3. 3.0 3.1 3.2 3.3 3.4 3.5 Ross J. Anderson (23 October 2006). "Serpent: A Candidate Block Cipher for the Advanced Encryption Standard". University of Cambridge Computer Laboratory. Retrieved 14 January 2013.
  4. "नागिन.pdf" (PDF). Retrieved 25 April 2022.
  5. Serpent Holds the Key to Internet Security – Finalists in world-wide encryption competition announced (1999)
  6. SERPENT – A Candidate Block Cipher for the Advanced Encryption Standard "Serpent is now completely in the public domain, and we impose no restrictions on its use. This was announced on the 21st August at the First AES Candidate Conference. The optimised implementations in the submission package are now under the General Public License (GPL), although some comments in the code still say otherwise. You are welcome to use Serpent for any application. If you do use it, we would appreciate it if you would let us know!" (1999)
  7. 7.0 7.1 7.2 7.3 Bhupendra Singh; Lexy Alexander; Sanjay Burman (2009). "On Algebraic Relations of Serpent S-boxes" (PDF). {{cite journal}}: Cite journal requires |journal= (help)
  8. Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall. Niels Fergusonk; Tadayoshi Kohno; Mike Stay (2000). "The Twofish Team's Final Comments on AES Selection" (PDF). {{cite journal}}: Cite journal requires |journal= (help)
  9. Tadayoshi Kohno; John Kelsey & Bruce Schneier (2000). "Preliminary Cryptanalysis of Reduced-Round Serpent". {{cite journal}}: Cite journal requires |journal= (help)
  10. Eli Biham, Orr Dunkelman & Nathan Keller (2001). "Linear Cryptanalysis of Reduced Round Serpent". FSE 2001. CiteSeerX 10.1.1.78.6148. {{cite journal}}: Cite journal requires |journal= (help)
  11. Huaxiong Wang, Hongjun Wu & Phuong Ha Nguyen (2011). "Improving the Algorithm 2 in Multidimensional Linear Cryptanalysis" (PDF). सूचना सुरक्षा और गोपनीयता. Lecture Notes in Computer Science. Vol. 6812. ACISP 2011. pp. 61–74. doi:10.1007/978-3-642-22497-3_5. ISBN 978-3-642-22496-6.

अग्रिम पठन


बाहरी संबंध

  • No URL found. Please specify a URL here or add one to Wikidata.
  • 256 bit ciphers – SERPENT Reference implementation and derived code