การเข้ารหัสดิสก์แบบเต็มพร้อมการรับรองความถูกต้องด้วยสองปัจจัยสำหรับ Ubuntu: อย่างไร


9

ข้อมูลพื้นฐาน

ฉันเพิ่งเป็นมือใหม่ Linux เพิ่งหย่านมจาก Windows ปัจจุบันฉันใช้ Ubuntu 11.04 โดยไม่มีการเข้ารหัสดิสก์เต็มรูปแบบ เฉพาะไดเรกทอรีภายในบ้านของฉันเท่านั้นที่ถูกเข้ารหัสและด้วย eCryptFS เมื่อเร็ว ๆ นี้ฉันเริ่มสังเกตเห็นว่าการเข้ารหัสไม่โปร่งใสเท่าที่ควร ตัวอย่างเช่น VMWare บางครั้งพบปัญหาสำหรับเครื่องเสมือนที่เก็บไว้ในไดเรกทอรีบ้านที่เข้ารหัสของฉันดังนั้นฉันก็ย้ายเครื่องเสมือนไปยังตำแหน่งที่ไม่ได้เข้ารหัสและเชื่อมโยงกับมันจากไดเรกทอรีบ้านที่เข้ารหัสของฉัน แต่นั่นคือประเด็น: ฉันรู้ว่าจริง ๆ แล้วมันไม่ปลอดภัยอย่างมากที่จะออกจากระบบที่ไม่ได้เข้ารหัสเนื่องจากระบบปฏิบัติการโอเพ่นซอร์สอย่าง Ubuntu นั้นง่ายต่อการปรับเปลี่ยนเพื่อเปิดเผยข้อมูลที่ควรเก็บเป็นความลับ


เป้าหมาย

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


ความต้องการ / รายละเอียด

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

ใช่ฉันได้ดูมัคคุเทศก์จากหลาย ๆ ที่ แต่ปัญหาคือพวกเขาไม่ได้ปฏิบัติตามข้อกำหนดทั้งหมด (โดยเฉพาะอย่างยิ่งหมายเลข 3) ฉันค่อนข้างมั่นใจว่าความต้องการของฉันเป็นเรื่องธรรมดาพอที่ใครบางคนได้ลองและใช้งานการตั้งค่าดังกล่าวเรียบร้อยแล้ว ฉันจะขอบคุณถ้า Linux pro สามารถแบ่งปันโซลูชันได้


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

คำตอบ:


2

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

สิ่งที่คุณทำคือถอดส่วนหัว LUKS ออกจากฮาร์ดไดรฟ์ที่เข้ารหัสอย่างสมบูรณ์และเก็บไว้ใน Thumb Drive

ฉันจะสมมติว่าคุณมีการตั้งค่าต่อไปนี้:

# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2

สร้างสำเนาของส่วนหัว luks และลบออกจากอุปกรณ์ภายในเครื่อง:

mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2

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

ด้วยอุปกรณ์ usb ของคุณใน / dev / sdb สร้างพาร์ติชัน 2MB และโหลดส่วนหัวลงบน:

parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1

ตอนนี้ทุกอย่างใน / dev / sda2 ดูเหมือนว่าข้อมูลสุ่มและคุณมีส่วนหัวใน / dev / sdb1 ในการเข้าถึงไดรฟ์ที่เข้ารหัสด้วยตนเองคุณใช้:

cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target

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

find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2

blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"

แก้ไข/etc/crypttabบรรทัดของคุณให้มีลักษณะดังนี้:

root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1

(คุณอาจต้องใช้โปรแกรมแก้ไขนี้เพื่อรับการสนับสนุนสำหรับheaderตัวเลือกในcrypttab)

สุดท้าย แต่ไม่ท้ายสุดให้อัปเดต initram ของคุณ:

update-initramfs -u

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

มีวิธีการมากมายที่ คุณสามารถทำได้โดยมีระดับความปลอดภัยและความมั่นใจที่แตกต่างกัน

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


1

ฉันรู้ว่า TrueCrypt พร้อมใช้งานสำหรับ OSX, Windows และ Linux คุณสามารถทำการเข้ารหัสสองระดับสำหรับไดรฟ์ทั้งหมด ฉันใช้มันกับ Debian ด้วยการเข้ารหัสดิสก์เต็มรูปแบบ AES มันต้องใช้รหัสผ่านในการบูตเพื่อเข้าถึงข้อมูลในฮาร์ดไดรฟ์


3
ฉันคิดว่าการเข้ารหัสดิสก์เต็มรูปแบบ TrueCrypt ใช้งานได้กับ Windows เท่านั้น
Kevin Li

two levels of encryption for the whole drive! =two factor auth
GnP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.