कैसे, अगर सब पर, SSH कुंजियाँ अन्य उद्देश्यों के लिए उपयोग की जाने वाली असममित कुंजियों से भिन्न होती हैं?


13

कैसे, अगर सब पर, SSH कुंजियाँ अन्य उद्देश्यों के लिए उपयोग की जाने वाली असममित कुंजियों से भिन्न होती हैं, जैसे ईमेल हस्ताक्षर?

मुझे यह पूछने के लिए कहा जाता है कि यह आंशिक रूप से है, क्योंकि ओएस एक्स पर, एसएसएच कुंजी (ssh-Agent, SSHKeychain, आदि) का प्रबंधन करने के लिए ऐप उपलब्ध हैं और साथ ही साथ GPG कुंजी (GPG कीचेन एक्सेस, आदि) को प्रबंधित करने के लिए डिज़ाइन किए गए ऐप भी हैं। और जाहिरा तौर पर जुड़वां मिलते हैं। हालाँकि, मुझे विश्वास नहीं है कि यह एक ओएस एक्स-विशिष्ट मुद्दा है।

क्या यह चिंताओं से अलग है क्योंकि चाबियाँ काफी भिन्न प्रकार की हैं, या क्योंकि वे अलग-अलग स्थानों में संग्रहीत हैं, या यह किसी अन्य कारण या कारणों के संयोजन के लिए है, उदाहरण के लिए ऐतिहासिक कारण?

जवाबों:


14
  • SSH चाबियाँ सिर्फ सादा RSA, DSA या ECDSA असममित कुंजी जोड़े हैं। ओपनएसएसएच द्वारा उत्पन्न इस तरह की एक कीपर का उपयोग पहले से ही ओपनएसएसएल और अधिकांश अन्य कार्यक्रमों द्वारा किया जा सकता है।

    ( .pubफ़ाइल आउटपुट ssh-keygenओपनएसएसएच-विशिष्ट प्रारूप में है, लेकिन यह "निजी" फ़ाइल के बाद से अप्रासंगिक है, जिसमें पहले से ही निजी और सार्वजनिक दोनों कुंजी हैं।)

    अन्य SSH सॉफ़्टवेयर के अपने स्वयं के संग्रहण प्रारूप हो सकते हैं, जैसे RFC 4716 या PuTTY का PPK , लेकिन वे समान RSA / DSA / ECDSA जानकारी संग्रहीत करते हैं।

  • X.509 (SSL, S / MIME द्वारा प्रयुक्त) थोड़ा और अधिक जटिल है: "निजी" कुंजी अभी भी समान है, लेकिन एक नंगे सार्वजनिक-कुंजी फ़ाइल के बजाय आपके पास "प्रमाणपत्र" है - ASN.1 संरचना जिसमें सार्वजनिक कुंजी, विषय और जारीकर्ता के नाम, वैधता दिनांक। X.509 v3 प्रमाणपत्र में, "कुंजी उपयोग" और "वैकल्पिक विषय नाम" जैसे एक्सटेंशन मौजूद होंगे। पूरे प्रमाण पत्र को जारीकर्ता की कुंजी (या यदि कोई अलग से जारीकर्ता न हो तो स्व-हस्ताक्षरित) द्वारा हस्ताक्षरित किया जाता है।

    आप SSH के लिए एक X.509 "निजी कुंजी" फ़ाइल का उपयोग आसानी से कर सकते हैं - ओपनएसएसएच यहां तक ​​कि एक ही प्रारूप का उपयोग करता है।

    आप एक साधारण कीपर से X.509 प्रमाणपत्र बना सकते हैं और फिर उसे स्व-साइन कर सकते हैं, या आप एक "प्रमाणपत्र अनुरोध" बना सकते हैं और इसे CA (प्रमाणीकरण प्राधिकारी) द्वारा हस्ताक्षरित करने के लिए सबमिट कर सकते हैं।

    X.509 प्रमाणपत्र में जानकारी प्रदर्शित करने के लिए, उपयोग करें:

    certtool -i < foo.pem
    certtool -i --inder < foo.crt
    
    openssl x509 -noout -text < foo.pem
    openssl x509 -noout -text -inform der < foo.crt
    

    ( certtoolGnuTLS का हिस्सा है।)

  • OpenPGP (GPG द्वारा उपयोग की जाने वाली) कुंजियाँ सबसे जटिल हैं। जिसे आप "PGP कुंजी" या "PGP कीपर" कहते हैं, एक जटिल संरचना है जिसे "OpenPGP प्रमाणपत्र" कहा जाता है:

    • एक "प्राथमिक कुंजी" - एक असममित कुंजी जोड़ी, आमतौर पर हस्ताक्षर करने के लिए उपयोग की जाती है
    • एक या अधिक "उपयोगकर्ता आईडी" - पाठ लेबल, आमतौर पर "नाम <ईमेल @ पता>" के रूप में
      • उनमें से कम से कम एक को "प्राथमिक उपयोगकर्ता आईडी" के रूप में चिह्नित किया गया है
      • प्रत्येक उपयोगकर्ता आईडी के लिए, एक "स्व-हस्ताक्षर" - अपने स्वयं के प्राथमिक कुंजी द्वारा हस्ताक्षर
      • प्रत्येक उपयोगकर्ता आईडी के लिए, अन्य उपयोगकर्ताओं द्वारा शून्य या अधिक "हस्ताक्षर"
      • स्व-हस्ताक्षर के पैकेट में आपके पसंदीदा एल्गोरिदम (SHA-1, AES, आदि) भी होते हैं।
    • एक या अधिक "उपकुंजियों" - अतिरिक्त प्रमुख जोड़े, पहला आमतौर पर एन्क्रिप्शन के लिए है
      • प्रत्येक उपकुंजी के लिए, प्राथमिक कुंजी द्वारा एक हस्ताक्षर
    • शून्य या अधिक "फोटो आईडी" - जेपीईजी या पीएनजी संलग्नक जिसमें आपका चेहरा है
      • उपयोगकर्ता आईडी के रूप में उसी तरह हस्ताक्षर किए
    • शून्य या अधिक X.509 प्रमाणपत्र

    सभी कीपियों में समाप्ति तिथि और उपयोग बिट्स हैं: साइन डेटा, प्रमाणित (साइन) कुंजी, एन्क्रिप्ट, सेवाओं के लिए प्रमाणित। डिफ़ॉल्ट रूप से प्राथमिक कुंजी में "साइन" और "प्रमाणित" बिट्स होते हैं और पहली उपकुंजी "एन्क्रिप्ट" करने के लिए है। यदि आप "प्रमाणीकरण" उपकुंजी जोड़ते हैं, तो आप gpg-agentएसएसएच प्रमाणीकरण के लिए इसका उपयोग कर सकते हैं ।

    यह देखने के लिए कि आपके प्रमाणपत्र में क्या है:

    gpg --export joe@example.com | gpg -vv
    
    gpg --export joe@example.com | certtool --pgp-certificate-info
    

    ( certtoolGnuTLS का हिस्सा है।)


X.509 प्रमाणपत्र और उनकी संबद्ध निजी कुंजी कई स्वरूपों में आती हैं:

  • DER प्रमाणपत्र की ASN.1 संरचना का एक द्विआधारी एन्कोडिंग है। ऐसी फ़ाइलों में आमतौर पर .crtया .cerनाम एक्सटेंशन होता है ( .derयह कम सामान्य है लेकिन अनदेखी नहीं है)।

  • "पीईएम" प्रारूप फ़ाइलों में एक ही डीईआर-एन्कोडेड डेटा होता है, लेकिन इसके अलावा बेस 64 का उपयोग करके और "बेगिन थीस" और "END थैट" हेडर के बीच एन्कोड किया जाता है। एक सामान्य फ़ाइल नाम एक्सटेंशन है .pem, हालांकि दोनों .crtऔर .cerकभी-कभी यहां भी उपयोग किए जाते हैं (लेकिन कभी नहीं .der)।

  • प्रमाण पत्र से संबंधित निजी कुंजी के लिए, "पीईएम" प्रारूप का आमतौर पर उपयोग किया जाता है - बेस 64 हेडर "BEGIN निजी कुंजी" (PKCS # 7 संरचना में कुंजी) या "BEGIN RSA (या DSA) PRIVER KEY" (नंगे कुंजी, ओपनएसएसएल ) से घिरा हुआ प्रारूप)। कभी-कभी कुंजी एक अलग .keyफ़ाइल में होती है, कभी-कभी यह प्रमाणपत्र के साथ बंडल की जाती है।

  • पीकेसीएस # 12 और थोड़ा पुराने पीएफएक्स एन्क्रिप्टेड कंटेनर हैं जो प्रमाण पत्र और निजी कुंजी (अक्सर जारीकर्ता का प्रमाण पत्र) दोनों का भंडारण करते हैं। निजी कुंजी के साथ प्रमाण पत्र निर्यात या "बैकअप" करते समय इस प्रारूप का उपयोग अधिकांश सॉफ़्टवेयर द्वारा किया जाता है।

एक कम भ्रामक स्थिति ओपनपीजीपी में है: सभी डेटा एक ही बाइनरी प्रारूप का अनुसरण करते हैं, और वैकल्पिक रूप से "बख्तरबंद" (रेडिक्स 64 के साथ और पीईएम जैसे हेडर के बीच एन्कोडेड) है।


2

विभिन्न स्थानों और विभिन्न स्वरूपों में संग्रहीत (पीजीपी, GnuPG ssh, और कई अलग-अलग X.509 प्रारूपों के अन्य लोगों के बीच उपयोग किए जाने वाले प्रारूप काफी भिन्न हैं)। यह मिश्रण और सही विकल्प का मिलान करके कुछ हद तक उन दोनों के बीच ट्रांसकोड के लिए संभव है करने के लिए ssh-keygen, pgp, gpg/ gpg2, openssl, आदि .; लेकिन सामान्य तौर पर यह प्रयास के लायक नहीं है। इसके अलावा, विभिन्न मुख्य प्रारूप विभिन्न मात्रा में सूचनाओं का समर्थन करते हैंsshकम से कम अतिरिक्त जानकारी और X.509 पीईएम और डीईआर प्रारूपों को ले जाने के लिए सबसे अधिक है। इसके अतिरिक्त, OSX कीचेन केवल कुंजी / मूल्य भंडारण एन्क्रिप्टेड है, इसलिए प्रोग्राम के मूल कुंजी + मेटाडेटा प्रारूप और कुछ केचेन में संग्रहित की जा सकने वाली चीज़ के बीच कनवर्ट करने के लिए प्रत्येक एप्लिकेशन को एक अलग तंत्र की आवश्यकता होती है। (इसी तरह की चिंताओं केडीई वॉलेट और गनोम किचेन पर लागू होती हैं।)


यह ध्यान रखना महत्वपूर्ण है कि अंतर्निहित एन्क्रिप्शन मानक भी अलग है। gpg ज्यादातर DSA का उपयोग करता है, जबकि SSH ज्यादातर RSA का उपयोग करता है। मानक असममित मानकों की एक सीमित संख्या है, और अधिकांश अनुप्रयोग कई मानकों का समर्थन करते हैं, लेकिन विभिन्न अनुप्रयोगों के लिए 'सामान्य' मानक भिन्न होते हैं।
jcrawfordor
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.