encryption - एईएस एन्क्रिप्शन मोड(सीबीसी ईसीबी सीटीआर ओसीबी सीएफबी) कैसे चुनें?




aes (5)

  1. ईसीबी के अलावा कुछ भी।
  2. यदि सीटीआर का उपयोग करना है, तो यह आवश्यक है कि आप प्रत्येक संदेश के लिए एक अलग चतुर्थ का उपयोग करें, अन्यथा आप हमलावर के साथ दो सिफरटेक्स लेने और संयुक्त अनएन्क्रिप्टेड सादे टेक्स्ट प्राप्त करने में सक्षम होने के साथ समाप्त होते हैं। इसका कारण यह है कि सीटीआर मोड अनिवार्य रूप से एक ब्लॉक सिफर को स्ट्रीम सिफर में बदल देता है, और स्ट्रीम सिफर का पहला नियम कभी भी एक ही कुंजी + IV का दो बार उपयोग नहीं करना है।
  3. वास्तव में इसमें कोई फर्क नहीं पड़ता कि मोड को कार्यान्वित करना कितना मुश्किल है। कुछ मोडों को केवल एन्क्रिप्टिंग दिशा में काम करने के लिए ब्लॉक सिफर की आवश्यकता होती है। हालांकि, एईएस समेत अधिकांश ब्लॉक सिफर, डिक्रिप्शन को लागू करने के लिए अधिक कोड नहीं लेते हैं।
  4. सभी सिफर मोड के लिए, प्रत्येक संदेश के लिए अलग-अलग IVs का उपयोग करना महत्वपूर्ण है यदि आपके संदेश पहले कई बाइट्स में समान हो सकते हैं, और आप नहीं चाहते कि हमलावर इसे जान सके।

उनमें से कौन सा परिस्थितियों में प्राथमिकता दी जाती है?

मैं विभिन्न तरीकों के लिए मूल्यांकन क्रेटिएरिया की सूची देखना चाहता हूं, और शायद प्रत्येक मानदंड की प्रयोज्यता की चर्चा।

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

देखें कि "मूल्यांकन मानदंडों की सूची और प्रत्येक मानदंड की प्रयोज्यता" से मेरा क्या मतलब है ??

यह वास्तव में प्रोग्रामिंग से संबंधित नहीं है लेकिन यह एल्गोरिदम संबंधित है।


आप व्यापक रूप से उपलब्ध होने के आधार पर चुनना चाहेंगे। मेरे पास एक ही सवाल था और यहां मेरे सीमित शोध के परिणाम हैं।

हार्डवेयर सीमाएं

STM32L (low energy ARM cores) from ST Micro support ECB, CBC,CTR GCM
CC2541 (Bluetooth Low Energy) from TI supports ECB, CBC, CFB, OFB, CTR, and CBC-MAC

ओपन सोर्स सीमाएं

Original rijndael-api source  - ECB, CBC, CFB1
OpenSSL - command line CBC, CFB, CFB1, CFB8, ECB, OFB
OpenSSL - C/C++ API    CBC, CFB, CFB1, CFB8, ECB, OFB and CTR
EFAES lib [1] - ECB, CBC, PCBC, OFB, CFB, CRT ([sic] CTR mispelled)  
OpenAES [2] - ECB, CBC 

[1] http://www.codeproject.com/Articles/57478/A-Fast-and-Easy-to-Use-AES-Library

[2] https://openaes.googlecode.com/files/OpenAES-0.8.0.zip


मुझे एक पहलू पता है: हालांकि सीबीसी प्रत्येक ब्लॉक के लिए IV को बदलकर बेहतर सुरक्षा प्रदान करता है, लेकिन यह यादृच्छिक रूप से एक्सेस की गई एन्क्रिप्टेड सामग्री (जैसे एन्क्रिप्टेड हार्ड डिस्क) पर लागू नहीं होता है।

तो, यादृच्छिक पहुंच के लिए अनुक्रमिक धाराओं और ईसीबी के लिए सीबीसी (और अन्य अनुक्रमिक मोड) का उपयोग करें।


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

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

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

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

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

मुझे आईपी मुद्दों से अवगत नहीं है।

अब प्रोफेसर Rogaway से अच्छी चीजों के लिए:

ब्लॉक सिफर मोड, एन्क्रिप्शन लेकिन संदेश अखंडता नहीं

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

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

सीएफबी : एक चतुर्थ-आधारित एन्क्रिप्शन योजना, मोड एक संभाव्य एन्क्रिप्शन योजना के रूप में सुरक्षित है, यादृच्छिक बिट्स से अलगता प्राप्त करने, यादृच्छिक चतुर्थ मानते हुए। यदि IV अनुमानित है , तो न ही गोपनीयता हासिल की जाती है , न ही यदि यह योजना द्वारा उपयोग की जाने वाली एक ही कुंजी के तहत एक गैर- अनुमानित द्वारा बनाई गई है, क्योंकि मानक गलत तरीके से सुझाव देता है। सिफरटेक्स लचीले हैं। कोई सीसीए-सुरक्षा नहीं। अंतर्निहित धारावाहिक होने से एन्क्रिप्शन अक्षम है। योजना पैरामीटर एस, 1 ≤ एस ≤ एन पर निर्भर करती है, आमतौर पर एस = 1 या एस = 8. केवल एक बिट्स को संसाधित करने के लिए एक अवरोधक कॉल की आवश्यकता के लिए अक्षम। मोड एक दिलचस्प "स्वयं सिंक्रनाइज़ेशन" संपत्ति प्राप्त करता है; सिफरटेक्स्ट में किसी भी प्रकार के एस-बिट अक्षरों को सम्मिलित करना या हटाना केवल अस्थायी रूप से सही डिक्रिप्शन को बाधित करता है।

ओएफबी : एक चतुर्थ-आधारित एन्क्रिप्शन योजना, मोड एक संभाव्य एन्क्रिप्शन योजना के रूप में सुरक्षित है, यादृच्छिक बिट्स से अलगता प्राप्त करने, यादृच्छिक चतुर्थ मानते हुए। यदि IV एक nonce है, तो गोपनीयता प्राप्त नहीं की जाती है, हालांकि IVs का एक निश्चित अनुक्रम (उदाहरण के लिए, एक काउंटर) ठीक काम करता है। सिफरटेक्स बहुत लचीले होते हैं। कोई सीसीए सुरक्षा नहीं। अंतर्निहित धारावाहिक होने से एन्क्रिप्शन और डिक्रिप्शन अक्षम। मूल रूप से किसी भी बिट लंबाई के स्ट्रिंग को एन्क्रिप्ट करता है (कोई पैडिंग आवश्यक नहीं है)। मैं सीटीआर मोड पर कोई महत्वपूर्ण लाभ नहीं पहचान सकता।

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

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

मैक (संदेश अखंडता लेकिन एन्क्रिप्शन नहीं)

ALG1-6 : एमएसी का संग्रह, उनमें से सभी सीबीसी-मैक के आधार पर। बहुत सारी योजनाएं कुछ वीआईएल पीआरएफ के रूप में साबित रूप से सुरक्षित हैं, कुछ एफआईएल पीआरएफ के रूप में, और कुछ के पास कोई सिद्ध सुरक्षा नहीं है। कुछ योजनाएं हानिकारक हमलों को स्वीकार करती हैं। कुछ मोड दिनांकित हैं। कुंजी-अलगाव अपर्याप्त रूप से उन तरीकों के लिए भाग लिया जाता है जिनके पास यह है। बड़े पैमाने पर अपनाया नहीं जाना चाहिए, लेकिन चुनिंदा रूप से "सर्वोत्तम" योजनाओं को चुनना संभव है। सीएमएसी के पक्ष में इन तरीकों में से कोई भी अपनाना भी ठीक होगा। आईएसओ 9 7 9 7-1 मैक के कुछ व्यापक रूप से मानकीकृत और उपयोग किए जाते हैं, खासकर बैंकिंग में। मानक (आईएसओ / आईईसी एफडीआईएस 9 7 9 7-1: 2010) का एक संशोधित संस्करण जल्द ही जारी किया जाएगा [9 3]।

सीएमएसी : सीबीसी-मैक के आधार पर एक मैक, मोड एक (वीआईएल) पीआरएफ (अंतर्निहित अवरोधक एक अच्छा पीआरपी मानते हुए) के रूप में सिद्ध रूप से सुरक्षित (जन्मदिन तक सीमित) है। एक सीबीसीएमएसी आधारित योजना के लिए अनिवार्य रूप से न्यूनतम ओवरहेड। स्वाभाविक रूप से धारावाहिक प्रकृति कुछ अनुप्रयोग डोमेन में एक समस्या है, और 64-बिट अवरोधक के साथ उपयोग करने के लिए कभी-कभी पुनः-कुंजीिंग की आवश्यकता होती है। आईएसी 9 7 9 7-1 मैक के संग्रह से क्लीनर।

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

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

प्रमाणीकृत एन्क्रिप्शन (दोनों एन्क्रिप्शन और संदेश अखंडता)

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

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


  • यदि एक ही कुंजी के साथ डेटा के एक से अधिक ब्लॉक एन्क्रिप्ट करते हैं तो ईसीबी का उपयोग नहीं किया जाना चाहिए।

  • सीबीसी, ओएफबी और सीएफबी समान हैं, हालांकि ओएफबी / सीएफबी बेहतर है क्योंकि आपको केवल एन्क्रिप्शन की आवश्यकता है और डिक्रिप्शन नहीं है, जो कोड स्पेस को बचा सकता है।

  • यदि आप सीबीसी / ओएफबी / सीएफबी के बजाय अच्छा समांतरता (यानी गति) चाहते हैं तो सीटीआर का उपयोग किया जाता है।

  • यदि आप एक यादृच्छिक सुलभ डेटा (हार्ड डिस्क या रैम की तरह) एन्कोड कर रहे हैं तो एक्सटीएस मोड सबसे आम है।

  • ओसीबी अब तक का सबसे अच्छा तरीका है, क्योंकि यह एक ही पास में एन्क्रिप्शन और प्रमाणीकरण की अनुमति देता है। हालांकि संयुक्त राज्य अमेरिका में पेटेंट हैं।

केवल एक चीज जिसे आपको वास्तव में जानना है कि ईसीबी का उपयोग तब तक नहीं किया जाना चाहिए जब तक आप केवल 1 ब्लॉक एन्क्रिप्ट नहीं कर रहे हों। यदि आप यादृच्छिक रूप से एक्सेस किए गए डेटा को एन्क्रिप्ट कर रहे हैं, न कि स्ट्रीम के लिए एक्सटीएस का उपयोग किया जाना चाहिए।

  • जब भी आप एन्क्रिप्ट करते हैं, आपको हमेशा अद्वितीय IV उपयोग करना चाहिए, और उन्हें random होना चाहिए। यदि आप गारंटी नहीं दे सकते कि वे random , तो ओसीबी का उपयोग करें क्योंकि इसे केवल एक IV आवश्यकता है, IV नहीं, और इसमें एक अलग अंतर है। अगर कोई व्यक्ति अगले अनुमान लगा सकता है तो एक nonce सुरक्षा सुरक्षा नहीं छोड़ता है, एक IV इस समस्या का कारण बन सकता है।