Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีการตรวจสอบความถูกต้องของซอฟต์แวร์ Linux ด้วยลายเซ็นดิจิทัล

วิธีการตรวจสอบความถูกต้องของซอฟต์แวร์ Linux ด้วยลายเซ็นดิจิทัล

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

ลองนึกถึงไซต์ที่โฮสต์ยูทิลิตี้กระเป๋าเงิน Bitcoin หากผู้โจมตีสามารถแทนที่เวอร์ชันที่ถูกต้องด้วยเวอร์ชันที่เป็นอันตราย เขาอาจขโมยเงินจากผู้ใช้หลายหมื่นคนได้ เป้าหมายที่มีค่าอีกประการหนึ่งสำหรับแบ็คดอร์คือระบบปฏิบัติการ สิ่งนี้เคยเกิดขึ้นกับ Linux Mint ในอดีต

แล้วคุณจะทำอย่างไรกับมันได้บ้าง

แฮชและลายเซ็น

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

เพื่อให้ผลรวมการตรวจสอบเหล่านี้มีประโยชน์ นักพัฒนายังสามารถเซ็นชื่อแบบดิจิทัลด้วยความช่วยเหลือของคู่คีย์สาธารณะและส่วนตัว เฉพาะบุคคลที่เป็นเจ้าของคีย์ส่วนตัวนี้เท่านั้นที่สามารถสร้างลายเซ็นได้ สิ่งเหล่านี้สามารถตรวจสอบได้ด้วยกุญแจสาธารณะที่เกี่ยวข้องซึ่งเผยแพร่บนอินเทอร์เน็ตเท่านั้น หากการตรวจสอบผ่าน คุณสามารถมั่นใจ (เกือบทุกครั้ง) ว่าเจ้าของคีย์ส่วนตัวได้ลงนามในซอฟต์แวร์ของเขา

สำหรับแฮ็กเกอร์ที่จะหลีกเลี่ยงกลไกการรักษาความปลอดภัยนี้ เขาต้องขโมยคีย์ส่วนตัวอย่างใดทางหนึ่ง ซึ่งยากกว่ามากหากเจ้าของใช้มาตรการที่เหมาะสมเพื่อเก็บเป็นความลับ และถึงแม้กุญแจจะถูกขโมย เจ้าของก็สามารถทำให้เป็นโมฆะได้ด้วยการเพิกถอนและประกาศ หากเกิดกรณีนี้ขึ้น เมื่อคุณดาวน์โหลดคีย์สาธารณะของเขา/เธอและพยายามใช้เพื่อยืนยันลายเซ็น คุณจะได้รับแจ้งว่าการดำเนินการนี้ถูกเพิกถอนแล้ว

วิธีการตรวจสอบลายเซ็นโดยใช้ GnuPG (GPG)

โดยปกติยูทิลิตี้ gpg จะถูกติดตั้งตามค่าเริ่มต้นใน distros ทั้งหมด หากหายไปด้วยเหตุผลบางประการ คุณสามารถติดตั้งโดยใช้คำสั่งด้านล่าง ในบางรุ่น หากคุณได้รับข้อผิดพลาดเช่น “gpg:failed to start the dirmngr '/usr/bin/dirmngr':No such file or directory ” คุณต้องติดตั้ง dirmngr เช่นกัน

บน distros ที่ใช้ Debian, Ubuntu หรือ Debian ให้เรียกใช้:

sudo apt install gnupg dirmngr

สำหรับ RedHat/CentOS:

sudo yum install gnupg dirmngr

และบน Fedora:

sudo dnf install gnupg dirmngr

คุณสามารถทำตามตัวอย่างด้านล่างเพื่อทดสอบว่าคุณจะตรวจสอบ ISO ของตัวติดตั้ง Debian 9.8.0 ได้อย่างไร

ดาวน์โหลด “SHA256SUMS,” “SHA256SUMS.sign” และ “debian-9.8.0-amd64-netinst.iso” คุณอาจต้องคลิกขวาที่สองไฟล์แรกและเลือก “บันทึกลิงก์เป็น” หรือเทียบเท่าในเว็บเบราว์เซอร์ของคุณ มิฉะนั้น การคลิกอาจแสดงเนื้อหาแทนการดาวน์โหลดโดยอัตโนมัติ

เปิดเทอร์มินัลอีมูเลเตอร์และเปลี่ยนเป็นไดเร็กทอรีที่ดาวน์โหลดของคุณ

cd Downloads/

กำลังตรวจสอบผลรวมของเช็ค

รอให้การดาวน์โหลด ISO เสร็จสิ้น ถัดไป ตรวจสอบผลรวมเช็คซัม SHA256

sha256sum -c SHA256SUMS

วิธีการตรวจสอบความถูกต้องของซอฟต์แวร์ Linux ด้วยลายเซ็นดิจิทัล

คุณจะเห็นชื่อไฟล์ตามด้วยข้อความ "ตกลง" เมื่อผลรวมตรวจสอบดี ในการตรวจสอบเช็คซัมประเภทอื่นๆ คุณมีคำสั่งต่อไปนี้:sha1sum , sha512sum , md5sum . แต่ขอแนะนำให้ใช้ผลรวม SHA256 ขึ้นไป หากมี

บางไซต์ไม่มีไฟล์เช่น SHA256SUMS ซึ่งชื่อไฟล์และเช็คซัมถูกจัดกลุ่มไว้ด้วยกันเพื่อให้ตรวจสอบได้ง่าย หากพวกเขาเพียงแค่แสดงผลรวมบนเว็บไซต์ของพวกเขา ให้ตรวจสอบแฮชของไฟล์ด้วยคำสั่งเช่น:

sha256sum debian-9.8.0-amd64-netinst.iso

การใช้ GPG เพื่อตรวจสอบ Checksum ที่ลงนามแล้ว

ในตัวอย่างนี้ ทีม Debian ได้ลงนามในไฟล์ "SHA256SUMS" ด้วยคีย์ส่วนตัวและบันทึกไว้ในไฟล์ "SHA256SUMS.sign" ตรวจสอบลายเซ็นด้วย:

gpg --verify SHA256SUMS.sign SHA256SUMS

คุณจะได้รับข้อความนี้:

gpg: Signature made Sun 17 Feb 2019 05:10:29 PM EET
gpg: using RSA key DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: Can't check signature: No public key

ซึ่งหมายความว่าคุณไม่มีคีย์สาธารณะบนคอมพิวเตอร์ของคุณ ซึ่งถือเป็นเรื่องปกติ คุณต้องนำเข้าจากคีย์เซิร์ฟเวอร์

gpg --keyserver keyring.debian.org --recv-keys DF9B9C49EAA9298432589D76DA87E80D6294BE9B

หากคีย์เซิร์ฟเวอร์ไม่ทำงาน คุณสามารถใช้เซิร์ฟเวอร์อื่นได้ ตัวอย่างเช่น คุณสามารถแทนที่ keyring.debian.org ด้วย keyserver.ubuntu.com .

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

Google ลายนิ้วมือของคีย์ (DF9B9C49EAA9298432589D76DA87E80D6294BE9B) หากคุณไม่พบสิ่งใด ให้ลองใช้ Google เฉพาะอักขระแปดตัวสุดท้าย (6294BE9B) จะมีการกล่าวถึงรหัสที่ถูกต้องในหลายเว็บไซต์เกี่ยวกับซอฟต์แวร์ที่คล้ายคลึงกัน นอกจากนี้ โดยปกติแล้ว โพสต์จะมีระยะเวลาหลายปี เนื่องจากคีย์ที่มีการป้องกันอย่างปลอดภัยจะถูกนำมาใช้เป็นเวลานาน

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

เมื่อคุณมีกุญแจสาธารณะแล้ว คุณก็สามารถตรวจสอบลายเซ็นได้ในที่สุด:

gpg --verify SHA256SUMS.sign SHA256SUMS

วิธีการตรวจสอบความถูกต้องของซอฟต์แวร์ Linux ด้วยลายเซ็นดิจิทัล

หากคุณเห็น "ลายเซ็นที่ดี" แสดงว่าทุกอย่างเช็คเอาท์ ไม่ต้องกังวลกับคำเตือน เป็นเรื่องปกติเพราะดังที่กล่าวไว้ คุณไม่มีเว็บที่เชื่อถือได้สำหรับคีย์สาธารณะ

บทสรุป

อย่างที่คุณอาจทราบแล้ว ไม่มีอะไรแน่นอนบนอินเทอร์เน็ต แต่การใช้มาตรการป้องกันไว้ก่อนจะปลอดภัยกว่าอย่างแน่นอน และการตรวจสอบลายเซ็นดิจิทัลของไฟล์ที่คุณดาวน์โหลดสามารถช่วยคุณหลีกเลี่ยงซอฟต์แวร์ที่เป็นอันตรายได้ หลายครั้งที่ผู้ใช้ดาวน์โหลดระบบปฏิบัติการลับๆ หรือซอฟต์แวร์กระเป๋าเงิน Bitcoin พวกเขาอาจหลีกเลี่ยงปัญหาได้หากตรวจสอบลายเซ็น เนื่องจากระบบไม่ได้ถูกดัดแปลง