วิธีสำรองและกู้คืนคีย์ GPG ของคุณบน Linux

เผยแพร่แล้ว: 2022-08-18
แล็ปท็อป Linux แสดง bash prompt
fatmawati achmad zaenuri/Shutterstock.com

ความเป็นส่วนตัวเป็นประเด็นร้อนมากขึ้น บน Linux คำสั่ง gpg ให้ผู้ใช้เข้ารหัสไฟล์โดยใช้การเข้ารหัสคีย์สาธารณะ ซึ่งในกรณีนี้การสูญเสียคีย์การเข้ารหัสจะเป็นหายนะ ต่อไปนี้เป็นวิธีสำรองข้อมูล

OpenPGP และ GNU Privacy Guard

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

มาตรฐาน OpenPGP อธิบายระบบการเข้ารหัสที่เรียกว่าการเข้ารหัสคีย์สาธารณะ การใช้งาน GNU Privacy Guard ของมาตรฐานนั้นส่งผลให้เกิด gpg ซึ่งเป็นเครื่องมือบรรทัดคำสั่งสำหรับการเข้ารหัสและถอดรหัสตามมาตรฐาน

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

เมื่อไฟล์ถูกเข้ารหัส ไพรเวตคีย์ของผู้ส่งและพับลิกคีย์ของผู้รับจะถูกใช้ในกระบวนการเข้ารหัส จากนั้นไฟล์จะถูกส่งไปยังผู้รับ พวกเขาใช้คีย์ส่วนตัวและคีย์สาธารณะของผู้ส่งเพื่อถอดรหัสไฟล์

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

วิธีเข้ารหัสและถอดรหัสไฟล์ด้วย GPG บน Linux
ที่เกี่ยวข้อง วิธีเข้ารหัสและถอดรหัสไฟล์ด้วย GPG บน Linux

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

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

ไดเร็กทอรี .gnupg

คีย์ของคุณถูกเก็บไว้ในไดเร็กทอรีชื่อ ".gnupg" ในโฮมไดเร็กตอรี่ของคุณ ไดเร็กทอรีนี้จะเก็บกุญแจสาธารณะของใครก็ตามที่ส่งไฟล์ที่เข้ารหัสถึงคุณ เมื่อคุณนำเข้ากุญแจสาธารณะ กุญแจเหล่านี้จะถูกเพิ่มไปยังไฟล์ฐานข้อมูลที่จัดทำดัชนีในไดเร็กทอรีนั้น

แน่นอนว่าไม่มีสิ่งใดในไดเร็กทอรีนี้ถูกจัดเก็บเป็นข้อความธรรมดา เมื่อคุณสร้างคีย์ GPG คุณจะได้รับข้อความรหัสผ่าน หวังว่าคุณจะจำข้อความรหัสผ่านนั้นได้ คุณจะต้องการมัน รายการในไดเร็กทอรี ".gnugp" ไม่สามารถถอดรหัสได้หากไม่มี

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

 ต้นไม้ .gnupg 

โครงสร้างไดเร็กทอรีของไดเร็กทอรี .gnupg

เนื้อหาของแผนผังไดเร็กทอรีคือ:

  • openpgp-revocs.d : ไดเรกทอรีย่อยนี้มีใบรับรองการเพิกถอนของคุณ คุณจะต้องใช้สิ่งนี้หากคีย์ส่วนตัวของคุณกลายเป็นความรู้ทั่วไปหรือถูกบุกรุก ใบรับรองการเพิกถอนของคุณจะใช้ในกระบวนการเลิกใช้คีย์เก่าและใช้คีย์ใหม่
  • private-keys-v1.d : ไดเร็กทอรีย่อยนี้เก็บคีย์ส่วนตัวของคุณ
  • pubring.kbx : ไฟล์ที่เข้ารหัส ประกอบด้วยคีย์สาธารณะ รวมทั้งของคุณ และข้อมูลเมตาบางส่วนเกี่ยวกับคีย์เหล่านี้
  • pubring.kbx~ : นี่คือสำเนาสำรองของ “pubring.kbx” มีการอัปเดตก่อนทำการเปลี่ยนแปลงใน “pubring.kbx”
  • trustdb.gpg : สิ่งนี้ถือเป็นความสัมพันธ์ที่เชื่อถือได้ที่คุณสร้างขึ้นสำหรับคีย์ของคุณเองและสำหรับคีย์สาธารณะที่เป็นที่ยอมรับของบุคคลอื่น

คุณควรสำรองข้อมูลโฮมไดเร็กทอรีของคุณเป็นประจำอย่างสม่ำเสมอ รวมถึงไฟล์และโฟลเดอร์ที่ซ่อนอยู่ นั่นจะสำรองไดเรกทอรี ".gnupg" อย่างแน่นอน

แต่คุณอาจคิดว่าคีย์ GPG ของคุณมีความสำคัญเพียงพอที่จะรับประกันการสำรองข้อมูลของตนเองเป็นระยะ หรือบางทีคุณอาจต้องการคัดลอกคีย์จากเดสก์ท็อปไปยังแล็ปท็อป เพื่อให้คุณมีคีย์ดังกล่าวในเครื่องทั้งสองเครื่อง คุณเป็นคุณทั้งสองเครื่อง

กำหนดคีย์ที่จะสำรองข้อมูล

เราสามารถขอให้ gpg บอกเราว่าคีย์ใดอยู่ในระบบ GPG ของคุณ เราจะใช้ตัวเลือก --list --list-secret-keys และ --keyid-format LONG

 gpg --list-secret-keys --keyid-format LONG 

ระบุรายละเอียดคีย์ GPG ไปที่หน้าต่างเทอร์มินัล

เราได้รับแจ้งว่า GPG กำลังดูภายในไฟล์ “/home/dave/.gnupg/pubring.kbx”

สิ่งที่ปรากฏบนหน้าจอไม่ใช่คีย์ลับที่แท้จริงของคุณ

  • บรรทัด "sec" (ความลับ) แสดงจำนวนบิตในการเข้ารหัส (4096 ในตัวอย่างนี้) ID คีย์ วันที่สร้างคีย์ และ "[SC]" "S" หมายถึงคีย์สามารถใช้สำหรับลายเซ็นดิจิทัลและ "C" หมายถึงสามารถใช้สำหรับการรับรองได้
  • บรรทัดถัดไปคือลายนิ้วมือที่สำคัญ
  • บรรทัด "uid" เก็บ ID ของเจ้าของคีย์
  • บรรทัด "ssb" จะแสดงคีย์ย่อยลับเมื่อสร้างและ "E" ตัว “E” ระบุว่าสามารถใช้สำหรับการเข้ารหัสได้

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

สำรอง

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

หากต้องการสำรองคีย์สาธารณะ ให้ใช้ตัวเลือก --export เราจะใช้ --export-options backup options เพื่อให้แน่ใจว่ามีการรวมข้อมูลเมตาเฉพาะของ GPG ทั้งหมดเพื่อให้สามารถนำเข้าไฟล์บนคอมพิวเตอร์เครื่องอื่นได้อย่างถูกต้อง

เราจะระบุไฟล์เอาต์พุตด้วยตัวเลือก --output ถ้าเราไม่ทำเช่นนั้น ผลลัพธ์จะถูกส่งไปยังหน้าต่างเทอร์มินัล

 gpg --export --export-options backup --output public.gpg 

การส่งออกคีย์ GPG สาธารณะ

หากคุณต้องการสำรองคีย์สำหรับข้อมูลประจำตัวเดียว ให้เพิ่มที่อยู่อีเมลที่เชื่อมโยงกับคีย์ในบรรทัดคำสั่ง หากคุณจำไม่ได้ว่าที่อยู่อีเมลใด ให้ใช้ตัวเลือก --list-secret-keys ตามที่อธิบายข้างต้น

 gpg --export --export-options สำรอง --output public.gpg [email protected] 

การส่งออกคีย์ GPG สาธารณะสำหรับข้อมูลประจำตัวเดียว

ในการสำรองคีย์ส่วนตัวของเรา เราจำเป็นต้องใช้ตัวเลือก --export-secret-keys แทน --export ตรวจสอบให้แน่ใจว่าคุณบันทึกสิ่งนี้ไปยังไฟล์อื่น

 gpg --export-secret-keys --export-options backup --output private.gpg 

การส่งออกคีย์ GPG ส่วนตัว

เนื่องจากนี่คือคีย์ส่วนตัวของคุณ คุณจะต้องตรวจสอบสิทธิ์กับ GPG ก่อนจึงจะดำเนินการต่อได้

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

ระบุข้อความรหัสผ่าน GPG เพื่อส่งออกคีย์ส่วนตัว

หากยอมรับข้อความรหัสผ่าน การส่งออกจะเกิดขึ้น

ในการสำรองความสัมพันธ์ที่เชื่อถือได้ เราต้องส่งออกการตั้งค่าจากไฟล์ “trustdb.gpg” ของคุณ เรากำลังส่งออกไปยังไฟล์ชื่อ “trust.gpg” นี่คือไฟล์ข้อความ สามารถดูได้โดยใช้ cat

 gpg --export-ownertrust > trust.gpg
 cat trust.gpg 

การส่งออกความสัมพันธ์ที่เชื่อถือได้ของ GPG

นี่คือสามไฟล์ที่เราสร้างขึ้น

 ls -hl *.gpg 

สามไฟล์ที่สร้างโดยคำสั่งการส่งออก

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

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

เราได้คัดลอกไฟล์ไปยังคอมพิวเตอร์ Manjaro 21 แล้ว

 ls *.gpg 

ไฟล์ที่ส่งออกถูกโอนไปยังคอมพิวเตอร์ Manjaro

โดยค่าเริ่มต้น Manjaro 21 ใช้ Z เชลล์ zsh ซึ่งเป็นสาเหตุที่ทำให้ดูแตกต่างออกไป แต่สิ่งนี้ไม่สำคัญ มันจะไม่กระทบอะไรเลย สิ่งที่เราทำอยู่ภายใต้โปรแกรม gpg ไม่ใช่เชลล์

ในการนำเข้าคีย์ของเรา เราต้องใช้ตัวเลือก --import

 gpg --import public.gpg 

การนำเข้าคีย์ GPG สาธารณะ

รายละเอียดของคีย์จะแสดงขึ้นเมื่อมีการนำเข้า ไฟล์ “trustdb.gpg” ก็ถูกสร้างขึ้นสำหรับเราเช่นกัน การนำเข้าคีย์ส่วนตัวนั้นง่ายเหมือนกัน เราใช้ตัวเลือก --import อีกครั้ง

 gpg --import private.gpg 

การนำเข้าคีย์ GPG ส่วนตัว

เราได้รับแจ้งให้ป้อนข้อความรหัสผ่าน

การป้อนข้อความรหัสผ่านเพื่อนำเข้าคีย์ GPG ส่วนตัว

พิมพ์ลงในช่อง "รหัสผ่าน" กดปุ่ม "Tab" แล้วกด "Enter"

การยืนยันคีย์ GPG ส่วนตัวที่นำเข้า

รายละเอียดของคีย์ที่นำเข้าจะปรากฏขึ้น ในกรณีของเรา เรามีคีย์เดียวเท่านั้น

ในการนำเข้าฐานข้อมูลความน่าเชื่อถือของเรา ให้พิมพ์:

 gpg --import-ownertrust trust.gpg 

การนำเข้าความสัมพันธ์ที่เชื่อถือได้ของ GPG

เราสามารถตรวจสอบว่าทุกอย่างนำเข้าอย่างถูกต้องโดยใช้ --list-secret-keys ตัวเลือกอีกครั้ง

 gpg --list-secret-keys --keyid-format LONG 

การตรวจสอบการนำเข้าได้ผล

สิ่งนี้ให้ผลลัพธ์เดียวกันกับที่เราเห็นบนคอมพิวเตอร์ Ubuntu ของเราก่อนหน้านี้

ปกป้องความเป็นส่วนตัวของคุณ

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

ที่เกี่ยวข้อง: วิธีสำรองข้อมูลระบบ Linux ของคุณด้วยrsync