2013-06-14 7 views
7

के लिए FIPS अनुपालन मैं सुरक्षा से संबंधित परियोजना पर काम कर रहा हूं और यह सुनिश्चित करना है कि यह FIPS अनुपालन में है।मेरे एंड्रॉइड प्रोजेक्ट

मेरी समझ के अनुसार, FIPS अनुपालन हार्डवेयर और सॉफ्टवेयर स्तर पर अनुपालन है। वर्तमान में 2 सैमसंग एंड्रॉइड डिवाइस हैं जो FIPS अनुरूप हैं यानी वे हार्डवेयर और सॉफ्टवेयर स्तर पर अनुपालन करते हैं। मेरे पास निम्न प्रश्न हैं: -

1) यदि मैं अपना एंड्रॉइड ऐप FIPS अनुरूप बनाना चाहता हूं, अगर मेरे पास मेरे प्रोजेक्ट में इस्तेमाल किया जाने वाला एकमात्र क्रिप्टो मॉड्यूल है, तो क्या यह पर्याप्त है?

एंड्रॉइड एसडीके द्वारा प्रदान किए गए क्रिप्टो मॉड्यूल बाउंसीकास्टल लाइब्रेरी है और यह FIPS अनुरूप नहीं है।

मैं प्रति stackoverflow link

मैं OpenSSL पुस्तकालय यानी libssl.a और libcrypto.a FIPS मॉड्यूल के समानुरूप का उपयोग कर अपने प्रोजेक्ट पुस्तकालय का निर्माण किया है के रूप में FIPS अपने प्रोजेक्ट में OpenSSL पुस्तकालय संगत उपयोग कर रहा हूँ।

2) एंड्रॉइड documentation के लिए FIPS ओपनएसएसएल मॉड्यूल के अनुसार, मॉड्यूल का परीक्षण armv7 आर्किटेक्चर के विभिन्न एंड्रॉइड डिवाइसों पर किया गया है। क्या एंड्रॉइड हार्डवेयर यहां FIPS अनुरूप नहीं होगा?

3) एईएस एल्गोरिदम FIPS अनुपालन के तहत है। क्या इसका मतलब यह है कि यदि मैं FIPS अनुपालन OpenSSL लाइब्रेरी का उपयोग करने के बजाय जावा कोड में एईएस एल्गोरिदम का उपयोग करता हूं, तो इसका FIPS अनुपालन नहीं है।

यदि एईएस FIPS अनुपालन के तहत है, तो उसे एईएस के जावा या सी # कार्यान्वयन के साथ क्या करना है। क्या उन्हें दोनों को सीएमवीपी से गुजरना है?

कृपया मुझे प्रबुद्ध करें।

उत्तर

11

मेरी समझ के अनुसार, FIPS अनुपालन हार्डवेयर के साथ-साथ सॉफ़्टवेयर स्तर पर अनुपालन है।

FIPS 140-2 हार्डवेयर के चारों ओर केंद्रित एक बड़ा दस्तावेज़ है। आवश्यकताएं लिखने वाले लोग विद्युत इंजीनियरों थे जिन्होंने हार्डवेयर बनाया था। उदाहरण के लिए, डॉ रैंडी ईस्टर क्रिप्टोग्राफिक मॉड्यूल सत्यापन कार्यक्रम (सीएमवीपी) चलाता है। यहां उनका संक्षिप्त सीवी है: http://www.nist.gov/itl/csd/easter-randy.cfm। वह निश्चित रूप से एक डबल-ई है;)

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

पूर्णता के लिए, आप Implementation Guidance for FIPS PUB 140-2 and the Cryptographic Module Validation Program में अखंडता परीक्षण के अनुमोदित तरीकों को पा सकते हैं। वे वास्तव में एक सीएमएसी और एचएमएसी शामिल करते हैं।


... Android एप्लिकेशन अनुरूप FIPS ...मान्य और मान्य नहीं:

पहले पहली बातें :)

क्रिप्टोग्राफिक मॉड्यूल मान्यता प्रोग्राम (CMVP) के अनुसार, वहाँ क्रिप्टोग्राफी के दो प्रकार हैं। "अनुपालन" का अर्थ कुछ भी नहीं है (न ही "अनुरूप", "अनुमोदित", "समतुल्य", आदि)।

आपका ऐप मान्य क्रिप्टोग्राफी का उपयोग करेगा, या यह मान्य क्रिप्टोग्राफी का उपयोग नहीं करेगा। यदि आप कहते हैं कि आपका ऐप "अनुपालन" क्रिप्टोग्राफी का उपयोग कर रहा है, तो यह मान्य क्रिप्टोग्राफी का उपयोग कर नहीं है। यहां एक सामान्य विपणन गलती है: http://webdrive.com/support/webdrive/v11/fips_compliance.htm

मुझे पता है कि डीएचएस ने फेडरल से स्विच का एक गुच्छा खींच लिया क्योंकि स्विच निर्माता के विपणन विभाग ने उन्हें "FIPS मान्य" के बजाय "FIPS अनुपालन" कहा।


1) अपने Android एप्लिकेशन के अनुरूप FIPS मैं बनाना चाहते हैं, अगर मैं केवल क्रिप्टो मेरी परियोजना में इस्तेमाल मॉड्यूल FIPS समर्थक है, यह पर्याप्त है?

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

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

कुछ जो दोनों में पड़ता है: आपको FIPS_mode_set पर कॉल करना होगा, और इसे गैर-शून्य वापस करना होगा। FIPS_mode_set पर कॉल करने में विफल एक प्रक्रियात्मक त्रुटि है और इसका मतलब है कि आप मान्य क्रिप्टोग्राफी का उपयोग नहीं कर रहे हैं। FIPS_mode_set की विफलता एक परिचालन त्रुटि है और इसका मतलब है कि आप मान्य क्रिप्टोग्राफी का उपयोग नहीं कर रहे हैं।

यदि आप ओपनएसएसएल का उपयोग कर रहे हैं, तो आपको अपनी डेटा शीट में "विक्रेता पुष्टि" भी शामिल करना चाहिए, और 1747 प्रमाण पत्र उद्धृत करना चाहिए। मेरा मानना ​​है कि सुरक्षा नीति की आवश्यकता है, और इसे प्रदान करने में विफलता का मतलब है कि आपकी क्रिप्टोग्राफी मान्य नहीं है!


क्रिप्टो Android SDK द्वारा प्रदान की मॉड्यूल BouncyCastle पुस्तकालय है और यह FIPS अनुरूप नहीं है।

मैं बाउंसी कैसल का उपयोग नहीं करता, इसलिए मुझे इसकी स्थिति पता नहीं है। यदि पुस्तकालय मान्य किया गया है, तो सीएमवीपी द्वारा जारी प्रमाण पत्र होगा। आप उन्हें Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules पर देख सकते हैं। FIPS Library and Android:


मैं FIPS stackoverflow लिंक

तुम भी OpenSSL का विकी की कोशिश करनी चाहिए के अनुसार अपने प्रोजेक्ट में संगत OpenSSL लाइब्रेरी का उपयोग कर रहा हूँ।

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


Android दस्तावेज़ के लिए FIPS OpenSSL मॉड्यूल के अनुसार, मॉड्यूल ARMv7 वास्तुकला के विभिन्न Android उपकरणों पर परीक्षण किया गया है।

यह उलझन में एक कठिन क्षेत्र है। स्टीव मार्क्वस ने OpenSSL FIPS 2.0 Object Module platform questions पर इसका उत्तर देने का प्रयास किया।

यहां मेरी (संभवतः गलत) समझ है: एक बार मंच को मान्य करने के बाद, प्लेटफॉर्म में मामूली परिवर्तन क्रिप्टोग्राफिक मॉड्यूल सत्यापन कार्यक्रम (सीएमवीपी) द्वारा सहन किए जाते हैं। मैं सिर्फ "मंच" क्या टाल रहा हूं, लेकिन इसमें मदरबोर्ड, प्रोसेसर, निर्देश सेट, और अन्य परिचालन प्रभाव शामिल हैं। सामान्यतः, इसमें रनटाइम पुस्तकालयों जैसे पर्यावरणीय प्रभाव शामिल नहीं होते हैं।

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

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

और सीएमवीपी किसी भी समय अपने दिमाग को बदल सकता है और मामूली प्लेटफ़ॉर्म त्रुटियों को सहन करना बंद कर सकता है।


विल एंड्रॉयड हार्डवेयर FIPS संगत बात यहाँ

नहीं, जब तक कि (हार्डवेयर सहित) मंच पहले से मान्य किया गया था नहीं किया जा रहा। मंच पहले से सत्यापित नहीं हुआ है, तो इसका एक समस्या;)


3) एईएस एल्गोरिथ्म FIPS अनुपालन के अधीन है। क्या यह का अर्थ है कि यदि मैं FIPS अनुपालन OpenSSL लाइब्रेरी का उपयोग करने के बजाय जावा कोड में एईएस एल्गोरिदम का उपयोग करता हूं, तो यह FIPS अनुपालन नहीं है।

सही। जावा कोड FIPS मान्य नहीं है, इसलिए आपका ऐप FIPS मान्य क्रिप्टोग्राफी का उपयोग नहीं कर सकता है।

पूर्णता के लिए, एक क्रिप्टोग्राफिक एल्गोरिदम प्रमाणीकरण कार्यक्रम (सीएवीपी) भी है। सीएवीपी प्रमाण पत्र जारी करके एईएस कार्यान्वयन पर साइन-ऑफ करेगा। उदाहरण के लिए, ओपनएसएसएल के एईएस कार्यान्वयन को प्रमाण पत्र 1884, 2116, 2234, 2342, 23 9 4 और 2484 जारी किए गए हैं।

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


एईएस FIPS अनुपालन किया जा रहा है, तो क्या करता है यह एईएस की जावा या सी # कार्यान्वयन के साथ क्या करना है। क्या उन्हें दोनों को सीएमवीपी के माध्यम से पास करना है?

  • Android और जावा के तहत, JNI का उपयोग करें और एक साझा वस्तु में कहते हैं:

आप FIPS सत्यापित OpenSSL का उपयोग कर रहे हैं, तो आप करना होगा। साझा ऑब्जेक्ट को OpenSSL की FIPS मान्य क्रिप्टोग्राफी प्रदान करनी होगी।

  • के तहत सी #, पी/आह्वान या Inerop का उपयोग करें और एक गतिशील लिंक लाइब्रेरी में कहते हैं। गतिशील लिंक लाइब्रेरी को OpenSSL की FIPS मान्य क्रिप्टोग्राफी प्रदान करनी होगी।

  • मैं OpenSSL पुस्तकालय यानी libssl.a का उपयोग कर अपने प्रोजेक्ट पुस्तकालय का निर्माण किया है और libcrypto.a FIPS मॉड्यूल का उपयोग कर कॉन्फ़िगर किया गया।

    आप fipsld और incore स्थिर पुस्तकालयों ज़्यादा नहीं चल सकती, तो यह लगता है कि कुछ गलत है। वे केवल निष्पादन योग्य और साझा वस्तुओं पर चल सकते हैं। fipsld और incore एक साथ काम करने और अपने निष्पादन योग्य, साझा पुस्तकालय या एप्लिकेशन में FIPS से संबंधित कोड और डेटा के हस्ताक्षर एम्बेड। FIPS-संबंधित कोड और डेटा (1) fipscanister.o और (2) fips_premain.c से आते हैं।

    यह चक्र पूरा करने के लिए, fipsldfips_premain.c और fipscanister.o में लिंक संकलित अपने निष्पादन योग्य, साझा वस्तु या ऐप्लिकेशन में। फिर incore आपके निष्पादन योग्य, साझा ऑब्जेक्ट या ऐप में हस्ताक्षर लिखता है। जब आप FIPS_mode_set फोन, FIPS से संबंधित कोड की अखंडता एक डेटा एक HMAC द्वारा सत्यापित है, और फिर FIPS से संबंधित स्वयं परीक्षण क्रियान्वित कर रहे हैं। यदि सभी सफल होते हैं, तो FIPS_mode_set गैर-शून्य लौटाता है और आप FIPS मान्य क्रिप्टोग्राफी का उपयोग कर रहे हैं।

    एक संदर्भ के रूप में, OpenSSL यहाँ एक विकि पृष्ठ प्रदान करता है: FIPS Library and Android। यह कैसे स्थापित करने के लिए CC और FIPSCC_LD तो fipsld और incore "सिर्फ काम करता है" जब make 'अपनी परियोजना ing चर्चा करता है।

    कोई समकक्ष आईओएस पेज नहीं है। लेकिन आप OpenSSL FIPS User Guide 2.0 में अनुदेश प्राप्त कर सकते हैं, परिशिष्ट ई।

    +0

    ग्रेट स्टफ .. किसी भी अंतर्दृष्टि के कारण Google एंड्रॉइड ओपन सोर्स प्रोजेक्ट में libcrypto (या अपना खुद का) का फ़िप्स संस्करण क्यों नहीं उपयोग करता है? – Blaze

    +1

    ब्लेज़ - नहीं, कोई विचार नहीं। वे अपने संदर्भ हार्डवेयर (पहले सैमसंग नेक्सस 4, वर्तमान में एलजी नेक्सस 5) के लिए एक सत्यापन प्रायोजित कर सकते थे, लेकिन प्रत्येक प्लेटफॉर्म को अपनी मान्यता की आवश्यकता होगी। यह OEM तक होगा। – jww

    +0

    प्रत्येक प्लेटफॉर्म को अपनी मान्यता की आवश्यकता क्यों होगी? जैसा कि आप कहते हैं - "एक बार मंच को मान्य करने के बाद, प्लेटफॉर्म में मामूली परिवर्तन क्रिप्टोग्राफिक मॉड्यूल सत्यापन कार्यक्रम (सीएमवीपी) द्वारा बर्दाश्त किया जाता है।" यह तर्क है जिसमें openssl लोगों का कहना है कि वे किसी भी armv7 एंड्रॉइड मंच के लिए जाने के लिए अच्छे हैं। – Blaze

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