Một giải pháp tốt để mã hóa một số tập tin trong unix là gì? [đóng cửa]


44

Tôi đang tìm kiếm một tiện ích để mã hóa các thư mục nhất định trong Linux. Tôi không tìm kiếm bất kỳ dịch vụ mã hóa đĩa đầy đủ nào, mà chỉ đơn giản là mã hóa một vài thư mục cho mục đích lưu trữ tệp trong đám mây. Sau khi lấy chúng, tôi phải giải mã chúng trước khi chúng có thể được truy cập. Tìm cách để làm điều này cho một vài thư mục (kích thước vài trăm GB). Có ý kiến ​​gì không? Tốt nhất là dựa trên CLI.

Câu trả lời:


51

Tôi chỉ sử dụng GnuPG cho nhiệm vụ này. Các thư mục được đóng gói đầu tiên vào kho lưu trữ TAR-GZ:

tar czf files.tar.gz /path/to/my/files

Nếu chưa được thực hiện, trước tiên bạn cần tạo cặp khóa riêng / chung GPG:

gpg --gen-key

Làm theo chỉ dẫn. Mặc định nên có hiệu quả cho thử nghiệm đầu tiên. Một cái gì đó như thế này sẽ xuất hiện:

gpg (GnuPG) 2.0,18; Bản quyền (C) 2011 Phần mềm miễn phí Foundation, Inc.
Đây là phần mềm miễn phí: bạn có thể tự do thay đổi và phân phối lại.
KHÔNG CÓ BẢO HÀNH, trong phạm vi được pháp luật cho phép.

Vui lòng chọn loại khóa bạn muốn:
   (1) RSA và RSA (mặc định)
   (2) DSA và Elgamal
   (3) DSA (chỉ ký tên)
   (4) RSA (chỉ ký)
Lựa chọn của bạn? 1
Các khóa RSA có thể dài từ 1024 đến 4096 bit.
Những gì keyize bạn muốn? (2048) 4096
Keyize được yêu cầu là 4096 bit
Vui lòng xác định thời gian khóa sẽ có hiệu lực.
         0 = khóa không hết hạn
        = khóa hết hạn sau n ngày
      w = khóa hết hạn sau n tuần
      m = khóa hết hạn sau n tháng
      y = khóa hết hạn sau n năm
Khóa có giá trị cho? (0)
Khóa không hết hạn
Điều này có đúng không? (y / N) y

GnuPG cần xây dựng ID người dùng để xác định khóa của bạn.

Tên thật: Khóa mã hóa tệp
Địa chỉ email: admin@company.org
Nhận xét: Khóa mã hóa tệp
Bạn đã chọn ID người dùng này:
    "Khóa mã hóa tệp (Khóa mã hóa tệp)"

Thay đổi (N) ame, (C) omment, (E) mail hoặc (O) kay / (Q) uit? o

Bạn sẽ được yêu cầu nhập mật khẩu cho khóa. Rất khuyến khích sử dụng mạnh mẽ. Dù sao nó cũng không cần mã hóa tập tin, vì vậy đừng lo lắng về việc sử dụng hàng loạt sau này.

Nếu mọi thứ đã xong, một cái gì đó như thế này sẽ xuất hiện trên màn hình của bạn:

Chúng ta cần tạo ra rất nhiều byte ngẫu nhiên. Đó là một ý tưởng tốt để thực hiện
Một số hành động khác (gõ trên bàn phím, di chuyển chuột, sử dụng
đĩa) trong quá trình tạo nguyên tố; điều này cho số ngẫu nhiên
máy phát điện một cơ hội tốt hơn để đạt được đủ entropy.
Chúng ta cần tạo ra rất nhiều byte ngẫu nhiên. Đó là một ý tưởng tốt để thực hiện
Một số hành động khác (gõ trên bàn phím, di chuyển chuột, sử dụng
đĩa) trong quá trình tạo nguyên tố; điều này cho số ngẫu nhiên
máy phát điện một cơ hội tốt hơn để đạt được đủ entropy.
gpg: khóa FE53C811 được đánh dấu là đáng tin cậy cuối cùng
khóa công khai và bí mật được tạo và ký.

gpg: kiểm tra Trustdb
gpg: 3 biên cần thiết, 1 hoàn thành cần thiết, mô hình ủy thác PGP
gpg: độ sâu: 0 hợp lệ: 1 đã ký: 0 tin cậy: 0-, 0q, 0n, 0m, 0f, 1u
quán rượu ***** / ******** 2013-03-19
      Dấu vân tay = **** **** **** **** **** **** **** **** **** ****
uid Khóa mã hóa tệp (Khóa mã hóa tệp) 
phụ ***** / ******** 2013-03-19

Bây giờ bạn có thể muốn xuất tệp khóa công khai để nhập nó trên các máy khác:

gpg --armor --output file-enc-pubkey.txt --export 'File Encryption Key'

Các File Encryption Keylà tên tôi bước vào trong quá trình tạo khóa.

Bây giờ tôi đang sử dụng GnuPG trên kho lưu trữ mới được tạo:

gpg --encrypt --recipient 'File Encryption Key' files.tar.gz

Bây giờ bạn có một files.tar.gz.gpgtập tin được mã hóa.

Bạn có thể giải mã nó bằng lệnh sau (bạn sẽ được hỏi cụm mật khẩu của mình):

gpg --output files.tar.gz --decrypt files.tar.gz.gpg

Đó là toàn bộ ma thuật.

Hãy chắc chắn rằng bạn sao lưu chìa khóa của bạn! Và đừng bao giờ quên mật khẩu của bạn! Nếu không được sao lưu hoặc quên, bạn có hàng gigabyte dữ liệu rác!

Sao lưu khóa riêng của bạn bằng lệnh này:

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'File Encryption Key'

Ưu điểm

  • Không ai trong số các nhà mã hóa cần biết thông tin nhạy cảm về mã hóa - mã hóa được thực hiện bằng khóa chung. (Bạn có thể tạo cặp khóa trên máy trạm cục bộ của mình và chỉ chuyển khóa chung sang máy chủ của bạn)
  • Không có mật khẩu sẽ xuất hiện trong tập tin hoặc công việc
  • Bạn có thể có nhiều mã hóa trên bất kỳ hệ thống nào bạn muốn
  • Nếu bạn giữ bí mật khóa riêng tư và mật khẩu mật khẩu, mọi thứ đều ổn và rất khó để thỏa hiệp
  • Bạn có thể giải mã bằng khóa riêng trên các nền tảng Unix, Windows và Linux bằng cách sử dụng triển khai PGP / GPG cụ thể
  • Không cần đặc quyền về hệ thống mã hóa và giải mã, không cần gắn kết, không chứa, không có hệ thống tệp đặc biệt

1
Lưu ý rằng tùy thuộc vào dữ liệu, có thể chạy nhanh hơn tarmà không cần công ztắc để tránh nén dữ liệu.
l0b0

28

Về phần tôi, tôi chủ yếu sử dụng hai phương pháp:

Phương pháp đầu tiên: tar và openssl

Tar thư mục

tar cvf backup.tar /path/to/folder

Bạn có thể xóa công tắc [v] khỏi lệnh tar để tắt chế độ dài dòng.

Mã hóa

openssl aes-128-cbc -salt -in backup.tar -out backup.tar.aes -k yourpassword

Bạn có thể thay đổi aes-128-cbc thành bất kỳ phương thức mã hóa nào khác hỗ trợ openssl (openssl --help).

Giải mã

openssl aes-128-cbc -d -salt -in backup.tar.aes -out backup.restored.tar

Nó sẽ hỏi mật khẩu.

Phương pháp thứ hai: mã hóa zip

zip -r -0 -e backup.zip /path/to/folder

Nó sẽ hỏi mật khẩu.

  • -r có nghĩa là đệ quy (toàn bộ cây thư mục)
  • -0 có nghĩa là chỉ lưu trữ (không nén, nhanh hơn)
  • -e có nghĩa là lưu trữ mã hóa

Một lợi thế của điều này: nó sẽ hoạt động tốt hơn với hệ thống dựa trên windows.


3
Cung cấp mật khẩu trên dòng lệnh không phải là một ý tưởng tốt. Mật khẩu vẫn còn trong lịch sử shell.
sở thích

1
Cần lưu ý rằng zipmã hóa được đồn đại là có thể bẻ khóa.
Acumenus

22

Nếu bạn không muốn mã hóa các tệp của mình bằng cặp khóa chung / riêng và chỉ sử dụng mã hóa đối xứng với cụm từ thông qua, hãy sử dụng lệnh sau:

gpg --symmetric --cipher-algo aes256 files.tar.gz

Bạn sẽ được yêu cầu cho cụm từ vượt qua của bạn. Sau đó, một tập tin mã hóa có tên files.tar.gz.gpgđược tạo ra.

Để giải mã sử dụng lệnh

gpg --decrypt files.tar.gz.gpg > files.tar.gz


2

Với mục đích như vậy, tôi sẽ đề xuất mã hóa FUSE (như encfs ) - đối với dữ liệu nhỏ hơn tôi sẽ sử dụng gpg.

Đó là fs được triển khai trong không gian người dùng nên bạn không cần bất kỳ đặc quyền đặc biệt nào.



1

Một cách rất đơn giản để mã hóa một tệp là:

gpg -c filename.ext

Bạn sẽ được yêu cầu một cụm mật khẩu hai lần và gpg sẽ tạo filename.ext.gpg. Tải tệp được mã hóa lên dịch vụ đám mây của bạn. Để khôi phục tập tin sử dụng:

gpg filename.ext.gpg

Mà sẽ tái tạo filename.ext. Lưu ý rằng các tệp không được mã hóa không an toàn và dữ liệu có liên quan sẽ vẫn còn trên phương tiện lưu trữ của bạn ngay cả sau khi xóa. Chỉ có gpg container là an toàn. EncFS là một thay thế thực tế hơn cho mã hóa dựa trên đám mây ở cấp độ tệp.

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.