เข้ารหัสข้อมูลสำรองนอกสถานที่โดยใช้ GPG ด้วยรหัสส่วนตัวไม่เคยอยู่บนเซิร์ฟเวอร์สำรอง?


11

ฉันมีเซิร์ฟเวอร์สำรองที่สร้างxzไฟล์บีบอัดtarของไดเรกทอรีต้นไม้เพื่อสำรองข้อมูล ไฟล์เก็บถาวร tar เหล่านี้สามารถมีขนาดใหญ่ (หลาย TB) อยู่splitเป็นชิ้น ๆ (2.5TB) และแต่ละชิ้นจะถูกเขียนลงในเทป LTO-6 และเทปจะไปนอกสถานที่

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

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

GPG ใช้รูปแบบการเข้ารหัสแบบไฮบริดภายใต้ประทุนพร้อมกับรหัสตัวเลขแบบสมมาตรเช่น AES พร้อมด้วยเซสชั่นคีย์และมีเพียงเซสชั่นคีย์เท่านั้นที่ได้รับคีย์สาธารณะ - ส่วนตัวที่เข้ารหัสสำหรับผู้รับ

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


ฉันสามารถบูรณาการล้อแน่นอน:

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

แต่มี "มาตรฐาน" หรือ builtin หรือวิธีปฏิบัติที่ดีที่สุดของการบรรลุข้างต้น?

คำตอบ:


18

นี่เป็นไปได้แน่นอนกับตัวเลือก--show-session-keyและ --override-session-key

ก่อนอื่นคุณต้องเริ่มต้นไฟล์ที่เข้ารหัสของคุณ นี่คือที่เก็บคีย์เซสชันที่เข้ารหัสไว้

root@qwerty:~/gpg# head -c 1024k bigfile.gpg > head.gpg

จากนั้นคัดลอกไปยังเวิร์กสเตชันของคุณและดึงกุญแจเซสชั่น

PS C:\Users\redacted\Downloads> gpg --show-session-key .\head.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"
gpg: session key: '9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D'

ตอนนี้คุณสามารถถอดรหัสไฟล์โดยใช้กุญแจเซสชั่นของคุณ

root@qwerty:~/gpg# gpg -d -o bigfile --override-session-key 9:926EC16DF1248A1C4401F5AD5D86C63C1BD4BF351ECEFB121C57EC209DE3933D bigfile.gpg
gpg: encrypted with 2048-bit RSA key, ID DC21D645, created 2016-02-01
  "admin <admin@domain.tld>"

นั่นเป็นวิธีแก้ปัญหาที่ยอดเยี่ยมสำหรับปัญหา
Lars

ขอบคุณ !! เคล็ดลับที่ดีกับheadและเช่น วิธีการแก้คันเดิมของฉัน
oberstet

4

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

ติดตั้งผ่าน apt ในแต่ละระบบของผู้ดูแลระบบระยะไกล

sudo apt-get install sshfs

สมมติว่าการกำหนดค่าผู้ดูแลระบบของ ssh มีลักษณะดังนี้

# configuration for ssh login to remote server
Host Remote
    Hostname Remote.web.domain
    User admin
    IdentityFile ~/.ssh/private.key

จากนั้นผู้ดูแลระบบของคุณสามารถใช้สิ่งที่ต้องการด้านล่างเพื่อติดตั้ง

# make a mount point
mkdir -p /mnt/remote
# mount remote directory to local file system
sshfs Remote:/path/to/encrypted/dir /mnt/remote

หากต้องการถอนติดตั้งหลังจากการตรวจสอบผู้ดูแลระบบระยะไกลสามารถใช้สิ่งต่อไปนี้

fusermount -u /mnt/remote

สิ่งที่น่าสนใจเกี่ยวกับการใช้ sshfs คือต้องใช้พับลิกคีย์สำหรับ GnuPG และ ssh บนเซิร์ฟเวอร์ระยะไกลเท่านั้นไพรเวตคีย์ที่เกี่ยวข้องจะยังคงอยู่ในระบบที่เป็นของตัวเอง nice bit ที่สองจนกระทั่งอ่านหรือเข้าถึงข้อมูลไฟล์ส่วนใหญ่จะอยู่ในระบบไฟล์ที่เกี่ยวข้อง

หากคุณยังคงมองหาเครื่องมือเพื่ออำนวยความสะดวกในการเข้ารหัสอัตโนมัติของบันทึกหรือไดเรกทอรีคุณอาจต้องการตรวจสอบศาสตราจารย์ของเครื่องมือแนวคิดที่ฉันได้ผลักดันให้GitHub (โดยเฉพาะสถานการณ์ที่สี่ที่เขียนขึ้นสำหรับsshsfการใช้งาน) ซึ่งมีการปรับแต่งเล็กน้อย ข้อมูลผ่าน GnuPG แต่โปรดเตือนว่ามันเป็นการทดลองและคุณสมบัติบางอย่างของมันอาจทำให้ข้อมูลเสียหายหากใช้งานในทางที่ผิด ซอร์สโค้ดน้อยกว่า ~ 1600 ~ บรรทัดดังนั้นจึงเป็นไปได้มากที่จะตรวจสอบน้อยกว่าหนึ่งสัปดาห์

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


2

หากคุณต้องการให้รหัสลับถูกเก็บไว้ในฮาร์ดดิสก์คุณสามารถสร้าง ramdisk (จำได้ไหม?) และโหลดคีย์ลับจากที่นั่นไม่ใช่ตำแหน่งที่ปลอดภัยบนเซิร์ฟเวอร์ของคุณตามต้องการ ใช้สำหรับถอดรหัสและเมื่อเขียนทับด้วย / dev / random ความลับต้องเข้าสู่ RAM เพื่อใช้งานโดย GPG แต่อย่างใดทำไมไม่สองครั้ง

หากคุณไม่สามารถให้รหัสลับบนเซิร์ฟเวอร์แม้แต่ใน RAM คุณก็มีความเป็นไปไม่ได้ทางเทคนิค GPG ต้องมีรหัสลับที่ไหนสักแห่งเพื่อถอดรหัสอะไร

ข้อมูล Ramdisk: /unix/66329/creating-a-ram-disk-on-linux


2
GPG ใช้ความลับแบบสมมาตรต่อข้อความ ("เซสชันคีย์") ที่แตกต่างกันสำหรับแต่ละข้อความที่เข้ารหัส มันคือกุญแจสมมาตรที่จำเป็นต้องมีในทางเทคนิคบนเครื่องที่ถอดรหัสข้อความที่เกี่ยวข้อง ฉันต้องการเก็บรหัสส่วนตัวของ GPG (ไม่สมมาตร) ออฟไลน์ GPG จะใช้หลังเพื่อเข้ารหัสคีย์เซสชันแบบสมมาตร ดังนั้นฉันหลังจากที่โครงการที่ทำให้การใช้แง่มุมเหล่านี้ ...
oberstet
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.