จะบังคับให้ gpg2 ใช้คีย์ที่หมดอายุได้อย่างไร


14
$ gpg -ear XXXXXXX
gpg: XXXXXXXX: skipped: unusable public key

$ gpg --debug-ignore-expiration -ear XXXXXXXX
gpg: Invalid option "--debug-ignore-expiration"

วิธีการเข้ารหัส? ไม่มีการอัพเดตสำหรับคีย์ที่พร้อมใช้งานจาก keyservers ควรเห็นข้อความหากผู้ใช้ยังมีรหัสหมดอายุหรือไม่เห็นเลย

มี--just-do-that-I-wantตัวเลือกบางอย่างที่จะอนุญาตให้ทำเช่นนี้โดยไม่ต้องเปลี่ยนซอร์สโค้ดของ GPG หรือไม่?


ทำไมคุณต้องการทำเช่นนี้? โดยทั่วไปแล้วจะเป็นการทำลายความปลอดภัยทั้งหมด GPG เป็นเรื่องเกี่ยวกับคุณอย่างแท้จริงเพียงแค่ส่ง Cleartext ถ้าคุณทำเช่นนี้ ฉันขอแนะนำให้คุณเพียงแค่ขอให้ผู้รับที่ได้รับการปรับปรุงกุญแจสาธารณะของมัน
konqui

การใช้คีย์ที่หมดอายุมานานนั้นให้ความปลอดภัยที่ดีกว่าเมื่อเทียบกับการใช้คีย์ใด ๆ เลย อีกอย่างหนึ่งอาจจำเป็นต้องถอดรหัสข้อความเก่าจากการเก็บถาวรโดยใช้รหัสที่หมดอายุแบบเก่า
วิ

Shure อาจจะเสียการเข้ารหัสก็ดีกว่าไม่มีการเข้ารหัสเลย ฉันแค่พูดเกินจริงไปเพราะเหตุผล สำหรับข้อความเก่าที่เข้ารหัสด้วยรหัสสาธารณะเก่าแล้วเขาต้องการใช้รหัสส่วนตัวเก่าของเขา แต่นั่นไม่ใช่ฉันเขาไม่สามารถสร้าง Keypair ใหม่เพื่อใช้สำหรับข้อความใหม่ได้ ดังนั้นจึงไม่มีเหตุผลที่จะใช้คีย์สาธารณะที่ล้าสมัย รหัสส่วนตัวเป็นอีกสิ่งหนึ่ง แต่ฉันไม่เคยบ่นเกี่ยวกับการใช้กุญแจส่วนตัวที่ล้าสมัยเพื่อการปฏิเสธ
konqui

คำตอบ:


12

ตามที่ @rob แนะนำในความคิดเห็นlibfaketimeจัดการสิ่งนี้ได้ดี:

$ gpg  -v -v -v --batch --trust-model always -ear D5B9D38C <<< "qweqe"
gpg: using character set 'utf-8'
gpg: Note: signature key 077EA269D5B9D38C expired Sun 09 Nov 2014 12:57:25 PM +03
gpg: D5B9D38C: skipped: Unusable public key
gpg: [stdin]: encryption failed: Unusable public key

$ faketime  '2012-12-24 08:15:42'  gpg  -v -v -v --batch --trust-model always -ear D5B9D38C <<< "qweqe"
gpg: using character set 'utf-8'
gpg: using subkey 85231B396B9569ED instead of primary key 077EA269D5B9D38C
gpg: No trust check due to '--trust-model always' option
gpg: reading from '[stdin]'
gpg: writing to stdout
gpg: RSA/AES256 encrypted for: "..."
-----BEGIN PGP MESSAGE-----
...

คำตอบเก่า:

  1. เริ่ม UML (โหมดผู้ใช้ linux)
  2. กำหนดวันที่ภายใน UML เป็นช่วงที่ยอมรับได้
  3. เข้ารหัสข้อความใน UML

1
สามารถปลอมวันที่โดยใช้ libfaketime แนวคิดเดียวกันกับคำตอบ แต่อาจจะง่ายกว่าสำหรับบางคน
ปล้น

2
ไม่มีตัวเลือกบังคับอย่างจริงจังดังนั้นแค่แฮ็ควันเท่านั้น m (
mcantsin

3

ใช้--faked-system-timeตัวเลือก:

gpg2 --faked-system-time 20100101T000000 -e -r keyid

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


2

รีเซ็ตนาฬิกาฮาร์ดแวร์และระบบ:

sudo hwclock --set --date "12/31/2017 23:59:59" && \
sudo hwclock --hctosys && \
gpg --sign-with $keyid --clearsign --armor < $file

หลังจากนั้น (ฉันหวังว่าคุณจะเปิดใช้งาน NTP) แก้ไขนาฬิกาฮาร์ดแวร์ของคุณด้วย:

sudo hwclock --systohc

2
รุนแรงเกินไป เวลาควรถูกแทนที่ด้วย gpg ไม่ใช่สำหรับทั้งระบบ
วิ

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