it-swarm-vi.com

Điều đó có nghĩa là gì đối với một chứng chỉ kỹ thuật số được "ký"?

Khi ai đó nói rằng một chứng chỉ kỹ thuật số cụ thể (như chứng chỉ SSL) đã được "ký bằng khóa", điều đó có nghĩa gì? Điều đó có nghĩa là chứng chỉ đơn giản chỉ bao gồm một khóa nên được sử dụng để trao đổi tin nhắn tiếp theo? Điều đó có nghĩa là bản thân chứng chỉ được mã hóa và chỉ có thể được giải mã bằng khóa đó? Nó có ngụ ý gì khác không? Cảm ơn trước.

25
zharvey

Lý tưởng nhất, nó có nghĩa là ai đó đã xem chứng chỉ và quyết định rằng nó là chính xác và hợp pháp. Khi họ đã thực hiện điều đó, họ muốn nói với mọi người "Này, tôi đã xác minh rằng chứng chỉ này là tốt. Tôi tin tưởng nó". Để làm điều này, họ sử dụng khóa ký của họ để ký chứng chỉ.

Bây giờ khi ai đó nhận được chứng chỉ, họ có thể thấy ai đã ký chứng chỉ. Nếu họ tin tưởng một trong những người ký, họ có thể tin tưởng vào chứng chỉ đó. Đây là cơ sở của Web Of Trust in PKI .

Việc ký thực sự có thể phụ thuộc vào loại chứng chỉ. Tôi nghĩ đây là một bài đọc hữu ích .

Một chứng chỉ kỹ thuật số bao gồm ba điều:

  • Một khóa công khai.
  • Giấy chứng nhận thông tin. (Thông tin "Danh tính" về người dùng, chẳng hạn như tên, ID người dùng, v.v.)
  • Một hoặc nhiều chữ ký số.

Thông thường, phần "một trong những chữ ký số" được thực hiện bằng cách liệt kê một bộ băm được mã hóa của chứng chỉ. Vì vậy, khi bạn muốn ký một chứng chỉ, bạn sẽ tính băm của chứng chỉ, mã hóa nó bằng khóa ký riêng tư của bạn và thêm nó vào danh sách chữ ký số.

23
Oleksi

Đây là cấu trúc của một chứng chỉ X.509 :

    Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }

   TBSCertificate  ::=  SEQUENCE  {
        version         [0]  EXPLICIT Version DEFAULT v1,
        serialNumber         CertificateSerialNumber,
        signature            AlgorithmIdentifier,
        issuer               Name,
        validity             Validity,
        subject              Name,
        subjectPublicKeyInfo SubjectPublicKeyInfo,
        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                             -- If present, version MUST be v2 or v3
        subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                             -- If present, version MUST be v2 or v3
        extensions      [3]  EXPLICIT Extensions OPTIONAL
                             -- If present, version MUST be v3
        }

Dữ liệu chứa trong chính chứng chỉ là phần TBSCertificate: nó liên kết khóa chung (objectPublicKeyInfo) với một mã định danh (chủ đề) và các phần mở rộng thuộc tính khác).

Điều này sau đó được kết hợp với chữ ký để tạo thành cấu trúc Certificate. Thuật toán chữ ký chỉ ra làm thế nào điều này nên được thực hiện.

Về cơ bản, một bản tóm tắt TBSCertificate (thường là SHA-1) được tính toán và sau đó được ký bằng khóa riêng của người ký (nhà phát hành theo các điều khoản X.509). Việc sửa đổi nhỏ nhất nội dung TBSCertificate sẽ làm thay đổi thông báo, điều này sẽ làm mất hiệu lực chữ ký.

Sử dụng các khóa RSA, việc ký kết thông báo bằng khóa riêng rất giống với những gì sẽ được thực hiện để mã hóa bằng khóa chung. Tuy nhiên, điều này không giống nhau về mặt khái niệm và DSA không có tính tương hỗ đó.

Nguyên tắc là giống nhau cho các loại chứng chỉ khác, mặc dù cấu trúc có thể khác nhau. Xem xét rằng khóa công khai PGP là chứng chỉ thực tế, bạn cũng có thể quan tâm đến những câu hỏi sau:

9
Bruno

Khi ai đó nói rằng một chứng chỉ kỹ thuật số cụ thể (như chứng chỉ SSL) đã được "ký bằng khóa", điều đó có nghĩa gì?

Nó ngụ ý rằng thực thể sở hữu khóa đó đã chứng minh tính chính xác của thông tin trong chứng chỉ và đã đính kèm thông tin vào chứng chỉ cho phép chứng từ đó được xác minh.

Điều đó có nghĩa là chứng chỉ đơn giản chỉ bao gồm một khóa nên được sử dụng để trao đổi tin nhắn tiếp theo?

Giấy chứng nhận chỉ chứng minh danh tính.

Điều đó có nghĩa là bản thân chứng chỉ được mã hóa và chỉ có thể được giải mã bằng khóa đó?

Không. Không có lý do để mã hóa chứng chỉ, chúng chỉ chứa thông tin công khai.

Nó có ngụ ý gì khác không?

Nó ngụ ý rằng chủ sở hữu của khóa đó đã chứng nhận cho các thông tin trong chứng chỉ. Đối với chứng chỉ SSL thông thường, thông tin trong chứng chỉ là một ràng buộc giữa khóa chung và tên chung.

Ví dụ: khi bạn trỏ trình duyệt của mình vào https://www.Amazon.com/ Máy chủ của Amazon sẽ gửi cho bạn một chứng chỉ. Chứng chỉ này liên kết một khóa công khai cụ thể với tên www.Amazon.com. Trình duyệt của bạn xác nhận ba điều để biết nó đang nói chuyện với Amazon thực sự:

  1. Máy chủ xuất trình chứng chỉ hợp lệ và được ký bởi một khóa mà nó tin tưởng.

  2. Chứng chỉ liên kết danh tính "www.Amazon.com".

  3. Máy chủ chứng minh rằng nó sở hữu khóa riêng tương ứng với chứng chỉ.

Vì vậy, mục đích của chữ ký chứng nhận là đặt uy tín của đại lý ký phía sau thông tin trong giấy chứng nhận, về cơ bản là "anh chàng này sở hữu khóa này".

6
David Schwartz