ทำไมการเปรียบเทียบ checksums เมื่อดาวน์โหลดไฟล์เป็นเรื่องที่ดี


16

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

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


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

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

Checksums อาจมีประโยชน์ แต่ใน 20 ปีที่ทำงานกับคอมพิวเตอร์ฉันจำไม่ได้ว่าใช้ครั้งเดียว
Pedro Lobito

2
MD5 เป็นแฮชไม่ใช่เช็คซัม การตรวจสอบจะใช้ในการตรวจสอบข้อผิดพลาดโดยเฉพาะข้อผิดพลาดบิตในระหว่างการส่ง แฮชการเข้ารหัสมีไว้เพื่อให้แน่ใจว่าข้อมูลเหมือนกันทุกประการ ในแง่นั้นแฮชจะเป็นซูเปอร์เซ็ตของเช็คซัม แต่มันไม่เหมือนกัน นอกเหนือจากMD5 นั้นได้ถูกทำลายเป็นเวลา 10 ปีแล้ว (ดูบทความ Wikipedia, หัวข้อความปลอดภัย )
0xC0000022L

คำตอบ:


20

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

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

นี่คือวิธีคำนวณการตรวจสอบ TCP :

เช็คซัม: 16 บิต

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

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


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

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


คำตอบที่ดีที่สุด! ฉันเกลียดที่คำตอบอื่น ๆ ผสมผสานแนวคิดของการเข้ารหัสลับแฮชและเช็คซัม
0xC0000022L

20

อาจเป็นเหตุผลที่หนึ่งพันล้านทำไมเราควรตรวจสอบ md5sum แต่มีบางคนที่มาถึงใจฉัน:

  • กิจกรรมที่เป็นอันตราย - ISO ของคุณอาจถูกรบกวนจากเซิร์ฟเวอร์
  • หน้านั้นปลอมแปลง (ดีที่สุดที่จะลงนาม md5sums ด้วย :))
  • ดาวน์โหลดเสีย (แม้จะมีการแก้ไขข้อผิดพลาด TCP) (ลองดูนี่สิ )
  • ISO ถูกเผาอย่างไม่ถูกต้อง

และใช้เวลาเพียงไม่กี่วินาทีเท่านั้น


21
นอกจากนี้ยังหมายความว่ามีความปลอดภัยพอสมควรในการดาวน์โหลด ISO จากไซต์มิเรอร์แบบสุ่มหากคุณได้รับเช็คซัมจากที่ที่เชื่อถือได้ เช่นโพสต์ที่ลงนาม PGP ไปยังรายชื่อผู้รับจดหมาย foo-Announce
richardb

2
จริงๆแล้วมันไม่มีอะไรเกี่ยวข้องกับการป้องกันกิจกรรมที่เป็นอันตราย ถ้า ISO สามารถถูกแทนที่ด้วยอันที่เป็นอันตราย MD5 สามารถตรวจสอบค่าได้ การให้พวกเขาเซ็นชื่อเป็นเรื่องที่แตกต่างกัน แต่ไม่ใช่สิ่งที่ OP ถาม ดังนั้นแทนที่จะเป็น "กิจกรรมที่เป็นอันตราย" เป็นอันดับแรกในรายการของคุณ (มันแน่ใจว่าฟังดูดี) จริงๆแล้วมันไม่ควรจะอยู่ในรายการของคุณ คุณกำลังให้ความรู้สึกที่ผิด ๆ กับผู้คนซึ่งเป็นอันตราย superuser.com/questions/849845/…
'Austin' 'Danger' '18

1
@ Austin''Danger''Powers Umm, ไม่ถูกต้อง Konrad สำหรับหนึ่งกระจกดาวน์โหลดมักจะแตกต่างจากไซต์ที่แสดงเช็คซัมและอันดับที่สองมีผู้ให้บริการอินเทอร์เน็ตจำนวนมากในโลกที่จัดการปริมาณการใช้งาน - เช็คซัม TCP จะใช้ได้ แต่คุณกำลังดาวน์โหลดไฟล์อื่น และแน่นอนว่าเขาพลาดจุดอื่นเช่นกัน - ไฟล์อาจเสียหายบนเซิร์ฟเวอร์หลังจากสร้างเช็คซัมแล้ว มันเกิดขึ้นตลอดเวลาโดยเฉพาะอย่างยิ่งสำหรับเซิร์ฟเวอร์ "มือสมัครเล่น" มากขึ้น (ไม่มีการตั้งค่า RAID ที่เหมาะสม ฯลฯ )
Luaan

2
คำตอบจาก 2015 ควรให้คำแนะนำกับ MD5 hashes อัลกอริธึมนั้นพังในช่วงสิบปีที่ผ่านมา (ไม่มีการพูดเกินจริง!) นอกจากนี้คุณกำลังผสมเช็คซัมและแฮช พวกเขาเป็นสองสิ่งที่แตกต่างกันโดยมีเจตนาที่แตกต่างกัน
0xC0000022L

1
หากต้องการเพิ่มเพื่อเพิ่มความคิดเห็นโดย @ 0xC0000022L SHA1 นั้นควรหลีกเลี่ยงหากการรักษาความปลอดภัยเป็นเรื่องที่สำคัญเช่นกันแม้ว่าจะมีทั้ง MD5 และ MD5 ก็เพียงพอที่จะป้องกันการทุจริตจากอุบัติเหตุโดยสมบูรณ์
David Spillett

6

TCP / IP รับประกันความถูกต้องของข้อมูล * แต่ไม่รับประกันว่าจะดาวน์โหลดไฟล์ได้ 100% มีหลายสาเหตุที่อาจเกิดขึ้น ตัวอย่างเช่น: เป็นไปได้ที่คุณสามารถเมานท์ ISO ที่ขาดหนึ่งหรือสองไบต์ที่กลาง คุณจะไม่มีปัญหากับมันจนกว่าคุณจะต้องการไฟล์หนึ่งหรือสองไฟล์ที่เสียหาย การเปรียบเทียบ checksums ทำให้แน่ใจได้ว่าคุณได้ดาวน์โหลดทั้งไฟล์จริงๆ

* ดูความคิดเห็น


8
ผมคิดว่า "ไม่รับประกันความสมบูรณ์ของข้อมูล" คือจริงๆมากกว่าการขายสิ่งที่ไม่จริง มันจะทำให้ความพยายามที่จะตรวจสอบความสมบูรณ์ของข้อมูลที่มีมากวิธีการผลิตแบบลีนซึ่งไม่แข็งแรงโดยเฉพาะอย่างยิ่ง
Håkan Lindqvist

6

การตรวจสอบ TCP เป็นเพียง 16 บิต ซึ่งหมายความว่าในกรณีที่ไม่มีเช็คซัมอื่น ๆ หนึ่งในทุก ๆ 65536 แพ็กเก็ตที่เสียหายจะได้รับการยอมรับว่าไม่เสียหาย ตัวอย่างเช่นหากคุณกำลังดาวน์โหลดอิมเมจ 8GB จากลิงค์ที่มีเสียงรบกวนซึ่งมีอัตราความเสียหาย 1% คุณจะคาดหวังว่าจะได้แพ็คเก็ตที่ 81 ที่ไม่สามารถตรวจจับได้

MD5 เป็น checksum ที่ใหญ่กว่ามากที่ 128 bits อัตราต่อรองของแพ็คเก็ต 81 เหล่านั้นผลิตสิ่งที่มีเช็คซัมเดียวกันกับต้นฉบับประมาณ 1 ใน 1,000,000,000,000,000,000,000,000,000,000,000,000,000


6

มีเหตุผลหลายประการในการตรวจสอบการตรวจสอบไฟล์ที่ดาวน์โหลดผ่าน HTTP:

  • มั่นใจได้ว่าคุณได้รับไฟล์ทั้งหมด
    • ลูกค้าบางรายเช่นFirefoxอาจถือว่าการเชื่อมต่อถูกขัดจังหวะเป็นการดาวน์โหลดสำเร็จทำให้คุณมีไฟล์ที่ถูกตัดทอน แต่อ้างว่าดาวน์โหลดเรียบร้อย
  • มั่นใจว่าคุณได้รับไฟล์ที่ถูกต้อง
    • เช่นเซิร์ฟเวอร์ buggy ที่ถูกบุกรุกหรือเป็นอันตรายอาจส่งสิ่งอื่นมาให้คุณ
    • บางคนอาจยุ่งเกี่ยวกับการถ่ายโอน (การโจมตีจากคนกลาง) - แม้ HTTPS จะไม่ปลอดภัยจากสิ่งนี้หากระบบของคุณถูกบุกรุกโดยเช่น Superfish หรือวิธีการเข้ารหัสที่อ่อนแอ
    • พวกเขาอาจเพียงแค่นำเสนอคุณด้วยหน้าดาวน์โหลดที่ผิดดังนั้นคุณจึงไม่ได้เชื่อมต่อกับเซิร์ฟเวอร์จริง (แต่ในกรณีนี้การตรวจสอบจะไม่ช่วยอะไรมากหากคุณได้มาจากเซิร์ฟเวอร์ปลอมตัวเดียวกัน)
    • มีผู้ให้บริการอินเทอร์เน็ตจำนวนหนึ่งที่ถูกฉีดจาวาสคริปต์เข้าสู่หน้าเว็บในการส่งด้วยเหตุผลต่างๆ1 ; ขึ้นอยู่กับว่ามีการนำไปใช้งานด้วยวิธีใดมันอาจทำให้การดาวน์โหลดไฟล์บางอย่างแย่ลง
    • มิเรอร์อาจโฮสต์ไฟล์รุ่นที่ล้าสมัยหรือผู้ดูแลระบบอาจอัปโหลดไฟล์ผิด
  • การทำให้มั่นใจว่าไฟล์ไม่เสียหายจากสิ่งที่ TCP ตรวจไม่พบ
    • เช่นไฟล์อาจเสียหายบนเซิร์ฟเวอร์ดังนั้น TCP จะตรวจสอบให้แน่ใจว่าไฟล์ที่เสียหายไปแล้วนั้นไม่ได้รับการจัดการในการส่งต่อ
    • หรืออาจเกิดความเสียหายหลังจากที่คุณมาถึงจุดสิ้นสุดโดยหน่วยความจำ / ดิสก์ผิดพลาดไดรเวอร์ระบบไฟล์ buggy ฯลฯ
    • TCP checksums นั้นมีเพียง 16 บิตดังนั้นโอกาสที่จะไม่ดาราศาสตร์ (1 ใน 65536) จะไม่ตรวจจับแพ็คเก็ตที่เสียหาย
  • ด้วย ISO ทำให้มั่นใจได้ว่าแผ่นดิสก์ไหม้ได้อย่างถูกต้อง

แหล่งที่มาในความคิดเห็น1 รายการเนื่องจาก lol rep


2
แหล่งที่มา: * security.stackexchange.com/questions/70970/… * adblockplus.org/forum/viewtopic.php?t=8156 "Aggressive ISP แบบฉีด / สคริปต์แบบฝัง / การบล็อก / โฆษณาที่ปิดกั้น" * iamsrijit.wordpress.com/2012/09/ 14 / … * สามารถพบได้ง่ายขึ้นใน Google แต่ไม่ได้อยู่ในหัวข้อนี้จริงๆ
Rena

2

Daniel ขึ้นอยู่กับเครื่องมือที่คุณใช้สำหรับดาวน์โหลด ISO ต่อคำพูด ถ้ามันคือ Say Firefox .. มันอาจแสดงไฟล์ที่ดาวน์โหลด อย่างไรก็ตามคุณอาจไม่ได้รับ ISO ครบถ้วน หากคุณเบิร์นให้ลองใช้งานข้อมูลอาจหายไป สิ่งนี้เกิดขึ้นเป็นครั้งคราวในไฟล์โฮสต์เว็บเซิร์ฟเวอร์ที่แตกต่างกัน

เป็นวิธีปฏิบัติที่ดีในการเปรียบเทียบขนาดไฟล์อย่างน้อย (ไบต์ทั้งหมดหรือบิต) ตรวจสอบให้แน่ใจว่าตรงกัน Windows จะแสดงจำนวนไฟล์ที่แตกต่างกันแล้วพูดว่า Linux การตรวจสอบผลรวม MD5 จะแสดงค่าเดียวกันไม่มีวัสดุที่ใช้ระบบปฏิบัติการ หวังว่านี่จะช่วยได้เล็กน้อย ไชโย ...


2
Windows แสดงจำนวนไบต์ต่างจากวิธีที่ Linux แสดงหรือไม่ จริงๆ? ฉันคิดว่า abdomination ออกไปพร้อมกับระบบไฟล์ขนาดเท่าบล็อกนับ CP ของ (ตอนนี้หากคุณกำลังมองหาบางอย่างที่นอกเหนือจากจำนวนไบต์ - พูดขนาดไฟล์ที่แสดงใน Explorer - อาจแตกต่างกัน แต่ไม่มี sysadmin ที่มีสติควรตรวจสอบความสมบูรณ์ของไฟล์ที่ดาวน์โหลดมาด้วยวิธีนี้ ปัญหา) ไบต์เป็นไบต์ การมองในแง่ของบิตนั้นไม่สมเหตุสมผล ครั้งสุดท้ายที่คุณดาวน์โหลดและเก็บครึ่งไบต์คือเมื่อไหร่
CVn

2

ฉันสังเกตเห็นคำตอบที่น่าสนใจมากมาย แต่มีสิ่งสุดท้ายที่ต้องพิจารณา: ปัญหาของนายพลสองคน

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

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

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