เมื่อคุณดาวน์โหลดซอฟต์แวร์จากอินเทอร์เน็ต คุณต้องไว้วางใจนักพัฒนา (developer(s)) ว่าโปรแกรมของพวกเขาไม่ใช่มัลแวร์ อย่างไรก็ตาม คุณยังต้องกังวลเกี่ยวกับแฮกเกอร์ มีมากมายที่ผู้โจมตีสามารถได้รับประโยชน์จากการแฮ็กเว็บไซต์และแทนที่ซอฟต์แวร์ด้วยรุ่นที่มี backdoor
คิดถึงไซต์ที่โฮสต์ Bitcoin wallet utility หากผู้โจมตีจัดการแทนที่รุ่นที่ถูกต้องด้วยรุ่นมัลิเชียส เขสามารถขโมยเงินจากผู้ใช้หลายหมื่นคนได้ อีกเป้าหมายที่มีค่าสำหรับ backdoor คือระบบปฏิบัติการ สิ่งนี้เคยเกิดกับ Linux Mint ในอดีต
אז מה אתה יכול לעשות?
Hashes และ Signatures
นักพัฒนาที่ใส่ใจความปลอดภัยมักจะรวม checksums ไปกับไฟล์ setup หรือ archives ที่คุณสามารถตรวจสอบได้ คุณสามารถอ่านวิธีตรวจสอบบน Windows หรือ Linux ปัญหากับ hashes เหล่านี้คือ หากแฮกเกอร์แทนที่ไฟล์บนเว็บไซต์ เขาสามารถแทนที่ hashes ได้ง่ายๆ เช่นกัน นี่ทำให้ hashes เพียงอย่างเดียวเกือบไร้ประโยชน์ โดยเฉพาะหากโฮสต์อยู่บนเซิร์ฟเวอร์เดียวกับโปรแกรม
เพื่อทำให้ checksums เหล่านี้มีประโยชน์ นักพัฒนาสามารถลงนามดิจิทัล (digitally sign) ด้วยความช่วยเหลือจากคู่กุญแจ public และ private key เฉพาะคนที่ครอบครอง private key เท่านั้นที่สามารถสร้าง signatures ได้ เหล่านี้สามารถตรวจสอบได้เฉพาะกับ public key ที่ตรงกัน ซึ่งเผยแพร่บนอินเทอร์เน็ต หากการตรวจสอบผ่าน คุณสามารถมั่นใจได้ (เกือบเสมอ) ว่าเจ้าของ private key ลงนามซอฟต์แวร์ของเขา
สำหรับแฮกเกอร์ในการข้ามกลไกความปลอดภัยนี้ เขาต้องขโมย private key โน่นนี่ ซึ่งยากกว่ามากหากเจ้าของมีมาตรการเก็บรักษาความลับอย่างเหมาะสม และแม้ key จะถูกขโมย เจ้าของสามารถทำให้มันไม่ถูกต้องได้โดย revoke และประกาศ หากสิ่งนี้เกิดขึ้น เมื่อคุณดาวน์โหลด public key ของเขา/เธอ และพยายามใช้มันตรวจสอบ signature คุณจะได้รับแจ้งว่ามันถูก revoked แล้ว
วิธีตรวจสอบ Signatures ด้วย GnuPG (GPG)
ยูทิลิตี้ gpg มักติดตั้งล่วงหน้าบน distro ทั้งหมด หากด้วยเหตุผลบางอย่าง มันหาย คุณสามารถติดตั้งได้ด้วยคำสั่งด้านล่าง บนบาง distributions หากคุณได้ข้อผิดพลาดอย่าง "gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory," คุณต้องติดตั้ง dirmngr ด้วย
บน Debian, Ubuntu หรือ distro ที่พัฒนาจาก Debian ให้รัน:
sudo apt install gnupg dirmngr
สำหรับ RedHat/CentOS:
sudo yum install gnupg dirmngr
และบน Fedora:
sudo dnf install gnupg dirmngr
คุณสามารถทำตามตัวอย่างด้านล่างเพื่อทดสอบว่าคุณจะยืนยัน Debian 9.8.0 installer ISO อย่างไร
ดาวน์โหลด "SHA256SUMS," "SHA256SUMS.sign," และ "debian-9.8.0-amd64-netinst.iso" คุณอาจต้องคลิกขวาที่สองไฟล์แรกและเลือก "Save link as" หรือเทียบเท่า ในเว็บเบราว์เซอร์ของคุณ มิฉะนั้น การคลิกอาจแค่แสดงเนื้อหาแทนการดาวน์โหลดอัตโนมัติ
เปิด terminal emulator และเปลี่ยนไปไดเรกทอรีที่ดาวน์โหลดของคุณอยู่
cd Downloads/
การตรวจสอบ Checksums
รอให้การดาวน์โหลด ISO เสร็จ ต่อไป ตรวจสอบ SHA256 checksums
sha256sum -c SHA256SUMS
คุณจะเห็นชื่อไฟล์ตามด้วยข้อความ "OK" เมื่อ checksum ถูกต้อง เพื่อตรวจสอบ checksums ประเภทอื่น คุณมีคำสั่งต่อไปนี้: sha1sum, sha512sum, md5sum แต่แนะนำให้ใช้ SHA256 sum ขึ้นไป หากมีให้ใช้
บางไซต์ไม่เสนอไฟล์อย่าง SHA256SUMS ที่จัดกลุ่มชื่อไฟล์และ checksums ไว้ด้วยกันเพื่อการตรวจสอบง่าย หากพวกเขาแค่แสดง sum บนไซต์ ให้ตรวจสอบ hash ของไฟล์ด้วยคำสั่งอย่าง:
sha256sum debian-9.8.0-amd64-netinst.iso
การใช้ GPG เพื่อตรวจสอบ Signed Checksums
ในตัวอย่างนี้ ทีม Debian ลงนาม "SHA256SUMS" ด้วย private key ของพวกเขาและบันทึกในไฟล์ "SHA256SUMS.sign" ตรวจสอบ signature ด้วย:
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
นี่หมายความว่าคุณไม่มี public key บนคอมพิวเตอร์ของคุณ ซึ่งเป็นเรื่องปกติ คุณต้องนำเข้ามาจาก keyserver
gpg --keyserver keyring.debian.org --recv-keys DF9B9C49EAA9298432589D76DA87E80D6294BE9B
หาก keyserver ล้ม คุณสามารถใช้ alternate key ได้ ตัวอย่างเช่น คุณสามารถแทนที่ keyring.debian.org ด้วย keyserver.ubuntu.com
แตคุณรู้ไหมว่า key นี้ถูกต้องจริงไหม? น่าเสียดายที่จะแน่ใจอย่างสมบูรณ์ คุณจะต้องสร้างสิ่งที่เรียกว่า web of trust อย่างชัดเจน คุณไม่มีมันในจุดนี้ แต่มีบางสิ่งที่คุณสามารถทำได้
Google fingerprint ของ key (DF9B9C49EAA9298432589D76DA87E80D6294BE9B) หากคุณไม่พบอะไร ลอง Google แค่ 8 ตัวอักษรสุดท้าย (6294BE9B) Key ที่ถูกต้องจะถูกกล่าวถึงบนเว็บไซต์มากมายเกี่ยวกับซอฟต์แวร์คล้ายกัน นอกจากนี้ โพสต์มักจะครอบคลุมหลายปี เพราะ key ที่ถูกเก็บรักษาอย่างดีจะถูกใช้เป็นเวลานาน
หากคุณ paranoid จริงๆ ให้ดาวน์โหลด BitTorrent image แล้วตรวจสอบ checksum และ signatures วิธีที่ torrents ทำงาน ทำให้เป็นไปไม่ได้ที่จะแทนที่ไฟล์ที่อัปโหลดโดยผู้ใช้หลายร้อยคน นอกจากนี้ BitTorrent ยังมีกลไกของตัวเองในการตรวจสอบความสมบูรณ์ของทุก chunk ของข้อมูลที่ดาวน์โหลด
ตอนนี้คุณมี public key แล้ว คุณสามารถตรวจสอบ signature ได้ในที่สุด:
gpg --verify SHA256SUMS.sign SHA256SUMS
หากคุณเห็น "Good signature" หมายความว่าทุกอย่างตรวจสอบผ่าน อย่ากังวลเกี่ยวกับคำเตือน – มันปกติ เพราะ nhưที่กล่าว ไม่มี web of trust ที่สร้างขึ้นกับ public key
สรุป
เช่นที่คุณอาจรู้แล้ว ไม่มีอะไรแน่นอนบนอินเทอร์เน็ต แต่แน่นอนว่าปลอดภัยกว่าที่จะมีมาตรการป้องกัน และการตรวจสอบ digital signatures ของไฟล์ที่คุณดาวน์โหลดสามารถช่วยคุณหลีกเลี่ยงซอฟต์แวร์มัลิเชียส หลายครั้งที่ผู้ใช้ดาวน์โหลด OS ที่มี backdoor หรือซอฟต์แวร์ Bitcoin wallet พวกเขาอาจหลีกเลี่ยงปัญหาได้หากตรวจสอบ signatures เพราะเหล่านั้นไม่ได้ถูก tamper with