क्या अभिलेखागार पर हस्ताक्षर करना संभव है?


15

मैं एक पब / पीआरवी कुंजी बनाने और एक फ़ाइल का एक हस्ताक्षर बनाने और इसे मान्य करने के लिए ओपनस् के साथ खेला। मैंने क्रिप्टोफ़ेन (विंडोज़ gnupg फ्रंटेंड) के साथ खिलवाड़ किया और कुंजियों के बारे में सुना + पाठ पर हस्ताक्षर करने के साथ खेला।

हालाँकि मैंने कभी फ़ाइल संग्रह पर हस्ताक्षर नहीं किए हैं। अगर मैं एक संग्रह प्रकाशित करना चाहता हूं (7z, rar या zip, यह महत्वपूर्ण नहीं है) और मैं चाहूंगा कि मेरे उपयोगकर्ता या सॉफ़्टवेयर यह जांचने में सक्षम हों कि क्या THAT संग्रह पर हस्ताक्षर किए गए हैं तो मैं कैसे करूंगा? सार्वजनिक कुंजी को सार्वजनिक रूप से उपलब्ध होने की आवश्यकता होगी। लेकिन आर्काइव में हस्ताक्षर जोड़ना मुझे परेशान करता है। क्या कोई सॉफ़्टवेयर + संग्रह मुझे एक संपीड़ित संग्रह फ़ाइल पर हस्ताक्षर करने और सत्यापित करने की अनुमति देता है?


आप इस पर हस्ताक्षर क्यों करना चाहते हैं? आप बस SHA1 हैश बना सकते हैं और अपने ग्राहकों / उपयोगकर्ताओं को जांच के लिए हैश उपलब्ध करा सकते हैं। यह पुष्टि करने के लिए पर्याप्त है कि फ़ाइल के साथ छेड़छाड़ नहीं की गई है। हालांकि आपके उपयोगकर्ताओं को हैश को सत्यापित करने की क्षमता होनी चाहिए, लेकिन हस्ताक्षर को सत्यापित करने की तुलना में अधिक कठिन नहीं है।
BJ292

@ BJ292: और आप कैसे सत्यापित करते हैं कि हैश के साथ छेड़छाड़ नहीं की गई है?
user1686

@ घबराहट - मुझे यकीन नहीं है कि - हैश के साथ छेड़छाड़ की बात क्या है? मैं आपको एक फ़ाइल और हैश भेजता हूँ - आप फ़ाइल से हैश को फिर से बनाते हैं और इसकी पुष्टि करते हैं कि यह मेल खाता है - यह पुष्टि करता है कि फ़ाइल नहीं बदली गई है। ज्यादातर परिस्थितियों में यह सभी लोग चाहते हैं - पुष्टि करें कि फाइल ए से बी अपरिवर्तित हो गई है। निश्चित रूप से ऐसा लगता है कि ओपी के बाद क्या है।
BJ292

3
@ BJ292: आप मान रहे हैं कि ओपी केवल आकस्मिक डेटा भ्रष्टाचार से संबंधित है। यह प्रश्न में नहीं कहा गया है (या इनकार किया गया है), लेकिन ओपी डिजिटल हस्ताक्षर के बारे में पूछ रहा है, इसलिए मैं मान रहा हूं कि जानबूझकर (संभवतः दुर्भावनापूर्ण) डेटा संशोधनों के खिलाफ सुरक्षा की आवश्यकता है ।
user1686

1
@ BJ292: फाइलें अन्य पीपीएल साइटों पर दिखाई जाएंगी। मैं उन पर हस्ताक्षर करना चाहूंगा ताकि कोई भी दर्पण छेड़छाड़ न कर सके

जवाबों:


10

एक सामान्य विधि एक फ़ाइल में एक अलग हस्ताक्षर बनाने के लिए है.sig (आमतौर पर उपयोग करके एक PGP हस्ताक्षर gpg -b- X.509 बहुत असामान्य है), और एक ही स्थान पर दोनों फाइलें प्रदान करें। उदाहरण के लिए:

ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2
ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2.sig

यह किसी भी प्रकार की फ़ाइल के साथ उपयोग किया जा सकता है, लेकिन उपयोगकर्ता को मैन्युअल रूप से उपयोग करके हस्ताक्षर को सत्यापित करना होगा gpg --verify


दुर्भाग्य से, वर्तमान में उपयोग में आने वाले, कोई संग्रह प्रारूप (जो मुझे पता है) में पीजीपी या 50.509 का उपयोग करके अंतर्निहित हस्ताक्षरों के लिए समर्थन है । (यह CAB को बाहर कर रहा है, जिसका उपयोग विंडोज आंतरिक रूप से करता है लेकिन व्यावहारिक रूप से कहीं और नहीं है, और साइन करने के लिए जटिल है)। WinRAR 4 एक मालिकाना प्रारूप का उपयोग करके "प्रामाणिकता सत्यापन" रिकॉर्ड जोड़ने में सक्षम था, लेकिन यह आपके WinRAR लाइसेंस को हस्ताक्षर कुंजी के रूप में उपयोग करता है, जिसे बार-बार क्रैक किया गया है। (अपडेट: यह सुविधा असुरक्षा के कारण WinRAR 5 से हटा दी गई थी ।)


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


2

जार-आर्काइव, जार-जार-टूल के साथ निर्मित, प्रभावी रूप से जिप-अभिलेखागार हैं, और उन्हें साइन करने के लिए एक उपकरण, जारसिग्नर है।

यहां कुछ उपयोगी लिंक दिए गए हैं:

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


यह सच है (XPI अभिलेखागार भी बहुत ही समान तरीके से हस्ताक्षर किए गए ज़िप हैं), लेकिन AFAIK, केवल जावा रनटाइम वास्तव में JAR हस्ताक्षर की पुष्टि करता है , और मैनुअल सत्यापन करने की आवश्यकता इसे GnuPG से भी कम व्यावहारिक बनाती है।
user1686

आपका क्या मतलब है manual verification? विकल्प क्या है? एक ऑटोपॉप, जो हर 10 मिनट में खुद को सत्यापित करता है? क्या OS स्वतः बूट पर संग्रह को सत्यापित करेगा? जब एक अभिलेख प्राप्त होता है - यह सीडी, ईमेल-अनुलग्नक, डाउनलोड, ... से हो सकता है? क्या यह आपके वायरस स्कैनर में एक प्लगइन होना चाहिए?
उपयोगकर्ता अज्ञात

मेरा मतलब था कि निष्कर्षण से पहले / निष्कर्षण के दौरान या प्रोग्राम निष्पादन के दौरान ओएस / रनटाइम द्वारा संग्रह निष्कर्षण उपकरण द्वारा किया गया सत्यापन। उदाहरण के लिए, .debपैकेज हस्ताक्षर dpkgस्थापित किए जाने से पहले सत्यापित किए जाते हैं , उपयोगकर्ता बिना किसी अतिरिक्त कार्रवाई के।
user1686

@ शुद्धता: हस्ताक्षरित एप्लेट, एक जार में ज़िपित, निष्पादन से पहले सत्यापित हैं। न्यूनतम शेल स्क्रिप्ट उत्पन्न करने के लिए, जो निष्कर्षण (जार) के साथ सत्यापन (जारसिग्नर) को जोड़ती है, तुच्छ होगा।
उपयोगकर्ता अज्ञात

तीसरी कड़ी "जार फ़ाइलों पर हस्ताक्षर करने के लिए विकी" टूटी हुई है
जेसन एस

0

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

विंडोज़ के लिए, iexpress टूल के साथ एक सेल्फ एक्सट्रैक्टिंग आर्काइव बनाएं, फिर यहाँ बताए अनुसार signtool.exe का उपयोग करके इसे साइन इन करें । जब आपके उपयोगकर्ता फ़ाइल पर डबल क्लिक करते हैं, तो उनके पास परिचित खिड़कियों की पुष्टि होगी जो आपको संग्रह के प्रकाशक के रूप में पहचानती है।


-1

आप इन दो आदेशों के साथ jarsigner का उपयोग करके फ़ाइलों पर हस्ताक्षर कर सकते हैं:

keytool -genkeypair -alias <key-alias> -keyalg RSA -keystore <keystore> -validity 180

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore <keystore> <file-to-sign> <key-alias>

आपको अपने पीसी में जावा jdk स्थापित करने की आवश्यकता है।

-पहली कमांड वर्तमान निर्देशिका में कुंजी स्टोर बनाता है (यह मानते हुए कि यह पहले से मौजूद नहीं है)। यह एल्गोरिथ्म SHA-256 का उपयोग करके एक सार्वजनिक / निजी कुंजी जोड़ी बनाता है।

-दूसरा एक ही एल्गोरिथ्म, कीस्टोर और अन्य नाम से एक ही एल्गोरिदम का उपयोग करके फ़ाइल पर हस्ताक्षर करता है।

कुंजी स्टोर का उपयोग करके हस्ताक्षरित फ़ाइल को सत्यापित करने के लिए, आप इस आदेश को चला सकते हैं:

jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.