EP 2: Mã Hóa Đối Xứng Và Bất Đối Xứng

Giới thiệu

Trong bảo mật web, mã hóa có thể được triển khai theo nhiều cách khác nhau. Hai loại phổ biến nhất mà lập trình viên web thường gặp là mã hóa đối xứng (symmetric)mã hóa bất đối xứng (asymmetric). Cả hai đều có mục tiêu chung là bảo vệ dữ liệu, nhưng cách hoạt động lại rất khác nhau.


1. Mã hóa đối xứng: Một chìa khóa cho tất cả

Trong mã hóa đối xứng, cùng một khóa được dùng để mã hóagiải mã dữ liệu. Phương pháp này nhanh, hiệu quả, và phù hợp cho việc mã hóa khối lượng lớn thông tin.

Ví dụ thực tế

  • Hãy tưởng tượng bạn và một người bạn đều có bản sao của cùng một chìa khóa két sắt. Bạn khóa tài liệu vào két (mã hóa), gửi két cho bạn, và người đó mở bằng chìa của mình (giải mã).
  • Nguy cơ: Nếu kẻ khác có được chìa khóa này, họ sẽ mở được tất cả.

Ứng dụng

  • Lưu trữ dữ liệu
  • Hệ thống nội bộ

Ưu điểm

  • Nhanh và hiệu quả
  • Thích hợp cho việc mã hóa tệp tin, cơ sở dữ liệu, hoặc bản sao lưu

Nhược điểm

  • Việc phân phối khóa có rủi ro
  • Nếu khóa bị lộ, toàn bộ dữ liệu sẽ bị giải mã

Thuật toán phổ biến

  • AES (Advanced Encryption Standard): được dùng rộng rãi hiện nay
  • ChaCha20: nhanh, đặc biệt hữu ích cho mobile và IoT

2. Mã hóa bất đối xứng: Sử dụng một cặp khóa

Mã hóa bất đối xứng sử dụng hai khóa khác nhau:

  • Khóa công khai (public key): để mã hóa
  • Khóa riêng tư (private key): để giải mã

Bạn có thể chia sẻ khóa công khai cho bất kỳ ai, nhưng khóa riêng tư phải được giữ bí mật.

Ví dụ thực tế

  • Hãy hình dung một hòm thư công cộng. Ai cũng có thể bỏ thư vào (mã hóa bằng khóa công khai), nhưng chỉ chủ nhân có chìa khóa (khóa riêng tư) mới mở và đọc được thư.

Ứng dụng

  • Giao tiếp an toàn
  • Trao đổi khóa
  • Chứng chỉ số, HTTPS, bảo mật email

Ưu điểm

  • An toàn khi chia sẻ khóa qua internet
  • Được sử dụng rộng rãi cho chứng chỉ số và kết nối web an toàn

Nhược điểm

  • Chậm hơn mã hóa đối xứng
  • Không thích hợp để mã hóa trực tiếp các tệp tin lớn

Thuật toán phổ biến

  • RSA (Rivest–Shamir–Adleman): được sử dụng rộng rãi trong kết nối web bảo mật
  • ECC (Elliptic Curve Cryptography): mới hơn, nhanh hơn, an toàn hơn với khóa ngắn hơn

3. Chúng phối hợp như thế nào?

Trong thực tế, lập trình web thường kết hợp cả hai loại mã hóa để tận dụng ưu điểm của mỗi loại.

Ví dụ: khi bạn truy cập một website qua HTTPS:

  1. Website chia sẻ khóa công khai (asymmetric).
  2. Trình duyệt của bạn tạo ra một khóa đối xứng ngẫu nhiên.
  3. Trình duyệt mã hóa khóa đối xứng này bằng khóa công khai và gửi lên server.
  4. Server dùng khóa riêng tư để giải mã và lấy được khóa đối xứng.
  5. Từ đó, cả trình duyệt và server dùng chung khóa đối xứng cho việc trao đổi dữ liệu nhanh chóng.

👉 Sự kết hợp này mang lại cả hai lợi ích: trao đổi khóa an toàn (asymmetric) + mã hóa nhanh và hiệu quả (symmetric). Hiểu rõ cách chúng hoạt động và bổ trợ cho nhau là nền tảng quan trọng để xây dựng các ứng dụng web hiện đại an toàn.


Tham khảo

Bài viết này được biên soạn lại từ khóa học Encryption Basics for Web Developers tại liên kết: https://trainingportal.linuxfoundation.org/courses/encryption-basics-for-web-developers