TLS/SSL là gì? SSL hoạt động ra sao trên internet

0
ssl là gì

Giao thức TLS/SSL giúp mã hóa tất cả các loại traffic internet – làm cho quá trình trao đổi thông tin liên lạc qua internet trở nên an toàn hơn. Và trong bài viết này, mình sẽ giải thích những điều cơ bản nhất về cách nó hoạt động ra sao.

Kể từ những ngày đầu tiên kể từ khi xuất hiện internet, giao thức SSL và hậu duệ của nó là TLS đã cung cấp cho internet khả năng mã hóa và bảo mật thông tin ngày càng hiện đại hơn. Lịch sử hình thành và phát triển kéo dài hàng thập kỷ của những giao thức này đã được cập nhật liên tục để bắt kịp và cản trở những tay hacker ngày càng tinh vi hơn. Phiên bản chính thức tiếp theo của giao thức này là TLS 1.3 sẽ sớm được hoàn thiện trong thời gian sắp tới – và hầu hết các website hiện nay đều đã và đang cần phải cập nhật sử dụng TLS/SSL trên website của mình để phòng chống hacker, ngoài ra đây còn là một yếu tố SEO được Google khuyến nghị sử dụng nữa. Do đó, khi triển khai dịch vụ thiết kế website, chúng tôi luôn triển khai TLS/SSL cho website của khách hàng để đáp ứng yếu tố SEO cũng như tăng cường bảo mật website cho khách hàng.

SSL là gì?

Viết tắt của từ Secure Socket Layer hay SSL, là cái tên nguyên bản ban đầu của giao thức này – khi lần đầu tiên được phát triển vào những năm 1990 bởi Netscape – công ty tạo ra trình duyệt web nổi tiếng nhất vào thời điểm đó. SSL 1.0 chưa bao giờ được phát hành công khai rộng rãi, trong khi đó thì SSL 2.0 ra mắt thì đã gặp phải những lỗi vô cùng nghiêm trọng. Và kể từ khi phiên bản SSL 3.0 ra mắt vào năm 1996 và nó đã được cải tiến thêm khá nhiều.

Phân biệt TLS vs SSL

Khi phiên bản SSL kế tiếp được phát hành vào năm 1999, nó được tiêu chuẩn hóa bởi Internet Engineering Task Force (IETF) và kể từ đó nó được cung cấp cho một cái tên mới: Transport Layer Security hay TLS. Theo đặc tả thông tin của TLS “sự khác biệt giữa giao thức TLS và SSL 3.0 là khá ít“. Do đó, không có lý do gì để so sánh TLS với SSL cả, thay vào đó, cả hai được gộp lại để tạo thành một chuỗi giao thức được cập nhật liên tục và thường xuyên dưới dạng SSL/TLS.

Giao thức TLS mã hóa tất cả các loại lưu lượng internet. Phổ biến nhất là lưu lượng website, như bạn biết trình duyệt web sẽ được kết nối thông qua TLS nếu như URL trong thanh địa chỉ bắt đầu với “https” có màu xanh và có hình một ổ khóa – nghĩa là bạn đang sử dụng một kết nối an toàn.

Tuy nhiên, TLS cũng có thể được sử dụng bởi các ứng dụng khác như email,….

SSL hoạt động như thế nào?

Mã hóa dữ liệu là yếu tố cực kỳ cần thiết để giao tiếp an toàn trên môi trường không gian mạng: nếu như dữ liệu của bạn không được mã hóa, bất kỳ ai cũng có thể chốt chặn để kiểm tra các gói tin và đọc được các thông tin của bạn như tài khoản và mật khẩu website. Phương pháp mã hóa dữ liệu an toàn nhất sử dụng kỹ thuật mã hóa đối xứng – nghĩa là phương thức mã hóa này sẽ yêu cầu có 2 khóa mật mã, thông thường là một khóa công khai (public key) và khóa còn lại là bí mật (private key). Về mặt toán học, cách các khóa này được sử dụng ra sao khá phức tạp và bạn không cần phải quan tâm, bạn chỉ cần hiểu là: khóa công khai được sử dụng để mã hóa dữ liệu và khóa bí mật được sử dụng để giải mã thông tin. Hai chìa khóa này liên quan chặt chẽ với nhau dựa trên một công thức toán học, và cực kỳ khó để có thể đảo ngược để tìm được khóa còn lại bằng kỹ thuật brute-force.

Bởi vì mật mã đối xứng liên quan đến vấn đề toán học cực kỳ phức tạp, do đó, nó yêu cầu lượng tài nguyên máy tính cực kỳ lớn, thậm chí trong một số trường hợp nó sẽ mã hóa tất cả dữ liệu trong một session duy nhất và máy tính của bạn có thể bị treo. TLS giải quyết được vấn đề như mình vừa nói bằng cách chỉ sử dụng mã hóa đối xứng vào thời điểm đầu mỗi session để mã hóa giao tiếp cuộc trò chuyện – trong đó client và server đều phải đồng ý về một khóa session duy nhất mà cả hai sẽ sử dụng để mã hóa dữ liệu kể từ thời điểm đó. Mã hóa sử dụng shared key được gọi là mã hóa đối xứng, và nó yêu cầu tính toán về chiều sâu ít hơn so với mã hóa bất đối xứng. Bởi vì khóa session đó được thiết lập bằng cách sử dụng cặp mật mã bất đối xứng – toàn bộ phiên giao tiếp sẽ an toàn hơn nhiều so với những cách khác.

Quá trình khóa session được đồng ý chấp nhận sử dụng được gọi là “handshake” hay “bắt tay“. Vì đó là thời điểm mà hai máy tính giới thiệu bản thân với nhau – và đây chính là trung tâm của giao thức TLS.

Quá trình bắt tay SSL diễn ra như thế nào?

Quá trình bắt tay diễn ra khá phức tạp, và có một số biến thể khác nhau được cho phép bởi giao thức. Các bước dưới đây cung cấp cho bạn tổng quan về cách quá trình handshake diễn ra ra sao:

1. Client liên lạc với server và yêu cầu một kết nối an toàn. Server sẽ phản hồi lại với một danh sách các bộ mã – bộ công cụ thuật toán để tạo ra kết nối mã hóa mà nó biết cách sử dụng. Client so sánh bộ công cụ thuật toán mã hóa nó nhận được với danh sách nó mà client có hỗ trợ, sau đó sẽ chọn ra một bộ và cho server biết cả hai sẽ sử dụng bộ công cụ mã hóa mà client đã chọn.

2. Server sau đó sẽ cung cấp chứng chỉ số của nó – một tài liệu điện tử được cung cấp bởi bên xác nhận thứ 3 để xác nhận danh tính server. Mình sẽ có một bài viết để giải thích về chứng chỉ số rõ ràng hơn, còn trong bài viết này mình chỉ nói sơ qua thôi, và điều quan trọng lúc này bạn cần biết là chúng có chứa khóa mật mã công khai của server. Sau khi client nhận được chứng chỉ số, nó sẽ xác nhận tính xác thực của chứng chỉ.

3. Sử dụng khóa công khai của server, client và server thiết lập khóa session mà trong đó cả hai đều sẽ sử dụng cho đến cuối session để mã hóa giao tiếp. Có một số kỹ thuật để làm điều này. Client có thể sử dụng khóa công khai để mã hóa một số ngẫu nhiên – là số sau đó sẽ được gửi tới cho server để giải mã, và cả hai sẽ sử dụng số này để thiết lập khóa phiên. Ngoài ra, hai bên cũng có thể sử dụng cơ chế khác gọi là trao đổi khóa Diffie–Hellman để thiết lập khóa phiên.

Xem thêm: Hướng dẫn cấu hình Nginx sử dụng Let’s Encrypt trên Ubuntu 18.04

Như tên gọi của nó, khóa session (session key) chỉ tốt cho quá trình trao đổi diễn ra trong một session duy nhất và không bị gián đoạn. Nếu vì một lý do nào đó mà giao tiếp giữa client và server bị ngắt – ví dụ như vấn đề về network, thì quá trình bắt tay mới sẽ được diễn ra để thiết lập một khóa session mới khi giao tiếp.

Chứng chỉ SSL là gì?

Tiếp theo chúng ta sẽ quay trở lại với khái niệm về chứng chỉ bảo mật SSL. Như mình đã trình bày và giải thích khá rõ ràng bên trên rồi, những chứng chỉ này chính là trung tâm của giao thức TLS/SSL: chúng cung cấp cho client khóa mật mã công khai để khởi tạo một kênh kết nối an toàn. Nhưng mục đích chính không chỉ là cung cấp chìa khóa, trên thực tế chúng cũng xác thực khóa liên kết với tổ chức cung cấp cho khách hàng.

Vậy chứng chỉ SSL hoạt động ra sao? Chứng chỉ số được ban hành bởi Certificate Authorities (CA) – người đóng vai trò tương đương với người cung cấp hộ chiếu để xác nhận danh tính của bạn. Các tổ chức muốn cung cấp các dịch vụ được mã hóa TLS phải mua chứng chỉ từ CA – những người này sẽ xác minh rằng các tổ chức này có phải là tổ chức mà họ công nhận có chứng chỉ hợp lệ không.

Ví dụ: nếu bạn muốn mua chứng chỉ số để bảo mật website abc.com, bạn sẽ cần phải thực hiện một số bước để chứng minh với CA rằng bạn kiểm soát domain abc.com. Bằng cách đó, nếu có bất kỳ ai kết nối đến abc.com thì sẽ nhận lại một chứng chỉ SSL hợp lệ được ban hành bởi một CA tin cậy – do đó họ sẽ có thể chắc chắn được rằng họ đang giao tiếp với chủ sở hữu thực sự hợp pháp của abc.com. Điều này giúp ngăn chặn các kỹ thuật tấn công như man-in-the-middle.

Lưu ý: mình sử dụng cụm từ “CA tin cậy” là có ý nghĩa riêng của nó. Bất kỳ ai cũng có thể tự thiết lập để trở thành một CA, vậy làm thế nào để bạn có thể biết những người nào thực hiện việc thẩm định cần thiết để xác định khách hàng của họ? May mắn ở đây là công việc đó hầu hết sẽ do các nhà sản xuất phần mềm đảm nhận. Mozilla duy trì một danh sách dài các CA mà FireFox tin tưởng, Apple, Google Chrome và Microsoft cũng duy trì các danh sách mà họ triển khai ở cấp độ hệ điều hành.

Tiêu chuẩn xác định chứng chỉ SSL được gọi là X.509. Tiêu chuẩn này cho phép các chứng chỉ mang nhiều thông tin hơn ngoài khóa công khai và danh tính đã được xác nhận của chủ sở hữu chứng chỉ.

Các phiên bản SSL/TLS mới nhất

TLS 1.2

TLS 1.2 là phiên bản giao thức mới nhất gần đây và nó đã tồn tại trong nhiều năm. Nó thiết lập một loạt các tùy chọn mật mã mới để giao tiếp. Tuy nhiên, cũng giống như các phiên bản giao thức trước đó, nó cũng cho phép các kỹ thuật mật mã cũ được sử dụng – để hỗ trợ các dòng máy tính cũ. Điều đáng lo ngại ở đây là các lỗ hổng bảo mật – vì những kỹ thuật mật mã cũ này rất dễ trở thành mục tiêu tấn công của các hacker, bởi theo thời gian, sức mạnh tính toán càng nhanh hơn với chi phí ngày càng rẻ hơn.

Đặc biệt, phiên bản TLS 1.2 đã trở nên dễ bị tấn công bởi kỹ thuật được sử dụng gọi là “man-in-the-middle“, trong đó hacker sẽ chặn các gói tin lại, đánh cắp thông tin, chỉnh sửa và gửi gói tin giả mạo đi.

TLS 1.3

Là phiên bản TLS mới nhất và hiện vẫn đang được thử nghiệm và sẽ hoàn thiện sớm thôi – giúp khắc phục rất nhiều các lỗ hổng tồn tại trong phiên bản TLS 1.2 trước đó bằng các loại bỏ đi các cơ chế mã hóa cũ. Nó cũng có khả năng tương thích ngược với TLS 1.2 – nghĩa là nó sẽ kết nối trở lại sử dụng phiên bản TLS 1.2 nếu như một trong hai bên giao tiếp không hỗ trợ phiên bản TLS 1.3. Ưu điểm khi sử dụng TLS 1.3 ở đây khi kết nối có thể quay ngược sử dụng TLS 1.2, lúc này khi hacker sử dụng kỹ thuật “man-in-the-middle” để đánh cắp gói tin thì ngay lập tức sẽ bị phát hiện và ngắt kết nối.

Vẫn có rất nhiều server hiện sử dụng phiên bản TLS 1.2, thậm chí là cũ hơn 1.2. Nếu như server của bạn đang sử dụng phiên bản TLS cũ, bạn nên nâng cấp TLS ngay lập tức lên phiên bản TLS 1.3.

5/5 (1 Review)