MacOS इंटरनेट से डाउनलोड किए गए ऐप की साइनिंग स्थिति की पहचान कैसे करता है?


8

मैंने सफारी का उपयोग करके इंटरनेट से एक ऐप डाउनलोड किया। इसे अंजाम देने पर, macOS यह सूचित करता है कि ऐप किसी अज्ञात डेवलपर का है।

MacOS इस जानकारी को कैसे निर्धारित कर सकता है? किसी एप्लिकेशन के लिए हस्ताक्षरित मेटाडेटा कहाँ संग्रहीत किया जाता है?


यदि मैं आपके प्रश्न को समझता हूं, तो आपको यह चेतावनी मिल रही है क्योंकि सफारी में आपके द्वारा डाउनलोड किया गया एक ऐप्पल ऐप्पल के लिए जाना जाता है। क्या आप पूछ रहे हैं कि आपके कंप्यूटर पर प्रोग्राम xyz कहाँ स्थित है?
जेक 3231

जवाबों:


13

जानकारी को विस्तारित विशेषताओं में संग्रहीत किया जाता है, अतिरिक्त जानकारी के साथ संभावित रूप से एक एप्लिकेशन के भीतर एम्बेडेड होता है।

विस्तारित गुण

यह संगरोध जानकारी एक विस्तारित विशेषता के रूप में संग्रहीत है । xattrफ़ाइल या एप्लिकेशन से जुड़ी विशेषताओं को देखने के लिए टूल का उपयोग करें ।

इस संदेश के कारण विशेषता है com.apple.quarantine

देखें कि मैं मैक ओएस एक्स में एक फ़ाइल पर "विस्तारित विशेषताओं" को कैसे निकालूं? और ऐप को खोला नहीं जा सकता क्योंकि यह अधिक विवरण के लिए अज्ञात डेवलपर से है

गेटकीपर और कोड हस्ताक्षर

विस्तारित विशेषता का उपयोग गेटकॉकर द्वारा macOS पर किया जाता है और इस पर चर्चा की जाती है कि कैसे com.apple.quarantine विशेषता को सेट करें (पुनर्स्थापित करें)?

किसी एप्लिकेशन के भीतर एम्बेडेड वैकल्पिक डिजिटल हस्ताक्षर का उपयोग एप्लिकेशन के डेवलपर को निर्धारित करने के लिए किया जाता है। यदि कोई हस्ताक्षर नहीं मिलता है, तो macOS एक अज्ञात डेवलपर से होने के नाते आवेदन प्रस्तुत करता है।


5
यह काफी सही नहीं है। डाउनलोड किए गए फ़ाइल के स्रोत को ट्रैक करने के लिए संगरोध डेटा का उपयोग किया जाता है , लेकिन हस्ताक्षर कहीं और है।
डस्कवफ-एक्टिव-

1
@duskwuff सही है। संगरोध पॉपअप का कारण बनता है "XXX को इंटरनेट से डाउनलोड किया गया था, क्या आप वाकई इसे खोलना चाहते हैं?"
बरमार

1
सभी फाइलें और एप्लिकेशन हस्ताक्षरित नहीं हैं। कई एप्लिकेशन नहीं हैं, इसलिए उन मामलों में कोई एम्बेडेड हस्ताक्षर मौजूद नहीं है। यह "अज्ञात डेवलपर" संदेशों के लिए मामला होगा।
ग्राहम मिलन

7

वास्तव में संदेश "अज्ञात डेवलपर ..." दोनों कार्यों के संयोजन का परिणाम है: com.apple.quarantine विशेषता की जाँच करना और कोड पर हस्ताक्षर करने के संसाधन (* / सामग्री / _CodeSignature / CodeResources) जबकि वास्तविक हस्ताक्षर स्थिति है पूरी तरह से * / CodeResources द्वारा निर्धारित ।

आप प्रवेश करके विस्तारित विशेषता प्राप्त कर सकते हैं:

$ xattr -p com.apple.quarantine /Applications/*.app

प्रवेश करने वाली जानकारी पर हस्ताक्षर करने वाला कोड दर्ज करके पहुँचा जाता है:

$ codesign -dvvv /Applications/*.app

उदाहरण:

$ codesign -dvvvv /Applications/Google\ Chrome.app/
Executable=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Identifier=com.google.Chrome
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=273 flags=0x800(restrict) hashes=3+3 location=embedded
OSPlatform=36
OSSDKVersion=658432
OSVersionMin=657664
Hash type=sha256 size=32
CandidateCDHash sha1=bc8e3dffe7d9d5242e09ea80a220ed365d46fdf2
CandidateCDHash sha256=d7ae6211906bb17d593ce9c215d190a81f37e658
Hash choices=sha1,sha256
Page size=4096
CDHash=d7ae6211906bb17d593ce9c215d190a81f37e658
Signature size=8949
Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=20. Mar 2018 at 07:23:20
Info.plist entries=36
TeamIdentifier=EQHXZ8M8AV
Sealed Resources version=2 rules=7 files=203
Internal requirements count=1 size=240

सबसे महत्वपूर्ण हिस्सा प्रमाणपत्र श्रृंखला (और विश्वास की श्रृंखला) है:

Authority=Developer ID Application: Google, Inc. (EQHXZ8M8AV)
Authority=Developer ID Certification Authority
Authority=Apple Root CA

यहां तीन अलग-अलग प्राधिकरण दिखाई दे रहे हैं:

  1. रूट प्रमाणपत्र: एप्पल रूट सीए
  2. मध्यवर्ती Apple डेवलपर प्रमाणपत्र: डेवलपर आईडी प्रमाणन प्राधिकरण
  3. डेवलपर प्रमाणपत्र: Google, Inc. (EQHXZ8M8AV)

इसका मतलब यह है कि ऐप को एक डेवलपर प्रमाण पत्र के साथ हस्ताक्षरित किया गया है, जिसे Apple के मध्यवर्ती डेवलपर प्राधिकरण द्वारा प्रकाशित और हस्ताक्षरित किया गया है, जो कि स्वयं ही रूट प्रबंधक द्वारा प्रकाशित और हस्ताक्षरित है।

यह श्रृंखला Google (या अधिक सटीक रूप से: टीम / इकाई Google, Inc. (EQHXZ8M8AV)) को Apple पहचाने गए डेवलपर के रूप में योग्य बनाती है।

आप स्वयं या किसी अन्य मध्यवर्ती / रूट प्राधिकारी से एक कोडिंग प्रमाण पत्र के साथ कोड्स को भी असाइन कर सकते हैं लेकिन यह गेटकीपर को मात नहीं देगा।

अब चार क्रमपरिवर्तन संभव है कि गेटकीपर सक्षम है (लेकिन स्व-हस्ताक्षर / एलियन-हस्ताक्षर पर विचार नहीं कर रहा है):

  • कोई com.apple.quarantine विशेषता / नहीं Apple डेवलपर प्रमाण पत्र (उदाहरण: काढ़ा स्थापित Apache CouchDB )
  • कोई com.apple.quarantine विशेषता / एक Apple डेवलपर प्रमाण पत्र (उदाहरण: काढ़ा स्थापित Google Chrome )
  • एक com.apple.quarantine विशेषता / नहीं Apple डेवलपर प्रमाणपत्र (उदाहरण: Apache CouchDB वेबसाइट से ज़िप डाउनलोड करने और अनजिप किए गए एप्लिकेशन को / एप्लिकेशन / ) पर कॉपी करके इंस्टॉल किया गया
  • एक com.apple.quarantine विशेषता / एक Apple डेवलपर प्रमाणपत्र (उदाहरण: Google Chrome को वेबसाइट से dmg डाउनलोड करके और एप्लिकेशन को / एप्लिकेशन / अंदर कॉपी करके इंस्टॉल किया गया )

पहले दो मामलों में ऐप बस लॉन्च होगा। तीसरे मामले में आपको Unindentified Developer मैसेज मिलेगा । आप विस्तारित विशेषता xattr -d com.apple.quarantine *(= केस 1) को हटाकर इसे हल कर सकते हैं । चौथे मामले में आपको "इंटरनेट से डाउनलोड किया गया था, क्या आप वाकई इसे खोलना चाहते हैं?"


5

MacOS इस जानकारी को कैसे निर्धारित कर सकता है? किसी एप्लिकेशन के लिए हस्ताक्षरित मेटाडेटा कहाँ संग्रहीत किया जाता है?

एप्लिकेशन बाइनरी (फ़ाइल में Contents/_CodeSignature/CodeResources) में कुछ अतिरिक्त डेटा के साथ हस्ताक्षर को एप्लिकेशन बाइनरी में ही संग्रहीत किया जाता है ।

आप कमांड लाइन उपयोगिता का उपयोग करके हस्ताक्षर पर कुछ जानकारी प्राप्त कर सकते हैं codesign- उदाहरण के लिए:

# codesign -dv /Applications/Preview.app
Executable=/Applications/Preview.app/Contents/MacOS/Preview
Identifier=com.apple.Preview
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=21314 flags=0x0(none) hashes=659+5 location=embedded
Platform identifier=4
Signature size=4485
Info.plist entries=35
TeamIdentifier=not set
Sealed Resources version=2 rules=13 files=2077
Internal requirements count=1 size=68
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.