Bộ tải khởi động Linux hỗ trợ mã hóa toàn bộ đĩa?


28

Có bộ tải khởi động Linux nào hỗ trợ mã hóa toàn bộ đĩa (la la TrueCrypt ) không. Tôi biết đã có công việc hướng tới việc thêm hỗ trợ mã hóa vào GRUB2, nhưng điều này dường như chưa sẵn sàng. Còn lựa chọn nào khác không?

(Lưu ý rằng tôi thực sự đang đề cập đến mã hóa toàn bộ đĩa ở đây, bao gồm cả /boot)

Hầu hết các câu trả lời mô tả một thiết lập /bootkhông được mã hóa và một số trong số chúng cố gắng giải thích lý do tại sao một mã hóa không được mã hóa /bootsẽ ổn.

Không cần thảo luận về lý do tại sao tôi thực sự cần / khởi động để được mã hóa, đây là một bài viết mô tả chính xác những gì tôi cần, dựa trên phiên bản sửa đổi của GRUB2:

Vấn đề với điều này là những sửa đổi này rõ ràng không được hỗ trợ trong cơ sở mã GRUB2 hiện tại (hoặc có thể tôi đang xem xét một cái gì đó).


vâng, có một cách tuyệt vời ở đây: wiki.archlinux.org/index.php/ Kẻ
ebal

Câu trả lời:


20

Tôi nghĩ rằng phiên bản hiện tại của GRUB2 không có hỗ trợ tải và giải mã các phân vùng LUKS (nó chứa một số mật mã nhưng tôi nghĩ chúng chỉ được sử dụng để hỗ trợ mật khẩu). Tôi không thể kiểm tra nhánh phát triển thử nghiệm, nhưng có một số gợi ý trong trang GRUB rằng một số công việc được lên kế hoạch để thực hiện những gì bạn muốn làm.

Cập nhật (2015) : phiên bản mới nhất của GRUB2 (2.00) đã bao gồm mã để truy cập các phân vùng được mã hóa LUKS và GELI. (Liên kết xercestch.com mà OP cung cấp đề cập đến các bản vá đầu tiên cho điều đó, nhưng chúng hiện được tích hợp trong bản phát hành mới nhất).

Tuy nhiên, nếu bạn đang cố mã hóa toàn bộ đĩa vì lý do bảo mật, xin lưu ý rằng trình tải khởi động không được mã hóa (như TrueCrypt, BitLocker hoặc GRUB đã sửa đổi) không cung cấp bảo vệ nhiều hơn /bootphân vùng không được mã hóa (như JV đã lưu ý trong nhận xét ở trên) . Bất kỳ ai có quyền truy cập vật lý vào máy tính đều có thể dễ dàng thay thế nó bằng phiên bản tùy chỉnh. Điều đó thậm chí còn được đề cập trong bài viết tại xercestech.com mà bạn đã liên kết:

Rõ ràng, điều này không theo bất kỳ cách nào làm cho hệ thống của bạn ít bị tấn công ngoại tuyến hơn, nếu kẻ tấn công thay thế bộ tải khởi động của bạn bằng chính chúng hoặc chuyển hướng quá trình khởi động để khởi động mã của riêng chúng, hệ thống của bạn vẫn có thể bị xâm phạm.

Lưu ý rằng tất cả các sản phẩm dựa trên phần mềm để mã hóa toàn bộ đĩa đều có điểm yếu này, bất kể chúng sử dụng bộ tải khởi động không được mã hóa hay phân vùng boot / preboot không được mã hóa. Ngay cả các sản phẩm có hỗ trợ chip TPM (Mô-đun nền tảng đáng tin cậy), như BitLocker, có thể được root mà không cần sửa đổi phần cứng.

Một cách tiếp cận tốt hơn sẽ là:

  1. giải mã ở cấp BIOS (trong bo mạch chủ hoặc bộ điều hợp đĩa hoặc phần cứng bên ngoài [thẻ thông minh], có hoặc không có chip TPM), hoặc
  2. mang mã PBA (ủy quyền preboot) ( /bootphân vùng trong trường hợp này) trong một thiết bị di động (như thẻ thông minh hoặc thẻ nhớ USB).

Để thực hiện theo cách thứ hai, bạn có thể kiểm tra dự án Mã hóa toàn bộ đĩa cứng (LFDE) của Linux tại: http://lfde.org/ cung cấp tập lệnh sau khi cài đặt để di chuyển /bootphân vùng sang ổ USB ngoài, mã hóa khóa bằng GPG và lưu trữ nó trong USB. Theo cách đó, phần yếu hơn của đường dẫn khởi động ( /bootphân vùng không được mã hóa ) luôn ở bên bạn (bạn sẽ là người duy nhất có quyền truy cập vật lý vào mã giải mã VÀ khóa). ( Lưu ý : trang web này đã bị mất và blog của tác giả cũng biến mất, tuy nhiên bạn có thể tìm thấy các tệp cũ tại https://github.com/mv-code/lfde chỉ lưu ý việc phát triển cuối cùng đã được thực hiện 6 năm trước). Để thay thế nhẹ hơn, bạn có thể cài đặt phân vùng khởi động không được mã hóa trong thanh USB trong khi cài đặt HĐH.

Trân trọng, MV


1
Giải mã ở cấp độ BIOS thực sự sẽ là một giải pháp rất tốt (tôi đã coi đây là một lựa chọn) ...

1
Tôi không biết bất kỳ triển khai hoạt động nào, nhưng EFI / UEFI có tùy chọn bao gồm Trình quản lý khởi động EFI tùy chỉnh để thay thế trình tải khởi động chung, có thể thêm lớp giải mã để giải mã dữ liệu (tất nhiên sau đó bạn sẽ cần nền tảng EFI ). Hoặc có thể một số dự án liên quan đến CoreBoot (ADLO, SeaBIOS, OpenBIOS, v.v.) có thể được sửa đổi để làm điều đó. Chỉ là ý tưởng.

4
Chỉ để thêm thông tin về điểm yếu của việc sử dụng phân vùng khởi động / không được mã hóa (nhưng nó cũng áp dụng cho trình tải khởi động không được mã hóa): twopointfouristan.wordpress.com/2011/04/17/17 (cách sửa đổi khởi động phân vùng trong 10 phút truy cập vật lý, để truy xuất cụm mật khẩu gắn kết cộng với bất kỳ tệp nào khác trong phân vùng được mã hóa)

1
@MV.: Cảm ơn. Tôi có thể tự kiểm tra và thêm câu trả lời ở đây với các bước chi tiết hơn để sử dụng /bootphân vùng được mã hóa với GRUB2.
Peque

1
@ 에이: không, điều đó có liên quan (sử dụng LUKS với TPM) nhưng không phải là dự án tương tự được lưu trữ trước đây tại lfde.org (hiện là trang web về aeroclub).
MV.

4

Làm cho RAMdisk ban đầu của bạn và / thư mục boot không sử dụng mã hóa.

Điều này sẽ mang đến một kernel "tối thiểu", với trình điều khiển và hỗ trợ để chuyển sang hệ thống tập tin gốc "thực tế" được mã hóa.

Trước khi bạn tuyên bố "đây là một hack" - hãy nhớ - hầu hết (nếu không phải tất cả) các bản phân phối Linux khởi động theo cách này ngày hôm nay theo mặc định. Điều này rõ ràng cho phép hệ thống của bạn khởi động và tải FS gốc của bạn, sử dụng các mô-đun mà nó cần tải từ hệ thống tệp. (Sắp xếp một vấn đề gà và trứng). Ví dụ như, nếu hệ thống tập tin gốc của bạn nằm trên ổ đĩa RAID phần cứng và bạn cần tải trình điều khiển trước khi bạn có thể gắn FS gốc của mình.


3

Tôi đã xem lại liên kết bạn đã đăng - mặc dù không có phân vùng khởi động, nhưng vẫn có một trình tải khởi động không được mã hóa trên đĩa cứng có thể được truy cập và bị xâm phạm bằng cách sử dụng một cuộc tấn công người giúp việc độc ác. Tôi đã xem xét một thiết lập tương tự, trong đó không có dữ liệu không được mã hóa trên đĩa cứng, nhưng cho đến nay tôi chỉ nghĩ đến việc chạy bộ tải khởi động từ ổ đĩa di động.


Có, vẫn còn một bộ tải khởi động không được mã hóa. Điều này sẽ được chấp nhận cho tôi.

Người giúp việc độc ác có thể lây nhiễm bộ tải khởi động để thực hiện một dấu nhắc mật khẩu giả để đánh lừa bạn, sau đó chỉ cần tải kernel trojanized không được mã hóa. Mã hóa kernel tăng rất ít mà không cần mã hóa bộ tải khởi động.
Skaperen

1

Tôi tin rằng hầu hết trong số họ làm, điều bạn cần là hướng dẫn cách cài đặt HĐH với HD được mã hóa ngay từ đầu.

Ubuntu có một trang đẹp với các hướng dẫn về cách tạo phân vùng được mã hóa, LMVP, thư mục, v.v., chỉ cần google phiên bản phân phối của bạn về điều đó ...


2
Hầu hết các bản phân phối Linux, bao gồm Ubuntu, bao gồm một số loại hỗ trợ để mã hóa phân vùng, nhưng chúng yêu cầu / boot không được mã hóa. Những gì tôi đang tìm kiếm là một bộ tải khởi động có thể xử lý một đĩa được mã hóa hoàn toàn.

1
Ít nhất một số phần của bộ tải khởi động cần phải được mã hóa, nếu không CPU không thể chạy nó. Có bất kỳ vấn đề cụ thể nào bạn gặp phải khi rời khỏi / khởi động không được mã hóa?

2
Bộ tải khởi động và / boot là những thứ khác nhau. Tôi đang tìm kiếm một bộ tải khởi động hơn có thể khởi động một đĩa được mã hóa hoàn toàn. TrueCrypt có thể làm điều đó cho Windows, nhưng không phải cho Linux.

Sự khác biệt là bộ tải khởi động windows được chứa trong chính mbr trong khi trên linux, mbr chỉ liên kết đến các tệp / boot cần thiết.
JV

1
"Xác thực tiền khởi động được xử lý bởi Trình tải khởi động TrueCrypt, nằm trong rãnh đầu tiên của ổ đĩa khởi động" - hay còn gọi là trên windows, nó tạo ra một mini- / boot. Một lần nữa, chính grub được chứa trong / boot, mbr chỉ có 512 byte, không đủ để lưu trữ thuật toán giải mã. Tuy nhiên, đã xong, một phần của ổ cứng phải được cung cấp không được mã hóa. Bạn có thể có thể bắt đầu grub trên một phân vùng được mã hóa từ một bộ tải khởi động trên một phân vùng hoàn toàn khác nhưng điều đó sẽ yêu cầu một số mã lộn xộn nghiêm trọng ...
JV

0

Không, tôi nghĩ là không có.

Bạn có thực sự cần mã hóa / khởi động? Tôi nghi ngờ là không. Phần còn lại của hệ thống tập tin có thể được mã hóa bằng phần mềm Linux thông thường nằm trên initramfs trong / boot và nhắc người dùng theo đó.


2
Có, tôi cần mã hóa / khởi động. Tất cả mọi thứ phải được mã hóa ngoại trừ chính bộ tải khởi động.

Vui lòng giải thích lý do tại sao bạn tin rằng không có bộ tải khởi động hỗ trợ mã hóa toàn bộ đĩa.
this.josh

@Grodriguez: nếu bạn coi / boot là một phần của trình tải khởi động, thì mọi thứ đều được mã hóa - tất cả các nhị phân được sử dụng trong thời gian chạy, tất cả dữ liệu người dùng, v.v.
MarkR

2
Như đã lưu ý trong một nhận xét về một câu trả lời khác: Tôi biết rằng phải luôn có "thứ gì đó" không được mã hóa - Tôi chỉ cần "cái gì đó" là bộ tải khởi động (MBR + boot sector), thay vì phân vùng / boot .

0

Có vẻ như bạn đang yêu cầu một thứ không thể làm được và so sánh nó với một giải pháp Windows che giấu việc thực hiện với bạn nhưng thực tế lại đang làm điều tương tự mà Linux đang làm.

Giải pháp gần nhất mà tôi có thể nghĩ đến là sử dụng ổ cứng thực hiện mật khẩu bảo mật và mã hóa. Một số máy tính xách tay Thinkpad sử dụng các giải pháp phần cứng này.


2
Xin lỗi, nhưng tôi không thấy lý do tại sao điều này là "không thể". Bài viết tôi liên kết đến trong câu hỏi của tôi chứng minh rằng nó có thể được thực hiện. Bằng chứng về khái niệm đã được triển khai bằng phiên bản GRUB đã sửa đổi 2. Tôi biết rằng luôn phải có "thứ gì đó" không được mã hóa - thay vào đó tôi chỉ cần "thứ gì đó" để làm bộ tải khởi động (MBR + boot sector) của một / phân vùng khởi động.

@Grodriguez: Yêu cầu của bạn không có ý nghĩa. Yêu cầu của bạn có được đáp ứng khi sử dụng máy ảo bên trong HĐH khác không? Nếu vậy, hãy khởi động hệ điều hành một, giải mã ổ đĩa và khởi chạy VM.
Zan Lynx

2
Bạn đã thực sự cố gắng đọc bài viết tôi liên kết đến? Việc bạn không hiểu yêu cầu không có nghĩa là "nó vô nghĩa". Tôi có lý do chính đáng cho việc này (mà tôi không muốn tham gia).

Bài viết làm rõ trong đoạn 3 rằng nó không cải thiện tình hình. Vì vậy, thật vô nghĩa khi tôi làm theo phần còn lại của nó, nó tập trung vào cách thiết lập nó, hơn là cách nó hoạt động. Hãy suy nghĩ về những gì sẽ nói với bạn rằng tôi đã thay thế kernel của bạn, hoặc toàn bộ / boot, bằng chính tôi (khi đóng vai người giúp việc xấu xa).
Skaperen

0

Câu trả lời được gợi ý bởi bài báo. "Điều này hiện có thể thực hiện được với các tiện ích mở rộng cho bộ tải khởi động GRUB2 thế hệ tiếp theo, đã được vá để hỗ trợ không chỉ" và "chúng tôi muốn cài đặt hình ảnh grub2 mới của chúng tôi sau này" và "Bây giờ chúng tôi biên dịch nguồn GRUB2 hỗ trợ LUKS. " Dường như có một bản vá hoặc tiện ích mở rộng mà bạn cần có và bao gồm với GRUB2 hoặc nguồn GRUB2 rẽ nhánh.


0

Phiên bản Grub2 2.02 ~ beta3 có thể làm rất nhiều thứ mà Grub2 phiên bản 2.02 ~ beta2 không thể làm được, được thử nghiệm bởi tôi:

  1. Khởi động bằng đĩa Super Grub 2
  2. Nhập phím 'c' để đi đến dòng lệnh
  3. Nhập lệnh để gắn kết phân vùng được mã hóa tôi muốn
    • lumod
    • cryptomount (hd0, #) // trong đó # đại diện cho phân vùng được mã hóa
  4. Nhập cụm mật khẩu và nhập thêm một số lệnh
    • multiboot (crypto0) /grub/i386-pc/core.img
    • khởi động

Nó sẽ tải một Grub2 khác nằm trong phân vùng được mã hóa, một cuộc tấn công điên rồ không có ý nghĩa gì ở đây ... tôi đang khởi động từ đĩa CD (chỉ đọc ở mức trung bình), sau đó gắn một phân vùng được mã hóa (không phải là mật khẩu làm sao ai dám tiêm bất cứ thứ gì!), sau đó khởi động từ bên trong phân vùng được mã hóa và tải Grub2 bằng menu riêng, v.v.

Lưu ý: Khởi động Grub 2.02 ~ beta3 như vậy (tôi sử dụng Super Grub 2 cd) có thể trên thẻ nhớ USB, USB HDD, v.v.

Cảnh báo: Grub2 phiên bản 2.02 ~ beta2 không thể thực hiện tương tự vì có một số BUG (dường như đã được sửa trên phiên bản Grub2 2.02 ~ beta3) liên quan đến lệnh mã hóa ...

lỗi beta2, tôi nói về, là:

  1. Nó không thực sự gắn kết phân vùng được mã hóa, vì vậy nó không cho phép bạn truy cập (crypto0) / *
  2. Nếu có nhiều phân vùng được mã hóa, cryptomount -achỉ sử dụng một cụm mật khẩu
  3. Sau khi chạy tiền điện tử một lần, nó được chạy lại không làm gì cả

trên phiên bản beta 3:

  1. Nó thực sự gắn kết phân vùng được mã hóa và cho phép bạn truy cập các tệp thông qua (crypto0) / * hoặc (crypto1) / * vv nếu có nhiều hơn một gắn kết cùng một lúc
  2. Nó yêu cầu mỗi cụm mật khẩu (một cho mỗi phân vùng được mã hóa)
  3. Nó cho phép bạn chạy nó nhiều lần bạn cần, bạn có thể gắn cái này, rồi cái khác, v.v.

Lưu ý bên lề: Tôi không tìm ra cách ngắt kết nối chúng, ngoại trừ khởi động lại hoặc khởi động khác hoặc cùng grub2 / bộ tải khởi động khác, v.v.

Hy vọng điều này sẽ giúp làm rõ mọi thứ và hy vọng Grub2 phiên bản 2.02 ~ beta3 sẽ được tích hợp trên LiveCD để tất cả chúng ta có thể cài đặt nó mà không cần phải tự biên dịch nó.

PD: Với đĩa Super Grub 2, tôi không thể thấy bất kỳ cách nào để cài đặt Grub2 phiên bản 2.02 ~ beta3 lên phân vùng MBR / boot, v.v.

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.