Làm cách nào để sửa lỗi CẢNH BÁO: tin nhắn không được bảo vệ toàn vẹn khi sử dụng mã hóa đối xứng GPG?


45

Tôi đã mã hóa một tệp bằng mã hóa đối xứng như thế này:

gpg --symmetric myfile

mà kết quả trong một tập tin myfile.gpg.

Ổn thỏa. Bây giờ hãy giải mã lại tệp:

gpg -o myfile --decrypt myfile.gpg

Tôi đang được hỏi về cụm mật khẩu tôi đã đặt, và sau đó tôi thấy

gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected

Tôi không chắc chắn về dòng đầu tiên và cuối cùng ở đó.

  • Mật mã CAST5 là gì và nó có an toàn không? Tôi biết 3DES và AES và tôi biết chúng an toàn.
  • Tại sao nó không được bảo vệ cho toàn vẹn?
  • Và hơn nữa, làm thế nào để tôi sửa lỗi này?

Btw bạn chỉ có thể gpg -c myfilemã hóa và gpg myfile.gpggiải mã, đầu ra sẽ được giải mã myfiletheo mặc định.
cprn

1
@CyprianGuerra gpg myfile.gpgsẽ dẫn đến kết quả được giải mã được gửi đến thiết bị xuất chuẩn trên hệ thống của tôi ...
gertvdijk

Hấp dẫn. Tôi có nó mặc định ...
cprn

Tôi đã tải xuống GUI từ đây và giải mã tập tin bằng cách sử dụng nó. Nó đã làm việc! pgptool.github.io
Iftikhar Ahmad Dar

Câu trả lời:


69

Lý lịch

CAST-5 là một thuật toán mã hóa cũ hơn được sử dụng bởi GnuPG vì AES chưa tồn tại trở lại vào thời điểm GnuPG được tạo nguồn ban đầu . Nó không được sử dụng rộng rãi (ngoài GnuPG vì lý do tương thích).

Các WARNING: message was not integrity protectedlà vì tính năng này không được bật theo mặc định tại thời điểm nhận mã hóa. Nếu điều này được bật, GnuPG có thể cho biết nếu tệp đã bị thay đổi trong quá trình.

Cập nhật: các phiên bản hiện đại của GnuPG được cung cấp cùng với Ubuntu / Debian hiện có MDC được bật theo mặc định và bạn sẽ không bao giờ thấy thông báo này nữa cho mọi thứ được ký với các phiên bản mới hơn này.

Các giải pháp

Để sử dụng AES-256 mạnh hơn, bạn phải chỉ định nó trên dòng lệnh hoặc trong tệp cấu hình của mình.

  • Dòng lệnh: thêm --cipher-algo AES256tùy chọn để dòng đầy đủ để mã hóa trở thành

    gpg -o myfile.gpg --cipher-algo AES256 --symmetric myfile
    
  • Tệp cấu hình (được khuyến nghị): thêm dòng sau vào ~/.gnupg/gpg.conftệp cấu hình của bạn .

    cipher-algo AES256
    

    Tôi khuyên bạn nên sử dụng phương pháp này vì nó sẽ được sử dụng cho tất cả các hoạt động GPG trong tương lai trên tài khoản người dùng này.

Không có gì thay đổi để người dùng giải mã tập tin - GnuPG sẽ tự động phát hiện điều này.

Lưu ý rằng sử dụng mật mã AES-256, tin nhắn được tự động bảo vệ tính toàn vẹn. Để kích hoạt bảo vệ tính toàn vẹn theo cách thủ công trên các mật mã khác không được bật (như CAST-5), hãy thêm --force-mdctùy chọn khi mã hóa.

Thậm chí tốt hơn: ký!

Một cách tiếp cận thậm chí tốt hơn sẽ là ký các tập tin của bạn với cặp khóa của bạn (nếu bạn có nó). Chỉ cần thêm --signtùy chọn vào lệnh mã hóa, như thế này:

gpg -o myfile.gpg --cipher-algo AES256 --sign --symmetric myfile

Điều này sẽ không chỉ xác nhận tính toàn vẹn của tệp mà còn giúp người nhận tệp có thể xác minh nguồn gốc. Mọi thay đổi trên tệp sẽ bị kiểm tra chữ ký không thành công.


Tôi không cần một chứng chỉ để ký?
song phương fazlani

@bilalfazlani để ký bạn sẽ cần một cặp khóa GnuPG, vâng. Không cần phải công khai nếu bạn không muốn. Chỉ cần chia sẻ khóa chung với các đồng nghiệp mà bạn đang chia sẻ các tệp được mã hóa và họ sẽ xác minh dấu vân tay của khóa với bạn.
gertvdijk

Cảm ơn bạn đã trả lời chi tiết. Bạn có thể giải thích thêm về cách sử dụng khóa không?
ben-Nabiy Derush

"Tin nhắn không được bảo vệ toàn vẹn" xảy ra ở phía người nhận và bạn cho biết cách khắc phục điều này ở phía người gửi. Câu hỏi đặt ra là làm thế nào để bỏ qua những vấn đề ở phía bên nhận để có thể giải mã các tin nhắn cũ (trong Enigmail)
ensonic

@ ben-NabiyDerush Hai bài viết này có thể làm sáng tỏ câu hỏi của bạn về cách (và tại sao) để sử dụng khóa công khai và riêng tư. Mật mã khóa công khai . Web of Trust
jpaugh
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.