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


11

ฉันสามารถสร้างext4พาร์ติชันเข้ารหัสใหม่ด้วยเคอร์เนล 4.1 บน Ubuntu 15.04 ได้หรือไม่


2
มีความเป็นไปได้ที่ซ้ำกันของวิธีสร้างพาร์ติชั่นที่เข้ารหัส?
Ron

นี่ไม่ใช่คำตอบที่ซ้ำกันเนื่องจากไม่มีคำตอบที่มีอยู่เกี่ยวกับคุณสมบัติเฉพาะที่เพิ่มเข้ามาในเคอร์เนล 4.1 อ้างอิง: phoronix.com/ …
LiveWireBT

คำตอบ:


9

ก่อนปิดคำปฏิเสธ: ผมไม่เคยทำแบบนี้กับอูบุนตู แต่ในเครื่องที่มี Debian "ยืด" ติดตั้งโดยใช้ลินุกซ์เคอร์เนล 4.2.3 ที่ฉันเปิดใช้งานEXT4_FS_ENCRYPTIONบน

คำแนะนำของkmeawไม่ได้ผลสำหรับฉันเหมือนที่โพสต์ไว้ มีบางสิ่งหลงเหลืออยู่ (พารามิเตอร์บรรทัดคำสั่งและขั้นตอน)

  • อัปเดตe2fsprogsตามที่แสดงด้านบน
  • สร้างเกลือสุ่มของคุณ ฉันใช้สิ่งต่อไปนี้เพื่อเก็บไว้ใน "ที่ปลอดภัย":

    head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt
    echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
    
  • ในการใช้การเข้ารหัส ext4 ในระบบไฟล์ต้องตั้งค่าสถานะ "เข้ารหัส" ใน super-block นี่ไม่ใช่ค่าดีฟอลต์เมื่อสร้างระบบไฟล์ ext4 การใช้ยูทิลิตี "tune2fs" จาก e2fsprogs 1.43 หรือใหม่กว่าให้ตั้งค่าตัวเลือก "เข้ารหัส":

    sudo tune2fs -O encrypt /dev/sda4
    
  • เมานต์หรือติดตั้งระบบไฟล์ใหม่เพื่อให้เคอร์เนลรู้เกี่ยวกับการเปลี่ยนแปลง (อาจเป็นไปโดยอัตโนมัติ แต่ฉันเพิ่งทำสิ่งนี้ในพาร์ติชันแยกต่างหากดังนั้นฉันไม่แน่ใจ)

  • สร้างไดเร็กทอรีบนระบบไฟล์ที่เมาท์ด้วยการเข้ารหัสที่เปิดใช้งาน:

    sudo mkdir -p /secret/home/$USER
    sudo chown $USER:$USER /secret/home/$USER
    
  • สร้างคีย์ในพวงกุญแจและใช้เพื่อตั้งค่านโยบายสำหรับไดเรกทอรีที่จะเข้ารหัส ( sudoไม่จำเป็นต้องใช้คำสั่งที่นี่):

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    $ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    
  • หลังจากรีบูตแต่ละครั้งadd_keyสามารถใช้คำสั่งตั้งค่าคีย์สำหรับการถอดรหัสลับของไดเรกทอรีและลูกหลานของมัน:

    $ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt`
    Enter passphrase (echo disabled):
    Added key with descriptor [0132fed69f946c86]
    

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

  • คุณยังสามารถใช้add_keyโดยตรง นี้จะใช้เกลือเฉพาะระบบไฟล์ (ดังนั้นโฟลเดอร์ทั้งหมดภายใต้พาร์ทิชันที่จะมีเกลือเดียวกัน)

    $ /usr/sbin/e4crypt add_key /secret/home/$USER
    Added key with descriptor [0132fed69f946c86]
    Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
    

บทความใน Arch wiki แนะนำให้อ่านโพสต์บล็อกต่อไปนี้ซึ่งผู้เขียนเขียนโปรแกรมเพื่อทำให้ขั้นตอนง่ายขึ้น: blog.quarkslab.com/…ขณะที่เขียน 16.04 ยังคงอยู่ในการพัฒนาและมีการตั้งค่าเคอร์เนลที่สอดคล้องกันสองรายการ ตั้งค่าตัวเลือก e2fsprogs แม้ว่าจะยังคงเป็นรุ่น 1.42
LiveWireBT

ดี ... ฉันลองใช้คำแนะนำเหล่านั้นและโฟลเดอร์ของฉันถูกบล็อก ... ที่cp .. /secret/home/$USER/.ฉันได้รับ: « cp: ไม่สามารถสร้างไฟล์ปกติ '/secret/home/alexis/test-top-secret-image.svg' ได้: คีย์ไม่จำเป็นต้องใช้ ใช้ได้» ฉันเพิ่งทำตามคำแนะนำของคุณดังนั้นฉันเดาว่ามีอะไรเปลี่ยนแปลง
Alexis Wilke

อินสแตนซ์ที่สองของ " /usr/bin/e4crypt" ไม่มี "s" ใน "/ [s] bin"
Alexis Wilke

3

Linux 4.1 มาพร้อมกับคุณสมบัติ Ext4 ใหม่เพื่อเข้ารหัสไดเรกทอรีของระบบไฟล์ กุญแจการเข้ารหัสจะถูกเก็บไว้ในพวงกุญแจ ในการเริ่มต้นให้แน่ใจว่าคุณได้เปิดใช้งานCONFIG_KEYSและCONFIG_EXT4_FS_ENCRYPTIONตัวเลือกเคอร์เนลและคุณมีเคอร์เนล 4.1 หรือสูงกว่า

ก่อนอื่นคุณต้องอัปเดต e2fsprogs เป็นอย่างน้อยเวอร์ชัน 1.43 ซึ่งยังคงเป็น WIP ในขณะที่เขียนดังนั้นเราต้องดึงข้อมูลจากที่เก็บ git :

$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

แหล่ง e4crypt ได้ปิดการใช้งานส่วนที่เกี่ยวข้องในซอร์สโค้ดของมันเปิดใช้งานโดยการแก้ไข misc / e4crypt.c และลบสองบรรทัดนี้ใกล้กับบรรทัดที่ 714:

    printf("arg %s\n", argv[optind]);
    exit(0);

ตอนนี้สร้างและติดตั้ง e2fsprogs ใหม่:

$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb

ตรวจสอบเวอร์ชั่นของคุณตอนนี้ควรเป็น 1.43-WIP:

# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
        Using EXT2FS Library version 1.43-WIP, 18-May-2015

ในการทำงานกับกุญแจเราจำเป็นต้องติดตั้งkeyutilsแพคเกจ:

$ sudo apt-get install keyutils

มาสร้างไดเรกทอรีที่เราจะเข้ารหัส นโยบายการเข้ารหัสสามารถตั้งค่าได้เฉพาะในไดเรกทอรีที่ว่างเปล่า:

$ sudo mkdir -p /encrypted/dir

ก่อนอื่นให้สร้างค่าเกลือแบบสุ่มและเก็บไว้ในที่ปลอดภัย:

$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459

ตอนนี้สร้างและเพิ่มคีย์ใหม่ในพวงกุญแจของคุณ: ขั้นตอนนี้ควรทำซ้ำทุกครั้งที่คุณล้างพวงกุญแจ (รีบูต)

$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled): 
Added key with descriptor [f88747555a6115f5]

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

$ keyctl show
Session Keyring
1021618178 --alswrv   1000  1000  keyring: _ses
 176349519 --alsw-v   1000  1000   \_ logon: ext4:f88747555a6115f5

เกือบเสร็จแล้ว. ตอนนี้ตั้งค่านโยบายการเข้ารหัสสำหรับไดเรกทอรี:

$ e4crypt set_policy f88747555a6115f5 /encrypted/dir

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


คำตอบนี้มีปัญหาการจัดรูปแบบที่รุนแรง ฉันพยายามที่จะปรับปรุงให้ดีที่สุดเท่าที่จะทำได้ แต่มันก็ไม่สมเหตุสมผลสำหรับฉันว่าทำไมคนเราถึงพยายามใช้การจัดรูปแบบมาร์กดาวน์จัดการคำสั่งที่ซับซ้อนและทำการแก้ไขที่คล้ายกันใน Arch wiki ในเวลาเดียวกัน ที่ขยะที่สร้างการแสดงผลในตัวอย่างและตัดสินใจที่จะทิ้งมันตามที่เป็นอยู่ ไม่มีคำอธิบายที่น่าพอใจหรือมีการอ้างอิงเพิ่มเติมว่าเพราะเหตุใดจึงต้องลบบรรทัด นอกจากนี้ขอแนะนำให้ใช้ debuild ในแบบที่ไม่ได้ตั้งใจ (ด้วยแพ็คเกจที่ไม่มีการเดบิวต์มีแพ็คเกจทดลองใน Debian) และไม่ทำงาน -1
LiveWireBT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.