Yubikey Xác thực hai yếu tố Mã hóa toàn bộ đĩa qua LUKS


27

Gần đây tôi đã có được một Yubikey Neo - một thiết bị xác thực yếu tố thứ hai phần cứng nhỏ. Nó chủ yếu được sử dụng với Mật khẩu một lần và giao thức U2F mới nổi - nhưng kể từ phiên bản 2 của Yubikey, nó cũng hỗ trợ xác thực phản hồi thử thách HMAC-SHA1. HMAC-SHA1 kết hợp một khóa bí mật (được lưu trữ bên trong Yubikey) và kết hợp khóa này với cụm mật khẩu để tạo phản hồi.

Làm cách nào tôi có thể kết hợp Yubikey với thiết lập Ubuntu FDE của mình để sử dụng 2FA với ổ cứng được mã hóa?

Câu trả lời:


30

Một nhóm có tên PrivacyIdea đã tạo ra một gói nhỏ để thêm thói quen phản hồi thử thách HMAC-SHA1 vào initramfs, điều đó có nghĩa là Ubuntu có thể truy vấn bạn về một thách thức để chuyển đến Yubikey và sau đó sử dụng phản hồi để mở khóa âm lượng LUKS. Đối với hầu hết các phần, tôi đang làm theo các hướng dẫn này , với một số ý kiến ​​được thêm vào. Quá trình này thực sự rất dễ dàng để làm.

Tôi đã thử nghiệm điều này trên Ubuntu 14.04, 16.04 và 18.04; sử dụng Neo Yubikey. Nó sẽ hoạt động với mọi Yubikey gần đây, với firmware 2.0+ và với bất kỳ phiên bản Ubuntu nào sau ngày 14.04. Tôi cũng đã thử nghiệm Ubuntu 19.04 với Yubikey 5C, một số công việc bổ sung là cần thiết nhưng nó có thể được thực hiện để hoạt động. Cũng có thể có các thiết bị phản ứng thách thức phần cứng HMAC-SHA1 khác mà thiết bị này hoạt động cùng, nhưng tôi không biết bất kỳ thiết bị nào tồn tại. Như mọi khi, hãy đảm bảo bạn có bản sao lưu dữ liệu trước khi tiếp tục - không nên có bất kỳ vấn đề nào ở đây, nhưng luôn có khả năng điều này sẽ phá hủy mọi thứ trên máy tính của bạn. Các hướng dẫn này không có bảo hành.

Cập nhật: Kể từ Ubuntu 16.04, các gói cần thiết nằm trong kho chính và không cần PPA.

Thêm một bình luận nếu bạn có câu hỏi!


0. Điều kiện tiên quyết

Để làm việc này, bạn sẽ phải thiết lập và hoạt động mã hóa toàn bộ đĩa LUKS. Bạn có thể làm điều này bằng cách chọn tùy chọn thích hợp khi cài đặt Ubuntu. Để bảo mật tối đa, bạn nên có một cụm mật khẩu rất mạnh được chọn trong quá trình cài đặt. Nếu cụm mật khẩu của bạn không bị trầy xước, bạn nên thay đổi nó thành một cụm từ tốt hơn trước khi tiếp tục ( hướng dẫn chi tiết hơn tại đây ).

Phương pháp bên dưới sẽ không thay thế bất kỳ cụm mật khẩu hiện có nào, mà thay vào đó sẽ thêm một cụm mật khẩu khác vào một trong các vị trí LUKS. Do đó, nếu bạn mất Yubikey, bạn vẫn có thể mở khóa máy tính của mình bằng bất kỳ cụm mật khẩu hiện có - Tôi khuyên bạn nên ghi chú lại và giấu nó đi đâu đó an toàn - bạn cũng sẽ cần vài lần trong quy trình này. Cụm mật khẩu thử thách Yubikey mới của bạn vẫn phải mạnh một cách hợp lý, nhưng không nhất thiết phải là cụm mật khẩu bạn đã sử dụng khi cài đặt Ubuntu.


1. Thêm PrivacyIdea PPA và cài đặt gói

Trên Ubuntu 14.04

Mở một thiết bị đầu cuối và chạy lệnh sau:

sudo add-apt-repository ppa:privacyidea/privacyidea 

Nhấn Enter khi được nhắc, sau đó chạy:

sudo apt-get update

Sau đó cài đặt gói với:

sudo apt-get install yubikey-luks

Trên Ubuntu 16.04, 18.04

Không cần PPA, bạn có thể cài đặt gói với:

sudo apt-get install yubikey-luks

Trên Ubuntu 19.04

Xem câu trả lời này để biết cách xây dựng yubikey-luksgói từ nguồn cho Ubuntu 19.04.


2. Cài đặt phần mềm Yubikey

Nếu bạn đang sử dụng chức năng HMAC-SHA1 của Yubikey cho mục đích khác, bạn có thể bỏ qua phần này. Nó sẽ xóa bất kỳ cấu hình nào trong khe Yubikey thứ hai, vì vậy đừng thực hiện bước này nếu bạn sử dụng HMAC-SHA1 cho các mục đích khác với Yubikey này.

Bạn sẽ cần thiết lập Yubikey của mình để hoạt động với Ubuntu bằng cách cài đặt phần mềm cần thiết, từ Yubico PPA trên Ubuntu 14.04 hoặc từ kho lưu trữ Ubuntu chính vào ngày 16.04 trở đi.

Trên Ubuntu 14.04

Nếu bạn chưa làm như vậy trước đây, hãy thêm PPA và cài đặt gói với:

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

Trên Ubuntu 16.04, 18.04 (và sau đó)

sudo apt-get install yubikey-personalization

3. Khởi tạo Khe Yubikey cho HMAC-SHA1

Bây giờ chúng ta cần lập trình khe thứ hai của Yubikey với cấu hình HMAC-SHA1. Điều này sẽ xóa cấu hình khe trước đó của bạn, mặc định trống. Một lần nữa, nếu bạn đang sử dụng HMAC-SHA1 cho một thứ khác thì không ban hành lệnh này - nó sẽ xóa cấu hình của bạn. Bạn có thể sử dụng cùng một khóa bí mật bên trong Yubikey cho thiết lập LUKS này như cho các mục đích sử dụng khác của bạn. (Ví dụ: với một máy tính khác sử dụng LUKS + Yubikey).

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

Thiết bị đầu cuối sẽ hiển thị một số thông tin về những thay đổi được thực hiện. Bạn không cần lưu ý điều này, nhưng nó sẽ hiển thị khóa bí mật được sử dụng bởi Yubikey trong thuật toán HMAC-SHA1 để tính toán phản hồi khi đưa ra thử thách.


4. Đăng ký Yubikey vào LUKS Slot

Bây giờ chúng tôi sẽ chỉnh sửa cấu hình LUKS để nối thêm phản hồi từ Yubikey như một trong các khóa giải mã.

Phân vùng mà chúng tôi cần chỉ định tùy thuộc vào việc bạn đang sử dụng BIOS hay UEFI để khởi động máy của mình. Đối với BIOS, âm lượng được mã hóa /dev/sda5theo mặc định, đối với UEFI là ở mức /dev/sda3. Bạn có thể kiểm tra điều này bằng cách mở diskstiện ích và xác nhận đường dẫn của phân vùng - nó sẽ là sda3hoặc sda5. LƯU Ý: Trên các máy tính mới hơn có đĩa NVMe, đường dẫn sẽ giống như thế /dev/nvme0n1p3.

Chạy cái này trong một thiết bị đầu cuối:

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

Điều này sẽ ghi vào khe 7 của cấu hình LUKS, làm theo lời nhắc trong trình cài đặt (chúng thay đổi một chút tùy thuộc vào phiên bản bạn đang chạy).

Vậy là xong rồi! Bạn sẽ có thể khởi động lại máy tính của mình và nếu Yubikey của bạn được chèn thì bạn có thể nhập mật khẩu thử thách và sử dụng Yubikey làm yếu tố thứ hai để mở khóa phân vùng LUKS và khởi động hệ thống. Khi bạn đã giải mã được ổ cứng, bạn có thể xóa Yubikey.

Nếu bạn mất Yubikey, bạn vẫn có thể nhập cụm mật khẩu gốc (hy vọng rất dài) để giải mã ổ cứng, và sau đó bạn có thể làm lại quy trình này để đăng ký Yubikey mới.


Thay đổi cụm mật khẩu thử thách mã hóa

Thay đổi mật khẩu vào một ngày sau đó khá đơn giản, chỉ cần sử dụng lệnh này để đặt lại khóa bí mật. Không nhất thiết phải thiết lập lại khóa bí mật, nhưng nó sẽ không bị tổn thương. Hãy nhớ rằng điều này sẽ phá hủy khóa bí mật trước đó, đừng làm điều này nếu bạn sử dụng HMAC-SHA1 cho một cái gì đó khác với Yubikey này. (Ví dụ: với một máy tính khác sử dụng LUKS + Yubikey).

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

Sau đó, tương tự như Bước 4 , ở trên, để đăng ký mật khẩu mới vào khe khóa LUKS, ngoại trừ chọn không xóa Khe 7 bằng lệnh này:

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

Khi được nhắc Enter any remaining passphrase, hãy sử dụng cụm mật khẩu dự phòng của bạn - không phải cụm mật khẩu thách thức Yubikey. Sau đó, nhập cụm mật khẩu thử thách Yubikey mới , hai lần, cuối cùng bạn sẽ cần nhập cụm mật khẩu dự phòng lần cuối.

Bây giờ mật khẩu thử thách Yubikey cũ của bạn đã bị xóa và chỉ có mật khẩu mới của bạn mới giải mã được ổ cứng. Cụm mật khẩu sao lưu trước đó của bạn vẫn sẽ giống nhau. Bạn có thể thay đổi cụm mật khẩu đó bằng cách theo các liên kết trong Bước 0 .


Lưu ý về ý nghĩa bảo mật

Thêm một Yubikey sẽ thêm một mức bảo mật nhất định vào hệ thống của bạn - ai đó phải biết cả cụm mật khẩu thách thức và để Yubikey của bạn có thể mở khóa ổ cứng của bạn (hoặc tìm cụm mật khẩu ban đầu mà bạn hiện đang sử dụng làm bản sao lưu) . Tuy nhiên, về mặt kỹ thuật, kẻ tấn công có thể giải mã ổ cứng nếu họ biết cụm mật khẩu thách thức của bạn (ví dụ: bằng cách "lướt vai" trong khi bạn nhập nó) và có thể truy cập vào Yubikey của bạn chỉ trong một thời gian ngắn. Sử dụng cụm mật khẩu thách thức, họ có thể nhận được phản hồi từ Yubikey và lưu trữ nó, sau đó sử dụng nó để giải mã ổ cứng bất cứ lúc nào mà không cần Yubikey. Hoặc, một lần nữa nếu kẻ tấn công hoặc một phần mềm độc hại biết cụm mật khẩu của bạn và có thể chạy mã trên máy được kết nối với Yubikey của bạn, họ cũng có thể đưa ra thử thách và lưu trữ phản hồi. Do đó, điều cực kỳ quan trọng là phải thận trọng khi nhập cụm mật khẩu thử thách của bạn và để đảm bảo rằng bạn luôn có Yubikey ở một vị trí an toàn. Bạn cũng chỉ nên cắm nó vào một chiếc máy mà bạn tin tưởng. Nếu bạn mất dấu Yubikey và nghi ngờ ai đó có thể đã sử dụng nó để cố gắng học khóa giải mã, hãy thực hiện lại bước 2 và 3 để đặt lại khóa bí mật bên trong Yubikey và chọn cụm mật khẩu thử thách mới. Lưu ý rằng nếu đối thủ đã tìm cách học một trong các cụm mật khẩu của bạn (phản hồi HMAC-SHA1 từ Yubikey hoặc bản sao lưu của bạn) thì họ có thể tạo bản sao lưu của khóa chính LUKS, sau đó sử dụng nó để giải mã ổ cứng của bạn ngay cả khi bạn thay đổi cụm mật khẩu trong tương lai. và để đảm bảo rằng bạn luôn có Yubikey ở một vị trí an toàn. Bạn cũng chỉ nên cắm nó vào một chiếc máy mà bạn tin tưởng. Nếu bạn mất dấu Yubikey và nghi ngờ ai đó có thể đã sử dụng nó để cố gắng học khóa giải mã, hãy thực hiện lại bước 2 và 3 để đặt lại khóa bí mật bên trong Yubikey và chọn cụm mật khẩu thử thách mới. Lưu ý rằng nếu đối thủ đã tìm cách học một trong các cụm mật khẩu của bạn (phản hồi HMAC-SHA1 từ Yubikey hoặc bản sao lưu của bạn) thì họ có thể tạo bản sao lưu của khóa chính LUKS, sau đó sử dụng nó để giải mã ổ cứng của bạn ngay cả khi bạn thay đổi cụm mật khẩu trong tương lai. và để đảm bảo rằng bạn luôn có Yubikey ở một vị trí an toàn. Bạn cũng chỉ nên cắm nó vào một chiếc máy mà bạn tin tưởng. Nếu bạn mất dấu Yubikey và nghi ngờ ai đó có thể đã sử dụng nó để cố gắng học khóa giải mã, hãy thực hiện lại bước 2 và 3 để đặt lại khóa bí mật bên trong Yubikey và chọn cụm mật khẩu thử thách mới. Lưu ý rằng nếu đối thủ đã tìm cách học một trong các cụm mật khẩu của bạn (phản hồi HMAC-SHA1 từ Yubikey hoặc bản sao lưu của bạn) thì họ có thể tạo bản sao lưu của khóa chính LUKS, sau đó sử dụng nó để giải mã ổ cứng của bạn ngay cả khi bạn thay đổi cụm mật khẩu trong tương lai. thực hiện lại bước 2 và 3 để đặt lại khóa bí mật bên trong Yubikey và chọn cụm mật khẩu thử thách mới. Lưu ý rằng nếu đối thủ đã tìm cách học một trong các cụm mật khẩu của bạn (phản hồi HMAC-SHA1 từ Yubikey hoặc bản sao lưu của bạn) thì họ có thể tạo bản sao lưu của khóa chính LUKS, sau đó sử dụng nó để giải mã ổ cứng của bạn ngay cả khi bạn thay đổi cụm mật khẩu trong tương lai. thực hiện lại bước 2 và 3 để đặt lại khóa bí mật bên trong Yubikey và chọn cụm mật khẩu thử thách mới. Lưu ý rằng nếu đối thủ đã tìm cách học một trong các cụm mật khẩu của bạn (phản hồi HMAC-SHA1 từ Yubikey hoặc bản sao lưu của bạn) thì họ có thể tạo bản sao lưu của khóa chính LUKS, sau đó sử dụng nó để giải mã ổ cứng của bạn ngay cả khi bạn thay đổi cụm mật khẩu trong tương lai.Trang man cho cryptsetup giải thích điều này, hãy xem phần luksHeaderBackup . Nếu bạn nghi ngờ điều này đã xảy ra thì bạn phải tạo một khối LUKS hoàn toàn mới để bảo vệ dữ liệu của bạn.


Cập nhật: Tôi cũng đã thử điều này với 15.04, có vẻ như PPA không có bản dựng gói yêu cầu, vì vậy tôi phải thay đổi dòng DEB trong Nguồn phần mềm để sử dụng kho lưu trữ "đáng tin cậy" thay vì "sống động" ". Sau khi thực hiện thay đổi này, thiết lập LUKS + Yubikey của tôi hiện hoạt động vào ngày 15.04.
seanlano

4
Không sử dụng repo riêng tư nữa! Các gói bây giờ được chứa trong debian ngược dòng!
cornelinux

1
Có một cách để tránh đăng nhập mà không cần yubikey: thay đổi cụm mật khẩu luks mỗi khi người dùng đăng nhập. Có triển khai cho Gentoo tại đây: github.com/flowolf/initramfs_ykfde Nó có thể được điều chỉnh cho Ubuntu trong thời gian ngắn.
Chưa đặt tên_1

1
Tôi sẽ đoán quy trình tương tự hoạt động cho phiên bản 18.04 LTS mới?
Đánh dấu Veenstra

2
Tôi đã thử với Ubuntu 18.04 và nó hoạt động tốt.
jetole

0

Cập nhật cho Ubuntu 19.04:

Có vẻ như kể từ Ubuntu 19.04 (và có thể là 18.10, tôi đã không thử bản phát hành đó), cryptsetupđã thay đổi vừa đủ để phá vỡ cách yubikey-lukssử dụng để làm việc. Cam kết này từ kho lưu trữ ngược dòng dường như thực hiện sửa lỗi, nhưng kho lưu trữ ban đầu dường như không được cập nhật kể từ tháng 10 năm 2018. Tôi đã tìm thấy ngã ba này của repo có sửa chữa, cũng như một vài mẩu tin khác và quản lý để xây dựng một gói hoạt động vào ngày 19.04.

Vì tôi không thể tìm thấy bản dựng hiện tại của ngã ba được cập nhật, phương pháp để yubikey-lukslàm việc liên quan đến việc lấy mã nguồn và xây dựng gói DEB cục bộ, sau đó cài đặt nó.

Thực hiện theo các bước trong câu trả lời trước của tôi , ngoại trừ thay thế bước 1 bằng cách dưới đây:


1. Lấy nguồn yubikey-luks, xây dựng và cài đặt gói

Cài đặt phụ thuộc bản dựng với:

sudo apt install dh-exec devscripts expect yubikey-personalization

Sau đó tải xuống và giải nén kho lưu trữ nguồn:

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-*

Xây dựng gói với:

make builddeb NO_SIGN=1

Sau đó cài đặt nó:

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

Sau đó tiếp tục làm theo các bước còn lại trong câu trả lời đầu tiên của tôi.

Hy vọng vào ngày 19.10, phiên bản yubikey-lukstrong kho lưu trữ Ubuntu chính có thể được cập nhật để không cần phải xây dựng thủ công.

Là một phần thưởng, phiên bản mới hơn có một tệp cấu hình, có thể được tìm thấy tại /etc/ykluks.cfg. Thông báo hiển thị khi khởi động có thể được cấu hình trong tập tin này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.