การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

เมื่อคุณได้ยินคำว่า “การเข้ารหัส” บางคนจำรหัสผ่าน WiFi ของตนได้ กุญแจสีเขียวที่อยู่ถัดจากที่อยู่เว็บไซต์โปรดของพวกเขา และความยากลำบากในการเข้าอีเมลของผู้อื่น คนอื่นๆ จำช่องโหว่ต่างๆ มากมายในช่วงไม่กี่ปีที่ผ่านมาโดยบอกคำย่อ (DROWN, FREAK, POODLE...) โลโก้ที่มีสไตล์ และคำเตือนให้อัปเดตเบราว์เซอร์ของคุณอย่างเร่งด่วน

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

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

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

  • กลยุทธ์พื้นฐาน: กำลังเดรัจฉาน การวิเคราะห์ความถี่ การประมาณค่า การลดระดับ และข้ามโปรโตคอล
  • ช่องโหว่ที่มีตราสินค้า: ประหลาด อาชญากรรม พุดเดิ้ล จมน้ำ Logjam
  • กลยุทธ์ขั้นสูง: การโจมตีของออราเคิล (การโจมตีของ Vodenet, การโจมตีของ Kelsey); วิธีการพบปะตรงกลาง, การโจมตีวันเกิด, อคติทางสถิติ (การเข้ารหัสเชิงอนุพันธ์, การเข้ารหัสเชิงบูรณาการ ฯลฯ )
  • การโจมตีช่องด้านข้าง และญาติสนิท เทคนิคการวิเคราะห์ความล้มเหลว
  • การโจมตีการเข้ารหัสคีย์สาธารณะ: คิวบ์รูท, การออกอากาศ, ข้อความที่เกี่ยวข้อง, การโจมตีของคอปเปอร์สมิธ, อัลกอริธึม Pohlig-Hellman, ตะแกรงตัวเลข, การโจมตีของ Wiener, การโจมตีของ Bleichenbacher

บทความนี้ครอบคลุมเนื้อหาข้างต้นจนถึงการโจมตีของ Kelsey

กลยุทธ์พื้นฐาน

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

การโจมตีเหล่านี้บางส่วนล้าสมัยไปมากและไม่ได้ใช้มาหลายปีแล้ว คนอื่นๆ เป็นคนรุ่นเก่าที่ยังคงแอบดูนักพัฒนาระบบ cryptosystem ที่ไม่สงสัยในศตวรรษที่ 21 อยู่เป็นประจำ ยุคของการเข้ารหัสสมัยใหม่ถือได้ว่าเริ่มต้นด้วยการถือกำเนิดของ IBM DES ซึ่งเป็นรหัสแรกที่ทนทานต่อการโจมตีทั้งหมดในรายการนี้

แรงดุร้ายที่เรียบง่าย

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนรูปแบบการเข้ารหัสประกอบด้วยสองส่วน: 1) ฟังก์ชั่นการเข้ารหัสซึ่งรับข้อความ (ข้อความธรรมดา) รวมกับคีย์จากนั้นสร้างข้อความที่เข้ารหัส - ไซเฟอร์เท็กซ์; 2) ฟังก์ชั่นถอดรหัสที่ใช้ไซเฟอร์เท็กซ์และคีย์และสร้างข้อความธรรมดา ทั้งการเข้ารหัสและการถอดรหัสจะต้องคำนวณได้ง่ายด้วยคีย์ และยากต่อการคำนวณหากไม่มีคีย์

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

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

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

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

น่าเสียดายสำหรับนักเข้ารหัสลับ การเพิ่มขนาดคีย์เป็นการป้องกันที่ดีต่อการใช้กำลังดุร้าย เมื่อขนาดคีย์เพิ่มขึ้น จำนวนคีย์ที่เป็นไปได้จะเพิ่มขึ้นแบบทวีคูณ ด้วยขนาดคีย์ที่ทันสมัย ​​การใช้กำลังแบบเดรัจฉานธรรมดาจึงทำไม่ได้โดยสิ้นเชิง เพื่อให้เข้าใจถึงสิ่งที่เราหมายถึง มาดูซูเปอร์คอมพิวเตอร์ที่รู้จักเร็วที่สุดในช่วงกลางปี ​​2019 กัน: ประชุมสุดยอด จาก IBM ด้วยประสิทธิภาพสูงสุดประมาณ 1017 การดำเนินการต่อวินาที ปัจจุบันความยาวคีย์โดยทั่วไปคือ 128 บิต ซึ่งหมายถึง 2128 ชุดค่าผสมที่เป็นไปได้ ในการค้นหาคีย์ทั้งหมด ซูเปอร์คอมพิวเตอร์ซัมมิทต้องใช้เวลาประมาณ 7800 เท่าของอายุจักรวาล

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

การวิเคราะห์ความถี่

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนข้อความส่วนใหญ่ไม่พูดพล่อยๆ ตัวอย่างเช่น ในข้อความภาษาอังกฤษมีตัวอักษร 'e' และบทความ 'the' หลายตัว; ในไฟล์ไบนารี่ จะมีไบต์เป็นศูนย์จำนวนมากเป็นช่องว่างระหว่างส่วนข้อมูล การวิเคราะห์ความถี่คือการโจมตีใดๆ ที่ใช้ประโยชน์จากข้อเท็จจริงข้อนี้

ตัวอย่างที่ยอมรับได้ของการเข้ารหัสที่เสี่ยงต่อการโจมตีนี้คือการเข้ารหัสแบบแทนที่อย่างง่าย ในรหัสนี้ คีย์คือตารางที่มีการแทนที่ตัวอักษรทั้งหมด ตัวอย่างเช่น 'g' จะถูกแทนที่ด้วย 'h', 'o' ด้วย j ดังนั้นคำว่า 'go' จึงกลายเป็น 'hj' รหัสนี้ยากที่จะใช้กำลังเดรัจฉานเนื่องจากมีตารางการค้นหาที่เป็นไปได้มากมาย หากคุณสนใจคณิตศาสตร์ ความยาวคีย์ที่มีประสิทธิภาพคือประมาณ 88 บิต นั่นก็คือ
การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน. แต่การวิเคราะห์ความถี่มักจะทำให้งานเสร็จเร็ว

พิจารณาไซเฟอร์เท็กซ์ต่อไปนี้ที่ประมวลผลด้วยรหัสทดแทนแบบง่าย:

XDYLY น่าเกลียด XDWNKE WN DYAJYN ANF YALXD DGLAXWG XDAN ALY FLYAUX GR WN OGQL ZDWBGEGZDO

ตั้งแต่ Y เกิดขึ้นบ่อยครั้ง รวมทั้งต่อท้ายคำหลายๆ คำ เราก็สามารถสันนิษฐานได้ว่านี่คือตัวอักษร e:

XDeLe ALe UGLe XDWNKE WN DeAJeN ANF eALXD DGLAXWG XDAN ALe FLeAUX GR WN OGQL ZDWBGEGZDO

คู่ XD ซ้ำที่จุดเริ่มต้นของคำหลายคำ โดยเฉพาะอย่างยิ่งการรวมกัน XDeLe แนะนำคำนี้อย่างชัดเจน these หรือ thereเรามาทำต่อ:

theLe ALe UGLe thWNKE WN heAJeN ANF eALth DGLAtWG กว่า ALe FLeAUt GR WN OGQL ZDWBGEGZDO

ให้เราสันนิษฐานต่อไปว่า L สอดคล้องกับ r, A - a และอื่น ๆ อาจต้องใช้เวลาพยายามสักสองสามครั้ง แต่เมื่อเปรียบเทียบกับการโจมตีแบบเดรัจฉานเต็มกำลัง การโจมตีนี้จะกู้คืนข้อความต้นฉบับได้ในเวลาไม่นาน:

มีหลายสิ่งหลายอย่างในสวรรค์และโลก Horatio มากกว่าที่คุณฝันถึงในปรัชญาของคุณ

สำหรับบางคน การแก้ปัญหา “คริปโทแกรม” ดังกล่าวเป็นงานอดิเรกที่น่าตื่นเต้น

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

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

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

การคำนวณเบื้องต้น

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนเอาเมืองสมมุติ พรีคอมไฮท์ส ประชากร 200 คน บ้านแต่ละหลังในเมืองมีมูลค่าของมีค่าโดยเฉลี่ย 000 ดอลลาร์ แต่มีมูลค่าไม่เกิน 30 ดอลลาร์ ตลาดความปลอดภัยใน Precom ถูกผูกขาดโดย ACME Industries ซึ่งเป็นผู้ผลิตระบบล็อคประตูระดับ Coyote™ ในตำนาน ตามการวิเคราะห์ของผู้เชี่ยวชาญ ระบบล็อคระดับโคโยตี้สามารถถูกทำลายได้ด้วยเครื่องจักรสมมุติที่ซับซ้อนมากเท่านั้น การสร้างซึ่งต้องใช้เงินลงทุนประมาณห้าปีและ 000 ดอลลาร์ เมืองนี้ปลอดภัยหรือไม่?

เป็นไปได้มากว่าไม่มี ในที่สุดอาชญากรที่มีความทะเยอทะยานก็ปรากฏตัวขึ้น เขาจะให้เหตุผลดังนี้: “ใช่ ฉันต้องเสียค่าใช้จ่ายล่วงหน้าจำนวนมาก อดทนรอห้าปี และ $50 แต่เมื่อฉันทำเสร็จแล้ว ฉันจะเข้าถึง ความมั่งคั่งทั้งหมดของเมืองนี้. ถ้าฉันเล่นไพ่ได้ถูกต้อง การลงทุนนี้จะจ่ายให้กับตัวเองหลายเท่า”

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

ตัวอย่างที่ง่ายที่สุดของระบบการเข้ารหัสลับที่เสี่ยงต่อการโจมตีด้วยการคำนวณล่วงหน้าคือการเข้ารหัสแบบไม่มีคีย์คงที่ นี่เป็นกรณีของ รหัสของซีซาร์ซึ่งเพียงเลื่อนตัวอักษรแต่ละตัวของตัวอักษรสามตัวไปข้างหน้า (ตารางมีการวนซ้ำ ดังนั้นตัวอักษรตัวสุดท้ายในตัวอักษรจึงถูกเข้ารหัสตัวที่สาม) หลักการของ Kerchhoffs เข้ามามีบทบาทอีกครั้ง: เมื่อระบบถูกแฮ็ก ระบบก็จะถูกแฮ็กตลอดไป

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

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

จำการโจมตีแบบคำนวณล่วงหน้าไว้: ในตอนท้ายของบทความ เราจะดูตัวอย่างการเข้ารหัสในชีวิตจริงสองตัวอย่างที่มีบทบาทสำคัญ

การแก้ไข

นี่คือนักสืบชื่อดัง Sherlock Holmes ที่ทำการแทรกแซงโจมตีดร. วัตสันผู้เคราะห์ร้าย:

ฉันเดาได้ทันทีว่าคุณมาจากอัฟกานิสถาน... ความคิดของฉันมีดังนี้: “ ผู้ชายคนนี้เป็นหมอประเภทหนึ่ง แต่เขามีฐานะทางทหาร ก็เป็นหมอทหาร.. เขาเพิ่งมาจากเขตร้อน - ใบหน้าของเขามีสีเข้ม แต่นี่ไม่ใช่สีผิวตามธรรมชาติของเขา เนื่องจากข้อมือของเขาขาวกว่ามาก ใบหน้าซีดเซียว - เห็นได้ชัดว่าเขาต้องทนทุกข์ทรมานมากมายและป่วยหนัก เขาได้รับบาดเจ็บที่มือซ้าย - เขาจับมันไว้โดยไม่เคลื่อนไหวและผิดธรรมชาติเล็กน้อย แพทย์ทหารอังกฤษจะอดทนต่อความยากลำบากและได้รับบาดเจ็บได้ที่ไหนในเขตร้อน? แน่นอนในอัฟกานิสถาน” กระบวนความคิดทั้งหมดใช้เวลาเพียงวินาทีเดียว ฉันเลยบอกว่าคุณมาจากอัฟกานิสถาน และคุณก็ประหลาดใจ

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

เรามาอธิบายด้วยตัวอย่างง่ายๆ ว่าการแก้ไขทำงานอย่างไร สมมติว่าเราต้องการอ่านไดอารี่ส่วนตัวของศัตรูของเรา บ๊อบ เขาเข้ารหัสทุกตัวเลขในไดอารี่โดยใช้ระบบเข้ารหัสง่ายๆ ที่เขาเรียนรู้จากโฆษณาในนิตยสาร "A Mock of Cryptography" ระบบทำงานดังนี้: บ๊อบเลือกตัวเลขสองตัวที่เขาชอบ: การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน и การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน. จากนี้ไปจะเข้ารหัสหมายเลขใดก็ได้ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนมันจะคำนวณ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน. เช่น ถ้าบ๊อบเลือก การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน и การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนแล้วตามด้วยหมายเลข การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน จะถูกเข้ารหัสเป็น การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน.

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

วันที่: 235/520

ถึงไดรี่,

วันนี้เป็นวันดี. ผ่าน 64 วันนี้ฉันมีนัดกับอลิสาซึ่งอาศัยอยู่ในอพาร์ตเมนต์ 843. ฉันคิดจริงๆว่าเธออาจจะเป็น 26!

เนื่องจากเราจริงจังมากกับการติดตาม Bob ในวันที่ของเขา (เราอายุ 15 ปีทั้งคู่ในสถานการณ์นี้) จึงจำเป็นอย่างยิ่งที่จะต้องทราบวันที่และที่อยู่ของ Alice โชคดีที่เราสังเกตเห็นว่าระบบเข้ารหัสของ Bob เสี่ยงต่อการถูกโจมตีแบบสอดแทรก เราอาจจะไม่รู้ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน и การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนแต่เรารู้วันที่ของวันนี้ ดังนั้นเราจึงมีคู่ข้อความธรรมดา-ไซเฟอร์เท็กซ์สองคู่ กล่าวคือเรารู้สิ่งนั้น การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน เข้ารหัสใน การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนและ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน - ใน การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน. นี่คือสิ่งที่เราจะเขียนลงไป:

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

เนื่องจากเราอายุ 15 ปี เราจึงรู้อยู่แล้วเกี่ยวกับระบบสมการสองสมการที่มีไม่ทราบค่าสองตัว ซึ่งในกรณีนี้ก็เพียงพอที่จะค้นหา การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน и การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน โดยไม่มีปัญหาใดๆ คู่ข้อความธรรมดา-ไซเฟอร์เท็กซ์แต่ละคู่วางข้อจำกัดบนคีย์ของ Bob และข้อจำกัดทั้งสองร่วมกันก็เพียงพอที่จะกู้คืนคีย์ได้อย่างสมบูรณ์ ในตัวอย่างของเรา คำตอบคือ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน и การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน (ที่ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน, ดังนั้น 26 ในไดอารี่ตรงกับคำว่า 'อันหนึ่ง' นั่นคือ "อันเดียวกัน" - ประมาณ เลน)

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

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

ข้ามโปรโตคอล/ดาวน์เกรด

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนใน Now You See Me (2013) กลุ่มนักเล่นกลลวงตาพยายามที่จะฉ้อโกงเจ้าสัวประกันภัยที่ทุจริต Arthur Tressler จากทรัพย์สมบัติทั้งหมดของเขา เพื่อเข้าถึงบัญชีธนาคารของอาเธอร์ นักเล่นกลลวงตาจะต้องระบุชื่อผู้ใช้และรหัสผ่านหรือบังคับให้เขาปรากฏตัวที่ธนาคารด้วยตนเองและเข้าร่วมในโครงการ

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

(ตามตำนานเมืองที่เราได้ตรวจสอบและยืนยันเป็นการส่วนตัวแล้ว Eli Beaham นักเข้ารหัสลับเคยพบกับพนักงานธนาคารที่ยืนกรานที่จะตั้งคำถามเพื่อความปลอดภัย เมื่อพนักงานบอกชื่อคุณยายของเขา Beaham ก็เริ่มพูดว่า: “Capital X, เล็ก ย สาม... ")

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

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

ขโมย: สวัสดี? นี่คืออาเธอร์ เทรสเลอร์ ฉันต้องการรีเซ็ตรหัสผ่านของฉัน

แคชเชียร์: ยอดเยี่ยม. โปรดดูหนังสือรหัสลับส่วนตัวของคุณ หน้า 28 คำ 3 ข้อความต่อไปนี้ทั้งหมดจะถูกเข้ารหัสโดยใช้คำเฉพาะนี้เป็นกุญแจ PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…

ขโมย: เฮ้ เฮ้ รอ รอ นี่จำเป็นจริงๆเหรอ? เราคุยกันแบบคนปกติไม่ได้เหรอ?

แคชเชียร์: ฉันไม่แนะนำให้ทำเช่นนี้

ขโมย: ฉันแค่... ดูสิ ฉันมีวันที่แย่มาก โอเคไหม? ฉันเป็นลูกค้าวีไอพี และฉันไม่อยู่ในอารมณ์ที่จะค้นหาหนังสือโค้ดโง่ๆ พวกนี้

แคชเชียร์: ดี. ถ้าคุณยืนกราน คุณเทรสเลอร์ คุณต้องการอะไร?

ขโมย: ได้โปรด ฉันอยากจะบริจาคเงินทั้งหมดของฉันให้กับกองทุนเหยื่อแห่งชาติของอาเธอร์ เทรสเลอร์

(หยุดชั่วคราว).

แคชเชียร์: ตอนนี้ชัดเจนแล้ว. โปรดระบุ PIN ของคุณสำหรับธุรกรรมขนาดใหญ่

ขโมย: อะไรของฉัน?

แคชเชียร์: ตามคำขอส่วนตัวของคุณ ธุรกรรมขนาดนี้ต้องใช้ PIN สำหรับธุรกรรมขนาดใหญ่ รหัสนี้มอบให้กับคุณเมื่อคุณเปิดบัญชีของคุณ

ขโมย:... ฉันทำมันหาย. นี่จำเป็นจริงๆเหรอ? คุณไม่สามารถอนุมัติข้อตกลงได้หรือไม่?

แคชเชียร์: เลขที่ ฉันขอโทษ คุณเทรสเลอร์ นี่เป็นมาตรการรักษาความปลอดภัยที่คุณขออีกครั้ง หากคุณต้องการ เราสามารถส่งรหัส PIN ใหม่ไปยังกล่องจดหมายของคุณได้

ฮีโร่ของเราเลื่อนการดำเนินการออกไป พวกเขาแอบฟังธุรกรรมจำนวนมากของ Tressler โดยหวังว่าจะได้ยิน PIN; แต่ทุกครั้งที่บทสนทนากลายเป็นคำพูดที่ไม่มีความหมายก่อนที่จะพูดอะไรที่น่าสนใจ ในที่สุดวันหนึ่ง แผนนี้ก็ถูกนำไปปฏิบัติ พวกเขารออย่างอดทนเมื่อ Tressler ต้องทำธุรกรรมขนาดใหญ่ทางโทรศัพท์ เขาก็กดรับสาย จากนั้น...

เทรสเลอร์: สวัสดี ฉันต้องการทำธุรกรรมระยะไกลให้เสร็จสิ้น โปรด

แคชเชียร์: ยอดเยี่ยม. โปรดดูสมุดรหัสลับส่วนตัวของคุณ หน้า...

(หัวขโมยกดปุ่ม; เสียงแคชเชียร์เปลี่ยนเป็นเสียงที่ไม่อาจเข้าใจได้)

แคชเชียร์: - #@$#@$#*@$$@#* จะถูกเข้ารหัสโดยใช้คำนี้เป็นกุญแจ AAAYRR PLRQRZ MMNJK LOJBAN…

เทรสเลอร์: ขออภัย ฉันไม่ค่อยเข้าใจ อีกครั้ง? ในหน้าไหน? คำอะไร?

แคชเชียร์: นี่คือเพจ @#$@#*$)#*#@()#@$(#@*$(#@*.

เทรสเลอร์: อะไร

แคชเชียร์: คำหมายเลขยี่สิบ @$#@$#%#$

เทรสเลอร์: อย่างจริงจัง! พอแล้ว! คุณและโปรโตคอลความปลอดภัยของคุณเป็นเหมือนละครสัตว์ ฉันรู้ว่าคุณคุยกับฉันได้ตามปกติ

แคชเชียร์: ฉันไม่แนะนำ…

เทรสเลอร์: และฉันไม่แนะนำให้คุณเสียเวลาของฉัน ฉันไม่ต้องการได้ยินเรื่องนี้อีกจนกว่าคุณจะแก้ไขปัญหาสายโทรศัพท์ของคุณ เราสามารถสรุปข้อตกลงนี้ได้หรือไม่?

แคชเชียร์:… ใช่. ดี. คุณต้องการอะไร?

เทรสเลอร์: ฉันต้องการโอนเงิน $20 ไปยัง Lord Business Investments เลขที่บัญชี...

แคชเชียร์: ขอเวลาหนึ่งนาที มันเป็นเรื่องใหญ่ โปรดระบุ PIN ของคุณสำหรับธุรกรรมขนาดใหญ่

เทรสเลอร์: อะไร โอ้แม่นเลย 1234.

นี่คือการโจมตีด้านล่าง โปรโตคอลที่อ่อนแอกว่า "เพียงแค่พูดโดยตรง" ถูกมองว่าเป็น ตัวเลือก ในกรณีฉุกเฉิน และยังอยู่ที่นี่

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

นี่คือสิ่งที่เกิดขึ้นกับโปรโตคอล SSLv2 ในปี 1995 รัฐบาลสหรัฐฯ เริ่มมองว่าการเข้ารหัสเป็นอาวุธที่ป้องกันศัตรูทั้งในประเทศและต่างประเทศได้ดีที่สุด โค้ดแต่ละส่วนได้รับการอนุมัติให้ส่งออกจากสหรัฐอเมริกาเป็นรายบุคคล โดยมักจะมีเงื่อนไขว่าอัลกอริทึมจงใจทำให้อ่อนแอลง Netscape ผู้พัฒนาเบราว์เซอร์ยอดนิยม Netscape Navigator ได้รับอนุญาตสำหรับ SSLv2 เฉพาะกับคีย์ RSA 512 บิตที่มีช่องโหว่โดยเนื้อแท้ (และ 40 บิตสำหรับ RC4)

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

ทฤษฎีนี้ค้นพบหนทางสู่การโจมตีระดับสูงสองครั้งที่ทำให้การรักษาความปลอดภัยของโปรโตคอล SSL สั่นคลอนในปี 2015 ซึ่งทั้งสองค้นพบโดยนักวิจัยของ Microsoft และ อินเรีย. ประการแรก รายละเอียดของการโจมตี FREAK ได้รับการเปิดเผยในเดือนกุมภาพันธ์ ตามด้วยการโจมตีที่คล้ายกันอีกครั้งที่เรียกว่า Logjam ในสามเดือนต่อมา ซึ่งเราจะหารือในรายละเอียดเพิ่มเติมเมื่อเราดำเนินการโจมตีการเข้ารหัสคีย์สาธารณะ

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนช่องโหว่ FREAK (หรือที่รู้จักกันในชื่อ "Smack TLS") ได้รับความสนใจเมื่อนักวิจัยวิเคราะห์การใช้งานไคลเอนต์/เซิร์ฟเวอร์ TLS และค้นพบจุดบกพร่องที่น่าสงสัย ในการใช้งานเหล่านี้ หากไคลเอนต์ไม่แม้แต่ขอใช้การเข้ารหัสการส่งออกที่ไม่รัดกุม แต่เซิร์ฟเวอร์ยังคงตอบสนองด้วยคีย์ดังกล่าว ไคลเอนต์จะพูดว่า "โอ้ เอาล่ะ" และสลับไปใช้ชุดการเข้ารหัสที่ไม่รัดกุม

ในเวลานั้น การเข้ารหัสเพื่อการส่งออกได้รับการพิจารณาอย่างกว้างขวางว่าล้าสมัยและจำกัด ดังนั้นการโจมตีจึงสร้างความตกใจอย่างยิ่งและส่งผลกระทบต่อโดเมนสำคัญหลายแห่ง รวมถึงเว็บไซต์ทำเนียบขาว, IRS และ NSA ที่แย่ไปกว่านั้นคือปรากฎว่าเซิร์ฟเวอร์ที่มีช่องโหว่จำนวนมากกำลังเพิ่มประสิทธิภาพโดยการใช้คีย์เดียวกันซ้ำแทนที่จะสร้างคีย์ใหม่สำหรับแต่ละเซสชัน สิ่งนี้ทำให้หลังจากดาวน์เกรดโปรโตคอลแล้ว ก็สามารถดำเนินการโจมตีก่อนการคำนวณได้: การแคร็กคีย์หนึ่งคีย์ยังคงมีราคาค่อนข้างแพง ($100 และ 12 ชั่วโมง ณ เวลาที่เผยแพร่) แต่ต้นทุนจริงในการโจมตีการเชื่อมต่อลดลงอย่างมาก การเลือกรหัสเซิร์ฟเวอร์เพียงครั้งเดียวและถอดรหัสการเข้ารหัสสำหรับการเชื่อมต่อที่ตามมาทั้งหมดนับจากนั้นก็เพียงพอแล้ว

และก่อนที่เราจะไปต่อ มีการโจมตีขั้นสูงอย่างหนึ่งที่ต้องพูดถึง...

การโจมตีของออราเคิล

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนม็อกซี่ มาร์ลินสไปค์ รู้จักกันเป็นอย่างดีในฐานะบิดาแห่งแอพส่งข้อความเข้ารหัสลับข้ามแพลตฟอร์ม Signal; แต่โดยส่วนตัวแล้วเราชอบหนึ่งในนวัตกรรมที่ไม่ค่อยมีใครรู้จักของเขา - หลักการของการลงโทษแบบเข้ารหัส (หลักการดูมเข้ารหัสลับ) หากต้องการถอดความเล็กน้อย เราสามารถพูดได้ดังนี้: “หากโปรโตคอลดำเนินการ ใด ๆ ดำเนินการเข้ารหัสลับกับข้อความจากแหล่งที่อาจเป็นอันตรายและมีพฤติกรรมแตกต่างออกไป ขึ้นอยู่กับผลลัพธ์ ถือว่าถึงวาระแล้ว” หรือในรูปแบบที่คมชัดกว่า: “อย่านำข้อมูลจากศัตรูมาประมวลผล และหากจำเป็น อย่างน้อยก็อย่าแสดงผล”

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

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

ดังนั้นอลิซและบ็อบจึงสื่อสารกันโดยใช้รหัสทดแทนแบบง่ายๆ โดยใช้คีย์ที่พวกเขารู้จักเท่านั้น พวกเขาเข้มงวดมากเกี่ยวกับความยาวของข้อความ โดยมีความยาว 20 อักขระพอดี ดังนั้นพวกเขาจึงเห็นพ้องกันว่าหากใครต้องการส่งข้อความที่สั้นกว่านี้ พวกเขาควรเพิ่มข้อความจำลองที่ส่วนท้ายของข้อความเพื่อให้มีความยาว 20 ตัวอักษรพอดี หลังจากพูดคุยกัน พวกเขาก็ตัดสินใจว่าจะยอมรับเฉพาะข้อความจำลองต่อไปนี้เท่านั้น: a, bb, ccc, dddd ฯลฯ ดังนั้นจึงทราบข้อความจำลองที่มีความยาวตามต้องการ

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

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

ขโมย: PREWF ZHJKL MMMN. LA

อลิซ: ข้อความจำลองไม่ถูกต้อง

ขโมย: PREWF ZHJKL MMMN. LB

อลิซ: ข้อความจำลองไม่ถูกต้อง

ขโมย: PREWF ZHJKL MMMN. LC

อลิซ: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

หัวขโมยไม่รู้ว่าอลิซพูดอะไร แต่สังเกตเห็นสัญลักษณ์นั้น C ต้องสอดคล้องกัน aเนื่องจากอลิซยอมรับข้อความจำลอง

ขโมย: REWF ZHJKL MMMN. LAA

อลิซ: ข้อความจำลองไม่ถูกต้อง

ขโมย: REWF ZHJKL MMMN. LBB

อลิซ: ข้อความจำลองไม่ถูกต้อง

หลังจากพยายามมาหลายครั้ง...

ขโมย: REWF ZHJKL MMMN. LGG

อลิซ: ข้อความจำลองไม่ถูกต้อง

ขโมย: REWF ZHJKL MMMN. LHH

อลิซ: TLQO JWCRO FQAW SUY LCR C OWQXYJW. IW PWWR TU TCFA CHUYT TLQO JWFCTQUPOLQZ.

เป็นอีกครั้งที่ผู้โจมตีไม่รู้ว่าอลิซพูดอะไร แต่ตั้งข้อสังเกตว่า H ต้องตรงกับ b เนื่องจากอลิซยอมรับข้อความจำลอง

และอื่นๆจนกว่าผู้โจมตีจะรู้ความหมายของตัวละครแต่ละตัว

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

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

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

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

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

นอกจากนี้ในปี 2002 John Kelsey นักเข้ารหัสชาวอเมริกัน - ผู้เขียนร่วม สองครั้ง — เสนอการโจมตีแบบออราเคิลต่างๆ บนระบบที่บีบอัดข้อความแล้วเข้ารหัส สิ่งที่น่าสังเกตมากที่สุดในบรรดาการโจมตีเหล่านี้คือการโจมตีที่ใช้ประโยชน์จากข้อเท็จจริงที่ว่ามันมักจะเป็นไปได้ที่จะอนุมานความยาวดั้งเดิมของข้อความธรรมดาจากความยาวของไซเฟอร์เท็กซ์ ตามทฤษฎีแล้ว สิ่งนี้อนุญาตให้มีการโจมตีแบบออราเคิลที่กู้คืนบางส่วนของข้อความธรรมดาดั้งเดิม

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

การโจมตีของโวเดเน

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

น่าเสียดายที่ Block Cipher มีจุดอ่อนที่เห็นได้ชัดอยู่ประการหนึ่ง ขนาดบล็อกโดยทั่วไปคือ 128 บิต หรือ 16 อักขระ แน่นอนว่าการเข้ารหัสสมัยใหม่จำเป็นต้องทำงานกับข้อมูลอินพุตที่มีขนาดใหญ่กว่า และนี่คือจุดที่โหมดการเข้ารหัสเข้ามามีบทบาท โหมดการเข้ารหัสนั้นเป็นแฮ็กโดยพื้นฐานแล้ว มันเป็นวิธีการใช้บล็อกรหัสที่ยอมรับเฉพาะอินพุตขนาดที่กำหนดเท่านั้นเพื่ออินพุตที่มีความยาวตามใจชอบ

การโจมตีของ Vodene มุ่งเน้นไปที่โหมดการทำงานของ CBC (Cipher Block Chaining) ยอดนิยม การโจมตีจะถือว่าบล็อกไซเฟอร์ที่ซ่อนอยู่นั้นเป็นกล่องดำที่มีมนต์ขลังและไม่สามารถเจาะเข้าไปได้ และเลี่ยงการรักษาความปลอดภัยโดยสิ้นเชิง

ต่อไปนี้เป็นแผนภาพที่แสดงวิธีการทำงานของโหมด CBC:

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

เครื่องหมายบวกวงกลมหมายถึงการดำเนินการ XOR (OR พิเศษ) ตัวอย่างเช่น ได้รับบล็อกที่สองของไซเฟอร์เท็กซ์:

  1. โดยการดำเนินการ XOR บนบล็อกข้อความธรรมดาที่สองพร้อมกับบล็อกไซเฟอร์เท็กซ์แรก
  2. การเข้ารหัสบล็อกผลลัพธ์ด้วยรหัสบล็อกโดยใช้คีย์

เนื่องจาก CBC ใช้การดำเนินการไบนารี XOR อย่างหนัก เราจึงใช้เวลาสักครู่เพื่อระลึกถึงคุณสมบัติบางอย่างของมัน:

  • ความเป็นอมตะ: การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน
  • การสับเปลี่ยน: การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน
  • การเชื่อมโยง: การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน
  • การย้อนกลับได้เอง: การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน
  • ขนาดไบต์: ไบต์ n จาก การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน = (ไบต์ n จาก การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน) การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน (ไบต์ n จาก การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน)

โดยทั่วไป คุณสมบัติเหล่านี้บอกเป็นนัยว่าถ้าเรามีสมการที่เกี่ยวข้องกับการดำเนินการ XOR และไม่ทราบค่า ก็จะสามารถแก้ไขได้ เช่นถ้าเรารู้ว่า การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน กับสิ่งที่ไม่รู้จัก การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน และมีชื่อเสียง การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน и การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนจากนั้นเราก็สามารถอาศัยคุณสมบัติข้างต้นในการแก้สมการได้ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน. โดยใส่ XOR ทั้งสองข้างของสมการด้วย การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน, เราได้รับ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน. ทั้งหมดนี้จะมีความเกี่ยวข้องมากในอีกสักครู่

มีความแตกต่างเล็กน้อยสองประการและความแตกต่างที่สำคัญอย่างหนึ่งระหว่างสถานการณ์อลิซของเรากับการโจมตีของโวเดเนย์ ผู้เยาว์สองคน:

  • ในบทภาพยนตร์ อลิซคาดหวังว่าข้อความธรรมดาจะลงท้ายด้วยอักขระ a, bb, ccc และอื่น ๆ ในการโจมตี Wodene เหยื่อคาดหวังว่าข้อความธรรมดาจะสิ้นสุด N ครั้งด้วยไบต์ N (นั่นคือ เลขฐานสิบหก 01 หรือ 02 02 หรือ 03 03 03 และอื่นๆ) นี่เป็นความแตกต่างด้านเครื่องสำอางล้วนๆ
  • ในสถานการณ์ของ Alice มันง่ายที่จะบอกได้ว่า Alice ยอมรับข้อความแล้วหรือไม่โดยการตอบกลับว่า "ข้อความจำลองไม่ถูกต้อง" ในการโจมตีของ Vodene จำเป็นต้องมีการวิเคราะห์เพิ่มเติม และการดำเนินการที่แม่นยำกับฝั่งเหยื่อเป็นสิ่งสำคัญ แต่เพื่อความกระชับ ลองถือว่าการวิเคราะห์นี้ยังเป็นไปได้

ความแตกต่างหลัก:

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

ความแตกต่างที่สำคัญนี้คือชิ้นส่วนสุดท้ายของปริศนาที่จะเข้าใจการโจมตีของ Vaudenay ดังนั้นเราลองใช้เวลาสักครู่เพื่อคิดว่าเหตุใดและอย่างไรจึงสามารถติดตั้งการโจมตีของ Oracle บน CBC ได้ตั้งแต่แรก

สมมติว่าเราได้รับข้อความไซเฟอร์เท็กซ์ CBC จำนวน 247 บล็อก และเราต้องการถอดรหัสมัน เราสามารถส่งข้อความปลอมไปยังเซิร์ฟเวอร์ได้ เช่นเดียวกับที่เราส่งข้อความปลอมถึงอลิซเมื่อก่อน เซิร์ฟเวอร์จะถอดรหัสข้อความให้เรา แต่จะไม่แสดงการถอดรหัส - ในทางกลับกัน เช่นเดียวกับ Alice เซิร์ฟเวอร์จะรายงานข้อมูลเพียงบิตเดียว: ข้อความธรรมดามีช่องว่างภายในที่ถูกต้องหรือไม่

พิจารณาว่าในสถานการณ์ของอลิซเรามีความสัมพันธ์ดังต่อไปนี้:

$$display$$text{SIMPLE_SUBSTITUTION}(ข้อความ{ciphertext},ข้อความ{key}) = ข้อความ{ข้อความธรรมดา}$$display$$

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

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

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

เรียกสิ่งนี้ว่า "สมการ CBC"

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

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

ตอนนี้เรามองในแง่ดีเกี่ยวกับแผนการโจมตีโดยรวมแล้ว ก็ถึงเวลาลงรายละเอียด โปรดใส่ใจว่าข้อมูลข้อความธรรมดารั่วไหลบนเซิร์ฟเวอร์ได้อย่างไร ในสคริปต์ของ Alice การรั่วไหลเกิดขึ้นเนื่องจาก Alice จะตอบกลับด้วยข้อความที่ถูกต้องก็ต่อเมื่อ $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ ลงท้ายด้วยบรรทัด a (หรือ bbและอื่นๆ แต่โอกาสที่เงื่อนไขเหล่านี้จะถูกกระตุ้นโดยบังเอิญนั้นมีน้อยมาก) เช่นเดียวกับ CBC เซิร์ฟเวอร์ยอมรับช่องว่างภายในหากและหากเท่านั้น การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน ลงท้ายด้วยเลขฐานสิบหก 01. ลองใช้เคล็ดลับเดียวกันนี้: การส่งไซเฟอร์เท็กซ์ปลอมด้วยค่าปลอมของเราเอง การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนจนกว่าเซิร์ฟเวอร์จะยอมรับการเติม

เมื่อเซิร์ฟเวอร์ยอมรับการเติมข้อความปลอมของเรา นั่นหมายความว่า:

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

ตอนนี้เราใช้คุณสมบัติ XOR ไบต์ไบต์:

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

เรารู้เทอมที่หนึ่งและสาม และเราได้เห็นแล้วว่าสิ่งนี้ช่วยให้เราสามารถกู้คืนคำที่เหลือ - ไบต์สุดท้ายจาก การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน:

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

นอกจากนี้ยังให้ไบต์สุดท้ายของบล็อกข้อความธรรมดาสุดท้ายผ่านทางสมการ CBC และคุณสมบัติแบบไบต์ต่อไบต์

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

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

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

เนื่องจากตอนนี้เรารู้เทอมที่สองแล้ว เราจึงสามารถใช้การควบคุมเหนือเทอมแรกเพื่อควบคุมเทอมที่สามได้ เราเพียงแค่คำนวณ:

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

ก่อนหน้านี้เราไม่สามารถทำเช่นนี้ได้เนื่องจากเรายังไม่มีไบต์สุดท้าย การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน.

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

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

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

แล้วข้อความที่เหลือล่ะ? โปรดทราบว่าค่า การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน จริงๆ แล้วคือ $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$ เราสามารถใส่บล็อกอื่นแทนได้ การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนและการโจมตีจะยังคงสำเร็จ ในความเป็นจริง เราสามารถขอให้เซิร์ฟเวอร์ทำ $inline$text{BLOCK_DECRYPT}$inline$ สำหรับข้อมูลใดๆ ก็ได้ ณ จุดนี้ เกมจบลงแล้ว - เราสามารถถอดรหัสไซเฟอร์เท็กซ์ใดๆ ก็ได้ (ลองดูแผนภาพการถอดรหัส CBC อีกครั้งเพื่อดูสิ่งนี้ และโปรดทราบว่า IV เป็นแบบสาธารณะ)

วิธีการเฉพาะนี้มีบทบาทสำคัญในการโจมตีของ Oracle ที่เราจะพบในภายหลัง

การโจมตีของเคลซีย์

John Kelsey ผู้ใจดีของเราวางหลักการที่เป็นรากฐานของการโจมตีที่เป็นไปได้มากมาย ไม่ใช่แค่รายละเอียดของการโจมตีเฉพาะกับรหัสเฉพาะ ของเขา บทความ 2002 แห่งปี เป็นการศึกษาการโจมตีที่เป็นไปได้กับข้อมูลที่ถูกบีบอัดที่เข้ารหัส คุณคิดว่าข้อมูลที่บีบอัดข้อมูลก่อนการเข้ารหัสไม่เพียงพอที่จะทำการโจมตีหรือไม่? ปรากฎว่าเพียงพอแล้ว

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

หากต้องการดูหลักการในการดำเนินการ ให้พิจารณาข้อความธรรมดาสองข้อความ:

ข้อความธรรมดา 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

ข้อความธรรมดา 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

สมมติว่าข้อความธรรมดาทั้งสองถูกบีบอัดแล้วเข้ารหัส คุณได้รับไซเฟอร์เท็กซ์ผลลัพธ์สองอัน และต้องเดาว่าไซเฟอร์เท็กซ์ใดตรงกับข้อความธรรมดาใด:

ไซเฟอร์เท็กซ์ 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

ไซเฟอร์เท็กซ์ 2: DWKJZXYU

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

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

เช่นเดียวกับการโจมตีของ Oracle อื่นๆ เรามีความสัมพันธ์:

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

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

เพื่อแสดงให้เห็นว่าการโจมตีดังกล่าวทำงานอย่างไร ลองใช้รูปแบบการบีบอัดข้อมูลสมมติที่เราเพิ่งคิดขึ้นมา: TOYZIP มันจะค้นหาบรรทัดของข้อความที่ปรากฏก่อนหน้านี้ในข้อความ และแทนที่ด้วยไบต์ตัวยึดตำแหน่งสามไบต์ที่ระบุตำแหน่งที่จะค้นหาอินสแตนซ์ก่อนหน้าของบรรทัดและจำนวนครั้งที่ปรากฏที่นั่น เช่น เส้น helloworldhello สามารถบีบอัดเข้าไปได้ helloworld[00][00][05] ยาว 13 ไบต์ เทียบกับ 15 ไบต์ดั้งเดิม

สมมติว่าผู้โจมตีพยายามกู้คืนข้อความธรรมดาของแบบฟอร์ม password=...โดยที่ไม่ทราบรหัสผ่าน ตามรูปแบบการโจมตีของ Kelsey ผู้โจมตีสามารถขอให้เซิร์ฟเวอร์บีบอัดและเข้ารหัสข้อความในแบบฟอร์ม (ข้อความธรรมดาตามด้วย การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน) ที่ไหน การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน - ข้อความฟรี. เมื่อเซิร์ฟเวอร์ทำงานเสร็จแล้ว ระบบจะรายงานความยาวของผลลัพธ์ การโจมตีดำเนินไปดังนี้:

ขโมย: โปรดบีบอัดและเข้ารหัสข้อความธรรมดาโดยไม่มีช่องว่างภายใน

เซิร์ฟเวอร์: ความยาวผลลัพธ์ 14.

ขโมย: โปรดบีบอัดและเข้ารหัสข้อความธรรมดาที่ต่อท้ายไว้ password=a.

เซิร์ฟเวอร์: ความยาวผลลัพธ์ 18.

หมายเหตุแครกเกอร์: [ต้นฉบับ 14] + [สามไบต์ที่แทนที่ password=- a

ขโมย: โปรดบีบอัดและเข้ารหัสข้อความธรรมดาที่เพิ่มเข้าไป password=b.

เซิร์ฟเวอร์: ความยาวผลลัพธ์ 18.

ขโมย: โปรดบีบอัดและเข้ารหัสข้อความธรรมดาที่เพิ่มเข้าไป password=с.

เซิร์ฟเวอร์: ความยาวผลลัพธ์ 17.

หมายเหตุแครกเกอร์: [ต้นฉบับ 14] + [สามไบต์ที่แทนที่ password=c] นี่ถือว่าข้อความธรรมดาต้นฉบับประกอบด้วยสตริง password=c. นั่นคือรหัสผ่านเริ่มต้นด้วยตัวอักษร c

ขโมย: โปรดบีบอัดและเข้ารหัสข้อความธรรมดาที่เพิ่มเข้าไป password=сa.

เซิร์ฟเวอร์: ความยาวผลลัพธ์ 18.

หมายเหตุแครกเกอร์: [ต้นฉบับ 14] + [สามไบต์ที่แทนที่ password=с- a

ขโมย: โปรดบีบอัดและเข้ารหัสข้อความธรรมดาที่เพิ่มเข้าไป password=сb.

เซิร์ฟเวอร์: ความยาวผลลัพธ์ 18.

(… ในเวลาต่อมา…)

ขโมย: โปรดบีบอัดและเข้ารหัสข้อความธรรมดาที่เพิ่มเข้าไป password=со.

เซิร์ฟเวอร์: ความยาวผลลัพธ์ 17.

หมายเหตุแครกเกอร์: [ต้นฉบับ 14] + [สามไบต์ที่แทนที่ password=co] ผู้โจมตีสรุปว่ารหัสผ่านขึ้นต้นด้วยตัวอักษรโดยใช้ตรรกะเดียวกัน co

และต่อไปเรื่อย ๆ จนกว่ารหัสผ่านทั้งหมดจะถูกกู้คืน

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

ช่องโหว่ของแบรนด์: อาชญากรรม, พุดเดิ้ล, จมน้ำตาย

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

อาชญากรรม

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

ดูเหมือนน่าทึ่ง ถ้าบ๊อบไป evil.comสคริปต์บนไซต์นี้ขอให้ Google ส่งอีเมลรหัสผ่านของ Bob ไปที่ได้ไหม [email protected]? ในทางทฤษฎีใช่ แต่ในความเป็นจริงไม่ใช่ สถานการณ์นี้เรียกว่าการโจมตีการปลอมแปลงคำขอข้ามไซต์ (การปลอมแปลงคำขอข้ามไซต์, CSRF) และได้รับความนิยมในช่วงกลางทศวรรษที่ 90 วันนี้ถ้า evil.com ลองใช้เคล็ดลับนี้ Google (หรือเว็บไซต์ที่เคารพตนเอง) มักจะตอบกลับว่า "เยี่ยมมาก แต่โทเค็น CSRF ของคุณสำหรับธุรกรรมนี้จะ... อืม... три триллиона и семь. กรุณาทวนหมายเลขนี้อีกครั้ง" เบราว์เซอร์สมัยใหม่มีสิ่งที่เรียกว่า "นโยบายต้นกำเนิดเดียวกัน" โดยที่สคริปต์บนไซต์ A ไม่สามารถเข้าถึงข้อมูลที่ส่งโดยเว็บไซต์ B ดังนั้นสคริปต์บน evil.com สามารถส่งคำขอไปที่ google.comแต่ไม่สามารถอ่านคำตอบหรือทำธุรกรรมให้เสร็จสิ้นได้จริง

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

นี่คือที่ที่มันเข้ามาเล่น อาชญากรรม (Compression Ratio Infoleak Made Easy, รั่วไหลง่ายผ่านอัตราส่วนการอัด) ช่องโหว่นี้ถูกเปิดเผยในเดือนกันยายน 2012 โดยนักวิจัยด้านความปลอดภัย Juliano Rizzo และ Thai Duong เราได้ตรวจสอบพื้นฐานทางทฤษฎีทั้งหมดแล้วซึ่งช่วยให้เราเข้าใจสิ่งที่พวกเขาทำและอย่างไร ผู้โจมตีอาจบังคับให้เบราว์เซอร์ของ Bob ส่งคำขอไปยัง Google จากนั้นฟังการตอบกลับบนเครือข่ายท้องถิ่นในรูปแบบที่เข้ารหัสและบีบอัด ดังนั้นเราจึงมี:

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสน

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

เมื่อเข้าใจทฤษฎีนี้ ผู้เขียน CRIME ได้สร้างช่องโหว่ที่สามารถขโมยคุกกี้เซสชันสำหรับไซต์ต่างๆ มากมาย รวมถึง Gmail, Twitter, Dropbox และ Github ช่องโหว่ดังกล่าวส่งผลกระทบต่อเว็บเบราว์เซอร์สมัยใหม่ส่วนใหญ่ ส่งผลให้มีการเผยแพร่แพตช์ที่ฝังคุณลักษณะการบีบอัดข้อมูลใน SSL อย่างเงียบๆ เพื่อไม่ให้ใช้งานเลย สิ่งเดียวที่ได้รับการปกป้องจากช่องโหว่คือ Internet Explorer ซึ่งไม่เคยใช้การบีบอัด SSL เลย

สุนัขพูเดล

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนในเดือนตุลาคม 2014 ทีมรักษาความปลอดภัยของ Google ได้สร้างกระแสในชุมชนความปลอดภัย พวกเขาสามารถใช้ประโยชน์จากช่องโหว่ในโปรโตคอล SSL ที่ได้รับการแพตช์เมื่อสิบกว่าปีที่แล้ว

ปรากฎว่าในขณะที่เซิร์ฟเวอร์ใช้งาน TLSv1.2 ใหม่ เซิร์ฟเวอร์จำนวนมากได้ทิ้งการสนับสนุน SSLv3 รุ่นเก่าสำหรับความเข้ากันได้แบบย้อนหลังกับ Internet Explorer 6 เราได้พูดคุยเกี่ยวกับการโจมตีแบบดาวน์เกรดแล้ว ดังนั้นคุณคงจินตนาการได้ว่าเกิดอะไรขึ้น การบ่อนทำลายโปรโตคอลแฮนด์เชคที่ได้รับการจัดการอย่างดีและเซิร์ฟเวอร์ก็พร้อมที่จะกลับไปใช้ SSLv3 แบบเก่าที่ดี ซึ่งถือเป็นการเลิกล้มการวิจัยด้านความปลอดภัยตลอด 15 ปีที่ผ่านมา

สำหรับบริบททางประวัติศาสตร์ นี่เป็นบทสรุปโดยย่อเกี่ยวกับประวัติของ SSL จนถึงเวอร์ชัน 2 จาก Matthew Green:

Transport Layer Security (TLS) เป็นโปรโตคอลความปลอดภัยที่สำคัญที่สุดบนอินเทอร์เน็ต [..] เกือบทุกธุรกรรมที่คุณทำบนอินเทอร์เน็ตขึ้นอยู่กับ TLS [..] แต่ TLS ก็ไม่ใช่ TLS เสมอไป โปรโตคอลเริ่มต้นชีวิตใน เน็ตสเคป คอมมิวนิเคชั่นส์ เรียกว่า "Secure Sockets Layer" หรือ SSL มีข่าวลือว่า SSL เวอร์ชันแรกนั้นแย่มากจนนักพัฒนารวบรวมโค้ดที่พิมพ์ออกมาทั้งหมดและฝังไว้ในหลุมฝังกลบลับในนิวเม็กซิโก ด้วยเหตุนี้ SSL เวอร์ชันแรกที่เปิดเผยต่อสาธารณะจึงเกิดขึ้นจริง เวอร์ชัน SSL2. มันค่อนข้างน่ากลัว และ [..] มันเป็นผลงานของช่วงกลางทศวรรษที่ 90 ซึ่งนักเข้ารหัสยุคใหม่มองว่า "ยุคมืดของการเข้ารหัส" การโจมตีด้วยการเข้ารหัสลับที่ชั่วร้ายที่สุดหลายครั้งที่เรารู้จักในปัจจุบันยังไม่ถูกค้นพบ เป็นผลให้นักพัฒนาโปรโตคอล SSLv2 ถูกทิ้งให้คลำหาทางในความมืด และพวกเขาต้องเผชิญกับ สัตว์ประหลาดที่น่ากลัวมากมาย - เพื่อความผิดหวังและผลประโยชน์ของเรา เนื่องจากการโจมตี SSLv2 ได้ทิ้งบทเรียนอันล้ำค่าไว้ให้กับโปรโตคอลรุ่นต่อไป

หลังจากเหตุการณ์เหล่านี้ ในปี 1996 Netscape ที่ผิดหวังได้ออกแบบโปรโตคอล SSL ใหม่ตั้งแต่ต้น ผลลัพธ์ที่ได้คือ SSL เวอร์ชัน 3 ซึ่ง แก้ไขปัญหาด้านความปลอดภัยที่ทราบหลายประการของรุ่นก่อน.

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

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

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

ด้วยความสามารถของผู้โจมตีที่ทรงพลังยิ่งขึ้น การโจมตีจึงสามารถดำเนินต่อไปได้ โปรดทราบว่าผู้โจมตีรู้ว่าคุกกี้เซสชันที่เข้ารหัสปรากฏที่ใดในส่วนหัวและควบคุมความยาวของคำขอ HTTP ที่อยู่ก่อนหน้า ดังนั้นจึงสามารถจัดการคำขอ HTTP เพื่อให้ไบต์สุดท้ายของคุกกี้สอดคล้องกับจุดสิ้นสุดของบล็อก ตอนนี้ไบต์นี้เหมาะสำหรับการถอดรหัส คุณสามารถเพิ่มอักขระหนึ่งตัวลงในคำขอได้ และไบต์สุดท้ายของคุกกี้จะยังคงอยู่ในตำแหน่งเดิมและเหมาะสำหรับการเลือกโดยใช้วิธีการเดียวกัน การโจมตีจะดำเนินต่อไปในลักษณะนี้จนกว่าไฟล์คุกกี้จะได้รับการกู้คืนอย่างสมบูรณ์ เรียกว่า POODLE: Padding Oracle บน Downgraded Legacy Encryption

จมน้ำตาย

การโจมตีด้วยการเข้ารหัส: คำอธิบายสำหรับจิตใจที่สับสนดังที่เราได้กล่าวไปแล้ว SSLv3 มีข้อบกพร่อง แต่โดยพื้นฐานแล้วมันแตกต่างไปจากรุ่นก่อน เนื่องจาก SSLv2 ที่รั่วนั้นเป็นผลผลิตของยุคที่แตกต่างกัน คุณสามารถขัดจังหวะข้อความตรงกลางได้: соглашусь на это только через мой труп กลายเป็น соглашусь на это; ลูกค้าและเซิร์ฟเวอร์สามารถพบปะกันทางออนไลน์ สร้างความไว้วางใจ และแลกเปลี่ยนความลับต่อหน้าผู้โจมตี ซึ่งสามารถปลอมตัวเป็นทั้งสองอย่างได้อย่างง่ายดาย นอกจากนี้ยังมีปัญหาเกี่ยวกับการเข้ารหัสการส่งออก ซึ่งเราได้กล่าวถึงเมื่อพิจารณา FREAK สิ่งเหล่านี้คือเมืองโสโดมและโกโมราห์ที่เข้ารหัส

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

คุณอาจถามว่าทำไมเราถึงสนใจสิ่งที่พวกเขาทำที่นั่น? พวกเขามีเซสชันที่มีช่องโหว่ แต่ไม่ควรส่งผลกระทบต่อเซสชันอื่นหรือความปลอดภัยของเซิร์ฟเวอร์ใช่ไหม ก็ไม่เชิง ใช่แล้ว ในทางทฤษฎีมันควรจะเป็นอย่างนั้น แต่ไม่ - เนื่องจากการสร้างใบรับรอง SSL ทำให้เกิดภาระบางอย่าง ส่งผลให้เซิร์ฟเวอร์จำนวนมากใช้ใบรับรองเดียวกัน และด้วยเหตุนี้ จึงมีคีย์ RSA เดียวกันสำหรับการเชื่อมต่อ TLS และ SSLv2 ที่แย่ไปกว่านั้น เนื่องจากข้อบกพร่องของ OpenSSL ตัวเลือก "ปิดใช้งาน SSLv2" ในการใช้งาน SSL ยอดนิยมนี้จึงใช้งานไม่ได้จริง

สิ่งนี้ทำให้เกิดการโจมตีข้ามโปรโตคอลบน TLS ที่เรียกว่า จมน้ำตาย (การถอดรหัส RSA ด้วย eNcryption ที่ล้าสมัยและอ่อนแอลง การถอดรหัส RSA ด้วยการเข้ารหัสที่ล้าสมัยและอ่อนแอลง) จำไว้ว่านี่ไม่ใช่การโจมตีระยะสั้น ผู้โจมตีไม่จำเป็นต้องทำหน้าที่เป็น "คนที่อยู่ตรงกลาง" และไม่จำเป็นต้องให้ลูกค้ามีส่วนร่วมในเซสชั่นที่ไม่ปลอดภัย ผู้โจมตีเพียงแค่เริ่มต้นเซสชัน SSLv2 ที่ไม่ปลอดภัยกับเซิร์ฟเวอร์เอง โจมตีโปรโตคอลที่อ่อนแอ และกู้คืนคีย์ส่วนตัว RSA ของเซิร์ฟเวอร์ คีย์นี้ใช้ได้กับการเชื่อมต่อ TLS เช่นกัน และจากจุดนี้ไป การรักษาความปลอดภัย TLS ใดๆ ก็ตามจะป้องกันไม่ให้ถูกบุกรุกได้

แต่ในการถอดรหัส คุณต้องมีการโจมตีที่ใช้งานได้กับ SSLv2 ซึ่งช่วยให้คุณสามารถกู้คืนไม่เพียงแต่การรับส่งข้อมูลเฉพาะเท่านั้น แต่ยังรวมถึงรหัสเซิร์ฟเวอร์ RSA ที่เป็นความลับด้วย แม้ว่านี่จะเป็นการตั้งค่าที่ซับซ้อน แต่นักวิจัยสามารถเลือกช่องโหว่ใดๆ ที่ถูกปิดโดยสิ้นเชิงหลังจาก SSLv2 ในที่สุดพวกเขาก็พบตัวเลือกที่เหมาะสม: การโจมตี Bleichenbacher ซึ่งเราได้กล่าวถึงไปแล้วและเราจะอธิบายรายละเอียดในบทความถัดไป SSL และ TLS ได้รับการปกป้องจากการโจมตีนี้ แต่ฟีเจอร์สุ่มบางอย่างของ SSL เมื่อรวมกับคีย์ลัดในการเข้ารหัสระดับส่งออก ทำให้เป็นไปได้ การใช้งาน DROWN โดยเฉพาะ.

ในขณะที่เผยแพร่ 25% ของเว็บไซต์อันดับต้น ๆ ของอินเทอร์เน็ตได้รับผลกระทบจากช่องโหว่ DROWN และการโจมตีสามารถทำได้โดยใช้ทรัพยากรเพียงเล็กน้อยสำหรับแฮ็กเกอร์ตัวคนเดียวที่ซุกซน การดึงคีย์ RSA ของเซิร์ฟเวอร์ต้องใช้เวลาในการคำนวณแปดชั่วโมงและมีค่าใช้จ่าย 440 ดอลลาร์ และ SSLv2 เปลี่ยนจากล้าสมัยไปเป็นกัมมันตภาพรังสี

เดี๋ยว แล้ว Heartbleed ล่ะ?

นี่ไม่ใช่การโจมตีด้วยการเข้ารหัสในแง่ที่อธิบายไว้ข้างต้น นี่คือบัฟเฟอร์ล้น

เรามาพักกันเถอะ

เราเริ่มต้นด้วยเทคนิคพื้นฐานบางอย่าง: การบังคับเดรัจฉาน การแก้ไข การลดระดับ ข้ามโปรโตคอล และการคำนวณล่วงหน้า จากนั้นเรามาดูเทคนิคขั้นสูงหนึ่งซึ่งอาจเป็นองค์ประกอบหลักของการโจมตีด้วยการเข้ารหัสสมัยใหม่: การโจมตีของ Oracle เราใช้เวลาพอสมควรในการหาคำตอบ และไม่เพียงแต่เข้าใจหลักการพื้นฐานเท่านั้น แต่ยังรวมถึงรายละเอียดทางเทคนิคของการใช้งานเฉพาะสองรายการด้วย: การโจมตี Vaudenay ในโหมดการเข้ารหัส CBC และการโจมตี Kelsey บนโปรโตคอลการเข้ารหัสก่อนการบีบอัด

ในการตรวจสอบการโจมตีแบบดาวน์เกรดและการคำนวณล่วงหน้า เราได้สรุปการโจมตี FREAK ไว้โดยย่อ ซึ่งใช้ทั้งสองวิธีโดยให้ไซต์เป้าหมายดาวน์เกรดเป็นคีย์ที่ไม่รัดกุม จากนั้นจึงนำคีย์เดิมกลับมาใช้ใหม่ สำหรับบทความถัดไป เราจะบันทึกการโจมตี Logjam (ที่คล้ายกันมาก) ซึ่งกำหนดเป้าหมายอัลกอริธึมคีย์สาธารณะ

จากนั้นเราดูตัวอย่างการประยุกต์ใช้หลักการเหล่านี้อีกสามตัวอย่าง ประการแรก อาชญากรรมและพุดเดิ้ล: การโจมตีสองครั้งที่อาศัยความสามารถของผู้โจมตีในการแทรกข้อความธรรมดาถัดจากข้อความธรรมดาเป้าหมาย จากนั้นตรวจสอบการตอบสนองของเซิร์ฟเวอร์และ แล้วก็โดยใช้วิธีการโจมตีของ Oracle ใช้ประโยชน์จากข้อมูลที่กระจัดกระจายนี้เพื่อกู้คืนข้อความธรรมดาบางส่วน CRIME มุ่งหน้าสู่การโจมตีของ Kelsey ในการบีบอัด SSL ในขณะที่ POODLE ใช้รูปแบบการโจมตี CBC ของ Vaudenay แทนโดยให้ผลแบบเดียวกัน

จากนั้นเราหันความสนใจไปที่การโจมตี DROWN ข้ามโปรโตคอล ซึ่งสร้างการเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้โปรโตคอล SSLv2 ดั้งเดิม จากนั้นกู้คืนคีย์ลับของเซิร์ฟเวอร์โดยใช้การโจมตี Bleichenbacher เราได้ข้ามรายละเอียดทางเทคนิคของการโจมตีนี้ไปแล้ว เช่นเดียวกับ Logjam จะต้องรอจนกว่าเราจะมีความเข้าใจที่ดีเกี่ยวกับระบบการเข้ารหัสคีย์สาธารณะและช่องโหว่ของระบบดังกล่าว

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

ที่มา: will.com

เพิ่มความคิดเห็น