Ký / Kiểm tra lại kernel để ngăn chặn / phát hiện thao tác


8

Tất cả các phân vùng của tôi được mã hóa ( //home), nhưng /bootphân vùng phải không được mã hóa và được mở để thao tác. Tôi đã suy nghĩ về việc băm kernel khi khởi động và kiểm tra kết quả dựa trên giá trị được lưu trữ (được tạo trên biên dịch, được lưu trên ổ đĩa được mã hóa của tôi) để xem ai đó, bằng cách nào đó đã thao túng kernel kể từ lần khởi động cuối cùng (thậm chí có thể là vật lý). Có một vấn đề với việc viết một kịch bản như vậy? Có những chương trình đã làm điều này rồi?

Câu trả lời:


6

Những gì bạn đang tìm kiếm - xác minh rằng hệ điều hành đang chạy trên máy tính là thứ bạn tin tưởng - được gọi là khởi động đáng tin cậy . (Đây là một trong một số thứ đôi khi được gọi là boot đáng tin cậy). Phương pháp đề xuất của bạn không đạt được mục tiêu này.

Mã hóa không cung cấp tính toàn vẹn dữ liệu hoặc tính xác thực của . Nói cách khác, nó không ngăn chặn kẻ tấn công sửa đổi nội dung trong đĩa của bạn và thay thế nó bằng một hệ điều hành độc hại. Hệ điều hành độc hại này có thể dễ dàng được lập trình để hiển thị tổng kiểm tra mà bạn mong đợi cho kernel đã tải.

Con đường tấn công dễ nhất là một người trung gian nơi kẻ tấn công chạy hệ điều hành bình thường của bạn dưới một loại máy ảo nào đó. Lớp máy ảo truyền đầu vào của bạn đến hệ điều hành bạn muốn và truyền lại đầu ra. Nhưng nó cũng ghi lại các tổ hợp phím của bạn (mmmm, mật khẩu) ở bên cạnh, rình mò các khóa riêng tư từ bộ nhớ của HĐH, v.v.

Để tránh hình thức tấn công này, bạn cần có một nguồn gốc tin cậy : một thành phần của hệ thống mà bạn tin tưởng vì một lý do khác hơn là vì một số thành phần khác của hệ thống nói như vậy. Nói cách khác, bạn phải bắt đầu từ đâu đó. Bắt đầu với phần cứng thuộc sở hữu của bạn là một khởi đầu tốt; bạn có thể giữ hệ điều hành của mình trên một khóa USB không rời khỏi tầm nhìn của bạn và chỉ cắm vào phần cứng mà bạn có đủ tự tin ( phần cứng có thể có phần mềm độc hại !). Xin lưu ý, nếu bạn sẵn sàng tin tưởng vào máy tính, bạn cũng có thể tin tưởng vào đĩa cứng của nó.

Có một giải pháp kỹ thuật để thu hẹp khoảng cách giữa tin tưởng một con chip nhỏ và tin tưởng vào toàn bộ máy tính để bàn hoặc máy tính xách tay. Một số PC có TPM (mô-đun nền tảng đáng tin cậy) , trong số những máy khác, có thể xác minh rằng chỉ có một hệ điều hành đã biết có thể được khởi động. Grub đáng tin cậy hỗ trợ TPM, vì vậy với TPM plus Trusted Grub, bạn có thể đảm bảo rằng hạt nhân bạn đang chạy là một hạt nhân mà bạn đã phê duyệt.

Lưu ý rằng việc áp dụng TPM có thể có tác dụng đối với bạn. Tất cả bản lề về người có chìa khóa. Nếu bạn có khóa riêng cho TPM, thì bạn có thể kiểm soát chính xác những gì chạy trên máy tính của bạn. Nếu chỉ có nhà sản xuất có khóa riêng, thì đó là cách biến nền tảng đa năng thành thiết bị khóa.


+1 để tham khảo về một cạm bẫy tiềm năng lớn của TPM (còn gọi là Điện toán phản bội)
Eli Heady

Bạn không đưa ra giải pháp thực tế , chỉ đề cập đến các cụm từ liên quan đến bảo mật phổ biến. Những gì bạn nói về một cuộc tấn công MITM là một mối đe dọa bỏ qua ý tưởng chính của câu hỏi của OP: Sử dụng tập lệnh xác minh tổng kiểm tra cho phép hệ thống khởi động chỉ khi một số điều kiện được đáp ứng. Tại thời điểm đó, sẽ không có vấn đề gì trong việc xác minh rằng phần cứng cơ bản thực sự là cái cần phải có, không phải là VM.
rozcietrzewiacz

-1

Nhân khởi động nằm trong bộ nhớ. Bạn có thể tạo một tập lệnh sẽ định vị nó trong /dev/memvà, biết kích thước, tính toán và xác minh tổng kiểm tra của nó.

Bạn cũng có thể mã hóa toàn bộ HD, không cần /bootphân vùng và (hầu như) không có cách nào để sửa đổi kernel. Làm sao? Hai cách tôi có thể nghĩ ra:

  • Đặt kernel của bạn vào đĩa CD, tắt mà máy tính của bạn sẽ khởi động. Điều này không khó lắm; một số người đã báo cáo bằng cách sử dụng thiết lập như vậy vài năm trước - xem bài viết thứ hai trong chủ đề diễn đàn này .

  • Nếu bo mạch chủ của bạn được hỗ trợ bởi coreboot và có đủ chỗ để chứa một hạt nhân tối thiểu, bạn có thể có hạt nhân kích hoạt mã hóa trên chip BIOS của mình. (Tôi chưa có cơ hội thử nghiệm, nhưng tôi thấy không có lý do tại sao điều này có thể không hoạt động.)

Chỉnh sửa: Lưu ý rằng tất cả những điều này chỉ là các bước duy nhất để khởi động "đáng tin cậy" hoặc "đã xác minh" (mà Gilles đã chỉ đúng). Cơ chế hoàn chỉnh cũng cần tính đến những gì đang xảy ra ở giai đoạn bootloader và cách xác định phần cứng cơ bản. Hãy xem Google Chromium OS thực hiện việc này như thế nào .


Nó sẽ làm việc chứ? Tôi không chắc; Tôi không biết liệu kernel có sửa đổi mã của nó trong bộ nhớ sau khi nó khởi động hay không. Tôi biết rằng bạn không thể xác minh mô-đun theo cách đó, vì mô-đun được liên kết với kernel (thay đổi một số địa chỉ ở đây và ở đó) khi nó được tải. Nó sẽ cung cấp các thuộc tính bảo mật mong muốn? Không, xem câu trả lời của tôi. Liêm chính là khó khăn!
Gilles 'SO- ngừng trở nên xấu xa'

Có vẻ như bạn đã không đọc toàn bộ câu trả lời của tôi. Đoạn đầu tiên, mà bạn đề cập đến, chỉ là một câu trả lời trực tiếp cho những gì thực sự được hỏi. Phần còn lại của câu trả lời của tôi trình bày các tùy chọn tương tự như phương pháp bạn đã đề cập, nhưng tốt hơn , bởi vì chúng an toàn chống lại sửa đổi kernel (không giống như một ổ đĩa USB).
rozcietrzewiacz

@Gilles Quên '@' bạn trong bình luận trước. Ngoài ra, tôi vừa kiểm tra những gì bạn không chắc chắn: đã thực hiện một kết xuất hình ảnh hạt nhân trong bộ nhớ, sau đó thêm một loạt các mô-đun, tạo ra một kết xuất thứ hai của khu vực, so sánh - giống nhau. Bạn có thể sử dụng này.
rozcietrzewiacz
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.