Khả năng phục hồi của khối lượng mã hóa VeraCrypt và LUKS chống lại tham nhũng dữ liệu như thế nào?


19

Câu hỏi đã được trả lời một phần, nhưng đó vẫn chưa phải là điều tôi đang tìm kiếm. Xem để cập nhật 1 xuống

Tôi dự định mã hóa một số hệ thống tập tin bằng VeraCrypt và LUKS, nhưng nỗi sợ của tôi là nếu một vấn đề duy nhất xảy ra, tôi sẽ không thể gắn kết các phân vùng một lần nữa do đó làm mất tất cả dữ liệu được lưu trữ bên trong chúng. (do các ngành / khối bị hỏng, mất điện trong quá trình ghi, lỗi hệ thống tệp, v.v.)

Ngoài ra, VeraCrypt có thể đã chia rẽ các công cụ sửa chữa của TrueCrypt, nhưng tôi không tính đến nó và tìm hiểu thêm về các trường hợp thực tế.

Tôi cũng biết về RAID và các bản sao lưu / kho tiền, nhưng đó không phải là thứ tôi đang tìm kiếm.

Vì vậy, câu hỏi là: Làm thế nào linh hoạt các phân vùng được mã hóa với VeraCrypt và LUKS?

Cập nhật 1 :

Câu hỏi của tôi là nhiều hơn về khả năng phục hồi của phân vùng được mã hóa và dữ liệu của nó, hơn là về việc lưu khóa chính, siêu dữ liệu hoặc các tiêu đề. Vấn đề tương tự như một kho lưu trữ 7zip rắn: nếu một bit bị hỏng ở giữa, thì bạn sẽ mất toàn bộ kho lưu trữ.

Phân vùng được mã hóa sẽ dễ bị tổn thương? (không bao gồm khóa chính, siêu dữ liệu và tiêu đề)

Tái bút: Xin lỗi nếu tôi không trả lời ngay, tôi đang làm việc và đi du lịch vòng quanh thế giới - vì vậy làm cho bài đăng này có liên quan - và tôi thường phải đối mặt với việc kinh doanh bị ép thời gian. Nhưng, tôi chắc chắn sẽ trả lời lại cho chắc chắn.

Câu trả lời:


13

Trong thực tế, nó gần như có khả năng phục hồi mã hóa như không có nó, miễn là bạn sao lưu khóa chính và siêu dữ liệu đúng cách.

Ngoài siêu dữ liệu, tham nhũng sẽ chỉ ảnh hưởng đến khối bit bị hỏng, trong hầu hết các trường hợp chỉ là 16 byte của nó.

Đối với hầu hết các tình huống hỏng dữ liệu, với khóa và công cụ (như mật khẩu và Veracrypt / LUKS), bạn có quyền truy cập giống như một đĩa không được mã hóa, giống như bạn thường sử dụng đĩa mã hóa hàng ngày. Mã hóa sẽ chỉ thêm một bước bổ sung (mở phân vùng được mã hóa) hơn bình thường. Vì vậy, trong trường hợp này, nó hoạt động giống như dữ liệu không được mã hóa.

Với Veracrypt hoặc Luks, bạn phải lưu trữ khóa chính trong đĩa, được mã hóa bằng mật khẩu của bạn. Làm hỏng (các) khu vực này sẽ làm mất dữ liệu vĩnh viễn. Điều này có thể được giải quyết dễ dàng với sao lưu khóa chính (kích thước vài kilobyte), một điều dễ thực hiện với cả hai phần mềm và rất khuyến khích cho mọi người.

Chi tiết về dữ liệu không meta

Cả Veracrypt và Luks đều sử dụng XTS ngày hôm nay. Trong chế độ này, nó đã tính một khóa cho mọi khối. Để đơn giản hóa, để mã hóa khối, ibạn sử dụng khóa được tạo bằng Khóa chính và số khối. Vì vậy, mã hóa của một khối độc lập với khối khác. Nếu bạn làm hỏng một số thông tin, nó sẽ bị hạn chế đối với khối đó.

Trong XTS, nó phá vỡ khối trong các khối con (thường là 16 byte) và tạo một khóa và mã hóa khối phụ đó với nó. Điều đó có nghĩa là nếu chúng ta thay đổi một chút về nó, chỉ 16 byte này sẽ bị ảnh hưởng.

Như thử nghiệm, thay đổi một bit đơn trong âm lượng Luks, nó thay đổi 16 byte của tệp gốc thành vô nghĩa, nhưng 496 khác vẫn không thay đổi. Trong tệp 7zip, nó sử dụng phương thức truyền phát, tất cả các byte đều bị xiềng xích, do đó, một thay đổi byte sẽ ảnh hưởng đến tất cả các byte còn lại - đây không phải là trường hợp ở đây.

Một số người coi đây là một vấn đề, như bạn có thể biết với độ chính xác 16 byte khi và nơi bạn thay đổi một văn bản đơn giản, chỉ so sánh dữ liệu được mã hóa.

Thông tin thú vị hơn về điều này có thể được tìm thấy trên các liên kết sau:

/crypto/6185/what-is-a-tweakable-block-codes

/security/39306/how-secure-is-ubuntus-default-full-disk-encoding

https://en.wikipedia.org/wiki/Disk_encrypt_theory

Chi tiết về Master Key

LUKS

LUKS có một vài lĩnh vực ở đầu phân vùng (hoặc đĩa) với siêu dữ liệu, lưu trữ các phương thức mã hóa, các tham số khác và 8 vị trí chính. Để mã hóa và giải mã đĩa, nó sử dụng Khóa chính , một số ngẫu nhiên lớn được tạo khi tạo một thùng chứa LUKS. Để lưu trữ, nó mã hóa Khóa chính bằng mật khẩu của bạn, thông qua việc lặp lại hàm băm mật mã nhiều lần so với mật khẩu và tạo một khóa cụ thể cho khe đó. Bạn có thể có 8 mật khẩu khác nhau cho cùng một đĩa, mỗi mật khẩu mã hóa khóa chính bằng một mật khẩu khác nhau trong một khe. Khi bạn thay đổi mật khẩu, đơn giản như mã hóa Khóa chính và không thay đổi tất cả phân vùng.

Vì vậy, khi vị trí và siêu dữ liệu này bị hỏng, bạn không thể khôi phục khóa chính thực sự được sử dụng để giải mã, mất tất cả dữ liệu trên đĩa. Đây là một cách dễ dàng để nhanh chóng phá hủy tất cả dữ liệu của bạn. Nhưng nếu bạn có bản sao lưu của Volume Header, việc khôi phục nó khá dễ dàng.

Dưới đây là bản sao Câu hỏi thường gặp về LUKS về sao lưu được trích xuất từ https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#6-backup-and-data-recovery

6.2 Làm cách nào để sao lưu tiêu đề LUKS?

Mặc dù bạn chỉ có thể sao chép số byte thích hợp từ đầu phân vùng LUKS, cách tốt nhất là sử dụng tùy chọn lệnh "luksHeaderBackup" của cryptsetup. Điều này cũng bảo vệ chống lại lỗi khi các tham số không chuẩn đã được sử dụng trong việc tạo phân vùng LUKS. Thí dụ:

cryptsetup luksHeaderBackup --header-backup-file <file> <device>

Để khôi phục, sử dụng lệnh nghịch đảo, tức là

cryptsetup luksHeaderRestore --header-backup-file <file> <device>

Nếu bạn không chắc chắn về tiêu đề sẽ được khôi phục, trước tiên hãy tạo bản sao lưu của tiêu đề hiện tại! Bạn cũng có thể kiểm tra tệp tiêu đề mà không cần khôi phục tệp bằng cách sử dụng tùy chọn --header cho tiêu đề tách rời như thế này:

cryptsetup --header <file> luksOpen <device> </dev/mapper/ -name>

Nếu điều đó mở khóa rất nhiều chìa khóa của bạn, bạn là tốt. Đừng quên đóng lại thiết bị.

Trong một số trường hợp (tiêu đề bị hư hỏng), điều này không thành công. Sau đó sử dụng các bước sau:

Đầu tiên xác định kích thước khóa chính:

cryptsetup luksDump <device>

đưa ra một dòng của mẫu

MK bits:        <bits>

với các bit bằng 256 cho các mặc định cũ và 512 cho các mặc định mới. 256 bit bằng tổng kích thước tiêu đề là 1'052'672 Byte và 512 bit một trong 2MiB. (Xem thêm Mục 6.12) Nếu luksDump không thành công, giả sử 2MiB, nhưng lưu ý rằng nếu bạn khôi phục điều đó, bạn cũng có thể khôi phục 1M đầu tiên của hệ thống tệp. Không thay đổi hệ thống tập tin nếu bạn không thể xác định kích thước tiêu đề! Cùng với đó, khôi phục bản sao lưu tiêu đề quá lớn vẫn an toàn.

Thứ hai, đổ tiêu đề vào tập tin. Có nhiều cách để làm điều đó, tôi thích cách sau:

head -c 1052672 <device>  >  header_backup.dmp

hoặc là

head -c 2M <device>  >  header_backup.dmp

cho tiêu đề 2MiB. Xác nhận kích thước của tệp kết xuất để đảm bảo. Để khôi phục bản sao lưu như vậy, bạn có thể thử luksHeaderRestore hoặc làm cơ bản hơn

cat header_backup.dmp  >  <device>

Mật mã

Veracrypt tương tự LUKS. Tôi không quen với nó như với Truecrypt, nhưng ý tưởng chung vẫn đúng.

Veracrypt chỉ có một khe khóa, vì vậy bạn không thể có nhiều mật khẩu cùng một lúc. Nhưng bạn có thể có một khối lượng ẩn: nó lưu siêu dữ liệu vào cuối phân vùng (hoặc đĩa hoặc tệp). Âm lượng ẩn có Khóa chính khác và sẽ sử dụng phần cuối của phân vùng làm không gian chồng lấp. Ý tưởng mà bạn nên sao lưu là như nhau. Điều này có thể được thực hiện với Tools -> Backup Volume HeaderTools -> Restore Volume Header. Với mã hóa hệ thống, nó được sử dụng để tạo một đĩa có thể khởi động với sao lưu khóa phục hồi trình tải Truecrypt và các khóa nếu có bất kỳ hư hỏng nào xảy ra. Nó được thực hiện trước khi nó mã hóa bất cứ thứ gì và theo như tôi biết thì Veracrypt tiếp tục làm theo cách tương tự.

Để biết thêm chi tiết, hãy xem liên kết này https://veracrypt.codeplex.com/wikipage?title=Program%20Mothy

Cân nhắc bảo mật về khóa sao lưu

Ví dụ: nếu bạn có mật khẩu bị rò rỉ và thay đổi mật khẩu âm lượng thành mật khẩu mới, mạnh mẽ và an toàn, ai đó có quyền truy cập vào bản sao lưu vẫn có thể giải mã các tệp bằng mật khẩu cũ. Bản sao lưu về cơ bản là Master Key được mã hóa bằng mật khẩu (cũ). Vì vậy, khi thay đổi mật khẩu, cũng cần tạo một bản sao lưu mới và phá hủy những cái cũ hơn. Và phá hủy dữ liệu vĩnh viễn có thể rất lừa.

Đối với mọi bản sao lưu bạn có với mật khẩu đó, là một cách có thể để giải mã dữ liệu bằng mật khẩu đó. Ví dụ, điều này có thể được sử dụng trong Veracrypt, sử dụng "Mật khẩu chung" (như trong một công ty), sao lưu và thay đổi mật khẩu khác. Vì vậy, phòng CNTT. có thể khôi phục quyền truy cập vào ổ đĩa đó ngay cả khi ai đó bị mất mật khẩu (nghĩ là Mật khẩu chính, nhưng đừng nhầm lẫn với Khóa chính trước đó).

Suy nghĩ cuối cùng (TL; DR)

Xác suất làm hỏng khu vực cụ thể bằng khóa chính ít có khả năng hơn là bạn bị hỏng đĩa hoàn toàn. Vì vậy, nếu dữ liệu này là quan trọng, bạn nên có một bản sao lưu của nó thay vì chỉ các tiêu đề âm lượng (Master Key).

Và tham nhũng dữ liệu lan truyền rất ít (16 byte), dẫn đến chấp nhận được cho hầu hết các sử dụng.

Vì vậy, một khối xấu ở giữa phân vùng hoặc đĩa sẽ chỉ ảnh hưởng đến khối đó. Và một vài lỗi trong một khu vực được giới hạn trong khu vực đó và thậm chí sẽ không ảnh hưởng đến toàn bộ khu vực 512 byte.

Cập nhật (23/01/2017): thêm thông tin dựa trên các nhận xét của OP.


1
Wow, đó là một câu trả lời rất rộng rãi và nhiều thông tin, cảm ơn rất nhiều! Tuy nhiên, câu hỏi của tôi là nhiều hơn về khả năng phục hồi của phân vùng được mã hóa và dữ liệu của nó, thay vì khóa chính và siêu dữ liệu. Vấn đề tương tự như một kho lưu trữ 7zip rắn: nếu một bit bị hỏng ở giữa, thì bạn sẽ mất toàn bộ kho lưu trữ. Phân vùng được mã hóa sẽ hành động như nhau? (không bao gồm khóa chính và siêu dữ liệu)
X.LINK

4

Tôi đã tổng hợp bên dưới một số thông tin về khả năng phục hồi của các thùng chứa VeraCrypt / TrueCrypt.

Từ tham nhũng dữ liệu Veracrypt :

TC / VC lưu trữ tiêu đề âm lượng ở hai vị trí: ở đầu và cuối âm lượng. Cái ở đầu là cái chính và cái ở cuối là để sao lưu. Cơ chế này thường đủ để cho phép truy cập khi một phần của ổ đĩa bị hỏng hoặc bị hỏng vì thiệt hại thường là cục bộ. nếu thiệt hại xảy ra cho cả đầu và cuối ổ thì ổ gần như chắc chắn đã chết.

Xin lưu ý rằng trong trường hợp ổ đĩa bị hỏng hoặc bị hỏng, bạn sẽ bị mất dữ liệu giống như khi bạn không sử dụng mã hóa. Điều này có nghĩa là ngay cả khi bạn có thể gắn âm lượng, dữ liệu đọc có thể bị hỏng. Vì vậy, hãy luôn nghĩ về sao lưu dữ liệu vì mã hóa không bảo vệ khỏi hỏng dữ liệu.

Từ Câu hỏi thường gặp về VeraCrypt :

Điều gì sẽ xảy ra khi một phần của khối lượng VeraCrypt bị hỏng?

Trong dữ liệu được mã hóa, một bit bị hỏng thường làm hỏng toàn bộ khối bản mã mà nó xảy ra. Kích thước khối bản mã được VeraCrypt sử dụng là 16 byte (tức là 128 bit). Chế độ hoạt động được sử dụng bởi VeraCrypt đảm bảo rằng nếu hỏng dữ liệu xảy ra trong một khối, các khối còn lại sẽ không bị ảnh hưởng.

Tôi phải làm gì khi hệ thống tệp được mã hóa trên ổ VeraCrypt của tôi bị hỏng?

Hệ thống tệp trong một khối VeraCrypt có thể bị hỏng theo cùng một cách như mọi hệ thống tệp không được mã hóa thông thường. Khi điều đó xảy ra, bạn có thể sử dụng các công cụ sửa chữa hệ thống tập tin được cung cấp cùng với hệ điều hành của bạn để sửa nó. Trong Windows, nó là công cụ 'chkdsk'. VeraCrypt cung cấp một cách dễ dàng để sử dụng công cụ này trên ổ đĩa VeraCrypt: Nhấp chuột phải vào ổ đĩa được gắn trong cửa sổ VeraCrypt chính (trong danh sách ổ đĩa) và từ menu ngữ cảnh, chọn 'Repair Filesystem'.

Tham nhũng dữ liệu nhỏ sau đó chỉ có tác dụng cục bộ và sẽ không phá hủy toàn bộ container. Tuy nhiên, tôi khuyên bạn không nên mã hóa toàn bộ ổ đĩa / phân vùng và đặc biệt là ổ đĩa hệ thống, vì việc khôi phục có thể phức tạp hơn. Hãy sao lưu tốt, đặc biệt là cho tiêu đề âm lượng. Và hãy nhớ rằng, giống như đối với một đĩa hoặc thư mục thực, hỏng trong tiêu đề đĩa / tệp có thể làm cho việc phục hồi dữ liệu trở nên khó khăn và có thể yêu cầu các tiện ích nâng cao.

Tôi tin rằng LUKS không có tiêu đề thứ hai trên đĩa, vì vậy bạn phải cẩn thận hơn nữa trong việc giữ bản sao lưu.


Tôi đã đọc những thứ đó nhưng điều này vẫn còn một chút khó hiểu. Ngoài việc phục hồi được thực hiện thông qua các tiêu đề và hệ thống tập tin của container trong các container, điều đó có nghĩa là một khu vực xấu ngay giữa chính container sẽ không khiến nó hoàn toàn chết và không thể gắn kết? Theo tôi có thể hiểu đúng, một khối bản mã có hoạt động chính xác như bên trong một kho lưu trữ 7-zip không rắn / ext3 không được mã hóa vẫn có thể gắn kết có các thành phần xấu vật lý không?
X.LINK

Tôi không thể nói về khối lượng được mã hóa, nhưng thay đổi một bit trong một mạng lưới được mã hóa sẽ chỉ phun ra rác cho toàn bộ khối. Kích thước khối có thể là 128 byte hoặc 256 byte hoặc 4kb. Nó sẽ không ngăn phần còn lại của cyphertext khỏi bị giải mã. Không có cách nào để thuật toán mã hóa biết rác là xấu. Không có tổng kiểm tra hoặc bất cứ điều gì (đối với AES-CBC). Nếu khối đó nằm trong một tệp văn bản, nó sẽ trông giống như rác trong Notepad. Nếu nó là một phần của cấu trúc thư mục, thì hệ thống tệp sẽ bị cắt xén và yêu cầu chkdsk.
Chloe

@ X.LINK: Một bit xấu sẽ làm hỏng toàn bộ "sector" 16 byte của nó. Tùy thuộc vào vị trí của khu vực đó, kết quả có thể không có gì nếu nó rơi vào khu vực không sử dụng hoặc rác ở vị trí đó trong tệp hoặc trong trường hợp xấu nhất, cấu trúc thư mục xấu yêu cầu sử dụng các tiện ích khôi phục. Điều này rất giống với một đĩa vật lý nơi bạn có các khu vực không được sử dụng, dữ liệu tệp và bảng đĩa và bản sao lưu của bạn phải tuân theo các hướng dẫn tương tự.
harrymc

0

Nhờ tất cả các câu trả lời mà mọi người cung cấp, câu trả lời dứt khoát đã hoàn thành 100%.

Tôi không có nhiều thời gian trong những ngày này, vì vậy tôi sẽ chỉnh sửa câu trả lời "của riêng mình" sau. Vì tất cả các câu trả lời mà mọi người đưa ra ở đây là hoàn toàn hữu ích, đây sẽ chỉ là một bản tóm tắt những gì họ nói, cộng với những phát hiện của tôi.

Dù sao, đây là một trong những phát hiện của tôi sẽ giải quyết được rất nhiều sự nhầm lẫn mà tôi đã gặp, và nó chủ yếu liên quan đến ... khối này có nghĩa là gì, vì đó là một thuật ngữ được sử dụng quá mức và nhầm lẫn:

https://sockpuppet.org/blog/2014/04/30/you-dont-want-xts/

Ngoài ra, bạn sẽ tìm thấy một cách "tiêu chuẩn" để nói về những điều ở đây và tránh nhầm lẫn 'chặn':

/superuser/1176839/what-are-every-possible-names-of-hard-drive-structure-parts

Nói một cách ngắn gọn, bạn có thể thay đổi một khối được mã hóa có chứa từ "400" thành "800". Điều này có nghĩa là lớp cấp khối được mã hóa hoàn toàn không vững chắc, thay vì tin rằng "điều này sẽ hoạt động như một hệ thống tệp bình thường" (tức là Câu hỏi thường gặp về Veracrypt).

Ngoài ra, tôi đã vấp phải liên kết đó hai tháng trước:

/unix/321488/full-image-of-iternal-hdd-drive-dd-dd-resTHER-with-truecrypt-bad-sector/

Vì VeraCrypt là một nhánh của TrueCrypt, nên chắc chắn nó sẽ hoạt động tương tự.

Tái bút

Bất kỳ câu trả lời bổ sung nào vẫn được hoan nghênh và sẽ được thêm vào câu trả lời "của riêng tôi".

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.