Làm cách nào để sử dụng dm-crypt (LUKS) với GnuPG để sử dụng hai yếu tố cho FDE?


9

Khi sử dụng mã hóa toàn bộ đĩa với Ubuntu (trái ngược với mã hóa homedir), dm-crypt với LUKS được sử dụng để mã hóa âm lượng. Trong trình cài đặt (ít nhất là trên 12.04 thay thế), bạn có thể chọn giữa cài đặt nó bằng cụm mật khẩu hoặc tệp khóa. Tôi muốn sử dụng kết hợp cả hai; không phải, nhưng yêu cầu cả hai.

Tại sao? Bởi vì điều này tăng cường bảo mật (hai yếu tố); bạn sẽ cần phải một cái gì đó và bạn cần biết một cái gì đó để mở khóa nó. Sau đó, tôi muốn đặt keyfile trên một thiết bị lưu trữ nhỏ có thể tháo rời (ổ flash USB) và chỉ cắm nó trong thời gian khởi động. Kết quả là cần phải đặt đúng ổ đĩa flash cung cấp cụm mật khẩu phù hợp để mở khóa phân vùng gốc.

Vì vậy, nói cách khác, tôi muốn được hỏi trong quá trình khởi động cụm mật khẩu mà keyfile trên ổ đĩa ngoài được mã hóa.

Tôi thấy một /usr/share/initramfs-tools/hooks/cryptgnupgkịch bản trợ giúp có thể giúp hoàn thành nó, nhưng tôi không biết làm thế nào để sử dụng nó.

Chỉ để tránh nhầm lẫn: Tôi không yêu cầu cách thêm một phím bổ sung vào âm lượng để mở khóa.


Tôi đã tìm thấy một phần của câu trả lời bằng cách ... đọc tài liệu . Đọc về cách sử dụng này trong /usr/share/doc/cryptsetup/README.gnupg. Tôi sẽ cố gắng tìm một chút thời gian để thay đổi nó để làm cho nó sử dụng một keyfile từ phương tiện bên ngoài.
gertvdijk

Câu trả lời:


5

Tôi làm điều tương tự, tuy nhiên tôi e rằng câu trả lời của tôi sẽ không thỏa đáng, vì nhiều lý do tôi đã đi với một initramfs hoàn toàn tùy chỉnh .

Thay vì GnuPG, đó là một nhị phân bổ sung phải được đưa vào initramfs (và trong trường hợp GnuPG-2, một thứ khá phức tạp), tôi chỉ đơn giản sử dụng những gì đã có. Và đó rõ ràng là dm-crypt/LUKS.

Vì vậy, giả sử bạn có một keyfile. Tốt nhất là một với dữ liệu ngẫu nhiên.

# dd if=/dev/urandom of=keyfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000189802 s, 2.7 MB/s

Thêm mã hóa cho nó bằng LUKS (thoải mái thêm các cài đặt mật mã bạn chọn).

# truncate -s 2M keyfile.luks
# cryptsetup luksFormat keyfile --header keyfile.luks

WARNING!
========
This will overwrite data on keyfile.luks irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: bananas
Verify passphrase: bananas

Bây giờ bạn có một keyfile (512 byte) và keyfile.luks (2MB, mà cryptsetup vì một số lý do cần phải viết tiêu đề LUKS 192k). Vì initramfs sẽ được nén bằng mọi cách, điều đó không quá tệ (vẫn nhỏ hơn GnuPG).

Bây giờ bạn có thể giải mã keyfile:

# cryptsetup luksOpen keyfile --header keyfile.luks lukskey
Enter passphrase for keyfile: bananas

Và bạn có 512 byte dữ liệu ngẫu nhiên trong /dev/mapper/lukskey. (Bạn có thể viết thư cho nó nếu bạn muốn thay đổi nó, vì vậy chúng tôi có thể đã khởi tạo tệp bằng các số 0 trước đó.)

# blockdev --getsize64 /dev/mapper/lukskey
512

Trong initramfs init sau đó bạn có thể tiến hành mở âm lượng LUKS thực với nó (giả sử bạn đã thêm khóa trước).

cryptsetup --key-file=/dev/mapper/lukskey luksOpen /dev/yourdisk luksyourdisk
cryptsetup luksClose lukskey # clean up

Cách tiếp cận này làm cho GnuPG hoàn toàn không cần thiết, cộng với bạn có được tất cả các lợi thế LUKS, chẳng hạn như nhiều cụm mật khẩu cho khóa, mật mã của sự lựa chọn của bạn, et cetera. Không đề cập đến một dấu nhắc mật khẩu đẹp (chủ yếu là thường xuyên) với nhiều lần thử lại.


2
Giải pháp tuyệt vời, nhưng làm cách nào để tích hợp chính xác điều này vào initramfs của tôi? Bạn nói rằng bạn sử dụng một initramfs hoàn toàn tùy chỉnh, nhưng điều này sẽ không thể thực hiện được chỉ bằng cách sử dụng hook?
gertvdijk

Chắc chắn rồi. Thậm chí có thể không có một cái móc nếu bạn có thể nghĩ ra một cách để ép buộc tiền điện tử để tìm và mở khóa bằng cách nào đó trước tiên. Ví dụ: nó không phải là một tệp, bạn có thể tạo một phân vùng riêng cho nó trên thanh USB. Tuy nhiên vì tôi không làm theo cách đó nên tôi không thể đưa ra câu trả lời cụ thể cho nó ... xin lỗi: - /
frostschutz 22/07/13

1
Không có vấn đề gì cả - phá vỡ GnuPG và sử dụng lại LUKS chắc chắn là một lựa chọn ưu việt. Trong trường hợp tôi cần viết lại các hook cho cách tiếp cận GnuPG, tốt hơn hết tôi nên viết lại nó mà không cần sử dụng nó. Và vâng, tôi biết điều này không phải là một tập tin.
gertvdijk

@gertvdijk nếu bạn thực hiện được điều này, tôi sẽ quan tâm đến câu trả lời của bạn để tham khảo trong tương lai
frostschutz
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.