จะระบุไพรเวตคีย์เมื่อถอดรหัสไฟล์โดยใช้ GnuPG ได้อย่างไร?


22

ฉันพยายามถอดรหัสไฟล์ด้วย GnuPG แต่เมื่อใช้คำสั่งด้านล่าง:

gpg --decrypt filename.gpg

ฉันได้รับข้อความต่อไปนี้:

gpg: encrypted with RSA key, ID 3662FD5E
gpg: decryption failed: No secret key

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


1
อะไรgpg --list-secret-keys 0x3662FD5Eพิมพ์?
Jonas Schäfer

ไม่เลย มีวิธีใดบ้างที่ฉันสามารถเพิ่มได้

คุณได้รับรหัสส่วนตัวอย่างไร
Jonas Schäfer

ID นี้แสดงถึงอะไร?
Nishant

คำตอบ:


17

ฉันมีรหัสส่วนตัวที่เข้ารหัสไฟล์แล้ว แต่ฉันไม่แน่ใจว่าจะระบุได้อย่างไร

ฉันเข้าใจสิ่งนี้ว่า "ฉันมีไฟล์ที่มีรหัสส่วนตัว แต่ไม่ทราบวิธีบอก GnuPG ให้ใช้งาน"

GnuPG ต้องการคีย์ (ทั้งสาธารณะและส่วนตัว) เพื่อเก็บไว้ในพวงกุญแจ GnuPG นี่เป็นเรื่องง่ายเหมือน

gpg --import [keyfile]

หลังจากนั้นคุณควรจะสามารถถอดรหัสไฟล์ได้อย่างที่คุณเคยลอง


5
gpg ฉลาดพอที่จะรู้หรือไม่ว่าจะถอดรหัสกุญแจใดเมื่อคุณนำเข้ากุญแจหลายดอก?
RollRoll

ใช่. โดยปกติคีย์จะอ้างอิงถึงในไฟล์ที่เข้ารหัสหากไม่มี GnuPG จะลองใช้คีย์ทั้งหมด
Jens Erat

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

2
GnuPG จะลองใช้ทั้งหมดหากคีย์ถูกซ่อนโดยผู้ส่ง รู้สึกว่ากรณีการใช้งานของคุณไม่ใช่หนึ่งในเป้าหมายการออกแบบของ GnuPG หากคุณรู้จักรหัสส่วนตัวที่ถูกต้องแม้ว่าจะไม่ได้เก็บไว้ในไฟล์ที่เข้ารหัสให้พิจารณาการจัดการไดเรกทอรี / คีย์โฮม GnuPG ที่แตกต่างกันด้วยรหัสส่วนตัวเดียวแทน
Jens Erat

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

6
bash-4.2$ gpg --import b_secret.key
gpg: key 23E7859B: already in secret keyring
gpg: Total number processed: 1
gpg:       secret keys read: 1
gpg:  secret keys unchanged: 1
bash-4.2$ gpg --decrypt b_txt.asc
gpg: key 23E7859B: secret key without public key - skipped
gpg: encrypted with RSA key, ID 04702E37
gpg: decryption failed: secret key not available

3
ยินดีต้อนรับสู่ SuperUser คำแนะนำของคุณอยู่ในคำตอบอื่นแล้ว คุณควร upvote คำตอบนั้นแทนที่จะทำใหม่ คุณยังไม่มีชื่อเสียงพอที่จะทำเช่นนั้นรอจนกว่าคุณจะทำ
Vlastimil Ovčáčík

2

คุณไม่จำเป็นต้องประกาศรหัสลับอย่างชัดเจนในคำสั่ง gpg decrypt หากคีย์แพร์ - ทั้งสาธารณะและไพรเวตคีย์ - เนื่องจากสถานะ Jens ปรากฏบนพวงกุญแจบนโฮสต์ที่คุณกำลังถอดรหัสGPG จะกำหนดรหัสลับที่จำเป็นสำหรับการถอดรหัสโดยอัตโนมัติและแสดงรหัสผ่านที่ท้าทาย

อย่างไรก็ตามหากคุณต้องการลองใช้คีย์ทั้งหมด (ไม่ใช่แคช) ( บางทีคุณกำลังทดสอบไฟล์ที่เข้ารหัสด้วยหลายคีย์ ) การใช้สวิตช์--try-all-secretsจะวนไปตามคีย์ลับทั้งหมดที่พวงกุญแจของคุณลองใช้ เช่น:

gpg -d --try-all-secrets test-gpg.txt.asc

HTH- Terrence

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