https là gì và có thực sự an toàn không?

Nội dung bài viết

Lời nói đầu


Trong nháy mắt, hơn một nửa năm 2020 đã trôi qua và năm 2020 rất khó khăn. Có rất nhiều tin tức về việc sa thải ở các công ty khác nhau, chẳng hạn như giảm lương, không có tiền thưởng cuối năm, v.v. Năm 2020 thực sự là một năm khó khăn. Tuy nhiên, cuộc sống luôn phải tiếp tục, thời gian không cho bạn cơ hội nhiều nên đừng để vụt mất! Nếu chúng ta có thể kiên trì và liên tục cải thiện bản thân, có thể có những cơ hội mới trong tương lai. 


Trong cuộc phỏng vấn, các điểm kiến thức cơ bản như mạng (http, https, tcp, udp) v.v., xuất hiện thường xuyên và mọi lập trình viên có thể nói rất nhiều. Nhưng nó không nhất thiết phải đề cập đến những điểm chính và hiểu các nguyên tắc đằng sau chúng. Tôi thường được hỏi trong cuộc phỏng vấn, vì vậy tôi đã tóm tắt và ghi lại nó. Đừng đánh giá thấp những điều cơ bản này. 


Đôi khi, thuật toán và kinh nghiệm dự án của bạn đã được thông qua, nhưng các câu trả lời cơ bản không được tốt lắm. Kết quả có thể vượt qua, nhưng chắc chắn sẽ ảnh hưởng đến đánh giá của bạn, điều này đặc biệt bất lợi. Vì vậy, tốt hơn là dành một chút thời gian để đọc và hiểu nguyên tắc đằng sau nó. Để đưa ra một câu trả lời chính xác nhất về, quá trình kết nối https là gì, phương pháp mã hóa nào được sử dụng, bạn có thể trả lời như sau. 


Không có nhiều thời gian ở đây nên chúng ta hãy cố đi vào vấn đề nhanh nhất có thể.


http là gì? Và có những vấn đề gì?


Chúng tôi biết rằng giao tiếp http có các vấn đề sau: 


  • - Giao tiếp sử dụng văn bản gốc có thể được khai thác 
  • - Không xác minh danh tính của bên giao tiếp có thể gặp phải những kẻ nguỵ trang 
  • - Không thể chứng minh tính toàn vẹn của dữ liệu, nó có thể đã bị giả mạo Sử dụng https có thể giải quyết các vấn đề bảo mật dữ liệu, nhưng bạn có thực sự hiểu https không?


Bây giờ giả sử như tôi sẽ hỏi về bạn những câu hỏi như dưới đây, bạn có thể trả lời ngay mà không đi tìm thông tin trên google không? 


  • - Https là gì và tại sao bạn cần https 
  • - Quá trình kết nối https 
  • - Phương pháp mã hóa của https, mã hóa đối xứng và mã hóa bất đối xứng là gì, tại sao nó được thiết kế như thế này? 
  • - Https có an toàn tuyệt đối không


Nếu bạn có thể trả lời một cách thoải mái và không gặp khó khăn nào thì xin chúc mừng, bạn đã gần như thành thạo https, đủ cho cuộc phỏng vấn mà theo tôi đánh giá là vị trí senior đấy.


Https là gì


Nếu bạn là một người luôn thích đọc tin tức lập trình mỗi buổi sáng thì tôi cam đoan bạn sẽ không hề quên bài viết trước đây đó là "HTTP là gì? HTTPS là gì? Sự khác biệt giữa HTTPS và HTTP". Ở đó giúp bạn nắm bắt chi tiết hơn về khái niệm đó. 


Nói một cách đơn giản, https là http + ssl, mã hóa nội dung của giao tiếp http, là phiên bản bảo mật của HTTP và là giao thức HTTP được mã hóa bằng TLS / SSL


Vai trò của Https là gì


Mã hóa nội dung thiết lập một kênh bảo mật thông tin để đảm bảo an toàn cho việc truyền dữ liệu; Xác minh danh tính xác nhận tính xác thực của trang web Tính toàn vẹn dữ liệu ngăn nội dung bị mạo danh hoặc giả mạo bởi các bên thứ ba


SSL là gì


SSL được tạo bởi Netscape Corporation vào năm 1994. Nó nhằm mục đích tạo ra các giao tiếp Internet an toàn thông qua Web. Nó là một giao thức chuẩn được sử dụng để mã hóa giao tiếp giữa trình duyệt và máy chủ. 

Nó cho phép truyền thông tin cá nhân an toàn và dễ dàng như mật khẩu tài khoản, thẻ ngân hàng và số điện thoại di động qua Internet. Chứng chỉ SSL là chứng chỉ kỹ thuật số được cấp bởi một tổ chức certification authority (CA) đáng tin cậy tuân thủ giao thức SSL.


Cách thức hoạt động của SSL / TLS


Để hiểu nguyên tắc làm việc của SSL / TLS, chúng ta cần nắm vững thuật toán mã hóa. Có hai thuật toán mã hóa: mã hóa đối xứng và mã hóa bất đối xứng: 


Mã hóa đối xứng:


Cả hai bên sử dụng cùng một khóa để mã hóa. Đặc điểm là tốc độ mã hóa nhanh, nhưng nhược điểm là khóa cần được bảo vệ. Nếu khóa bị rò rỉ, mã hóa sẽ bị người khác đánh cắp. Mã hóa đối xứng phổ biến có thuật toán AES và DES. 


Mã hóa bất đối xứng:


Nó cần tạo hai khóa: khóa chung (Khóa chung) và khóa riêng (Khóa riêng). Như tên cho thấy, khóa chung là công khai và bất kỳ ai cũng có thể có được nó, trong khi khóa riêng được giữ kín. 


Tôi tin rằng hầu hết các lập trình viên đã quen thuộc với thuật toán này: khi chúng tôi gửi mã cho github, chúng tôi có thể sử dụng khóa SSH: tạo khóa riêng và khóa chung, lưu trữ khóa riêng trong thư mục .ssh cục bộ và lưu trữ khóa chung Trên trang web github, mỗi khi bạn gửi mã, bạn không phải nhập tên người dùng và mật khẩu và github sẽ xác định danh tính của chúng tôi theo khóa công khai được lưu trữ trên trang web. 


Khóa công khai chịu trách nhiệm mã hóa và khóa riêng chịu trách nhiệm giải mã, hoặc, khóa riêng chịu trách nhiệm mã hóa và khóa chung chịu trách nhiệm giải mã. Thuật toán mã hóa này an toàn hơn, nhưng số lượng tính toán lớn hơn nhiều so với mã hóa đối xứng, và mã hóa và giải mã chậm. Một thuật toán bất đối xứng phổ biến là RSA.


Quá trình kết nối https


Quá trình kết nối https được chia thành hai giai đoạn, giai đoạn xác minh chứng chỉ và giai đoạn truyền dữ liệu


Giai đoạn xác nhận chứng chỉChia thành ba bước 


  • - Trình duyệt bắt đầu một yêu cầu 
  • - Sau khi máy chủ nhận được yêu cầu, nó sẽ trả lại chứng chỉ, bao gồm khóa chung 
  • - Sau khi trình duyệt nhận được chứng chỉ, nó sẽ kiểm tra xem chứng chỉ đó có hợp pháp hay không. Nếu đó là bất hợp pháp, một cảnh báo sẽ bật lên (làm thế nào để xác minh tính hợp pháp, tôi sẽ phân tích chi tiết bên dưới và bỏ qua nó ở đây)


Giai đoạn truyền dữ liệu Sau khi SSL/TSL là hợp pháp 


  • - Trình duyệt sẽ tạo một số ngẫu nhiên, 
  • - Sử dụng khóa chung để mã hóa và gửi đến máy chủ 
  • - Máy chủ nhận giá trị được gửi bởi trình duyệt và sử dụng khóa riêng để giải mã nó 
  • - Sau khi phân tích thành công, sử dụng thuật toán mã hóa đối xứng để mã hóa và truyền đến máy khách Sau khi hai bên liên lạc, số ngẫu nhiên được tạo trong bước đầu tiên được sử dụng để liên lạc được mã hóa.


Phương pháp mã hóa của https, mã hóa đối xứng và mã hóa bất đối xứng là gì và tại sao nó được thiết kế như thế nào?


Từ những điều trên, chúng ta có thể biết rằng mã hóa https là sự kết hợp giữa mã hóa đối xứng và bí mật bất đối xứng. Trong giai đoạn xác minh chứng chỉ, mã hóa bất đối xứng được sử dụng. Trong giai đoạn truyền dữ liệu, các bí mật đối xứng được sử dụng. Thiết kế này có một lợi thế, có thể tối đa hóa sự an toàn và hiệu quả. Trong giai đoạn xác minh chứng chỉ, sử dụng mã hóa bất đối xứng yêu cầu khóa chung và khóa riêng. 


Nếu khóa công khai của trình duyệt bị rò rỉ, chúng tôi vẫn có thể đảm bảo tính bảo mật của số ngẫu nhiên, vì dữ liệu được mã hóa chỉ có thể được giải mã bằng khóa riêng. Điều này có thể đảm bảo tính bảo mật của các số ngẫu nhiên ở mức độ lớn nhất. Trong giai đoạn truyền nội dung, việc sử dụng các bí mật đối xứng có thể cải thiện đáng kể hiệu quả của mã hóa và giải mã. 


Tại sao sử dụng bí mật đối xứng để truyền nội dung Hiệu quả mã hóa đối xứng tương đối cao Một cặp khóa công khai và khóa riêng chỉ có thể nhận ra mã hóa và giải mã một chiều. Chỉ có máy chủ lưu khóa riêng. Nếu một bí mật bất đối xứng được sử dụng, nó tương đương với việc khách hàng phải có khóa riêng của mình. Với thiết kế này, mỗi khách hàng có khóa riêng của mình. Điều này rõ ràng là không hợp lý vì khóa riêng cần được áp dụng.


Https có an toàn tuyệt đối không


Nó không tuyệt đối an toàn và có thể bị tấn công bởi con người ở giữa.


Một cuộc tấn công https giữa chừng là gì


Một cuộc tấn công trung gian có nghĩa là kẻ tấn công tạo ra các kết nối độc lập với cả hai đầu của giao tiếp và trao đổi dữ liệu họ nhận được, do đó cả hai đầu của giao tiếp nghĩ rằng họ đang nói chuyện trực tiếp với nhau thông qua một kết nối riêng tư, nhưng thực tế là toàn bộ cuộc trò chuyện được kiểm soát hoàn toàn bởi kẻ tấn công. HTTPS sử dụng giao thức mã hóa SSL, đây là một cơ chế rất an toàn. 

https là gì và có thực sự an toàn không?

Hiện tại, không có cách nào để tấn công trực tiếp giao thức này. Nói chung, khi kết nối SSL được thiết lập, yêu cầu của khách hàng bị chặn và người trung gian được sử dụng để lấy chứng chỉ CA và mã hóa bất đối xứng. Khóa chung của khóa mã hóa đối xứng, với các điều kiện này, yêu cầu và phản hồi có thể bị chặn và giả mạo. 

Nguyên tắc quá trình:

 

  • Yêu cầu cục bộ bị tấn công (chẳng hạn như chiếm quyền điều khiển DNS, v.v.), tất cả các yêu cầu được gửi đến máy chủ của người trung gian 
  • Máy chủ trung gian trả lại chứng chỉ của người trung gian 
  • Máy khách tạo một số ngẫu nhiên, mã hóa số ngẫu nhiên bằng khóa chung của chứng chỉ người trung gian và truyền nó cho người trung gian, sau đó sử dụng số ngẫu nhiên để xây dựng mã hóa đối xứng để mã hóa nội dung truyền. 
  • Bởi vì người trung gian có số ngẫu nhiên của khách hàng, nó có thể giải mã nội dung thông qua thuật toán mã hóa đối xứng Người trung gian bắt đầu một yêu cầu đến trang web chính thức với nội dung yêu cầu của khách hàng Vì quy trình liên lạc giữa người trung gian và máy chủ là hợp pháp, trang web chính thức trả về dữ liệu được mã hóa thông qua kênh bảo mật được thiết lập 
  • Người trung gian sử dụng thuật toán mã hóa đối xứng được thiết lập với trang web chính thức để giải mã nội dung 
  • Người trung gian mã hóa dữ liệu được trả về bởi nội dung chính thức thông qua thuật toán mã hóa đối xứng được thiết lập với máy khách 
  • Máy khách giải mã dữ liệu kết quả được trả về thông qua thuật toán mã hóa đối xứng được thiết lập với người trung gian 
  • Do thiếu xác minh chứng chỉ, mặc dù máy khách khởi tạo yêu cầu HTTPS, khách hàng không biết rằng mạng của nó đã bị chặn và nội dung truyền bị đánh cắp hoàn toàn bởi người trung gian.

Làm thế nào để https ngăn chặn các cuộc tấn công trung gian


Cần có chứng chỉ trong https. Chức năng của chứng chỉ là ngăn chặn "các cuộc tấn công trung gian". Nếu có một trung gian M chặn yêu cầu của máy khách, thì M cung cấp khóa chung của nó cho máy khách và M yêu cầu khóa chung từ máy chủ, đóng vai trò là "trung gian" để máy khách và máy chủ không biết và thông tin đã bị chặn. 


Tại thời điểm này, cần phải chứng minh rằng khóa công khai của máy chủ là chính xác. Làm thế nào để chứng minh điều đó? Một tổ chức bên thứ ba có thẩm quyền là cần thiết để công bằng. 


Tổ chức bên thứ ba này là CA. Có nghĩa là, CA là một công ty bảo lãnh chuyên chứng nhận và bảo đảm các khóa công khai. Có hơn 100 CA nổi tiếng trên thế giới. Những CA này được công nhận trên toàn cầu, như VeriSign, GlobalSign, v.v ... Các CA nội địa nổi tiếng bao gồm WoSign.


Làm thế nào để trình duyệt đảm bảo tính hợp lệ của chứng chỉ CA?

1. Chứng chỉ chứa thông tin gì? 


Phát hành thông tin đại lý, khóa công khai, thông tin công ty, tên miền, thời hạn hiệu lực, dấu vân tay ... 


2. Cơ sở cho tính hợp pháp của giấy chứng nhận là gì? 


Trước hết, một cơ quan phải được chứng nhận. Không chỉ một tổ chức đủ điều kiện để cấp chứng chỉ, nếu không nó không được gọi là cơ quan có thẩm quyền. Ngoài ra, độ tin cậy của chứng chỉ dựa trên hệ thống ủy thác và cơ quan có thẩm quyền cần phải chứng thực chứng chỉ do nó cấp. Miễn là chứng chỉ được tạo bởi cơ quan có thẩm quyền, chúng tôi coi đó là hợp pháp. Do đó, cơ quan có thẩm quyền sẽ xem xét thông tin của người nộp đơn. Các cấp thẩm quyền khác nhau có các yêu cầu khác nhau để xem xét, vì vậy các chứng chỉ cũng được chia thành miễn phí, rẻ và đắt. 


3. Làm thế nào để trình duyệt xác minh tính hợp lệ của chứng chỉ? 


Khi trình duyệt bắt đầu yêu cầu HTTPS, máy chủ sẽ trả lại chứng chỉ SSL của trang web và trình duyệt cần xác minh chứng chỉ như sau: 


  • Xác minh rằng tên miền, thời hạn hiệu lực và thông tin khác là chính xác. Thông tin này được bao gồm trong chứng chỉ, vì vậy việc hoàn thành xác minh sẽ dễ dàng hơn; 
  • Xác định xem nguồn của chứng chỉ là hợp pháp. Đối với mỗi chứng chỉ được cấp, chứng chỉ gốc tương ứng có thể được tìm thấy theo chuỗi xác minh. Hệ điều hành và trình duyệt sẽ lưu trữ chứng chỉ gốc của chính quyền cục bộ và chứng chỉ gốc cục bộ có thể được sử dụng để xác minh nguồn chứng chỉ do tổ chức tương ứng cấp; 
  • Xác định xem chứng chỉ đã bị giả mạo. Cần kiểm tra với máy chủ CA; 
  • Xác định xem chứng chỉ đã bị thu hồi. Nó được triển khai thông qua CRL (Danh sách thu hồi chứng chỉ) và OCSP (Giao thức trạng thái chứng chỉ trực tuyến). OCSP có thể được sử dụng trong bước 3 để giảm tương tác với máy chủ CA và cải thiện hiệu quả xác minh.


Trình duyệt coi chứng chỉ là hợp pháp chỉ khi bất kỳ bước nào ở trên được đáp ứng.

Bài viết còn tiếp tục cập nhật....

Có thể bạn đã bị missing