นี่คือแนวคิดที่จะตอบสนองความต้องการที่ระบุไว้ทั้งหมดของคุณ ตอนนี้ไม่เป็นไปตามข้อกำหนดการเข้ารหัสที่สมเหตุสมผลอื่นๆ แต่คุณไม่เคยขอพวกเขา
นี่คือแนวคิด: เราทำงานในกลุ่ม Elliptic Curve ที่มีขนาดเหมาะสม (เช่น P224) ด้วยขนาดกลุ่ม $คิว$ (ซึ่งเป็นจำนวนเฉพาะ) และเลือกเครื่องกำเนิดไฟฟ้าสามเครื่อง $F, G, H$ (ด้วยความสัมพันธ์ที่ไม่รู้จัก; อาจสร้างขึ้นโดยใช้เมธอด Hash2Curve); และ:
$$f(X) = F + X$$
$$g(X) = G + X$$
$$h(X) = H + X$$
เห็นได้ชัดว่าการดำเนินการเหล่านี้เดินทางและเรามี $f^i(g^j(h^k(X))) = iF + jG + kH + X$.
ทำตามข้อกำหนดของคุณ:
ถ้าตอนนี้ $f,g,h$, นำไปใช้ $i,j,k$- ครั้งในการป้อนข้อมูล $x$ ค้นหา/คำนวณ $x$ สำหรับ $c = f^i(g^j(h^k(x)))$ ควรจะหนักที่สุดเท่าที่จะเป็นไปได้และใช้เวลามากกว่านี้ $O(|i|+|j|+|k|)$ ขั้นตอน
ฉันคิดว่าในข้อกำหนดนี้ ผู้โจมตีไม่ทราบค่าของ $i, j, k$ (เขารู้ช่วงสัมพัทธ์). ในกรณีนั้น การค้นหาที่ดีที่สุดที่ฉันสามารถหาได้เพื่อยืนยันค่า $ค$ ใช้เวลา $O( \sqrt{i \cdot j \cdot k } )$ เวลา (สมมติ $i \cdot j \cdot k < q$, อย่างชัดเจน); นี้มีขนาดใหญ่กว่า $O(i + j + k)$. การค้นหานี้ทำโดยการ $0F, 1F, ..., iF$, $0G, 1G, ..., jG$, $0H, 1H, ..., kG$แบ่งพวกเขาออกเป็นสองรายการโดยที่ผลรวมของสามรายการใดๆ ในสามรายการสามารถแสดงเป็นผลรวมของสองถ้ารายการอยู่ในรายการ จากนั้นใช้อัลกอริทึมสไตล์ 'ก้าวใหญ่/ก้าวน้อย'
นอกจากนี้วิธีการ $f,g,h$ กำลังรักษารูปแบบ: $X \ลูกศรขวา X$ดังนั้นทุกเอาต์พุตสามารถทำหน้าที่เป็นอินพุตใหม่ได้
ตราบใดที่คุณใจเย็น $X$ เป็นเซตของจุดโค้งวงรี เราทำได้ดีตรงนี้
ขนาดสูงสุดควรเป็น: $|X|<2^{256}$
ด้วย P-224 นี่เป็นเรื่องจริง
คอมพิวเตอร์ $f,g,h$ และการผกผันต้องใช้เวลาใกล้เคียงกันสำหรับแต่ละอินพุต (ไม่ขึ้นกับ $i,j,k$).
เราสบายดีที่นี่
นอกจากนี้ $f,g,h$ ต้องเกิดวงจรเช่น $f(f(....f(x)...))=x$ ด้วยขนาด $F,G,H$ กับ $F \ประมาณ G \ประมาณ H \gg 1$
จริง; $f, g, h$ ทั้งหมดมีการสั่งซื้อ $คิว$ซึ่งมากกว่า 1 มาก
คุณสามารถเลือกช่วงได้อย่างง่ายดาย $i, j, k$ เพื่อให้เป็นไปตามเป้าหมายการรักษาความปลอดภัย
ทีนี้ สิ่งหนึ่งที่ความคิดนี้ไม่มีให้ก็คือ $c, x$ กับ $c = f^i(g^j(h^k(x)))$มันเป็นเรื่องเล็กน้อยในการคำนวณ $c' = f^i(g^j(h^k(x')))$. แต่คุณไม่เคยถามว่ายาก...