Có thể ký tài liệu lưu trữ?


15

Tôi đã chơi với openssl để tạo khóa pub / prv và tạo chữ ký của tệp và xác thực nó. Tôi đã chơi với Cryptophane (windows gnupg frontend) và nghe về keyervers + chơi với ký văn bản.

Tuy nhiên tôi chưa bao giờ ký một tập tin lưu trữ. Nếu tôi muốn xuất bản một kho lưu trữ (7z, rar hoặc zip, thì không vấn đề gì) và tôi muốn người dùng hoặc phần mềm của tôi có thể kiểm tra xem kho lưu trữ đó đã được ký chưa, tôi sẽ làm như thế nào? Khóa công khai rõ ràng sẽ cần phải có sẵn công khai. Nhưng thêm chữ ký vào kho lưu trữ là điều làm phiền tôi. Có phần mềm + kho lưu trữ nào cho phép tôi ký và xác minh tệp lưu trữ nén không?


Tại sao bạn muốn ký nó? Bạn chỉ có thể tạo băm SHA1 và cung cấp băm cho khách hàng / người dùng của bạn kiểm tra. Điều này là đủ để xác nhận rằng tập tin đã không bị giả mạo. Mặc dù người dùng của bạn cần phải có khả năng xác minh hàm băm nhưng không khó hơn việc xác minh chữ ký.
BJ292

@ BJ292: Và làm thế nào để bạn xác minh rằng hàm băm không bị giả mạo?
dùng1686

@grawity - Không chắc chắn tôi làm theo - điểm nào của việc giả mạo băm? Tôi gửi cho bạn một tệp và hàm băm - bạn tạo lại hàm băm từ tệp và xác nhận nó khớp - điều này xác nhận tệp không bị thay đổi. Trong hầu hết các trường hợp, đây là tất cả mọi người muốn - xác nhận tệp nhận được từ A đến B không thay đổi. Chắc chắn âm thanh như thế này là những gì OP là sau.
BJ292

3
@ BJ292: Bạn đang cho rằng OP chỉ quan tâm đến việc hỏng dữ liệu do tai nạn. Điều này chưa được nêu (hoặc bị từ chối) trong câu hỏi, nhưng OP đang hỏi về chữ ký điện tử, vì vậy tôi sẽ cho rằng cần phải bảo vệ chống lại sửa đổi dữ liệu có chủ ý (có thể độc hại).
dùng1686

1
@ BJ292: Các tập tin sẽ được nhân đôi trên các trang web ppls khác. Tôi muốn ký tên để không ai trong số các gương có thể giả mạo

Câu trả lời:


10

Phương pháp phổ biến là tạo chữ ký tách rời trong một .sigtệp (thường là chữ ký PGP bằng cách sử dụng gpg -b- X.509 rất không phổ biến) và cung cấp cả hai tệp trong cùng một vị trí. Ví dụ:

ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2
ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2.sig

Điều này có thể được sử dụng với bất kỳ loại tệp nào, nhưng người dùng sẽ phải xác minh chữ ký bằng tay gpg --verify.


Thật không may, trong số những người hiện đang sử dụng, không có định dạng lưu trữ (mà tôi biết) có hỗ trợ cho chữ ký tích hợp sử dụng PGP hoặc X.509. (Điều này không bao gồm CAB, được Windows sử dụng trong nội bộ nhưng thực tế không ở đâu khác và khá phức tạp để ký). WinRAR 4 đã có thể thêm bản ghi "xác minh tính xác thực" bằng định dạng độc quyền, nhưng nó sử dụng giấy phép WinRAR của bạn làm khóa ký, đã bị bẻ khóa nhiều lần. (Cập nhật: Tính năng này đã bị xóa khỏi WinRAR 5 do không an toàn.)


Trên Windows (và sắp có Mac OS X), có thể tạo một "kho lưu trữ tự giải nén" - một tệp thực thi được ký bằng kỹ thuật số trích xuất một kho lưu trữ từ bên trong - ví dụ như đây là cách trình cài đặt phần mềm trên Windows hoạt động. Tuy nhiên, SFX bị giới hạn trong một hệ điều hành duy nhất, vì vậy chúng chỉ phù hợp để phân phối chương trình , không phải tài liệu hoặc hình ảnh. (Các chương trình Java có thể được ký và là đa nền tảng, nhưng một số hệ thống vẫn có thời gian chạy Java.)


2

Jar-archives, được xây dựng với Javas jar-tool, là kho lưu trữ zip hiệu quả, và có một công cụ, jarsigner, để ký chúng.

Dưới đây là một số liên kết hữu ích:

Có vẻ hơi phức tạp trước tiên ("Cái gì, tôi cần keeytool để làm gì? Còn gì nữa không?") Nhưng thật dễ dàng để làm theo các bước để giải quyết nó một cách đơn giản. Nó hoạt động. Sau đó, bạn có thể nhúng sâu hơn vào vấn đề.


Đây là sự thật (tài liệu lưu trữ XPI cũng là các ZIP được ký theo kiểu rất giống nhau), nhưng AFAIK, chỉ có Java Runtime thực sự xác minh chữ ký JAR và cần phải xác minh thủ công khiến nó thậm chí còn kém thực tế hơn GnuPG.
dùng1686

Bạn có ý nghĩa manual verificationgì với ? Sự thay thế là gì? Một autopopup, mà tự xác minh cứ sau 10 phút? Hệ điều hành có tự động xác minh kho lưu trữ khi khởi động không? Khi một kho lưu trữ được nhận - có thể từ CD, tệp đính kèm email, tải xuống, ...? Nó có nên là một plugin trong trình quét virus của bạn không?
người dùng không xác định

Tôi có nghĩa là xác minh được thực hiện bởi công cụ trích xuất lưu trữ trước / trong khi trích xuất hoặc bởi hệ điều hành / thời gian chạy trong khi thực hiện chương trình. Ví dụ, .debchữ ký gói được xác minh dpkgtrước khi gói được cài đặt mà không cần người dùng thực hiện bất kỳ hành động bổ sung nào.
dùng1686

@grawity: Các applet đã ký, được nén trong một cái lọ, ĐƯỢC xác minh trước khi thực hiện. Để tạo một tập lệnh shell tối thiểu, kết hợp xác minh (jarsigner) với trích xuất (jar) sẽ không đáng kể.
người dùng không xác định

liên kết thứ ba "wiki khi ký tập tin jar" bị hỏng
Jason S

0

Chắc chắn, mỗi khi bạn cài đặt phần mềm đã ký, bạn đang xác minh một kho lưu trữ đã ký. Để tạo một cái, bạn nên sử dụng cùng một công cụ đóng gói mà các nhà phát triển sử dụng. Có một số sự đánh đổi, dễ sử dụng chống lại khả năng tương thích đa nền tảng. Tôi không thể nghĩ ra cách tạo một kho lưu trữ tự giải nén đa nền tảng.

Đối với các cửa sổ, hãy tạo một kho lưu trữ tự giải nén bằng công cụ iexpress, sau đó ký tên bằng signtool.exe, như được mô tả ở đây . Khi người dùng của bạn nhấp đúp vào tệp, họ sẽ có các cửa sổ quen thuộc xác nhận hội thoại xác định bạn là nhà xuất bản của kho lưu trữ.


-1

Bạn có thể ký các tệp bằng jarsigner bằng hai lệnh sau:

keytool -genkeypair -alias <key-alias> -keyalg RSA -keystore <keystore> -validity 180

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore <keystore> <file-to-sign> <key-alias>

Bạn cần cài đặt java jdk trong máy tính của bạn.

-Cách đầu tiên tạo kho lưu trữ khóa trong thư mục hiện tại (giả sử nó không tồn tại). Nó tạo ra một cặp khóa công khai / riêng bằng thuật toán SHA-256.

-Bộ thứ hai ký vào tệp bằng thuật toán tương tự, kho khóa và bí danh được tạo bởi tệp thứ nhất.

Để xác minh một tệp đã ký bằng cách sử dụng kho lưu trữ khóa, bạn có thể chạy lệnh này:

jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>
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.