Score:2

ต้านทานโดยธรรมชาติต่อการโจมตีช่องทางด้านข้างของ XMSS/LMS/SPHINCS+

ธง cn

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

Score:3
ธง my

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

มาทำลายสิ่งนี้กันเถอะ:

  • ในแง่ของเวลาและแชนเนลด้านแคช การใช้งานที่ชัดเจนนั้นค่อนข้างดี (ยกเว้น: ชุดพารามิเตอร์ตาม Haraka ของ Sphincs+)

นี่คือเหตุผล: การใช้งานตามธรรมชาติของฟังก์ชัน SHA-256 และ SHAKE อาศัยคำสั่งที่เป็นเวลาคงที่ในโปรเซสเซอร์สมัยใหม่ (การดำเนินการเชิงตรรกะ การเพิ่มโมดูลาร์ การเลื่อน/หมุนตามจำนวนคงที่) และไม่ได้ทำให้การเข้าถึงหน่วยความจำหรือข้อมูลขึ้นกับข้อมูล - สาขาที่ขึ้นต่อกัน (ยกเว้นสาขาที่ขึ้นอยู่กับความยาวของข้อความ - ข้อความความยาวตัวแปรเดียวที่เกี่ยวข้องคือแฮชข้อความเริ่มต้น และเราไม่ถือว่าข้อความที่ถูกเซ็นเป็นความลับ) นอกจากนี้ การดำเนินการตามธรรมชาติของโครงสร้างพื้นฐาน HBS (เช่นการผูกมัด Winternitz หรือการคำนวณแบบต้นไม้ Merkle) ยังไม่มีการเข้าถึงหน่วยความจำแบบลับหรือสาขา (มันเกี่ยวข้องกับสาขาแบบมีเงื่อนไข อย่างไรก็ตาม เงื่อนไขเหล่านั้นจะเป็นฟังก์ชันของข้อความหรือค่าที่เราใส่ลงในลายเซ็นเสมอ นั่นคือ ค่าต่างๆ ที่ศัตรูจะรู้อยู่ดี)

ดังนั้น ช่องทางด้านเวลาและแคชจะไม่ให้ค่าใด ๆ ที่ผู้โจมตีไม่ทราบอยู่แล้ว (แน่นอนว่าการนำไปใช้นั้นไม่ได้จงใจพยายามรั่วไหล)

  • ในแง่ของพลังหรือการโจมตีช่องทางด้านข้างสไตล์ EMF เรื่องราวยังไม่ชัดเจนนัก

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

สิ่งที่อาจถูกโจมตีคือฟังก์ชันที่ใช้สร้างค่าเริ่มต้นสำหรับโซ่ Winternitz (และสำหรับ Sphincs+ ใบ FORS) สิ่งที่มักจะทำในทั้งสาม (และได้รับคำสั่งอย่างเป็นทางการจาก Sphincs+) คือการใช้เมล็ดพันธุ์แบบคงที่เดียวกัน (โดยมีพารามิเตอร์เพิ่มเติมที่แตกต่างกัน) เพื่อสร้างค่าเหล่านี้โดยตรง นั่นคือสิ่งที่การโจมตี DPA ต้องการ (และแน่นอน เมื่อ ผู้โจมตีเอาคืนได้ก็จบเกม) เอกสารรอบ 3 Sphincs+ แนะนำว่าคุณสามารถใช้ฟังก์ชันแฮชที่ทนต่อ DPA ได้ในกรณีนั้น

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

cn flag
ดังนั้นโดยทั่วไปแล้ว ฟังก์ชันแฮชจะต้องให้ผลลัพธ์พลังงานที่คงที่ แล้วการโจมตี CPA หรือการฉีดข้อบกพร่องที่สามารถจัดการดัชนีลายเซ็น (ทำให้เซ็นชื่อด้วยรหัสเดียวกันสองครั้ง) เป็นอย่างไร
poncho avatar
my flag
@hooujki: ไม่ ฟังก์ชันแฮชมักไม่ให้ผลลัพธ์ของพลังงานที่คงที่ - อันที่จริงแล้ว การแปลพลังงานที่บันทึกไว้เป็นความลับมักต้องการการติดตามหลายรายการในบริบทที่แตกต่างกัน สำหรับ CPA ("Chosen Plaintext Attacks") ไม่มีอะไรที่เป็นประโยชน์ (แต่โดยทั่วไปแล้วจะไม่ถือว่าเป็นการโจมตีช่องทางด้านข้าง)
poncho avatar
my flag
@hooujki: สำหรับการโจมตีข้อบกพร่องสำหรับ LMS และ XMSS สิ่งเหล่านี้ขึ้นอยู่กับตรรกะการเดินต้นไม้ของ Merkle (ไม่ใช่เรื่องยากทั้งหมด แต่ไม่ใช่เรื่องเล็กน้อยและไม่ได้ระบุไว้ในเอกสาร) ด้วย Sphincs+ การโจมตีที่ผิดพลาดนั้นค่อนข้างรุนแรง และวิธีการตอบโต้เดียวที่ฉันรู้คือ "คำนวณสองครั้ง หวังว่าผู้โจมตีจะไม่สร้างข้อผิดพลาดซ้ำสอง
cn flag
โดย CPA ฉันหมายถึง "การวิเคราะห์พลังสหสัมพันธ์" การฉีดความผิดเดียวกัน (การเปลี่ยนแปลงใน MSB / LSB) อาจไม่ใช่เรื่องท้าทาย ตามตรรกะของการเดิน คุณหมายถึงอัลกอริธึมการเพิ่มประสิทธิภาพที่ใช้ในการสร้างค่ารูทในฐานะผู้ลงนามหรือไม่
poncho avatar
my flag
@hooujki: "การวิเคราะห์พลังความสัมพันธ์" จะมีข้อจำกัดเหมือนกัน (จำเป็นต้องเรียกใช้หลายครั้งในการดำเนินการที่เกี่ยวข้องโดยไม่เหมือนกัน) ที่ DPA มีหรือไม่ ถ้าเป็นเช่นนั้นก็มีคำตอบเหมือนกัน สำหรับ "ตรรกะการเดิน" จริง ๆ แล้วคำตอบแบบเต็มจะใช้พื้นที่มากกว่าที่อนุญาตในความคิดเห็น - คำตอบสั้น ๆ คือคุณสามารถทำฟังก์ชันทางเดียวเพื่อสร้างใบไม้ Winternitz (ดังนั้นเมื่อคุณลงชื่อ คุณสามารถ ไม่ลงชื่อซ้ำด้วยใบนั้นอีกต่อไป - คุณลืมวิธีการทำ) และคุณ (ในแบบจำลองลำดับชั้น) คุณแคชลายเซ็นกลางด้วย อีกครั้ง ไม่สำคัญ แต่ทำได้
cn flag
แต่คุณจะสร้างฟังก์ชันทางเดียวสำหรับใบไม้เหล่านี้ได้อย่างไร หากต้องสร้างใหม่สองครั้ง คุณสามารถสร้างค่าเริ่มต้นด้วย PRNG เหมือนในสมมติฐาน Winternitz แบบคลาสสิก แต่คุณไม่สามารถทำได้เนื่องจากหลังจากสร้างรหัสสาธารณะในครั้งแรก ผู้ลงนามต้องใช้ค่าเดียวกัน (PRNG ไม่สามารถให้ค่าเดียวกันได้) เพื่อสร้างใหม่ รหัสสาธารณะของโครงร่างที่สอดคล้องกันระหว่างการลงนาม
poncho avatar
my flag
@hooujki: ใช่ ผู้ลงนามจำเป็นต้องผ่าน Merkle tree หลายครั้ง (เว้นแต่เขาจะแคชค่า Winternitz ทั้งหมด ซึ่งไม่มีใครทำ) สำหรับการผ่านครั้งแรก เราจะรักษาสถานะ PRNG เริ่มต้นไว้ เราสนใจเฉพาะการผ่านครั้งสุดท้าย (ซึ่งเป็นการลงนามข้อความ); เมื่อเราลงนามในข้อความแล้ว เราสามารถอัปเดตสถานะ PRNG *และลืมสถานะก่อนหน้า* จากนั้นเราจะไม่สามารถถูกหลอกให้ลงชื่อด้วย OTS นั้นได้อีก (เพราะเราลืมระบุสถานะที่จำเป็น) ความผิดพลาดในการผ่านครั้งก่อนจะส่งผลให้ลายเซ็นไม่ถูกต้อง แต่จะไม่รั่วไหลแต่อย่างใด ทำได้ไม่ชัดเจน

โพสต์คำตอบ

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