Score:7

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

ธง in

คุณช่วยให้ฉันเข้าใจได้ดีขึ้นว่าคู่คีย์ทำงานอย่างไรในการเข้ารหัสแบบอสมมาตร

ฉันกำลังศึกษาการเข้ารหัสในระดับพื้นผิวก่อน ขณะที่อ่านข้อความหลายฉบับและพูดคุยกับเพื่อนร่วมงาน ฉันยังไม่แน่ใจในสองสิ่ง

  1. หลังจากสร้างคู่คีย์แล้ว เราสามารถเลือกได้ว่าคีย์ใดจะเป็นคีย์ส่วนตัวหรือสาธารณะ สมมติฐานแรกของฉันคือเราทำได้ แต่หลังจากอ่านเกี่ยวกับอัลกอริทึมแล้ว ดูเหมือนว่าเราจะทำไม่ได้ เนื่องจากเหตุผลทางคณิตศาสตร์ว่าสร้างคีย์ได้อย่างไร ดังนั้นคีย์เดียวเท่านั้นที่สามารถเป็นส่วนตัวได้

  2. เราเข้ารหัสหรือถอดรหัส Cipher Text ด้วยรหัสที่กำหนดหรือไม่? พูดแบบนี้ถูกต้องในทางเทคนิคหรือไม่? หรือนี่อาจเป็นกระบวนการตรวจสอบบางอย่างเท่านั้น และอัลกอริทึมคือสิ่งที่ทำให้ข้อความสับสน

ถูกต้องหรือไม่ที่จะกล่าวว่า:

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

DannyNiu avatar
vu flag
ฉันได้รวบรวมคำถามนี้ไว้ใน[รายการเรื่องรออ่าน](https://crypto.meta.stackexchange.com/a/1523/36960) หวังว่าคุณจะไม่ว่าอะไร
Tomasz Nazarenko avatar
in flag
หากต้องการเพิ่มเติม มีคำถามจาก Security Stack Exchange ที่ช่วยให้ฉันได้แนวคิด ฉันกำลังวางลิงก์ เนื่องจากบางคนอาจเห็นว่ามีประโยชน์ https://security.stackexchange.com/questions/81760/what-happens-when-encrypting-with-private-key
mx flag
คำพูดท้ายคำถามไม่มีบริบทใดๆ มันเขียนว่า "คู่กุญแจนี้" แต่เราไม่รู้ว่ามันพูดถึงคู่กุญแจอะไร ดังนั้นจึงไม่มีทางที่เราจะบอกได้ว่าคำสั่งที่ทำขึ้นนั้นถูกต้องหรือไม่สำหรับคู่คีย์ใดก็ตามที่อ้างอิงถึง มันอาจจะใช่หรือไม่ใช่ก็ได้ เราจะรู้ได้อย่างไร?
jjj avatar
cn flag
jjj
โดยทั่วไป แป้นทั้งสองอาจมีรูปแบบต่างกัน (เช่น เส้นโค้งวงรี จุด และตัวเลข) ดังนั้นจึงสามารถสลับอะแคนทัสได้ คุณอาจอ้างถึง RSA (ที่สามารถสลับได้) โปรดเพิ่มแท็กนี้ในคำถามของคุณ
Score:21
ธง vu

ไม่ไม่ไม่! คุณไม่สามารถเลือกได้ว่าคีย์ใดเป็นส่วนตัวและส่วนใดเป็นสาธารณะ ความรู้สึกผิด ๆ ของเสรีภาพนั้นเกิดจาก

  1. ผู้คนไม่เข้าใจว่าการเข้ารหัสคีย์สาธารณะนั้นมีแนวคิดที่แตกต่างจากการเข้ารหัสและ
  2. อัลกอริทึมคีย์สาธารณะที่ได้รับความนิยมสูงสุด RSA เป็นการเปลี่ยนแปลงแบบสองทิศทาง

ตัวอย่างเช่น เมื่อใช้ลอการิทึมแบบไม่ต่อเนื่อง คีย์ส่วนตัวของคุณจะเป็นจำนวนเต็มสเกลาร์เสมอ และคีย์สาธารณะของคุณจะเป็นพาวเวอร์เสมอ การเข้ารหัสและการแลกเปลี่ยนคีย์สร้างขึ้นจากสูตรที่เหมือน Diffie-Hellman และลายเซ็นดิจิทัลจากคุณสมบัติเชื่อมโยงและสับเปลี่ยนของเลขคณิตสเกลาร์

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

fgrieu avatar
ng flag
เพิ่มเติม: แม้ใน RSA ในทางปฏิบัติ ก็ไม่มีอิสระในการเลือกว่าคีย์ใดเป็นสาธารณะและใดเป็นส่วนตัว ตามธรรมเนียมแล้ว หนึ่งในสองจะมีเลขชี้กำลังเล็กน้อย (มักจะเป็น 65537) มัน _must_ เป็นกุญแจสาธารณะ หากเป็นคีย์ส่วนตัว อีกอันจะเป็นคีย์สาธารณะ ดังนั้นเป็นสาธารณะ ซึ่งเป็นที่รู้จักของฝ่ายตรงข้าม และความปลอดภัยทั้งหมดจะหายไป เพราะการค้นหาทั้งคีย์และแฟกเตอร์โมดูลัสสาธารณะนั้นไม่ใช่เรื่องเล็กน้อย
fgrieu avatar
ng flag
นอกจากนี้ เกี่ยวกับ Q2: เมื่อมีคีย์สาธารณะและคีย์ส่วนตัว และเกี่ยวข้องกับการเข้ารหัส เราจะเข้ารหัสด้วยคีย์สาธารณะและถอดรหัสด้วยคีย์ส่วนตัว ไม่มีข้อยกเว้น การอ้างสิทธิ์ในทางตรงกันข้ามอาจทำให้การเข้ารหัสและลายเซ็นสับสน: เราลงนามด้วยรหัสส่วนตัวและยืนยันด้วยรหัสสาธารณะ ไม่มีข้อยกเว้นเช่นกัน
cn flag
@fgrieu ความแตกต่างคือสำหรับ RSA ตามที่กำหนดไว้ทั่วไป คุณ "เท่านั้น" ที่จะทำลายความปลอดภัย สำหรับ PKE อื่นๆ พวกมันเป็นวัตถุที่แตกต่างกันอย่างสิ้นเชิง และการสลับพวกมันจะไม่สมเหตุสมผลด้วยซ้ำในทางคณิตศาสตร์
fgrieu avatar
ng flag
@Maeher: แน่นอน! ฉันยืนยันว่าคำตอบของ Q1 เป็นลบและ RSA (ตามที่ปฏิบัติ) ก็ไม่มีข้อยกเว้น
ilkkachu avatar
ws flag
@fgrieu แต่การใช้ 65537 เป็นเพียงแบบกำหนดเองใช่ไหม คุณสามารถสร้างเช่น ใบรับรองที่มีเลขชี้กำลังการเข้ารหัสตามอำเภอใจ (`openssl req -x509 -newkey rsa:4096 -pkeyopt rsa_keygen_pubexp:12345653`) ไม่แน่ใจว่าบางโปรแกรมจะส่งเสียงหรือไม่หรือบริบทอื่น ๆ ฮาร์ดโค้ดเลขชี้กำลังจริง ๆ
fgrieu avatar
ng flag
@ikkachu: ใช่ คุณทำได้ และโปรแกรมสมัยใหม่ส่วนใหญ่จะยอมรับใบรับรอง และจะปลอดภัยแต่ถึงกระนั้น การสลับ $e$ กับ $d$ จะไม่ปลอดภัย เพราะหลังจากนั้น การสลับนั้นจะยังคงง่ายต่อการค้นหา $d$ (ค่าผิดปกติของ $e$) และตัวประกอบ $n$ ที่ได้รับจากรหัสสาธารณะ สิ่งนี้ใช้ได้กับ $e$ ที่ผิดปกติสูงถึงประมาณ $n^{0.292\ldots}$ เนื่องจาก [การโจมตีโดย Boneh และ Durfee](https://doi.org/10.1007/3-540-48910-X_1) นอกจากนี้ openSSL จะใส่ $e$ ในคีย์ส่วนตัว
Score:10
ธง ar

หลังจากสร้างคู่คีย์แล้ว เราสามารถเลือกได้ว่าคีย์ใดจะเป็นคีย์ส่วนตัวหรือสาธารณะ

ไม่ โดยทั่วไปเราไม่สามารถ สำหรับส่วนใหญ่ ระบบเข้ารหัสแบบอสมมาตร คีย์ส่วนตัวและคีย์สาธารณะเป็นวัตถุที่แตกต่างกันโดยสิ้นเชิง (เช่น คีย์หนึ่งอาจเป็นตัวเลขและอีกคีย์หนึ่งเป็นจุดบนเส้นโค้งวงรี) และไม่มีทางที่จะใช้คีย์หนึ่งแทนอีกคีย์หนึ่งได้

อย่างไรก็ตาม มีข้อยกเว้นกึ่งหนึ่งที่น่าสังเกต: ระบบเข้ารหัส RSA มีคีย์สาธารณะและส่วนตัวที่ เป็นไปได้ แสดงเป็นวัตถุประเภทเดียวกัน (โมดูลัสและเลขชี้กำลัง) และใช้ในการดำเนินการทางคณิตศาสตร์เดียวกัน (การยกกำลังแบบโมดูลาร์) เพื่อเข้ารหัสและถอดรหัสข้อความ ดังนั้น, ในทางทฤษฎีหนึ่งสามารถสร้างคู่คีย์ RSA "สมมาตร" (ตามที่อธิบายไว้ในคำถามนี้) จากนั้นเลือกครึ่งที่จะเผยแพร่และครึ่งใดที่จะเก็บไว้เป็นส่วนตัว

ในทางปฏิบัติ แม้ว่าการสร้างคีย์ RSA จะไม่ทำงานในลักษณะนั้น ด้วยเหตุผลสองสามประการ:

  • การเลือกเลขชี้กำลังสาธารณะให้เป็นเลขจำนวนน้อยคงที่ด้วยรูปแบบง่ายๆ ในเลขฐานสองจะมีประสิทธิภาพมากกว่า (ตัวเลือกทั่วไปคือ 3 และ 65537 = 216 + 1.) สิ่งนี้ปลอดภัยที่จะทำกับพับลิกคีย์ แต่เห็นได้ชัดว่าจะไม่ปลอดภัยอย่างยิ่งสำหรับไพรเวตคีย์ (เนื่องจากเลขชี้กำลังเป็นส่วนลับเพียงส่วนเดียวของไพรเวตคีย์ – โมดูลัสจะเหมือนกันสำหรับทั้งสองซีกของ คู่กุญแจ)

  • มีวิธีเร่งความเร็วการทำงานของคีย์ส่วนตัว RSA (เช่น การถอดรหัสหรือการเซ็นชื่อ) โดยใช้เทคนิคทางคณิตศาสตร์เพิ่มเติม เช่น ทฤษฎีบทเศษเหลือของจีนแต่สิ่งเหล่านี้ต้องการข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างคีย์ (เช่น ปัจจัยลับเฉพาะของโมดูลัส) การจัดเก็บข้อมูลพิเศษนี้ควบคู่ไปกับคีย์ส่วนตัวนั้นไม่มีปัญหา และรูปแบบคีย์ส่วนตัว RSA ที่ใช้บ่อยที่สุดก็ทำเช่นนั้น แต่การเผยแพร่จะทำให้ทุกคนสามารถทำลายคู่กุญแจและถอดรหัสและ/หรือปลอมแปลงข้อความได้

ผลลัพธ์ที่ได้ทั้งหมดนี้คือในทางปฏิบัติ เป็นไปได้ที่จะคำนวณคีย์สาธารณะ RSA จากคีย์ส่วนตัวแต่ไม่ใช่ในทางกลับกัน ตามคำตอบที่เชื่อมโยง (ซึ่งฉันเขียน) เกี่ยวกับความปลอดภัย SE กล่าวว่าในทางทฤษฎีแล้วมันอาจสร้างคีย์ RSA ส่วนตัวที่ปลอดภัยซึ่งไม่สามารถคำนวณคีย์สาธารณะได้ แต่จะต้องใช้ทั้งอัลกอริทึมการสร้างคีย์ที่ไม่ได้มาตรฐานและไม่เป็นมาตรฐาน รูปแบบการจัดเก็บคีย์ส่วนตัว และแม้ว่าปัญหาเกี่ยวกับรูปแบบจะได้รับการจัดการ การใช้งาน RSA บางส่วนอาจไม่ทำงานกับคีย์ส่วนตัวดังกล่าว (เนื่องจากขาดข้อมูลเพิ่มเติมที่กล่าวถึงข้างต้น)


เราเข้ารหัสหรือถอดรหัส Cipher Text ด้วยรหัสที่กำหนดหรือไม่? พูดแบบนี้ถูกต้องในทางเทคนิคหรือไม่?

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

เหตุผลหลักในการใช้ดังกล่าว การเข้ารหัสแบบไฮบริด คือรหัสสมมาตรเช่น AES ได้รับการออกแบบมาสำหรับการเข้ารหัสข้อมูลจำนวนมากอย่างรวดเร็ว ในขณะที่ระบบอสมมาตรไม่ใช่:

  • การเข้ารหัสแบบอสมมาตรมีแนวโน้มที่จะค่อนข้างช้า â มักจะช้ากว่าการเข้ารหัสข้อมูลจำนวนเท่ากันด้วยการเข้ารหัสแบบสมมาตรที่รวดเร็วเช่น AES หลายสิบหรือหลายร้อยหรือหลายพันเท่า การถอดรหัสแบบอสมมาตรมักจะช้ากว่าด้วยซ้ำ (ในขณะที่การถอดรหัส AES มักจะเร็วพอๆ กับการเข้ารหัส)

  • รูปแบบการเข้ารหัสแบบอสมมาตรที่ปลอดภัยทั้งหมดสร้างข้อความเข้ารหัสที่ยาวกว่าข้อความธรรมดา เนื่องจากจำเป็นต้องแทรกการสุ่มเข้าไปในกระบวนการเข้ารหัสเพื่อป้องกันการโจมตีแบบคาดเดา บางอย่าง (เช่น เอลกามาล-like schemes) จะเพิ่มความยาวของข้อความธรรมดาเป็นสองเท่า (หลังจากขยายจนถึงขนาดบล็อกข้อความ) ส่วนอื่นๆ เช่น RSA ต้องการการเติมข้อความธรรมดาถึงหลายสิบเท่าของความยาวเดิม เห็นได้ชัดว่าสิ่งนี้ไม่พึงปรารถนาเมื่อเข้ารหัสข้อมูลจำนวนมาก การเข้ารหัสแบบสมมาตรเช่น AES โดยทั่วไปจะเพิ่มข้อมูลพิเศษเพียงไม่กี่สิบไบต์ให้กับข้อความเข้ารหัสโดยไม่คำนึงถึงความยาว (ขึ้นอยู่กับโหมดการทำงาน)

  • โดยทั่วไปแล้ว รูปแบบการเข้ารหัสแบบอสมมาตรนั้นไม่ได้ออกแบบมาเพื่อเข้ารหัสข้อความที่ยาวเกินสองสามไบต์หรือมากกว่านั้น (ขึ้นอยู่กับขนาดของคีย์และพารามิเตอร์อื่นๆ ของรูปแบบ) คีย์ AES จะเข้ากันได้ดี แต่แม้แต่ข้อความแชทเดียวก็ไม่สามารถใช้ได้ â และทั้งหน้าเว็บหรือรูปภาพหรือสตรีมวิดีโอ อย่างแน่นอน จะไม่.

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


ถูกต้องหรือไม่ที่จะกล่าวว่า:

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

ไม่ ไม่จริง คีย์ส่วนตัวในรูปแบบการเข้ารหัสแบบอสมมาตรมีไว้สำหรับถอดรหัส ในขณะที่คีย์สาธารณะมีไว้สำหรับเข้ารหัส โดยทั่วไป คุณไม่สามารถเข้ารหัสอะไรด้วยคีย์ส่วนตัวได้ เช่นเดียวกับที่คุณไม่สามารถถอดรหัสด้วยคีย์สาธารณะ

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

แบบแผนลายเซ็นดิจิทัลบางแบบนั้นใช้แบบแผนการเข้ารหัสแบบอสมมาตร อันที่จริงแล้ว ลายเซ็นดิจิทัลในความหมายทั่วไปอาจถือเป็น หลักฐานที่ไม่มีความรู้ จากข้อเท็จจริงที่ว่าผู้ลงนามสามารถถอดรหัสข้อความรหัสเฉพาะ (โดยทั่วไปจะมาจากไฟล์ a กัญชา ของข้อความที่ถูกเซ็นชื่อ) ด้วยคีย์ส่วนตัวโดยใช้รูปแบบการเข้ารหัสแบบอสมมาตร ดังนั้นจึงเป็นการพิสูจน์ว่าพวกเขาสามารถเข้าถึงทั้งข้อความ (หรืออย่างน้อยแฮช) และคีย์ส่วนตัว

โดยเฉพาะอย่างยิ่ง ระบบการเข้ารหัส RSA ยังสามารถใช้เป็นส่วนหนึ่งของรูปแบบลายเซ็น (เช่น RSA-PSS) โดยใช้คีย์สาธารณะและคีย์ส่วนตัวประเภทเดียวกันและการดำเนินการทางคณิตศาสตร์แบบเดียวกัน (การยกกำลังแบบโมดูลาร์) เช่นเดียวกับการเข้ารหัส RSA สิ่งนี้ (และคำอธิบายที่เป็นที่นิยมในยุคแรกๆ ของการเข้ารหัสคีย์สาธารณะ) คือที่มาของคำอธิบายทั่วไปที่ทำให้เข้าใจผิดของ (RSA) ว่าเป็น "การเข้ารหัสด้วยคีย์ส่วนตัว" ในทางเทคนิคแล้วมันไม่ใช่ โดยสิ้นเชิง ผิด อย่างน้อยถ้าคุณเพิกเฉยทั้งหมด อื่นๆ ส่วนต่างๆ ของโครงร่าง (การแฮช การเติม ฯลฯ) ยกเว้นการยกกำลังแบบโมดูลาร์ที่แกนหลักของอัลกอริทึม RSA

แต่ถ้าคุณเต็มใจที่จะทำให้สิ่งต่าง ๆ ง่ายขึ้น คุณก็ควรสังเกตสิ่งนั้นเช่นกัน ทั้งสอง การเข้ารหัสและถอดรหัส RSA (และการลงนามและการตรวจสอบลายเซ็น) เป็นเพียงการยกกำลังแบบโมดูลาร์โดยพื้นฐาน ดังนั้นคุณอาจกล่าวได้ว่า ทั้งหมด สิ่งเดียวกันและการเซ็นชื่อ RSA นั้นเป็นเพียงการถอดรหัส RSA ที่ใช้กับข้อความเข้ารหัสพิเศษ ซึ่งจะเป็นจริงทางเทคนิคในทางใดทางหนึ่ง และน่าจะไม่เกิน (หรือน้อยกว่า) ทำให้เข้าใจผิดมากไปกว่าการอธิบายว่าเป็น "การเข้ารหัสด้วยคีย์ส่วนตัว"

Score:8
ธง in

ในการเข้ารหัสและถอดรหัส RSA นั้นคล้ายคลึงกัน หากคุณเลือก e แบบสุ่มและคำนวณการจับคู่ d คุณสามารถเลือกสลับบทบาทและเลือกเป็นรหัสสาธารณะได้

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

Score:6
ธง xk

คำตอบที่มีอยู่จาก DannyNiu และ Meir Maor ตอบความสับสนได้ดีว่าคีย์ส่วนตัวและคีย์สาธารณะสามารถใช้แทนกันได้ แต่ฉันคิดว่ามันก็คุ้มค่าเช่นกันที่จะกล่าวถึงตัวอย่างนี้จากคำถาม:

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

ไม่ มันผิดมาก! วิธีปกติที่ใช้การเข้ารหัสจะเป็นดังนี้:

  1. ฉันเผยแพร่รหัสสาธารณะของฉัน และเก็บรหัสส่วนตัวไว้เป็นความลับ
  2. คุณตัดสินใจส่งข้อความถึงฉัน คุณใช้รหัสสาธารณะของฉันเพื่อเข้ารหัสข้อความของคุณ คุณส่งข้อความที่เข้ารหัสมาให้ฉัน
  3. ฉันใช้คีย์ส่วนตัวเพื่อถอดรหัสข้อความ เพื่อที่จะสามารถอ่านได้

คำมั่นสัญญาของการเข้ารหัสคือหลังจากขั้นตอนที่ 2 คุณสามารถให้ข้อความที่เข้ารหัสแก่ใครก็ได้ที่คุณต้องการ ใครก็ตามที่ไม่ใช่ฉัน (ดังนั้นจึงไม่มีคีย์ส่วนตัวของฉัน) จะได้รับเฉพาะขยะแบบสุ่มเท่านั้น ไม่มีทางที่พวกเขาจะเรียนรู้คุณสมบัติที่ไม่สำคัญใดๆ ของข้อความต้นฉบับที่ไม่ได้เข้ารหัส

สิ่งสำคัญที่สุดคือสัญญาการเข้ารหัสขั้นพื้นฐานที่สุด ไม่ ให้การรับประกันใด ๆ เกี่ยวกับที่มา ถ้า Joe ส่งข้อความที่เข้ารหัสให้ฉันและบอกว่ามาจาก Bob ฉันก็ไม่มีทางตรวจสอบว่าข้อความนั้นมาจาก Bob จริงหรือไม่ และแม้ว่าข้อความนั้นมาจาก Bob ฉันก็ไม่มีทางตรวจสอบว่าข้อความนั้นไม่ได้ถูกแก้ไข (ตัวอย่างเช่น ถ้า Joe รู้ว่าข้อความ "Bob ต้องการโอน \$XXXXXX จากบัญชีของ Bob ไปยังบัญชีของ Joe" ในรูปแบบการเข้ารหัสบางอย่าง เป็นไปได้ที่ Joe จะเปลี่ยนข้อความเป็น "Bob ต้องการโอน \$99999 จากบัญชีของ Bob ไปยังบัญชีของ Joe" แม้ว่า Joe จะไม่รู้ว่า XXXXX ดั้งเดิมคืออะไร)

มี แยก อัลกอริธึมที่สามารถรับประกันแหล่งที่มาได้ ซึ่งเรียกว่าลายเซ็นดิจิทัล ในลายเซ็นดิจิทัล การใช้งานปกติจะเป็นดังนี้:

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

สัญญาที่ให้ลายเซ็นคือหลังจากขั้นตอนที่ 2 ฉันสามารถมอบลายเซ็นให้กับใครก็ได้ที่ฉันต้องการ ใครก็ตามที่ไม่ใช่ฉัน (ดังนั้นจึงไม่มีรหัสส่วนตัวของฉัน) จะไม่สามารถใช้รหัสนั้นเพื่อสร้างลายเซ็นของข้อความอื่นใดในนามของฉันได้ จากข้อมูลที่พวกเขาเรียนรู้ในลายเซ็นนี้

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

...และแน่นอนว่ามีอัลกอริธึมที่ซับซ้อนมากขึ้นซึ่งสร้างสัญญาที่ซับซ้อนมากขึ้น รวมถึงสัญญาที่ผสมผสานระหว่างความลับที่คุณได้รับจากการเข้ารหัสและความสมบูรณ์/ที่มาที่คุณได้รับจากลายเซ็น

AnoE avatar
ws flag
ฉันไม่เข้าใจประเด็นที่คุณพูดตัวอย่างที่คุณยกมาจาก OP ดูเหมือนจะระบุลักษณะลายเซ็นของการเข้ารหัสคีย์สาธารณะอย่างถูกต้อง (อาจมีการเพิ่มประสิทธิภาพเล็กน้อยที่คนมักจะตัดสินใจเซ็นชื่อแฮชของข้อความแทนข้อความเองเป็นประจำ แต่ในทางเทคนิค / การเข้ารหัส ผลลัพธ์สุดท้ายจะ เหมือนเดิม) คุณช่วยระบุเพิ่มเติมหน่อยได้ไหมว่าส่วนใดของบล็อกที่ยกมาคือส่วนที่ไม่ถูกต้อง
xk flag
@AnoE บล็อกที่ยกมาพูดถึงการเข้ารหัสและถอดรหัสข้อความ ไม่ใช่การเซ็นชื่อและตรวจสอบลายเซ็น นี่เป็นข้อผิดพลาดหลัก ไม่ใช่แค่ความแตกต่างของคำศัพท์เท่านั้น ดังที่กล่าวไว้ในคำตอบของฉัน: ลายเซ็นไม่ได้ให้คำมั่นสัญญาเกี่ยวกับข้อมูลที่พวกเขากำลังเซ็น ทั้งไม่สามารถกู้คืนข้อมูลได้และไม่สามารถกู้คืนได้ ดังนั้นการพูดถึงการกู้คืน ข้อความจากลายเซ็นโดยใช้รหัสสาธารณะไม่สมเหตุสมผล
AnoE avatar
ws flag
ทุกประโยคของบล็อกที่ยกมามีความหมายในตัวเอง และไม่มีประโยคใดขัดแย้งกัน เขาแพ้ฉันเล็กน้อยที่ "รูปแบบข้อความเปิด" (แม้ว่านั่นอาจเป็นปัญหาด้านภาษา - ฉันเดาว่าเขาแค่ต้องการบอกว่าข้อความเข้ารหัสถูกส่งไปในที่สาธารณะ ซึ่งค่อนข้างชัดเจน) และเห็นได้ชัดว่าไม่มีสิ่งใดที่สามารถประยุกต์ใช้ได้จริง แต่อย่างที่เขากล่าวว่าเขากำลังดูที่พื้นฐานทางทฤษฎีข้อแรก แต่ตามแนวคิดแล้วดูเหมือนว่าจะดีสำหรับฉัน ตอบว่า "ไม่ ผิดมาก!" ดูจะไกลตัวไปหน่อย...
xk flag
@AnoE "ฉันสามารถเข้ารหัสข้อความด้วยคีย์ส่วนตัวของฉันแล้วเผยแพร่" นั้นไม่ถูกต้องโดยทั่วไป: ในรูปแบบการเข้ารหัส (ส่วนใหญ่) จำนวนมาก คีย์ส่วนตัวไม่มีข้อมูลที่ถูกต้องสำหรับการเข้ารหัส "ใครก็ตามสามารถถอดรหัสข้อความด้วยรหัสสาธารณะของฉัน" นั้นไม่ถูกต้องด้วยเหตุผลที่คล้ายคลึงกัน "ต้องเป็นฉันที่สร้างข้อความ เนื่องจากมีเพียงฉันเท่านั้นที่มีรหัสส่วนตัว" ไม่ถูกต้อง เนื่องจากการเข้ารหัสไม่ได้ให้คำมั่นสัญญาที่มา "ใครก็ตามที่มีสำเนาของรหัสสาธารณะที่เกี่ยวข้องสามารถถอดรหัสข้อความได้" ไม่ถูกต้องด้วยเหตุผลเดียวกับ "ทุกคนสามารถถอดรหัสข้อความด้วยรหัสสาธารณะของฉัน" คือ
xk flag
@AnoE กล่าวอีกนัยหนึ่งตรงกันข้ามกับ "ทุกประโยคมีเหตุผลในตัวเอง" * ทุกประโยคมีข้อผิดพลาด * และบางประโยคมีมากกว่านั้น

โพสต์คำตอบ

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