การเข้ารหัสพาร์ติชัน Linux การเข้ารหัสพาร์ทิชัน บล็อกสแต็กอุปกรณ์

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

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

ประสิทธิภาพลดลงเล็กน้อย อย่างน้อยก็จนกว่าจะมีการใช้ SWAP SWAP เป็นพาร์ติชันดิสก์หรือไฟล์พิเศษที่ระบบปฏิบัติการจะย้าย RAM แต่ละบล็อกไปเมื่อมี RAM ไม่เพียงพอสำหรับการเรียกใช้แอปพลิเคชัน SWAP จะถูกเข้ารหัสเช่นกันหากคุณเลือกการเข้ารหัสของโฮมไดเร็กทอรีในตัวติดตั้ง และโหมดสลีปหยุดทำงาน

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

1.3 การเข้ารหัสใน gnome – Seahorse

Linux Mint มียูทิลิตี้รหัสผ่านและคีย์ในตัวหรือ Seahorse ด้วยความสามารถนี้ ผู้ใช้สามารถดำเนินการโดยใช้คีย์ รหัสผ่าน และใบรับรองทั้งหมดที่มีอยู่ในระบบปฏิบัติการนี้

โดยพื้นฐานแล้ว Seahorse เป็นแอปพลิเคชันสำหรับ GNOME (GNOME เป็นสภาพแวดล้อมเดสก์ท็อปฟรีสำหรับระบบปฏิบัติการที่คล้ายกับ Unix) ซึ่งเป็นส่วนหน้าของ GnuPG (โปรแกรมฟรีสำหรับการเข้ารหัสข้อมูลและสร้างลายเซ็นดิจิทัลอิเล็กทรอนิกส์) และได้รับการออกแบบมาเพื่อจัดการคีย์การเข้ารหัสและ รหัสผ่าน โดยมาแทนที่ GNOME Keyring ซึ่งถูกแทนที่โดยสิ้นเชิงใน GNOME 2.22 แม้ว่าจะมีการประกาศย้อนกลับไปใน GNOME 2.18 ก็ตาม ช่วยให้คุณสามารถดำเนินการทั้งหมดที่จำเป็นต้องทำก่อนหน้านี้บนบรรทัดคำสั่งและรวมไว้ภายใต้อินเทอร์เฟซเดียว:

    จัดการความปลอดภัยของสภาพแวดล้อมการทำงานของคุณและคีย์ OpenPGP และ SSH

    เข้ารหัส ขยาย และสแกนไฟล์และข้อความ

    เพิ่มและตรวจสอบลายเซ็นดิจิทัลลงในเอกสาร

    ซิงโครไนซ์คีย์กับเซิร์ฟเวอร์คีย์

    สร้างและเผยแพร่คีย์

    สำรองข้อมูลสำคัญ

    เพิ่มลงในรูปภาพใน GDK ที่รองรับเป็น ID รูปภาพ OpenGPG

1.4 ทรูคริปต์

TrueCrypt มีอินเทอร์เฟซแบบกราฟิกที่ค่อนข้างสะดวก แต่น่าเสียดายที่นักพัฒนาได้รวมฮาร์ดโค้ดกับตัวจัดการไฟล์ Nautilus ไว้ในโค้ด

คุณสามารถใช้วิธีต่างๆ เพื่อเข้ารหัสข้อมูลได้

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

การสร้างพาร์ติชั่น/ไฟล์ที่เข้ารหัส

การสร้างไฟล์คีย์:

truecrypt -create-keyfile /home/user/test/file ,โดยที่ file คือชื่อของไฟล์คีย์

การสร้างคอนเทนเนอร์ ในกรณีนี้คือส่วน:

sudo truecrypt -k /home/user/test/file -c /dev/sda9

แทนที่จะใช้พาร์ติชัน /dev/sda9 คุณยังสามารถระบุไฟล์ได้ เช่น /home/user/test/cryptofile แต่ในกรณีนี้ คุณจะต้องระบุขนาดของมัน โดยจะทำโดยใช้พารามิเตอร์ -size=5G ก่อน พารามิเตอร์ -c ตัวอย่างด้านบนจะสร้างไฟล์เข้ารหัสขนาด 5GB บางครั้ง TrueCrypt ยอมรับขนาดเป็นไบต์เท่านั้น สำหรับ 5 GB คุณสามารถคำนวณค่าล่วงหน้าและระบุ -size=5368709120 หรือเขียนดังนี้: -size=`echo 1024^3*5 | ก่อนคริสต์ศักราช

ไฟล์คีย์ที่สร้างไว้แล้วจะถูกใช้สำหรับการเข้ารหัส

เมื่อสร้าง คุณจะได้รับตัวเลือกประเภทคอนเทนเนอร์ (ปกติ/ซ่อน) ระบบไฟล์ (FAT, ext2/3/4 หรือไม่มี FS) ในตัวอย่างนี้ โหมดที่ไม่ใช้ FS ถูกเลือกไว้ คุณยังจะได้รับตัวเลือกอัลกอริธึมการเข้ารหัส (เช่น AES) รวมถึงอัลกอริธึมแฮช (เช่น SHA-1) สำหรับการเข้ารหัสสตรีมข้อมูล

TrueCrypt ใช้เพื่อเข้ารหัสข้อมูลได้ทันที กล่าวคือ คุณสามารถติดตั้งคอนเทนเนอร์และทำงานกับไฟล์ในนั้นได้ตามปกติ (เปิด/แก้ไข/ปิด/สร้าง/ลบ) ซึ่งสะดวกมาก

สร้างพาร์ติชัน/ไฟล์ที่เข้ารหัสแล้ว ตอนนี้ หากคุณต้องการฟอร์แมตระบบไฟล์ภายใน (ต่อไปนี้จะเรียกว่า FS) คุณควรดำเนินการดังต่อไปนี้

เลือกส่วนที่ต้องการโดยใช้ Truecrypt:

truecrypt -k /home/user/test/file /dev/sda9

ตามค่าเริ่มต้น อุปกรณ์ที่สร้าง Truecrypt /dev/mapper/truecrypt0 จะถูกใช้งาน เมื่อเข้าถึงอุปกรณ์นี้ คุณจะสามารถเปลี่ยน FS ในคอนเทนเนอร์ที่เข้ารหัสได้ เช่น ในกรณีนี้จำเป็นต้องทำสิ่งนี้

sudo mkfs.ext4 -v /dev/mapper/truecrypt0

นี่คือวิธีการสร้าง ext4 FS ภายในคอนเทนเนอร์ที่เข้ารหัสนี้

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

sudo mount /dev/mapper/truecrypt0 /mnt/crypto.phpโดยที่ /mnt/crypto คือไดเร็กทอรีที่ติดตั้งคอนเทนเนอร์ที่เข้ารหัสไว้

ทรูคริปโต -d

ตอนนี้หากไม่ทราบไฟล์คีย์และรหัสผ่าน จะไม่มีใครสามารถอ่านข้อมูลที่ซ่อนอยู่ได้

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


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

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

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

บทความนี้จะอธิบายการตั้งค่าวิธีการป้องกันการเข้ารหัสต่อไปนี้:
dm-crypt/LUKS- การสร้างคอนเทนเนอร์ crypto โดยใช้ device-mapper และเคอร์เนล CryptoAPI
eCryptfs- การเข้ารหัสในระดับระบบไฟล์
EncFS- คล้ายกับที่อธิบายไว้ข้างต้น แต่ไม่จำเป็นต้องโหลดโมดูลเคอร์เนล

DM-CRYPT/LUKS
การกำหนดค่า dm-crypt มีสองประเภท - แบบธรรมดาและ LUKS ข้อแตกต่างก็คือเมื่อใช้ LUKS ข้อมูลเมตาจะปรากฏที่จุดเริ่มต้นของ cryptotome ซึ่งทำให้คุณสามารถใช้หลายคีย์และเปลี่ยนแปลงได้ ในขณะเดียวกัน การมีอยู่ของส่วนหัวดังกล่าวในบางกรณีก็สามารถประนีประนอมในตัวเองได้ อย่างไรก็ตาม โดยส่วนใหญ่แล้ว กรณีที่คล้ายกันพื้นที่ที่มีเอนโทรปีในระดับสูงก็จะประนีประนอมเช่นกัน การตั้งค่า dm-crypt ธรรมดาด้วยไฟล์คีย์และข้อความรหัสผ่าน เรามาดูวิธีการตั้งค่าการรวมกันของโวลุ่ม dm-crypt ธรรมดาที่เข้ารหัสด้วยไฟล์คีย์ จากนั้นจึงบรรจุอยู่ในคอนเทนเนอร์ LUKS ขั้นแรกคุณต้องตัดสินใจว่าจะวางส่วนต่างๆ อย่างไร มีสามตัวเลือกหลัก:
แค่ปริมาณการเข้ารหัสลับ
อันดับแรกเป็นโวลุ่ม crypto จากนั้น LVM จะอยู่ด้านบน
โวลุ่ม crypto แรก จากนั้น RAID จากนั้น LVM

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

# dd if=/dev/zero of=/root/key.luks bs=512 count=2057

# cryptsetup --align-payload=1 luksFormat /root/key.luks

# cryptsetup luksOpen /root/key.luks cryptokey

# dd if=/dev/urandom of=/dev/mapper/cryptokey

คำสั่งแรกเตรียมไฟล์คอนเทนเนอร์ คำสั่งที่สองสร้างคอนเทนเนอร์นี้ คำสั่งที่สามเชื่อมต่อ และคำสั่งที่สี่สร้างข้อมูลสำคัญ เป็นที่น่าสังเกตว่าจำเป็นต้องใช้ตัวเลือก –align-payload=1 เพื่อให้แน่ใจว่าขนาดของข้อมูลเมตา LUKS ไม่ใช่บล็อก 4096 512 ไบต์ แต่มีเพียง 2056 เท่านั้น ดังนั้น 512 ไบต์จึงยังคงอยู่สำหรับข้อมูลคีย์จริง
จากนั้นเราก็ไปสร้าง cryptotome กันต่อ ณ จุดนี้ คุณสามารถเลือกเติมข้อมูลสุ่มเทียมลงในดิสก์เพื่อทำให้การวิเคราะห์การเข้ารหัสเป็นเรื่องยาก (หากมี) จากนั้นคุณสามารถสร้าง cryptotome ได้ คำสั่งนี้มีลักษณะดังนี้ (แน่นอน ในกรณีอื่น ตัวระบุอาจแตกต่างกัน ดังนั้นคุณต้องระมัดระวัง):

# cryptsetup --cipher=serpent-xts-plain64 --offset=0--key-file=/dev/mapper/cryptokey --key-size=512 open --type=plain/dev/disk/by-id/ ata-VBOX_HARDDISK_VB05eadebe-f25e8d59 การเข้ารหัสลับ0


หากจำเป็น คุณต้องทำซ้ำคำสั่งที่คล้ายกันบนอุปกรณ์อื่นที่ต้องมีการเข้ารหัส จากนั้นเราจะสร้าง LVM และ FS บน cryptovolumes:

มาสร้างไฟล์ /etc/initramfs-tools/hooks/cryptokeys โดยมีเนื้อหาดังต่อไปนี้โดยประมาณ (ส่วนบริการของสคริปต์จะถูกละเว้น):

และไฟล์ /etc/initramfs-tools/scripts/local-top/cryptokeys (ส่วนบริการอีกครั้ง
ละเว้น):

# <...>

modprobe -b dm_crypt

ในขณะที่! (/sbin/cryptsetup luksOpen /etc/crypto/key.luks cryptokey

/dev/disk/by - id /ata - VBOX_HARDDISK_VB05eadebe - f25e8d59 crypto0

&& /sbin/cryptsetup plainOpen -- คีย์ - ไฟล์ = /dev/mapper/cryptokey

/dev/disk/by - id /ata - VBOX_HARDDISK_VBc2414841 - cfeccde5 crypto1

&& /sbin/cryptsetup luksปิด cryptokey

) ; ทำ

สะท้อน “ลองอีกครั้ง . . ”

เสร็จแล้ว

สองไฟล์นี้จะต้องปฏิบัติการได้ จากนั้นเราสร้าง initrd:

# อัปเดต-initramfs -u -k ทั้งหมด -v

ครั้งถัดไปที่คุณรีบูต คุณจะถูกถามรหัสผ่านสำหรับคอนเทนเนอร์ LUKS หากคุณใช้ dm-crypt ธรรมดา จะมีตัวเลือกอื่น - เลเยอร์ด้านล่างทั่วไปซึ่งช่วยให้คุณทำบางอย่างเช่นโวลุ่ม TrueCrypt ที่ซ่อนอยู่ ยกตัวอย่างง่ายกว่า:

# cryptsetup --cipher=serpent-xts-plain64 --offset=0--size=2097152 --shared open --type=plain/dev/disk/by-id/ata-VBOX_HARDDISK_VBcda8398f-f1f1deec crypto

# cryptsetup --cipher=serpent-xts-plain64 --offset=2097152--size=2097152 --shared open --type=plain/dev/disk/by-id/ata-VBOX_HARDDISK_VBcda8398f-f1f1deec crypto_shared

ขนาดและออฟเซ็ตระบุไว้ในบล็อกขนาด 512 ไบต์


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

ในที่สุดเราก็เพิ่ม รหัสใหม่ไปที่ระบบ:

พิจารณาขั้นตอนการกู้คืนโวลุ่ม LUKS ด้วย ตัวเลือกที่ง่ายที่สุดคือเมื่อมีสำเนาส่วนหัว ในกรณีนี้ ต้องใช้คำสั่งเดียวเท่านั้นในการกู้คืน:

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

ENCFS
มาดูวิธีกำหนดค่า EncFS ให้เมานต์อัตโนมัติเมื่อเข้าสู่ระบบ ขั้นแรก มาติดตั้งแพ็คเกจที่จำเป็นกันก่อน:

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

ถัดไปคุณต้องแก้ไขไฟล์ /etc/security/pam_encfs.conf:

และไฟล์ /etc/fuse.conf:

และเพิ่มผู้ใช้ในกลุ่มฟิวส์:

$ sudo usermod - a - G ฟิวส์ $ USER

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

ECRYPTFS
เป็นที่ทราบกันดีว่า eCryptFS ถูกใช้ใน Ubuntu เป็นเครื่องมือเริ่มต้นสำหรับการปกป้องโฮมไดเร็กตอรี่ มาดูวิธีการทำงานกัน - มาสร้างไดเร็กทอรีที่เข้ารหัสด้วยตนเองกันดีกว่า มาติดตั้งแพ็คเกจกัน:

การสร้าง eCryptFS

และเมานต์ระบบไฟล์ (ในระหว่างการเมานต์ครั้งแรก ข้อมูลเมตาที่จำเป็นทั้งหมดจะถูกสร้างขึ้น):

$ sudo mount - t ecryptfs / home / rom / . ความลับ/home/rom/secret

คุณจะถูกถามถึงข้อความรหัสผ่าน (เพียงครั้งเดียวเท่านั้น การป้อนข้อมูลซ้ำจะไม่ถูกนำมาใช้ ซึ่งดูไม่ดีนัก การตัดสินใจที่ดีโดยระบุว่าต้องยาว) จากนั้นจะถามประเภทของการเข้ารหัส (AES, Blowfish, 3DES, Twofish, CAST6 และ CAST5) ขนาดคีย์ คำถามจะถามว่าจะอนุญาตหรือปฏิเสธไฟล์ที่ไม่ได้เข้ารหัสในไดเร็กทอรี กับไฟล์ที่เข้ารหัส ไม่ว่าจะเข้ารหัสชื่อไฟล์... และสุดท้ายมันจะถามว่าเราต้องการเมานต์และบันทึกลายเซ็นลงในไฟล์ใดไฟล์หนึ่งจริงๆ หรือไม่ คำถามไม่ได้โง่อย่างที่คิดในตอนแรก: ในซอฟต์แวร์นี้ หากไม่มีลายเซ็น ไม่มีทางที่จะแยกรหัสผ่านที่ถูกต้องจากรหัสผ่านที่ไม่ถูกต้องได้

การเข้ารหัสโฮมไดเร็กตอรี่ของผู้ใช้

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


คำเตือนให้จำรหัสผ่านของคุณ

เรามาดูวิธีการคืนค่ากัน สมมติว่าข้อความรหัสผ่านไม่ได้ถูกบันทึก และการกู้คืนมาจาก Live CD ถือว่าระบบไฟล์ถูกเมาท์แล้ว ไปที่ไดเร็กทอรี home/.ecryptfs/rom/.ecryptfs และพิมพ์คำสั่ง:

DM-ยืนยัน
โมดูล dm-verify ได้รับการออกแบบมาเพื่อตรวจสอบความสมบูรณ์ของอุปกรณ์บล็อก การตรวจสอบความถูกต้องดำเนินการโดยใช้แฮชทรี โดยที่ "ใบไม้" คือผลรวมแฮชของบล็อก และ "กิ่งก้าน" คือผลรวมแฮชของชุด "ใบไม้" ดังนั้นในการตรวจสอบอุปกรณ์บล็อก (ไม่ว่าจะเป็นพาร์ติชันหรือดิสก์) ก็เพียงพอที่จะตรวจสอบเช็คซัมเดียวเท่านั้น
กลไกนี้ (ร่วมกับ ลายเซ็นดิจิทัล) ใช้ในอุปกรณ์ Android บางตัวเพื่อป้องกันการปรับเปลี่ยนพาร์ติชันระบบ รวมถึงใน Google Chromium OS

บทสรุป
จริงๆ แล้ว Linux มีเครื่องมือมากมายสำหรับการปกป้องข้อมูลการเข้ารหัส จากเครื่องมือทั้งสามที่อธิบายไว้ มีอย่างน้อยหนึ่งเครื่องมือที่มีอยู่ในลีนุกซ์รุ่นใหม่ทั้งหมด แต่จะเลือกอะไรล่ะ?
dm-crypt/LUKSควรใช้ในกรณีที่เป็นไปได้ที่จะปิดการใช้งานวอลลุมที่เข้ารหัสอย่างรวดเร็ว และเมื่อไม่จำเป็นต้องใช้สำเนาสำรองหรือถูกจัดประเภทเป็นอย่างอื่น ในกรณีนี้ การตัดสินใจครั้งนี้มีประสิทธิภาพมากกว่าโดยเฉพาะอย่างยิ่งเมื่อพิจารณาว่าการเข้ารหัสสามารถทำได้ในลำดับของการซ้อนและประเภทโดยพลการ (เช่น AES-Twofish-AES) - สวรรค์ที่แท้จริง
สำหรับคนหวาดระแวง
eCryptFSเหมาะสำหรับกรณีที่คุณต้องการบันทึกข้อมูลที่เข้ารหัสไว้ที่ใดที่หนึ่ง เช่น ในระบบคลาวด์ มันมีการเข้ารหัสที่ค่อนข้างแข็งแกร่ง (แม้ว่าตัวเลือก 128 บิตเริ่มต้นจะมีตัวเลือกในการลดความแข็งแกร่งของการเข้ารหัสลงสองบิต) และมีความโปร่งใสต่อผู้ใช้ปลายทาง
EncFSแต่มันเป็นชายชราเมื่อประมาณสิบปีที่แล้วโดยอิงจากผลงานโบราณยิ่งกว่านั้นอีก ปัจจุบันไม่แนะนำให้ใช้เนื่องจากอาจมีช่องโหว่ด้านความปลอดภัย แต่สามารถใช้เป็นเครื่องมือข้ามแพลตฟอร์มสำหรับการปกป้องข้อมูลที่ไม่ละเอียดอ่อนในระบบคลาวด์

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

ดิสก์ (หรือ TrueCrypt) ฉันรู้ว่ามีงานเพิ่มการรองรับการเข้ารหัสให้กับ GRUB2 แต่ยังไม่พร้อม มีทางเลือกอื่นอีกไหม?

(โปรดทราบว่าจริงๆ แล้วฉันหมายถึงการเข้ารหัสดิสก์แบบเต็มที่นี่ รวมถึง /boot)

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

โดยไม่ต้องถกเถียงว่าทำไมฉันถึงต้องการ /boot เพื่อเข้ารหัส ต่อไปนี้เป็นบทความที่อธิบายสิ่งที่ฉันต้องการโดยอิงจาก GRUB2 เวอร์ชันแก้ไข:

  • http://xercestech.com/full-system-encryption-for-linux.geek

ปัญหาคือว่าการแก้ไขเหล่านี้ดูเหมือนจะไม่ได้รับการสนับสนุนในโค้ดเบส GRUB2 ปัจจุบัน (หรือบางทีฉันอาจขาดอะไรบางอย่างไป)

8 โซลูชั่นรวบรวมเว็บฟอร์มสำหรับ “Linux boot loader ที่รองรับการเข้ารหัสดิสก์แบบเต็ม?”

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

อัปเดต (2015) : รุ่นล่าสุด GRUB2 (2.00) มีรหัสสำหรับเข้าถึงพาร์ติชัน LUKS และ GELI ที่เข้ารหัสอยู่แล้ว (ลิงก์ xercestch.com ที่ OP ให้ไว้กล่าวถึงการแก้ไขครั้งแรกสำหรับสิ่งนี้ แต่ตอนนี้รวมอยู่ในเวอร์ชันล่าสุดแล้ว)

อย่างไรก็ตาม หากคุณกำลังพยายามเข้ารหัสไดรฟ์ทั้งหมดด้วยเหตุผลด้านความปลอดภัย โปรดทราบว่าบูตโหลดเดอร์ที่ไม่ได้เข้ารหัส (เช่น TrueCrypt, BitLocker หรือ GRUB ที่แก้ไขแล้ว) จะไม่ให้การป้องกันใด ๆ มากไปกว่าพาร์ติชั่น /boot ที่ไม่ได้เข้ารหัส (ดังที่ SP ชี้ให้เห็น ในความคิดเห็นด้านบน) ใครก็ตามที่สามารถเข้าถึงคอมพิวเตอร์ได้สามารถแทนที่ด้วยเวอร์ชันที่กำหนดเองได้อย่างง่ายดาย มีการกล่าวถึงในบทความ xercestech.com ที่คุณเชื่อมโยง:

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

โปรดทราบว่าผลิตภัณฑ์ซอฟต์แวร์ทั้งหมดสำหรับ การเข้ารหัสเต็มรูปแบบไดรฟ์มีจุดอ่อนนี้ ไม่ว่าไดรฟ์เหล่านั้นจะใช้ bootloader ที่ไม่ได้เข้ารหัสหรือพาร์ติชันสำหรับบูต/พรีบูตที่ไม่ได้เข้ารหัสก็ตาม แม้แต่ผลิตภัณฑ์ที่รองรับชิป TPM (Trusted Platform Module) เช่น BitLocker ก็สามารถใช้งานได้โดยไม่ต้องเปลี่ยนฮาร์ดแวร์

แนวทางที่ดีกว่าคือ:

  1. ถอดรหัสที่ระดับ BIOS (ใน เมนบอร์ดบนดิสก์อะแดปเตอร์หรือฮาร์ดแวร์ภายนอก [สมาร์ทการ์ด] ที่มีหรือไม่มีชิป TPM) หรือ
  2. นำรหัสอนุญาต PBA (การอนุญาตก่อนบูต) (/พาร์ติชันสำหรับบูตในกรณีนี้) ไปไว้ในอุปกรณ์แบบถอดได้ (เช่น สมาร์ทการ์ดหรือไดรฟ์ USB)

ในการดำเนินการนี้ด้วยวิธีที่สอง คุณสามารถตรวจสอบโครงการ Linux Full Disk Encryption (LFDE) ได้ที่: http://lfde.org/ ซึ่งมีสคริปต์หลังการติดตั้งเพื่อย้ายพาร์ติชัน /boot ไปยังไดรฟ์ USB ภายนอก เข้ารหัสคีย์ด้วย GPG และจัดเก็บไว้ใน USB ด้วย ด้วยวิธีนี้ ส่วนที่อ่อนแอของเส้นทางการบูต (พาร์ติชัน /บูตที่ไม่ได้เข้ารหัส) จะอยู่กับคุณเสมอ (คุณจะเป็นคนเดียวที่สามารถเข้าถึงโค้ดและคีย์ถอดรหัสได้) ( บันทึก: ไซต์นี้สูญหายและบล็อกของผู้เขียนก็หายไปเช่นกัน อย่างไรก็ตาม คุณสามารถค้นหาไฟล์เก่าได้ที่ https://github.com/mv-code/lfde เพียงสังเกตว่าการพัฒนาครั้งล่าสุดเสร็จสิ้นเมื่อ 6 ปีที่แล้ว) เป็นทางเลือกที่ง่ายกว่า คุณสามารถติดตั้งพาร์ติชันสำหรับเริ่มระบบที่ไม่ได้เข้ารหัสบนไดรฟ์ USB เมื่อติดตั้งระบบปฏิบัติการ

ขอแสดงความนับถือ M.V.

ทำให้ RAMdisk และโฟลเดอร์ /boot แรกของคุณไม่มีการเข้ารหัส

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

ก่อนที่คุณจะประกาศว่า "เป็นการแฮ็ก" โปรดจำไว้ว่า ส่วนใหญ่ (หากไม่ใช่ทั้งหมด) การแจกแจงลินุกซ์โหลดโดยค่าเริ่มต้นวันนี้ สิ่งนี้ทำให้ระบบของคุณสามารถบู๊ตและโหลด FS รูทได้อย่างชัดเจนโดยใช้โมดูลที่จำเป็นต้องโหลดจากระบบไฟล์ (ปัญหาไก่กับไข่) ตัวอย่างเช่น หากระบบไฟล์รูทของคุณอยู่บนโวลุ่ม RAID ของฮาร์ดแวร์ และคุณจำเป็นต้องโหลดไดรเวอร์ของระบบก่อนจึงจะสามารถติดตั้ง FS รูทได้

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

ฉันเชื่อว่าส่วนใหญ่ สิ่งที่คุณต้องการคือคำแนะนำในการติดตั้งระบบปฏิบัติการด้วย HD ที่เข้ารหัสก่อน

Ubuntu มีหน้าที่ดีพร้อมคำแนะนำเกี่ยวกับวิธีสร้างพาร์ติชันที่เข้ารหัส, LMVP, โฟลเดอร์ ฯลฯ เพียงเวอร์ชันของการแจกจ่ายของคุณ...

ไม่ ฉันคิดว่าไม่

คุณจำเป็นต้องเข้ารหัส/ดาวน์โหลดจริงๆ หรือไม่? ฉันสงสัยว่าไม่ ระบบไฟล์ที่เหลือสามารถเข้ารหัสได้โดยซอฟต์แวร์ Linux ปกติ ซึ่งอยู่ใน initramfs ใน /boot และแจ้งให้ผู้ใช้ทราบ

ดูเหมือนคุณกำลังขอสิ่งที่ทำไม่ได้แล้วมาเปรียบเทียบกัน โซลูชันวินโดวส์, ที่ ซ่อนการใช้งานจากคุณแต่จริงๆ แล้วทำแบบเดียวกับที่ Linux ทำ

ทางออกที่ใกล้ที่สุดที่ฉันคิดได้คือการใช้ ฮาร์ดดิสซึ่งใช้การรักษาความปลอดภัยและการเข้ารหัสด้วยรหัสผ่าน แล็ปท็อป Thinkpad บางรุ่นใช้โซลูชันฮาร์ดแวร์เหล่านี้

คำตอบมีระบุไว้ในบทความ "ตอนนี้เป็นไปได้ด้วยส่วนขยายของบูตโหลดเดอร์ GRUB2 รุ่นต่อไป ซึ่งได้รับการแพตช์เพื่อรองรับไม่เพียงเท่านั้น" และ "เราต้องการติดตั้งอิมเมจใหม่ด้วยการรองรับ luks grub2 ในภายหลัง" และ "ตอนนี้เราจะรวบรวมซอร์ส GRUB2 ด้วย LUKS สนับสนุน. "ดูเหมือนว่าจะมีโปรแกรมแก้ไขด่วนหรือส่วนขยายที่คุณต้องได้รับและเปิดใช้งานด้วย GRUB2 หรือแหล่ง GRUB2 ที่แยกออกมา

Grub2 เวอร์ชัน 2.02~beta3 สามารถทำได้หลายอย่างที่ Grub2 เวอร์ชัน 2.02~beta2 ไม่สามารถทำได้ ทดสอบโดยฉัน:

  1. การบูทโดยใช้ดิสก์ Super Grub 2
  2. พิมพ์ "c" เพื่อไปที่บรรทัดคำสั่ง
  3. ป้อนคำสั่งเพื่อเมานต์พาร์ติชั่นที่เข้ารหัสที่ฉันต้องการ
    • อินสโมด ลักซ์
    • cryptomount(hd0, #) // โดยที่ # แสดงถึงพาร์ติชันที่เข้ารหัส
  4. ป้อนข้อความรหัสผ่านและป้อนคำสั่งบางคำสั่ง
    • มัลติบูต (crypto0) /grub/i386-pc/core.img
    • บูต

สิ่งนี้จะโหลด Grub2 อื่นที่อยู่ในพาร์ติชันที่เข้ารหัส การโจมตีที่บ้าคลั่งอย่างชั่วร้ายไม่มีที่นี่ ... ฉันบูตจากซีดี (อ่านอย่างเดียว) จากนั้นเมานต์พาร์ติชันที่เข้ารหัส (ไม่ใช่ข้อความรหัสผ่าน อะไรก็ได้!) จากนั้นบูตจากภายใน พาร์ติชันที่เข้ารหัสและการบูต Grub2 ด้วยเมนูของตัวเอง ฯลฯ

คำเตือน: Grub2 เวอร์ชัน 2.02~beta2 ไม่สามารถทำเช่นเดียวกันได้เนื่องจากมีข้อบกพร่องบางอย่าง (ซึ่งดูเหมือนจะได้รับการแก้ไขใน Grub2 เวอร์ชัน 2.02~beta3) ที่เกี่ยวข้องกับคำสั่ง cryptomount...

ข้อผิดพลาด beta2 ที่ฉันกำลังพูดถึงคือ:

  1. มันไม่ได้ติดตั้งพาร์ติชั่นที่เข้ารหัสจริง ๆ ดังนั้นจึงไม่อนุญาตให้คุณเข้าถึง (crypto0)/*
  2. หากมีมากกว่าหนึ่งพาร์ติชั่นที่เข้ารหัส การใช้ cryptomount -a ต้องใช้เพียงข้อความรหัสผ่านเดียวเท่านั้น
  3. หลังจากรัน cryptomount เมื่อมันทำงานอีกครั้ง ก็ไม่ทำอะไรเลย

ในเบต้า 3:

  1. มันเมานต์พาร์ติชั่นที่เข้ารหัสและอนุญาตให้คุณเข้าถึงไฟล์ผ่าน (crypto0)/* หรือ (crypto1)/* ฯลฯ หากมีการติดตั้งมากกว่าหนึ่งไฟล์ในเวลาเดียวกัน
  2. มันจะถามแต่ละข้อความรหัสผ่าน (หนึ่งข้อความต่อส่วนที่เข้ารหัส)
  3. สิ่งนี้ช่วยให้คุณสามารถรันได้บ่อยเท่าที่คุณต้องการ คุณสามารถติดตั้งอันหนึ่ง จากนั้นอีกอันหนึ่ง ฯลฯ

หมายเหตุด้านข้าง: ฉันไม่ได้หาวิธียกเลิกการต่อเชื่อมนอกเหนือจากการรีบูตหรือบูตเครื่องอื่นหรือตัวโหลดการบูต grub2 / อื่น ๆ อื่น ๆ

หวังว่านี่จะช่วยให้สิ่งต่าง ๆ ชัดเจนขึ้น และหวังว่าเวอร์ชัน Grub2 2.02~beta3 จะถูกรวมเข้ากับ LiveCD เพื่อให้เราสามารถติดตั้งได้โดยไม่ต้องคอมไพล์เอง

PD: ด้วยดิสก์ Super Grub 2 ฉันไม่เห็นวิธีติดตั้ง Grub2 เวอร์ชัน 2.02~beta3 พาร์ติชัน MBR/บูต ฯลฯ

คุณต้องการซ่อนข้อมูลของคุณจากการสอดรู้สอดเห็นหรือไม่? เราจะสอนเทคนิคการเข้ารหัสฮาร์ดไดรฟ์ให้คุณ

ด้านหลัง ปีที่แล้วหัวข้อความปลอดภัยของข้อมูลอินเทอร์เน็ตเกิดขึ้นบ่อยครั้ง: อันดับแรกเกี่ยวข้องกับการเปิดเผยของ Snowden จากนั้นจึงเกี่ยวกับช่องโหว่ใน OpenSSL (ข้อบกพร่อง Heartbleed) ก่อนอันสุดท้ายไม่นาน มีการค้นพบข้อบกพร่องที่เห็นได้น้อยกว่าใน GnuTLS ด้วยเหตุนี้ เราจึงเริ่มให้ความสำคัญกับความปลอดภัยของข้อมูลที่ถูกลบมากขึ้น แต่สิ่งที่เก็บไว้ในดิสก์ของเราล่ะ?

บล็อกสแต็กอุปกรณ์

ก่อนที่จะดูการเข้ารหัส สิ่งสำคัญคือต้องเข้าใจว่าอุปกรณ์บล็อกทำงานอย่างไร เป็นส่วนต่อประสานระบบกับอุปกรณ์จัดเก็บข้อมูลเช่น /dev/sda! ภายในบล็อกอุปกรณ์จะมีไดรเวอร์ฮาร์ดแวร์ เช่น SATA และตัวฮาร์ดแวร์เอง ระบบปฏิบัติการจะโต้ตอบกับอุปกรณ์บล็อกเพื่อสร้างระบบไฟล์บนอุปกรณ์นั้น

โดยทั่วไปอุปกรณ์บล็อกจะถือว่ามีความสามารถนี้ถึงแม้ว่าจะมีฟังก์ชันอื่นก็ตาม โดยเฉพาะอย่างยิ่ง อุปกรณ์ดังกล่าวสามารถเป็นอินเทอร์เฟซสำหรับอุปกรณ์บล็อกอื่นๆ ได้จำนวนหนึ่ง โดยสามารถสร้างสแต็กได้ และคุณได้ทำสิ่งนี้ไปแล้ว: คุณมีระบบไฟล์บน /dev/sda1 (พาร์ติชันดิสก์) และอุปกรณ์บล็อกนี้ชี้ไปที่ /dev/sda (ทั้งดิสก์)

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

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

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

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

การเข้ารหัส

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

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

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

ลุคส์

ลุคส์— การตั้งค่า Linux Unified Key ถูกสร้างขึ้นเพื่อจัดเตรียมรูปแบบมาตรฐานข้ามแพลตฟอร์ม (แม้จะมีชื่อ) สำหรับการจัดเก็บข้อมูลที่เข้ารหัสบนดิสก์ มันไม่เกี่ยวข้องกับวิธีการเข้ารหัส แต่เกี่ยวข้องกับวิธีการจัดเก็บข้อมูลเกี่ยวกับวิธีการเหล่านั้น

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

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

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

การเข้ารหัสระดับระบบไฟล์:

  • 1. คริปโตเคอเรนซี- นี่คือไฟล์เข้ารหัส ระบบลินุกซ์. มันเก็บข้อมูลเมตาการเข้ารหัสสำหรับแต่ละไฟล์ใน แยกไฟล์เพื่อให้สามารถคัดลอกไฟล์ระหว่างคอมพิวเตอร์ได้ ไฟล์จะถูกถอดรหัสได้สำเร็จหากคุณมีกุญแจ โซลูชันนี้ใช้กันอย่างแพร่หลายเพื่อใช้โฮมไดเร็กทอรีที่เข้ารหัส เช่น ใน Ubuntu นอกจากนี้ ChromeOS ยังฝังอัลกอริทึมเหล่านี้อย่างโปร่งใสเมื่อใช้อีกด้วย อุปกรณ์เครือข่ายสำหรับการจัดเก็บข้อมูล (NAS)
  • 2.การเข้ารหัส- จัดเตรียมระบบไฟล์ที่เข้ารหัสในพื้นที่ผู้ใช้ มันทำงานโดยไม่มีสิทธิ์เพิ่มเติมใด ๆ และใช้ไลบรารีฟิวส์และโมดูลเคอร์เนลเพื่อจัดเตรียมอินเทอร์เฟซระบบไฟล์ EncFS เป็นซอฟต์แวร์ฟรีและได้รับอนุญาตภายใต้ GPL

การเข้ารหัสบล็อกระดับอุปกรณ์:

  • ห่วง-AES- ระบบไฟล์ที่รวดเร็วและโปร่งใส รวมถึงแพ็คเกจสำหรับการเข้ารหัสพาร์ติชั่นสว็อปใน Linux ซอร์สโค้ดของโปรแกรมไม่มีการเปลี่ยนแปลงมาเป็นเวลานาน ใช้งานได้กับเคอร์เนล 4.x, 3.x, 2.2, 2.0
  • ทรูคริปต์- นี้ โซลูชั่นฟรีด้วยการเปิด รหัสแหล่งที่มาสำหรับการเข้ารหัสดิสก์ในห้องผ่าตัด ระบบวินโดวส์ 7 / Vista / XP / Mac OS X รวมถึง Linux
  • dm-crypt+LUKS- dm-crypt เป็นระบบย่อยที่โปร่งใสสำหรับการเข้ารหัสดิสก์ในเคอร์เนล 2.6 และใหม่กว่า รองรับการเข้ารหัสทั้งดิสก์ สื่อแบบถอดได้ พาร์ติชั่น โวลุ่ม RAID ซอฟต์แวร์, โลจิคัลวอลุ่ม และไฟล์

ในบทช่วยสอนนี้ เราจะดูการเข้ารหัสฮาร์ดไดรฟ์บน Linux โดยใช้อัลกอริทึม Linux Unified Key Setup-on-disk-format (LUKS)

LUKS ทำงานอย่างไร?

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

เพื่อทำการเข้ารหัส ดิสก์ลินุกซ์ใช้โมดูลเคอร์เนล dm-crypt โมดูลนี้ช่วยให้คุณสร้างอุปกรณ์บล็อกเสมือนในไดเร็กทอรี /dev/mapper พร้อมการเข้ารหัสที่โปร่งใสสำหรับระบบไฟล์และผู้ใช้ ข้อมูลทั้งหมดอยู่บนฟิสิคัลพาร์ติชันที่เข้ารหัส หากผู้ใช้พยายามเขียนข้อมูลไปยังอุปกรณ์เสมือน ข้อมูลนั้นจะถูกเข้ารหัสทันทีและเขียนลงดิสก์ เมื่ออ่านจากอุปกรณ์เสมือน การดำเนินการย้อนกลับจะดำเนินการ - ข้อมูลจะถูกถอดรหัสจากดิสก์จริงและส่งในรูปแบบข้อความที่ชัดเจนผ่าน ดิสก์เสมือนให้กับผู้ใช้ โดยปกติแล้ววิธี AES จะใช้สำหรับการเข้ารหัส เนื่องจากส่วนใหญ่ได้รับการปรับให้เหมาะสมที่สุด โปรเซสเซอร์ที่ทันสมัย. สิ่งสำคัญคือต้องทราบว่าคุณสามารถเข้ารหัสได้ไม่เพียงแต่พาร์ติชันและดิสก์เท่านั้น แต่ยังรวมถึงไฟล์ปกติด้วยการสร้างระบบไฟล์ในนั้นและเชื่อมต่อพวกมันเป็นอุปกรณ์วนซ้ำ

อัลกอริธึม LUKS กำหนดว่าการกระทำใดและตามลำดับที่จะดำเนินการเมื่อทำงานกับสื่อที่เข้ารหัส หากต้องการทำงานกับ LUKS และโมดูล dm-crypt ให้ใช้ยูทิลิตี้ Cryptsetup เราจะพิจารณาเรื่องนี้ต่อไป

ยูทิลิตี้การเข้ารหัสลับ

ยูทิลิตี้ Cryptsetup จะทำให้การเข้ารหัสพาร์ติชัน Linux ง่ายขึ้นโดยใช้โมดูล dm-crypt มาติดตั้งกันก่อน

บน Debian หรือ Ubuntu ให้ใช้คำสั่งนี้:

apt-get ติดตั้ง cryptsetup

ในการแจกแจงแบบ Red Hat จะมีลักษณะดังนี้:

ยำติดตั้ง cryptsetup-luks

ไวยากรณ์สำหรับการรันคำสั่งคือ:

$ การดำเนินการตัวเลือก cryptsetup options_operations

ลองดูการดำเนินการพื้นฐานที่สามารถทำได้โดยใช้ยูทิลิตี้นี้:

  • luksFormat- สร้างพาร์ติชั่น luks linux ที่เข้ารหัส
  • luksOpen- เชื่อมต่ออุปกรณ์เสมือน (ต้องใช้ดองเกิล)
  • ลุคส์ปิด- ปิดอุปกรณ์เสมือน luks linux
  • luksAddKey- เพิ่มคีย์เข้ารหัส
  • luksRemoveKey- ลบคีย์เข้ารหัส
  • luksUUID- แสดงพาร์ติชัน UUID
  • luksDump- สร้าง สำเนาสำรองส่วนหัวของ LUKS

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

การเข้ารหัสดิสก์ Linux

ทฤษฏีเสร็จแล้ว อุปกรณ์พร้อมทุกอย่าง ตอนนี้เรามาดูการเข้ารหัสของพาร์ติชัน linux มาดูการตั้งค่าฮาร์ดไดรฟ์กันดีกว่า โปรดทราบว่าการดำเนินการนี้จะลบข้อมูลทั้งหมดออกจากไดรฟ์หรือพาร์ติชันที่คุณกำลังจะเข้ารหัส ดังนั้นหากมีข้อมูลสำคัญอยู่ที่นั่น ก็ควรคัดลอกไปยังตำแหน่งที่ปลอดภัยกว่านี้จะดีกว่า

การสร้างส่วน

ในตัวอย่างนี้ เราจะเข้ารหัสพาร์ติชัน /dev/sda6 แต่คุณสามารถใช้ฮาร์ดไดรฟ์ทั้งหมดแทน หรือเพียงไฟล์เดียวที่เต็มไปด้วยเลขศูนย์ สร้างพาร์ติชันที่เข้ารหัส:

cryptsetup -y -v luksFormat /dev/sda6

คำเตือน!
========
สิ่งนี้จะเขียนทับข้อมูลบน /dev/sda6 โดยไม่สามารถเพิกถอนได้

คุณแน่ใจไหม? (พิมพ์ตัวพิมพ์ใหญ่ใช่): ใช่
กรอกข้อความรหัสผ่าน LUKS:
ยืนยันข้อความรหัสผ่าน:
คำสั่งสำเร็จ

คำสั่งนี้จะเตรียมใช้งานพาร์ติชันและตั้งค่าคีย์และรหัสผ่านเริ่มต้น ระบุรหัสผ่านเพื่อที่คุณจะได้ไม่ลืมในภายหลัง

เรียกใช้คำสั่งต่อไปนี้เพื่อเปิดพาร์ติชันที่สร้างขึ้นใหม่โดยใช้โมดูล dm-crypt ใน /dev/mapper โดยคุณจะต้องป้อนรหัสผ่านที่ใช้เข้ารหัส luks linux:

ป้อนข้อความรหัสผ่านสำหรับ /dev/sda6

ตอนนี้คุณสามารถเห็นอุปกรณ์เสมือนใหม่ /dev/mapper/backup2 ที่สร้างขึ้นโดยใช้คำสั่ง luksFormat:

ls -l /dev/mapper/backup2

หากต้องการดูสถานะอุปกรณ์ ให้รัน:

cryptsetup -v การสำรองข้อมูลสถานะ 2

/dev/mapper/backup2 ทำงานอยู่
ประเภท: LUKS1
รหัส: aes-cbc-essiv:sha256
ขนาดคีย์: 256 บิต
อุปกรณ์: /dev/sda6
ชดเชย: 4096 ภาค
ขนาด: 419426304 ภาค
โหมด: อ่าน/เขียน
คำสั่งสำเร็จ

และด้วยคำสั่งต่อไปนี้ คุณสามารถสร้างสำเนาสำรองของส่วนหัว LUKS ได้ในกรณี:

การเข้ารหัสลับ luksDump /dev/sda6

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

การจัดรูปแบบพาร์ติชัน

ก่อนอื่นเรามาฟอร์แมตดิสก์กันก่อน เพื่อความปลอดภัย เพื่อลบข้อมูลทั้งหมดที่เคยอยู่ในสถานที่นี้ก่อนหน้านี้ เราจะเขียนทับพาร์ติชัน linux ที่เข้ารหัสของเราด้วยศูนย์ วิธีนี้จะช่วยลดโอกาสที่จะทำลายการเข้ารหัสโดยการเพิ่มจำนวนข้อมูลแบบสุ่ม เมื่อต้องการทำเช่นนี้ ให้รัน:

dd if=/dev/zero of=/dev/mapper/backup2.dd

ยูทิลิตี้อาจใช้เวลาหลายชั่วโมงในการทำงาน เพื่อให้สามารถตรวจสอบกระบวนการได้ ให้ใช้ pv:

pv -tpreb /dev/ศูนย์ | dd ของ=/dev/mapper/backup2 bs=128M

เมื่อกระบวนการเสร็จสิ้นเราสามารถฟอร์แมตอุปกรณ์เป็นระบบไฟล์ใดก็ได้ ตัวอย่างเช่น ลองจัดรูปแบบเป็น ext4:

mkfs.ext4 /dev/mapper/backup2

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

การติดตั้งพาร์ติชัน

ตอนนี้คุณสามารถเมานต์เฉพาะระบบไฟล์ที่สร้างขึ้น:

$ เมานต์ /dev/mapper/backup2 /backup2

ปิดการใช้งานพาร์ทิชัน

ทุกอย่างใช้งานได้ แต่จะปิดการใช้งานอุปกรณ์และปกป้องข้อมูลได้อย่างไร เมื่อต้องการทำเช่นนี้ ให้รัน:

cryptsetup luksปิดการสำรองข้อมูล2

การติดตั้งใหม่

เพื่อให้สามารถทำงานกับพาร์ติชั่นที่เข้ารหัสได้อีกครั้งโดยใช้ LUKS Linux คุณต้องเปิดพาร์ติชั่นอีกครั้ง:

cryptsetup luksOpen /dev/sda6 การสำรองข้อมูล 2

ตอนนี้เราสามารถเมานต์:

เมานต์ /dev/mapper/backup2 /backup2

ตรวจสอบระบบไฟล์ luks

เนื่องจากหลังจากเปิดพาร์ติชันด้วย luks linux พาร์ติชันนี้จะได้รับการปฏิบัติโดยระบบเช่นเดียวกับส่วนอื่น ๆ ทั้งหมด คุณสามารถใช้ยูทิลิตี fsck:

sudo umount / สำรอง 2

$ fsck -vy /dev/mapper/backup2

$ เมานต์ /dev/mapper/backup2 /backu2

เปลี่ยนข้อความรหัสผ่าน luks

การเข้ารหัสดิสก์ Linux ดำเนินการด้วยข้อความรหัสผ่านเฉพาะ แต่คุณสามารถเปลี่ยนได้ ยิ่งไปกว่านั้น คุณสามารถสร้างข้อความรหัสผ่านที่แตกต่างกันได้ถึงแปดข้อความ หากต้องการเปลี่ยน ให้รันคำสั่งต่อไปนี้ ขั้นแรกให้สำรองส่วนหัวของ LUKS:

การเข้ารหัสลับ luksDump /dev/sda6

จากนั้นสร้างคีย์ใหม่:

การเข้ารหัสลับ luksAddKey /dev/sda6

ป้อนข้อความรหัสผ่าน:

ป้อนข้อความรหัสผ่านใหม่สำหรับช่องกุญแจ:
ยืนยันข้อความรหัสผ่าน:

และลบอันเก่า:

การเข้ารหัสลับ luksRemoveKey /dev/sda6

ตอนนี้คุณจะต้องป้อนรหัสผ่านเก่า

ข้อสรุป

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

ข้อดี:

  • LUKS เข้ารหัสอุปกรณ์บล็อคทั้งหมดและดังนั้นจึงเหมาะอย่างยิ่งสำหรับการปกป้องเนื้อหาของอุปกรณ์พกพาเช่น โทรศัพท์มือถือ, สื่อที่ถอดออกได้หรือ ฮาร์ดดิสก์แล็ปท็อป
  • คุณสามารถใช้ NAS บนเซิร์ฟเวอร์เพื่อปกป้องการสำรองข้อมูลของคุณได้
  • โปรเซสเซอร์ Intel และ AMD ที่มี AES-NI (มาตรฐานการเข้ารหัสขั้นสูง) มีชุดคำสั่งที่สามารถเพิ่มความเร็วกระบวนการเข้ารหัสแบบ dm-crypt ในเคอร์เนล Linux ตั้งแต่ 2.6.32
  • ใช้งานได้กับพาร์ติชั่นสลับ ดังนั้นแล็ปท็อปของคุณจึงสามารถใช้โหมดสลีปหรือฟังก์ชันไฮเบอร์เนตได้อย่างปลอดภัย