หลังจากสร้างคู่คีย์แล้ว เราสามารถเลือกได้ว่าคีย์ใดจะเป็นคีย์ส่วนตัวหรือสาธารณะ
ไม่ โดยทั่วไปเราไม่สามารถ สำหรับส่วนใหญ่ ระบบเข้ารหัสแบบอสมมาตร คีย์ส่วนตัวและคีย์สาธารณะเป็นวัตถุที่แตกต่างกันโดยสิ้นเชิง (เช่น คีย์หนึ่งอาจเป็นตัวเลขและอีกคีย์หนึ่งเป็นจุดบนเส้นโค้งวงรี) และไม่มีทางที่จะใช้คีย์หนึ่งแทนอีกคีย์หนึ่งได้
อย่างไรก็ตาม มีข้อยกเว้นกึ่งหนึ่งที่น่าสังเกต: ระบบเข้ารหัส 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 ที่ใช้กับข้อความเข้ารหัสพิเศษ ซึ่งจะเป็นจริงทางเทคนิคในทางใดทางหนึ่ง และน่าจะไม่เกิน (หรือน้อยกว่า) ทำให้เข้าใจผิดมากไปกว่าการอธิบายว่าเป็น "การเข้ารหัสด้วยคีย์ส่วนตัว"