Score:1

การใช้ CMAC แทนฟังก์ชันแฮชสำหรับการเซ็นข้อความ

ธง us

โดยทั่วไป เมื่อเราต้องการสร้างลายเซ็นสำหรับข้อความ M เราจะใช้ฟังก์ชันแฮช H และลงนามผลลัพธ์ของ H(M) ด้วยคีย์ส่วนตัว จะเป็นอย่างไรถ้าแทนที่จะใช้ฟังก์ชันแฮช H เราจะใช้ CMAC ด้วยคีย์ K แล้วเซ็นชื่อผลลัพธ์ของ CMAC(M, K) ด้วยคีย์ส่วนตัว การดำเนินการดังกล่าวมีความปลอดภัยในการเข้ารหัสหรือไม่? ถ้าเป็นเช่นนั้น คีย์ K จำเป็นต้องเก็บเป็นความลับหรือไม่?

ฉันมีอุปกรณ์ที่มีตัวเร่งฮาร์ดแวร์สำหรับ AES-CMAC และสงสัยว่าฉันจะใช้มันได้หรือไม่ แทนที่จะใช้อัลกอริทึมการแฮชในซอฟต์แวร์

kelalaka avatar
in flag
ยินดีต้อนรับสู่ Cryptography.SE. การแฮชแล้วการเซ็นชื่อจะเร็วขึ้นมาก คุณสามารถค้นหาการใช้งานมากมายสำหรับฟังก์ชันแฮชที่ดี อัลกอริทึมลายเซ็นดิจิทัลของคุณคืออะไร? โดยปกติแล้วจะมาพร้อมกับฟังก์ชันแฮช คุณกำลังใช้ลายเซ็นดิจิทัลด้วยตัวคุณเองหรือไม่? แล้วการโจมตีด้วยช่องทางด้านข้างล่ะ?
morsisko avatar
us flag
สวัสดี อัลกอริทึมลายเซ็นของฉันคือ ECDSA ฉันมีไมโครคอนโทรลเลอร์พร้อมตัวเร่งฮาร์ดแวร์ AES-CMAC ฉันกำลังใช้งานลายเซ็นดิจิทัลแบบโอเพ่นซอร์สของ ECDSA ที่จัดทำโดยโครงการ micro-ecc ฉันรู้ว่าฉันสามารถใช้อัลกอริทึมการแฮชในซอฟต์แวร์ได้ แต่สงสัยว่าอะไรคือผลข้างเคียงของการใช้ CMAC แทนการแฮช
kelalaka avatar
in flag
คุณเข้ารหัสข้อความด้วยหรือไม่ แล้วอัลกอริทึมไหนล่ะ?
morsisko avatar
us flag
ไม่ ข้อความไม่ได้เข้ารหัส ในความเป็นจริงข้อความเป็นเนื้อหาของเฟิร์มแวร์ ระหว่างการบู๊ต อุปกรณ์จะคำนวณแฮช/cmac ของเฟิร์มแวร์ จากนั้นตรวจสอบว่าลายเซ็น ECDSA ที่สร้างขึ้นแบบออฟไลน์ (บนคอมพิวเตอร์) นั้นถูกต้องสำหรับเฟิร์มแวร์ปัจจุบันโดยใช้คีย์สาธารณะที่ฝังไว้หรือไม่
Score:5
ธง my

จะเป็นอย่างไรถ้าแทนที่จะใช้ฟังก์ชันแฮช H เราจะใช้ CMAC ด้วยคีย์ K แล้วเซ็นชื่อผลลัพธ์ของ CMAC(M, K) ด้วยคีย์ส่วนตัว การดำเนินการดังกล่าวมีความปลอดภัยในการเข้ารหัสหรือไม่?

ถ้า $K$ ใช้สำหรับลายเซ็นเฉพาะเป็นแบบสาธารณะ (ซึ่งจะต้องมีการตรวจสอบลายเซ็นโดยผู้ที่ถือรหัสสาธารณะและลายเซ็นและไม่มีอะไรเป็นความลับ) จากนั้นจึงง่ายต่อการค้นหาข้อความที่สอง $M'$ ดังนั้น $\text{CMAC}(M, K) = \text{CMAC}(M', K)$; นั่นคือลายเซ็นจะตรวจสอบกับข้อความที่สองนั้นด้วย $M'$.

ในความเป็นจริงผู้โจมตีจะมีความยืดหยุ่นอย่างมากในการเลือกสิ่งนั้น $M'$; เขาสามารถระบุทั้งหมด $M'$ ข้อความยกเว้นบล็อกจัดตำแหน่ง 16 ไบต์ที่ใดก็ได้ในข้อความนั้น - จากนั้นเขาสามารถคำนวณได้อย่างมีประสิทธิภาพว่าค่า 16 ไบต์ต้องเป็นเท่าใด ที่ให้เขาทั้งหมด $M'$.

ในทางกลับกัน ถ้า $K$ เป็นความลับ ข้างต้นใช้ไม่ได้ แน่นอน นั่นทำให้เกิดคำถามที่ชัดเจน: หากผู้ลงนามและผู้ตรวจสอบเปิดเผยความลับร่วมกัน (และคุณวางใจได้ว่าผู้ตรวจสอบจะไม่พยายามสร้างการปลอมแปลง) ทำไมคุณไม่ใช้ CMAC และไม่ต้องกังวลกับการดำเนินการลงนาม ?

morsisko avatar
us flag
ขอบคุณสำหรับคำตอบ. การโจมตีดังกล่าวมีชื่ออ่านเพิ่มเติมเกี่ยวกับเรื่องนี้หรือไม่? ฉันคิดว่าการค้นหาการชนกันของ CMAC ด้วยคีย์ที่รู้จักนั้นไม่ง่ายไปกว่าการค้นหาการชนกันของฟังก์ชันแฮช
poncho avatar
my flag
@morsisko: คุณอ่านมาจากไหน ฉันไม่รู้ว่าการโจมตีมีชื่อหรือไม่ - มันง่ายมาก ฉันไม่รู้ว่ามีใครรบกวนที่จะตั้งชื่อมันไหม สิ่งที่ผู้โจมตีต้องทำคือคำนวณ CMAC ไปข้างหน้าจนถึงบล็อกที่ไม่ได้ระบุ (ซึ่งเป็นเรื่องง่ายถ้าคุณรู้ k) และคำนวณย้อนกลับจากค่าเป้าหมายจนถึงบล็อกที่ไม่ได้ระบุ (อีกครั้ง ง่ายถ้าคุณรู้ว่า k และ CMAC อิงตาม การเข้ารหัสบล็อกแบบพลิกกลับได้) - xor ของค่าสถานะสองค่าในสองทิศทางคือค่าที่บล็อกที่ไม่ระบุต้องเป็น
morsisko avatar
us flag
ขอบคุณ. ตอนนี้ฉันเข้าใจแล้ว

โพสต์คำตอบ

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