Các thuật toán mã hoá dùng trong SSL?

Để ngăn chặn hành vi trộm cắp dữ liệu trong quá trình truyền dữ liệu qua internet, các thuật toán mã hóa SSL được áp dụng cho mục đích mã hóa và giải mã thông tin. Bài viết này sẽ giúp bạn khám phá rõ hơn về bộ mật mã cũng như có những thuật toán nào được sử dụng trong SSL/TLS.

Mật mã là gì?

Mật mã (Cipher) là một thuật toán mã hóa được sử dụng để mã hóa và giải mã dữ liệu. Nó hoạt động bằng cách mã hóa tin nhắn gốc, văn bản gốc, thông qua các quy tắc của thuật toán (tức khóa mã) để tạo ra văn bản mã hóa (ciphertext). Bản mã này chứa tất cả thông tin của dữ liệu ban đầu nhưng xuất hiện dưới dạng một chuỗi data ngẫu nhiên. Bất cứ ai không có chìa khóa đều không thể đọc được nó.

mật mã là gì

Cipher có thể được phân biệt dựa trên 2 tiêu chí: loại khóa mã mà chúng sử dụng và cách mã hóa dữ liệu. Mật mã có thể sử dụng khóa đối xứng hoặc bất đối xứng – tức là, cùng một khóa sẽ được sử dụng cho cả mã hóa và giải mã hoặc các khóa khác nhau (public key và private key) được sử dụng. Ngoài ra, hình thức bảo mật này còn có mã hóa khối và mã hóa luồng – sẽ được giải thích rõ hơn trong phần sau của bài viết.

Bộ mật mã SSL là gì?

Bộ mật mã (Cipher suite) là một tập hợp các thuật toán mã hóa được sử dụng để bảo mật kết nối thông qua giao thức TLS hoặc SSL giữa máy khách (client) và máy chủ (server). Độ mạnh mã hóa của kết nối bảo mật SSL/TLS phụ thuộc vào cipher suite được sử dụng. 

thuật toán mã hóa

Cipher suite cung cấp các thông tin cần thiết về cách truyền đạt dữ liệu an toàn khi sử dụng HTTPS, FTPS, SMTP và các giao thức mạng khác. Bộ mật mã chỉ ra những thuật toán mã hóa mà máy chủ nên sử dụng để tạo kết nối an toàn và đáng tin cậy. Điều quan trọng cần lưu ý là bộ mật mã này đảm bảo không chỉ tính bảo mật mà còn có cả tính tương thích và hiệu suất của kết nối HTTPS.

Khi bắt đầu kết nối, máy khách và máy chủ sẽ thực hiện giao thức bắt tay (handshake), trong quá trình đó sẽ thống nhất về bộ mật mã để thiết lập kết nối HTTPS. Sau khi đã thống nhất xong, việc trao đổi khóa được thực hiện để kết nối các phần.

Tập hợp các thuật toán mã hóa thường được hiển thị dưới dạng một chuỗi dài gồm các thông tin có vẻ ngẫu nhiên – nhưng mỗi đoạn của chuỗi đó đều chứa những thông tin cần thiết. Nhìn chung, cipher suite được tạo thành từ một số thành phần chính sau:

  • Giao thức (chẳng hạn TLS 1.2 hoặc TLS 1.3)
  • Thuật toán Key exchange hoặc agreement algorithm
  • Thuật toán Digital signature (authentication) algorithm
  • Thuật toán Bulk encryption algorithm
  • Thuật toán Message authentication code algorithm (MAC)

Làm cách nào để client và server thống nhất cipher suite?

kết nối máy khách với máy chủ

Việc lựa chọn bộ thuật toán mã hóa được thống nhất trong quá trình handshake SSL ban đầu giữa máy khách và máy chủ (cuối cùng máy chủ sẽ quyết định cipher suite nào sẽ được sử dụng). 

Khi máy khách gửi hello message khi bắt đầu kết nối, một danh sách các mật mã tương thích với nó cũng được gửi kèm theo. Khi máy chủ nhận được tin nhắn, nó sẽ chọn bộ thuật toán mã hóa từ danh sách đó. Việc kết nối sau đó được thực hiện bằng cách sử dụng các thuật toán mà cả hai bên đã đồng ý.

Để hiểu về handshake SSL, hãy tưởng tượng rằng bạn đang đến một quốc gia mà không biết ngôn ngữ của nơi đó và vô cùng hoang mang khi không thể nói chuyện với người khác. Bây giờ, khi đi mua sắm tại một khu chợ địa phương, điều đầu tiên bạn cần làm là tìm hiểu xem nhân viên bán hàng có ngôn ngữ mình biết hay không. Theo cách tương tự, trình duyệt máy khách sẽ hỏi xem liệu máy chủ web đang kết nối có sử dụng cùng một bộ thuật toán mã hóa không.

Khi đi du lịch, bạn và nhân viên bán hàng có thể đồng ý sử dụng ngôn ngữ chung mà cả hai cùng biết để thảo luận về các sản phẩm được bán trong cửa hàng. Trong quá trình handshake SSL, máy khách và máy chủ sử dụng cùng một bộ cipher suite cụ thể tương thích với cả hai bên để đảm bảo kết nối an toàn.

Các thuật toán mã hóa được dùng trong SSL

Có 4 loại thuật toán mã hóa trong bộ mật mã. Mỗi loại thực hiện một vai trò khác nhau trong việc thiết lập kết nối được mã hóa an toàn. Máy khách và máy chủ có thể hỗ trợ các cipher suite khác nhau dựa trên phiên bản SSL/TLS được sử dụng. Nhiều công ty cũng có chính sách cụ thể về độ mạnh mã hóa tối thiểu cần thiết để kết nối. 

Dựa trên những yếu tố này, máy khách và máy chủ sẽ đồng ý sử dụng một bộ mật mã cụ thể.

các thuật toán mã hóa

Key Exchange hay Agreement Algorithm

Có hai loại thuật toán mã hóa ở mức cơ bản nhất – đối xứng và bất đối xứng (symmetric và asymmetric). Trong symmetric, một khóa duy nhất được sử dụng cho cả mã hóa và giải mã dữ liệu. Trong asymmetric, các khóa khác nhau được sử dụng để mã hóa (public key) và giải mã (private key) dữ liệu.

Chứng chỉ SSL/TLS sử dựng mã hóa bất đối xứng, với các khóa riêng biệt, để mã hóa và giải mã, nhằm thiết lập kênh bảo mật cho việc trao đổi dữ liệu, sau đó nó chuyển sang kết nối đối xứng.

Để thiết lập kênh bảo mật, thông tin mà cả hai bên có thể sử dụng để tạo khóa cho từng phiên (session key) phải được trao đổi một cách an toàn. Thuật toán mã hóa key exchange algorithm sẽ đảm nhiệm việc này trong quá trình thực hiện handshake.

Thông điệp client hello là bước đầu tiên của quá trình handshake SSL và bao gồm những vấn đề sau:

  • ID phiên (Session ID): Khóa để mã hóa từng phiên được đính kèm trong client hello.
  • Danh sách cipher suite máy khách: Danh sách các thuật toán mã hóa được trình duyệt máy khách hỗ trợ và gửi đến máy chủ. Server chọn mật mã mà hai bên sẽ sử dụng trong suốt phần còn lại của phiên.
  • Dữ liệu ngẫu nhiên (Random data): Dữ liệu ngẫu nhiên được thêm vào client hello để tội phạm mạng không thể xác định session key.
  • Thuật toán nén (Compression algorithm): Thuật toán được dùng để nén dữ liệu và là một phần của client hello để tăng tốc quá trình mã hóa.

Thuật toán mã hóa Key Exchange bảo vệ ID phiên hoặc khóa phiên khỏi sự tò mò của tội phạm mạng, điều này làm cho nó trở thành một phần không thể thiếu trong cipher suite. Một số thuật toán key exchange và agreement algorithm phổ biến bao gồm:

  • Rivest-Shamir-Adleman (RSA) 
  • Diffie-Hellman (DH) và Diffie-Hellman Ephemeral (DHE)
  • Cơ chế Elliptic-curve Diffie-Hellman (ECDH)

Chữ ký số Digital Signature Algorithm (DSA)

digital signature algorithm

Thuật toán chữ ký số hay DSA, còn được gọi là thuật toán xác thực, có nhiệm vụ xác thực danh tính của người gửi tin nhắn đến người nhận để đảm bảo liên lạc an toàn diễn ra với máy chủ hợp pháp. Trong TLS 1.3, thuật toán mã hóa DSA được đề xuất bao gồm RSA và ECDSA.

Máy khách và máy chủ trao đổi public key tạm thời để tính toán cùng một khóa đối xứng nhăm mã hóa tin nhắn. Các public key này không giống với public key của chứng chỉ host. Chúng được tạo ngẫu nhiên vào đầu mỗi kết nối.

Server tạo một hàm băm (hash) của public key tạm thời bằng cách sử dụng private key của mình để chứng minh cho máy khách rằng khóa tạm thời đến từ một nguồn hợp pháp. Khi kênh bảo mật được thiết lập, khóa tạm thời sẽ bị loại bỏ. Client có thể xác minh danh tính của người gửi bằng cách so sánh giá trị băm của dữ liệu và chữ ký.

Bulk Encryption Algorithm

Khi máy khách và máy chủ website ở trên cùng một trang sau khi trao đổi hoặc tạo khóa, đã đến lúc chuyển sang giao tiếp chính bằng cách nhập các thuật toán mã hóa hàng loạt (Bulk Encryption Algorithm). 

Thuật toán mã hóa hàng loạt đối xứng mã hóa đầu vào dữ liệu gốc thành đầu ra văn bản mã hóa có độ dài cố định bằng một khóa duy nhất. Do đó, bất kể độ dài của dữ liệu gốc như thế nào, thì độ dài của văn bản mã hóa sẽ như nhau.

Có hai loại mã hóa hàng loạt được sử dụng ngày nay:

  • Mã hóa luồng (Stream cipher): Mã hóa luồng tiến hành mã hóa dữ liệu mỗi lần 1 byte. Keystream được sử dụng cho mục đích mã hóa và giải mã. Một số mật mã luồng phổ biến gồm ChaCha, RC4 và Chameleon.
  • Mã hóa khối (Block cipher): Mã khóa khối tiến hành mã hóa dữ liệu thành các khối có độ dài cụ thể và chạy từng khối qua các vòng của quy trình mã hóa. Data encryption standard (DES) và triple data encryption standard (3DES) sử dụng khối 8 byte (64-bit). Advanced encryption standard (AES), thuật toán mã hóa tiêu chuẩn ngành thay thế cho các thuật toán khác, có kích thước khối là 16 byte hoặc tương đương 128 bit.

TLS 1.2 và TLS 1.3 sử dụng AES làm tiêu chuẩn mã hóa hàng loạt, có các kích thước khả dụng khác nhau – 128 bit, 192 bit hoặc 256 bit. Khóa càng lớn thì độ bảo mật càng tốt.

Mã Hash-Based Message Authentication Code (HMAC)

mã xác thực hmac

HMAC là một loại mã xác thực được sử dụng để bảo vệ tính toàn vẹn và xác thực của giao tiếp handshake. Điều này giúp ngăn chặn kẻ xấu chặn hoặc sửa đổi dữ liệu trong quá trình truyền tải khi quá trình handshake diễn ra. Điều này được thực hiện bằng cách sử dụng hàm băm mật mã cùng với khóa bí mật để xác minh rằng dữ liệu không bị thay đổi theo một cách nào đó.

Việc sử dụng cipher suite hay các thuật toán mã hóa chỉ là một phương pháp bảo mật đảm bảo an toàn cho kết nối máy chủ và máy khách. Các công ty cũng cần đảm bảo có thể bảo vệ chứng chỉ SSL/TLS trước những kẻ tấn công công nghệ cao.

Để đạt được mức bảo vệ này, các tổ chức có thể cân nhắc đến việc đầu tư vào một giải pháp hỗ trợ tự động khám phá tất cả các khóa mã hóa và chứng chỉ của mình, giám sát những “tài sản” đó để tìm dấu hiệu sử dụng sai mục đích, thu hồi những phần bị xâm phạm và gia hạn chứng chỉ trước khi hết hạn.

Hy vọng rằng những thông tin nêu trên đã giúp bạn hiểu hơn về cipher suite cũng như các thuật toán mã hóa cho SSL. Nếu có bất kỳ câu hỏi hoặc thắc mắc liên quan đến vấn đề mã hóa, vui lòng kết nối với HVN – Hệ sinh thái kiến tạo doanh nghiệp 4.0 – thông qua Hotline 024.9999.7777 để các chuyên gia của chúng tôi hỗ trợ giải đáp và phân tích.

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận