Score:2

ลายเซ็นจากการเข้ารหัสแบบอสมมาตร

ธง in

อนุญาต $(K_{enc},K_{ธันวาคม})$ เป็นคู่กุญแจที่ไม่สมมาตร สำหรับฉันแล้วดูเหมือนว่าสามารถสร้างรูปแบบลายเซ็นได้โดยให้รหัสยืนยันสาธารณะ $K_{ver}=K_{ธันวาคม}$ (คีย์ถอดรหัสแบบอสมมาตร) และคีย์การเซ็นชื่อแบบลับ $K_{sign}=K_{enc}$ (คีย์เข้ารหัสแบบอสมมาตร) พูดด้วย $H$ ฟังก์ชันแฮชและ $m$ ที่จะลงนาม: $$ s=\texttt{sign}(m,K_{sign})=\texttt{เข้ารหัส}(H(m),K_{enc}) $$ $$ \texttt{verify}(s,m,K_{ver})=\left\{ \begin{อาร์เรย์}{cc} \text{True }&\text{if } H(m)=\texttt{decrypt}(s,K_{dec})\ \text{เท็จ}&\text{else} \end{อาร์เรย์} \ขวา. $$ กล่าวอีกนัยหนึ่ง หนึ่งลงนามโดยการเข้ารหัส (แฮชของ) เอกสาร และทุกคนสามารถตรวจสอบได้โดยการถอดรหัส (และแฮช)

NB บทบาทสาธารณะ/ส่วนตัวของคีย์กำลังถูกย้อนกลับระหว่างแอปพลิเคชัน! $K_{sign}=K_{enc}$ ถูกเก็บไว้เป็นส่วนตัว (ลืมไปว่ามันจะถูกเปิดเผยเป็นคีย์เข้ารหัส) และ $K_{ver}=K_{ธันวาคม}$ ถูกเปิดเผยต่อสาธารณะ (ลืมไปว่ามันจะเป็นคีย์ส่วนตัวในการถอดรหัส)

หากเป็นกรณีนี้ เหตุใดจึงพัฒนารูปแบบลายเซ็นแยกต่างหากแทนที่จะใช้รูปแบบคีย์สาธารณะซ้ำ ดูเหมือนจะเป็นการเสียเปล่าที่จะไม่ปรับเปลี่ยน PKC แผนลายเซ็นเฉพาะนั้นมีประสิทธิภาพมากกว่าหรือไม่?

ถ้าไม่เป็นแบบนี้จะเกิดอะไรขึ้น?


ปัญหาหนึ่งที่ระบุไว้ในความคิดเห็นเกิดขึ้นเมื่อ $K_{ธันวาคม}$ เผยข้อมูลเกี่ยวกับ $K_{enc}$. สิ่งนี้เกิดขึ้นอย่างแน่นอนในบางโครงร่าง (ส่วนใหญ่) เช่นเมื่อคีย์เข้ารหัสเป็นคีย์ถอดรหัสเวอร์ชันที่สับสน แต่ไม่ใช่ทั้งหมด การป้องกันสิ่งนี้คือการออกแบบรูปแบบลายเซ็น ("การถอดรหัสคีย์สาธารณะ") ไม่มากก็น้อย ทำให้คำถามของฉันไม่น่าสนใจ

ตัวอย่างที่ชัดเจนเพียงอย่างเดียวที่อยู่ในใจคือลายเซ็น RSA ซึ่งความสมมาตรระหว่างเลขชี้กำลังการเข้ารหัส/ถอดรหัสทำให้เป็นไปได้

knaccc avatar
es flag
ใน EC crypto คีย์สาธารณะ $K_{enc}$ สามารถได้รับเล็กน้อยจากคีย์ส่วนตัว $K_{dec}$ ดังนั้น หากคุณเผยแพร่ $K_{dec}$ ต่อสาธารณะ สาธารณชนสามารถระบุ $K_{enc}$ ของคุณได้ และ "ลายเซ็น" ของคุณจะถูกปลอมแปลงได้
poncho avatar
my flag
หากเราเข้าใจผิดบางอย่าง อาจเป็นประโยชน์หากคุณใช้อัลกอริทึมการเข้ารหัสคีย์สาธารณะ (นอกเหนือจาก RSA) และเขียนสิ่งที่คุณเสนอ...
fgrieu avatar
ng flag
ฉันขอแนะนำให้เปลี่ยนชื่อคำถามเป็น “ลายเซ็นจากการเข้ารหัสแบบอสมมาตร” เนื่องจากลายเซ็น (ดิจิทัล) ถือเป็นส่วนหนึ่งของการเข้ารหัสแบบอสมมาตร
Score:6
ธง ng

ดี

วิธีการในคำถามนำไปสู่ระบบลายเซ็นที่ตรวจสอบข้อความที่ลงนามสำเร็จเสมอ และมีการรวมกันของโครงร่างการเข้ารหัสแบบอสมมาตรและแฮชที่ระบบลายเซ็นนั้นตรงตาม คุณสมบัติความปลอดภัย EUF-CMA, รวมทั้ง:

  • RSAES-สศอ ใกล้เคียงกับที่ปฏิบัติ และแฮชการเข้ารหัสมาตรฐาน เช่น SHA-256 จำเป็นต้องมีการปรับแต่งสองครั้งในส่วน RSA แม้ว่า:
    • การเลือก $e$ สุ่มและมีขนาดบิตใหญ่ (ครึ่งหนึ่งของขนาดบิตของ $n$ ดูเหมือนตกลง) มากกว่า $e=65537$ ทั่วไป (หรือค่าอื่นที่คาดเดาได้ต่ำกว่า หรือสุ่มแต่ต่ำเกินไปสำหรับความปลอดภัย¹ ของวิธีการของคำถาม)

    • แสดงคีย์ถอดรหัส $K_{ธันวาคม}$ เช่น $(น,ง)$ แทนที่จะเป็นแบบปกติ $(n,e,d,p,q,d_p,d_q,q_\text{Inv})$ใช้โดยการใช้งานมาตรฐานที่ดูแลประสิทธิภาพ

      การเปลี่ยนแปลงทั้งสองจำเป็นต้องเก็บไว้ $e$ ของ $K_{enc}=(n,e)$ ความลับเมื่อเราทำ $K_{dec}=(n,d)$ สาธารณะดังคำถาม

  • การเข้ารหัส RSA เช่นเดียวกับใน บทความต้นฉบับ ยกเว้นกับ $n$ ใหญ่พอที่จะต้านทานวิธีการแยกตัวประกอบสมัยใหม่² และแฮชที่ใหญ่กว่าด้านบนมากพอที่จะต้านทาน Desmedt และ Odlyzko โจมตี.

ที่ไม่ดี

วิธีนี้ไม่ปลอดภัยเมื่อใช้กับระบบเข้ารหัสแบบอสมมาตรส่วนใหญ่

สังเกตสิ่งนั้น $K_{ธันวาคม}$ ต้องเปิดเผยต่อสาธารณะเนื่องจากเป็นรหัสยืนยัน และ $K_{enc}$ ต้องเก็บเป็นความลับเนื่องจากเป็นกุญแจสำคัญในการลงนาม ดังนั้นความสัมพันธ์ระหว่างคีย์ทั้งสองจะต้องเป็นเช่นนั้น เราสามารถทำได้ $K_{ธันวาคม}$ สาธารณะในขณะที่รักษาความลับของ $K_{enc}$. RSA เป็นแบบแผนการเข้ารหัสตระกูลเดียวที่ฉันรู้จักดีที่สามารถมีคุณสมบัตินั้นได้ (และตามที่อธิบายไว้ข้างต้น การใช้งานจริงไม่มี)

สำหรับระบบการเข้ารหัสแบบอสมมาตรหลายระบบ ไม่สามารถใช้พร็อพเพอร์ตี้นี้ได้ ตัวอย่างเช่นใน เอลกามาล และเป็นลูกหลานสมัยใหม่ ECIES, $K_{ธันวาคม}$ เป็นจำนวนเต็มที่เข้ารหัสวิธีเข้าถึงองค์ประกอบกลุ่ม $K_{enc}$ โดยใช้กฎหมายกลุ่มภายในกับองค์ประกอบกลุ่มสาธารณะบางอย่าง จึงเปิดเผย $K_{ธันวาคม}$ เผยให้เห็นอย่างหลีกเลี่ยงไม่ได้ $K_{enc}$ทำลายความปลอดภัยของการก่อสร้างคำถาม

โดยทั่วไป การใช้ระบบเข้ารหัสแบบอสมมาตรที่ปลอดภัยและแฮชที่ปลอดภัยไม่ใช่ข้อบ่งชี้ที่ดีว่าระบบลายเซ็นที่ได้รับจากวิธีการของคำถามนั้นปลอดภัย ด้วยเหตุผลหลายประการ

เมื่อเราพิจารณาถึงความปลอดภัยของการใช้งาน มีปัญหาเพิ่มเติม: การใช้งานของ $\texttt{เข้ารหัส}$ ไม่ต้องการการป้องกันการรั่วไหลของช่องด้านข้างของอินพุตคีย์ เนื่องจากโดยปกติแล้วจะเป็นสาธารณะ อย่างไรก็ตาม การป้องกันดังกล่าวจำเป็นสำหรับระบบลายเซ็นของคำถาม

วิธีการนี้มีแนวโน้มที่จะสร้างรูปแบบลายเซ็นที่มีลักษณะต่ำกว่ามาตรฐาน

การเปรียบเทียบลายเซ็น RSA (รวมถึงวิธีการของคำถาม) กับ EdDSA ที่ระดับความปลอดภัยมาตรฐาน:

  • ลายเซ็นมีขนาดค่อนข้างใหญ่ (256 ไบต์เทียบกับ 64 ไบต์)
  • รหัสสาธารณะมีขนาดใหญ่ (โดยทั่วไปคือ 260 ไบต์เทียบกับ 32 ไบต์)
  • การสร้างลายเซ็นช้า (ช้ากว่าหลายสิบเท่า)
  • การสร้างคีย์นั้นช้าอย่างเจ็บปวด (ช้ากว่าหลายร้อยเท่า)

และวิธีการนี้ไม่ใช่สิ่งที่ใช้ในการสร้างลายเซ็น RSA แม้แต่ลูกพี่ลูกน้องที่ใกล้ชิด RSA-FDH. ที่ใช้ฟังก์ชันคีย์ส่วนตัวของตำราเรียน RSA $h\mapsto s=h^d$ เพื่อลงนามแฮชแบบกว้าง $h=H(M)$; และฟังก์ชันคีย์สาธารณะของตำราเรียน RSA $s\mapsto h=s^e\bmod n$ ตามด้วยการเปรียบเทียบ $h\overset?=H(M)$ ในการตรวจสอบ ตรงกันข้ามกับวิธีการของคำถาม คีย์สาธารณะ $(น,อี)$ ยังคงเป็นสาธารณะและคีย์ส่วนตัว $(n,e,d,p,q,d_p,d_q,q_\text{Inv})$ ยังคงเป็นความลับ เมื่อเทียบกับที่หรือ RSASSA-PKCS1-v1_5 หรือ RSASSA-PSSวิธีการลงนามของคำถาม:

  • สัญญาณช้าลงเกือบสี่เท่าเนื่องจากไม่สามารถใช้ $(n,e,d,p,q,d_p,d_q,q_\text{Inv})$ แบบฟอร์มสำหรับ $K_{ธันวาคม}$
  • ตรวจสอบช้ากว่าร้อยถึงพันเท่าเพราะมันใช้ตัวเล็กไม่ได้ $e$.

เธ กับ $n$ ทราบ ถ้าอย่างใดอย่างหนึ่ง $e$ หรือ $d$ เป็นที่รู้จักและน้อยว่า $n^{0.292}$จากนั้นจะพบสิ่งอื่น ๆ ดู โบนห์และเดอร์ฟี. ดังนั้นขีดจำกัดตามธรรมเนียมคือ 256 บิต $e$ (เช่น สร้างขึ้นใน วิธีการสร้างคีย์ของ FIPS 186-4) เป็นสิ่งที่เปิดเผย $d$ อนุญาตให้ค้นหา $e$.

² คำแนะนำดั้งเดิม âนั่น $d$ ควรเลือกจากชุดที่ใหญ่พอที่ cryptanalyst ไม่สามารถค้นหาได้โดยการค้นหาโดยตรงâ แล้วคำนวณ $e$ จาก $d$ ไม่เพียงพอและได้รับอนุญาต ของวีเนอร์ จู่โจมต่อมาปรับปรุงโดย โบนห์และเดอร์ฟี. แต่การรักษา $d$ ความลับและการทำ $e$ สาธารณะเนื่องจากวิธีการของคำถามต้องการการแก้ไขปัญหานั้น

in flag
ฉันขอโทษหากฉันไม่ชัดเจน แต่ฉันเชื่อว่าคุณเข้าใจผิดคำถามของฉันในลักษณะเดียวกับ @poncho ฉันไม่ได้พยายามใส่คีย์การเข้ารหัส/ถอดรหัสแบบสุ่มเข้าไปในรูที่ไม่ถูกต้อง
fgrieu avatar
ng flag
@yoyo: ในถ้อยคำใหม่ ฉันยอมรับว่าคุณไม่ "ใส่คีย์การเข้ารหัส/ถอดรหัสแบบสุ่มเข้าไปในรูที่ไม่ถูกต้อง" ฉันแก้ไขคำตอบของฉัน
Score:5
ธง my

สำหรับฉันแล้วดูเหมือนว่าสามารถสร้างรูปแบบลายเซ็นได้โดยให้รหัสยืนยันสาธารณะ $sk$ และรหัสลับลงนามเป็น $pk$

ถ้าไม่เป็นแบบนี้จะเกิดอะไรขึ้น?

แนวคิดนี้ดูเหมือนจะเป็น "เราจะใช้กระบวนทัศน์ 'เข้ารหัสด้วยคีย์ 1 พื้นฐาน จากนั้นถอดรหัสด้วยคีย์ 2' ของการเข้ารหัสคีย์สาธารณะ เรียกคีย์ 1 เป็นคีย์ส่วนตัว คีย์ 2 เป็นคีย์สาธารณะ และ กะเทย เรามีระบบลายเซ็น".

อย่างไรก็ตาม หากเราเริ่มต้นด้วยระบบเข้ารหัสคีย์สาธารณะที่ปลอดภัย สิ่งนี้อาจไม่ได้รูปแบบลายเซ็นที่ปลอดภัย

fgrieu เริ่มต้นแล้วด้วยการคัดค้านซึ่งเป็นเรื่องธรรมดาที่สุดในแผนการเข้ารหัสคีย์สาธารณะแบบฟิลด์ ความรู้เกี่ยวกับคีย์ 2 (ซึ่งในรูปแบบลายเซ็นกลายเป็นคีย์สาธารณะ) อาจช่วยให้คุณสามารถอนุมานคีย์ 1 ได้ รูปแบบการบันทึกแบบไม่ต่อเนื่องหรือรูปแบบ ECC เกือบทั้งหมดจัดอยู่ในหมวดหมู่นี้

วิธีอื่นที่อาจล้มเหลว:

  • อาจเป็นไปได้ว่าเมื่อได้รับข้อความและลายเซ็นจำนวนมาก เราสามารถอนุมานคีย์ 1 ได้ รูปแบบลายเซ็นแบบขัดแตะจำนวนมากล้มเหลวด้วยเหตุผลนี้ ปรากฎว่าแต่ละลายเซ็นรั่วไหลของคีย์ส่วนตัว - เห็นได้ชัดว่าได้รับการแก้ไขด้วยรูปแบบลายเซ็นแบบตาข่ายในปัจจุบัน (เช่น Falcon และ Dilithium)

  • อาจเป็นไปได้ว่า ด้วยความรู้เรื่องข้อความธรรมดา 'ข้อความรหัส' จึงเปลี่ยนแปลงได้ นั่นคือเราสามารถแก้ไขข้อความเข้ารหัสเพื่อถอดรหัสเป็นข้อความธรรมดาอื่นได้ ClassicMcEliece (ผู้เข้ารอบ NIST รอบ 3) อยู่ในหมวดหมู่นี้

บรรทัดล่างสุด: คุณสมบัติของระบบเข้ารหัสคีย์สาธารณะที่ปลอดภัยไม่เพียงพอที่จะให้รูปแบบลายเซ็นที่ปลอดภัย หากมีใครเสนอรูปแบบลายเซ็นดังกล่าว จะต้องได้รับการตรวจสอบอย่างรอบคอบ (เช่นเดียวกับรูปแบบอื่นๆ)

in flag
ฉันไม่แนะนำให้ "เข้ารหัสด้วยคีย์ส่วนตัว" ฉันกำลังพูดว่า "เข้ารหัสด้วยคีย์สาธารณะ PKC" กำลังเซ็นชื่อ และ "ถอดรหัสด้วยคีย์ส่วนตัว PKC" กำลังตรวจสอบ (บทบาทสาธารณะ/ส่วนตัวของคีย์จะถูกสลับระหว่าง PKC และรูปแบบลายเซ็น)
poncho avatar
my flag
@yoyo: ดังนั้นใครก็ตามที่มีรหัสสาธารณะสามารถลงนามได้ แต่เฉพาะผู้ที่มีรหัสส่วนตัวเท่านั้นที่สามารถตรวจสอบได้" นั่นไม่เป็นไปตามความหมายมาตรฐานของการลงนาม...
in flag
@poncho ลืม public/private (มีการสลับบทบาทระหว่างแอปพลิเคชัน) ฉันใช้ถ้อยคำคำถามใหม่เพื่อหลีกเลี่ยงความสับสน
poncho avatar
my flag
@yoyo: ดูเหมือนว่าคำตอบของฉันจะเหมาะสม - ด้วยรูปแบบการเข้ารหัสคีย์สาธารณะปัจจุบันส่วนใหญ่ มันไม่สมเหตุสมผลเลยที่จะ 'เข้ารหัส' ด้วยคีย์ส่วนตัว (คีย์ที่คุณเก็บเป็นความลับ) และ 'ถอดรหัส' ด้วยคีย์สาธารณะ (ที่คุณเผยแพร่).

โพสต์คำตอบ

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