สามารถถอดรหัสข้อความที่เข้ารหัสก่อนหน้านี้โดยไม่มีข้อความรหัสผ่าน แต่ไม่สามารถส่งออกคีย์ส่วนตัวของ GPG


0

ฉันรู้สึกงี่เง่าจริงๆถามนี้ แต่ทำไมไม่ ฉันมีไฟล์หลายไฟล์ที่ฉันเข้ารหัสไปก่อนหน้านี้ด้วย a gpg คู่กุญแจที่มีการป้องกันด้วยรหัสผ่าน ตั้งแต่นั้นมาฉันลืมรหัสผ่าน แต่กุญแจต้องยังอยู่ที่ใดที่หนึ่ง (พวงกุญแจของฉัน) เพราะฉันสามารถถอดรหัสไฟล์ทั้งหมดได้สำเร็จ gpg -d file.gpg ไม่มี พรอมต์รหัสผ่านใด ๆ

อย่างไรก็ตามเมื่อฉันพยายามส่งออกคีย์ส่วนตัวฉันจะขอรหัสผ่าน

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

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

ฉันได้ลองคุยกับ gpg-agent กับ gpg-connect-agentแต่ฉันไม่แน่ใจว่าจะต้องทำอะไรเพื่อรับรหัสส่วนตัวที่เก็บไว้

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


คุณแน่ใจหรือว่าไม่ได้ขอรหัสผ่านจากคุณ อีกเข้ารหัส คีย์ที่ส่งออกหรือไม่
grawity

คุณใช้ GnuPG รุ่นใดอยู่ 1.6 หรือ 2.0 หรือ 2.1+?
grawity

GnuPG 2.2.7 ค่อนข้างแน่ใจว่ามัน ( gpg --export-secret-keys -a "My Name" ) ไม่ถามรหัสผ่านให้เข้ารหัสคีย์ที่ส่งออกอีกครั้งเพราะฉันได้รับ "ข้อความรหัสผ่านไม่ดี (ลอง 2 จาก 3)" เมื่อฉันให้ข้อความรหัสผ่านใหม่
adtac

คำตอบ:


2

"คีย์" ของ OpenPGP แต่ละอันประกอบด้วยคีย์คู่อิสระหลายตัว (คีย์ย่อย) ซึ่งโดยปกติจะใช้เพื่อวัตถุประสงค์ที่แตกต่างกัน (เช่นหนึ่งใบรับรอง & amp; คีย์ย่อยเซ็นชื่อ, คีย์ย่อยเข้ารหัสหนึ่งคีย์ ฯลฯ )

ใน GnuPG 2.1 และใหม่กว่าจะมีการจัดเก็บคีย์ส่วนตัว ~/.gnupg/private-keys-v1.d และจัดการโดย gpg ตัวแทน . มีไฟล์แยกต่างหากสำหรับแต่ละคีย์ย่อยซึ่งเข้ารหัสด้วยข้อความรหัสผ่านของคุณ ซึ่งหมายความว่าคุณสามารถบายพาส gpg-agent ได้อย่างง่ายดาย แต่แม้ว่าคุณจะทำคุณยังไม่สามารถปลดล็อคไฟล์คีย์โดยไม่ทราบข้อความรหัสผ่านของคุณ

ในทางเทคนิคแล้วไฟล์สำคัญแต่ละไฟล์สามารถเข้ารหัสโดยใช้ข้อความรหัสผ่านที่แตกต่างกัน (แม้ว่า UI ของ gpg จะไม่นำเสนอนั้น) ด้วยเหตุผลดังกล่าวเมื่อ gpg-agent จัดเก็บข้อความรหัสผ่านของคุณในเช่น พวงกุญแจ GNOME มันถูกเก็บแยกต่างหากสำหรับแต่ละคีย์ย่อยโดยไม่ตรวจสอบว่ามันเหมือนกันหรือไม่

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

ใช้ secret-tool เพื่อค้นหาพวงกุญแจ GNOME สำหรับข้อความรหัสผ่านของคุณและดูว่ามีรายการใดบ้างที่ทำได้:

$ secret-tool search --all xdg:schema org.gnupg.Passphrase

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


ขอบคุณมากคุณยอดเยี่ยม! นี่เป็นการดึงข้อความรหัสผ่านลับ :) ทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับได้
adtac
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.