Bagaimana cara kerja FDE (Enkripsi Disk Penuh) begitu cepat?

13

Saya ingin tahu tentang bagaimana enkripsi disk penuh Ubuntu bekerja di bawah tenda. Ini sebuah contoh:

Mempertimbangkan string berikut sebagai semua konten disk:

hello world

Setelah menerapkan beberapa jenis metode enkripsi akan terlihat seperti ini:
(Saya telah menggunakan cipher Caesar dengan pergeseran +1 untuk contoh ini, misalnya A → B; B → C ...)

ifmmp xpsme

Seperti yang saya pahami, ketika komputer dimatikan, konten drive akan menjadi string di atas. Tetapi ketika dihidupkan kembali, Ubuntu perlu kontennya untuk kembali lagi hello worldagar berhasil boot.

Apa yang saya tidak benar-benar dapatkan adalah bahwa di dunia nyata konten disk jauh lebih banyak, dan algoritma enkripsi jauh lebih kompleks, dan saya merasa sulit bagi komputer untuk sepenuhnya mengenkripsi / mendekripsi semua itu hanya dalam beberapa detik. (Tidak perlu waktu lebih lama untuk boot atau mematikan).

Bagaimana ini mungkin?

Hewbot
sumber

Jawaban:

10

Bagaimana Enkripsi AES / Rijndael secara umum berfungsi?

Halaman ini memiliki menyenangkan A Stick Figure Guide to Advanced Encryption Standard (AES) yang terlihat mudah dimengerti, meskipun terlihat lebih dari 50 gambar, misalnya dua:

masukkan deskripsi gambar di sini

dan

masukkan deskripsi gambar di sini

Terlalu banyak untuk menduplikasi semuanya di sini, tetapi jika Anda harus memiliki gambar all-in-one, ini yang ini:

masukkan deskripsi gambar di sini


Atau, ada penjelasan yang lebih ringkas di http://www.password-depot.com/know-how/blowfish_and_rijndael.htm

Metode enkripsi Rijndael didasarkan pada penggantian, perubahan, dan operasi xor berdasarkan byte. Metodenya terlihat seperti ini:

  • Dari tombol 128-bit, Rijndael menghasilkan 10 kunci masing-masing 128 bit.
  • Kunci-kunci ini ditempatkan ke dalam array 4x4.
  • Teks biasa juga dibagi menjadi array 4x4 (masing-masing 128 bit).
  • Setiap item teks biasa 128-bit diproses dalam 10 putaran (10 putaran untuk kunci 128-bit, 12 untuk 192, 14 untuk 256).
  • Setelah ronde ke-10 kode dihasilkan.
  • Setiap byte tunggal diganti dalam kotak S dan diganti dengan timbal balik pada GF (2 8).
  • Kemudian matriks modulo-2 bit-wise diterapkan, diikuti oleh operasi XOR dengan 63.
  • Garis-garis matriks diurutkan secara siklis.
  • Kolom dari perkalian matriks dipertukarkan pada GF (2 8).
  • Subkunci dari setiap putaran dikenai operasi XOR.

Tingkat keamanan metode enkripsi ini meningkat jika Rijndael dilakukan beberapa kali dengan subkunci yang berbeda.


Bagaimana cara kerja Enkripsi Disk Lengkap Ubuntu?

Saya percaya ini bekerja dengan mengenkripsi partisi dengan LUKS (pengaturan default dengan AES), dan kemudian menempatkan beberapa volume di dalamnya dengan LVM (seperti /, swap), dan mendekripsi dan me-mount mereka saat boot setelah Anda memasukkan frasa sandi. Dan ada partisi boot reguler (tidak terenkripsi) yang melakukan booting cukup untuk meminta frasa sandi.

the_simple_computer's Guide to Full Disk Enkripsi dengan Ubuntu (Diperbarui 28 Juni 2015) mengatakan itu tentang bagaimana enkripsi installer default bekerja, dan menyebutkan bahwa dual-boot tidak akan berfungsi (setidaknya tidak out-of-the-box), drive harus menggunakan MBR jadi " jika komputer Anda memiliki UEFI, distro akan diinstal dalam mode BIOS lama sehingga Anda tidak dapat menggunakan Boot Aman " dan " juga memberi Anda ukuran swap yang sama dengan RAM sistem Anda (seringkali tidak perlu) dan Anda tidak punya pilihan atas jenis enkripsi apa yang digunakan. "


Seberapa cepat enkripsi?

Jika Anda menjalankannya cryptsetup benchmarkakan menjalankan tes dan memberi tahu Anda seberapa cepat enkripsi saja, perhatikan baris aes-xts default (saat ini):

#  Algorithm | Key |  Encryption |  Decryption
     aes-xts   256b    150.0 MiB/s    145.0 MiB/s

Kecepatan baca hard drive rata-rata bisa 80-160 MB / s, jadi Anda tidak akan lebih lama dari membaca biasa, dan mungkin saja sektor yang baru saja membaca telah didekripsi saat Anda masih menunggu untuk hard drive untuk membaca lebih lanjut.

SSD mungkin bisa lebih cepat, mungkin 200-550MB / s, jadi Anda mungkin memperhatikannya. Tapi, pembacaan acak bisa lebih lambat, dan saya sudah membaca bahwa kecepatan SSD dapat melambat setelah digunakan (mungkin ketika drive terisi penuh dan harus mulai "menghapus" sektor?)

Bagaimana komputer dapat sepenuhnya mengenkripsi / mendekripsi semua drive hanya dalam beberapa detik (tidak butuh waktu lebih lama untuk mem-boot atau mematikan)?

Tidak harus mendekripsi semuanya terlebih dahulu. Enkripsi (LUKS) bekerja pada blok data , dapat secara acak mendekripsi blok apa pun, dan bertindak seperti lapisan antara data yang dienkripsi drive dan apa yang dilihat oleh sistem file.

Ketika filesystem ingin melihat blok data apa pun, LUKS mendekripsi blok itu terlebih dahulu dan kemudian memberikan data yang didekripsi ke filesystem. Anda pertama-tama menunggu drive untuk membaca blok data (seperti tanpa menggunakan enkripsi), dan hanya memiliki penundaan tambahan untuk dekripsi blok tunggal (atau beberapa blok) data - dan jika dekripsi lebih cepat daripada drive dapat membaca, dekripsi dapat diselesaikan sebelum drive membaca blok data selanjutnya.

Jadi seperti halnya filesystem biasa tidak perlu membaca seluruh drive untuk membaca file, ketika enkripsi ditambahkan tidak perlu membaca keseluruhan drive, dan itu tidak membuat banyak hal lebih lambat.

Data pada hard drive selalu terenkripsi , jadi tidak ada yang dapat dilakukan saat mematikan kecuali melupakan kuncinya.

Xen2050
sumber
@Hewbot Saya telah menambahkan beberapa info (di bagian bawah) tentang kecepatan dekripsi file & blok, karena judul Q Anda diedit untuk menambahkan "begitu cepat?" (apakah judulnya masih apa yang ingin Anda tanyakan?)
Xen2050
3

Ini akan sedikit penyederhanaan, tetapi saya akan mencoba untuk melalui proses mengakses file pada sistem file terenkripsi.

Sebagai contoh, katakanlah awal dari sistem file terenkripsi ada tabel file; katakanlah kita ingin membaca /foo.bar. Jadi, hal pertama yang kita lakukan adalah membaca awal partisi, mendekripsi, dan mencari file yang kita inginkan; katakanlah katanya file dimulai pada 0x10000000 byte. Jadi untuk membaca, kita mulai membaca dari disk di lokasi itu dan mendekripsi; sama halnya dengan menulis, kita dapat mengenkripsi konten baru, dan menulisnya di lokasi baru itu.

Semoga ini membantu menjernihkan kebingungan pada proses.

Nick Mertin
sumber
1
Saya pikir ini adalah jawaban yang benar-benar menjawab pertanyaan OP - kesalahpahamannya adalah bahwa ia harus sepenuhnya mengenkripsi / mendekripsi seluruh drive, bukan hanya bit yang dibaca / ditulis seperti yang digunakan.
SeseorangDukungan Di Luar NegeriMonika
2

Prosesor menggunakan set instruksi khusus. Itu mungkin karena itu, AES-NI . Ini memungkinkan enkripsi dan dekripsi cepat atau Anda dapat mengatakan itu memotong overhead. Cepat karena implementasi perangkat keras, seperti yang dijelaskan di sini .

Anda dapat memeriksa tentang dampak kinerja di sini dan itu layak untuk keamanan tambahan.

shsh
sumber
1
Selain itu, data pada disk hanya dienkripsi / didekripsi sesuai kebutuhan; misalnya, saat boot, hanya skrip startup, info pengguna, executable DM / WE, dll yang didekripsi
Nick Mertin
Banyak CPU yang tidak memiliki dukungan AES, dan enkripsi Ubuntu masih bekerja pada mereka ... bahkan jika mereka melakukannya, ini masih tidak benar-benar menjawab pertanyaan tentang cara kerja Enkripsi Ubuntu
Xen2050
@shsh Lalu, jika saya menggunakan komputer yang benar-benar tua, tidak mungkin menggunakan FDE, karena tidak akan ada implementasi perangkat keras? Haruskah saya mengerti bahwa seluruh disk dienkripsi dan didekripsi saat boot dan shutdown?
Hewbot
@ MagikM18 Jika demikian, bagaimana algoritma tahu di mana harus mulai mendekripsi seluruh "string"? Maksud saya, jika saya membuka dokumen, bagaimana ia tahu "koordinat" di mana itu?
Hewbot
@Hewbot dengan cara yang sama sih; pada dasarnya, enkripsi adalah lapisan antara disk fisik dan daemon filesystem. jadi, ketika ia meminta untuk membaca data dari disk, itu dibaca kemudian didekripsi; jadi seperti di fs biasa, pertama-tama akan membaca tabel file, menemukan posisi awal file, kemudian membaca dari sana.
Nick Mertin
0

Komputer modern dapat melakukan milyaran operasi per detik, sehingga tidak mengejutkan saya bahwa enkripsi dan dekripsi cepat.

Ini adalah bagaimana saya menilai secara intuitif seberapa cepat komputer dalam melakukan sesuatu:

  1. Melakukan perhitungan dalam memori (terutama memori L1 dan L2), sangat cepat
  2. Membaca dari penyimpanan lokal, kurang cepat (solid state disk lebih cepat daripada hard disk)
  3. Membaca dari jaringan, bahkan kurang cepat.

Bit kunci lain yang perlu dipahami adalah bahwa operasi tidak perlu mendekripsi seluruh hard disk untuk mem-boot sistem. Sebaliknya, sistem operasi tahu bagaimana mendekripsi hanya bagian-bagian dari hard disk yang dibutuhkan dengan cepat, dan hal yang sama berlaku untuk penulisan.

Jadi secara intuitif, saya tidak terkejut bahwa enkripsi disk penuh tidak memiliki banyak dampak pada kinerja, karena saya membayangkan botol-leher menjadi disk.

Tentu saja, intuisi ini tidak selalu cocok dengan kenyataan. Misalnya, dalam kenyataannya, ada beberapa kasus di mana enkripsi disk penuh telah menyebabkan kinerja yang sangat baik. Tetapi biasanya ini diselesaikan setelah pengembang melalui beberapa putaran mengembangkan optimisasi.

Flimm
sumber
1
Saya tidak dapat menemukan cara jawaban ini mungkin. Hanya menyalin 1TB dengan USB 3.0 memerlukan waktu beberapa menit, jika proses tengah harus dilakukan (dekripsi), mungkin perlu beberapa menit untuk mem-boot komputer dengan FDE.
Hewbot
@ Hewbot saya mengedit jawaban saya untuk menjelaskan bahwa dekripsi terjadi dengan cepat. OS tidak perlu membaca 1TB data untuk mulai menggunakan disk 1TB yang dienkripsi.
Flimm