Tại sao chứng chỉ gốc CA tất cả SHA-1 được ký (vì SHA-1 không được chấp nhận)?


67

Tôi hiểu rằng các chứng chỉ SSL không thể được ký bằng SHA-1 nữa. Tuy nhiên, tất cả các chứng chỉ gốc CA đều được ký SHA-1 (hầu hết). Điều đó có nghĩa là cùng một thuật toán không còn được tin cậy cho "cửa hàng SSL của bà bạn" có tốt cho chứng chỉ bảo mật hàng đầu của thế giới không?

Tui bỏ lỡ điều gì vậy? (sử dụng khóa? kích thước khóa?)


9
Không phải là "tất cả" chứng chỉ gốc CA là SHA1.
Greg Askew

5
Chứng chỉ gốc giống như bắt đầu các giả định trong một thế giới quan. Phải có niềm tin để tin tưởng họ.
Roy Tinker

@RoyTinker ngoại trừ cogito ergo sum (xem nghi ngờ triệt để, và đó là câu trả lời: Chủ nghĩa hoài nghi của Cartesian )?
Nick T

1
Xếp

6
@NickT: Chơi an toàn - cogito ergo cogito ;-)
tonysdg

Câu trả lời:


106

Chữ ký của chứng chỉ CA gốc hoàn toàn không quan trọng, vì không cần phải xác minh chúng. Họ đều tự ký.

Nếu bạn tin tưởng chứng chỉ CA gốc, không cần xác minh chữ ký của nó. Nếu bạn không tin tưởng nó, chữ ký của nó là vô giá trị đối với bạn.

Chỉnh sửa: có một số ý kiến ​​rất liên quan dưới đây. Tôi không cảm thấy thoải mái khi sao chép hoặc đọc lại chúng và lấy tín dụng cho chúng thay vì tác giả của chúng. Nhưng tôi hoan nghênh mọi người thêm lời giải thích cho câu trả lời này.


3
Đưa ra câu hỏi tại sao họ lại ký hợp đồng
Richard Tingle

42
Bởi vì hệ thống không hỗ trợ các chứng chỉ không được ký.
OrangeDog

Dường như với tôi rằng mối quan tâm với chứng chỉ gốc có thể bẻ khóa không phải là "bạn không biết bạn đã lấy chứng chỉ gốc từ đâu", mà là "bạn không biết ai khác có thể bẻ khóa chứng chỉ này và sử dụng nó ký bất cứ điều gì họ muốn. " Và dường như từ câu trả lời của bạn rằng hai (chứng nhận và ký chứng nhận) là những mối quan tâm riêng biệt, và bản thân chứng chỉ đó có an toàn và không bị bẻ khóa?
Dewi Morgan

20
Tôi sẽ còn đi xa hơn "không cần phải xác minh chúng". Mục đích của chữ ký trong chuỗi chứng chỉ là cơ quan có thẩm quyền cao hơn chứng nhận cơ quan có thẩm quyền thấp hơn. Đối với một CA gốc, theo định nghĩa không có thẩm quyền cao hơn (đó là "root" nghĩa là gì), vì vậy không có ai có thể ký chứng chỉ . Vì, như đã đề cập, các chứng chỉ phải được ký, các CA gốc được ký bằng chữ ký "giả" và cách đơn giản nhất để làm điều đó là tự ký. Vì vậy, không chỉ không cần xác minh, chính ý tưởng xác minh chữ ký của một CA gốc là không nhạy cảm.
Jörg W Mittag

13
@DewiMorgan Bạn không thể "bẻ khóa" chứng chỉ gốc bằng xung đột băm, bởi vì khách hàng tin tưởng vào chính chứng chỉ đó chứ không phải chữ ký (tự) của nó. Bạn sẽ phải khôi phục khóa riêng, đó là một cuộc tấn công vào RSA, không phải trên thuật toán băm.
zwol

46

Vào cuối ngày, một chứng chỉ gốc là tự ký. Nó không bao giờ được ký bởi một thực thể khác ngoại trừ chính nó. Chứng chỉ gốc nhận được sự tin tưởng của mình thông qua các quy trình ngoài băng như gửi nó vào danh sách trình duyệt của các nhà xuất bản đáng tin cậy hoặc được Microsoft chấp nhận để đưa vào danh sách mặc định của các nhà xuất bản đáng tin cậy của Windows.

Các chứng chỉ này (và các công ty tự ký chúng) (được cho là hy vọng) được xem xét kỹ lưỡng thông qua các phương tiện khác chứ không chỉ là chữ ký của họ.


2
Chưa kể, việc cập nhật chứng chỉ gốc đòi hỏi phải thực hiện lại quy trình ngoài băng đó.
Kaithar

4
+1 cho "bị cáo buộc, hy vọng"
Nathan Osman

6

Trường hợp duy nhất trong trường hợp này là, nếu root được ký bởi SHA-1 thì nó có thể bị thu hồi bởi SHA-1. Đó là, ai đó có thể tấn công SHA-1 có thể tạo ra sự thu hồi cho gốc. Và tôi hoàn toàn chắc chắn rằng trình duyệt không biết cách duy trì điều đó để kẻ phá hoại đã hoàn thành không khác gì việc hủy kết nối SSL. Thật khập khiễng.


1
Đây là một suy nghĩ thú vị nhưng tôi nghi ngờ điều này sẽ hoạt động theo cách này. Tôi đoán là mỗi tác nhân sẽ có hành vi duy nhất của riêng mình, nhưng tôi nghi ngờ bất kỳ nhà phát triển nào có ý tưởng rằng danh sách thu hồi sẽ được sử dụng để quản lý việc hủy bỏ các certs gốc. Ít nhất, nếu điều này hoạt động trong một số trường hợp, thì đó có thể là do sự trừu tượng của việc thu hồi phần mềm và không được các nhà phát triển cố ý.
Peter Oehlert

1

Như một lưu ý về điều này, MỘT SỐ CA đã cập nhật chứng chỉ gốc và chứng chỉ trung gian của họ lên SHA256.

Tôi biết rằng năm ngoái GlobalSign đã cập nhật chứng chỉ của họ vì chúng tôi đang cập nhật chứng chỉ ký mã, vì vậy tôi cũng phải thêm chuỗi mới của họ vào đó.

Bạn có thể kiểm tra những chứng chỉ cụ thể nào đã được cập nhật và những chứng chỉ nào họ đã cập nhật nhưng cũng để lại chứng chỉ SHA1 cũ cho đây => 1

Mong rằng sẽ giúp.


0

Đối với CA gốc, bạn cung cấp cho bạn niềm tin vào khóa chung của CA - được ghi trong CRT - bất kể chữ ký tự của nó.

Mô tả CA sử dụng định dạng tệp .CRT thay vì khóa công khai thô .PEM cho phép gói thêm chi tiết trong đó - ví dụ: tên CA - (một lần nữa, chữ ký là vô giá trị)


-1

Có những thời đại rất cũ, chủ yếu là từ năm 2006 trở về trước đã được tin cậy chứng chỉ gốc SHA1 được ghim mà trình duyệt chấp nhận, nhưng không có bất kỳ chứng chỉ mới nào. Bạn có nhớ khi Firefox và Chrome được tạo phiên bản bằng các chữ số đơn không?

Chứng chỉ không thành công nếu CA gốc sử dụng chứng chỉ SHA1 với Not Before được đặt thành thứ gì đó sau năm 2014. Hạn chế ngày thực tế phụ thuộc vào trình duyệt hoặc ứng dụng khác. WebCA cabforum đã làm rõ điều này vài năm trước. Tự kiểm tra điều này bằng cách:

  1. Tạo cơ sở hạ tầng Chứng chỉ gốc riêng được ký với SHA1, gọi nó là rootSHA1
  2. Có rootSHA1 tạo CA "phát hành" hoặc CA "trung gian" phát hành chứng chỉ với chứng chỉ được nối đến gốc. Gọi nó là trung gianSHA256.
  3. Có CA phát hành trung gianSHA256 tạo chứng chỉ được ký với hàm băm sha256 hoặc lớn hơn. Gọi nó là webServerSHA256.
  4. Cài đặt webServerSHA256 vào webServerSHA56.mydomain.com.
  5. Cài đặt chứng chỉ rootSHA1, trung gianSHA256 và webServerSHA256 vào các vị trí thích hợp trong Google Chrome. Cài đặt root vào Cơ quan chứng nhận gốc đáng tin cậy và các cơ quan khác với chuỗi chứng chỉ.
  6. Điều hướng Google Chrome đến https://webServerSHA256.mydomain.com/ và xác minh không có ổ khóa màu xanh lá cây cho webServerSHA256. Kiểm tra thất bại.

Điều này khá sai. Các certs trung gian (và EE./leaf certs) không yêu cầu SHA2, nhưng rễ thì không. Chuỗi certs của riêng Google thông qua CA riêng của họ (Google Internet Agency G3) đến GlobalSign Root CA R2 - là SHA1 - và (không có gì bất ngờ) được Chrome chấp nhận.
dave_thndry_085

Có những certs SHA1 được ghim được chấp nhận, nhưng không phải bất kỳ chứng chỉ gốc SHA1 mới nào ngay cả khi bạn thêm nó vào kho chứng chỉ Root đáng tin cậy của riêng bạn. Đã thêm một trường hợp thử nghiệm vào câu trả lời của tôi.
rjt
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.