GOST 28147 क्रिप्टोग्राफ़िक रूपांतरण एल्गोरिदम

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

1 एल्गोरिथम का ब्लॉक आरेख क्रिप्टोग्राफ़िक रूपांतरण 1

2 आसान प्रतिस्थापन मोड 4

3 गामा मोड 8

4 गामा मोड के साथ प्रतिक्रिया 11

5 सिमुलेशन इन्सर्ट जेनरेशन मोड 14

परिशिष्ट 1 इस मानक में प्रयुक्त शब्द और उनकी परिभाषाएँ 16

परिशिष्ट 2 स्थिरांक C1, C2 18 के मान

परिशिष्ट 3 योजनाएँ सॉफ्टवेयर कार्यान्वयनक्रिप्टोग्राफ़िक एल्गोरिदम

परिवर्तन. 19

परिशिष्ट 4 योग मॉड्यूलो 2 32 और मॉड्यूलो (2 32 -I) 25 के लिए नियम

राज्य मानक

यूएसएसआर संघ

सूचना प्रसंस्करण प्रणाली. क्रिप्टोग्राफ़िक सुरक्षा

क्रिप्टोग्राफ़िक रूपांतरण एल्गोरिदम

परिचय दिनांक 07/01/90

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

क्रिप्टोग्राफ़िक ट्रांसफ़ॉर्मेशन एल्गोरिदम हार्डवेयर या सॉफ़्टवेयर कार्यान्वयन के लिए डिज़ाइन किया गया है, क्रिप्टोग्राफ़िक आवश्यकताओं को पूरा करता है और, इसकी क्षमताओं में, संरक्षित जानकारी की गोपनीयता की डिग्री पर प्रतिबंध नहीं लगाता है।

यह मानक उपयोग करने वाले संगठनों, उद्यमों और संस्थानों के लिए अनिवार्य है क्रिप्टोग्राफ़िक सुरक्षाकंप्यूटर नेटवर्क में, अलग-अलग कंप्यूटर सिस्टम में या कंप्यूटर में संग्रहीत और प्रसारित डेटा।

इस मानक में प्रयुक्त शब्द और उनकी परिभाषाएँ परिशिष्ट 1 में दी गई हैं।

I. क्रिप्टोग्राफ़िक ट्रांसफ़ॉर्मेशन एल्गोरिदम का ब्लॉक आरेख

1.1. क्रिप्टोग्राफ़िक ट्रांसफ़ॉर्मेशन एल्गोरिदम (क्रिप्टो-स्कीम) के ब्लॉक आरेख में शामिल हैं (चित्र 1 देखें):

आधिकारिक प्रकाशन ★

एक 256-बिट कुंजी भंडारण उपकरण (KSD), जिसमें आठ 32-बिट ड्राइव (X0, Xt. X2, A3 L4, X$, X6, Xu) शामिल हैं; चार 32-बिट ड्राइव (/V (, N 2, Nj, /V 4);

पुनरुत्पादन निषिद्ध है

© स्टैंडर्ड्स पब्लिशिंग हाउस, 1989 © आईपीके स्टैंडर्ड्स पब्लिशिंग हाउस, 1996

दो 32-बिट ड्राइव L/$,) जिनमें स्थायी फिलिंग C 2, C\ दर्ज है

दो 32-बिट मोडुलो 2 32 योजक (एसएम|, एसएल/3);

बिटवाइज़ समेशन मॉड्यूलो 2 (एसएल/2) का 32-बिट योजक;

32-बिट मॉड्यूलो योजक (2 32 - 1) (एसएल/4);

मॉड्यूलो 2(एसएल/5) योजक, एसएल/$ योजक की क्षमता पर कोई प्रतिबंध नहीं है;

प्रतिस्थापन ब्लॉक (ए);

सबसे महत्वपूर्ण अंक (आर) की ओर चक्रीय बदलाव ग्यारह कदम दर्ज करता है।

1.2. प्रतिस्थापन ब्लॉक ए" में आठ प्रतिस्थापन नोड्स ए'जे शामिल हैं,

A 2, A'z, K 4, A5, A7, A 8 प्रत्येक 64-बिट मेमोरी के साथ। डाक

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

1.3. बाइनरी वैक्टर को जोड़ते और चक्रीय रूप से स्थानांतरित करते समय, सबसे महत्वपूर्ण बिट्स को बड़ी संख्या वाले स्टोरेज डिवाइस के बिट्स माना जाता है।

1.4. कुंजी लिखते समय (I", W 2 ..., W q e (0,1), d = N256, in

KZU मान W\ को ड्राइव Xq के i-वें अंक में दर्ज किया गया है, मान W 2 को ड्राइव L# के दूसरे अंक में दर्ज किया गया है, ..., मान W^ 2 को ड्राइव के 32वें अंक में दर्ज किया गया है ड्राइव Xq; मान W33 को ड्राइव के पहले अंक में दर्ज किया गया है X\ y, मान को ड्राइव के दूसरे अंक में दर्ज किया गया है X\ y..., मान W M को ड्राइव के 32वें अंक में दर्ज किया गया है मान W 6 5 को ड्राइव के पहले अंक X 2 आदि में दर्ज किया जाता है, मान 1U 2 5b को Xy ड्राइव के 32वें बिट में दर्ज किया जाता है।

1.5. जानकारी को दोबारा लिखते समय, एक ड्राइव (एडर) के पी-वें अंक की सामग्री को दूसरे ड्राइव (एडर) के पी-वें अंक में फिर से लिखा जाता है।

1.6. भंडारण उपकरणों /V 6, /V5 के निरंतर भरने वाले Cj, C 2 (स्थिरांक) के मान परिशिष्ट 2 में दिए गए हैं।

1.7. KZU को भरने का निर्धारण करने वाली कुंजियाँ और प्रतिस्थापन ब्लॉक K की तालिकाएँ गुप्त तत्व हैं और निर्धारित तरीके से आपूर्ति की जाती हैं।

प्रतिस्थापन ब्लॉक K की तालिकाओं को भरना कंप्यूटर नेटवर्क के लिए सामान्य दीर्घकालिक कुंजी तत्व है।

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

1.8. क्रिप्टो योजना चार प्रकार के कार्य प्रदान करती है: सरल प्रतिस्थापन मोड में डेटा का एन्क्रिप्शन (डिक्रिप्शन); गामा मोड में डेटा का एन्क्रिप्शन (डिक्रिप्शन);

फीडबैक के साथ गामा मोड में डेटा का एन्क्रिप्शन (डिक्रिप्शन);

अनुकरणात्मक सम्मिलन पीढ़ी मोड।

क्रिप्टोग्राफ़िक ट्रांसफ़ॉर्मेशन एल्गोरिदम के सॉफ़्टवेयर कार्यान्वयन की योजनाएँ परिशिष्ट 3 में दी गई हैं।

2. आसान परिवर्तन मोड

2.1. सरल प्रतिस्थापन मोड का उपयोग करके स्पष्ट डेटा एन्क्रिप्ट करना

2.1.1. सरल प्रतिस्थापन मोड में एन्क्रिप्शन एल्गोरिथ्म को लागू करने वाली क्रिप्टोस्कीम को चित्र 2 में दिखाया गया रूप होना चाहिए।

एन्क्रिप्ट किए जाने वाले खुले डेटा को 64 बिट्स के ब्लॉक में विभाजित किया गया है। किसी भी ब्लॉक का इनपुट T() = (D|(0), ^(O), ..., d 3 1(0), i 32 (0), £|(0), b 2 (0) y. , Z> 32 (0)) बाइनरी जानकारी को ड्राइव N\ और N 2 में डाला जाता है ताकि मान D|(0) को N| के पहले बिट में दर्ज किया जाए, मान a 2 (0) दर्ज किया जाए। दूसरे बिट/वीजे, आदि में, मान i 32 (0) को 32वें अंक iVj में दर्ज किया जाता है; मान />|(0) दर्ज किया गया है

पहला अंक एल/2, मान बी 2 (0) दूसरे अंक एन 2 में दर्ज किया जाता है, आदि, मान >> 32 (0) 32वें अंक एन 2 में दर्ज किया जाता है। परिणामस्वरूप, स्थिति प्राप्त होती है (i 32 (0), i 3 |(0), ..., और 2 (0) y<7|(0)) накопителя yVj и состояние (/>32 (0), बी 2 1(0), ... , />|(0)) भंडारण इकाई एन 2।

2.1.2. कुंजी के 256 बिट्स आरसीयू में दर्ज किए जाते हैं। आठ 32-बिट ड्राइव Aq, X\ t ..., Xj की सामग्री इस प्रकार है:

^0 = (^32^3.....

*1 =(^64^63, . ^34^33)

*7 = (^56> ^255. ..., आई/226, ^ 225)

2.1.3. सरल प्रतिस्थापन मोड में सादे डेटा के 64-बिट ब्लॉक के लिए एन्क्रिप्शन एल्गोरिदम में 32 चक्र होते हैं।

पहले चक्र में, स्टोरेज की प्रारंभिक फिलिंग को स्टोरेज Xq की फिलिंग के साथ ऐडर CM\ में मॉड्यूलो 2 32 को जोड़ दिया जाता है, जबकि स्टोरेज Nj की फिलिंग को बनाए रखा जाता है।

योग के परिणाम को प्रतिस्थापन ब्लॉक K में परिवर्तित किया जाता है और परिणामी वेक्टर को रजिस्टर /? के इनपुट पर भेजा जाता है, जहां इसे चक्रीय रूप से ग्यारह चरणों में सबसे महत्वपूर्ण अंकों की ओर स्थानांतरित किया जाता है। शिफ्ट के परिणाम को ड्राइव yV 2 की 32-बिट फिलिंग के साथ एडर सीएम 2 में बिट मोडुलो 2 द्वारा संक्षेपित किया गया है। सीएम 2 में प्राप्त परिणाम को पुरानी फिलिंग एन| के साथ एन\% में लिखा गया है एन 2 को पुनः लिखा गया। पहला चक्र समाप्त होता है.

इसके बाद के चक्र इसी तरह से किए जाते हैं

दूसरे चक्र में, X\ भरना RCU से पढ़ा जाता है, तीसरे चक्र में RCU से पढ़ा जाता है

भरने वाले X2 को पढ़ा जाता है, आदि, 8वें चक्र में भरने वाले Xj को RCU से पढ़ा जाता है। 9 से 16 तक के चक्रों में, साथ ही 17 से 24 तक के चक्रों में, आरसीयू से भराई उसी क्रम में पढ़ी जाती है:

25वें से 32वें तक के अंतिम आठ चक्रों में, आरसीडी भरण को पढ़ने का क्रम उलट जाता है:

नरक, नरक, नरक, नरक।

इस प्रकार, 32 चक्रों में एन्क्रिप्ट करते समय, भंडारण भरण के चयन का निम्नलिखित क्रम किया जाता है:

नरक, ^2,^),^4>^5,^6"^7, नरक, ^2,^3"^4,^5,-^6,^7, नरक, नरक, नरक, नरक, नरक , नरक, नरक, नरक।

32वें चक्र में, योजक SL/ 2 से परिणाम ड्राइव CU 2 में दर्ज किया जाता है, और पुरानी फिलिंग ड्राइव N\ में संग्रहीत की जाती है।

एन| भरने के एन्क्रिप्शन के 32वें चक्र के बाद प्राप्त हुआ और N2 सादे डेटा ब्लॉक के अनुरूप एन्क्रिप्टेड डेटा ब्लॉक हैं।

2.1 4 सरल प्रतिस्थापन मोड में एन्क्रिप्शन समीकरणों का रूप है:

जे*सीआर> "(

मैं बी(/) = ए(/~ मैं)

y = I -24 पर;

जी"

\bO) - ए ओ - ओ एट / 8* 25 -जी 31; ए(32) = ए(31)

ए (32) = (डी (31) एफएफएल एक्स 0)केआरजी> बी (31)

जहां d(0) = (a 32 (0), «з|(0), ... , Д|(0)) पहले एन्क्रिप्शन चक्र से पहले N\ की प्रारंभिक फिलिंग है;

6(0) = (632(0), 63जे(0), ... , 6जे(0)) - पहले एन्क्रिप्शन चक्र से पहले प्रारंभिक भरना /यू 2;

a(j) = (032(7), 0з|(/) e... , 0|(/)) - y-वें एन्क्रिप्शन चक्र के बाद, नियंत्रण इकाई को भरना;

b(j) = (6з 2 (/), 63j(/"), ... , 6|(/)) - yth एन्क्रिप्शन चक्र के बाद /V 2 भरना, y = 032।

चिन्ह φ का अर्थ है 32-बिट वैक्टर मॉड्यूलो 2 का बिटवाइज़ योग।

चिह्न Ш का अर्थ है 32-बिट वैक्टर मॉड्यूलो 2 32 का योग। योग मॉड्यूल 2 32 के नियम परिशिष्ट 4 में दिए गए हैं;

/? - उच्चतम अंकों की ओर ग्यारह चरणों की चक्रीय पारी का संचालन, यानी।

^(जी 32"ओ|>जी 30>जी 29>जी 28>जी 27>जी 26"जी 25>जी 24>जी 23'जी 22"जी 2बी जी 20>"जी 2* जी |)~

= (जी 21" जी 20> - "जी 2* जी 1 * जी 32>जी31 *जीजेडओ" जी 29* जी 28*, 27ई"26ई/"25>, 24>जी23", 22)*

2.1.5. एन्क्रिप्टेड डेटा Tsh का 64-बिट ब्लॉक ड्राइव L^, VU 2 से निम्नलिखित क्रम में आउटपुट होता है: ड्राइव L7| के पहले, दूसरे, ..., 32वें बिट से, फिर पहले, दूसरे, ... से। , स्टोरेज का 32वां बिट W 2, यानी।

टी डब्ल्यू - (ए,<32),0 2 (32),0 32 (32), 6,(32), 6 2 <32),6 32 <32».

सरल प्रतिस्थापन मोड में खुले डेटा के शेष ब्लॉक उसी तरह एन्क्रिप्ट किए जाते हैं।

2.2. सरल प्रतिस्थापन मोड का उपयोग करके एन्क्रिप्टेड डेटा को डिक्रिप्ट करना

2.2.1. सरल प्रतिस्थापन मोड में डिक्रिप्शन एल्गोरिथ्म को लागू करने वाली क्रिप्टोस्कीम का फॉर्म एन्क्रिप्शन के समान ही होता है (Chsrt.2 देखें)। एन्क्रिप्शन के लिए उपयोग की जाने वाली एक ही कुंजी के 256 बिट्स को आरसीयू में दर्ज किया जाता है। डिक्रिप्ट किए जाने वाले एन्क्रिप्टेड डेटा को 64 बिट्स के ब्लॉक में विभाजित किया गया है, प्रत्येक ब्लॉक को दर्ज करें

टी डब्ल्यू - (0,(32),o 2 (32), ..., 0 32 (32), 6,(32), 6 2 (32), ..., 6 32 (32))

संचायक L' में, और N 2 का उत्पादन किया जाता है ताकि मान dj(32) को पहले अंक /V में दर्ज किया जाए, मान o 2 (32) को दूसरे अंक /V में दर्ज किया जाए, आदि, मान a 32 (32) को 32वें अंक /वी में दर्ज किया गया है; मान 6,(32) को एन2 के पहले अंक में दर्ज किया जाता है, आदि, मान 6 32 (32) को एन2 के 32वें अंक में दर्ज किया जाता है।

2.2.2. डिक्रिप्शन खुले डेटा के एन्क्रिप्शन के समान एल्गोरिथ्म के अनुसार किया जाता है, इस अंतर के साथ कि ड्राइव Xq, X\y..., Xj की फिलिंग को निम्नलिखित क्रम में डिक्रिप्शन चक्रों में RCU से पढ़ा जाता है:

नरक, नरक 3, नरक, नरक, नरक, नरक, नरक, नरक 0,

नरक 6, नरक 4, नरक 2, नरक, नरक, नरक, नरक 2, नरक।

2.2.3. डिक्रिप्शन समीकरण इस प्रकार दिखते हैं:

जी डी (32 - /) = (डी (32 - / + 1) एसएचएलजी,.,) *एलएफ6(32 - / + 1) बी (32 - /) = डी (32 - / + 1) एट, / = 1+8;

I o(32- /) = (a(32-/M)SHDG (32 _ /)(tod8))KLFL(32./M) |6(32-/) = d (32 - / + 1)

/= 9 + 31 पर;

बी(0) = (ए (1) ШДГо) ОФй(1)

2.2.4. ऑपरेशन के 32 चक्रों के बाद प्राप्त डब्ल्यू और एन 2 ड्राइव खुले डेटा का एक ब्लॉक बनाते हैं।

फिर = (fli(O), a 2 (0), ... , Az 2 (0)" 6, (0), 6 2 (0), ... , 6 32 (0)), के अनुरूप एन्क्रिप्टेड डेटा का ब्लॉक, जबकि ब्लॉक 7о का मान o,(0) पहली बिट yV की सामग्री से मेल खाता है, मान 02(0) से मेल खाता है

पी. 8 गोस्ट 28147-89

दूसरे बिट N\ आदि की सामग्री से मेल खाता है, मान Dz2(0) 32वें बिट N\ की सामग्री से मेल खाता है; मान 6j(0) पहले बिट की सामग्री से मेल खाता है; मान ^(0) दूसरे बिट N2 की सामग्री से मेल खाता है, आदि, मान £зг(0) 32वें बिट N2 की सामग्री से मेल खाता है -

एन्क्रिप्टेड डेटा के शेष ब्लॉक उसी तरह डिक्रिप्ट किए जाते हैं।

2.3. 64-बिट ब्लॉक जी 0 के सरल प्रतिस्थापन के मोड में एन्क्रिप्शन एल्गोरिदम को ए वाई द्वारा दर्शाया गया है यानी।

ए (टी 0) = ए (ए (0), बी (0)) = (ए (32), बी (32)) = टी डब्ल्यू।

2.4. सरल प्रतिस्थापन मोड का उपयोग केवल खंड 1.7 में दिए गए मामलों में डेटा को एन्क्रिप्ट (डिक्रिप्ट) करने के लिए किया जा सकता है।

3. गेमिंग मोड

3.1. गामा मोड में खुले डेटा को एन्क्रिप्ट करना

3.1.1. गामा मोड में एन्क्रिप्शन एल्गोरिथ्म को लागू करने वाली क्रिप्टोस्कीम का रूप चित्र 3 में दिखाया गया है।

खुला डेटा, 64-बिट ब्लॉक T\)\ 7), 2) ..., 7)) m “, 1 7[) M) में विभाजित, योजक SL/ में बिटवाइज़ योग मॉड्यूलो 2 द्वारा गामा मोड में एन्क्रिप्ट किया गया है। 5 सिफर गामा Гш के साथ, जो 64 बिट्स के ब्लॉक में निर्मित होता है, अर्थात।

जी _/एल1) आर2) एलएम-1) एलएम)\

"बीमार वी 1 डब्ल्यू ई * डब्ल्यू * » " श » " * * * " 111 /»

जहां एम एन्क्रिप्टेड डेटा की मात्रा से निर्धारित होता है।

Tjj) - Yth 64-बिट ब्लॉक, /“ ब्लॉक 7J) M) में बाइनरी अंकों की संख्या 64 से कम हो सकती है, जबकि ब्लॉक Г\^] से एन्क्रिप्शन के लिए उपयोग नहीं किए जाने वाले सिफर सरगम ​​​​के हिस्से को छोड़ दिया जाता है।

3.1.2. कुंजी के 256 बिट्स आरसीयू में दर्ज किए जाते हैं। एक 64-बिट बाइनरी अनुक्रम (सिंक संदेश) S = (5*1, S 2, ..., 5^4) को ड्राइव iVj, N 2 में पेश किया गया है, जो बाद की पीढ़ी के लिए इन ड्राइव की प्रारंभिक फिलिंग है। सिफर गामा के एम-ब्लॉक का। सिंक संदेश jV| में दर्ज किया गया है और L^ताकि मान 5[ VU के पहले अंक में दर्ज किया जाए), मान S2 दूसरे अंक N\ में दर्ज किया जाए, आदि, मान ^32वें अंक 7V| में दर्ज किया जाए; मान S33 को पहले अंक N2 में दर्ज किया जाता है, मान 4S34 को दूसरे अंक N2 में दर्ज किया जाता है, आदि, मान को 32वें अंक N2 में दर्ज किया जाता है।

3.1.3. ड्राइव /वीजे और एन 2 (सिंक संदेश.5) की प्रारंभिक फिलिंग को सरल प्रतिस्थापन मोड के अनुसार एन्क्रिप्ट किया गया है

एक जाने-माने शोधकर्ता, बीजगणितीय क्रिप्टोएनालिसिस के संस्थापक, निकोलस कोर्टोइस का दावा है कि GOST ब्लॉक सिफर, जो जल्द ही एक अंतरराष्ट्रीय मानक बनने वाला था, वास्तव में क्रैक हो गया है और भविष्य में कई प्रकाशनों की अपेक्षा करता है जो अस्थिरता के बारे में उनके विचारों को विकसित करेंगे। इस एल्गोरिथम का.

इस कार्य के संक्षिप्त अंश निम्नलिखित हैं, जिन्हें अंतरराष्ट्रीय मानकीकरण के बीच एक खतरनाक हमले के रूप में माना जा सकता है (लेखक एईएस के संबंध में इसी तरह के अतिशयोक्ति के लिए जाने जाते थे, लेकिन उनके काम का क्रिप्टोएनालिसिस पर एक बड़ा सैद्धांतिक प्रभाव था, लेकिन इसका नेतृत्व नहीं किया गया) एईएस पर ही व्यावहारिक हमलों के लिए)। लेकिन शायद यह "प्लेन डाइव इन अ टेलस्पिन" चरण की शुरुआत के बारे में एक वास्तविक चेतावनी है, जो राष्ट्रीय एन्क्रिप्शन मानक के पतन के साथ समाप्त हो सकती है, जैसा कि SHA-1 हैशिंग एल्गोरिदम और "वास्तविक" के मामले में था। MD5 हैशिंग एल्गोरिदम.

GOST 28147-89 को 1989 में मानकीकृत किया गया और यह गोपनीय जानकारी की सुरक्षा के लिए पहला आधिकारिक मानक बन गया, लेकिन सिफर विनिर्देश बंद रहा। 1994 में, मानक को अवर्गीकृत किया गया, प्रकाशित किया गया और अंग्रेजी में अनुवादित किया गया। एईएस (और डीईएस के विपरीत) के अनुरूप, GOST को रूसी मानक में निर्दिष्ट तरीके के अनुसार, बिना किसी प्रतिबंध के वर्गीकृत जानकारी की रक्षा करने की अनुमति है। वह। GOST DES का एनालॉग नहीं है, बल्कि तीन स्वतंत्र कुंजियों या AES-256 के साथ 3-DES का प्रतिस्पर्धी है। यह स्पष्ट है कि GOST एक काफी गंभीर सिफर है जो सैन्य मानदंडों को पूरा करता है, जिसे सबसे गंभीर अनुप्रयोगों को ध्यान में रखकर बनाया गया है। रूसी बैंकों द्वारा उपयोग किए जाने वाले अनुप्रयोगों के आधार पर GOST S-बॉक्स के कम से कम दो सेटों की पहचान की गई है। इन बैंकों को सैकड़ों शाखाओं के साथ गुप्त संचार करने और अरबों डॉलर को धोखाधड़ी वाली चोरी से बचाने की ज़रूरत है।

GOST एक साधारण फिस्टेल संरचना वाला एक ब्लॉक सिफर है, जिसमें 64 बिट्स का ब्लॉक आकार, 256-बिट कुंजी और 32 राउंड होते हैं। प्रत्येक राउंड में एक मॉड्यूलो 2^32 कुंजी जोड़, आठ 4-बिट एस-बॉक्स का एक सेट और एक साधारण 11-बिट राउंड शिफ्ट होता है। GOST की एक विशेषता एस-ब्लॉक को गुप्त रूप से संग्रहीत करने की क्षमता है, जिसे दूसरी कुंजी के रूप में सोचा जा सकता है, जो प्रभावी कुंजी सामग्री को 610 बिट्स तक बढ़ाती है। एस-बॉक्स का एक सेट 1994 में GOST-R 34.11-94 हैश फ़ंक्शन विनिर्देश के हिस्से के रूप में प्रकाशित किया गया था और, जैसा कि श्नीयर ने लिखा था, रूसी संघ के सेंट्रल बैंक द्वारा उपयोग किया गया था। इसे RFC4357 मानक में "id-GostR3411-94-CryptoProParamSet" भाग में भी शामिल किया गया था। श्नीयर की पुस्तक के अंत में (एस-बॉक्स क्रम में) स्रोत कोड में एक त्रुटि थी। मूल रूसी मूल का सबसे सटीक संदर्भ कार्यान्वयन अब ओपनएसएसएल लाइब्रेरी में पाया जा सकता है। यदि कहीं गुप्त एस-बॉक्स का उपयोग किया जाता है, तो उन्हें सॉफ़्टवेयर कार्यान्वयन और माइक्रो-सर्किट से निकाला जा सकता है, जिस पर संबंधित कार्य प्रकाशित किए गए हैं।

GOST एक गंभीर प्रतियोगी है

अपने बहुत बड़े कुंजी आकार के अलावा, GOST की AES और अन्य समान एन्क्रिप्शन प्रणालियों की तुलना में निष्पादन लागत काफी कम है। वास्तव में, इसकी लागत एईएस से बहुत कम है, जिसके लिए सुरक्षा के काफी कम बताए गए स्तर के लिए चार गुना अधिक हार्डवेयर लॉजिक गेट की आवश्यकता होती है।

यह आश्चर्य की बात नहीं है कि GOST एक इंटरनेट मानक बन गया है, विशेष रूप से, यह ओपनएसएसएल और क्रिप्टो++ जैसी कई क्रिप्टो लाइब्रेरी में शामिल है, और अपने मूल देश के बाहर तेजी से लोकप्रिय हो रहा है। 2010 में, GOST को विश्वव्यापी एन्क्रिप्शन मानक के रूप में ISO मानकीकरण के लिए प्रस्तुत किया गया था। बहुत कम संख्या में एल्गोरिदम अंतरराष्ट्रीय मानक बनने में कामयाब रहे हैं। आईएसओ/आईईसी 18033-3:2010 निम्नलिखित एल्गोरिदम का वर्णन करता है: चार 64-बिट सिफर - टीडीईए, मिस्टी1, कास्ट-128, हाईट - और तीन 128-बिट सिफर - एईएस, कैमेलिया, सीड। GOST को समान ISO/IEC 18033-3 मानक में जोड़ने का प्रस्ताव है।

औद्योगिक मानकीकरण के इतिहास में पहली बार, हम लागत और सुरक्षा स्तर के बीच इष्टतमता के संदर्भ में ऐसे प्रतिस्पर्धी एल्गोरिदम से निपट रहे हैं। GOST के पीछे 20 वर्षों के क्रिप्टोएनालिसिस प्रयास हैं, और हाल तक इसकी सैन्य-ग्रेड सुरक्षा पर सवाल नहीं उठाया गया था।

जैसा कि लेखक को हाल ही में निजी पत्राचार के माध्यम से पता चला, अधिकांश देशों ने सिंगापुर में ISO वोट में GOST के खिलाफ मतदान किया, लेकिन इस वोट के परिणामों पर अभी भी ISO SC27 पूर्ण बैठक में विचार किया जाएगा, इसलिए GOST अभी भी मानकीकरण की प्रक्रिया में है इस कार्य के प्रकाशन का समय.

GOST पर विशेषज्ञ की राय

GOST के संबंध में उपलब्ध कोई भी जानकारी और साहित्य यह मानने का कोई कारण नहीं देता है कि सिफर असुरक्षित हो सकता है। इसके विपरीत, बड़ी कुंजी का आकार और बड़ी संख्या में राउंड GOST को पहली नज़र में दशकों के उपयोग के लिए उपयुक्त बनाते हैं।

मूर के नियम से परिचित कोई भी व्यक्ति समझता है कि, सिद्धांत रूप में, 256-बिट कुंजियाँ कम से कम 200 वर्षों तक सुरक्षित रहेंगी। GOST का व्यापक रूप से ब्लॉक सिफर विश्लेषण के क्षेत्र में जाने जाने वाले प्रमुख क्रिप्टोग्राफी विशेषज्ञों, जैसे श्नीयर, बिरयुकोव, डंकलमैन, वैगनर, कई ऑस्ट्रेलियाई, जापानी और रूसी वैज्ञानिकों, आईएसओ के क्रिप्टोग्राफी विशेषज्ञों द्वारा अध्ययन किया गया है, और सभी शोधकर्ताओं ने व्यक्त किया है कि यह ऐसा दिखता है यह कि यह सुरक्षित हो सकता है या होना चाहिए। यद्यपि यह व्यापक रूप से समझा जाता है कि GOST संरचना स्वयं बेहद कमजोर है, उदाहरण के लिए, DES की तुलना में, विशेष रूप से, प्रसार इतना अच्छा नहीं है, लेकिन यह हमेशा इस तथ्य के कारण होता है कि इसकी भरपाई बड़ी संख्या में राउंड द्वारा की जानी चाहिए (32), साथ ही मॉड्यूलो जोड़ द्वारा प्रदान की गई अतिरिक्त गैर-रैखिकता और प्रसार।

बिरयुकोव और वैगनर ने लिखा: "बड़ी संख्या में राउंड (32) और अच्छी तरह से अध्ययन किए गए फिस्टेल निर्माण, क्रमिक शैनन क्रमपरिवर्तन के साथ मिलकर, GOST सुरक्षा के लिए एक ठोस आधार प्रदान करते हैं।" उसी पेपर में हमने पढ़ा: "समय और प्रयास के काफी निवेश के बाद, खुले साहित्य में क्रिप्टोएनालिसिस मानक में कोई प्रगति नहीं हुई है।" इस प्रकार, ऐसे कोई महत्वपूर्ण हमले नहीं हुए जो यथार्थवादी परिदृश्य में कुंजी के डिक्रिप्शन या पुनर्प्राप्ति की अनुमति दे सकें जहां GOST का उपयोग कई अलग-अलग यादृच्छिक कुंजियों के साथ एन्क्रिप्शन में किया जाता है। इसके विपरीत, GOST में कमज़ोर कुंजियों पर हमले, लिंक की गई कुंजियों के साथ हमले, गुप्त एस-बॉक्स की पुनर्प्राप्ति पर हमले पर बहुत सारे काम हैं। क्रिप्टो 2008 में, इस सिफर पर आधारित हैश फ़ंक्शन का एक हैक प्रस्तुत किया गया था। सभी हमलों में, हमलावर के पास सामान्य स्वतंत्रता की तुलना में काफी अधिक स्वतंत्रता होती है। बेतरतीब ढंग से चयनित कुंजियों का उपयोग करके एन्क्रिप्शन के पारंपरिक अनुप्रयोगों में, GOST पर आज तक कोई गंभीर क्रिप्टोग्राफ़िक हमला नहीं पाया गया है, जिसे 2010 में सारांश वाक्यांश द्वारा व्यक्त किया गया था: "पिछले 20 वर्षों में क्रिप्टोएनालिस्टों के महत्वपूर्ण प्रयासों के बावजूद, GOST अभी तक नहीं किया गया है क्रैक्ड” (एक्सल पॉशमैन, सैन लिंग, और हुआक्सिओंग वांग: 650 GE GOST के लिए 256 बिट मानकीकृत क्रिप्टो, सीएचईएस 2010 में, एलएनसीएस 6225, पीपी. 219-233, 2010)।

रैखिक और विभेदक विश्लेषण GOST

श्नीयर की सुप्रसिद्ध पुस्तक में हमने पढ़ा: "विभेदक और रैखिक क्रिप्टोनालिसिस के विरुद्ध, GOST संभवतः DES की तुलना में अधिक मजबूत है।" GOST की सुरक्षा का मुख्य मूल्यांकन 2000 में गैबिडुलिन एट अल द्वारा दिया गया था। उनके परिणाम बहुत प्रभावशाली हैं: 2^256 के इच्छित सुरक्षा स्तर के साथ, GOST को रैखिक क्रिप्टोनालिसिस से बचाने के लिए पांच राउंड पर्याप्त हैं। इसके अलावा, जब एस-ब्लॉक को समान ब्लॉकों से प्रतिस्थापित किया जाता है और सिफर का एकमात्र गैर-रेखीय संचालन होता है - अतिरिक्त मॉड्यूलो 2^32 - सिफर अभी भी 32 में से 6 राउंड के बाद रैखिक क्रिप्टोनालिसिस के लिए प्रतिरोधी है। GOST अंतर क्रिप्टोनालिसिस तुलनात्मक रूप से आसान दिखता है और अधिक ध्यान आकर्षित करता है. 2^128 सुरक्षा स्तर के लिए, शोधकर्ताओं (विटाली वी. शोरिन, वादिम वी. जेलेज़्नियाकोव और अर्न्स्ट एम. गैबिडुलिन: रूसी GOST का रैखिक और विभेदक क्रिप्टोनालिसिस, एल्सेवियर प्रीप्रिंट को प्रस्तुत प्रीप्रिंट, 4 अप्रैल, 2001) ने स्तर पर पर्याप्त प्रतिरोध मान लिया 7 राउंड का. उनके अनुसार, GOST को पांच से अधिक राउंड में हैक करना "बेहद कठिन" है। इसके अलावा, दो जापानी शोधकर्ताओं ने दिखाया कि एक अलग विशेषता वाले क्लासिक फॉरवर्ड डिफरेंशियल हमले में बड़ी संख्या में राउंड के माध्यम से जीवित रहने की संभावना बेहद कम है। सीमित संख्या में राउंड के लिए एक काफी "अच्छी" पुनरावृत्त अंतर विशेषता का अध्ययन करने के तथ्य के आधार पर (जिसमें प्रति राउंड 2-11.4 से बेहतर नहीं पारित होने की संभावना है), उपयुक्त कुंजी के सेट के मान कम हैं आधे से भी ज्यादा. एक पूर्ण GOST के लिए, एकल विशेषता वाला ऐसा हमला केवल 2-62 के क्रम पर चाबियों के एक नगण्य हिस्से के साथ काम करेगा (और इस छोटे से हिस्से में भी 2- से अधिक नहीं गुजरने की संभावना होगी) 360).

अधिक जटिल हमलों में विशिष्ट पैटर्न के बाद कई अंतर शामिल होते हैं, जैसे कि अलग-अलग एस-बॉक्स का उपयोग करना जिनमें शून्य अंतर होता है जबकि अन्य बिट्स में गैर-शून्य अंतर होता है। हम GOST के खराब प्रसार गुणों के आधार पर भेदभावपूर्ण हमलों के बारे में बात कर रहे हैं। इनमें से सबसे अच्छा हमला GOST के 17 राउंड के खिलाफ काम करता है, कुंजी पर निर्भर करता है और आउटपुट पर यादृच्छिक डेटा से एक बेहद कमजोर विभेदक होता है, ताकि इसका उपयोग किसी तरह कुंजी के बारे में जानकारी प्राप्त करने के लिए किया जा सके।

हमलों को फिसलना और प्रतिबिंबित करना

बिरयुकोव और वैगनर के अनुसार, GOST की संरचना, जिसमें अंतिम राउंड में उपकुंजियों के क्रम को उलटना शामिल है, इसे स्लाइडिंग हमलों (उर्फ "स्लाइड हमलों") के लिए प्रतिरोधी बनाती है। हालाँकि, सिफर में बड़ी मात्रा में आत्म-समानता की उपस्थिति के कारण, यह कुछ कमजोर कुंजियों के लिए निश्चित बिंदुओं और "प्रतिबिंब" गुणों (उर्फ "प्रतिबिंबित हमलों") के संयोजन पर कुंजी उलटा हमलों की अनुमति देता है। इस हमले की जटिलता 2^192 और 2^32 मिलान वाले सादे पाठ हैं।

नवीनतम परिणाम

नए हमले भी प्रतिबिंब का उपयोग करते हैं और वास्तव में GOST को तोड़ते हैं, जिसे FSE 2011 सम्मेलन में प्रस्तुत किया गया था। इन हमलों की खोज भी इस काम के लेखक द्वारा स्वतंत्र रूप से की गई थी। हमले के लिए 2^132 बाइट्स मेमोरी की आवश्यकता होती है, जो वास्तव में कम मेमोरी आवश्यकताओं वाले धीमे हमलों से भी बदतर है।

स्व-समानता पर आधारित कई नए हमले सभी GOST कुंजियों के विरुद्ध काम करते हैं और आपको 256-बिट कुंजी के साथ पूर्ण-राउंड GOST को क्रैक करने की अनुमति देते हैं, न कि केवल कमजोर कुंजियों के लिए, जैसा कि पहले मामला था। इन सभी हमलों के लिए काफी कम मेमोरी की आवश्यकता होती है और ये काफी तेज़ होते हैं।

इन नए हमलों को "बीजगणितीय जटिलता में कमी" नामक ब्लॉक सिफर के क्रिप्टोनालिसिस के लिए एक नए सामान्य प्रतिमान के उदाहरण के रूप में देखा जा सकता है, जो इन हमलों को ज्ञात निश्चित बिंदुओं, स्लिप्स, इनवोल्यूशन और चक्रों के साथ हमलों के कई विशेष मामलों में सामान्यीकृत करता है। यह महत्वपूर्ण है कि इन सभी हमलों के परिवार में ऐसे भी हैं जो बिना किसी प्रतिबिंब के और गणना के दौरान दिखाई देने वाले किसी सममित बिंदु के बिना GOST क्रिप्टोएनालिसिस की अनुमति देते हैं। एक उदाहरण इस कार्य में प्रतिबिंब के बिना एक सरल GOST हैकिंग हमला है।

बीजगणितीय क्रिप्ट विश्लेषण और कम-गोल सिफर पर कम-जटिलता के हमले

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

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

GOST को कैसे हैक करें?

संपूर्ण GOST पर बीजगणितीय आक्रमण को समीक्षाधीन प्रकाशन में अधिक विस्तार से प्रस्तुत किया गया है। पिछले काम में, लेखक ने पहले ही GOST पर 20 बीजगणितीय हमलों की रूपरेखा तैयार की है और निकट भविष्य में उनमें से बड़ी संख्या में होने की उम्मीद है। इस कार्य में प्रस्तावित हमला उनमें से सर्वश्रेष्ठ नहीं है, लेकिन यह GOST को तोड़ने के लिए एक विशिष्ट पद्धति बनाने के लिए बाद के विकास के लिए एक सरल (कम से कम क्रिप्टोग्राफरों को समझने के लिए) मार्ग खोलता है।

व्यावहारिक परिणाम अभी भी मामूली है: 2^64 ज्ञात प्लेनटेक्स्ट और प्लेनटेक्स्ट/सिफरटेक्स्ट जोड़े को संग्रहीत करने के लिए 2^64 मेमोरी सरल ब्रूट फोर्स की तुलना में GOST 2^8 को तेजी से क्रैक करना संभव बनाती है। लेकिन क्रिप्टोएनालिसिस के संदर्भ में, यह कथन कि "GOST को हैक कर लिया गया है" पूरी तरह से सत्य है।

निष्कर्ष

GOST को आने वाले 200 वर्षों के लिए सैन्य स्तर की सुरक्षा सुनिश्चित करने के लिए डिज़ाइन किया गया है। GOST का अध्ययन करने वाले अधिकांश प्रमुख विशेषज्ञ इस बात से सहमत थे कि "20 वर्षों के महत्वपूर्ण क्रिप्टोएनालिटिक प्रयासों के बावजूद, GOST को अभी तक क्रैक नहीं किया जा सका है।" 2010 में, GOST को वैश्विक एन्क्रिप्शन मानक के रूप में ISO 18033 में पदोन्नत किया गया था।

बीजगणितीय क्रिप्टोएनालिसिस के बारे में विचारों का आधार 60 वर्ष से भी पहले उत्पन्न हुआ था। लेकिन केवल पिछले 10 वर्षों में ही विभिन्न प्रकार की एनपी-पूर्ण समस्याओं को (आंशिक रूप से) हल करने के लिए कुशल सॉफ़्टवेयर उपकरण विकसित किए गए हैं। कई स्ट्रीम सिफर टूट गए हैं। इस विधि से केवल एक ब्लॉक सिफर को तोड़ा गया है - कमजोर KeeLoq को। इस कार्य में, लेखक एक महत्वपूर्ण, वास्तव में प्रयुक्त GOST सिफर को क्रैक करता है। उन्होंने नोट किया कि यह इतिहास में पहली बार है कि एक मानकीकृत सरकारी सिफर को बीजगणितीय क्रिप्टोनालिसिस द्वारा तोड़ा गया है।

GOST पर एक सरल "प्रतिबिंब के साथ MITM" हमला पहले ही FSE 2011 सम्मेलन में प्रस्तुत किया जा चुका है। इस लेख में चर्चा किए गए कार्य में, एक और हमला केवल इस तथ्य को स्पष्ट करने के लिए प्रस्तुत किया गया है कि GOST पर कितने हमले पहले ही सामने आ चुके हैं। जो तेज़ हैं, और एक बीजगणितीय हमले के लिए बहुत कम मेमोरी की आवश्यकता होती है और एक प्रतिद्वंद्वी के लिए विभिन्न तरीकों से सिफर पर हमला करने के लिए संभावनाओं की लगभग अटूट जगह खुल जाती है। यह कार्य यह भी दर्शाता है कि हैकिंग के लिए रिफ्लेक्शन प्रॉपर्टी का उपयोग करने की कोई आवश्यकता नहीं है।

लेखक का कहना है: यह स्पष्ट है कि GOST में गंभीर खामियाँ हैं और यह अब ISO द्वारा आवश्यक प्रतिरोध का स्तर प्रदान नहीं करता है। GOST पर कई हमले बीजगणितीय जटिलता कमी प्रतिमान की पुष्टि के भाग के रूप में प्रस्तुत किए गए हैं।

अंत में, शोधकर्ता विशेष रूप से कुछ तथ्यों को नोट करता है जो अभी तक पाठक के लिए उपलब्ध नहीं हैं, लेकिन शोधकर्ता को ज्ञात हैं, जो आईएसओ मानकीकरण प्रक्रिया के दौरान महत्वपूर्ण हैं। यह हमला GOST पर सिर्फ एक "प्रमाणीकरण" हमला नहीं है, जो क्रूर बल से भी तेज़ है। वास्तव में, अब GOST का मानकीकरण करना बेहद खतरनाक और गैरजिम्मेदाराना होगा। ऐसा इसलिए है क्योंकि कुछ हमले व्यवहार में संभव हैं। कुछ GOST कुंजियों को व्यवहार में भी डिक्रिप्ट किया जा सकता है, चाहे वे कमज़ोर कुंजियाँ हों या GOST के विशेष वास्तविक जीवन अनुप्रयोगों की कुंजियाँ हों। पिछले काम में, लेखक उन मामलों की विस्तृत जांच प्रदान करता है जहां व्यावहारिक हमले संभव हैं। यह भी महत्वपूर्ण है कि "यह इतिहास में पहली बार है कि एक गंभीर, मानकीकृत ब्लॉक सिफर, जिसे सैन्य-ग्रेड रहस्यों की रक्षा के लिए डिज़ाइन किया गया था और सरकारों, प्रमुख बैंकों और अन्य संगठनों के लिए सरकारी रहस्यों की रक्षा के लिए डिज़ाइन किया गया था, एक गणितीय हमले से टूट गया है ।"

). साथ ही, रूसी मीडिया और रूसी उपयोगकर्ताओं के ब्लॉगों में, इस एल्गोरिदम के बारे में नोट्स की संख्या बढ़ रही है: दोनों विश्वसनीयता की अलग-अलग डिग्री के साथ रूसी मानक पर हमलों के परिणामों को कवर करते हैं, और इसकी परिचालन विशेषताओं के बारे में राय रखते हैं। इन नोट्स के लेखकों (और, परिणामस्वरूप, पाठकों) को अक्सर यह धारणा मिलती है कि घरेलू एन्क्रिप्शन एल्गोरिदम पुराना, धीमा है और इसमें कमजोरियां हैं जो इसे समान कुंजी लंबाई वाले विदेशी एन्क्रिप्शन एल्गोरिदम की तुलना में हमलों के लिए काफी अधिक संवेदनशील बनाती हैं। नोट्स की इस श्रृंखला के साथ हम आपको रूसी मानक के साथ वर्तमान स्थिति के बारे में सुलभ रूप में बताना चाहेंगे। पहला भाग अंतर्राष्ट्रीय क्रिप्टोग्राफ़िक समुदाय को ज्ञात GOST 28147-89 पर सभी हमलों और इसकी ताकत के वर्तमान आकलन को कवर करेगा। भविष्य के प्रकाशनों में, हम प्रभावी कार्यान्वयन की क्षमता के दृष्टिकोण से मानक के गुणों पर भी करीब से नज़र डालेंगे।

निकोलस कोर्टोइस - "महान और भयानक"

आइए निकोलस कोर्टोइस की गतिविधियों के बारे में एक कहानी से शुरू करें, जो रूसी ब्लॉक एन्क्रिप्शन मानक () को समर्पित कार्यों की एक पूरी श्रृंखला के लेखक हैं।

अक्टूबर 2010 में, अंतर्राष्ट्रीय मानक ISO/IEC 18033-3 में GOST 28147-89 एल्गोरिदम को शामिल करने पर विचार करने की प्रक्रिया शुरू हुई। पहले से ही मई 2011 में, प्रसिद्ध क्रिप्टोग्राफर निकोलस कोर्टोइस का एक लेख ePrint इलेक्ट्रॉनिक संग्रह पर दिखाई दिया, जो विश्व क्रिप्टोग्राफ़िक समुदाय से उनके प्रति बहुत अस्पष्ट रवैये से चिह्नित था। कोर्टोइस के प्रकाशन अवधारणाओं के हेरफेर का एक दुखद उदाहरण हैं, जो प्रश्न में वस्तु के किसी भी नए गुणों को प्रकट नहीं करता है, लेकिन सनसनी के दावे के साथ एक अक्षम वातावरण में इसके वास्तविक गुणों के बारे में गलत राय फैलाने के लिए उकसाता है।

बीजगणितीय विधि

कोर्टोइस का तर्क क्रिप्टोएनालिसिस विधियों के दो वर्गों के आसपास बनाया गया है: बीजगणितीय विधियां और विभेदक विधियां। आइए तरीकों की पहली श्रेणी को देखें।

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

कोर्टोइस द्वारा प्रयुक्त बीजगणितीय विधि को संक्षेप में इस प्रकार वर्णित किया जा सकता है। पहले चरण में, GOST 28147-89 के ऐसे गुणों का उपयोग एन्क्रिप्शन परिवर्तन के भाग के लिए एक निश्चित बिंदु के अस्तित्व के साथ-साथ तथाकथित प्रतिबिंब बिंदु के रूप में किया जाता है। इन गुणों के लिए धन्यवाद, पर्याप्त संख्या में प्लेनटेक्स्ट-सिफरटेक्स्ट जोड़ियों में से कई जोड़ियों का चयन किया जाता है, जिससे 32 पर नहीं, बल्कि केवल 8 राउंड में परिवर्तनों पर विचार करना संभव हो जाता है। दूसरा चरण यह है कि, पहले चरण में प्राप्त 8 राउंड परिवर्तनों के परिणामों के आधार पर, गैर-रेखीय समीकरणों की एक प्रणाली का निर्माण किया जाता है, जिसमें कुंजी बिट अज्ञात होते हैं। इसके बाद, इस प्रणाली को हल किया जाता है (यह सरल लगता है, लेकिन वास्तव में यह विधि का सबसे अधिक समय लेने वाला हिस्सा है, क्योंकि प्रणाली में गैर-रेखीय समीकरण होते हैं)।

जैसा कि ऊपर उल्लेख किया गया है, कार्य में कहीं भी कुंजी निर्धारित करने के दूसरे और मुख्य चरण की जटिलता का विस्तृत विवरण और विश्लेषण नहीं है। यह दूसरे चरण की जटिलता है जो संपूर्ण विधि की जटिलता को निर्धारित करती है। इसके बजाय, लेखक कुख्यात "तथ्य" प्रदान करता है जिसके आधार पर वह श्रम तीव्रता का अनुमान लगाता है। कहा जाता है कि ये "तथ्य" प्रायोगिक परिणामों पर आधारित हैं। कोर्टोइस के काम से "तथ्यों" का विश्लेषण घरेलू लेखकों के काम में दिया गया है। इस कार्य के लेखकों का कहना है कि बिना किसी सबूत के प्रस्तुत किए गए कोर्टोइस के कई "तथ्य" प्रयोगात्मक परीक्षण के दौरान झूठे पाए गए। लेख के लेखक आगे बढ़े और कोर्टोइस का अनुसरण करते हुए, अच्छी तरह से स्थापित एल्गोरिदम और अनुमानों का उपयोग करके दूसरे चरण की जटिलता का विश्लेषण किया। परिणामी जटिलता अनुमान प्रस्तुत हमले की पूर्ण अनुपयुक्तता को दर्शाते हैं। घरेलू लेखकों के अलावा, कोर्टोइस को अपने तरीकों के आकलन और औचित्य के साथ जो बड़ी समस्याएं हैं, उन्हें भी उदाहरण के लिए, काम में नोट किया गया था।

विभेदक विधि

आइए दूसरी कोर्टोइस विधि पर विचार करें, जो विभेदक क्रिप्टोएनालिसिस पर आधारित है।

विभेदक क्रिप्टोएनालिसिस की सामान्य विधि क्रिप्टोग्राफ़िक प्राइमेटिव्स में प्रयुक्त नॉनलाइनियर मैपिंग के गुणों के शोषण पर आधारित है, जो इन मैपिंग के इनपुट जोड़े और आउटपुट मानों के जोड़े के बीच अंतर के बीच निर्भरता पर कुंजी मूल्य के प्रभाव से जुड़ी है। . आइए हम ब्लॉक सिफर के क्रिप्टोग्राफ़िक विश्लेषण की विभेदक विधि के मुख्य विचार का वर्णन करें। आमतौर पर, ब्लॉक सिफर कई तथाकथित राउंड ट्रांसफॉर्मेशन का उपयोग करके इनपुट डेटा को चरणों में बदलते हैं, और प्रत्येक राउंड ट्रांसफॉर्मेशन पूरी कुंजी का उपयोग नहीं करता है, बल्कि इसका केवल कुछ हिस्सा उपयोग करता है। आइए थोड़ा "काटे गए" सिफर पर विचार करें, जो मूल सिफर से इस मायने में भिन्न है कि इसमें अंतिम दौर नहीं है। आइए मान लें कि यह स्थापित करना संभव हो गया है कि ऐसे "काटे गए" सिफर का उपयोग करके कुछ निश्चित स्थितियों में भिन्न दो प्लेनटेक्स्ट को एन्क्रिप्ट करने से संभवतः सिफरटेक्स्ट उत्पन्न होंगे जो कुछ निश्चित स्थितियों में भी भिन्न होंगे। यह संपत्ति दर्शाती है कि एक "छोटा" सिफर संभवतः कुछ प्लेनटेक्स्ट और उनके एन्क्रिप्शन के परिणामों के बीच एक निर्भरता छोड़ देता है। इस स्पष्ट दोष का उपयोग करके कुंजी के हिस्से को पुनर्प्राप्त करने के लिए, उस कुंजी पर पूर्व-चयनित प्लेनटेक्स्ट को एन्क्रिप्ट करने में सक्षम होना आवश्यक है जिसे हम पुनर्प्राप्त करना चाहते हैं (तथाकथित "चयनित प्लेनटेक्स्ट हमला")। "कुंजी खोलने" की प्रक्रिया की शुरुआत में, प्लेनटेक्स्ट के कई जोड़े यादृच्छिक रूप से उत्पन्न होते हैं, जो उन्हीं निश्चित स्थितियों में भिन्न होते हैं। सभी पाठ "पूर्ण" सिफर का उपयोग करके एन्क्रिप्ट किए गए हैं। परिणामी सिफरटेक्स्ट जोड़े का उपयोग उन कुंजी बिट्स को पुनर्प्राप्त करने के लिए किया जाता है जिनका उपयोग पिछले दौर के परिवर्तन में निम्नानुसार किया गया था। वांछित कुंजी बिट्स के कुछ यादृच्छिक रूप से चयनित मान का उपयोग करके, अंतिम दौर परिवर्तन के विपरीत एक परिवर्तन सभी सिफरटेक्स्ट पर लागू किया जाता है। वास्तव में, यदि हमने कुंजी बिट्स के वांछित मूल्य का अनुमान लगाया है, तो हमें "काटे गए" सिफर का परिणाम मिलेगा, और यदि हमने अनुमान नहीं लगाया है, तो हम वास्तव में "डेटा को और भी अधिक एन्क्रिप्ट करेंगे", जो केवल कम करेगा ऊपर उल्लिखित ब्लॉकों के बीच निर्भरता (अंतर कुछ निश्चित स्थितियों में है)। दूसरे शब्दों में, यदि सिफरटेक्स्ट के ऐसे "अतिरिक्त प्रसंस्करण" के परिणामों के बीच बहुत सारे जोड़े थे जो हमें ज्ञात निश्चित स्थितियों में भिन्न थे, तो इसका मतलब है कि हमने आवश्यक कुंजी बिट्स का अनुमान लगाया है। अन्यथा, ऐसे जोड़े काफी कम होंगे। चूँकि प्रत्येक राउंड में कुंजी का केवल एक भाग उपयोग किया जाता है, खोजे गए बिट्स (अर्थात्, अंतिम राउंड में उपयोग किए गए कुंजी बिट्स) पूरी कुंजी के बिट्स जितने असंख्य नहीं होते हैं और ऊपर दिए गए चरणों को दोहराकर आसानी से पुनरावृत्त किया जा सकता है। . इस मामले में, हम निश्चित रूप से किसी दिन सही अर्थ पर ठोकर खाएंगे।

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

कोर्टोइस विभेदक विधि के थोड़े संशोधित संस्करण का उपयोग करता है। आइए हम तुरंत ध्यान दें कि कोर्टोइस एस-बॉक्स के लिए अपना विश्लेषण करता है जो मौजूदा और आईएसओ में प्रस्तावित से अलग हैं। कार्य कम संख्या में राउंड के लिए विभेदक विशेषताएँ (वे संख्याएँ जिनमें ब्लॉक भिन्न होने चाहिए) प्रदान करता है। विशेषताओं को अधिक राउंड तक विस्तारित करने का औचित्य, हमेशा की तरह, "तथ्यों" पर आधारित है। कोर्टोइस, फिर से, अपने अधिकार के अलावा और कुछ नहीं, एक असमर्थित धारणा व्यक्त करता है कि एस-बॉक्स बदलने से उसके हमले के खिलाफ GOST 28147-89 के प्रतिरोध पर कोई असर नहीं पड़ेगा (जबकि अज्ञात कारणों से, एस-बॉक्स पहले कार्य ड्राफ्ट से मानक आईएसओ/आईईसी 18033-3 को जोड़ने पर विचार नहीं किया गया)। लेख के लेखकों द्वारा किए गए विश्लेषण से पता चलता है कि भले ही हम कोर्टोइस के निराधार "तथ्यों" को विश्वास पर लेते हैं और अन्य एस-ब्लॉक के साथ GOST 28147-89 का विश्लेषण करते हैं, फिर भी हमला पूरी खोज से बेहतर नहीं होता है।

रूसी मानक के प्रतिरोध में कमी के बारे में सभी बयानों की निराधारता की विस्तृत पुष्टि के साथ कोर्टोइस के कार्यों का विस्तृत विश्लेषण कार्यों में किया गया था [,]।

साथ ही, कोर्टोइस स्वयं भी गणना में सटीकता की पूर्ण कमी को स्वीकार करते हैं! निम्नलिखित स्लाइड एफएसई 2012 संक्षिप्त सूचना अनुभाग में कोर्टोइस की प्रस्तुति से ली गई है।

यह ध्यान दिया जाना चाहिए कि कोर्टोइस के काम की विदेशी शोधकर्ताओं द्वारा भी बार-बार आलोचना की गई है। उदाहरण के लिए, एक्सएसएल विधि का उपयोग करके एईएस ब्लॉक एन्क्रिप्शन एल्गोरिदम पर हमलों के निर्माण पर उनके काम में रूसी मानक के विश्लेषण पर काम के समान मूलभूत खामियां थीं: अधिकांश श्रम तीव्रता अनुमान पाठ में पूरी तरह से निराधार और अप्रमाणित दिखाई देते हैं - विस्तृत उदाहरण के लिए, आलोचना काम में पाई जा सकती है। इसके अलावा, कोर्टोइस ने स्वयं स्वीकार किया कि प्रमुख क्रिप्टोग्राफी सम्मेलनों और स्थापित सहकर्मी-समीक्षित पत्रिकाओं में उनके काम को प्रकाशित करने से व्यापक इनकार किया गया, जिससे अक्सर उन्हें केवल संक्षिप्त घोषणा अनुभाग में बोलने का अवसर मिलता था। उदाहरण के लिए, आप इसके बारे में कार्य के अनुभाग 3 में पढ़ सकते हैं। यहां उनके काम से संबंधित कोर्टोइस के कुछ उद्धरण दिए गए हैं:

  • "मुझे लगता है कि एशियाक्रिप्ट के दर्शकों को यह दिलचस्प नहीं लगेगा।" एशियाक्रिप्ट 2011 समीक्षक।
  • "... एक बड़ी, बड़ी, बड़ी समस्या है: यह हमला, जो कि पेपर का मुख्य योगदान है, पहले ही FSE'11 में प्रकाशित हो चुका है (यह सबसे अच्छा पेपर भी था), ..."। क्रिप्टो 2011 के लिए समीक्षक।

इस प्रकार, अंतरराष्ट्रीय क्रिप्टोग्राफ़िक समुदाय का पेशेवर हिस्सा कोर्टोइस के काम की गुणवत्ता को 2,100 के लिए एईएस को क्रैक करने की उनकी क्षमता के बारे में कुछ रूसी विशेषज्ञों के बयानों से कम संदेह के साथ मानता है, जो किसी भी सुसंगत गणना द्वारा पुष्टि नहीं की जाती है, या जटिलता वर्ग पी और एनपी की असमानता पर दो पेज की परिकल्पना का नवीनतम "सबूत"।

इसोबे और दीनूर-डैंकेलमैन-शमीर द्वारा हमले

इसोबे () और दीनूर-डैंकेलमैन-शमीर हमलों (इसके बाद: डीडीएस हमला) () का सामान्य विचार प्लेनटेक्स्ट के एक निश्चित (कुंजी-निर्भर) संकीर्ण सेट के लिए इस सेट पर एक समतुल्य परिवर्तन का निर्माण करना है, जिसमें ए एन्क्रिप्शन परिवर्तन की तुलना में संरचना सरल है। इसोबे विधि के मामले में, यह 64-बिट ब्लॉक x का सेट है जैसे कि F 8 -1 (स्वैप(F 8 (z))) = z, जहां z = F 16 (x), F 8 के माध्यम से ( x) और F 16 ( x) क्रमशः GOST 28147-89 एन्क्रिप्शन के पहले 8 और पहले 16 राउंड को स्वैप के माध्यम से इंगित करते हैं - 64-बाइट शब्द के आधे हिस्से को स्वैप करने का संचालन। यदि इस सेट में प्लेनटेक्स्ट को शामिल किया जाता है, तो GOST 28147-89 के पूर्ण 32-राउंड परिवर्तन का परिणाम 16-राउंड वाले परिवर्तन के परिणाम के साथ मेल खाता है, जिसका उपयोग हमले के लेखक ने किया है। डीडीएस विधि के मामले में, यह x का सेट है जैसे कि F 8 (x) = x (परिवर्तन का निश्चित बिंदु F 8)। इस सेट से किसी भी सादे पाठ के लिए, GOST 28147-89 परिवर्तन बिल्कुल इसके पिछले 8 राउंड के समान ही काम करता है, जो विश्लेषण को सरल बनाता है।

इसोबे हमले की जटिलता 2,224 एन्क्रिप्शन ऑपरेशन है, डीडीएस हमले की जटिलता 2,192 है। हालाँकि, इस बारे में सभी प्रश्न कि क्या इसोबे और डीडीएस हमले हमारे एल्गोरिदम का उपयोग करने की शर्तों पर नए प्रतिबंध लगाते हैं, प्रत्येक हमले को अंजाम देने के लिए आवश्यक सामग्री की मात्रा की आवश्यकताओं का आकलन करके हटा दिए जाते हैं: इसोबे विधि के लिए 2 32 जोड़े प्लेनटेक्स्ट की आवश्यकता होती है और सिफरटेक्स्ट, और डीडीएस विधि के लिए - 2 64। कुंजी को बदले बिना सामग्री की ऐसी मात्रा को संसाधित करना 64 की ब्लॉक लंबाई वाले किसी भी ब्लॉक सिफर के लिए एक प्राथमिकता अस्वीकार्य है: मात्रा 2 32 की सामग्री पर, जन्मदिन की समस्या को ध्यान में रखते हुए (उदाहरण के लिए देखें), घटना की संभावना दोहराए गए ब्लॉकों की संख्या 1/2 के करीब है, जो हमलावर को कुंजी का निर्धारण किए बिना सिफरटेक्स्ट से प्लेनटेक्स्ट के बारे में कुछ निष्कर्ष निकालने में सक्षम बनाएगी। एक कुंजी पर प्राप्त सादे और एन्क्रिप्टेड पाठों के 2 64 जोड़े की उपस्थिति वास्तव में दुश्मन को इस कुंजी को जाने बिना एन्क्रिप्शन और डिक्रिप्शन संचालन करने की अनुमति देती है। यह पूरी तरह से मिश्रित संपत्ति के कारण है: इस मामले में दुश्मन के पास संपूर्ण एन्क्रिप्शन रूपांतरण तालिका है। यह स्थिति किसी भी उचित परिचालन स्थिति के तहत बिल्कुल अस्वीकार्य है। उदाहरण के लिए, क्रिप्टोप्रो सीएसपी में एन्क्रिप्टेड सामग्री (कुंजी रूपांतरण के बिना) की मात्रा पर 4 एमबी की तकनीकी सीमा है (देखें)। इस प्रकार, ऐसी मात्रा की सामग्री पर एक कुंजी का उपयोग करने पर सख्त प्रतिबंध 64 बिट्स की ब्लॉक लंबाई वाले किसी भी ब्लॉक सिफर में निहित है, और इसलिए, आइसोब और डीडीएस हमले किसी भी तरह से GOST 28147-89 एल्गोरिथ्म के उपयोग के दायरे को सीमित नहीं करते हैं। 2,256 की अधिकतम संभव ताकत बनाए रखते हुए।

बेशक, यह ध्यान दिया जाना चाहिए कि शोधकर्ताओं (इसोबे और डिनूर-डैंकेलमैन-शमीर) ने दिखाया है कि GOST 28147-89 एल्गोरिदम के कुछ गुण उन विश्लेषण पथों को ढूंढना संभव बनाते हैं जिन्हें एल्गोरिदम के रचनाकारों द्वारा ध्यान में नहीं रखा गया था। कुंजी शेड्यूल का सरल रूप, जो प्रभावी कार्यान्वयन के निर्माण के कार्य को महत्वपूर्ण रूप से सरल बनाता है, एल्गोरिथ्म द्वारा उत्पादित परिवर्तनों के सरल विवरण बनाने के लिए कुंजी और प्लेनटेक्स्ट के कुछ दुर्लभ मामलों की भी अनुमति देता है।

कार्य दर्शाता है कि एल्गोरिदम की इस नकारात्मक संपत्ति को परिचालन विशेषताओं के पूर्ण संरक्षण के साथ आसानी से समाप्त किया जा सकता है, लेकिन, दुर्भाग्य से, यह आमतौर पर उपयोग किए जाने वाले रूप में एल्गोरिदम का एक अभिन्न अंग है।

ध्यान दें कि औसत श्रम तीव्रता के अनुमान में कुछ लापरवाही दिनूर, डंकलमैन और शमीर के काम में भी मौजूद है। इस प्रकार, किसी हमले का निर्माण करते समय, निम्नलिखित बिंदु पर उचित ध्यान नहीं दिया जाता है: कुंजियों के एक महत्वपूर्ण अनुपात के लिए, प्लेनटेक्स्ट x का सेट, जैसे कि F 8 (x) = x, खाली है: बस कोई निश्चित बिंदु नहीं हो सकता है परिवर्तन के 8 दौर के लिए. निश्चित बिंदुओं का अस्तित्व प्रतिस्थापन नोड्स की पसंद पर भी निर्भर करता है। इस प्रकार, हमला केवल कुछ प्रतिस्थापन नोड्स और कुंजियों के लिए लागू होता है।

यह GOST 28147-89 पर हमले के साथ एक और काम का उल्लेख करने योग्य भी है। फरवरी 2012 में, लेख का एक अद्यतन संस्करण (नवंबर 2011 दिनांकित) अंतर्राष्ट्रीय क्रिप्टोग्राफ़िक एसोसिएशन के ईप्रिंट इलेक्ट्रॉनिक संग्रह पर दिखाई दिया, जिसमें GOST 28147-89 पर एक नया हमला शामिल था। प्रस्तुत हमले की विशेषताएं इस प्रकार हैं: सामग्री की मात्रा 2 32 (इसोबे की तरह) है, और श्रम तीव्रता 2 192 (डीडीएस की तरह) है। इस प्रकार, इस हमले ने सामग्री की मात्रा के संदर्भ में समय-रिकॉर्ड डीडीएस हमले को 2 64 से 2 32 तक सुधार दिया। हम अलग से ध्यान दें कि लेखकों ने सामग्री की जटिलता और मात्रा के औचित्य के साथ सभी गणनाओं को ईमानदारी से प्रस्तुत किया। 9 महीनों के बाद, उपरोक्त गणनाओं में एक मूलभूत त्रुटि पाई गई, और नवंबर 2012 के बाद से, इलेक्ट्रॉनिक संग्रह में लेख के अद्यतन संस्करण में अब घरेलू एल्गोरिदम के संबंध में कोई परिणाम नहीं है।

यह मानकर हमला किया जाता है कि हमलावर चाबियों के बारे में "कुछ" जानता है

अंत में, हम ध्यान दें कि साहित्य में तथाकथित लिंक किए गए कुंजी मॉडल में GOST 28147-89 पर हमलों के लिए समर्पित कई कार्य भी हैं (उदाहरण के लिए देखें, और)। इस मॉडल में मूल रूप से यह धारणा शामिल है कि एक हमलावर न केवल वांछित कुंजी का उपयोग करके खुले और एन्क्रिप्ट किए गए पाठों के जोड़े तक विश्लेषण के लिए पहुंच प्राप्त कर सकता है, बल्कि वांछित कुंजी से भिन्न (अज्ञात भी) कुंजी का उपयोग करके प्राप्त खुले और एन्क्रिप्टेड पाठों के जोड़े तक भी पहुंच प्राप्त कर सकता है। ज्ञात नियमित तरीके से (उदाहरण के लिए, निश्चित बिट स्थिति में)। इस मॉडल में, GOST 28147-89 के बारे में दिलचस्प परिणाम प्राप्त करना वास्तव में संभव है, लेकिन इस मॉडल में, उदाहरण के लिए, एईएस मानक के बारे में कोई कम मजबूत परिणाम प्राप्त करना संभव नहीं है, जो आधुनिक सार्वजनिक नेटवर्क में सबसे व्यापक रूप से उपयोग किया जाता है ( उदाहरण के लिए देखें,)। ध्यान दें कि एक निश्चित प्रोटोकॉल में सिफर का उपयोग करते समय इस प्रकार के हमले को अंजाम देने की स्थितियाँ उत्पन्न होती हैं। यह ध्यान दिया जाना चाहिए कि इस प्रकार के परिणाम, हालांकि वे क्रिप्टोग्राफ़िक परिवर्तनों के गुणों के अध्ययन के दृष्टिकोण से निस्संदेह अकादमिक रुचि के हैं, वास्तव में अभ्यास के लिए प्रासंगिक नहीं हैं। उदाहरण के लिए, रूस के एफएसबी द्वारा प्रमाणित सभी क्रिप्टोग्राफ़िक सूचना सुरक्षा उपकरण एन्क्रिप्शन कुंजी पीढ़ी योजनाओं के लिए सख्त आवश्यकताओं को पूरा करते हैं (उदाहरण के लिए देखें)। जैसा कि विश्लेषण के परिणामों में संकेत दिया गया है, यदि 18 संबद्ध कुंजियाँ और 2 10 जोड़े प्लेनटेक्स्ट और सिफरटेक्स्ट ब्लॉक हैं, तो 1-10 -4 की सफलता की संभावना के साथ, निजी कुंजी को पूरी तरह से खोलने की जटिलता वास्तव में 2 26 है . हालाँकि, यदि मुख्य सामग्री के विकास के लिए उपर्युक्त आवश्यकताओं को पूरा किया जाता है, तो ऐसी कुंजियाँ खोजने की संभावना 2 -4352 है, अर्थात, यदि आप पहली कोशिश में गुप्त कुंजी का अनुमान लगाने की कोशिश करते हैं तो 24096 गुना कम है।

लिंक की गई कुंजियों वाले मॉडल से संबंधित कार्यों में वह कार्य भी शामिल है, जिसने 2010 में रूसी इलेक्ट्रॉनिक प्रकाशनों में बहुत शोर मचाया था, जो संवेदनाओं की दौड़ में सामग्री की सावधानीपूर्वक जांच करने की आदत से ग्रस्त नहीं हैं। इसमें प्रस्तुत परिणाम किसी भी कठोर औचित्य द्वारा समर्थित नहीं थे, लेकिन सेकंड के एक मामले में एक कमजोर लैपटॉप पर रूसी संघ के राज्य मानक को हैक करने की क्षमता के बारे में जोरदार बयान शामिल थे - सामान्य तौर पर, लेख सर्वोत्तम परंपराओं में लिखा गया था निकोलस कोर्टोइस का. लेकिन, वैज्ञानिक प्रकाशनों के बुनियादी सिद्धांतों से कमोबेश परिचित पाठक के लिए लेख की बिल्कुल स्पष्ट निराधारता के बावजूद, काम के बाद रूसी जनता को आश्वस्त करने के लिए रुडस्की ने एक विस्तृत और गहन पाठ लिखा जिसमें एक व्यापक विश्लेषण शामिल था। इस कमी का. स्व-व्याख्यात्मक शीर्षक वाला लेख "कार्य के शून्य व्यावहारिक महत्व पर" शून्य समय और मेमोरी के साथ पूर्ण GOST ब्लॉक सिफर पर कुंजी पुनर्प्राप्ति हमला "" यह औचित्य प्रदान करता है कि दी गई विधि की औसत जटिलता जटिलता से कम नहीं है पूरी खोज का.

सूखा अवशेष: व्यवहार में स्थायित्व क्या है?

अंत में, हम अंतरराष्ट्रीय क्रिप्टोग्राफ़िक समुदाय को ज्ञात GOST 28147-89 पर कड़ाई से वर्णित और उचित हमलों के सभी परिणामों पर डेटा युक्त एक तालिका प्रस्तुत करते हैं। ध्यान दें कि जटिलता GOST 28147-89 एल्गोरिदम के एन्क्रिप्शन संचालन में दी गई है, और मेमोरी और सामग्री एल्गोरिदम ब्लॉक (64 बिट्स = 8 बाइट्स) में इंगित की गई है।

आक्रमण करना श्रम तीव्रता याद आवश्यक सामग्री
इसोबे 2 224 2 64 2 32
दीनूर-डैंकेलमैन-शमीर, एफपी, 2डीएमआईटीएम 2 192 2 36 2 64
दीनूर-डैंकेलमैन-शमीर, एफपी, कम-याददाश्त 2 204 2 19 2 64
2 224 2 36 2 32
दीनूर-डैंकेलमैन-शमीर, प्रतिबिंब, 2DMitM 2 236 2 19 2 32
पूरी खोज 2 256 1 4
ब्रह्मांड के निर्माण के बाद से नैनोसेकंड की संख्या 2 89

GOST 28147-89 एल्गोरिथ्म के प्रतिरोध के क्षेत्र में अनुसंधान के काफी बड़े पैमाने पर चक्र के बावजूद, फिलहाल एक भी हमला ज्ञात नहीं है, जिसके कार्यान्वयन की शर्तें संबंधित परिचालन आवश्यकताओं के साथ प्राप्त की जा सकेंगी। 64 बिट्स की ब्लॉक लंबाई। सिफर मापदंडों (कुंजी बिट लंबाई, ब्लॉक बिट लंबाई) के परिणामस्वरूप एक कुंजी पर संसाधित की जा सकने वाली सामग्री की मात्रा पर प्रतिबंध किसी भी वर्तमान में ज्ञात हमले को अंजाम देने के लिए आवश्यक न्यूनतम मात्रा की तुलना में काफी सख्त हैं। नतीजतन, मौजूदा परिचालन आवश्यकताओं को पूरा करते समय, GOST 28147-89 में प्रस्तावित कोई भी क्रिप्टोएनालिसिस विधि संपूर्ण खोज से कम श्रम तीव्रता वाली कुंजी निर्धारित करने की अनुमति नहीं देती है।

लोकप्रिय रूप से ज्ञात शब्द "प्रोसेसर प्रदर्शन" एक उद्देश्यपूर्ण, परिकलित पैरामीटर है जिसे फ्लॉप में मापा जाता है। हालाँकि, अधिकांश लोग इसे गीगाहर्ट्ज़ में मापते हैं, भोलेपन से मानते हैं कि वे एक ही चीज़ हैं। "कोड प्रदर्शन" शब्द को कोई नहीं जानता, और मैं तुरंत समझाऊंगा कि क्यों।

इसका कारण यह है कि मैं हाल ही में इसके बारे में आया हूं और अभी तक इसके बारे में किसी को नहीं बताया है। हालाँकि, प्रोसेसर प्रदर्शन की तरह, कोड प्रदर्शन में वस्तुनिष्ठ विशेषताएँ होती हैं जिन्हें मापा जा सकता है। यह आलेख विशेष रूप से प्रोसेसर कोर द्वारा निष्पादित कोड के प्रदर्शन के बारे में है।

कोड प्रदर्शन को कैसे मापा जाता है? चूंकि मैं इस बारे में बात करने वाला पहला व्यक्ति था, खोजकर्ता के अधिकार से मैं इसे आरटीटी इकाइयों में मापूंगा;)।

अब गंभीरता से. आधुनिक प्रोसेसर में, मुख्य परिवर्तन 32-बिट संख्याओं पर संचालन हैं; बाकी सब कुछ, बड़े पैमाने पर, विदेशी है। इसलिए, हम मुख्य बात को ध्यान में रखेंगे - 32-बिट संख्याओं के साथ संचालन। आपके अनुसार एक आधुनिक प्रोसेसर कोर कितने 32-बिट ऑपरेशन एक साथ कर सकता है?

छात्र उत्तर देगा - एक, उसका शिक्षक सोचेगा और कहेगा कि चार हैं, पेशेवर - कि अभी तक केवल बारह ऑपरेशन हुए हैं।

तो, एक प्रोग्राम कोड जो कोड के पूरे निष्पादन समय के दौरान सभी प्रोसेसर निष्पादन इकाइयों को एक साथ लोड करता है, उसका प्रदर्शन 12 आरटीटी होगा। अधिकतम! सच कहूँ तो, मैंने पहले कभी ऐसा कोड नहीं लिखा है, लेकिन इस लेख में मैं एक प्रयास करने की कोशिश करूँगा।

मैं यह साबित कर दूंगा कि बारह 32-बिट ऑपरेशनों का एक साथ निष्पादन संभव है

प्रोग्राम कोड जो प्रोसेसर कोर में एक एक्चुएटर का उपयोग करता है, उसका प्रदर्शन स्वाभाविक रूप से 1 आरटीटी होगा। उच्च-स्तरीय भाषा कंपाइलरों और वर्चुअल मशीन दुभाषियों द्वारा उत्पन्न प्रोग्राम ऐसे कोड प्रदर्शन का दावा कर सकते हैं। यह मानने की कोई आवश्यकता नहीं है कि प्रोसेसर लोड संकेतक, जिसे ओएस टास्क मैनेजर में देखा जा सकता है, कोड की दक्षता के लिए एक उद्देश्य मानदंड के रूप में काम कर सकता है। प्रोसेसर कोर लोड 100% हो सकता है, लेकिन प्रोग्राम कोड इसमें एक निष्पादन इकाई (प्रदर्शन 1 आरटीटी) का उपयोग करेगा। इस मामले में, 100% लोड पर, प्रोसेसर कोर अपने अधिकतम प्रदर्शन के 1/12 पर काम करेगा। दूसरे शब्दों में, जब विंडोज़ टास्क मैनेजर अधिकतम प्रोसेसर लोड दिखाता है, तो इसका वास्तविक प्रदर्शन 1 से 12 आरटीटी तक भिन्न हो सकता है। यदि आप प्रदर्शन विंडो में किसी प्रोसेसर कोर पर 100% लोड देखते हैं, तो यह मान लेना गलत है कि सभी एक्चुएटर इस कोर में काम कर रहे हैं, बिल्कुल नहीं!

अधिकतम प्रदर्शन पर प्रोसेसर कोर के संचालन का अप्रत्यक्ष रूप से आकलन करने का एकमात्र मानदंड इसकी बिजली की खपत और, परिणामस्वरूप, कूलर का शोर हो सकता है। अब, यदि कूलर शोर कर रहा है, तो हाँ, लोड अधिकतम हो गया है। हालाँकि, अब सामान्य अवधारणाओं को समाप्त करने और कठोर अभ्यास की ओर बढ़ने का समय आ गया है।

GOST 28147-89 का पारंपरिक कार्यान्वयन

मैं सूचना सुरक्षा के क्षेत्र में पेशेवर नहीं हूं, लेकिन मैं अभी भी एन्क्रिप्शन के विषय से परिचित हूं। मैं विशेष रूप से एक पेशेवर क्रिप्टोग्राफर के साथ बातचीत से सममित स्ट्रीम एन्क्रिप्शन का अध्ययन करने के लिए प्रेरित हुआ, जिसका मैं गहरा सम्मान करता हूं। और, इस विषय को उठाते हुए, मैंने इसे अच्छी तरह से करने की कोशिश की, और न केवल अच्छी तरह से, बल्कि जल्दी से, समय की प्रति इकाई अधिकतम संख्या में संचालन करते हुए। दूसरे शब्दों में, मुझे अधिकतम आरटीटी मान के साथ प्रोग्राम कोड लिखने के कार्य का सामना करना पड़ा।

GOST 28147-89 के अनुसार क्रिप्टोग्राफ़िक परिवर्तन का उपयोग संचार चैनलों और डिस्क ड्राइव पर सूचना के स्ट्रीम एन्क्रिप्शन के लिए किया जाता है।

वर्तमान में, केंद्रीय प्रोसेसर के RON पर इस GOST का सॉफ़्टवेयर कार्यान्वयन व्यापक रूप से उपयोग किया जाता है। GOST को लागू करने के ज्ञात तरीकों में, सभी गुप्त जानकारी (एन्क्रिप्शन कुंजी, प्रतिस्थापन ब्लॉक) RAM में स्थित होती है। इससे एन्क्रिप्शन की विश्वसनीयता कम हो जाती है, क्योंकि रैम डंप होने से क्रिप्टो-परिवर्तन के सभी गुप्त तत्व पूरी तरह से प्रकट हो सकते हैं। इसके अलावा, ओपी में मुख्य क्रिप्टो रूपांतरण वस्तुओं के स्थान और एएलयू कार्यकारी इकाइयों की अधूरी लोडिंग के कारण विधि में प्रदर्शन सीमाएं हैं। आधुनिक प्रोसेसर, एक प्रसिद्ध विधि का उपयोग करके क्रिप्टो प्रक्रिया को लागू करते हुए, प्रति सेकंड 40-60 मेगाबाइट की एन्क्रिप्शन गति प्रदान कर सकते हैं। और अगर हम वास्तव में इसे अंत तक समझते हैं, तो क्रिप्टो रूपांतरण के कम प्रदर्शन और कमजोर सुरक्षा का कारण प्रतिस्थापन ब्लॉक का सॉफ़्टवेयर कार्यान्वयन है। GOST में इसके विवरण के लिए चित्र देखें। 1.

GOST के खंड 1.2 के अनुसार, यह ब्लॉक 32-बिट शब्द में टेट्राड (चार बिट्स) क्रमपरिवर्तन लागू करता है, लेकिन x86/64 प्रोसेसर आर्किटेक्चर और इसकी निर्देश प्रणाली प्रभावी ढंग से टेट्राड में हेरफेर करने में सक्षम नहीं है।

प्रतिस्थापन ब्लॉक के सॉफ़्टवेयर कार्यान्वयन के लिए, क्रिप्टोफ़ंक्शन के आरंभीकरण के चरण में तैयार की गई रैम में विशेष तालिकाओं का उपयोग किया जाता है। ये तालिकाएँ आसन्न टेट्राड के प्रतिस्थापन नोड्स को 8 × 8-बिट बाइट तालिकाओं में जोड़ती हैं, इस प्रकार रैम में चार 256-बाइट तालिकाएँ रखती हैं।

अधिक उन्नत कार्यान्वयन में, ये तालिकाएँ आकार में 1024 बाइट्स (चार बाइट्स के 256 शब्द) हैं। यह प्रतिस्थापन (GOST के अनुसार रूपांतरण एल्गोरिथ्म का अगला ऑपरेशन) के परिणामस्वरूप प्राप्त 32-बिट शब्द के 11 पदों द्वारा तालिकाओं में एक अतिरिक्त चक्रीय बदलाव को लागू करने के लिए किया गया था। इस पद्धति का उपयोग करके GOST कार्यान्वयन का एक उदाहरण परिशिष्ट 1 (डिस्क पर) में दिखाया गया है।

प्रतिस्थापन ब्लॉक की जानकारी क्रिप्टोफ़ंक्शन का एक गुप्त घटक है (जैसा कि GOST में तैयार किया गया है, चित्र 2 देखें)।

इन तालिकाओं को ओपी में प्रतिस्थापन ब्लॉक की कुंजियों के साथ रखना GOST (खंड 1.7) की आवश्यकताओं के विपरीत है, क्योंकि कंप्यूटिंग इंस्टॉलेशन पर चलने वाले तीसरे पक्ष के कार्यक्रमों के लिए गुप्त जानकारी उपलब्ध हो जाती है। एफएसबी, जो GOST के अनुसार एन्क्रिप्शन के सॉफ़्टवेयर कार्यान्वयन को भी प्रमाणित करता है, इस उल्लंघन को हल्के ढंग से, कृपालुता से देखता है। यदि, ओपी में चाबियाँ रखने के लिए, एफएसबी को अभी भी "अंजीर का पत्ता" की आवश्यकता है - एक्सओआर ऑपरेशन का उपयोग करके चाबियों को मास्क करना, तो ओपी में प्रतिस्थापन ब्लॉकों के लिए कुछ भी आवश्यक नहीं है, वे स्पष्ट रूप में संग्रहीत हैं;

संक्षेप में, FSB ऐसे समाधान की सुरक्षा में स्पष्ट कमी और GOST (खंड 1.7) के अनुसार अपनी स्वयं की आवश्यकताओं के प्रत्यक्ष उल्लंघन के बावजूद, क्रिप्टोप्रक्रियाओं के ऐसे सॉफ़्टवेयर कार्यान्वयन को पारित करने की अनुमति देता है। और यह मेमोरी डंप लेकर सिफर को तोड़ने की प्रसिद्ध विधियों के बावजूद...

हम थोड़ी देर बाद प्रोसेसर के आंतरिक रजिस्टरों में चाबियाँ और प्रतिस्थापन ब्लॉक संग्रहीत करने के मुद्दे पर लौटेंगे (एक सुंदर और तेज़ समाधान है), लेकिन अभी के लिए हम केवल एमएमएक्स रजिस्टरों में एन्क्रिप्शन कुंजी संग्रहीत करेंगे, यह अधिक विश्वसनीय है।

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

GOST 28147-89 का बहुप्रचारित कार्यान्वयन

ज्ञात एल्गोरिदम में क्रिप्टो प्रक्रियाओं को तेज़ करने का एकमात्र तरीका मल्टीथ्रेडिंग शुरू करना है। एल्गोरिदम के कार्यान्वयन में इस परिवर्तन का उद्देश्य समानांतर में डेटा के कई ब्लॉकों की गणना करना है।

अधिकांश प्रोग्रामर समानांतर प्रसंस्करण से तात्पर्य विशेष रूप से कई प्रोसेसर कोर के काम से करते हैं, जो मेमोरी में इंटरप्ट और सेमाफोर के माध्यम से सिंक्रनाइज़ होते हैं।

हालाँकि, एकल प्रोसेसर कोर पर समानांतर डेटा प्रोसेसिंग के लिए एक और विकल्प है। आइए मैं इस गैर-स्पष्ट विचार को समझाऊं।

आधुनिक प्रोसेसर में कम से कम दो, और यहां तक ​​कि तीन से छह अंकगणितीय-तार्किक इकाइयां शामिल हैं। ये ALUs (FPUs, एड्रेस अंकगणितीय इकाइयाँ, इत्यादि) एक दूसरे से स्वतंत्र रूप से काम कर सकते हैं, उनके समानांतर संचालन के लिए एकमात्र शर्त यह है कि वे जिन सॉफ़्टवेयर ऑब्जेक्ट्स पर काम करते हैं वे असंयुक्त हों; दूसरे शब्दों में, एक साथ ALU निष्पादित करने वाले निर्देशों में, मेमोरी पते और रजिस्टर नंबर अलग-अलग होने चाहिए। या, विभिन्न प्रोसेसर निष्पादन इकाइयों द्वारा एक्सेस किए गए साझा रजिस्टरों और मेमोरी पतों पर कोई लेखन नहीं किया जाना चाहिए।

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

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

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

एक प्रोसेसर कोर पर कई स्वतंत्र प्रोग्राम थ्रेड्स को निष्पादित करने की संभावना का एक विशिष्ट उदाहरण GOST कार्यान्वयन है, जिसे एक ही प्रोसेसर कोर पर दो थ्रेड्स में निष्पादित किया जाता है। कोड का विचार सरल है: एन्क्रिप्ट/डिक्रिप्ट करने के लिए डेटा के दो ब्लॉक हैं, लेकिन एक प्रोसेसर कोर है जो रूपांतरण करेगा। इन दो डेटा ब्लॉकों पर क्रमिक रूप से रूपांतरण करना संभव है, और यह आज तक किया गया है। इस मामले में, परिवर्तनों को पूरा करने में लगने वाला समय दोगुना हो जाता है।

लेकिन आप इसे अलग तरीके से कर सकते हैं: विभिन्न डेटा ब्लॉक के प्रसंस्करण से संबंधित वैकल्पिक आदेश। ये विकल्प चित्र में ग्राफ़िक रूप से प्रस्तुत किए गए हैं। 3.


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

निम्नलिखित विभिन्न प्रोसेसिंग थ्रेड्स से इंटरलीविंग कमांड का एक उदाहरण है। इस मामले में, विभिन्न डेटा ब्लॉक से संबंधित कमांड इंटरलीव किए जाते हैं। शेड्यूलर उन निर्देशों का चयन करता है जो एक दूसरे से स्वतंत्र होते हैं और उन्हें निष्पादन के लिए ALU1 और ALU2 पर भेजता है। इन ALU पर पहले और दूसरे थ्रेड के कमांड का समूहन स्वचालित रूप से किया जाता है, क्योंकि शेड्यूलर ऑपरेटिंग एल्गोरिदम में एक ही कार्यकारी डिवाइस पर सामान्य डेटा से जुड़े कमांड का समूह शामिल होता है।

ऐसे प्रोग्राम कोड के लिए ALU डाउनटाइम के बिना काम करने के लिए, यह आवश्यक है कि प्रत्येक प्रोग्राम थ्रेड रजिस्टरों के अपने सेट के साथ काम करे। इस योजना में कैश एक बाधा बन जाता है (इसमें केवल दो डेटा आउटपुट पोर्ट हैं), इसलिए हम कुंजी को एमएमएक्स रजिस्टरों में संग्रहीत करते हैं। चूँकि इस मामले में मेमोरी में प्रतिस्थापन (और शिफ्ट) नोड्स केवल पढ़े जाते हैं, वे दोनों प्रोग्राम थ्रेड्स के लिए सामान्य हो सकते हैं।

यह, निश्चित रूप से, एक ही कोर पर प्रोग्राम थ्रेड्स के समानांतर निष्पादन के सिद्धांत की एक बहुत ही सरल व्याख्या है, वास्तव में, सब कुछ बहुत अधिक जटिल है; व्यवहार में, आपको एक्चुएटर्स की पाइपलाइन वास्तुकला, कैश और आरओएन रजिस्टर ब्लॉक तक एक साथ पहुंच पर प्रतिबंध, पता अंकगणित नोड्स, स्विच और बहुत कुछ की उपस्थिति को ध्यान में रखना होगा... इसलिए यह पेशेवरों के लिए एक विषय है, जो एक हाथ की उंगलियों पर गिने जा सकें...

समानांतर एन्क्रिप्शन विधि केवल 64-बिट प्रोसेसर ऑपरेटिंग मोड के लिए प्रभावी ढंग से कार्यान्वित की जाती है, क्योंकि इस मोड में पर्याप्त संख्या में आरओएन (लगभग 16 टुकड़े!) होते हैं। इस पद्धति का उपयोग करके GOST कार्यान्वयन का एक उदाहरण परिशिष्ट 2 (डिस्क पर) में दिखाया गया है।

यह स्पष्ट है कि इस GOST कार्यान्वयन में 2 RTT कोड का कोड प्रदर्शन है। अब आइए देखें कि यह निष्पादन समय को कैसे प्रभावित करता है।

एक थ्रेड (परिशिष्ट 1) के लिए एन्क्रिप्शन चक्र 352 घड़ी चक्र है, और इस दौरान GOST (परिशिष्ट 2) के दो-थ्रेडेड कार्यान्वयन के लिए 8 बाइट्स डेटा की गणना की जाती है, 416 प्रोसेसर चक्रों की आवश्यकता होती है, लेकिन 16 बाइट्स की गणना की जाती है; इस प्रकार, 3.6 गीगाहर्ट्ज़ प्रोसेसर के लिए परिणामी रूपांतरण गति 80 से बढ़कर 144 मेगाबाइट हो जाती है।

एक दिलचस्प तस्वीर उभरती है: कोड में ठीक दोगुने कमांड होते हैं, और केवल 15% अधिक समय तक निष्पादित होता है, लेकिन मुझे लगता है कि पाठक इस घटना का कारण पहले ही समझ चुके हैं...

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

यदि कोई मेरी बात पर विश्वास नहीं करता है, तो ऐसे अविश्वासियों के लिए, घड़ी काउंटरों के साथ परीक्षण कार्यक्रम डिस्क पर शामिल किए गए हैं। प्रोग्राम सोर्स कोड में हैं, निश्चित रूप से असेंबलर में, इसलिए मेरे शब्दों की जांच करने का अवसर है, और साथ ही, पेशेवर कोडिंग की कुछ तरकीबें भी देख सकते हैं।

GOST 28147-89 को लागू करने के लिए आधुनिक प्रोसेसर के SSE रजिस्टरों और AVX कमांड का उपयोग करना

x86/64 आर्किटेक्चर के आधुनिक प्रोसेसर में 16 बाइट्स आकार के एसएसई रजिस्टरों का एक सेट और इन रजिस्टरों पर विभिन्न संचालन करने के लिए विशेष एफपीयू (कम से कम दो) शामिल हैं। इस उपकरण पर GOST लागू करना संभव है, और इस मामले में, प्रतिस्थापन नोड्स को रैम में तालिकाओं के रूप में नहीं, बल्कि सीधे समर्पित एसएसई रजिस्टरों पर रखा जा सकता है।

एक एसएसई रजिस्टर एक साथ 16 पंक्तियों की दो तालिकाओं को समायोजित कर सकता है। इस प्रकार, चार एसएसई रजिस्टर सभी प्रतिस्थापन तालिकाओं को पूरी तरह से समायोजित करेंगे। ऐसे प्लेसमेंट के लिए एकमात्र शर्त इंटरलीविंग आवश्यकता है, जिसके अनुसार एक ही बाइट के टेट्राड को अलग-अलग एसएसई रजिस्टरों में रखा जाना चाहिए। इसके अलावा, एसएसई रजिस्टरों के बाइट्स के निम्न और उच्च टेट्राड में क्रमशः इनपुट बाइट्स के निम्न और उच्च टेट्राड को रखने की सलाह दी जाती है।

ये आवश्यकताएं AVX कमांड के मौजूदा सेट के लिए अनुकूलन द्वारा निर्धारित की जाती हैं। इस प्रकार, एसएसई रजिस्टर के प्रत्येक बाइट में प्रतिस्थापन ब्लॉक के इनपुट रजिस्टर के विभिन्न बाइट्स के अनुरूप दो टेट्राड होंगे, जबकि एसएसई रजिस्टर में बाइट की स्थिति विशिष्ट रूप से प्रतिस्थापन ब्लॉक प्रतिस्थापन तालिका में सूचकांक से मेल खाती है।

एसएसई रजिस्टरों पर प्रतिस्थापन नोड्स के संभावित प्लेसमेंट में से एक का आरेख चित्र में दिखाया गया है। 4.


एसएसई रजिस्टरों पर प्रतिस्थापन नोड्स की गुप्त जानकारी रखने से क्रिप्टो प्रक्रिया की सुरक्षा बढ़ जाती है, लेकिन निम्नलिखित शर्तों को पूरा करने पर इस गुप्त जानकारी का पूर्ण अलगाव संभव है:

  • प्रोसेसर कोर को हाइपरविजर होस्ट मोड में स्विच किया जाता है, और इसमें इंटरप्ट ब्लॉक (एपीआईसी) को जबरन अक्षम कर दिया जाता है। इस स्थिति में, प्रोसेसर कोर ओएस और कंप्यूटिंग इंस्टॉलेशन पर चलने वाले एप्लिकेशन से पूरी तरह से अलग हो जाता है।
  • एसएसई रजिस्टर लोड किए जाते हैं और ओएस शुरू होने से पहले कंप्यूटिंग कोर को अलग कर दिया जाता है; विश्वसनीय बूट मॉड्यूल (टीएलएम) से इन प्रक्रियाओं को निष्पादित करना इष्टतम है।
  • GOST के अनुसार क्रिप्टोप्रक्रियाओं के लिए प्रोग्राम कंप्यूटिंग इंस्टॉलेशन के गैर-संशोधित मेमोरी क्षेत्र (या तो BIOS या MDZ की फ्लैश मेमोरी में) में स्थित हैं।

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

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

एसएसई रजिस्टरों पर प्रतिस्थापन भंडारण नोड्स और एफपीयू ब्लॉकों में एक बहु-इनपुट स्विच होने से, प्रतिस्थापन ब्लॉक में निम्नलिखित परिवर्तन को व्यवस्थित करना संभव है (चित्र 5)।

इस योजना में, प्रत्येक टेट्राड में इनपुट रजिस्टर संबंधित स्विच के लिए पता निर्दिष्ट करता है, जो प्रतिस्थापन नोड्स के ड्राइव से डेटा बस के माध्यम से आउटपुट रजिस्टर तक जानकारी प्रसारित करता है। इस योजना को तीन प्रकार से आयोजित किया जा सकता है:

  • एक उपयुक्त चिप डिज़ाइन बनाएं, लेकिन यह हमारे लिए शानदार है।
  • मौजूदा प्रोसेसर पर इस फ़ंक्शन को लागू करने के लिए माइक्रोकोड को पुन: प्रोग्राम करना और अपना स्वयं का प्रोसेसर कमांड बनाना अब एक कल्पना नहीं है, लेकिन, दुर्भाग्य से, वर्तमान परिस्थितियों में यह अवास्तविक है।
  • आधिकारिक AVX कमांड का उपयोग करके एक प्रोग्राम लिखें। विकल्प बहुत प्रभावी नहीं हो सकता है, लेकिन इसे "यहां और अभी" लागू किया जा सकता है। तो आगे हम यही करेंगे।

स्विचों का संचालन एक विशेष तीन-पता कमांड AVX VPSHUFB द्वारा नियंत्रित किया जाता है। इसका पहला ऑपरेंड स्विचों से सूचना प्राप्तकर्ता है, दूसरा वह स्रोत है जिससे स्विचों के इनपुट जुड़े हुए हैं। तीसरा ऑपरेंड स्विचों के लिए एक नियंत्रण रजिस्टर है, जिसका प्रत्येक बाइट संबंधित स्विच से जुड़ा होता है; इसमें मान उस दिशा की संख्या निर्दिष्ट करता है जिससे स्विच जानकारी पढ़ता है। आधिकारिक इंटेल दस्तावेज़ से इस कमांड के विवरण के लिए चित्र देखें। 5. चित्र में. चित्र 6 एक आरेख दिखाता है कि यह कमांड कैसे काम करता है - एसएसई रजिस्टरों का केवल आधा हिस्सा दिखाया गया है, दूसरे आधे के लिए सब कुछ समान है।


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

एफपीयू स्विच के माध्यम से टेट्राड के नमूने के लिए एक कार्यक्रम लिखा गया था, लेकिन मैंने इसे एप्लिकेशन में भी नहीं डाला - यह बहुत दयनीय है। 128-बिट रजिस्टर रखना और उसमें केवल 32 बिट्स का उपयोग करना अव्यवसायिक है।

जैसा कि वे कहते हैं, "हमारी अंतिम रेखा क्षितिज है," तो इसे निचोड़ें, इसे निचोड़ें... हम इसे दबाएंगे और बैगों में डाल देंगे!

यह शब्दों का खेल नहीं है, बल्कि एक कठोर एफपीयू वास्तविकता है - एसएसई रजिस्टरों को समान भागों में विभाजित किया जा सकता है और इन भागों पर एक ही कमांड के साथ समान परिवर्तन किए जा सकते हैं। प्रोसेसर को इसे समझने के लिए, एक जादुई अक्षर "पी" है - एक पैकेट जिसे कमांड निमोनिक्स से पहले रखा जाता है, और कोई कम जादुई अक्षर "क्यू", "डी", "डब्ल्यू", "बी" नहीं है, जो अंत में रखे गए हैं और घोषित करते हैं कि इस कमांड में एसएसई रजिस्टरों को किन भागों में विभाजित किया गया है?


हम एसएसई रजिस्टर के साथ बैच मोड में रुचि रखते हैं जो चार 32-बिट ब्लॉकों में विभाजित है; तदनुसार, सभी कमांड के पहले "P" और अंत में "D" चिन्ह लगा होगा। इससे एक प्रोसेसर कमांड के साथ समानांतर में चार 32-बिट ब्लॉक को संसाधित करना संभव हो जाता है, यानी समानांतर में चार डेटा ब्लॉक की गणना करना संभव हो जाता है।

इस विधि को लागू करने वाला प्रोग्राम सभी स्पष्टीकरणों के साथ परिशिष्ट 3 में उपलब्ध है।

हालाँकि, इतना दबाओ! आधुनिक प्रोसेसर में कम से कम दो एफपीयू होते हैं, और उन्हें पूरी तरह से लोड करने के लिए दो स्वतंत्र निर्देश थ्रेड का उपयोग किया जा सकता है। यदि आप स्वतंत्र थ्रेड्स से कमांड को सही ढंग से वैकल्पिक करते हैं, तो आप दोनों एफपीयू इकाइयों को पूरी तरह से काम से लोड कर सकते हैं और एक साथ आठ समानांतर संसाधित डेटा स्ट्रीम प्राप्त कर सकते हैं। ऐसा कार्यक्रम लिखा गया था, और इसे परिशिष्ट 4 में देखा जा सकता है, लेकिन आपको इसे ध्यान से देखने की ज़रूरत है - आप पागल हो सकते हैं। इसे ही कहते हैं "कोड हर किसी के लिए नहीं है..."।

कीमत का मुद्दा

प्रतिस्थापन नोड्स को संग्रहीत करने के लिए एसएसई रजिस्टरों का उपयोग समझ में आता है - यह गुप्त जानकारी के अलगाव की कुछ गारंटी प्रदान करता है, लेकिन एफपीयू पर क्रिप्टोफ़ंक्शन की गणना करने का अर्थ स्पष्ट नहीं है। इसलिए, मानक प्रक्रियाओं के निष्पादन समय को चार और आठ थ्रेड्स के लिए GOST के अनुसार प्रत्यक्ष प्रतिस्थापन विधि का उपयोग करके मापा गया था।

चार थ्रेड्स के लिए, 472 प्रोसेसर चक्रों की निष्पादन गति प्राप्त की गई थी। इस प्रकार, 3.6 गीगाहर्ट्ज़ की आवृत्ति वाले प्रोसेसर के लिए, एक थ्रेड की गणना क्रमशः 59 मेगाबाइट प्रति सेकंड की गति से और चार थ्रेड की गणना क्रमशः 236 मेगाबाइट प्रति सेकंड की गति से की जाती है।

आठ थ्रेड्स के लिए, 580 प्रोसेसर चक्रों की निष्पादन गति प्राप्त की गई थी। इस प्रकार, 3.6 गीगाहर्ट्ज़ प्रोसेसर के लिए, एक थ्रेड की गणना 49 मेगाबाइट प्रति सेकंड और आठ थ्रेड की गणना 392 मेगाबाइट प्रति सेकंड पर होती है।

जैसा कि पाठक देख सकते हैं, उदाहरण #3 के कोड का प्रदर्शन 4 आरटीटी है, और उदाहरण #4 के कोड का प्रदर्शन 8 आरटीटी है। एसएसई रजिस्टरों पर इन उदाहरणों में, पैटर्न आरओएन का उपयोग करते समय समान हैं, केवल शेड्यूलर ने अपनी दक्षता कम कर दी है। यह वर्तमान में कोड की लंबाई को दोगुना करते हुए अवधि में 20% की वृद्धि प्रदान करता है।

इसके अलावा, ये परिणाम इंटेल और एएमडी प्रोसेसर दोनों में उपलब्ध सार्वभौमिक एवीएक्स कमांड का उपयोग करके प्राप्त किए गए थे। यदि आप AMD प्रोसेसर के लिए अनुकूलन करते हैं, तो परिणाम बहुत बेहतर होगा। यह प्रवृत्ति के विपरीत लगता है, लेकिन फिर भी यह सच है, और यहां बताया गया है: एएमडी प्रोसेसर में निर्देशों का एक अतिरिक्त सेट होता है, तथाकथित एक्सओपी एक्सटेंशन, और निर्देशों के इस अतिरिक्त सेट में वे होते हैं जो कार्यान्वयन को महत्वपूर्ण रूप से सरल बनाते हैं गोस्ट एल्गोरिथम.

यह तार्किक बर्स्ट बाइट शिफ्ट और दोहरे शब्दों के बर्स्ट चक्रीय शिफ्ट के लिए आदेशों को संदर्भित करता है। परिशिष्ट 3 और 4 में दिए गए उदाहरणों में, सार्वभौमिक आदेशों के अनुक्रम का उपयोग किया जाता है जो आवश्यक परिवर्तन को लागू करते हैं: पहले मामले में, एक "अतिरिक्त" आदेश, और दूसरे मामले में, एक साथ चार अतिरिक्त आदेश। तो वहाँ अनुकूलन भंडार हैं, और काफी हैं।

जब आगे अनुकूलन की बात आती है, तो यह 256-बिट रजिस्टरों (वाईएमएम रजिस्टरों) की उपस्थिति को याद रखने योग्य है, जिसके उपयोग से आप सैद्धांतिक रूप से गणना की गति को दोगुना कर सकते हैं। लेकिन फिलहाल यह केवल एक संभावना है; 256-बिट निर्देशों को निष्पादित करते समय प्रोसेसर बहुत धीमा हो जाता है (एफपीयू की पथ चौड़ाई 128 बिट्स है)। प्रयोगों से पता चला है कि आधुनिक प्रोसेसर पर, YMM रजिस्टरों पर 16 थ्रेड्स की गिनती करने से कोई लाभ नहीं मिलता है। लेकिन यह केवल अभी के लिए है; नए प्रोसेसर मॉडल पर, 256-बिट निर्देशों का प्रदर्शन निस्संदेह बढ़ाया जाएगा, और फिर 16 समानांतर थ्रेड्स का उपयोग उचित हो जाएगा और क्रिप्टो प्रक्रिया की गति में और भी अधिक वृद्धि होगी। .

सैद्धांतिक रूप से, आप 600-700 मेगाबाइट प्रति सेकंड की गति पर भरोसा कर सकते हैं यदि प्रोसेसर में 256 बिट्स की कार्य पथ चौड़ाई के साथ दो एफपीयू हैं। इस मामले में, हम 16 आरटीटी की दक्षता के साथ कोड लिखने के बारे में बात कर सकते हैं, और यह कल्पना नहीं है, बल्कि निकट भविष्य है।

मिश्रित मोड

फिर से रजिस्टरों की संख्या का सवाल उठता है कि ऐसे एल्गोरिदम को बढ़ावा देने के लिए रजिस्टरों की संख्या पर्याप्त नहीं है। लेकिन हाइपरट्रेडिंग मोड हमारी मदद करेगा। प्रोसेसर कोर में लॉजिकल प्रोसेसर मोड में रजिस्टरों का दूसरा सेट उपलब्ध है। इसलिए, हम एक ही बार में दो लॉजिकल प्रोसेसर पर एक ही कोड निष्पादित करेंगे। इस मोड में, बेशक, हमारे पास अधिक एक्चुएटर्स नहीं होंगे, लेकिन विकल्प के कारण हम सभी एक्चुएटर्स का पूरा लोड प्राप्त कर सकते हैं।

आप यहां 50% की वृद्धि पर भरोसा नहीं कर सकते हैं; बाधा कैश मेमोरी है जहां तकनीकी मुखौटे संग्रहीत हैं, लेकिन आप अभी भी 100 अतिरिक्त मेगाबाइट की वृद्धि प्राप्त कर सकते हैं। यह विकल्प परिशिष्टों में नहीं दिखाया गया है (मैक्रोज़ 8 आरटीटी कोड में प्रयुक्त मैक्रोज़ के समान हैं), लेकिन यह प्रोग्राम फ़ाइलों में उपलब्ध है। इसलिए यदि किसी को एकल प्रोसेसर कोर पर 500 मेगाबाइट प्रति सेकंड की गति से एन्क्रिप्शन की संभावना पर विश्वास नहीं है, तो उन्हें परीक्षण फ़ाइलें चलाने दें। टिप्पणियों के साथ पाठ भी हैं ताकि कोई यह न सोचे कि मैं झूठ बोल रहा हूं।

यह फोकस केवल इंटेल प्रोसेसर पर ही संभव है; एएमडी में प्रति दो प्रोसेसर मॉड्यूल में केवल दो एफपीयू इकाइयां हैं (हाइपरट्रेडिंग मोड के अनुरूप)। लेकिन चार और ALU हैं जिनका उपयोग न करना पाप होगा।

आप बुलडोजर प्रोसेसर मॉड्यूल को हाइपरट्रेडिंग मोड के समान मोड में डाल सकते हैं, लेकिन एक थ्रेड में विभिन्न मॉड्यूल पर आरओएन में रूपांतरण चलाएं, और दूसरे थ्रेड में एसएसई रजिस्टर पर और समान 12 आरटीटी प्राप्त करें। मैंने इस विकल्प का परीक्षण नहीं किया है, लेकिन मुझे लगता है कि 12 आरटीटी कोड एएमडी पर अधिक कुशलता से काम करेगा। जो लोग रुचि रखते हैं वे इसे आज़मा सकते हैं; परीक्षण कार्यक्रमों को "बुलडोज़र" पर काम करने के लिए काफी आसानी से समायोजित किया जा सकता है।

इसकी जरूरत किसे है?

एक गंभीर प्रश्न, लेकिन एक सरल उत्तर के साथ - हर किसी को इसकी आवश्यकता है। जल्द ही हम सभी बादलों से जुड़ जाएंगे, हम डेटा और प्रोग्राम दोनों को वहां संग्रहीत करेंगे, और वहां, ओह, हम अपना निजी कोना कैसे बनाना चाहते हैं। ऐसा करने के लिए, आपको ट्रैफ़िक को एन्क्रिप्ट करना होगा, और क्रिप्टो रूपांतरण की गति क्लाउड में आरामदायक काम का मुख्य निर्धारण कारक होगी। एन्क्रिप्शन एल्गोरिदम की हमारी पसंद छोटी है - या तो GOST या AES।

इसके अलावा, अजीब तरह से, प्रोसेसर में निर्मित एईएस एन्क्रिप्शन एल्गोरिदम बहुत धीमा हो जाता है; परीक्षण प्रति सेकंड 100-150 मेगाबाइट की गति दिखाते हैं, और यह एल्गोरिदम के हार्डवेयर कार्यान्वयन के साथ है! समस्या एकल-थ्रेडेड गिनती और प्रतिस्थापन ब्लॉक में है, जो बाइट्स (256 पंक्तियों की एक तालिका) पर काम करती है। इसलिए x86/64 आर्किटेक्चर पर लागू होने पर GOST अधिक प्रभावी हो जाता है, किसने सोचा होगा...

यह तब है जब हम एन्क्रिप्शन गति के प्राप्त स्तर के बारे में बात करते हैं। और अगर हम कोड दक्षता बढ़ाने के क्षेत्र में सैद्धांतिक शोधन को ध्यान में रखते हैं, तो सबसे अधिक संभावना है कि किसी को इसकी आवश्यकता नहीं है। 3-6 आरटीटी स्तर पर व्यावहारिक रूप से कोई विशेषज्ञ नहीं हैं, कंपाइलर आम तौर पर 1-2.5 आरटीटी स्तर पर कोड उत्पन्न करते हैं, और अधिकांश प्रोग्रामर असेंबलर को नहीं जानते हैं, और भले ही वे इसकी वर्तनी जानते हों, वे इसके डिज़ाइन को नहीं समझते हैं एक आधुनिक प्रोसेसर. और इस ज्ञान के बिना, इससे कोई फर्क नहीं पड़ता कि यह असेंबलर है या किसी प्रकार का एसआई-शार्प।

लेकिन सब कुछ इतना दुखद नहीं है: एक सप्ताह की रातों की नींद हराम करने के बाद मुख्य बात GOST को लागू करने के लिए एक नया एल्गोरिदम है, जिसका पेटेंट न कराना पाप होगा। और पेटेंट के लिए आवेदन (कुल तीन) पहले ही पूरे हो चुके हैं और दायर किए जा चुके हैं, इसलिए, सज्जनों, व्यापारियों, लाइन में लग जाओ - महिलाओं और बच्चों को छूट मिलती है।

इस सिफर का इतिहास बहुत पुराना है. एल्गोरिथ्म, जिसने बाद में मानक का आधार बनाया, संभवतः, यूएसएसआर के केजीबी के आठवें मुख्य निदेशालय (अब एफएसबी की संरचना के भीतर) में पैदा हुआ था, सबसे अधिक संभावना है, बंद शोध में से एक में इसके अधीनस्थ संस्थान, संभवतः 1970 के दशक में विभिन्न कंप्यूटर प्लेटफार्मों के लिए सिफर के सॉफ्टवेयर और हार्डवेयर कार्यान्वयन बनाने की परियोजनाओं के हिस्से के रूप में।

GOST के प्रकाशन के बाद से, इसे प्रतिबंधात्मक स्टांप "आधिकारिक उपयोग के लिए" के साथ चिह्नित किया गया था, और औपचारिक रूप से सिफर को केवल मई 1994 में "पूरी तरह से खुला" घोषित किया गया था। सिफर के निर्माण का इतिहास और डेवलपर्स के मानदंड 2010 तक प्रकाशित नहीं किए गए हैं।

विवरण

GOST 28147-89 256-बिट कुंजी और 32 रूपांतरण चक्रों वाला एक ब्लॉक सिफर है, जो 64-बिट ब्लॉक पर काम करता है। सिफर एल्गोरिथम का आधार फिस्टेल नेटवर्क है। GOST 28147-89 के अनुसार चार ऑपरेटिंग मोड हैं:

  • सिम्युलेटेड प्रविष्टि मोड।

आसान प्रतिस्थापन मोड

इस मोड में एन्क्रिप्ट करने के लिए, प्लेनटेक्स्ट को पहले दो हिस्सों (कम बिट्स - ए, हाई बिट्स - बी) में विभाजित किया जाता है। i-वें चक्र पर, उपकुंजी K i का उपयोग किया जाता है:

(= बाइनरी "अनन्य या")

उपकुंजियाँ उत्पन्न करने के लिए, मूल 256-बिट कुंजी को आठ 32-बिट ब्लॉकों में विभाजित किया गया है: K 1 ... K 8।

कुंजियाँ K 9 ... K 24 कुंजियाँ K 1 ... K 8 (कम से कम महत्वपूर्ण से उच्चतम बिट्स तक क्रमांकित) की चक्रीय पुनरावृत्ति हैं। कुंजियाँ K 25...K 32 कुंजियाँ K 8...K 1 हैं।

एल्गोरिदम के सभी 32 राउंड पूरे करने के बाद, ब्लॉक ए 33 और बी 33 को एक साथ चिपका दिया जाता है (ध्यान दें कि सबसे महत्वपूर्ण बिट ए 33 बन जाता है और सबसे कम महत्वपूर्ण बिट बी 33 बन जाता है) - परिणाम एल्गोरिदम का परिणाम है।

डिक्रिप्शन एन्क्रिप्शन की तरह ही किया जाता है, लेकिन उपकुंजियों K i का क्रम उलटा होता है।

समारोहकी गणना इस प्रकार की जाती है:

ए आई और के आई को मॉड्यूलो 2 32 में जोड़ा गया है।

परिणाम को आठ 4-बिट अनुक्रमों में विभाजित किया गया है, जिनमें से प्रत्येक का अपना इनपुट है प्रतिस्थापन तालिका नोड(बिट प्राथमिकता के आरोही क्रम में), नीचे कहा गया है एस ब्लॉक. GOST S-ब्लॉक की कुल संख्या आठ है, यानी अनुवर्ती संख्या के समान। प्रत्येक एस ब्लॉक 0 से 15 तक संख्याओं का क्रमपरिवर्तन है। पहला 4-बिट अनुवर्ती पहले एस-बॉक्स के इनपुट पर जाता है, दूसरा - दूसरे के इनपुट पर, आदि।

अगर एस ब्लॉकऐसा लगता है:

1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12

और एस-ब्लॉक का इनपुट 0 है, तो आउटपुट 1 होगा, यदि 4 है, तो आउटपुट 5 होगा, यदि इनपुट 12 है, तो आउटपुट 6 होगा, आदि।

सभी आठ एस-बॉक्स के आउटपुट को 32-बिट शब्द में संयोजित किया जाता है, फिर पूरे शब्द को 11 बिट्स द्वारा चक्रीय रूप से बाईं ओर (सबसे महत्वपूर्ण बिट्स की ओर) स्थानांतरित कर दिया जाता है।

सरल प्रतिस्थापन मोड के निम्नलिखित नुकसान हैं:

  • इसका उपयोग केवल 64 बिट्स की लंबाई वाले प्लेनटेक्स्ट को एन्क्रिप्ट करने के लिए किया जा सकता है
  • प्लेनटेक्स्ट के समान ब्लॉकों को एन्क्रिप्ट करके, सिफरटेक्स्ट के समान ब्लॉक प्राप्त किए जाते हैं, जो एक क्रिप्टोनालिस्ट को कुछ जानकारी प्रदान कर सकते हैं।

मानक के पाठ में कहा गया है कि प्रतिस्थापन नोड्स (एस-बॉक्स) भरने की आपूर्ति निर्धारित तरीके से की जाती है, अर्थात एल्गोरिदम के डेवलपर द्वारा। रूसी सीआईपीएफ डेवलपर्स का समुदाय इंटरनेट पर उपयोग किए जाने वाले प्रतिस्थापन नोड्स पर सहमत हो गया है, आरएफसी 4357 देखें।

गोस्ट के लाभ

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

क्रिप्टएनालिसिस

ऐसा माना जाता है (उदाहरण के लिए, विटाली वी. शोरिन, वादिम वी. जेलेज़्नियाकोव और अर्न्स्ट एम. गैबिडुलिन: रूसी GOST का रैखिक और विभेदक क्रिप्टोनालिसिस देखें) कि GOST रैखिक और विभेदक क्रिप्टोनालिसिस जैसी व्यापक रूप से उपयोग की जाने वाली विधियों के लिए प्रतिरोधी है। अंतिम आठ राउंड में कुंजियों के क्रम को उलटने से स्लाइड हमलों और प्रतिबिंब हमलों के खिलाफ सुरक्षा मिलती है।

मई 2011 में, प्रसिद्ध क्रिप्टोएनालिस्ट निकोलस कोर्टोइस ने इस सिफर पर हमले के अस्तित्व को साबित किया, जिसकी जटिलता कुंजी की प्रत्यक्ष खोज की जटिलता से 2 8 (256) गुना कम है, बशर्ते कि 2 64 प्लेनटेक्स्ट/प्लेनटेक्स्ट जोड़े हों। इसकी कम्प्यूटेशनल जटिलता बहुत अधिक होने के कारण इस हमले को व्यवहार में नहीं लाया जा सकता। इसके अलावा, 2 64 प्लेनटेक्स्ट/प्राइवेटटेक्स्ट जोड़े को जानने से आप स्पष्ट रूप से कुंजी की गणना किए बिना सिफरटेक्स्ट को पढ़ सकते हैं। अधिकांश अन्य कार्य ऐसे हमलों का भी वर्णन करते हैं जो केवल कुछ मान्यताओं के तहत लागू होते हैं, जैसे कि एक निश्चित प्रकार की कुंजी या प्रतिस्थापन तालिकाएं, मूल एल्गोरिदम में कुछ संशोधन, या जिसके लिए अभी भी अप्राप्य मात्रा में मेमोरी या गणना की आवश्यकता होती है। यह प्रश्न कि क्या व्यक्तिगत कुंजियों या प्रतिस्थापन तालिकाओं की कमज़ोरियों का फायदा उठाए बिना व्यावहारिक हमले होते हैं, खुला रहता है।

GOST की आलोचना

GOST की मुख्य समस्याएं कुंजी और प्रतिस्थापन तालिकाओं के निर्माण के संदर्भ में मानक की अपूर्णता से संबंधित हैं। ऐसा माना जाता है कि GOST में "कमजोर" कुंजी और प्रतिस्थापन तालिकाएँ हैं, लेकिन मानक "कमजोर" कुंजी को चुनने और समाप्त करने के मानदंडों का वर्णन नहीं करता है। साथ ही, मानक प्रतिस्थापन तालिका (एस-बॉक्स) उत्पन्न करने के लिए कोई एल्गोरिदम निर्दिष्ट नहीं करता है। एक ओर, यह अतिरिक्त गुप्त जानकारी (कुंजी के अतिरिक्त) हो सकती है, और दूसरी ओर, यह कई समस्याएं खड़ी करती है:

  • प्रतिस्थापन तालिका को पहले से जाने बिना किसी एल्गोरिदम की क्रिप्टोग्राफ़िक ताकत निर्धारित करना असंभव है;
  • विभिन्न निर्माताओं से एल्गोरिदम के कार्यान्वयन में अलग-अलग प्रतिस्थापन तालिकाओं का उपयोग हो सकता है और एक दूसरे के साथ असंगत हो सकते हैं;
  • रूसी संघ के लाइसेंसिंग अधिकारियों द्वारा जानबूझकर कमजोर प्रतिस्थापन तालिकाओं के प्रावधान की संभावना;
  • प्रतिस्थापन तालिकाओं का उपयोग करने की क्षमता (मानक में कोई निषेध नहीं) जिसमें नोड्स क्रमपरिवर्तन नहीं हैं, जिससे सिफर की ताकत में अत्यधिक कमी हो सकती है।

अक्टूबर 2010 में, अंतर्राष्ट्रीय मानकीकरण संगठन (ISO/IEC JTC 1/SC 27) की पहली संयुक्त तकनीकी समिति की बैठक में, GOST को अंतर्राष्ट्रीय ब्लॉक एन्क्रिप्शन मानक ISO/IEC 18033-3 में शामिल करने के लिए नामांकित किया गया था। इस संबंध में, जनवरी 2011 में, प्रतिस्थापन नोड्स के निश्चित सेट बनाए गए और उनके क्रिप्टोग्राफ़िक गुणों का विश्लेषण किया गया। हालाँकि, GOST को एक मानक के रूप में नहीं अपनाया गया था, और संबंधित प्रतिस्थापन तालिकाएँ प्रकाशित नहीं की गईं थीं

संभावित अनुप्रयोग

टिप्पणियाँ

यह सभी देखें

लिंक

  • GOST 28147-89 “सूचना प्रसंस्करण प्रणाली। क्रिप्टोग्राफ़िक सुरक्षा. क्रिप्टोग्राफ़िक रूपांतरण एल्गोरिदम"
  • सर्गेई पैनासेंकोएन्क्रिप्शन मानक GOST 28147-89 (रूसी) (15 अगस्त, 2007)। 3 अगस्त 2012 को पुनःप्राप्त.
  • . - ओपनएसएसएल लाइब्रेरी में रूसी क्रिप्टोग्राफ़िक एल्गोरिदम जोड़ने के लिए क्रिप्टोकॉम एलएलसी कंपनी का एक क्रिप्टोग्राफ़िक प्रोजेक्ट। 24 अगस्त 2011 को मूल से संग्रहीत। 16 नवंबर 2008 को पुनःप्राप्त।

साहित्य

  • मेलनिकोव वी.वी.कंप्यूटर सिस्टम में सूचना की सुरक्षा. - एम.: वित्त और सांख्यिकी, 1997।
  • रोमनेट्स यू.वी., टिमोफीव पी.ए., शांगिन वी.एफ.कंप्यूटर सिस्टम और नेटवर्क में सूचना की सुरक्षा। - एम.: रेडियो और संचार, 1999।
  • खारिन यू., बर्निक वी.आई., मतवेव जी.वी.क्रिप्टोलॉजी की गणितीय नींव। - एम.एन. : बीएसयू, 1999.
  • गेरासिमेंको वी.ए., माल्युक ए.ए.सूचना सुरक्षा के मूल सिद्धांत. - एम.: एमजीआईएफआई, 1997।
  • लियोनोव ए.पी., लियोनोव के.पी., फ्रोलोव जी.वी.स्वचालित बैंकिंग और कार्यालय प्रौद्योगिकियों की सुरक्षा। - एम.एन. : राष्ट्रीय किताब चैंबर ऑफ बेलारूस, 1996।
  • विंटर वी.एम.. मोल्दोवियन ए.ए., मोल्दोवियन एन.ए.कंप्यूटर नेटवर्क और प्रेषित सूचना की सुरक्षा। - सेंट पीटर्सबर्ग। : सेंट पीटर्सबर्ग स्टेट यूनिवर्सिटी, 1998।
  • श्नीयर बी. 14.1 एल्गोरिथम GOST 28147-89 // एप्लाइड क्रिप्टोग्राफी। सी भाषा में प्रोटोकॉल, एल्गोरिदम, स्रोत पाठ = एप्लाइड क्रिप्टोग्राफी। सी. में प्रोटोकॉल, एल्गोरिदम और स्रोत कोड - एम.: ट्राइंफ, 2002. - पीपी. 373-377। - 816 पी. - 3000 प्रतियां. - आईएसबीएन 5-89392-055-4
  • पोपोव, वी., कुरेपकिन, आई., और एस. लियोन्टीव GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001, और GOST R 34.11-94 एल्गोरिदम के साथ उपयोग के लिए अतिरिक्त क्रिप्टोग्राफ़िक एल्गोरिदम (अंग्रेजी) // आरएफसी 4357. - आईईटीएफ, जनवरी 2006।

विकिमीडिया फ़ाउंडेशन. 2010.



मित्रों को बताओ