เรากำลังดำเนินการคำนวณทั้งหมดสำหรับลายเซ็น Schnorr, EC-FSDSA, (BIP340-Schnorr) ที่แม่นยำยิ่งขึ้นภายในองค์ประกอบที่ปลอดภัย ยกเว้นการดำเนินการแฮชที่ไม่ได้รับการสนับสนุนและต้องดำเนินการนอกองค์ประกอบความปลอดภัย .
สมมติว่าลายเซ็นเป็นดังนี้:
d=รหัสส่วนตัว
R = k.G = Q (คีย์สุ่มเฉพาะ, TRNG ที่มาจากองค์ประกอบที่ปลอดภัย, ใช้ได้เพียงครั้งเดียว) และ
ส = เค + ง . H( Q | P | M )
ขั้นตอนจะเป็นดังต่อไปนี้:
- สร้างและรับ Q และรับ Q และ P เป็นเอาต์พุตจากองค์ประกอบที่ปลอดภัย
- คำนวณและฉีดซ้ำ H(Q | P | M) ในองค์ประกอบที่ปลอดภัย
- จบและส่งออก S = k + d . H( Q | P | M )
สมมติว่าองค์ประกอบที่ปลอดภัยทำหน้าที่เป็น oracle และผู้โจมตีสามารถฉีด H( Q | P | M ) = "1" และแยก k + d (ไม่สามารถฉีด H( Q | P | M ) = "0" ด้วยเหมือนกัน k มันเปลี่ยนแปลงตลอดเวลา) โดยไม่มีข้อจำกัด d จะเปราะบางหรือไม่ ? มีใครอ่านการอภิปรายในหัวข้อนั้นบ้างไหม?
เพื่อความชัดเจน โปรดทราบว่าเป้าหมายของเราคือการประเมินความเป็นไปได้ในการเดาคีย์ส่วนตัว (d) ซึ่งซ่อนอยู่ในองค์ประกอบที่ปลอดภัย โดยมีความเป็นไปได้ไม่จำกัดในการคำนวณ S=k + d*(any_integer_you_choose) องค์ประกอบที่ปลอดภัยสามารถทำการคูณแบบสเกลาร์เท่านั้น สร้างการสุ่มหลอก (k) แต่น่าเสียดายที่ฟังก์ชันแฮชบางอย่างไม่เฉพาะเจาะจง ดังนั้นจึงต้องคำนวณภายนอกและฉีดเข้าไปใหม่ จึงอาจเปิดช่องโหว่ได้
สำหรับแบบฝึกหัดนี้ เราถือว่าองค์ประกอบที่ปลอดภัยซึ่งซ่อน (d) สามารถคำนวณ S ได้ไม่จำกัดไม่ว่า (H) จะเป็นเท่าใดก็ตาม และอยู่ในมือของผู้โจมตีที่สามารถเข้าถึงการคำนวณการเข้ารหัสบน S= k + d ได้อย่างเต็มที่H. ผู้โจมตีไม่สามารถควบคุม k ซึ่งสร้างขึ้นภายในองค์ประกอบที่ปลอดภัย ใช้เพียงครั้งเดียว และถูกซ่อนไว้ตลอดเวลา ในทางกลับกัน ผู้โจมตีสามารถเพิกเฉย (Q | P | M) และสามารถเลือก (H) ใดก็ได้เพื่อส่งไปยังองค์ประกอบที่ปลอดภัยเพื่อคำนวณ S= k+d.H จึงเลือก H=0,1,2,3.. ตัวอย่างเช่น และรับ S1=k1+d1, S2=k2+d*2 เป็นต้น.....ในทางกลับกัน โดยไม่มีข้อจำกัดในการลอง แม้ว่าจะถูกทำให้สับสนโดย k แบบสุ่มที่แตกต่างกันเสมอ แต่นั่นจะช่วยให้คุณเดา (ง) ได้หรือไม่....
(คุณสามารถถามว่า: หากผู้โจมตีสามารถเข้าถึงการคำนวณบน (d) ก็เหมือนมี (d) ก็ไม่เชิงว่าผู้โจมตีสามารถแยกข้อมูล (d) อย่างลับๆ และรอกรณีการใช้งานในภายหลัง)