Score:1

เข้ารหัสข้อความสั้นเป็นสตริงสั้นแบบอสมมาตร

ธง cn

ฉันมีสตริงที่มีขนาด < 32 อักขระจากชุดอักขระจำกัดต่อไปนี้

  • ตัวอักษรละตินตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก: A ถึง Z และ a ถึง z
  • ตัวเลข: 0 ถึง 9
  • ตัวอักษรพิเศษ: !#$%&'*+-/=?^_`{|}~

ฉันต้องการเข้ารหัสสตริงนี้ด้วยรหัสสาธารณะ โดยที่ข้อความผลลัพธ์คือ < 64 อักขระ

ฉันเข้าใจว่าจะมีการแลกเปลี่ยนระหว่างขนาดและความปลอดภัย

kelalaka avatar
in flag
[การเข้ารหัส ECC Elgamal](https://crypto.stackexchange.com/a/9990/18298) หากคุณทนกับ [การเข้ารหัสข้อความ](https://crypto.stackexchange.com/q/76340/18298)
Score:2
ธง my

ฉันต้องการเข้ารหัสสตริงนี้ด้วยรหัสสาธารณะ โดยที่ข้อความผลลัพธ์คือ < 64 อักขระ

ที่จริงแล้ว ดูเหมือนว่าคุณสามารถทำได้ หากคุณลดความปลอดภัยลงเล็กน้อย

แนวทางหนึ่งที่จะใช้ ECIES ด้วยพูด P-192 (EC-Elgamal ก็ใช้ได้เหมือนกัน - ฉันคิดว่านี่เป็นแนวทางที่เหนือกว่า)

ในรูปแบบนี้ คีย์ส่วนตัวเป็นค่าสุ่ม $r$และคีย์สาธารณะคือค่า $P = rG$, ที่ไหน $G$ เป็นจุดกำเนิด ในการเข้ารหัส เราเลือกค่าแบบสุ่ม $s$และคำนวณทั้งสองอย่าง $sG$ และ $sP$; เราส่งจุด $sP$ (หรือในกรณีของคุณ ให้ใช้เพียงพิกัด x) ผ่าน Key Derivation Function ซึ่งสร้างคีย์ที่เราใช้ในการเข้ารหัสข้อความจริง ไซเฟอร์เท็กซ์ประกอบด้วยค่า $sG$ (ในกรณีของคุณ แค่พิกัด x) และการเข้ารหัสแบบสมมาตร

ทีนี้ ถ้าเราใช้เส้นโค้ง P-192 พิกัด x ของ $sG$ สามารถแสดงเป็น 192 บิต; โดยใช้ตัวอักษรที่เราได้รับ (ซึ่งมี 81 สัญลักษณ์) ซึ่งจะต้องใช้ 31 ตัวอักษร (เช่น โดยการแปลงค่าจาก 0 เป็น circa $2^{192}$ เข้าฐาน 81)

สำหรับการเข้ารหัสแบบสมมาตรของข้อความ เราสามารถใช้วิธีการเข้ารหัสแบบรักษารูปแบบ [1]; สิ่งนี้สามารถแปลงข้อความที่ประกอบด้วยตัวอักษร 81 สัญลักษณ์เป็นข้อความรหัสที่มีตัวอักษรและความยาวเท่ากัน

ดังนั้น การเข้ารหัส 31 สัญลักษณ์ (ที่ใหญ่ที่สุดที่คุณบอกว่าคุณสนใจ) จะเข้ารหัสเป็นข้อความ 31+31 = 62 สัญลักษณ์ - ภายในข้อกำหนดของคุณ

ค่ารักษาความปลอดภัย:

  • P-192 มี "ความปลอดภัย 96 บิต"; ซึ่งค่อนข้างน้อยกว่าที่เราใช้ตามปกติ อย่างไรก็ตาม ก็ยังค่อนข้างดี

  • เรารั่วไหลของความยาวของข้อความ (เนื่องจากวิธีการเข้ารหัสที่รักษารูปแบบจะรักษาความยาวไว้) หากเป็นข้อกำหนดเพิ่มเติม คุณสามารถแพดข้อความเป็น 32 ไบต์ได้เสมอ (โดยอักขระตัวสุดท้ายระบุความยาวจริงของข้อความ) ด้วยวิธีนี้ เรายังคงปฏิบัติตามข้อกำหนดด้านความยาว


[1]: โดยปกติ เมื่อใช้ ECIES เราจะใช้การแปลงความสมบูรณ์อย่างชัดเจนในการเข้ารหัสแบบสมมาตร ฉันจะยืนยันว่าไม่จำเป็นในกรณีนี้ - การแก้ไขใด ๆ ของ FPE จะถอดรหัสเป็นบางอย่างแบบสุ่ม และฝ่ายตรงข้ามสามารถแทนที่ข้อความเข้ารหัสด้วยบางสิ่งที่ถอดรหัสเป็นบางอย่างแบบสุ่ม (โดยง่ายในการเลือกข้อความธรรมดาแบบสุ่มและเข้ารหัสมัน ด้วยรหัสสาธารณะ)

cn flag
ดูเหมือนว่า ElGamal สามารถใช้กับ P-192 (ไม่ใช่ไพรม์หรืออาจจะเป็น P-191?) เพื่อเข้ารหัสข้อความของฉัน ซึ่งฉันสามารถถอดรหัสได้ในภายหลังด้วยคีย์ส่วนตัว ฉันกำลังดูตัวอย่างนี้ https://cryptographyacademy.com/elgamal/ เหตุใดจึงต้องใช้พิกัด x ตามที่คุณพูดเท่านั้น นอกจากนี้การเข้ารหัสการรักษารูปแบบสมมาตรเข้ามามีบทบาทที่นี่ที่ไหน
poncho avatar
my flag
@Xavier: ฉันมองไปที่ ElGamal; การทำให้ทุกอย่างพอดีกับข้อจำกัดที่คุณมีนั้นยุ่งยาก (ขนาดเส้นโค้งต้องใหญ่พอที่คุณจะเข้ารหัสสตริงได้ บวกกับความแปรปรวนที่จำเป็นเพื่อให้ได้พิกัดที่ถูกต้อง ในทางกลับกัน ต้องไม่ใหญ่เกินไป หรือขนาดไซเฟอร์เท็กซ์เกินขีดจำกัด
poncho avatar
my flag
สำหรับที่มาของรหัสสมมาตรนั้นใช้ในการเข้ารหัสข้อความธรรมดาจริง (ในขณะที่ค่า $sG$ ใช้เพื่อสื่อสารข้อความรหัสสมมาตร) ดังนั้นสิ่งที่ตัวถอดรหัสทำคือแยกค่า $sG$ (เลือกหนึ่งในสองพิกัด $y$ โดยพลการ) คำนวณ $r(sG)$ (ซึ่งมีพิกัด $x$ เดียวกันกับค่า $rP$ ของตัวเข้ารหัส แปลงให้เป็นคีย์สมมาตร (โดยใช้ kdf) จากนั้นทำการถอดรหัสสมมาตร ฉันขอแนะนำอัลกอริทึมสมมาตร FPE เพื่อลดขนาดไซเฟอร์เท็กซ์...
poncho avatar
my flag
สำหรับสาเหตุที่คุณต้องการแค่พิกัด x นั้น พิกัด x ของ $r(sG)$ ขึ้นอยู่กับพิกัด x ของ $sG$ เท่านั้น ดังนั้นในการถอดรหัส เราสามารถแปลง x-coordinate ภายใน ciphertext กลับเป็น $P$ เต็ม (โดยเลือกหนึ่งในสองความเป็นไปได้โดยพลการ - ไม่สำคัญว่าอันที่เราเลือกจะเหมือนกับอันที่ตัวเข้ารหัสมีหรือไม่ ). ฉันคิดว่าคุณสามารถใช้การบีบอัดจุดเพื่อส่งค่า $sG$ ทั้งหมด - อย่างไรก็ตาม ไม่จำเป็น (และนั่นคือบิตทั้งหมด - เรากำลังทำงานใกล้พอที่จะจำกัดขนาดซึ่งเป็นเรื่องที่ไม่สำคัญ)
poncho avatar
my flag
@Xavier: นอกจากนี้ เมื่อเราพูดว่า "P-192" ฉันกำลังพูดถึงเส้นโค้งวงรีที่เฉพาะเจาะจงซึ่งมีขนาดฟิลด์ (และลำดับกลุ่ม) ประมาณ $2^{192}$ - มันใช้ฟิลด์เฉพาะ ดังนั้น ไม่สำคัญว่า 192 จะเป็นนายกหรือไม่ เรียกอีกอย่างว่า secp192r1 (ตามที่กำหนดไว้ใน https://www.secg.org/SEC2-Ver-1.0.pdf)
cn flag
ขอบคุณสำหรับการชี้แจงด้วยความสัตย์จริง ทั้งหมดนี้อยู่เหนือหัวของฉันเล็กน้อย คุณทราบตัวอย่างที่ดีของการนำ ECIES ไปใช้โดยใช้เส้นโค้ง secp192r1 หรือไม่
poncho avatar
my flag
@Xavier: google ฉบับย่อพบ https://github.com/insanum/ecies - ใช้ OpenSSL (และแม้ว่าจะไม่เฉพาะเจาะจงกับ P-192 แต่ OpenSSL รองรับเส้นโค้งนั้น) โปรดทราบว่าข้อกำหนดของคุณค่อนข้างเฉพาะเจาะจง - การแปลงรหัสนั้นเป็นสิ่งที่ตรงกับความต้องการของคุณจะใช้เวลาสักหน่อย
cn flag
ขอบคุณสำหรับความช่วยเหลือทั้งหมด ฉันมีการดำเนินการตามการออกแบบของคุณ ฉันพบว่า[ตัวอย่าง](https://asecuritysite.com/ecc/ecc3)มีประโยชน์ในการเข้าใจ ECIES ปัญหาเดียวของฉันตอนนี้คือการหาวิธีส่งผ่านค่า x และแก้ปัญหาสำหรับจุดทั้งหมดเมื่อถอดรหัสเท่านั้น ความเข้าใจของฉันได้รับ x ฉันจะแก้ปัญหาสำหรับ y ในเส้นโค้งวงรีจากula `y^2 = x^3 + ax + b` ดูที่เส้นโค้ง [secp192r1](https://neuromancer.sk/std/secg/secp192r1) เมื่อฉันแก้ปัญหาสำหรับ `y` ตัวอย่างการใช้งานด้านบนยืนยันว่าจุดไม่ได้อยู่บนเส้นโค้ง

โพสต์คำตอบ

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