Tìm hiểu về các thuật toán trong mã hóa SSL/TLS

Đây là những gì bạn cần biết về các thuật toán đằng sau mã hóa SSL / TLS.

Nếu bạn nghiên cứu SSL và mã hóa đủ lâu, cuối cùng bạn sẽ đi qua từ “cipher” hay còn gọi là mật mã. Mật mã là một phần rất quan trọng của mã hóa.

Vậy, mật mã mã hóa (encryption ciphers) là gì?

Mật mã là thuật toán, cụ thể hơn là chúng là một tập hợp các bước thực hiện mã hóa cũng như giải mã tương ứng. Ngày nay mật mã phụ thuộc vào khả năng xử lý tiên tiến của máy tính. Tuy nhiên nó không phải là phụ thuộc hoàn toàn. Một trong những mật mã lịch sử đầu tiên nổi tiếng thuộc về Caesar – hoàng đế Rome và nhà cung cấp món salad khai vị ưa thích – người đã sử dụng nó để giao tiếp với các tướng lĩnh của mình trong các hoạt động quân sự.

Trong những năm qua, mật mã đã trở nên phức tạp hơn, nhưng logic đằng sau chúng vẫn giữ nguyên. Cho dù đó là Caesar băng qua Rubicon, mật mã Enigma khét tiếng của Thế chiến II hay một số thuật toán của ngày hôm nay – ý tưởng luôn luôn là mã hóa hoặc mã hóa một thông điệp theo cách mà chỉ có bên phát triển mới có thể đọc được.

Hai loại mật mã

Đối với tất cả các ý định và mục đích, khi chúng ta thảo luận mật mã khi chúng liên quan đặc biệt đến mã hóa SSL, có hai loại thuật toán: đối xứng và không đối xứng. Điều này thực sự đi kèm với loại mã hóa bạn sẽ thực hiện, một lần nữa, đối xứng hoặc không đối xứng.

Mã hóa đối xứng liên quan đến hai bên giống nhau. Cả hai bên có thể thực hiện cả hai chức năng: mã hóa và giải mã. Bạn thấy điều này trong khi kết nối web được mã hóa giữa trình duyệt và máy chủ. Sau khi chứng chỉ SSL đã được xác thực và bắt tay SSL hoàn tất, trình duyệt và trao đổi máy chủ “khóa phiên” đối xứng cho phép chúng giao tiếp an toàn trong suốt thời gian truy cập. Trong khi các khóa phiên này đang hoạt động, chúng đang sử dụng mật mã đối xứng.

Ngược lại, với mã hóa bất đối xứng, bạn đang nói về các khóa khác nhau với các khả năng khác nhau. Ví dụ rõ ràng nhất về điều này là cặp khóa công khai / riêng được sử dụng trong quá trình bắt tay SSL. Trong trường hợp này, một khóa mã hóa và khóa khác giải mã. Loại mã hóa này yêu cầu một loại mật mã khác – một thuật toán bất đối xứng.

Tìm hiểu kĩ hơn về 2 loại thuật toán đối xứng và bất đối xứng tại đây

Mật mã chung

Có rất nhiều thuật toán mã hóa khác nhau thường được sử dụng trong mã hóa kết hợp với nhau. Đó là bởi vì, cụ thể vì nó liên quan đến SSL, bạn không chỉ sử dụng một thuật toán đơn lẻ mà là một tập hợp các thuật toán được nhóm lại với nhau trong những gì được gọi là “Bộ mã hóa” (Cipher Suite).

Bây giờ chúng ta đã hiểu được hai loại thuật toán – đối xứng và không đối xứng – chúng ta có thể xem xét một số thuật toán mã hóa khác nhau và các chức năng mà chúng phục vụ – sau đó chúng ta sẽ nói về xây dựng một bộ mã hóa.

Dưới đây là một số ví dụ về mật mã và các thuật toán tương tự khác:

Trao đổi khóa

RSA

RSA được đặt theo tên của những người đã tạo ra nó: Rivest, Shamir và Adleman. Đây là một hệ thống mã hóa không đối xứng khá phổ biến, sử dụng số nguyên tố và có nhiều ứng dụng.

Diffie-Hellman

Được đặt tên theo Whitfield Diffie và Martin Hellman, đây là một giao thức khóa công khai được sử dụng chủ yếu để trao đổi các khóa mật mã trên các kênh công cộng. Trước các phương pháp như DH, các khóa phải được truyền dưới dạng vật lý.

Elliptic Curve Diffie-Hellman

Một giao thức thỏa thuận khóa, cung cấp cho hai bên với cặp khóa công khai để thiết lập bí mật được chia sẻ (được sử dụng trực tiếp như một khóa) một cách an toàn trên kênh công khai.

PSK

Thường được viết dưới dạng TLS-PSK, đây là một thuật toán mã hóa cung cấp thông tin liên lạc an toàn dựa trên các khóa đối xứng được chia sẻ trước giữa các bên.

Mã hóa mật mã(Encryption Ciphers)

 

AES

Chuẩn mã hóa nâng cao, còn gọi là Rijndael, là một mật mã mã hóa được NIST chấp thuận với kích thước khối 128 bit và các khóa đối xứng có độ dài 128, 192 hoặc 256 bit.

Camellia

Một mật mã khối khóa đối xứng với các khả năng và kích thước khóa tương tự như AES. Nó được phát triển tại Nhật Bản bởi NTT và Mitsubishi và được chấp thuận bởi ISO / IEC, EU và dự án CRYPTREC của Nhật Bản.

ARIA

Một mật mã khối khác tương tự như AES, ARIA được phát triển bởi một nhóm các nhà nghiên cứu ở Hàn Quốc vào năm 2003.

Tính toàn vẹn / xác thực dữ liệu

 

Mã xác thực thư dựa trên hàm băm (HMAC)

Đây là một loại xác thực thông điệp sử dụng các mật mã băm  để xác thực cả một thông điệp và đảm bảo tính toàn vẹn dữ liệu, hãy nghĩ đến SHA-256.

Mã hóa được xác thực

AE hoặc AEAD đảm bảo tính bảo mật, tính toàn vẹn và xác thực về dữ liệu trong một giao diện lập trình đơn. Thường được sử dụng kết hợp với mật mã khối.

Rõ ràng, đây là một danh sách không đầy đủ, có hàng tá mật mã khác. Nhưng điều này ít nhất sẽ cung cấp cho bạn thêm một số bối cảnh khi chúng ta bắt đầu thảo luận về các bộ mã hóa trong phần tiếp theo.

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

A Cipher Suite là một sự kết hợp của các thuật toán được sử dụng để thương lượng các thiết lập bảo mật trong quá trình bắt tay SSL / TLS. Sau khi ClientHello và ServerHello tin nhắn được trao đổi, khách hàng sẽ gửi một danh sách ưu tiên các bộ mã hóa mà nó hỗ trợ. Máy chủ sau đó sẽ phản hồi với bộ mã hóa mà nó đã chọn từ danh sách.

Các bộ mã hóa được đặt tên là các kết hợp của:

  • Thuật toán trao đổi khóa (RSA, DH, ECDH, PSK)
  • Thuật toán xác thực (RSA, DSA)
  • Thuật toán mã hóa hàng loạt (AES, Camellia, ARIA)
  • Thuật toán mã xác thực thư (SHA-256)

Vì vậy, ví dụ, đây là một ví dụ về một bộ mã hóa:

TLS _ECDHE_ RSA _ WITH_AES_128_GCM _ SHA256

Tôi đã tô màu nó để giúp bạn phân biệt giữa các thuật toán mã hóa.

TLS là giao thức. Bắt đầu với ECDHE, chúng ta có thể thấy rằng trong quá trình bắt tay, các khóa sẽ được trao đổi qua Elliptic Curve Diffie Hellman (ECDHE) tạm thời. RSA là thuật toán xác thực. AES_128_GCM là thuật toán mã hóa hàng loạt. Cuối cùng, SHA-256 là thuật toán băm.

Hầu hết các trình duyệt và máy chủ đều có danh sách các bộ mã hóa mà chúng hỗ trợ, cả hai sẽ so sánh danh sách – theo thứ tự ưu tiên – chống lại nhau trong quá trình bắt tay để xác định cài đặt bảo mật sẽ được sử dụng.

Lời cuối cùng

Tuy nhiên những điều này có thể thay đổi với TLS 1.3. Trong khi các phiên bản trước đó của SSL / TLS thông qua TLS 1.2 sử dụng phiên bản của bộ mã hóa được mô tả ở đây, trong các bộ mã hóa phiên bản 1.3 sẽ thay đổi cấu trúc vì chúng sẽ chỉ được sử dụng để thương lượng các thuật toán mã hóa và HMAC.

Do cấu trúc của 1.3 bộ mã hóa khác với các bộ mã hóa trước, chúng sẽ không thể thay thế được với các phiên bản TLS cũ hơn.

Tổng kết

Đối với những người thích đọc lướt, dưới đây là những điều quan trọng từ của bài viết:

  • Mật mã là thuật toán, tập hợp các hướng dẫn để mã hóa và giải mã thông tin. Chúng có thể đối xứng hoặc không đối xứng, tùy thuộc vào loại mã hóa mà chúng hỗ trợ.
  • Cipher Suite là một sự kết hợp có tên của mật mã được sử dụng để thương lượng các thiết lập bảo mật trong quá trình bắt tay SSL / TLS. Trong quá trình bắt tay, máy khách và máy chủ trao đổi danh sách ưu tiên của Cipher Suites và quyết định bộ được hỗ trợ tốt nhất bởi cả hai.
  • Trong TLS 1.3, cấu trúc của Cipher Suites sẽ thay đổi.
0/5 (0 Reviews)

Leave a Comment