Chứng chỉ SSL tự ký có phải là cảm giác an toàn sai không?


30

Có phải chứng chỉ SSL tự ký là một cảm giác an toàn sai lầm?

Nếu bạn đang bị nghe lén, người dùng sẽ chỉ chấp nhận chứng chỉ như anh ấy / cô ấy luôn làm.

Câu trả lời:


25

Câu hỏi thú vị, nó phụ thuộc vào việc sử dụng theo ý kiến ​​của tôi. Bạn vẫn được bảo vệ về mặt phiên được mã hóa nhưng bạn không có cách nào để biết liệu đó có phải là chứng chỉ SSL chính xác được trình bày cho bạn trừ khi bạn phân phối chứng chỉ gốc CA của mình cho người dùng / khách hàng. Để thử nghiệm nội bộ / dự đoán dev sẽ hoạt động rất tốt, bạn tạo chứng chỉ CA gốc mà bạn sử dụng phân phối cho người dùng của mình (có thể được thực hiện qua Chính sách nhóm trong Windows và qua dòng lệnh openssl trong Linux / BSD) và sau đó sử dụng chứng chỉ gốc đó cho ký CSR của bạn. Người dùng sẽ không thấy cảnh báo hoặc bất cứ điều gì và bạn biết chứng chỉ được ký bởi CA nội bộ của bạn.

Đối với các trang web bên ngoài nơi bạn không thể đảm bảo điều này, tôi vẫn nói chứng chỉ tự ký tốt hơn là không có SSL nếu bạn đang gửi mật khẩu hoặc thông tin nhạy cảm khác qua kết nối.

Tuy nhiên, về mặt tích cực có rất nhiều nhà phát hành chứng chỉ "thương mại" rất rẻ, GoDaddy là một trong số họ. Bạn có thể nhận được chứng chỉ với giá khoảng 40 euro mỗi năm. GoDaddy thậm chí còn cung cấp certs miễn phí cho các trang web của dự án OpenSource.


Đây chính xác là những gì chúng tôi làm. Hãy cẩn thận, mặc dù với các chứng chỉ giá rẻ. Một số CA gốc khá kỳ lạ và không phải tất cả những thứ này đều nằm trong bộ sưu tập chứng chỉ CA gốc được gửi cùng với tất cả các trình duyệt.
wolfgangsz

4
+1 ngoại trừ "chứng chỉ tự ký tốt hơn không có SSL" - nếu bạn xác minh rằng đó là chứng chỉ của bạn chứ không phải chứng chỉ do MITM cung cấp. Thành thật mà nói, lần cuối cùng một người dùng bình thường làm điều đó là khi nào? . để nhấp qua cái này, vì "tốt, họ bảo tôi bỏ qua cảnh báo trên mysite.example.com, vì vậy tôi có thể bỏ qua nó ở mọi nơi; nhìn này, một biểu tượng khóa!" Voila, cảm giác an toàn sai lầm!
Piskvor

7
@Piskvor, thực sự đó là lỗi của trình duyệt. Đầu tiên, các trình duyệt thường không cung cấp cách "chấp nhận vĩnh viễn" các chứng chỉ tự ký chưa biết trước đây để người dùng không gây nguy hiểm cho chính mình sau mỗi lần đăng nhập. Thứ hai, các trình duyệt không khuyến khích sử dụng HTTP đơn giản cũ, cũng tạo ra cảm giác an toàn sai lầm. Vì vậy, HTTP luôn kém hơn HTTPS, cả về bảo mật và nhận thức của người dùng (ít nhất là họ nhận được cảnh báo!).
Rotsor

1
@Rotsor: Đầu tiên, Opera có tính năng này mà bạn mô tả tích hợp, FF có Chứng nhận tuần tra (ít nhất là cảnh báo về việc thay đổi chứng chỉ). Cũng lưu ý rằng không phải mọi thứ trên SSL đều là trình duyệt (IMAPS, v.v.). Thứ hai, làm thế nào nhiều tình trạng hiện tại của HTTP chỉ các trang web lỗi của trình duyệt? (và không, các trình duyệt chỉ HTTPS không bao giờ bị bắt, chính xác là do có một Net nhỏ hơn đáng kể để duyệt với chúng). Thứ ba, "họ nhận được cảnh báo" sẽ hữu ích, nếu chỉ người dùng sẽ đọc nó - và không mù quáng bấm "chấp nhận" để làm cho nó biến mất. "Nhấp vào chấp nhận nghĩa là hiểu" là ảo tưởng được chia sẻ của nhà phát triển.
Piskvor

1
@Piskvor, thật tốt khi biết một số trình duyệt cung cấp tính năng đó. Đối với HTTP, tôi không thể biết phải làm gì (không chấp nhận HTTP rõ ràng không phải là một tùy chọn), nhưng có nhiều cảnh báo liên quan đến bảo mật với SSL tự ký hơn là không có SSL hoàn toàn sai và đó là trình duyệt lỗi!
Rotsor

12

Tôi sẽ không đồng ý, một lần trên cơ sở kỹ thuật hẹp, và một lần trên cơ sở chung.

Cơ sở kỹ thuật hẹp là OP đã hỏi về các chứng chỉ tự ký và một số câu trả lời khác đề cập đến các chứng chỉ được ký bởi các CA tư nhân, đây là một vấn đề hơi khác. Nhưng không khác lắm, nên đó thực sự chỉ là một lưu ý khi vượt qua.

Sự phản đối chính là tôi nghĩ rằng miễn là các chứng chỉ được ký kết thương mại nhiều hơn chi phí không đáng kể - và 40 đô la một năm không phải là một chi phí nhỏ đối với nhiều người trên hành tinh này - chứng chỉ tự ký có vai trò chính trong bảo mật internet, với điều kiện là những hạn chế của họ được công nhận .

Chứng chỉ tự ký giống như khóa ssh từ known_hoststệp của tôi . Nếu không có xác minh độc lập, tôi không thể đảm bảo rằng tôi đang nói chuyện với hệ thống mà tôi tin là mình; nhưng nó có thể đảm bảo với tôi rằng hệ thống mà tôi đang nói đến bây giờ là cùng một hệ thống mà tôi đã nói chuyện lần trước tôi nghĩ rằng tôi đang có một cuộc trò chuyện với nó. Chúng tôi luôn lưu trữ khóa ssh và tôi chưa bao giờ gặp quản trị viên hệ thống xác minh độc lập hơn một phần các khóa công khai trong known_hoststệp của anh ấy / cô ấy .

Chứng chỉ tự ký (và, đối với vấn đề đó, chứng chỉ được ký bởi các CA không hợp lệ nói chung) tốt hơn nhiều so với không có SSL, miễn là mọi người nhận ra rằng trừ khi họ xác minh chúng, họ chỉ bảo mật thông tin liên lạc với chính họ, máy chủ ở đầu kia của bản ghi DNS và bất kỳ người đàn ông trung gian nào hiện đang ở trên mạng. Nếu họ xác minh độc lập chứng chỉ, thì xác thực và mã hóa ít nhất cũng mạnh bằng chứng chỉ được cung cấp bởi một chứng chỉ được ký bởi CA.

Hơn nữa, những người muốn trình bày việc sử dụng giấy chứng nhận có chữ ký của CA công nhận là một và chỉ thuốc chữa bách bệnh an ninh mạng có thể cần phải suy nghĩ rất nhiều về các vấn đề như sự bao gồm của CA ký của Chính phủ Trung Quốc trong Mozilla bó tiêu chuẩn , và các chứng chỉ SSL lừa đảo có chữ ký của Comodo .


Than ôi, mô hình "CA đáng tin cậy" thực sự đã bị hỏng (và đã được nhiều năm); thật không may, nó sẽ không biến mất (và không có gì thực sự tốt hơn để thay thế nó). Như mọi khi, SSL và CA đáng tin cậy không phải là bụi pixie bảo mật kỳ diệu; người dùng cần chủ động duy trì bảo mật - phần lớn, đó là một giả định khá điên rồ.
Piskvor

2
Người dùng của bạn có khả năng thực hiện đánh giá có giáo dục về mức độ tin cậy của họ về tính toàn vẹn của đường dẫn đến máy chủ DNS hiện tại (bao gồm khả năng bị nhiễm độc bộ nhớ cache) và thiết bị mà họ đang gặp phải không? Tôi không biết DNS là gì, ít có khả năng đưa ra quyết định bảo mật có giáo dục về kết nối của họ với máy chủ ở trạng thái khác, được kết nối với một trang web khác thông qua MPLS, được kết nối với người dùng thông qua VPN máy khách, họ trên thông qua wifi quán cà phê không được mã hóa. Tránh giao cho họ trách nhiệm đó.
Shane Madden

2
@Shane Madden: Một lĩnh vực có thể xảy ra là quản trị trang web - ví dụ: phpMyAdmin (hoặc, ở mức độ thấp hơn, SVN trên HTTPS). Thường có một số lượng người dùng hạn chế và chúng chứa một phần đáng kể của một đầu mối . Tôi sẽ không hy vọng ông cố của mình sẽ đưa ra cảnh báo về chứng chỉ SSL, nhưng tôi chắc chắn mong đợi điều này của một sysadmin đồng nghiệp, đặc biệt nếu đó là một máy chủ dưới sự kiểm soát của người thừa kế. Một người dùng làm vườn cũng không biết gì về known_hosts@MadHatter đang tham khảo.
Piskvor

8

Đối với các trang web bên ngoài, nơi người dùng không cài đặt chứng chỉ CA của bạn (đây là trường hợp phổ biến nhất), vâng, chứng chỉ tự ký mang lại cảm giác an toàn sai lầm và do đó, nó còn tệ hơn vô dụng:

  • Đầu tiên, không có chứng chỉ CA được cài đặt sẵn, làm thế nào để người dùng xác minh rằng chứng chỉ thực sự đến từ bạn chứ không phải từ kẻ tấn công? Tất nhiên, bằng cách khớp các trường chứng chỉ (CN, dấu vân tay, v.v.) - nhưng chống lại cái gì? Vì vậy, bây giờ bạn cần một kênh phụ để xác minh giấy chứng nhận - và trong vài trường hợp I have seen that, các nhà khai thác dòng hỗ trợ (người đáng lẽ phải phục vụ như là kênh phụ để xác minh) không có đầu mối gì đó là nghĩa vụ phải có nghĩa; Ngoài ra, vận hành kênh bên như vậy là đơn đặt hàng lớn hơn so với nhận chứng chỉ có chữ ký CA đáng tin cậy, vì vậy người dùng phải tin tưởng bạn một cách mù quáng.

  • Thứ hai, cảnh báo đáng sợ mà người dùng nhận được rất đáng sợ vì một lý do chính đáng: vì người dùng không thể / không xác minh chứng chỉ được trình bày, họ có thể truyền dữ liệu một cách an toàn đến Elbonian Haxx0r D00dz.

  • Thứ ba, và tệ nhất trong tất cả, bạn đang làm mất lòng người dùng : "tốt, họ nói với tôi rằng tôi nên bỏ qua cảnh báo đó trên https://mysite.example.com/ , và một cái đe không rơi xuống đầu tôi và tôi Cá vàng cũng không chết; vì vậy, điều đó có nghĩa là nó chỉ là một hộp cảnh báo khác mà không có ý nghĩa thực sự nào, vì vậy tôi có thể bỏ qua hộp này bất cứ khi nào tôi gặp nó - dù sao tôi cũng nhận được biểu tượng khóa đẹp đó và điều đó rất quan trọng. "

Nói cách khác, mức độ bảo vệ tương đương với HTTP đơn giản (ngoại trừ việc đánh hơi trực tuyến: mặc dù dữ liệu được mã hóa trong quá trình, đó là một tính năng khá thiếu máu mà không cần xác minh điểm cuối), nhưng cảm giác bảo vệ cao một cách vô lý . Tương tự xe hơi xấu: "Tôi có ABS, vì vậy bây giờ tôi có thể lái xe an toàn hơn trong điều kiện xấu" - ngoại trừ ABS chỉ tồn tại trong tài liệu bán hàng của xe, mà không thực sự có mặt trong xe.

Đọc gợi ý : OWASP SSL Thực tiễn tốt nhất

TL; DR: Bằng cách sử dụng các chứng chỉ tự ký trên các trang web công khai, bạn đang biến Net thành một nơi tồi tệ hơn, một người dùng không biết gì tại một thời điểm.


2
@downvoter: Tôi đánh giá cao nếu bạn chỉ ra nơi câu trả lời của tôi là không chính xác ( "không chính xác" như trái ngược với "khó chịu, bất tiện, và một bận tâm để thực hiện"). Bảo mật là khó khăn và việc "la la la tôi không thể nghe thấy bạn" không có gì để khắc phục.
Piskvor

2
Mặc dù tôi không đánh giá thấp câu trả lời của bạn, văn bản chú giải công cụ trên mũi tên xuống chỉ ra việc bỏ phiếu không vì lý do nào khác ngoài câu trả lời không hữu ích. Tôi nghĩ rằng cảm giác sai của con lắc an ninh cũng có thể xoay theo hướng khác. Các vi phạm comodo RA gần đây chứng minh rằng một "nhân vật phản diện" không khó để kiếm được một chứng chỉ hoàn toàn hợp pháp.
mahnsc

@mahnsc: Cảm ơn bạn đã nhắc nhở; Tôi biết điều đó :-) "Chứng chỉ SSL tự ký có phải là cảm giác an toàn sai không?" "Có, vì những lý do sau ..." nghe có vẻ hữu ích, phải không? Vì vậy, tôi đã tò mò tại sao điều này sẽ không xảy ra: tôi có thể học được điều gì đó từ một quan điểm đối lập; từ một downvote, không quá nhiều.
Piskvor

1
@mahnsc: Điểm hay về các CA bị xâm nhập. Tôi không nói rằng danh sách CA gốc được đặt trong đá và không thể khai thác - bảo mật hoàn hảo không tồn tại; nhưng cần nhiều nỗ lực hơn để phá vỡ điều đó hơn là thiết lập proxy SSL chụp trên cổng mạng.
Piskvor

1
@mahnsc: Tôi có nghĩa là việc thiết lập proxy SSL dễ dàng hơn và hy vọng rằng người dùng nhấp qua các cảnh báo, hơn là thiết lập proxy SSL và hy vọng rằng yêu cầu chứng chỉ không có thật trong quá trình xác minh CA. Như chúng ta đã thấy, nhưng điều trước đây dễ thực hiện hơn (và khó phát hiện hơn sau đó, vì người dùng trình duyệt thường không theo dõi kiểm toán).
Piskvor

8

Phụ thuộc. Nếu bạn nghĩ rằng nó làm cho bạn an toàn hơn thì nó làm tăng rủi ro của bạn khi bạn chọn làm những việc rủi ro hơn với cảm giác an toàn sai lầm của bạn. Nếu bạn coi nó có chức năng tương đương với HTTP, thì tôi muốn nói rằng bạn an toàn hơn một chút.

Nếu không có SSL / HTTPS, bất kỳ ai có wireshark trên mạng của bạn (hoặc mạng cục bộ của bất kỳ ai đăng nhập) đều có thể lắng nghe và nắm bắt tên người dùng / mật khẩu được gửi dưới dạng văn bản thuần túy.

Với SSL tự ký, họ không thể đơn giản lắng nghe, nhưng bây giờ phải giả mạo trang web của bạn, có khả năng thay đổi DNS để thực hiện một cuộc tấn công giữa chừng (MITM). Đây vẫn là một mối đe dọa, nhưng khó khăn hơn đáng kể để họ thực hiện.

Vấn đề khác khi sử dụng SSL tự ký là nhiều trình duyệt coi chứng chỉ tự ký là mối đe dọa bảo mật lớn và cảnh báo bạn trước khi vào (ví dụ: chrome) với một trang đỏ khổng lồ. http://www.sslshopper.com/article-ssl-certert-in-google-chrome.html Đây có thể là một bất tiện lớn.

Vì vậy, điểm mấu chốt là: nếu bạn chạy thứ gì đó không cần bảo mật đặc biệt (ví dụ: không có dữ liệu thẻ tín dụng, không có số an sinh xã hội) và không đủ khả năng để có chứng chỉ phù hợp, chứng chỉ tự ký có thể có ý nghĩa (để nói ngăn người dùng mạng khác dễ dàng đánh hơi thông tin đăng nhập của họ).


0

Nó phụ thuộc vào ý của bạn với "bảo mật", và đó là mức độ.

Ví dụ: trình duyệt của bạn đi kèm với một bộ CA được chấp nhận theo mặc định. Điều này có nghĩa, mọi chứng chỉ do CA này cấp đều được trình duyệt của bạn chấp nhận (cho đến khi nó khớp với tên dns). Bây giờ, hãy tưởng tượng một số chính phủ độc ác sở hữu một CA, hoặc có thể buộc CA cấp giấy chứng nhận cho trang web bạn đang truy cập. Sau đó, để thực hiện MITM rất dễ dàng: họ có thể ủy quyền kết nối của bạn, gửi tới trình duyệt của bạn chứng chỉ họ có và trình duyệt của bạn sẽ chấp nhận, vì nó đến từ CA "đáng tin cậy". Cho đến khi chúng trong suốt DNS (là cơ sở cho MITM) thì điều này là ổn.

Vì vậy, "danh sách CA được chấp nhận" về cơ bản là một lỗ hổng bảo mật lớn, cho đến khi một trong những CA này hợp tác với một số chính phủ độc ác. Có CA của riêng bạn là tốt hơn nhiều.

Tất nhiên, bạn có thể làm điều đó trong công ty hoặc trong máy chủ tại nhà của mình, vì bạn có thể cài đặt chứng chỉ CA của riêng bạn vào máy khách mà bạn cũng kiểm soát. Trong một máy chủ công cộng, bạn không thể giao dịch với bất kỳ người dùng nào, yêu cầu anh ta thêm một ngoại lệ hoặc thêm chứng chỉ của bạn.

Vì vậy, nó phụ thuộc vào ý nghĩa của bạn đối với "bảo mật" và phạm vi. NẾU bạn sở hữu các máy khách, ĐỂ KIẾM, tự ký sẽ an toàn hơn, cho đến khi bạn cài đặt trên chính máy khách chứng chỉ CA của chính bạn.

Tất nhiên, bạn không thể làm điều đó trên một trang web công cộng vì bạn không sở hữu tất cả các khách hàng. Vì vậy, bạn sẽ gặp nguy hiểm với các hành vi khác nhau, không an toàn.

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.