phucbui2it
Java SoftwareEngineer
Trang chủVề tôi
HomeBlogMật Mã Học Ứng Dụng: Từ Nguyên Lý Hàm Băm Đến Cơ Chế Chữ Ký Số

Mật Mã Học Ứng Dụng: Từ Nguyên Lý Hàm Băm Đến Cơ Chế Chữ Ký Số

9 tháng 2, 2026•
#security
•16 views
Mật Mã Học Ứng Dụng: Từ Nguyên Lý Hàm Băm Đến Cơ Chế Chữ Ký Số

Nếu các mô hình quản trị (CIA, AAA) được coi là "luật lệ", thì mật mã học chính là "công cụ thực thi". Trong một môi trường mà các thực thể không thể tin tưởng lẫn nhau (Zero Trust), mật mã học cung cấp các rào cản toán học để đảm bảo rằng dữ liệu không bị đọc trộm, không bị sửa đổi và nguồn gốc của nó là không thể chối cãi.

1. Hàm Băm Mật Mã Học (Cryptographic Hashing) — "Dấu vân tay" của dữ liệu

Hàm băm là một hàm số một chiều biến đổi một thông điệp có độ dài bất kỳ thành một chuỗi bit có độ dài cố định. Về mặt toán học, hàm băm được biểu diễn dưới dạng:

$$y = H(x)$$

Trong đó $x$ là dữ liệu đầu vào và $y$ là giá trị băm (digest). Để được coi là an toàn trong mật mã học, hàm băm phải thỏa mãn các tính chất:

  • Tính xác định (Deterministic): Cùng một đầu vào $x$ luôn cho ra cùng một kết quả $y$.

  • Tính kháng tiền ảnh (Pre-image resistance): Từ $y$, không thể tìm lại $x$ một cách hiệu quả về mặt tính toán.

  • Tính kháng xung đột (Collision resistance): Cực kỳ khó để tìm thấy hai đầu vào khác nhau $x_1$ và $x_2$ sao cho $H(x_1) = H(x_2)$.

  • Hiệu ứng vết dầu loang (Avalanche effect): Một thay đổi cực nhỏ ở đầu vào (dù chỉ 1 bit) sẽ dẫn đến sự thay đổi hoàn toàn ở đầu ra.

Ứng dụng: Hàm băm được sử dụng để kiểm tra Tính toàn vẹn (Integrity). Trong các giao thức hiện đại, nó là thành phần cốt lõi để tạo ra các bản tóm tắt dữ liệu trước khi thực hiện ký số.


2. Mã Hóa (Encryption) — Rào cản của Tính Bảo Mật

Mã hóa là quá trình sử dụng thuật toán và khóa (Key) để biến đổi thông tin từ dạng tường minh (plaintext) sang dạng không thể đọc được (ciphertext).

2.1 Mã hóa đối xứng (Symmetric Encryption)

Sử dụng cùng một khóa cho cả quá trình mã hóa và giải mã.

$$C = E(k, P) \implies P = D(k, C)$$

  • Ưu điểm: Tốc độ xử lý cực nhanh, phù hợp cho dữ liệu khối lượng lớn.

  • Thách thức: Vấn đề trao đổi khóa an toàn (Key Exchange) giữa các bên.

2.2 Mã hóa bất đối xứng (Asymmetric Encryption)

Sử dụng một cặp khóa: Public Key (công khai) và Private Key (bí mật).

  • Nếu mã hóa bằng Public Key, chỉ có Private Key tương ứng mới giải mã được.

  • Dựa trên các bài toán toán học khó (như phân tích số nguyên tố lớn trong RSA hoặc Logarithm rời rạc trong Elliptic Curve Cryptography - ECC).


3. Chữ Ký Số (Digital Signature) — Xác thực và Chống chối bỏ

Chữ ký số là sự kết hợp tinh hoa giữa Hàm băm và Mã hóa bất đối xứng. Đây là cơ chế quan trọng nhất để thiết lập sự tin cậy trong các giao thức như OIDC hay SAML.

Quy trình tạo chữ ký (Signing):

  1. Băm: Thông điệp $M$ được đưa qua hàm băm để tạo ra bản tóm tắt $h = H(M)$.

  2. Ký: Người gửi sử dụng Private Key của mình ($K_{priv}$) để mã hóa bản tóm tắt đó:

    $$S = E_{priv}(h)$$

    Kết quả $S$ chính là chữ ký số được đính kèm vào thông điệp.

Quy trình xác minh (Verification):

  1. Người nhận dùng Public Key của người gửi ($K_{pub}$) để giải mã chữ ký $S$, thu được mã băm gốc $h_{original}$.

  2. Người nhận tự băm thông điệp nhận được để có mã băm thực tế $h_{received}$.

  3. So sánh: Nếu $h_{original} = h_{received}$, thông điệp được xác nhận là toàn vẹn và thực sự đến từ người sở hữu Private Key.


4. Tổng kết: Từ công cụ toán học đến niềm tin hệ thống

Mật mã học không giải quyết các vấn đề về luồng nghiệp vụ, nhưng nó cung cấp các "nguyên tử" bảo mật:

  • Hashing đảm bảo dữ liệu không bị sửa đổi dọc đường.

  • Asymmetric Encryption cho phép thiết lập kênh truyền bí mật mà không cần gặp mặt trao đổi khóa trước.

  • Digital Signature cho phép một bên khẳng định danh tính và nội dung của mình một cách không thể phủ nhận.

Sự kết hợp của các công cụ này chính là nền tảng để tạo ra các thực thể dữ liệu tự chứa như JWT (JSON Web Token) mà chúng ta sẽ phân tích sâu ở kỳ tới.

DANH MỤC

SERIES

TỪ KHÓA

MỚI NHẤT

Built by PhucBui2. The source code is available on GitHub.

security7Database5database4backend3spring1java1indexing1performance-tuning1System Design1Backend1
01

[OAuth] Bài 2: Khóa chặt Access Token với DPoP và Refresh Token Rotation

1/3/2026
02

[OAuth] Bài 1: Khai tử Implicit Grant & Kỷ nguyên bắt buộc của PKCE

1/3/2026
03

[OAuth] Bài 0: Vì sao những kiến thức bảo mật bạn biết có thể đã lỗi thời?

1/3/2026
04

[Series] Database Internals - Bài 2: Giải mã "Thùng sách" – Nghệ thuật sắp xếp Slotted Page Layout

24/2/2026
05

[Series] Database Internals - Bài 1: Tại sao RDBMS lưu dữ liệu khác với File thông thường?

23/2/2026
Database5Security4
The Database Internals5Mastering Modern OAuth3Modern Identity Architecture1