ฉันไม่ชัดเจน (โดยไม่เห็นรหัสของคุณ) ว่าปัญหาปัจจุบันของคุณคืออะไร
เมื่อมองผ่านกระดาษ ฉันเห็น (ตัวอย่างในรูปที่ 1):
(วัตถุโดยพลการ) $c_1,\จุด,c_v$ และ $s_1,\จุด,s_v$
กัญชา ของวัตถุเหล่านี้ซึ่งเขียนขึ้น $hc_i = H(c_i)$ และ $hs_i = H(s_i)$ (ขึ้นอยู่กับการเรียงสับเปลี่ยนที่ใช้กับ $s_i$).
การดำเนินการที่เหลือทั้งหมดอยู่ในเงื่อนไขของ $hc_i$ และ $hs_i$ซึ่งดูเหมือนจะเป็น (จากบริบท) ใน $\mathbb{Z}_p^*$เช่น เลขคณิตเป็นมาตรฐาน (แม้ว่าคุณจะต้องเลือก $p$ ใหญ่พอที่จะทำให้โจทย์ลอการิทึมไม่ต่อเนื่องนั้นยาก เป็นต้น $\gg 1,000$ บิต โดยเฉพาะอย่างยิ่ง คุณน่าจะใช้ bigints มากกว่า u64
ฉันอ่านไม่ละเอียดพอที่จะรู้ว่าพวกเขากำลังสันนิษฐานถึงความแข็งของสมมติฐานประเภท DL ใน $\mathbb{Z}_p^*$ แม้ว่า).
เมื่อสแกนผ่านตัวเลขอื่นๆ ฉันเห็นเรื่องราวที่คล้ายกัน นั่นคือเลขคณิตทั้งหมดทำบนองค์ประกอบแฮชของ $\mathbb{Z}_p^*$แทนที่จะเป็นการทดสอบโดยพลการใน $\{0,1\}^*$.
ฉันไม่เห็นตัวอย่างเฉพาะของคุณ:
$$1â¤iâ¤v:a_i'=(a_i)^{Râ²_s}$$
ว่าเป็นประเด็นตัวอย่างเช่น สิ่งนี้ดูเหมือนจะเกิดขึ้นในรูปที่ 4 ซึ่งก่อนหน้านี้ฉันเห็น $a_i = (hs_i)^{R_s'}$.
ในรูปนี้ฉันไม่เห็นคำจำกัดความ $hs_i = H(s_i)$และฉันแค่อ่านคร่าวๆ เท่านั้น แต่เป็นไปได้ว่าการตีความนี้กำลังถูกสันนิษฐาน เช่น $hs_i$ คือ กัญชา ของการทดสอบโดยพลการ $s_i$และบรรจุอยู่ใน $\mathbb{Z}_p^*$ (ค่อนข้างมากกว่า $\{0,1\}^*$).
คำตอบทั่วไปของ
ฉันเพียงแค่ดำเนินการเดียวกันนี้สำหรับทุกไบต์ในฟิลด์?
จะเป็น "ไม่" (เว้นแต่มีบางอย่างบอกให้ทำสิ่งนี้โดยเฉพาะ) โดยทั่วไปแล้ว โปรโตคอลการเข้ารหัสจะทำงานบนวัตถุทางคณิตศาสตร์ที่กำหนดไว้อย่างดี (เช่น bit strings in $\{0,1\}^*$) และการ "ตัดทอนสิ่งเหล่านี้" เพื่อพยายามบังคับให้สิ่งต่างๆ ทำงาน (เมื่อไม่ได้ระบุให้เป็นส่วนหนึ่งของโปรโตคอล) อาจนำไปสู่ปัญหาด้านความปลอดภัยได้อย่างง่ายดาย