Yubikey Otentikasi Dua Faktor Enkripsi cakram penuh melalui LUKS

27

Saya baru-baru ini mengakuisisi Yubikey Neo - perangkat otentikasi faktor kedua yang bagus. Ini terutama dimaksudkan untuk digunakan dengan One Time Passwords, dan protokol U2F yang muncul - tetapi karena Yubikey versi 2 juga mendukung otentikasi respon-respons HMAC-SHA1. HMAC-SHA1 menggabungkan kunci rahasia (disimpan di dalam Yubikey) dan menggabungkan ini dengan frasa sandi untuk menghasilkan respons.

Bagaimana saya bisa menggabungkan Yubikey dengan pengaturan FDE Ubuntu saya untuk menggunakan 2FA dengan hard drive terenkripsi saya?

seanlano
sumber

Jawaban:

30

Grup bernama PrivacyIdea telah membuat paket kecil untuk menambahkan rutinitas respons-tantangan HMAC-SHA1 ke initramfs, yang berarti bahwa Ubuntu dapat meminta Anda agar sebuah tantangan dapat diteruskan ke Yubikey dan kemudian menggunakan respons untuk membuka kunci volume LUKS. Sebagian besar, saya mengikuti instruksi ini , dengan beberapa komentar tambahan. Prosesnya sebenarnya sangat mudah dilakukan.

Saya sudah menguji ini di Ubuntu 14.04, 16.04 dan 18.04; menggunakan Yubikey Neo. Ini harus bekerja dengan Yubikey terbaru, dengan firmware 2.0+, dan dengan versi Ubuntu apa pun setelah 14,04. Saya juga telah menguji Ubuntu 19,04 dengan Yubikey 5C, beberapa pekerjaan tambahan diperlukan tetapi dapat dibuat berfungsi. Mungkin ada perangkat keras lain yang menjawab tantangan perangkat HMAC-SHA1 yang bekerja dengan ini, tapi saya tidak mengetahui ada yang ada. Seperti biasa, pastikan Anda memiliki cadangan data sebelum melanjutkan - seharusnya tidak ada masalah di sini, tetapi selalu ada kemungkinan ini akan menghancurkan semua yang ada di komputer Anda. Instruksi ini datang tanpa jaminan.

Pembaruan: Sejak Ubuntu 16.04, paket-paket yang diperlukan ada di repositori utama dan tidak diperlukan PPA.

Tambahkan komentar jika Anda memiliki pertanyaan!


0. Prasyarat

Agar ini berfungsi, Anda harus sudah menyiapkan dan menjalankan enkripsi disk lengkap LUKS. Anda dapat melakukan ini dengan memilih opsi yang sesuai saat menginstal Ubuntu. Untuk keamanan maksimum, Anda harus memiliki frasa sandi yang dipilih sangat kuat selama pemasangan. Jika frasa sandi Anda tidak lengkap, Anda harus mengubahnya menjadi yang lebih baik sebelum melanjutkan ( instruksi lebih rinci di sini ).

Metode di bawah ini tidak akan mengganti frasa sandi yang ada, tetapi sebaliknya akan menambahkan frasa sandi lain ke salah satu slot LUKS. Karenanya, jika Anda kehilangan Yubikey, Anda masih dapat membuka kunci komputer menggunakan frasa sandi yang ada - Saya sarankan Anda membuat catatan dan menyembunyikannya di tempat yang aman - Anda juga akan memerlukannya beberapa kali selama prosedur ini. Frasa sandi Yubikey tantangan baru Anda masih harus cukup kuat, tetapi tidak harus sepanjang kata sandi yang Anda gunakan saat memasang Ubuntu.


1. Tambahkan PrivacyIdea PPA dan instal paket

Di Ubuntu 14.04

Buka terminal, dan jalankan perintah berikut:

sudo add-apt-repository ppa:privacyidea/privacyidea 

Tekan Enter saat diminta, lalu jalankan:

sudo apt-get update

Kemudian instal paket dengan:

sudo apt-get install yubikey-luks

Di Ubuntu 16.04, 18.04

Tidak perlu untuk PPA, Anda dapat menginstal paket dengan:

sudo apt-get install yubikey-luks

Di Ubuntu 19.04

Lihat jawaban ini untuk cara membangun yubikey-lukspaket dari sumber untuk Ubuntu 19.04.


2. Instal perangkat lunak Yubikey

Jika Anda menggunakan fungsionalitas HMAC-SHA1 dari Yubikey untuk hal lain, Anda dapat melewati bagian ini. Ini akan menghapus konfigurasi apa pun di slot Yubikey kedua, jadi jangan lakukan langkah ini jika Anda menggunakan HMAC-SHA1 untuk tujuan lain dengan Yubikey ini.

Anda harus mengatur Yubikey Anda untuk bekerja dengan Ubuntu dengan menginstal perangkat lunak yang diperlukan, baik dari PPA Yubico di Ubuntu 14,04 atau dari repositori Ubuntu utama pada 16,04 dan yang lebih baru.

Di Ubuntu 14.04

Jika Anda belum pernah melakukannya sebelumnya, tambahkan PPA dan instal paket dengan:

sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization

Di Ubuntu 16.04, 18.04 (dan lebih baru)

sudo apt-get install yubikey-personalization

3. Inisialisasi Slot Yubikey untuk HMAC-SHA1

Sekarang kita perlu memprogram slot kedua Yubikey dengan konfigurasi HMAC-SHA1. Ini akan menghapus konfigurasi slot Anda sebelumnya, yang kosong secara default. Sekali lagi, jika Anda menggunakan HMAC-SHA1 untuk sesuatu yang lain jangan berikan perintah ini - itu akan menghapus konfigurasi Anda. Anda dapat dengan aman menggunakan kunci rahasia yang sama di dalam Yubikey untuk pengaturan LUKS ini seperti untuk penggunaan lainnya. (Misalnya, dengan komputer lain menggunakan LUKS + Yubikey).

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Terminal akan menampilkan beberapa informasi tentang perubahan yang dilakukan. Anda tidak perlu mencatat ini, tetapi itu akan menunjukkan kunci rahasia yang digunakan oleh Yubikey dalam algoritma HMAC-SHA1 untuk menghitung respons ketika diberi tantangan.


4. Daftarkan Yubikey ke LUKS Slot

Sekarang kita akan mengedit konfigurasi LUKS untuk menambahkan respons dari Yubikey sebagai salah satu kunci dekripsi.

Partisi yang perlu kita tentukan tergantung pada apakah Anda menggunakan BIOS atau UEFI untuk mem-boot mesin Anda. Untuk BIOS, volume terenkripsi pada /dev/sda5default, untuk UEFI itu pada /dev/sda3. Anda dapat memeriksanya dengan membuka disksutilitas dan mengonfirmasi jalur partisi - apakah harus sda3atau sda5. CATATAN: Pada komputer yang lebih baru dengan disk NVMe, jalurnya akan seperti /dev/nvme0n1p3.

Jalankan ini di terminal:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7

Ini akan menulis ke slot 7 dari konfigurasi LUKS, ikuti petunjuk di installer (mereka sedikit berbeda tergantung pada versi yang Anda jalankan).

Maka kamu semua sudah selesai! Anda harus dapat me-reboot komputer Anda, dan jika Yubikey Anda dimasukkan maka Anda dapat mengetikkan kata sandi tantangan Anda dan menggunakan Yubikey sebagai faktor kedua untuk membuka kunci partisi LUKS dan mem-boot sistem. Setelah Anda mendekripsi hard drive Anda dapat menghapus Yubikey.

Jika kehilangan Yubikey, Anda masih dapat memasukkan frasa sandi asli (semoga sangat lama) untuk mendekripsi hard drive, dan kemudian Anda dapat mengikuti prosedur ini lagi untuk mendaftarkan Yubikey baru.


Mengubah frasa sandi tantangan enkripsi

Mengubah kata sandi di kemudian hari cukup sederhana, cukup gunakan perintah ini untuk mengatur ulang kunci rahasia. Tidak sepenuhnya diperlukan untuk mereset kunci rahasia, tetapi tidak ada salahnya. Ingatlah bahwa ini akan menghancurkan kunci rahasia sebelumnya, jangan lakukan ini jika Anda menggunakan HMAC-SHA1 untuk hal lain dengan Yubikey ini. (Misalnya, dengan komputer lain menggunakan LUKS + Yubikey).

 ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Kemudian, mirip dengan Langkah 4 , di atas, untuk mendaftarkan kata sandi baru ke dalam slot kunci LUKS, kecuali memilih untuk menghapus Slot 7 dengan perintah ini:

sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

Saat diminta Enter any remaining passphrase, gunakan frasa sandi cadangan Anda - bukan frasa sandi tantangan Yubikey. Lalu masukkan frasa sandi tantangan Yubikey baru , dua kali, lalu akhirnya Anda harus memasukkan frasa sandi cadangan untuk yang terakhir kalinya.

Sekarang frasa sandi Yubikey tantangan lama Anda telah dihapus dan hanya yang baru Anda yang akan mendekripsi hard drive. Frasa sandi cadangan Anda sebelumnya akan tetap sama. Anda dapat mengubah frasa sandi itu dengan mengikuti tautan di Langkah 0 .


Catatan tentang implikasi keamanan

Menambahkan Yubikey akan menambah tingkat keamanan tertentu ke sistem Anda - seseorang harus mengetahui kata sandi tantangan dan meminta Yubikey Anda untuk dapat membuka kunci hard drive Anda (atau menemukan frasa sandi awal Anda, yang sekarang Anda gunakan sebagai cadangan) . Namun, secara teknis layak bagi penyerang untuk mendekripsi hard drive jika mereka tahu frasa sandi tantangan Anda (misalnya, dengan "berselancar bahu" saat Anda mengetikkannya) dan dapat memperoleh akses ke Yubikey Anda hanya dalam waktu singkat. Dengan menggunakan frasa sandi tantangan, mereka dapat memperoleh respons dari Yubikey dan menyimpannya, lalu menggunakannya untuk mendekripsi hard drive kapan saja tanpa Yubikey. Atau, sekali lagi jika penyerang atau malware mengetahui frasa sandi Anda dan dapat menjalankan kode pada mesin yang terhubung ke Yubikey Anda, mereka juga dapat mengeluarkan tantangan dan menyimpan respons. Oleh karena itu masih sangat penting untuk waspada ketika memasuki frasa sandi tantangan Anda, dan untuk memastikan bahwa Anda selalu memiliki Yubikey di lokasi yang aman. Anda seharusnya juga hanya memasukkannya ke mesin yang Anda percayai. Jika Anda kehilangan jejak Yubikey Anda dan mencurigai seseorang mungkin telah menggunakannya untuk mencoba mempelajari kunci dekripsi, lakukan langkah 2 dan 3 lagi untuk mereset kunci rahasia di dalam Yubikey dan pilih frasa sandi tantangan baru. Perhatikan bahwa jika musuh berhasil mempelajari salah satu frasa sandi Anda (baik respons HMAC-SHA1 dari Yubikey, atau cadangan Anda) mereka dapat membuat cadangan kunci master LUKS, dan kemudian menggunakannya untuk mendekripsi hard drive Anda meskipun Anda mengubah frasa sandi di masa mendatang. dan untuk memastikan bahwa Anda selalu memiliki Yubikey di lokasi yang aman. Anda seharusnya juga hanya memasukkannya ke mesin yang Anda percayai. Jika Anda kehilangan jejak Yubikey Anda dan mencurigai seseorang mungkin telah menggunakannya untuk mencoba mempelajari kunci dekripsi, lakukan langkah 2 dan 3 lagi untuk mereset kunci rahasia di dalam Yubikey dan pilih frasa sandi tantangan baru. Perhatikan bahwa jika musuh berhasil mempelajari salah satu frasa sandi Anda (baik respons HMAC-SHA1 dari Yubikey, atau cadangan Anda) mereka dapat membuat cadangan kunci master LUKS, dan kemudian menggunakannya untuk mendekripsi hard drive Anda meskipun Anda mengubah frasa sandi di masa mendatang. dan untuk memastikan bahwa Anda selalu memiliki Yubikey di lokasi yang aman. Anda seharusnya juga hanya memasukkannya ke mesin yang Anda percayai. Jika Anda kehilangan jejak Yubikey Anda dan mencurigai seseorang mungkin telah menggunakannya untuk mencoba mempelajari kunci dekripsi, lakukan langkah 2 dan 3 lagi untuk mereset kunci rahasia di dalam Yubikey dan pilih frasa sandi tantangan baru. Perhatikan bahwa jika musuh berhasil mempelajari salah satu frasa sandi Anda (baik respons HMAC-SHA1 dari Yubikey, atau cadangan Anda) mereka dapat membuat cadangan kunci master LUKS, dan kemudian menggunakannya untuk mendekripsi hard drive Anda meskipun Anda mengubah frasa sandi di masa mendatang. lakukan langkah 2 dan 3 lagi untuk mengatur ulang kunci rahasia di dalam Yubikey dan pilih frasa sandi tantangan baru. Perhatikan bahwa jika musuh berhasil mempelajari salah satu frasa sandi Anda (baik respons HMAC-SHA1 dari Yubikey, atau cadangan Anda) mereka dapat membuat cadangan kunci master LUKS, dan kemudian menggunakannya untuk mendekripsi hard drive Anda meskipun Anda mengubah frasa sandi di masa mendatang. lakukan langkah 2 dan 3 lagi untuk mereset kunci rahasia di dalam Yubikey dan pilih frasa sandi tantangan baru. Perhatikan bahwa jika musuh telah berhasil mempelajari salah satu frasa sandi Anda (baik respons HMAC-SHA1 dari Yubikey, atau cadangan Anda), mereka dapat membuat cadangan kunci master LUKS, dan kemudian menggunakannya untuk mendekripsi hard drive Anda, bahkan jika Anda mengubah frasa sandi di masa mendatang.Halaman manual untuk cryptsetup menjelaskan ini, lihat bagian luksHeaderBackup . Jika Anda menduga ini telah terjadi, maka Anda harus membuat volume LUKS yang sama sekali baru untuk melindungi data Anda.

seanlano
sumber
Pembaruan: Saya juga sudah mencoba ini dengan 15,04, sepertinya PPA tidak memiliki paket yang diperlukan, jadi saya harus mengubah baris DEB di Sumber Perangkat Lunak untuk menggunakan repositori "terpercaya" alih-alih "vivid". ". Setelah melakukan perubahan ini, pengaturan LUKS + Yubikey saya sekarang berfungsi pada 15,04.
seanlano
4
Jangan gunakan repo privacyidea lagi! Paket ini sekarang terkandung dalam debian hulu!
cornelinux
1
Ada cara untuk menghindari login tanpa yubikey: ganti passphrase luks setiap kali ketika pengguna login. Ada implementasi untuk Gentoo di sini: github.com/flowolf/initramfs_ykfde Ini dapat diadaptasi untuk Ubuntu dalam waktu singkat.
Unnamed_1
1
Saya akan menebak prosedur yang sama bekerja untuk rilis 18,04 LTS baru?
Mark Veenstra
2
Saya sudah mencoba dengan Ubuntu 18.04 dan berfungsi dengan baik.
jetole
0

Pembaruan untuk Ubuntu 19.04:

Sepertinya pada Ubuntu 19.04 (dan mungkin 18.10, saya tidak mencoba rilis itu), cryptsetuptelah berubah cukup untuk memecah bagaimana yubikey-luksdulu bekerja. Komit dari repositori hulu ini tampaknya menerapkan perbaikan, tetapi repositori asli tampaknya belum diperbarui sejak Oktober 2018. Saya menemukan fork repo yang memiliki perbaikan, serta beberapa kepingan merapikan lain- ke atas, dan berhasil membangun paket yang berfungsi pada 19.04.

Karena saya tidak dapat menemukan build yang ada dari fork yang diperbarui, metode untuk mulai yubikey-luksbekerja melibatkan mendapatkan kode sumber dan membangun paket DEB secara lokal, kemudian memasangnya.

Ikuti langkah-langkah dalam jawaban saya sebelumnya , kecuali ganti langkah 1 dengan yang di bawah ini:


1. Ambil sumber yubikey-luks, bangun dan instal paket

Instal dependensi build dengan:

sudo apt install dh-exec devscripts expect yubikey-personalization

Kemudian unduh dan ekstrak arsip sumber:

mkdir ~/tmp
cd ~/tmp
wget -O yubikey-luks.zip https://github.com/thuandt/yubikey-luks/archive/master.zip
unzip yubikey-luks.zip
cd yubikey-luks-*

Bangun paket dengan:

make builddeb NO_SIGN=1

Kemudian instal:

sudo dpkg -i DEBUILD/yubikey-luks_*.deb

Kemudian lanjutkan mengikuti langkah-langkah selanjutnya dalam jawaban pertama saya.

Semoga pada 19.10 versi yubikey-luksdi arsip utama Ubuntu dapat diperbarui sehingga pembuatan secara manual tidak diperlukan.

Sebagai bonus, versi yang lebih baru memiliki file konfigurasi, yang dapat ditemukan di /etc/ykluks.cfg. Pesan yang ditunjukkan saat boot dapat dikonfigurasi dalam file ini.

seanlano
sumber