2010-10-29 17 views
5

मैं अपने .NET एप्लिकेशन FIPS अनुपालन को बनाने पर काम कर रहा हूं, और पाया है कि Managed क्रिप्टोग्राफ़ी कक्षाएं (जैसे AESManaged) FIPS अनुरूप नहीं हैं। मैंने कई अन्य लेख और प्रश्न पढ़े हैं जिन पर कक्षाएं अनुपालन करती हैं, जैसे When will C# AES algorithm be FIPS compliant? और http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/e0b4493f-6e20-4b75-a118-6b6e5d26a2a6। ऐसा लगता है कि CryptoServiceProvider कक्षाएं FIPS अनुरूप हैं, लेकिन प्रबंधित कक्षाएं नहीं हैं।Windows FIPS अनुपालन नीति सक्षम होने पर .NET "प्रबंधित" क्रिप्टोग्राफ़ी कक्षाओं की अनुमति क्यों नहीं है?

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

धन्यवाद।

+0

इस प्रश्न पूछने के लिए धन्यवाद। मैं इस बारे में एक प्रश्न पोस्ट करने जा रहा था कि विभिन्न क्रिप्टो वर्गों के लिए .NET में कम से कम 3 कार्यान्वयन क्यों किए गए थे, लेकिन यह न केवल "कारण" प्रदान करता है, यदि नहीं, तो "कारण"। और जब भी मैं एक FIPS अनुपालन स्टैंड-पॉइंट से कक्षाओं के बारे में सोच नहीं रहा था, इस जानकारी को जानने के लिए आपकी पोस्ट के लिए धन्यवाद और यूजीन के जवाब के लिए मुझे निश्चित रूप से क्रिप्टोएपीआई वेरिएंट - thx का उपयोग करने की आवश्यकता है। – thepip3r

उत्तर

5

"FIPS-compliant" गलत शब्द है - आप FIPS-प्रमाणित लोगों के बारे में बात कर रहे हैं। अंतर यह है कि यदि एल्गोरिदम को संदर्भ कार्यान्वयन और तृतीय-पक्ष कार्यान्वयन के साथ संगत होने की आवश्यकता है, तो इसे इस एल्गोरिदम का वर्णन करने वाले संबंधित FIPS के अनुरूप होना चाहिए। लेकिन प्रमाणीकरण एक अलग कहानी है।

CryptoServiceProvider कक्षाएं वास्तविक क्रिप्टो संचालन करने के लिए CryptoAPI (अप्रबंधित विंडोज एपीआई) को कॉल करती हैं, और कुछ CryptoAPI मॉड्यूल FIPS-प्रमाणित (व्यावसायिक उद्देश्यों के लिए) हैं। स्पष्ट रूप से .NET प्रबंधित कक्षाओं को प्रमाणित करने के पर्याप्त कारण नहीं थे - यदि आपको प्रमाणित मॉड्यूल की आवश्यकता है, तो CryptoAPI का उपयोग करें। प्रमाणन में बहुत समय, प्रयास और धन की महत्वपूर्ण राशि होती है।

मुझे लगता है कि तकनीकी कारण भी हो सकते हैं जो प्रबंधित मॉड्यूल को प्रमाणन से रोकते हैं, लेकिन यह सिर्फ एक अनुमान है। ऐसा हो सकता है कि .NET (IL और वर्चुअल मशीन) की प्रकृति प्रमाणीकरण प्रक्रिया के लिए परिभाषित कुछ आवश्यकताओं के विपरीत है, यानी वे प्रमाणित नहीं किए जा सकते हैं।

अपने स्वयं के रैपर वर्गों के लिए - वहां कई कंपनियां मौजूद हैं जो कर्मियों के प्रशिक्षण और प्रमाणन स्वयं प्रदान करती हैं। वे परामर्श सेवाएं भी प्रदान करते हैं। मुझे उम्मीद है कि ऐसी सेवा से कोई यहां जवाब देता है, लेकिन यदि आपको आवश्यकता हो तो आप उनसे संपर्क भी कर सकते हैं।

+2

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