2014-07-23 10 views
8

क्या पदानुक्रम में केवल पूर्वजों या रूट प्रमाण पत्र के हस्ताक्षर को सत्यापित करना संभव है?इंटरमीडिएट सर्टिफिकेट के बिना हस्ताक्षर मान्य करना

अस्वीकरण: मैं प्रमाणपत्रों को संभालने के लिए नौसिखिया हूं इसलिए कृपया मूर्खतापूर्ण शब्दावली को क्षमा करें।

निम्नलिखित स्थिति पर विचार करें।

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

मेरा प्रश्न है: सपा संदेश CertIdP केवल अपनी मूल प्रमाण पत्र CertCA होने से हस्ताक्षर किए के हस्ताक्षर मान्य कर सकते हैं?

बैकस्टोरी, इसे क्यों चाहिए।

हम पैकेटलिंक के साथ SAML- आधारित एसएसओ लागू कर रहे हैं। हम हस्ताक्षर मान्य करने के लिए पिक्टलिंक के SAML2SignatureValidationHandler का उपयोग कर रहे हैं। इसे प्राप्त करने के लिए, सेवा प्रदाता (एसपी) को अपने कीस्टोर में आईडीपी प्रमाणपत्र होना चाहिए। जब एक हस्ताक्षरित SAML दावा एसपी को पास किया जाता है, तो यह हैंडलर हस्ताक्षर को सत्यापित करने के लिए आईडीपी प्रमाणपत्र का उपयोग करता है।

ऊपर की प्रक्रिया अच्छी तरह से काम करती है, लेकिन हमारे पास कुछ संगठनात्मक चिंताएं हैं। यह प्रक्रिया मानती है कि एसपी के पास सत्यापन के लिए आईडीपी प्रमाणपत्र है। कुछ बदलाव होने पर, आईडीपी का प्रमाण पत्र एसपी पक्ष पर बदला जाना चाहिए। हमारे पास बड़ी संख्या में एसपी (हजारों नहीं होने पर शिकार) हो सकते हैं, इसलिए यह काफी प्रयास है।

चूंकि CertIdP और CertSP दोनों एक ही प्राधिकरण (सीए) द्वारा जारी किए जाते हैं, जो निश्चित रूप से आईडीपी और एसपी दोनों द्वारा भरोसा किया जाता है, हमें यह विचार था कि हम हस्ताक्षर सत्यापन के लिए सीए प्रमाणपत्र का उपयोग कर सकते हैं। यदि यह काम करता है, तो यह आईडीपी और एसपी के बीच प्रमाणपत्रों का आदान-प्रदान करने की आवश्यकता को खत्म कर सकता है। सीए का प्रमाण पत्र भी "दीर्घकालिक" है, इसलिए अगर अनंत काल में केवल एक बार आदान-प्रदान किया जाना चाहिए (अनंत काल, हमारे मामले में लगभग 10-20 साल है)।

हालांकि मुझे यकीन नहीं है कि क्या यह प्रमाणित है कि प्रमाण पत्र केवल प्रमाण पत्र प्रमाणित करने के लिए प्रमाणित है, केवल माता-पिता CertCA है। क्या यह संभव है? या हम यहां पूरी तरह से गलत ट्रैक पर हैं?

यदि यह प्रासंगिक है, तो हम एसपी पक्ष पर जावा/जेबॉस मंच पर हैं, आईडीपी एक तृतीय पक्ष सॉफ्टवेयर है।

अद्यतन:

यह वह जगह है हस्ताक्षर मैं IdP से पल में मिलती है:

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
     <ds:SignedInfo> 
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> 
      <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 
      <ds:Reference URI="#_..."> 
       <ds:Transforms> 
        <ds:Transform 
         Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
        <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> 
         <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" 
          PrefixList="ds saml samlp" /> 
        </ds:Transform> 
       </ds:Transforms> 
       <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
       <ds:DigestValue>r...=</ds:DigestValue> 
      </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue>X...==</ds:SignatureValue> 
    </ds:Signature> 

उत्तर

5

यह निर्भर करता है कि क्या आपके द्वारा SAML प्रतिसाद पर हस्ताक्षर प्रमाण पत्र <ds:X509Data>...</ds:X509Data> अथवा केवल उसके सार्वजनिक कुंजी <ds:KeyValue>...</ds:KeyValue> शामिल ।

<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" ...> 
    ... 
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:SignedInfo>...</ds:SignedInfo 
    <ds:SignatureValue>...</ds:SignatureValue> 
    <ds:KeyInfo> 
     <ds:X509Data> 
     <ds:X509Certificate>...</ds:X509Certificate> 
     </ds:X509Data> 
    </ds:KeyInfo> 
    </ds:Signature> 
</saml2p:Response> 

बनाम

<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" ...> 
    ... 
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:SignedInfo>...</ds:SignedInfo 
    <ds:SignatureValue>...</ds:SignatureValue> 
    <ds:KeyInfo> 
     <ds:KeyValue> 
     <ds:RSAKeyValue> 
      <ds:Modulus>...</ds:Modulus> 
      <ds:Exponent>...</ds:Exponent> 
     </ds:RSAKeyValue> 
     </ds:KeyValue> 
    </ds:KeyInfo> 
    </ds:Signature> 
</saml2p:Response> 

पर हस्ताक्षर प्रमाण पत्र एम्बेडेड है, तो यह AuthorityInfoAccess विस्तार, जो आमतौर पर जारी करने CA प्रमाणपत्र के लिए एक http या ldap URL होता है हो सकता है। हस्ताक्षर प्रमाणपत्र से भरोसेमंद सीए प्रमाण पत्र में इन एक्सटेंशन का उपयोग करके, आप विश्वसनीय प्रमाणपत्र श्रृंखला बनाने में सक्षम होंगे। (नोट: यदि सर्टसीए वास्तव में CertIdP और CertSP का प्रत्यक्ष जारीकर्ता है, तो आपके पास पहले से ही आवश्यक विश्वसनीय प्रमाणपत्र श्रृंखला है।)

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

+0

इस समय मुझे केवल साइनडइन्फो और साइनड वैल्यू मिलते हैं (कृपया प्रश्न में अद्यतन देखें)। लेकिन आप जो कह रहे हैं वह यह है कि यदि मेरे पास प्रमाणपत्र के साथ X509Data है तो मैं CA प्रमाण का उपयोग करके इसे सत्यापित कर सकता हूं, है ना? – lexicore

+1

मैंने अभी सीखा है कि '' तत्व xmldsig स्कीमा के साथ-साथ SAML 2.0 कोर मानक में वैकल्पिक है। हां, आपको केवल '' के माध्यम से या अन्य माध्यमों के माध्यम से साइन-इन प्रमाणपत्र प्राप्त करना होगा, उपयोग-मामले पर निर्भर करता है। केंद्रीकृत प्रावधान तंत्र के साथ दृष्टिकोण सार्वजनिक कुंजी जानकारी भी करता है, उदाहरण के लिए, एक प्रसिद्ध यूआरएल के माध्यम से जो वर्तमान सत्यापन प्रमाण पत्र प्रदान करता है। –

+1

@lexicore आपको हमेशा प्रमाण पत्र की आवश्यकता होगी जिसका उपयोग इसे सत्यापित करने के लिए हस्ताक्षर करने के लिए किया गया था। सत्यापन केवल सीए प्रमाण के साथ नहीं किया जा सकता है क्योंकि आप नहीं जानते कि इस सीए या किसी अन्य सीए द्वारा जारी प्रमाण पत्र का उपयोग करके हस्ताक्षर किए गए हैं या नहीं। यदि आप कर सकते हैं, तो अपने आईडीपी को '' तत्व में SAML में आईडीपी प्रमाणपत्र पर हस्ताक्षर करने के लिए सेट करें। – pepo

3

मैं कुछ छोटे परिचय के साथ शुरू करेंगे - डिजिटल हस्ताक्षर का सत्यापन दो चरणों

  • पहले हस्ताक्षर सत्यापन में किया जाता है - जो की जाँच करता है कि हस्ताक्षर मूल्य वास्तव में सामग्री को बचाता है और यह कि इसी है इसलिए सामग्री
  • ट्रस्ट सत्यापन के साथ छेड़छाड़ नहीं की गई थी - जांचें कि सत्यापनकर्ता द्वारा विश्वसनीय किसी व्यक्ति द्वारा हस्ताक्षर किया गया था)।

डिजिटल हस्ताक्षर के सत्यापन की सार्वजनिक कुंजी के उत्थान की आवश्यकता होती है जिसका संबंधित निजी कुंजी हस्ताक्षर बनाने के लिए उपयोग की जाती थी। इसके चारों ओर कोई रास्ता नहीं है।

लेकिन ट्रस्ट के सत्यापन के लिए एक उपयोग-मामला है जो सीए प्रमाणपत्रों के उपयोग की अनुमति देता है - और यह आपके मामले के लिए उपयोगी होना चाहिए।

यह काम करता है ताकि आप अपने एसपी और आईडीपी के लिए उत्पन्न मेटाडेटा में केवल सीए (और संभवतः मध्यवर्ती सीए) हस्ताक्षर प्रमाणपत्र शामिल कर सकें। इसके बाद आप SAML संदेश (हस्ताक्षर के अंदर KeyInfo तत्व में) के हिस्से के रूप में हस्ताक्षर बनाने के लिए उपयोग की जाने वाली सटीक पत्ती कुंजी (सीए द्वारा जारी) शामिल करते हैं। एसपी/आईडीपी तब सत्यापित करने में सक्षम है कि पत्ती कुंजी (जिसे पहले से अज्ञात था) को पहले से मौजूद सीए प्रमाणपत्रों का उपयोग करके प्रमाणन पथ का निर्माण और सत्यापन करके भरोसा किया जाता है।

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

कृपया ध्यान दें कि यह दृष्टिकोण डिजिटल एन्क्रिप्शन के लिए काम नहीं करता है, क्योंकि एन्क्रिप्शन को दूसरी पार्टी की सटीक पत्ती कुंजी के पहले ज्ञान की आवश्यकता होती है।

2

संक्षिप्त उत्तर "नहीं" है यदि आपके पास केवल सीए प्रमाणपत्र है लेकिन आईडीपी या एसपी का प्रमाण पत्र नहीं है तो आप आईडीपी या एसपी के हस्ताक्षर को मान्य नहीं कर सकते हैं।

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

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

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