เป็นไปได้หรือไม่ที่จะเข้ารหัสข้อมูลเพื่อให้สามารถถอดรหัสด้วยคีย์ต่างๆได้
ตัวอย่าง:
ฉันเข้ารหัสข้อมูลด้วย key1 แต่ฉันต้องการถอดรหัสด้วยคีย์ 2, 3 และ 4
เป็นไปได้หรือไม่
เป็นไปได้หรือไม่ที่จะเข้ารหัสข้อมูลเพื่อให้สามารถถอดรหัสด้วยคีย์ต่างๆได้
ตัวอย่าง:
ฉันเข้ารหัสข้อมูลด้วย key1 แต่ฉันต้องการถอดรหัสด้วยคีย์ 2, 3 และ 4
เป็นไปได้หรือไม่
คำตอบ:
GnuPGทำการเข้ารหัสแบบหลายคีย์ในมาตรฐาน
คำสั่งต่อไปนี้จะเข้ารหัสdoc.txt
โดยใช้คีย์สาธารณะสำหรับ Alice และคีย์สาธารณะสำหรับ Bob อลิซสามารถถอดรหัสโดยใช้คีย์ส่วนตัวของเธอ Bob ยังสามารถถอดรหัสโดยใช้คีย์ส่วนตัวของเขา
gpg --encrypt --recipient alice@example.com \
--recipient bob@example.com doc.txt
คุณลักษณะนี้มีรายละเอียดอยู่ในส่วนคู่มือผู้ใช้ที่ชื่อว่า "การเข้ารหัสและถอดรหัสเอกสาร "
ใช่การเข้ารหัสสำหรับผู้รับหลายคนเป็นไปได้ นอกจากนี้ยังดูเหมือนมีเหตุผลเมื่อคุณคิดว่าคุณอาจต้องการอ่านสิ่งที่คุณส่งถึงใครบางคนและหากต้องการทำเช่นนั้นคุณต้องอยู่ในรายชื่อผู้รับ
นี่คือวิธีดำเนินการผ่านgpg
บรรทัดคำสั่ง (ตามที่อธิบายไว้ในคำตอบของ David Segonds ):
gpg --encrypt \
--recipient alice@example.com \
--recipient bob@example.com \
clear-message.txt
GUI ของคุณต้องมีวิธีเข้ารหัสสำหรับหลาย ๆ คน
มีคำถามเกี่ยวกับการเป็นข้อมูลในการรักษาความปลอดภัย , ขนาดไฟล์ GPG กับผู้รับหลายคน? ซึ่งอธิบายกลไกการเข้ารหัส :
GPG เข้ารหัสไฟล์หนึ่งครั้งด้วยคีย์สมมาตรจากนั้นวางส่วนหัวที่ระบุคีย์คู่เป้าหมายและคีย์สมมาตรเวอร์ชันเข้ารหัส
[... ] เมื่อเข้ารหัสไปยังผู้รับหลายรายส่วนหัวนี้จะถูกวางหลายครั้งโดยให้คีย์สมมาตรเดียวกันในเวอร์ชันเข้ารหัสที่ไม่ซ้ำกันสำหรับผู้รับแต่ละราย
โดยทั่วไปไคลเอนต์GnuPGและ PGP จะเข้ารหัสข้อมูลจริงด้วยคีย์สมมาตรที่เรียกว่า "คีย์เซสชัน" จากนั้นคีย์เซสชันจะถูกเข้ารหัสด้วย "คีย์ผู้รับ" แต่ละอัน (เช่นคีย์ที่คุณระบุด้วย -r / - ผู้รับ) นี้บางครั้งเรียกว่าเป็นตัวเลขไฮบริด ตอนนี้ฉันเชื่อว่าโดยค่าเริ่มต้น GnuPG ใช้คีย์เซสชัน 256 บิตและ AES เพื่อเข้ารหัสข้อมูลข้อความธรรมดาไปยังคีย์เซสชัน AES-256 นั้นและคีย์ผู้รับของคุณคือ RSA / DSA / ECDSA / ฯลฯ คีย์ assymetric ในกรณีนี้
เหตุผลหนึ่งในการทำเช่นนี้คืออัลกอริธึมการเข้ารหัสแบบสมมาตรเช่น AES โดยทั่วไปจะเร็วกว่าแบบอสมมาตรเช่น RSA ดังนั้น GnuPG จึงต้องเข้ารหัส ~ 256 บิต (คีย์เซสชัน) ด้วย RSA และสามารถใช้ AES เพื่อเข้ารหัสข้อมูล (ขนาดใหญ่เท่าที่คุณต้องการ!) ด้วยคีย์เซสชันนั้น เครื่องของ Intel ยังมีคำสั่งAES-NIในตัวเพื่อทำบางขั้นตอนของอัลกอริทึมในฮาร์ดแวร์ซึ่งทำให้ GnuPG มีความรวดเร็วในการเข้ารหัส / ถอดรหัสข้อมูล
อีกเหตุผลหนึ่งในการทำเช่นนี้คือการอนุญาตให้เอกสารที่เข้ารหัส PGP สามารถเข้ารหัสกับหลายฝ่ายได้โดยไม่ต้องเพิ่มขนาดของเอกสารเป็นสองเท่า โปรดสังเกตว่าเมื่อคุณระบุผู้รับหลายคนสำหรับเอกสารที่เข้ารหัส (เช่นgpg -ea -r Alice -r Bob -o ciphertext.asc
) เอกสารเข้ารหัสที่จัดเก็บ (ciphertext.asc) จะไม่ใหญ่เท่ากับ 2 เท่าหากคุณเพิ่งเข้ารหัสให้ Alice
ดู--show-session-key
พารามิเตอร์ในหน้า man gpgเพื่อให้สามารถถอดรหัสเฉพาะคีย์เซสชันเช่นอนุญาตให้บุคคลที่สามถอดรหัสเอกสารที่เข้ารหัสให้คุณโดยไม่ต้องโอนไปยังคีย์ส่วนตัวของคุณหรือข้อมูลข้อความธรรมดา
ใช่มันเป็นไปได้ "การเข้ารหัสหลายฝ่าย" ของ Google สำหรับการเริ่มต้น
AFAIK ไม่มีการดร็อป 'em และใช้แพ็คเกจ' em สำหรับมัน
- MarkusQ
ปล. สำหรับภาพร่างวิธีการทำได้ลองพิจารณาสิ่งนี้ ข้อความที่เข้ารหัสประกอบด้วย:
ผู้รับที่ถือคีย์ฉันเพียงแค่ถอดรหัสสำเนาของแผ่นด้วยคีย์ของพวกเขาจากนั้นถอดรหัสข้อมูล
แต่นี้เป็นเพียงหลักฐานที่มันสามารถทำได้และจะดูดเป็นปฏิบัติจริง หากเป็นไปได้คุณควรหลีกเลี่ยงการเข้ารหัสของคุณเอง หากคุณไม่เข้าใจว่าทำไมคุณควรแน่นอนหลีกเลี่ยงการกลิ้งการเข้ารหัสของคุณเอง
----- แก้ไข ------------
ถ้าฉันผิดและเครื่องมือ Gnu ทำแบบนั้นให้ใช้ แต่ดูเหมือนจะหาข้อมูลเกี่ยวกับวิธีการทำไม่ได้
RSA คีย์หลายตัว (มากกว่าสอง) อาจเป็นแบบนี้ - ฉันไม่ใช่นักคณิตศาสตร์ดังนั้นอัลกอริทึมนี้จึงไม่จำเป็นต้องปลอดภัยฉันแค่อยากให้ความคิดกับมัน
ม = p * q * r; p, q, r เป็นจำนวนเฉพาะจำนวนมาก
fi (ม) = (p-1) (q-1) (r-1)
d == (e1 * e2 * e3 * ... * ei) ^ (- 1) (mod fi (m)); e1 ... ei เป็นตัวเลขโดยพลการ d ถูกคำนวณเพื่อเติมเต็มสมการ
y1 == x ^ e1 (สมัยม.)
y2 == y1 ^ e2 (mod ม.)
y3 == y2 ^ e3 (mod ม.)
...
x == yi ^ d (สมัยม.)
อัลกอริทึมนี้สามารถใช้เพื่อเพิ่มความเร็วของ The Onion Router