Enkripsi Disk Penuh dengan Otentikasi Dua-faktor untuk Ubuntu: Bagaimana?

9

Informasi latar belakang

Saya seorang pemula Linux baru-baru ini disapih dari Windows. Saat ini saya menggunakan Ubuntu 11,04 tanpa enkripsi disk lengkap. Hanya direktori beranda saya yang dienkripsi, dan dengan eCryptFS. Akhir-akhir ini, saya mulai memperhatikan bahwa enkripsi tidak setransparan seharusnya. VMWare, misalnya, kadang-kadang mengalami masalah untuk mesin virtual yang disimpan dalam direktori home terenkripsi saya, jadi saya hanya memindahkan mesin virtual ke lokasi yang tidak terenkripsi dan menautkannya dari direktori home terenkripsi saya. Tapi itu intinya: Saya sadar sebenarnya tidak aman untuk membiarkan sistem tidak terenkripsi karena sistem operasi open source seperti Ubuntu sangat mudah dimodifikasi untuk membocorkan informasi yang seharusnya dirahasiakan.


Tujuan

Saya ingin dapat membuat enkripsi disk lengkap berfungsi bersama dengan perangkat utama dan kata sandi untuk otentikasi pra-boot.


Persyaratan / Rincian

  1. Seluruh disk harus dienkripsi. Minimal, disk terdiri dari partisi individual yang semuanya dienkripsi. Jika mungkin untuk menyembunyikan partisi dengan enkripsi, saya akan melakukannya. Enkripsi yang lebih transparan adalah, semakin baik; Saya tidak harus menggunakan komputer saya secara berbeda atau mengkonfigurasi apa pun.
  2. Perangkat yang digunakan untuk membuka dan mem-boot partisi yang dienkripsi harus berupa perangkat portabel eksternal kecil. Ini melayani dua tujuan: boot loader jauh lebih kecil kemungkinannya diubah untuk tujuan jahat karena akan tetap ada pada saya saat tidak digunakan; dan file kunci untuk mendekripsi disk tidak akan ditemukan di mana pun pada disk terenkripsi itu sendiri dalam bentuk apa pun.
  3. File kunci harus dienkripsi dengan kata sandi. Jika saya kehilangan komputer dan perangkat USB saya, data dan sistem operasi akan tetap aman. Jika saya kehilangan kunci USB atau terganggu, saya dapat membuat yang lain bersih dari cadangan. Tidak ada informasi yang diungkapkan dalam kedua kasus tersebut. Tentu saja, jika saya kehilangan komputer saya, itu tidak penting.

Ya, saya telah melihat panduan dari banyak tempat, tetapi masalahnya adalah mereka tidak memenuhi semua persyaratan (terutama nomor 3). Saya cukup yakin persyaratan saya cukup umum sehingga seseorang telah mencoba dan berhasil menerapkan pengaturan semacam itu. Saya akan berterima kasih jika ada pro Linux dapat berbagi solusi.

Kevin Li
sumber
2
"Karena sistem operasi open source seperti Ubuntu sangat mudah dimodifikasi untuk membocorkan informasi yang seharusnya dirahasiakan." - Anda akan kagum pada betapa mudahnya meyakinkan OS sumber tertutup untuk melakukan hal yang sama. Fakta bahwa suatu program bersifat open-source tidak berarti apa - apa tentang keamanan atau ketidakamanannya terhadap serangan lokal.
user1686

Jawaban:

2

Ada cara sederhana untuk memiliki enkripsi disk lengkap yang memerlukan kehadiran thumb drive DAN kata sandi Anda untuk mem-boot.

Apa yang Anda lakukan adalah melepaskan header LUKS dari hard drive Anda yang sepenuhnya dienkripsi dan menyimpannya di thumb drive Anda.

Saya akan menganggap Anda sudah memiliki pengaturan berikut:

# /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

Buat salinan tajuk luks dan hapus dari perangkat lokal:

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

Jalankan langkah terakhir beberapa kali jika Anda menjadi target agen beranggaran tinggi. Saya juga membuat ramdisk untuk menahan tajuk sementara agar tidak berlama-lama sesudahnya.

Dengan perangkat usb Anda di / dev / sdb, buatlah partisi 2MB dan muat header ke atasnya:

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

Saat ini, semua yang ada di / dev / sda2 terlihat seperti data acak, dan Anda memiliki header di / dev / sdb1. Untuk mengakses drive terenkripsi secara manual, Anda menggunakan:

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

Langkah selanjutnya adalah meminta proses boot Anda meminta flashdisk untuk dimasukkan saat boot. Saya merasa lebih mudah untuk hanya menganggap itu akan ada di sana dan gagal sebaliknya. Pertama, cari tahu id perangkat Anda dan 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"

Selanjutnya edit /etc/crypttabbaris Anda agar terlihat seperti ini:

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

(Anda mungkin memerlukan tambalan ini untuk mendapatkan dukungan untuk headeropsi ini di crypttab)

Last but not least, perbarui initram Anda:

update-initramfs -u

Anda bisa mengambil langkah ini lebih jauh dan sebenarnya memiliki seluruh partisi boot dimuat di drive usb . Penulis artikel ini berada di situs ini melakukan tindak lanjut .

Ada banyak pendekatan berbeda yang dapat Anda ambil , dengan berbagai tingkat keamanan dan kenyamanan.

Catatan khusus tentang keamanan: jika frasa sandi Anda disusupi, siapa pun yang memiliki salinan tajuk akan dapat mendekripsi data, bahkan jika Anda mengubah kata sandi nanti.

GnP
sumber
1

Saya tahu bahwa TrueCrypt tersedia untuk OSX, Windows dan Linux. Anda dapat melakukan dua tingkat enkripsi untuk seluruh drive. Saya sudah menggunakannya di Debian dengan enkripsi disk penuh AES. Dibutuhkan kata sandi saat boot untuk mengakses data pada hard drive.

kobaltz
sumber
3
Saya pikir TrueCrypt enkripsi penuh disk hanya bekerja dengan Windows.
Kevin Li
two levels of encryption for the whole drive! =two factor auth
GnP