gpg2: ไม่มีรหัสลับ


19

ฉันใช้อินิกเมลมานานกว่าหนึ่งปีโดยไม่มีปัญหาและวันนี้มันใช้ไม่ได้

ฉันพบข้อเท็จจริงที่น่าสนใจต่อไปนี้:

gpg --decrypt something.gpg # this works
gpg2 --decrypt something.gpg # this fails

มีบางอย่างพังทลายด้วย gpg version 2 บนเครื่องของฉัน

สิ่งนี้ทำให้ฉันเห็นว่า:

gpg --list-secret-keys # reads from ~/.gnupg/secring.gpg
gpg2 --list-secret-keys # reads from ~/.gnupg/pubring.gpg (pubring?!) 

นี่น่าจะเป็นต้นเหตุของปัญหา ... แน่นอนgpg2ไม่สามารถหารหัสลับได้เพราะมันกำลังมองหาไฟล์ผิด

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

ใครมีความคิดเห็นบ้าง


การตอบสนองต่อ @grawity :

ขอบคุณฉันขอขอบคุณความช่วยเหลือของคุณ ฉันวิ่งstraceและฉันเห็นสิ่งที่คุณกำลังพูดถึง

อย่างไรก็ตามแม้หลังจากที่gpg2 --import ...ฉันเห็นพฤติกรรมไม่แตกต่างกัน ฉันเท่านั้นที่สามารถทำให้การทำงานถ้าฉันเริ่มต้นใหม่ (โดยไม่ต้องเริ่มงาน gpg ตัวแทน) เรียกแล้วเรียกใช้gpg2 --import ... gpg2 --decrypt ...หลังจากนั้นลำดับธันเดอร์เบิร์ด + อินิกเมลก็ทำงานได้ดีเช่นกัน อย่างไรก็ตามหลังจาก 15 นาทีหรือมากกว่านั้น (เดาว่ารหัสผ่านที่ฉันป้อนเพื่อถอดรหัสนั้นหมดอายุแล้ว) จากนั้นgpg-agentจะกลับไปใช้การทำงานแบบเดิม ลำดับนี้สามารถทำซ้ำได้

ดังนั้นนี่คือผลลัพธ์บางอย่างหากช่วยล้างสิ่งใด ๆ :

ผลลัพธ์ของgpg2 -K:

/home/<username>/.gnupg/pubring.gpg
---------------------------------
sec   rsa4096/AAAAAAAA <date> [SC]
uid         [ultimate] <description of me>
ssb   rsa4096/BBBBBBBB <date> [E]

การส่งออกของ gpg-connect-agent

> keyinfo --list
S KEYINFO <keygrip associated with AAAAAAAA> D - - - P - - -
S KEYINFO <keygrip associated with BBBBBBBB> D - - - P - - -
OK

การส่งออกของ gpg2 -v -r <my email> -e testfile

gpg: using PGP trust model
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: This key belongs to us
gpg: reading from 'testfile'
gpg: writing to 'testfile.gpg'
gpg: RSA/AES256 encrypted for: "BBBBBBBB <description of me>"

การส่งออกของ gpg2 -v -d testfile.gpg

gpg: public key is BBBBBBBB
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: encrypted with 4096-bit RSA key, ID BBBBBBBB, created <date>
      "<description of me>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key

คุณจบลงด้วยการแก้ปัญหานี้หรือไม่? ฉันมีปัญหาเดียวกันแน่นอน
Volker

ไม่เป็นไรฉันคงซ่อมมันแล้ว ที่จำเป็นในการใช้งานgpg-agentและโปรแกรม pinentry pinentry-gtk-2ที่จำเป็นในการตั้งค่าให้ ก่อนที่มันจะถูกตั้งค่าpinentry-gnome3ซึ่งมีอยู่ในระบบของฉัน แต่มันไม่ทำงาน pinentry-gtk-2ผมได้มีการติดตั้งด้วยตนเอง
Volker

คำตอบ:


20

…แน่นอนว่า gpg2 ไม่สามารถหารหัสลับได้เพราะมันกำลังมองหาไฟล์ผิด

นั่นไม่ใช่ไฟล์เดียวที่กำลังดู

ใน GnuPG 1.x (และ 2.0) "secring" เคยมีสำเนาของข้อมูลสาธารณะของ keyblock ของคุณซ้ำดังนั้นมันจึงมีอยู่ในตัวเองทั้งหมด (และแตกต่างกันเพียงอย่างเดียวระหว่างgpg -kและgpg -Kเป็นไฟล์ที่อ่าน) แต่ในเวลาเดียวกันยากกว่าสำหรับโปรแกรมที่จะรักษา

ใน GnuPG 2.1 ตอนนี้คีย์ลับถูกจัดเก็บอย่างเป็นอิสระโดยจะถูกเก็บรักษาโดยgpg-agentซึ่งเก็บไว้ใน~/.gnupg/private-keys-v1.d/นั้น ดังนั้นทั้งสองgpg -kและgpg -Kตอนนี้ต้องอ่านข้อมูล OpenPGP จาก pubring แต่ในภายหลังจะขอให้ตัวแทน gpgเพิ่มเติมเกี่ยวกับใบรับรองที่เกี่ยวข้องกับคีย์ลับ หากคุณกำลังใช้straceคุณควรแจ้งให้ทราบconnect()โทรขวาหลังจากที่ได้อ่าน pubring

หาก GnuPG ไม่ได้ย้ายข้อมูลกุญแจโดยอัตโนมัติเพียงแค่นำเข้าทั้ง secring โดยตรง:

gpg2 --import ~/.gnupg/secring.gpg

วิธีตรวจสอบเนื้อหาของตัวแทนด้วยตนเอง:

$ gpg-connect-agent 
> keyinfo - รายการ
S KEYINFO 926145FFCA32B3E6E079A0CF73EA77C40733A349 D - - - P - - -
S KEYINFO BACFB81EAFC864F4AB2926E8B1F55AD579F78D1A D - - - P - - -
S KEYINFO FF3D1DD51B9C79E148CCCEA5F7F3E25EC96048B7 D - - - P - - -
S KEYINFO 4D29EF1460F164CDB11D0FC0247214660ACDD60F D - - - P - -
S KEYINFO 06B13685B9AA429B9CABCE480930D74B991C8DF0 D - - - P - -
S KEYINFO B28DB8D045654E8A6A40466A07FCD9E432935E29 D - - - P - -
ตกลง
> / bye 
$

นี่คือ "keygrips" - เปรียบเทียบกับ GnuPG's secring:

$ gpg --list-secret-keys - with-keygrip
/home/fred/.gnupg/pubring.kbx
--------------------------------
วินาที ed25519 2018-08-18 [SC]
      2357E133AD5D24F6CB2C1B0CEF4F7ED27E252632
      Keygrip = 4D29EF1460F164CDB11D0FC0247214660ACDD60F 
uid [ultimate] Fred Foobar <fred@example.com>

ฉันมีปัญหาเดียวกัน: ฉันพยายามที่จะสร้าง usign สำคัญที่ฉันต้องการที่จะใช้กับgpg --gen-key gopassน่าเสียดายที่gopassใช้gpg2... gpg2 --importทำงานเหมือนมีเสน่ห์! ขอบคุณ!
andiba

สำหรับฉันgpg2 --import ~/.gnupg/pubring.gpgแก้ไขมัน
Dilawar

คุณเป็น heroo ของฉัน
Lo-Tan

1

ในที่สุดผมก็ตัดสินใจปัญหาก็คือว่าผมใช้ Debian apt-get dist-upgradeเสถียรและมีไม่ตรงกันรุ่นแนะนำโดย ฉันคิดว่านั่นเป็นเหตุผลที่พวกเขาเรียกมันว่า "ไม่เสถียร"


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