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

From Vigyanwiki
Serpent
Serpent-linearfunction.svg
Serpent's linear mixing stage
General
DesignersRoss Anderson, Eli Biham, Lars Knudsen
First published1998-08-21
Derived fromSquare
CertificationAES finalist
Cipher detail
Key sizes128, 192 or 256 bits
Block sizes128 bits
StructureSubstitution–permutation network
Rounds32
Best public cryptanalysis
All publicly known attacks are computationally infeasible, and none of them affect the full 32-round Serpent. A 2011 attack breaks 11 round Serpent (all key sizes) with 2116 known plaintexts, 2107.5 time and 2104 memory (as described in[1]). The same paper also describes two attacks which break 12 rounds of Serpent-256. The first requires 2118 known plaintexts, 2228.8 time and 2228 memory. The other attack requires 2116 known plaintexts and 2121 memory but also requires 2237.5 time.

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

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

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

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

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

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

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

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

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


कुंजी अनुसूची छद्म कोड

#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;
			}
		}
	}
}


एस-बॉक्स

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

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

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


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

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

प्रारंभिक क्रमचय 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) )


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

एक्सओआर, एस-बॉक्स, बिट शिफ़्ट बाएँ और बिट रोटेट लेफ्ट ऑपरेशंस से मिलकर बनता है। ये ऑपरेशन 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 एस-बॉक्स के कुंजी-मिश्रण एक्सओआर बत्तीस समानांतर अनुप्रयोग होते हैं और अंतिम दौर को छोड़कर रैखिक परिवर्तन होता है, जिसमें अन्य कुंजी-मिश्रण एक्सओआर रैखिक परिवर्तन को बदल देता है । रिजेंडेल में नॉनलाइनियर परत 8 × 8 एस-बॉक्स का उपयोग करती है जबकि सर्पेंट आठ अलग-अलग 4 × 4 एस-बॉक्स का उपयोग करता है। 32 राउंड का मतलब है कि रिजेंडेल की तुलना में सर्पेंट के पास उच्च सुरक्षा सीमा है; चूँकि, 10 राउंड के साथ रिजेंडेल छोटे ब्लॉकों के लिए तेज़ और सरल है।[9] इसलिए, एईएस प्रतियोगिता में रिजेंडेल को विजेता के रूप में चुना गया था।

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

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

सुरक्षा

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

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

एली बिहाम, ऑर डंकलमैन और नाथन केलर द्वारा 2001 का आक्रमण रेखीय क्रिप्ट विश्लेषण आक्रमण प्रस्तुत करता है जो 2 के साथ सर्पेंट-128 के 32 राउंड में से 10 को तोड़ता है।118 ज्ञात सादे पाठ और 289 समय, और सर्पेंट-192/256 के 11 चक्कर 2 के साथ118 ज्ञात सादे पाठ और 2187 समय।[11] 2009 के पेपर में देखा गया है कि सर्पेंट एस-बॉक्स का गैर-रैखिक क्रम 3 नहीं था जैसा कि डिजाइनरों द्वारा दावा किया गया था।[8] होंगजुन वू, हुआक्सिओनग वांग और फुओंग हा गुयेन द्वारा 2011 का आक्रमण, रैखिक क्रिप्ट विश्लेषण का उपयोग करते हुए, 2 के साथ सर्पेंट -128 के 11 राउंड को तोड़ता है116 ज्ञात प्लेनटेक्स्ट, 2107.5 समय और 2104 मेमोरी।[1] इसी पेपर में दो हमलों का भी वर्णन है जो सर्पेंट-256 के 12 चक्कर तोड़ते हैं। पहले 2 की आवश्यकता है118 ज्ञात सादा पाठ, 2228.8 समय और 2228 मेमोरी। दूसरे आक्रमण के लिए 2 की आवश्यकता है116 ज्ञात सादे पाठ और 2121 मेमोरी किन्तु इसके लिए 2 की भी आवश्यकता होती है237.5 समय।

यह भी देखें

फुटनोट्स

  1. 1.0 1.1 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.
  2. 2.0 2.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.
  3. "नागिन होम पेज".{{cite web}}: CS1 maint: url-status (link)
  4. 4.0 4.1 4.2 4.3 4.4 4.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.
  5. "नागिन.pdf" (PDF). Retrieved 25 April 2022.
  6. Serpent Holds the Key to Internet Security – Finalists in world-wide encryption competition announced (1999)
  7. 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)
  8. 8.0 8.1 8.2 8.3 Bhupendra Singh; Lexy Alexander; Sanjay Burman (2009). "On Algebraic Relations of Serpent S-boxes" (PDF). {{cite journal}}: Cite journal requires |journal= (help)
  9. 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)
  10. Tadayoshi Kohno; John Kelsey & Bruce Schneier (2000). "Preliminary Cryptanalysis of Reduced-Round Serpent". {{cite journal}}: Cite journal requires |journal= (help)
  11. 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)

अग्रिम पठन


बाहरी संबंध

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