วิธีการแสดงและยืนยันลายเซ็นโค้ดสำหรับแอปใน Mac OS X

แอปพลิเคชันที่ลงนามโดยรหัสช่วยให้ผู้ใช้ที่ใส่ใจในเรื่องความปลอดภัยสามารถตรวจสอบผู้สร้างและแฮชของแอปหนึ่ง ๆ เพื่อช่วยยืนยันว่าไม่ได้รับความเสียหายหรือถูกดัดแปลง ไม่จำเป็นสำหรับผู้ใช้ Mac โดยเฉลี่ยโดยเฉพาะผู้ที่ได้รับซอฟต์แวร์จาก Mac App Store หรือแหล่งข้อมูลที่เชื่อถือได้เนื่องจากแอปได้รับการรับรอง แต่การตรวจสอบลายเซ็นดิจิทัลของแอปจะเป็นประโยชน์อย่างยิ่งสำหรับผู้ใช้ที่ได้รับแอพจากบุคคลที่สาม แหล่งที่มา


การตรวจสอบลายเซ็นรหัสเป็นสิ่งสำคัญโดยเฉพาะสำหรับผู้ที่ได้รับซอฟต์แวร์และโปรแกรมติดตั้งจากแหล่งข้อมูล p2p และกระจายบางทีไซต์ torrent หรือกลุ่มข่าวสาร IRC สาธารณะ ftp หรือทรัพยากรเครือข่ายอื่น ตัวอย่างเช่นสมมติว่าผู้ใช้ไม่สามารถเข้าถึง Mac App Store ได้ไม่ว่าจะด้วยเหตุใด แต่ต้องดาวน์โหลดโปรแกรมติดตั้ง OS X และอาศัยแหล่งที่มาของบุคคลที่สาม สถานการณ์ดังกล่าวเป็นสิ่งสำคัญที่ต้องทราบและยืนยันว่าผู้ติดตั้งไม่ได้ถูกดัดแปลงและถูกต้องตามกฎหมายมาจาก Apple และนอกเหนือจากการตรวจสอบ sha1 hash โดยตรงวิธีที่ง่ายที่สุดในการทำเช่นนี้คือการตรวจสอบลายเซ็นและรหัสลับ แฮชของแอปที่มีปัญหา

ในการเริ่มต้นให้เรียกใช้ Terminal ซึ่งพบได้ใน / Applications / Utilities / เราจะใช้คำสั่ง 'codesign' ที่มีชื่อว่า aptly พร้อมด้วย -dv และ -verbose = 4 flags เพื่อแสดงข้อมูลการระบุเกี่ยวกับแอ็พพลิเคชันใด ๆ รวมถึงประเภท hash การตรวจสอบ hash และการเซ็นชื่อ

ไวยากรณ์พื้นฐานมีดังนี้:

code sign -dv --verbose=4 /Path/To/Application.app

ตัวอย่างเช่นลองตรวจสอบลายเซ็นบน Terminal.app ซึ่งอยู่ใน / Applications / Utilities /

codesign -dv --verbose=4 /Applications/Utilities/Terminal.app
Executable=/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
Identifier=com.apple.Terminal
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=5227 flags=0x0(none) hashes=255+3 location=embedded
Platform identifier=1
Hash type=sha1 size=20
CDHash=0941049019f9fa3499333fb5b52b53735b498aed6cde6a23
Signature size=4105
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
Info.plist entries=34
TeamIdentifier=not set
Sealed Resources version=2 rules=13 files=996
Internal requirements count=1 size=68

สิ่งที่คุณต้องการคือประเภท hash, hash และ authority entries ในกรณีนี้ประเภทแฮชคือ sha1 และผู้มีอำนาจลงนามเป็น Apple ซึ่งเป็นสิ่งที่คุณคาดหวัง

ใช่คุณสามารถใช้บรรทัดคำสั่งเพื่อตรวจสอบ sha1 หรือ md5 ของโปรแกรมติดตั้งแอ็พพลิเคชันและดาวน์โหลดและเปรียบเทียบกับแหล่งที่ถูกต้อง แต่จะไม่เปิดเผยรายละเอียดรหัสและข้อมูลใบรับรอง

โปรดจำไว้ว่ารหัสส่วนใหญ่ที่ลงนามในซอฟต์แวร์ที่ถูกแก้ไขโดยบุคคลที่ไม่ได้รับอนุญาตจะถูกปฏิเสธโดย Gatekeeper ใน OS X เว้นแต่ Gatekeeper จะถูกปิดใช้งานหรือไม่สามารถหลีกเลี่ยงได้ แต่แม้ Gatekeeper จะปล่อยให้ goon เป็นไปได้ในทางทฤษฎี รอบและแน่นอนซอฟต์แวร์ที่ไม่ได้รับการรับรองโดยนักพัฒนาระบุสามารถเปิดรอบ Gatekeeper ต่อไป

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการลงนามโค้ดในวิกิพีเดียและในคู่มือผู้พัฒนาแอปเปิ้ลเพื่อลงรหัสที่นี่