ค่าของการตรวจสอบ MD5 คืออะไรหาก MD5 hash เองสามารถถูกจัดการได้เช่นกัน?


39

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

ฉันทำตามตรรกะเท่าที่ไฟล์นั้นเกี่ยวข้อง แต่ถ้ามีคนต้องการอัปโหลดไฟล์ที่เป็นอันตรายพวกเขาสามารถสร้างการตรวจสอบ MD5 ที่สอดคล้องกันและโพสต์ลงในไซต์ดาวน์โหลดพร้อมกับไฟล์ที่เปลี่ยนแปลง สิ่งนี้จะหลอกลวงใครก็ตามที่ดาวน์โหลดไฟล์โดยคิดว่าไฟล์นั้นไม่มีการเปลี่ยนแปลง

การตรวจสอบ MD5 สามารถให้การป้องกันไฟล์ที่ถูกเปลี่ยนแปลงโดยเจตนาได้อย่างไรหากไม่มีวิธีการตรวจสอบว่าการตรวจสอบตัวเองนั้นถูกบุกรุก


3
หากเราอาศัยเว็บไซต์โฮสต์ที่สังเกตเห็นความแตกต่างของเวลาประทับเล็กน้อยแทนที่จะใช้แฮช MD5 ที่ทำหน้าที่เป็นตราประทับของแท้ ... จากนั้นการป้องกันของเช็คซัมได้หายไปค่อนข้างมาก
Austin '' Danger '' พลัง

4
@BigChris ฉันไม่แน่ใจว่าคุณหมายถึงอะไร แต่มันฟังดูผิด อัลกอริทึมแฮชการเข้ารหัสเช่น MD5 นั้นสมบูรณ์เกี่ยวกับข้อมูลข้อความ ข้อความสุ่มสองข้อความที่มีความยาวเท่ากันจะมีแฮชต่างกันอย่างแน่นอน
Matt Nordhoff

3
@MattNordhoff อย่างแน่นอน หากมีการตรวจสอบ MD5 จะไม่สร้างบนพื้นฐานของข้อมูลไฟล์แล้วสิ่งที่เป็นมันขึ้นอยู่กับ?
Austin '' Danger '' พลัง

2
ข้อมูลแฮช MD5 จะถูกสร้างบนข้อมูลใช่ แต่จะไม่ใช้ความพยายามมากเกินไปในการสร้างไฟล์ที่เป็นอันตรายด้วยแฮชเดียวกัน ตามที่กล่าวไว้จะไม่มีวิธีการตรวจสอบว่าไฟล์นั้นเป็นอันตรายหรือไม่ อ่าน: mscs.dal.ca/~selinger/md5collision
Kinnectus

2
บางครั้งแฮชจะถูกเผยแพร่บนเซิร์ฟเวอร์ของบุคคลที่หนึ่งในขณะที่การดาวน์โหลดจริงถูกโฮสต์บนมิเรอร์ของบุคคลที่สามและ / หรือ CDN
el.pescado

คำตอบ:


89

ฉันได้ยินมาว่านี่คือการอนุญาตให้ [... ] สำหรับการตรวจพบการเปลี่ยนแปลงที่เป็นอันตรายใด ๆ

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


31
+1 ส่วนใหญ่จะใช้เพื่อป้องกันความเสียหายจากอุบัติเหตุ (ข้อผิดพลาดในการถ่ายโอนเครือข่าย, เซกเตอร์เสียบนดิสก์และอื่น ๆ ) เพื่อป้องกันการทุจริตที่เป็นอันตรายการตรวจสอบจะต้องมาในตำแหน่งที่ไม่ได้เชื่อมต่อที่เชื่อถือได้ เช่นเดียวกับ PGP / GPG / ข้อความที่เซ็นชื่อคล้ายกัน: พวกเขาจะรับประกันเนื้อหาอย่างสมบูรณ์หากคุณเชื่อถือที่คุณได้รับกุญแจสาธารณะ
David Spillett

1
คุณอาจต้องการเพิ่มคำตอบของคุณที่ลายเซ็นที่แตกต่างกันระบุถึงข้อ จำกัด นี้ (สมมติว่าคุณเชื่อถือหน่วยงานที่ได้รับการรับรอง / รับรอง)
atk

2
มันยิ่งแย่ไปกว่านี้ - ถ้ามีใครสามารถแก้ไขปัญหาทราฟฟิกของคุณไปยัง / จากเซิร์ฟเวอร์ได้แม้ว่าเซิร์ฟเวอร์นั้นจะไม่ได้รับอันตรายก็ตามพวกเขาสามารถแก้ไขทั้งไฟล์และเช็คซัมที่คุณได้รับ
cpast

3
เพื่อขยาย: ถ้ามันไม่รับประกันว่าคุณมีไฟล์เดียวกับเซิร์ฟเวอร์ได้มันจะเป็นมาตรการรักษาความปลอดภัยถูกต้องตามกฎหมายเพราะมันจะหมายความว่าคุณไม่ได้ให้ความไว้วางใจเครือข่าย นั่นคือสิ่งที่ MACs ใน TLS ทำ - พิสูจน์ได้ว่าสิ่งที่คุณได้รับคือสิ่งที่เซิร์ฟเวอร์ส่ง แต่ TLS ไม่สามารถทำอะไรกับเซิร์ฟเวอร์ที่ถูกบุกรุกได้ หากแฮชที่ดีถูกส่งผ่านการเชื่อมต่อที่เชื่อถือได้ก็สามารถให้การรักษาความปลอดภัย (ซึ่งได้มาจากการเชื่อมต่อที่เชื่อถือได้); ถ้ามันส่งผ่านการเชื่อมต่อเช่นเดียวกับไฟล์แล้วก็ไม่มีประโยชน์เพราะมันไม่มากทนแรงกว่าไฟล์ที่ตัวเองเป็น
cpast

2
นี่เป็นสิ่งที่ผิด บางครั้งมีการจัดเตรียมเช็คซัมอย่างปลอดภัย แต่การดาวน์โหลดไม่ได้ เนื่องจาก MD5 เสียการตรวจสอบความปลอดภัย MD5 ที่ให้มานั้นอ่อนแอกว่าการตรวจสอบที่ปลอดภัยมากกว่า แต่ก่อนที่ MD5 จะเสีย MD5 ที่จัดเตรียมไว้อย่างปลอดภัย (เช่นที่ลงชื่อหรือส่ง HTTP) ที่ตรงกับ MD5 ของการดาวน์โหลดนั้นเป็นหลักฐานที่ชัดเจนว่า ได้รับการดาวน์โหลดคือเซิร์ฟเวอร์ที่ให้บริการ ฉันจะเพิ่มคำตอบด้วยรายละเอียดเพิ่มเติมด้านล่างในขณะนี้
Matthew Elvey

15

โซลูชันที่ใช้โดยระบบการจัดการแพคเกจบางระบบเช่น dpkg คือการเซ็นชื่อแฮช : ใช้แฮชเป็นอินพุตไปยังหนึ่งในอัลกอริทึมการเซ็นกุญแจสาธารณะ ดูhttp://www.pgpi.org/doc/pgpintro/#p12

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


9

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

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


8

บางครั้งมีการจัดเตรียมเช็คซัมอย่างปลอดภัย แต่การดาวน์โหลดไม่ได้ เนื่องจากMD5 เสียการตรวจสอบความปลอดภัย MD5 ที่ให้มานั้นอ่อนแอกว่าการตรวจสอบที่ปลอดภัยมากกว่า แต่ก่อนที่ MD5 จะเสีย MD5 ที่จัดเตรียมไว้อย่างปลอดภัย (เช่นที่ลงนามกับ PGP หรือ GPG หรือผู้รักษาประตูหรือดึงข้อมูลผ่าน HTTPS) ที่ตรงกับ MD5 ของ การดาวน์โหลดเป็นหลักฐานที่ชัดเจนว่าการดาวน์โหลดที่ได้รับนั้นเป็นสิ่งที่เซิร์ฟเวอร์ทำ

ฉันได้รับการเขียนเกี่ยวกับการขาดน่าเศร้าของ checksums ปลอดภัยสำหรับปีที่ผ่านมาที่นี่

ผู้ใช้ไม่ควรดาวน์โหลดไฟล์ปฏิบัติการที่ไม่น่าเชื่อถือผ่านเครือข่ายที่ไม่น่าเชื่อถือและรันได้เนื่องจากความเสี่ยงของการโจมตีของ MITM ดูเช่น "ความไม่ปลอดภัยภายในระบบอัพเดทอัตโนมัติ" โดย P. Ruissen, R. Vloothuis

ภาคผนวก 2014: ไม่มันไม่ผิด "ที่ checksums ที่โพสต์บนหน้าเว็บถูกใช้เพื่อตรวจจับการดัดแปลงที่เป็นอันตราย" เพราะนี่คือบทบาทที่พวกเขาสามารถทำได้ พวกเขาช่วยป้องกันการทุจริตโดยไม่ตั้งใจและหากได้รับผ่าน HTTPS หรือด้วยลายเซ็นที่ผ่านการตรวจสอบแล้ว (หรือดีกว่าทั้งคู่) ช่วยป้องกันการทุจริตที่เป็นอันตราย! ฉันได้รับ checksums ผ่าน HTTPS และตรวจสอบว่าพวกเขาจับคู่การดาวน์โหลด HTTP หลายครั้ง

ปัจจุบันไบนารีมักจะกระจายกับการลงนามยืนยันโดยอัตโนมัติ hashes แต่แม้นี้เป็นไม่ได้ที่เชื่อถือได้อย่างสมบูรณ์แบบ

ตัดตอนมาจากลิงค์ด้านบน: "แอปพลิเคชัน KeRanger ได้รับการรับรองด้วยใบรับรองการพัฒนาแอป Mac ที่ถูกต้องดังนั้นจึงสามารถเลี่ยงการป้องกัน Gatekeeper ของ Apple ได้" ... "Apple ได้เพิกถอนใบรับรองที่ถูกละเมิดและลายเซ็นโปรแกรมป้องกันไวรัส XProtect ที่ได้รับการปรับปรุงและ Transmission Project ได้ลบตัวติดตั้งที่เป็นอันตรายออกจากเว็บไซต์ของตน Palo Alto Networks ได้อัปเดตตัวกรอง URL และการป้องกันภัยคุกคามเพื่อหยุด KeRanger

ผู้ติดตั้งระบบส่งกำลังที่ติดเชื้อของ KeRanger สองคนลงนามด้วยใบรับรองที่ถูกต้องตามกฎหมายที่ออกโดย Apple นักพัฒนาที่ระบุว่าใบรับรองนี้เป็น บริษัท ตุรกีที่มี ID Z7276PX673 ซึ่งแตกต่างจาก ID นักพัฒนาซอฟต์แวร์ที่ใช้ในการเซ็นชื่อเวอร์ชันก่อนหน้าของตัวติดตั้งการส่งข้อมูล ในข้อมูลการลงรหัสเราพบว่าตัวติดตั้งเหล่านี้ถูกสร้างขึ้นและลงนามในเช้าวันที่ 4 มีนาคม "

2016 เพิ่มเติม:

@Cornstalks: Re ความคิดเห็นของคุณด้านล่าง: ผิด ดังที่ระบุไว้ในบทความวิกิพีเดียที่คุณเชื่อมโยงกับการโจมตีในปัจจุบัน "ในปี 2550 พบการโจมตีชนกันแบบเลือกคำนำหน้ากับ MD5" และ "ผู้โจมตีสามารถเลือกเอกสารสองฉบับที่แตกต่างกันโดยพลการ เอกสารที่มีค่าแฮชเท่ากัน " ดังนั้นแม้ว่า MD5 จะได้รับการจัดเตรียมอย่างปลอดภัยและผู้โจมตีไม่สามารถแก้ไขได้ แต่ผู้โจมตียังสามารถใช้การโจมตีแบบชนกันที่เลือกไว้ล่วงหน้าด้วยการเลือกคำนำหน้าที่มีมัลแวร์ซึ่งหมายความว่า MD5 ไม่ปลอดภัยสำหรับวัตถุประสงค์ของการเข้ารหัสลับ นี่เป็นเหตุผลส่วนใหญ่ที่ US-CERT พูดว่า MD5 "ควรได้รับการพิจารณาว่ามีการเข้ารหัสลับและไม่เหมาะสมสำหรับการใช้งานต่อไป"

อีกสองสิ่ง: CRC32 เป็นเช็คซัม MD5, SHA และอื่น ๆ เป็นมากกว่า checksums พวกเขาตั้งใจที่จะแฮ็ชที่ปลอดภัย นั่นหมายความว่าพวกเขาควรจะต้านทานการโจมตีจากการชน แฮชที่มีการสื่อสารอย่างปลอดภัยจะป้องกันการโจมตีแบบ Man-in-the-middle (MITM) ซึ่งแตกต่างจาก checksum ที่ MITM อยู่ระหว่างเซิร์ฟเวอร์และผู้ใช้ มันไม่ได้ป้องกันการโจมตีที่เซิร์ฟเวอร์เองถูกโจมตี เพื่อป้องกันสิ่งนั้นผู้คนมักพึ่งพาบางสิ่งเช่น PGP, GPG, Gatekeeper เป็นต้น


ฉันชอบคำตอบนี้เพราะมันเน้นส่วนพื้นฐานของการตรวจสอบ - มันเป็นเพียงหนึ่งเมตริกของหลาย ๆ การตรวจสอบความถูกต้องของเนื้อหาของไฟล์ หากเครือข่ายไม่น่าเชื่อถือตัวเองก็ไม่สามารถจินตนาการได้ว่าจะมีใครแทนที่ MD5-hashes และ patching ไบนารีได้ทันที (อย่างที่เราเคยเห็นในโหนดทางออก Tor) ... แน่นอน MD5 ไม่ได้ป้องกันอะไรเลยไฟล์ที่ถูกแก้ไขโดยเจตนาเพราะคุณให้ความไว้วางใจกับผู้ให้บริการของไฟล์ที่กล่าวมาแล้วว่าจะเริ่มต้นด้วย
Breakthrough

2
MD5 นั้นไม่ได้หักทั้งหมด : การโจมตีในครั้งนั้นเป็นการโจมตีแบบชนกันไม่ใช่สิ่งที่แนบมาด้วย (ซึ่งจะแย่กว่านั้นมาก) หากมีการให้ MD5 อย่างปลอดภัยและผู้โจมตีไม่สามารถแก้ไขได้ผู้โจมตีจะไม่สามารถใช้การโจมตีแบบชนกันได้ (และต้องใช้การโจมตีแบบ preimage) ซึ่งหมายความว่า MD5 ยังคงปลอดภัยต่อวัตถุประสงค์ดังกล่าว MD5 เป็นมูลค่าถูกแบ่งออกเพราะช่องโหว่ของการปะทะกันของมัน แต่มันไม่ได้ (ที่รู้จักกัน) ช่องโหว่ preimage จึงไม่ทั้งหมดเสีย หักครึ่งเดียว
Cornstalks

+1! แต่ ... แฮชที่ลงชื่อแล้วมีความปลอดภัย ( เชื่อถือได้ ) เหมือนกับแฮชที่ไม่ได้ลงนามซึ่งเรียกผ่าน https (ssl / tls) หรือไม่ ฉันคิดว่ามันคงดีกว่าว่ากัญชาที่ตัวเองมีการลงนามต่อไป ...
matpop

4

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

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


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

... จะเป็นรูปแบบของ URL / URI ที่มีค่าแฮชที่คาดไว้ (อาจเป็น SHA มากกว่า MD5) และจะระบุว่าเบราว์เซอร์ควรยอมรับไฟล์เท่านั้นหากแฮชตรงกับสิ่งที่ระบุ ในกรณีที่หลาย ๆ คนต้องการเข้าถึงไฟล์ขนาดใหญ่การให้ URL ทั้งหมดแก่บุคคลเหล่านี้ผ่านทาง https: // แต่การที่พวกเขาดาวน์โหลดไฟล์จากพร็อกซีอาจมีประสิทธิภาพมากกว่าการใช้พวกเขาทั้งหมด https: // โดยตรงจากแหล่งที่มา
supercat

@supercat นั่นคือสิ่งที่ฉันหมายถึงโดย "ป้องกันไม่ให้คนมายุ่งกับการตรวจสอบ" - สิ่งที่จะต้องโอนอย่างปลอดภัยและถ้านั่นคือการตรวจสอบจากนั้นการตรวจสอบสามารถช่วยป้องกันการปลอมแปลงไฟล์โดยเจตนาร้าย
cpast

การตรวจสอบ MD5 ที่ส่งผ่านเส้นทางอื่นนอกเหนือจากไฟล์นั้นจะให้การป้องกันการปลอมแปลงเว้นแต่ไฟล์จะถูกสร้างขึ้นโดยเจตนาเพื่ออำนวยความสะดวกในการแก้ไขปัญหาดังกล่าว ในทางกลับกันบางอย่างเช่น CRC32 จะไม่ให้การป้องกันการดัดแปลงแม้ว่าไฟล์ต้นฉบับจะเชื่อถือได้และ CRC32 ก็ส่งมอบอย่างปลอดภัย
supercat

4

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

ทางออกที่เป็นไปได้คือการใช้ไฟล์ที่เซ็นชื่อ

(BTW: MD5 ไม่ปลอดภัยทุกที่และไม่ควรใช้อีกต่อไป)


2

การตรวจสอบ MD5 สามารถให้การป้องกันไฟล์ที่ถูกเปลี่ยนแปลงโดยเจตนาได้อย่างไรหากไม่มีวิธีการตรวจสอบว่าการตรวจสอบตัวเองนั้นถูกบุกรุก

คุณถูกต้องทั้งหมด เป้าหมายคือการทำให้คุณ "ผิด" ถ้าเรารู้ว่าแฮชเข้ารหัสที่ปลอดภัยของไฟล์นั้นไม่ได้ถูกบุกรุกเราก็รู้ว่าไฟล์นั้นไม่ได้ถูกบุกรุก

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

หากเว็บไซต์ของคุณใช้ HTTPS หรือคุณลงชื่อแฮชgpgไฟล์ของคุณก็สามารถป้องกันได้ (ส่วนใหญ่) จากผู้โจมตีเครือข่ายเช่นฮอตสปอต Wi-Fi ที่เป็นอันตรายโหนดโหนด Tor ปลอมหรือ NSA


1
เกี่ยวกับ gpg: โปรดจำไว้ว่านี่เป็นปัญหาที่คล้ายกันหากคุณไม่ไว้ใจรหัสสาธารณะทั้งหมดจะไม่ถูกแทนที่ด้วยรหัสที่ถูกบุกรุกและเนื้อหาที่เซ็นชื่อด้วยรหัสส่วนตัวที่เกี่ยวข้อง
David Spillett

1

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

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

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


1

แฮชบ่งบอกว่ารุ่นของไฟล์ ("ดาวน์โหลด") นั้นแตกต่างจากเวอร์ชันของเซิร์ฟเวอร์หรือไม่ พวกเขาไม่รับประกันความถูกต้องของไฟล์

ลายเซ็นดิจิตอล (ฟังก์ชั่นการเข้ารหัสแบบอสมมาตร + แฮช) สามารถใช้เพื่อตรวจสอบว่าไฟล์นั้นไม่ได้รับการแก้ไขโดยใครก็ตามที่ไม่มีคีย์ส่วนตัวที่เกี่ยวข้อง

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

สิ่งที่จะหยุดนาย "A.Hacker" จากเพียงแค่การแก้ไขไฟล์แล้วเซ็นชื่อด้วยรหัสส่วนตัวของพวกเขา?

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

ลายเซ็นดิจิตอลจึงอนุญาตให้ตรวจจับการเปลี่ยนแปลงทั้งที่เกิดจากอุบัติเหตุและที่เป็นอันตราย

แต่เราจะรับกุญแจสาธารณะของ IMAwesome ได้ตั้งแต่แรก? เราจะมั่นใจได้อย่างไรว่าเมื่อเราได้รับกุญแจกุญแจของเขา / เธอไม่ใช่กุญแจของ A.Hacker ที่ถูกเสิร์ฟโดยเซิร์ฟเวอร์ที่ถูกบุกรุกหรือการโจมตีจากคนกลาง? นี่คือที่ที่กลุ่มใบรับรองและใบรับรองรูทที่เชื่อถือได้เข้ามาไม่ได้มีความปลอดภัยอย่างสมบูรณ์แบบ [1] วิธีแก้ปัญหาและทั้งสองอย่างนี้น่าจะอธิบายได้ดีใน Wikipedia และคำถามอื่น ๆ เกี่ยวกับ SO

[1] เมื่อทำการตรวจสอบใบรับรองหลักที่มาพร้อมกับ Microsoft OS บนพีซีที่ทำงานของฉันรวมถึงใบรับรองจากรัฐบาลสหรัฐอเมริกา ทุกคนที่มีการเข้าถึงที่สอดคล้องคีย์ส่วนตัวไอเอ็นเอสเอไอจึงสามารถให้บริการเนื้อหาในเว็บเบราว์เซอร์ของฉันที่ผ่านการ "มีกุญแจที่อยู่ในบาร์" ตรวจสอบ มีกี่คนที่จะรำคาญที่จะคลิกที่กุญแจและดูว่าใครใช้กุญแจคู่เพื่อ "ปลอดภัย" การเชื่อมต่อ?


ใช้เวลาเพียงหนึ่งคนที่ตรวจสอบห่วงโซ่ใบรับรองเพื่อก่อให้เกิดเรื่องอื้อฉาว หากคุณคิดว่า NSA จะใช้รหัส CA ของรัฐบาลสำหรับ MITM แทนที่จะใช้กุญแจที่ขโมยมาจากหน่วยงานเอกชนที่มีใบรับรองที่เป็นของเอกชนหรือดียิ่งกว่า - (ให้การปฏิเสธที่เป็นไปได้) ฉันมีสะพานที่จะขายคุณ
Charles Duffy

ฉันแนะนำความเป็นไปได้ที่จะสามารถใช้เพื่อกำหนดเป้าหมาย MITM ที่ผู้ใช้เฉพาะ เป็นไปได้หรือไม่ว่าเป็นไปได้หรือไม่ที่คนดีบุกฟอยล์จะอภิปรายกัน
Mark K Cowan

ฉันไม่ได้ถามว่า MITM เป้าหมายน่าจะเป็นหรือไม่ ฉันกำลังถามว่าการประมาทพอที่จะใช้คีย์ CA ที่ตรวจสอบได้และประกอบขึ้นมาเพื่อแสดงว่าเป็นไปได้หรือไม่ โดยเฉพาะอย่างยิ่งสำหรับเป้าหมายที่มีมูลค่าสูงพอการรับส่งข้อมูลสุทธิของขาออกจะต้องถูกบันทึกรายละเอียดเพียงพอที่จะรวมข้อมูลเมตาถึงและรวมถึงส่วนสาธารณะของการจับมือ SSL ดังนั้นแม้ว่าผู้ใช้จะไม่มองเจ้าหน้าที่รักษาความปลอดภัยหรือ โครงสร้างพื้นฐานอัตโนมัติอาจทำเช่นนั้นในการวิเคราะห์ย้อนหลัง
Charles Duffy

1

การตรวจสอบ MD5 สามารถให้การป้องกัน ไฟล์ที่มีการเปลี่ยนแปลงโดยเจตนาได้อย่างไรหากไม่มีวิธีการตรวจสอบว่าการตรวจสอบนั้นไม่ได้ถูกบุกรุก

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

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

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

เมื่อเร็ว ๆ นี้ฉันค้นพบซอฟต์แวร์คลังเอกสารชิ้นหนึ่งที่เรียกว่าACE Audit managerซึ่งโดยทั่วไปแล้วเป็นแอปพลิเคชัน Java ที่ออกแบบมาเพื่อนั่งดูระบบไฟล์สำหรับการเปลี่ยนแปลง มันบันทึกการเปลี่ยนแปลงผ่านการเปลี่ยนแปลง MD5 และจะดำเนินการในปรัชญาที่คล้ายกันเฉพาะกิจของฉันกระบวนการจัดเก็บ checksums ในฐานข้อมูล แต่มันต้องใช้ขั้นตอนต่อไป แต่การสร้างการตรวจสอบ MD5 ของ checksums MD5 ซึ่งเป็นที่รู้จักกันเป็นต้นไม้กัญชาหรือต้นไม้แฮช

สมมติว่าคุณมี 5 ไฟล์ในคอลเลกชัน ไฟล์ 5 ไฟล์ใน ACE Audit manager จะได้รับอีกไฟล์ - เรียกมันว่า "parent" - ตรวจสอบว่าเป็นแฮชที่สร้างจากการตรวจสอบ MD5 5 รายการของแต่ละไฟล์ ดังนั้นหากมีคนยุ่งเกี่ยวกับไฟล์เพียงไฟล์เดียวแฮชสำหรับไฟล์จะเปลี่ยนไปดังนั้นแฮชสำหรับคอลเลกชัน“ หลัก” ทั้งหมด

โดยทั่วไปวิธีที่คุณต้องตรวจดู MD5 checksums และ hash integrity ที่เกี่ยวข้องคือหากไม่ได้เชื่อมต่อกับที่เก็บข้อมูลที่ไม่ได้โดยตรงสำหรับ MD5 hashes ด้วยตนเองพวกเขาอาจเสียหายได้ และคุณค่าของพวกเขาในฐานะเครื่องมือความสมบูรณ์ของข้อมูลในระยะยาวเทียบเท่ากับล็อคราคาถูกที่มาพร้อมกับ "ฟรี" ในกระเป๋าใบใหม่ หากคุณจริงจังเกี่ยวกับการล็อคกระเป๋าคุณจะได้รับการล็อคที่ไม่สามารถเปิดได้ภายใน 5 วินาทีด้วยคลิปหนีบกระดาษ


"การตรวจสอบ MD5 ของ checksums MD5" เป็นที่รู้จักกันเป็นต้นไม้แฮช
pjc50

@ pjc50 ขอบคุณ! แก้ไขคำตอบเพื่ออ้างอิงว่า
JakeGould

0

ความเร็ว

บ่อยครั้งที่ผู้คนพบว่ามันเร็วกว่ามากในการ (a) ดาวน์โหลดไฟล์ขนาดใหญ่จากเครือข่ายการส่งเนื้อหา (CDN) ที่ไม่น่าไว้วางใจบางแห่ง, ไซต์กระจก, เว็บไซต์ที่มีฝนตกหนัก, เพื่อนร่วมงานฝนตกหนัก ฯลฯ และดาวน์โหลดไฟล์เช็คซัมสั้น ๆ ที่เกี่ยวข้อง มักใช้ MD5) จากแหล่งที่เชื่อถือได้ไม่กี่แห่ง พวกเขาพบว่ามันช้าเหลือทนในการ (b) ดาวน์โหลดไฟล์ขนาดใหญ่ทั้งหมดโดยตรงจากแหล่งที่เชื่อถือได้

การตรวจสอบ

บ่อยครั้งที่บุคคลนั้นพบว่าทุกอย่างตรวจสอบความถูกต้อง - แหล่งที่มา (เชื่อถือได้และไม่น่าเชื่อถือ) เห็นด้วยกับ checksum เดียวกันและเรียกใช้ shasum (หรือ md5sum) กับไฟล์ checksum สั้น ๆ เหล่านั้น (ไม่สำคัญว่าเมื่อใดเหมือนกันทั้งหมด ) ระบุว่าไฟล์ขนาดใหญ่มีการตรวจสอบการจับคู่

การแก้ไข

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

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

ตามที่ cpast ได้เคยกล่าวไว้ก่อนหน้านี้หากการตรวจสอบการเข้ารหัสลับที่ดีถูกส่งผ่านการเชื่อมต่อที่เชื่อถือได้ก็สามารถให้การรักษาความปลอดภัย (ซึ่งได้มาจากการเชื่อมต่อที่เชื่อถือได้)

ดังที่ Supercat ได้กล่าวไว้ก่อนหน้านี้ไฟล์ checksum หนึ่งเว็บไซต์ไม่ได้ช่วยคนที่ดาวน์โหลดไฟล์ขนาดใหญ่จากเว็บไซต์เดียวกันและในลักษณะเดียวกับที่พวกเขาดาวน์โหลดไฟล์ checksum พวกเขาช่วยคนที่ต้องการดาวน์โหลดไฟล์จากเว็บไซต์อื่น

"ในแง่ของความปลอดภัยแฮชการเข้ารหัสลับเช่น MD5 อนุญาตให้ตรวจสอบข้อมูลที่ได้จากมิรเรอร์ที่ไม่ปลอดภัยแฮช MD5 ต้องลงนามหรือมาจากแหล่งที่ปลอดภัย (หน้า HTTPS) ขององค์กรที่คุณเชื่อถือ" - https://help.ubuntu.com/community/HowToMD5SUM

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


0

ฉันเคยได้ยิน [MD5 checksum] นี้เพื่ออนุญาตให้ [... ] สำหรับการเปลี่ยนแปลงที่เป็นอันตรายใด ๆ ที่จะตรวจพบได้ง่าย

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

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

นี่คือตัวอย่างของโลกแห่งความเป็นจริงที่อาจทำให้ทุกสิ่งชัดเจนขึ้น ข้อความต่อไปนี้มีความสำคัญอย่างยิ่งในเรื่อง:

สำหรับซีดีรุ่นเก่าที่เก็บถาวรจะมีการสร้างการตรวจสอบ MD5 เท่านั้น [... ] สำหรับการออกรุ่นใหม่จะใช้อัลกอริธึมการตรวจสอบที่ใหม่กว่าและแข็งแกร่งกว่าในการเข้ารหัส (SHA1, SHA256 และ SHA512)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.