Erlang 21 - 2. FIPS mode

2 FIPS मोड




erlang

2 FIPS मोड

यह अध्याय क्रिप्टो एप्लिकेशन में FIPS मोड समर्थन का वर्णन करता है।

२.१ पृष्ठभूमि

ओपनएसएसएल को 140-2 वैध क्रिप्टोग्राफिक सेवाएं प्रदान करने के लिए बनाया जा सकता है। यह OpenSSL अनुप्रयोग नहीं है जो मान्य है, लेकिन एक विशेष सॉफ्टवेयर घटक है जिसे OpenSSL FIPS ऑब्जेक्ट मॉड्यूल कहा जाता है। हालांकि एप्लिकेशन सीधे इस ऑब्जेक्ट मॉड्यूल का उपयोग नहीं करते हैं, लेकिन ओपनएसएसएल लाइब्रेरी के नियमित एपीआई के माध्यम से।

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

2.2 डेनिश मोड को सक्षम करना

  • FIPS ऑब्जेक्ट मॉड्यूल और एक FIPS सक्षम ओपनएसएसएल पुस्तकालय का निर्माण या स्थापित करें।

    आपको Security Policy और User Guide के निर्देशों का सही ढंग से पालन करना चाहिए।

    चेतावनी

    स्रोत से एक कामकाजी ओपनएसएसएल FIPS ऑब्जेक्ट मॉड्यूल और पुस्तकालय का निर्माण करना बहुत आसान है। हालाँकि, यह योग्य नहीं है क्योंकि सुरक्षा नीति में कई प्रतिबंधों का ठीक से पालन नहीं किए जाने पर 140-2 सत्यापित किया गया है।

  • कॉन्फ़िगर और निर्माण Erlang / OTP समर्थन के साथ सहयोग:

    $ cd $ERL_TOP
    $ ./otp_build configure --enable-fips
    ...
    checking for FIPS_mode_set... yes
    ...
    $ make
            

    यदि FIPS_mode_set रिटर्न देता है तो ओपनएसएसएल लाइब्रेरी सक्षम नहीं है और क्रिप्टो या तो मोड का समर्थन नहीं करेगा।

  • क्रिप्टो मॉड्यूल लोड करने से पहले क्रिप्टो एप्लिकेशन के fips_mode कॉन्फ़िगरेशन सेटिंग को true सेट करें।

    रिलीज के sys.config सिस्टम कॉन्फ़िगरेशन फ़ाइल में सबसे अच्छी जगह है।

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

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

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

2.3 नियमित बिल्ड के साथ असंगतता

क्रिप्टो एप्लिकेशन का Erlang API बिल्डिंग के साथ या बिना दान के समर्थन के बिना समान है। हालाँकि निफ़ कोड आंतरिक रूप से एक अलग ओपनएसएसएल एपीआई का उपयोग करता है।

इसका मतलब यह है कि संदर्भ (एक अपारदर्शी प्रकार) स्ट्रीमिंग क्रिप्टो फ़ंक्शंस से लौटा है ( hash_(init|update|final) , hmac_(init|update|final) और stream_(init|encrypt|decrypt) ) नियमित बिल्ड के साथ अलग और असंगत है। जब क्रिप्टो सहयोग के साथ संकलन।

२.४ सामान्य कैवियट

डेनिश मोड में गैर-मान्य एल्गोरिदम अक्षम हैं। यह क्रिप्टो पर भरोसा करने वाले एप्लिकेशन में कुछ अप्रत्याशित समस्याएं पैदा कर सकता है।

चेतावनी

लापता एल्गोरिदम के वैकल्पिक कार्यान्वयन का उपयोग करके इन समस्याओं के आसपास काम करने की कोशिश न करें! एक आवेदन केवल एक 140 140 वैध क्रिप्टोग्राफिक मॉड्यूल का उपयोग करने का दावा कर सकता है अगर यह हर क्रिप्टोग्राफिक ऑपरेशन के लिए विशेष रूप से उपयोग करता है।

प्रमुख आकारों पर प्रतिबंध

यद्यपि सार्वजनिक कुंजी एल्गोरिदम को डेनिश मोड में समर्थन किया जाता है, लेकिन उनका उपयोग केवल सुरक्षित कुंजी आकारों के साथ किया जा सकता है। सुरक्षा नीति में निम्नलिखित न्यूनतम मूल्यों की आवश्यकता होती है:

आरएसए
1024 बिट
डीएसएस
1024 बिट
ईसी एल्गोरिदम
160 बिट

अण्डाकार वक्रों पर प्रतिबंध

Erlang API मनमानी वक्र मापदंडों का उपयोग करने की अनुमति देता है, लेकिन FIPS मोड में केवल सुरक्षा नीति द्वारा अनुमत लोगों का उपयोग किया जाएगा।

हैशिंग के लिए md5 से बचें

Md5 एक हैश फ़ंक्शन के रूप में एक लोकप्रिय विकल्प है, लेकिन यह मान्य होने के लिए पर्याप्त सुरक्षित नहीं है। जहाँ भी संभव हो वहां श के उपयोग की कोशिश करें।

असाधारण, गैर-क्रिप्टोग्राफिक उपयोग के मामलों के लिए कोई भी erlang:md5/1 पर स्विच करने पर विचार कर सकता है erlang:md5/1 रूप में अच्छी तरह से।

प्रमाण पत्र और एन्क्रिप्टेड कुंजी

चूंकि md5 दान मोड में उपलब्ध नहीं है, इसलिए केवल उन प्रमाणपत्रों का उपयोग करना संभव है जिन्हें sha hashing का उपयोग करके हस्ताक्षरित किया गया था। संपूर्ण प्रमाणपत्र श्रृंखला को मान्य करते समय सभी प्रमाणपत्र (रूट CA सहित) को इस नियम का पालन करना चाहिए।

Md5 और डेस एल्गोरिदम पर समान निर्भरता के लिए PEM प्रारूप में अधिकांश एन्क्रिप्टेड निजी कुंजियाँ काम नहीं करती हैं। हालाँकि, PBES2 एन्क्रिप्शन स्कीम से मजबूत दान सत्यापित एल्गोरिदम का उपयोग करने की अनुमति मिलती है जो एक व्यवहार्य विकल्प है।

SNMP v3 की सीमाएँ

यह केवल FIPS मोड में प्रमाणीकरण और गोपनीयता के लिए usmHMACSHAAuthProtocol और usmAesCfb128Protocol का उपयोग करना संभव है। हालांकि, एसएनएमपी एप्लिकेशन किसी भी तरह से अक्षम प्रोटोकॉल का चयन करने पर रोक नहीं लगाएगा, और उनके उपयोग से रन टाइम क्रैश का परिणाम होगा।

TLS 1.2 की आवश्यकता है

TLS 1.2 से पहले के सभी एसएसएल और टीएलएस संस्करण विभिन्न उद्देश्यों के लिए हैंडशेक में md5 और sha1 हैश के संयोजन का उपयोग करते हैं:

  • हैंडशेक संदेशों की अखंडता को प्रमाणित करना।
  • गैर-गुमनाम पीएफएस (सही आगे गोपनीयता) प्रदान करने वाले सिफर स्वीट्स में डीएच मापदंडों के आदान-प्रदान में।
  • पीआरएफ (छद्म-यादृच्छिक फ़ंक्शन) में पीएफएस का उपयोग नहीं करने वाले सिफर स्वीट्स में कुंजीयन सामग्री उत्पन्न करने के लिए।

OpenSSL इन मोड को कोन मोड में संभालता है, हालाँकि Erlang crypto और ssl एप्लिकेशन उनके लिए तैयार नहीं हैं और इसलिए आप TLS 1.2 को डेनिश मोड में सीमित कर रहे हैं।

दूसरी ओर यह ध्यान देने योग्य है कि कम से कम सभी सिफर सुइट जो गैर-मान्य एल्गोरिदम पर भरोसा करेंगे, स्वतः ही मोड में अक्षम हो जाते हैं।

ध्यान दें

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