แฮชแบบ Fast syndrome
| ทั่วไป | |
|---|---|
| นักออกแบบ | ดาเนียล ออโกต์ , มัตติเยอ ฟิเนียส , นิโคลัส เซนดริเยร์ |
| เผยแพร่ครั้งแรก | 2003 |
| มาจาก | ระบบเข้ารหัส McElieceและระบบเข้ารหัส Niederreiter |
| ผู้สืบทอด | ฟังก์ชันแฮชแบบ fast syndrome ที่ได้รับการปรับปรุง |
| เกี่ยวข้อง กับ | ฟังก์ชันแฮชตามกลุ่มอาการ |
| รายละเอียด | |
| ขนาดย่อย | ปรับขนาดได้ |
ในด้านการเข้ารหัสลับฟังก์ชันแฮชแบบซินโดรมเร็ว (FSB)เป็นตระกูลของฟังก์ชันแฮชการเข้ารหัสลับที่ Daniel Augot, Matthieu Finiasz และ Nicolas Sendrier นำเสนอในปี 2003 [ 1 ] แตกต่างจากฟังก์ชันแฮชการเข้ารหัสลับอื่นๆ ส่วนใหญ่ที่ใช้ในปัจจุบัน FSB สามารถพิสูจน์ได้ว่ามีความปลอดภัยในระดับหนึ่ง กล่าวคือ สามารถพิสูจน์ได้ว่าการเจาะ FSB นั้นยากอย่างน้อยเท่ากับการแก้ปัญหาNP-complete บางอย่างที่เรียกว่า การถอดรหัสซินโดรมปกติดังนั้น FSB จึงมีความปลอดภัยที่พิสูจน์ได้แม้ว่าจะไม่ทราบว่า ปัญหา NP-completeสามารถแก้ไขได้ในเวลาพหุนามหรือไม่ แต่มักจะสันนิษฐานว่าไม่สามารถทำได้
มีการเสนอ FSB หลายเวอร์ชัน โดยเวอร์ชันล่าสุดได้ถูกส่งเข้าประกวดการเข้ารหัส SHA-3แต่ถูกปฏิเสธในรอบแรก แม้ว่า FSB ทุกเวอร์ชันจะอ้างว่ามีความปลอดภัยที่พิสูจน์ได้ แต่เวอร์ชันเบื้องต้นบางเวอร์ชันก็ถูกเจาะได้ในที่สุด[ 2 ] อย่างไรก็ตาม การออกแบบ FSB เวอร์ชันล่าสุดได้คำนึงถึงการโจมตีนี้และยังคงปลอดภัยจากการโจมตีที่รู้จักในปัจจุบันทั้งหมด
เช่นเคย ความปลอดภัยที่พิสูจน์ได้นั้นมาพร้อมกับต้นทุน FSB ช้ากว่าฟังก์ชันแฮชแบบดั้งเดิมและใช้หน่วยความจำค่อนข้างมาก ซึ่งทำให้ไม่สามารถใช้งานได้จริงในสภาพแวดล้อมที่มีหน่วยความจำจำกัด นอกจากนี้ ฟังก์ชันการบีบอัดที่ใช้ใน FSB ต้องการขนาดเอาต์พุตขนาดใหญ่เพื่อรับประกันความปลอดภัย ปัญหาข้อสุดท้ายนี้ได้รับการแก้ไขในเวอร์ชันล่าสุดโดยการบีบอัดเอาต์พุตด้วยฟังก์ชันการบีบอัดอื่นที่เรียกว่าWhirlpoolอย่างไรก็ตาม แม้ว่าผู้เขียนจะโต้แย้งว่าการเพิ่มการบีบอัดครั้งสุดท้ายนี้ไม่ได้ลดความปลอดภัยลง แต่มันทำให้การพิสูจน์ความปลอดภัยอย่างเป็นทางการเป็นไปไม่ได้[ 3 ]
คำอธิบายของฟังก์ชันแฮช
เราเริ่มต้นด้วยฟังก์ชันการบีบอัดด้วยพารามิเตอร์โดยที่ และฟังก์ชันนี้จะใช้งานได้เฉพาะกับข้อความที่มีความยาวตามที่กำหนดเท่านั้น;ขนาดของผลลัพธ์จะเป็นเท่านี้ นอกจากนี้ เราต้องการและเพื่อเป็นจำนวนธรรมชาติ โดยที่หมายถึงลอการิทึมฐานสองเหตุผลสำหรับนั่นคือสิ่งที่เราต้องการเพื่อให้เป็นฟังก์ชันการบีบอัด ดังนั้นอินพุตจะต้องมีขนาดใหญ่กว่าเอาต์พุต ในภายหลังเราจะใช้การสร้างแบบ Merkle–Damgårdเพื่อขยายขอบเขตไปยังอินพุตที่มีความยาวตามอำเภอใจ
พื้นฐานของฟังก์ชันนี้ประกอบด้วยเลขฐานสอง (ที่เลือกแบบสุ่ม)เมทริกซ์ซึ่งดำเนินการตามข้อความของเข้ารหัส บิตด้วยการคูณเมทริกซ์ในที่นี้เราเข้ารหัสข้อความบิตเป็นเวกเตอร์ใน,ปริภูมิเวกเตอร์มิติเหนือฟิลด์ที่มีสององค์ประกอบ ดังนั้นผลลัพธ์จะเป็นข้อความของบิต
เพื่อความปลอดภัยและเพื่อให้ได้ความเร็วในการคำนวณแฮชที่เร็วขึ้น เราจึงต้องการใช้เฉพาะ "คำที่มีน้ำหนักปกติ" เท่านั้น“เพื่อใช้เป็นข้อมูลป้อนเข้าสำหรับเมทริกซ์ของเรา”
คำจำกัดความ
- ข้อความนั้นเรียกว่าคำพูดที่มีความหมายและความยาวหากประกอบด้วยบิตและแน่นอนในจำนวนนั้นมีเลขหนึ่งอยู่ด้วย
- คำที่มีน้ำหนักและความยาวเรียกว่าปกติถ้าในทุกช่วงเวลาประกอบด้วยค่าที่ไม่เป็นศูนย์เพียงค่าเดียวสำหรับทุกรายการกล่าวโดยสรุปแล้ว นั่นหมายความว่า หากเราแบ่งข้อความออกเป็นwส่วนเท่าๆ กัน แต่ละส่วนจะมีค่าที่ไม่เป็นศูนย์อยู่หนึ่งค่าพอดี
ฟังก์ชันการบีบอัด
มีอยู่จำนวนที่แน่นอนคำศัพท์ทั่วไปที่แตกต่างกันเกี่ยวกับน้ำหนักและความยาวดังนั้นเราจึงต้องการอย่างแม่นยำบิตข้อมูลเพื่อเข้ารหัสคำปกติเหล่านี้ เรากำหนดการจับคู่แบบหนึ่งต่อหนึ่งจากเซตของสตริงบิตที่มีความยาวไปยังชุดคำปกติที่มีน้ำหนักและความยาวจากนั้นฟังก์ชันการบีบอัด FSB จะถูกกำหนดดังต่อไปนี้ :
- อินพุต: ข้อความที่มีขนาด
- แปลงเป็นคำที่มีความยาวปกติและน้ำหนัก
- คูณด้วยเมทริกซ์
- ผลลัพธ์: แฮชขนาด
โดยทั่วไปแล้วเวอร์ชันนี้เรียกว่าการบีบอัดตามกลุ่มอาการ (syndrome-based compression ) มันช้ามากและในทางปฏิบัติจะทำในวิธีที่แตกต่างและเร็วกว่า ทำให้เกิดการบีบอัดตามกลุ่มอาการแบบเร็ว (fast syndrome-based compression ) เราแยกออกลงในเมทริกซ์ย่อยขนาดและเรากำหนดการจับคู่แบบหนึ่งต่อหนึ่งจากสตริงบิตที่มีความยาวไปยังชุดลำดับของตัวเลขระหว่าง 1 และนี่เทียบเท่ากับการจับคู่แบบหนึ่งต่อหนึ่งกับเซตของคำปกติที่มีความยาวและน้ำหนักเนื่องจากเราสามารถมองคำดังกล่าวเป็นลำดับตัวเลขระหว่าง 1 ถึง 2 ได้ฟังก์ชันการบีบอัดมีลักษณะดังนี้:
- อินพุต: ข้อความขนาด
- แปลงไปยังลำดับของตัวเลขระหว่าง 1 และ
- บวกคอลัมน์ที่ตรงกันของเมทริกซ์เข้าด้วยกันเพื่อให้ได้สตริงไบนารีที่มีความยาว
- ผลลัพธ์: แฮชขนาด
ขณะนี้เราสามารถใช้การสร้างแบบ Merkle–Damgårdเพื่อขยายฟังก์ชันการบีบอัดให้สามารถรับอินพุตที่มีความยาวใดๆ ก็ได้
ตัวอย่างของการบีบอัด
สถานการณ์และการเริ่มต้น : เข้ารหัสข้อความโดยใช้เมทริกซ์ H ซึ่งแยกออกเป็นบล็อกย่อย,,.
อัลกอริทึม :
- เราแยกอินพุตออกเข้าไปข้างในส่วนของความยาวและเราได้รับ,,.
- เราแปลงแต่ละอันแปลงเป็นจำนวนเต็มแล้วได้ผลลัพธ์,,.
- จากเมทริกซ์ย่อยแรกเราเลือกคอลัมน์ที่ 2 จากเมทริกซ์ย่อยที่สองคอลัมน์ที่ 1 และจากเมทริกซ์ย่อยที่สาม คอลัมน์ที่ 4
- เราบวกคอลัมน์ที่เลือกเข้าด้วยกันและได้ผลลัพธ์.
หลักฐานความปลอดภัยของ FSB
โครงสร้าง Merkle –Damgårdได้รับการพิสูจน์แล้วว่าอาศัยความปลอดภัยของฟังก์ชันการบีบอัดที่ใช้เท่านั้น ดังนั้นเราจึงจำเป็นต้องแสดงให้เห็นว่าฟังก์ชันการบีบอัดนั้นปลอดภัยปลอดภัย
ฟังก์ชันแฮชเข้ารหัสลับจำเป็นต้องมีความปลอดภัยในสามด้านที่แตกต่างกัน:
- ความต้านทานต่อภาพก่อนหน้า: เมื่อกำหนดค่าแฮชh แล้ว การค้นหาข้อความ mที่ทำให้ Hash( m ) = hควรเป็นเรื่องยาก
- ความต้านทานภาพก่อนหน้าข้อที่สอง: เมื่อกำหนดข้อความm แล้ว ควรจะยากที่จะหาข้อความm ที่ทำให้ Hash( m ) = Hash( m )
- ความต้านทานการชนกัน: ควรเป็นเรื่องยากที่จะหาข้อความสองข้อความที่แตกต่างกันm และm ที่ทำให้ Hash( m )=Hash( m )
โปรดทราบว่า หากฝ่ายตรงข้ามสามารถค้นหาภาพต้นแบบที่สองได้ ก็ย่อมสามารถค้นหาการชนกันได้อย่างแน่นอน ซึ่งหมายความว่า หากเราสามารถพิสูจน์ได้ว่าระบบของเราทนต่อการชนกันได้ ระบบนั้นก็จะทนต่อภาพต้นแบบที่สองได้อย่างแน่นอน
โดยทั่วไปในด้านการเข้ารหัส คำว่า "ยาก" หมายถึง "แทบจะแน่นอนว่าอยู่นอกเหนือความสามารถของศัตรูใดๆ ที่ต้องป้องกันไม่ให้ศัตรูนั้นเจาะระบบได้" อย่างไรก็ตาม เราจำเป็นต้องมีความหมายที่แม่นยำกว่าของคำว่า "ยาก" เราจะใช้คำว่า "ยาก" ในความหมายว่า "เวลาในการทำงานของอัลกอริทึมใดๆ ที่พบการชนกันหรือภาพต้นแบบจะขึ้นอยู่กับขนาดของค่าแฮชแบบทวีคูณ" ซึ่งหมายความว่าด้วยการเพิ่มขนาดของค่าแฮชเพียงเล็กน้อย เราก็สามารถบรรลุความปลอดภัยระดับสูงได้อย่างรวดเร็ว
ความต้านทานภาพก่อนหน้าและการถอดรหัสกลุ่มอาการปกติ (RSD)
ดังที่กล่าวไว้ก่อนหน้านี้ ความปลอดภัยของ FSB ขึ้นอยู่กับปัญหาที่เรียกว่าการถอดรหัสซินโดรมแบบปกติ (RSD)การถอดรหัสซินโดรมเป็นปัญหาจากทฤษฎีการเข้ารหัสแต่เนื่องจากมันเป็นปัญหา NP-completeness จึงทำให้มันเป็นแอปพลิเคชันที่ดีสำหรับวิทยาการเข้ารหัสลับ การถอดรหัสซินโดรมแบบปกติเป็นกรณีพิเศษของการถอดรหัสซินโดรมและมีนิยามดังนี้:
นิยามของ RSD: กำหนดให้เมทริกซ์ของมิติและเชือกเส้นเล็กๆความยาวโดยที่ชุดหนึ่งมีอยู่คอลัมน์ละหนึ่งคอลัมน์รวมกันได้เป็นจงหาชุดคอลัมน์ดังกล่าว
ปัญหานี้ได้รับการพิสูจน์แล้วว่าเป็นปัญหาNP-completeโดยการลดรูปจากการจับคู่แบบ 3 มิติอย่างไรก็ตาม แม้ว่าจะไม่ทราบว่ามี อัลกอริทึม เวลาพหุนามสำหรับแก้ปัญหา NP-complete หรือไม่ แต่ก็ยังไม่มีอัลกอริทึมใดที่ค้นพบ และการค้นพบอัลกอริทึมดังกล่าวจะเป็นการค้นพบครั้งสำคัญ
เห็นได้ชัดว่าการค้นหาภาพต้นแบบของแฮชที่กำหนดนั้นทำได้ง่ายเทียบเท่ากับปัญหานี้อย่างแท้จริง ดังนั้นปัญหาการค้นหาภาพต้นแบบใน FSB จึงต้องเป็นปัญหา NP-complete เช่นกัน
เรายังต้องพิสูจน์ความต้านทานต่อการชนกัน สำหรับเรื่องนี้เราต้องการ RSD รูปแบบ NP-complete อีกแบบหนึ่ง นั่นคือการถอดรหัสซินโดรมว่างแบบ 2-regular
การต้านทานการชนและการถอดรหัสซินโดรมว่างแบบปกติ 2 ตัว (2-RNSD)
นิยามของ 2-RNSD: กำหนดให้เมทริกซ์ของมิติและเชือกเส้นเล็กๆความยาวโดยที่ชุดหนึ่งมีอยู่คอลัมน์ โดยแต่ละคอลัมน์มีสองหรือศูนย์คอลัมน์รวมกันแล้วได้ศูนย์จงหาชุดคอลัมน์ดังกล่าว
นอกจากนี้ 2-RNSD ยังได้รับการพิสูจน์แล้วว่าเป็นปัญหาNP-completeโดยการลดรูปจากการจับคู่แบบ 3มิติ
เช่นเดียวกับที่ RSD นั้นโดยพื้นฐานแล้วเทียบเท่ากับการค้นหาคำธรรมดาๆ คำหนึ่งโดยที่2-RNSD เทียบเท่ากับการค้นหาคำปกติ 2 ตัวโดยที่คำปกติ 2 คำที่มีความยาวและน้ำหนักเป็นสตริงบิตที่มีความยาวโดยที่ในทุกช่วงเวลาค่าของตัวเลขสองค่าหรือศูนย์ค่าจะมีค่าเท่ากับ 1 โปรดทราบว่า คำปกติ 2 ค่า คือผลรวมของคำปกติสองคำ
สมมติว่าเราพบการชนกันแล้ว ดังนั้นเราจะมี Hash( m ) = Hash( m ) โดยที่จากนั้นเราก็สามารถหาคำปกติสองคำได้และโดยที่จากนั้นเราก็มี;เป็นผลรวมของคำปกติสองคำที่แตกต่างกัน ดังนั้นจึงต้องเป็นคำปกติ 2 คำที่มีแฮชเป็นศูนย์ ดังนั้นเราจึงแก้ปัญหาตัวอย่างของ 2-RNSD ได้แล้ว เราสรุปได้ว่าการค้นหาการชนกันใน FSB นั้นยากพอๆ กับการแก้ปัญหา 2-RNSD และดังนั้นจึงต้องเป็นปัญหา NP-complete
FSB เวอร์ชันล่าสุดใช้ฟังก์ชันการบีบอัดWhirlpoolเพื่อบีบอัดผลลัพธ์แฮชเพิ่มเติม แม้ว่าจะไม่สามารถพิสูจน์ได้ แต่ผู้เขียนโต้แย้งว่าการบีบอัดครั้งสุดท้ายนี้ไม่ได้ลดความปลอดภัยลง โปรดทราบว่าแม้ว่าจะสามารถค้นหาการชนกันใน Whirlpool ได้ ก็ยังคงต้องค้นหาภาพก่อนหน้าของการชนกันในฟังก์ชันการบีบอัด FSB ดั้งเดิมเพื่อค้นหาการชนกันใน FSB
ตัวอย่าง
ในการแก้ RSD เราจะอยู่ในสถานการณ์ตรงกันข้ามกับการแฮช โดยใช้ค่าเดียวกันกับในตัวอย่างก่อนหน้านี้ เราจะได้รับแยกออกเป็นบล็อกย่อยและสตริงเราได้รับมอบหมายให้หาคอลัมน์เพียงหนึ่งคอลัมน์ในแต่ละบล็อกย่อย ซึ่งผลรวมของคอลัมน์ทั้งหมดจะเท่ากับ...คำตอบที่คาดหวังจึงเป็นดังนี้,,เป็นที่ทราบกันดีว่าการคำนวณวิธีนี้ทำได้ยากสำหรับเมทริกซ์ขนาดใหญ่
ใน 2-RNSD เราต้องการค้นหาในแต่ละซับบล็อก ไม่ใช่แค่คอลัมน์เดียว แต่เป็นสองคอลัมน์หรือศูนย์คอลัมน์ ที่ผลรวมของคอลัมน์เหล่านั้นจะได้ 0000 (และไม่ใช่ 0)ในตัวอย่างนี้ เราอาจใช้คอลัมน์ (นับจาก 0) ที่ 2 และ 3 จากไม่มีคอลัมน์จากคอลัมน์ที่ 0 และ 2 จากยังมีวิธีแก้ปัญหาอื่นๆ อีก เช่น อาจไม่มีการใช้คอลัมน์ใดๆ เลย.
การวิเคราะห์การเข้ารหัสเชิงเส้น
ความปลอดภัยที่พิสูจน์ได้ของ FSB หมายความว่าการค้นหาการชนกันนั้นเป็นปัญหา NP-complete แต่การพิสูจน์นั้นเป็นการลดรูปไปสู่ปัญหาที่มีความซับซ้อนในกรณีที่เลวร้ายที่สุด แบบ asymptotically hard ซึ่งให้การรับประกันความปลอดภัยที่จำกัดเท่านั้น เนื่องจากยังคงมีอัลกอริทึมที่สามารถแก้ปัญหาได้อย่างง่ายดายสำหรับส่วนย่อยของพื้นที่ปัญหา ตัวอย่างเช่น มี วิธี การเชิงเส้นที่สามารถใช้สร้างการชนกันได้ในเวลาไม่กี่วินาทีบนพีซีเดสก์ท็อปสำหรับ FSB รุ่นแรกๆ ที่อ้างว่ามีความปลอดภัย 2^128 แสดงให้เห็นว่าฟังก์ชันแฮชให้ความต้านทานต่อภาพก่อนหน้าหรือการชนกันน้อยที่สุดเมื่อเลือกพื้นที่ข้อความในลักษณะเฉพาะ
ผลลัพธ์ด้านความปลอดภัยเชิงปฏิบัติ
ตารางต่อไปนี้แสดงความซับซ้อนของการโจมตีที่รู้จักกันดีที่สุดต่อ FSB
| ขนาดเอาต์พุต (บิต) | ความซับซ้อนของการค้นหาการชนกัน | ความซับซ้อนของการผกผัน |
|---|---|---|
| 160 | 2 100.3 | 2 163.6 |
| 224 | 2 135.3 | 2,229.0 |
| 256 | 2,190.0 | 2 261.0 |
| 384 | 2 215.5 | 2 391.5 |
| 512 | 2 285.6 | 2 527.4 |
เจเนซิส
FSB เป็นเวอร์ชันเร่งความเร็วของฟังก์ชันแฮชแบบซินโดรม (SB) ในกรณีของ SB ฟังก์ชันการบีบอัดนั้นคล้ายคลึงกับฟังก์ชันการเข้ารหัสของระบบการเข้ารหัส McEliece เวอร์ชันของ Niederreiter มาก แทนที่จะใช้เมทริกซ์ตรวจสอบความเท่าเทียมกันของรหัส Goppa ที่เรียงสลับกัน SB จะใช้เมทริกซ์สุ่มจากมุมมองด้านความปลอดภัย สิ่งนี้จะช่วยเสริมความแข็งแกร่งให้กับระบบได้เท่านั้น
คุณสมบัติอื่นๆ
- ขนาดบล็อกของฟังก์ชันแฮชและขนาดของผลลัพธ์สามารถปรับขนาดได้อย่างสมบูรณ์
- ความเร็วสามารถปรับได้โดยการปรับจำนวนการดำเนินการบิตที่ FSB ใช้ต่อบิตอินพุต
- สามารถปรับระดับความปลอดภัยได้โดยการปรับขนาดของเอาต์พุต
- มีกรณีที่ไม่ดีอยู่บ้าง และต้องระมัดระวังเมื่อเลือกเมทริกซ์.
- เมทริกซ์ที่ใช้ในฟังก์ชันการบีบอัดอาจมีขนาดใหญ่ขึ้นในบางสถานการณ์ ซึ่งอาจเป็นข้อจำกัดเมื่อพยายามใช้ FSB บนอุปกรณ์ที่มีหน่วยความจำจำกัด ปัญหานี้ได้รับการแก้ไขแล้วในฟังก์ชันแฮชที่เกี่ยวข้องที่เรียกว่า Improved FSB ซึ่งยังคงมีความปลอดภัยที่พิสูจน์ได้แต่ต้องอาศัยข้อสมมติที่เข้มงวดขึ้นเล็กน้อย
ตัวแปร
ในปี 2550 IFSB ได้รับการเผยแพร่[ 3 ]ในปี 2553 S-FSB ได้รับการเผยแพร่ ซึ่งเร็วกว่าเวอร์ชันดั้งเดิม 30% [ 4 ]
ในปี 2011 DJ BernsteinและTanja Langeได้เผยแพร่ RFSB ซึ่งเร็วกว่า FSB-256 ดั้งเดิมถึง 10 เท่า [ 5 ] RFSB ได้รับการพิสูจน์แล้วว่าทำงานได้เร็วมากบนFPGA Spartan 6 โดยมีอัตราการส่งข้อมูลสูงถึงประมาณ 5 Gbit/s [ 6 ]
ลิงก์ภายนอก
- เว็บไซต์ FSB สำหรับการแข่งขัน SHA-3