2015-09-29 7 views
5

मैं .NET 3.5 का उपयोग कर रहा हूं और मैं अपना ऐप FIPS अनुपालन करने की कोशिश कर रहा हूं। मैं किसी भी गैर FIPS एल्गोरिदम का उपयोग नहीं करता लेकिन मुझे अभी भी यह मिलता है जब मैं इसे उत्पादन सर्वर पर चलाता हूं तो त्रुटि।यह जांचने के लिए कि एक Asp.NET एप्लिकेशन FIPS-तैयार

यह कार्यान्वयन विंडोज प्लेटफार्म FIPS मान्य क्रिप्टोग्राफिक एल्गोरिदम का हिस्सा नहीं है।

यहां मैंने एल्गोरिदम की सूची दी है और मुझे यकीन है कि मैंने उनका उपयोग नहीं किया है।

  • HMACMD5
  • HMACRIPEMD160
  • HMACSHA256
  • HMACSHA384
  • HMACSHA512
  • MD5CryptoServiceProvider
  • RC2CryptoServiceProvider
  • RijndaelManaged
  • RIPEMD160Managed

मैं पा सकते हैं वास्तव में किस प्रकार जहां समस्या है या किसी अन्य विचारों SHA1Managed?

+2

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

उत्तर

2

जब आप "FIPS compliant" कहते हैं, तो मुझे लगता है कि आप विंडोज़ में FIPS 140 अनुपालन को लागू करना चाहते हैं और Local Security Policy settings को बदलकर नेट क्रिप्टोग्राफिक लाइब्रेरी मोड को लागू करना चाहते हैं।

इस तंत्र का उपयोग करते हुए FIPS 140 अनुपालन (मानक, FIPS 140-2 के मानक के नवीनतम संस्करण का स्तर 1) के साथ चुनौती, जैसा कि आपने पाया है, यह है कि यह गैर-FIPS 140 अनुरूप एल्गोरिदम के तत्कालता को रोकता है, भले ही वे सुरक्षा-संबंधित उद्देश्य के लिए उपयोग नहीं किया जाता है।

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

इसे पूरा करने का एक आसान तरीका सामान्य वर्गों का उपयोग करना और कन्स्ट्रक्टर को सीधे कॉल करने से बचाना है।

// Let .Net workout which implementation of AES to use. Will use 
// a FIPS compliant implementation if FIPS is turned on. 
using (Aes aes = Aes.Create()) 
{ 
    // Do something 
} 

अपने कोड के अलावा, आप का उपयोग तृतीय पक्ष लाइब्रेरी की जाँच करें:

// Use the faster .Net implementation of AES. Not FIPS 140 compliant. 
using (AesManaged aesManaged = new AesManaged()) 
{ 
    // Do something 
} 

उपयोग करें: उदाहरण के लिए, आप के बजाय, Advanced Encryption Standard (AES) उपयोग करना चाहते हैं। आप उपरोक्त में समान कोड का उपयोग अपने कोड से किसी भी संदर्भ की जांच के लिए कर सकते हैं। यदि आपने अपना कोड पूरी तरह से चेक किया है, तो यह संभावना है कि समस्या कहां है। ध्यान दें कि तृतीय पक्ष कोड को अलग करना कॉपीराइट या लाइसेंस समझौतों का उल्लंघन हो सकता है।

अपनी एसएसएल कॉन्फ़िगरेशन भी जांचें। उदाहरण के लिए, SSL के लिए उपयोग किया जाने वाला डिजिटल प्रमाणपत्र MD5 का उपयोग नहीं कर सकता है। आपको टीएलएस 1.0 या बाद में भी उपयोग करना होगा।

हालांकि, विंडोज FIPS 140 अनुपालन को मजबूर करना कठिन तरीका है। अमेरिकी सरकार समेत अधिकांश ग्राहकों को उपयोग करने के लिए केवल FIPS अनुरूप एल्गोरिदम (या तकनीकी रूप से, इन एल्गोरिदम के कार्यान्वयन) की आवश्यकता नहीं होती है।उदाहरण के लिए, स्ट्रिंग की हैश कुंजी बनाने के लिए MD5 का उपयोग करने के लिए वे पूरी तरह से खुश हैं।

इसके बजाए, ग्राहक कुछ भी चाहते हैं कि आपका उत्पाद क्रिप्टोग्राफी का उपयोग करके अनुमोदित एल्गोरिदम के FIPS 140 शिकायत कार्यान्वयन द्वारा संरक्षित किया जाए। दूसरे शब्दों में:

  1. प्रत्येक बात अपने उत्पाद रक्षा करनी चाहिए
  2. FIPS 140 अनुरूप पुस्तकालयों
  3. उपयोग टूलींग (जैसे स्थिर विश्लेषण), कोड समीक्षा और/या तीसरे पक्ष के लेखा परीक्षा का उपयोग कर प्रवर्तन प्रदर्शित करने के लिए उन्हें सुरक्षित रखें की पहचान करें।

यह भी ध्यान रखें कि FIPS 140 मोड चालू करने से Windows या आपके उत्पाद को अधिक सुरक्षित नहीं बनाते हैं। एक दूसरे पर एक क्रिप्टोग्राफिक एल्गोरिदम चुनने से सुरक्षा अधिक जटिल होती है (या, विशेष रूप से, किसी अन्य कार्यान्वयन पर एल्गोरिदम का एक विशेष कार्यान्वयन)। Microsoft no longer recommends this be turned on by default

संबंधित मुद्दे