Shufflecake, một công cụ để tạo các tập ẩn

bánh trộn

Shufflecake là một công cụ dành cho Linux cho phép tạo nhiều tập đĩa ẩn trên thiết bị lưu trữ theo cách mà rất khó, ngay cả dưới sự kiểm tra pháp y, để chứng minh sự tồn tại của những tập đĩa đó.

Công ty kiểm toán bảo mật Kudelski Security đã phát hành bộ công cụ Shufflecake , cho phép tạo ra các hệ thống tập tin ẩn được phân tán trên không gian trống có sẵn trên các phân vùng hiện có, không thể phân biệt được với dữ liệu dư ngẫu nhiên. Các phân vùng này được tạo ra theo cách mà, nếu không biết khóa truy cập, việc chứng minh sự tồn tại của chúng rất khó khăn, ngay cả trong quá trình phân tích pháp y.

Dự án này tự định vị mình là một giải pháp tiên tiến hơn Truecrypt và Veracrypt để ẩn dữ liệu bí mật, cung cấp hỗ trợ gốc cho nền tảng Linux và cho phép bạn đặt tối đa 15 phân vùng ẩn trên thiết bị, lồng vào nhau để che giấu sự tồn tại của chúng.

Các phân vùng ẩn được tạo ra , theo ý muốn của người dùng, có thể được định dạng để phù hợp với bất kỳ hệ thống tệp nào, ví dụ như ext4, xfs hoặc btrfs. Mỗi phân vùng được coi là một thiết bị khối ảo độc lập với khóa mở khóa riêng.

Để che giấu dấu vết, mô hình hành vi "khả năng phủ nhận hợp lý" được đề xuất. Về cơ bản, dữ liệu có giá trị được ẩn dưới dạng các lớp bổ sung bên trong các phần được mã hóa chứa dữ liệu ít giá trị hơn, tạo thành một dạng phân cấp các phần ẩn. Dưới áp lực, chủ sở hữu thiết bị có thể tiết lộ khóa của phần được mã hóa, nhưng các phần khác (lên đến 15 cấp độ lồng nhau) có thể được ẩn bên trong đó, khiến việc xác định sự hiện diện và chứng minh sự tồn tại của chúng trở nên khó khăn.

Shufflecake và mô-đun nhân chỉ mới được thử nghiệm trên Debian và Ubuntu với nhân 5.13 và 5.15 (Ubuntu 22.04 được hỗ trợ). Cần lưu ý rằng dự án này vẫn nên được coi là một nguyên mẫu đang hoạt động và không nên được sử dụng để lưu trữ dữ liệu nhạy cảm.

Trong tương lai, chúng tôi dự định thực hiện các tối ưu hóa bổ sung cho hiệu suất, độ tin cậy và bảo mật cũng như cung cấp khả năng khởi động từ các phân vùng Shufflecake.

Giới thiệu về Shufflecake

Việc che giấu được thực hiện bằng cách tạo ra mỗi phân vùng như một tập hợp các phân đoạn được mã hóa đặt ở các vị trí ngẫu nhiên trên thiết bị lưu trữ. Mỗi phân đoạn được tạo động khi phân vùng yêu cầu thêm không gian lưu trữ. Để làm phức tạp việc phân tích, các lát cắt từ các phần khác nhau được xen kẽ với nhau.

Các phần Shufflecake không được liên kết với các vùng liền kề và các phần từ tất cả các phần được trộn lẫn với nhau. Thông tin về các phần đã sử dụng và miễn phí được lưu trữ trong bản đồ vị trí đính kèm với từng phần, được tham chiếu bởi tiêu đề được mã hóa. Các thẻ và tiêu đề được mã hóa và không cần biết mã khóa, không thể phân biệt được với dữ liệu ngẫu nhiên.

Phần tiêu đề được chia thành các khe , mỗi khe xác định một phần riêng và các khu vực liên quan. Các khe trong tiêu đề được xếp chồng lên nhau và liên kết đệ quy: khe hiện tại chứa khóa để giải mã các tham số của phần trước đó (ít ẩn hơn) trong hệ thống phân cấp, cho phép một mật khẩu duy nhất giải mã tất cả các phần ít ẩn hơn liên quan đến mục đã chọn. Mỗi phần ít ẩn hơn coi các phần của các phần lồng nhau là tự do.

Theo mặc định, tất cả các phân vùng Shufflecake lồng nhau đều có cùng kích thước hiển thị với phân vùng cấp cao nhất. Ví dụ, nếu sử dụng ba phân vùng trên thiết bị 1GB, mỗi phân vùng sẽ được hệ thống hiển thị là một phân vùng 1GB và tổng dung lượng đĩa khả dụng sẽ được chia sẻ giữa tất cả các phân vùng. Nếu tổng lượng dữ liệu được lưu trữ vượt quá kích thước thực tế của thiết bị, lỗi I/O sẽ bắt đầu xảy ra.

Các phần lồng nhau chưa được mở không tham gia vào việc phân bổ không gian; nghĩa là, việc cố gắng điền vào một phần cấp cao hơn sẽ ghi đè lên dữ liệu trong các phần lồng nhau, nhưng sẽ không tiết lộ sự hiện diện của chúng thông qua việc phân tích kích thước dữ liệu có thể được đặt trong phần đó trước khi phát sinh lỗi (giả định rằng các phần cấp cao hơn chứa dữ liệu bất biến). Dữ liệu không được sử dụng một cách ngẫu nhiên và không bao giờ được sử dụng riêng lẻ, và công việc thường xuyên luôn được thực hiện với phần lồng nhau gần nhất; bản thân lược đồ ngụ ý rằng điều quan trọng nhất là giữ bí mật sự tồn tại của dữ liệu, ngay cả khi phải trả giá bằng việc mất dữ liệu.

Phương pháp mã hóa Shufflecake mang lại hiệu năng tương đối cao, nhưng do chi phí phát sinh, hiệu năng của nó chỉ bằng khoảng một nửa so với mã hóa đĩa dựa trên hệ thống con LUKS. Việc sử dụng Shufflecake cũng phát sinh thêm chi phí RAM và dung lượng đĩa để lưu trữ dữ liệu dịch vụ. Chi phí bộ nhớ ước tính là 60 MB mỗi phân vùng , và dung lượng đĩa sử dụng ước tính là 1% tổng kích thước phân vùng. Để so sánh, kỹ thuật WORAM có mục đích tương tự lại dẫn đến hiệu năng chậm hơn từ 5 đến 200 lần với mức giảm 75% dung lượng đĩa khả dụng.

Mã cho các tiện ích (shufflecake-userland) và mô-đun nhân Linux (dm-sflc) được viết bằng C và được phát hành theo giấy phép GPLv3, điều này khiến không thể đưa mô-đun nhân đã xuất bản vào nhân Linux chính do không tương thích theo giấy phép GPLv2 mà hạt nhân được vận chuyển.

Nếu bạn muốn tìm hiểu thêm, bạn có thể xem chi tiết tại liên kết sau.


Thêm vào danh sách nguồn ưu tiên trên Google.