Giải thích chi tiết về RSA, Chữ ký số, Hàm băm MD5 và Diffie-Hellman

Tài liệu này cung cấp cái nhìn toàn diện về thuật toán RSA, chữ ký số, hàm băm MD5 và thuật toán Diffie-Hellman, bao gồm khái niệm, cách hoạt động, ví dụ minh họa và ứng dụng thực tế. Mục tiêu là giúp người dùng hiểu rõ cách các công nghệ này được sử dụng trong bảo mật thông tin, đặc biệt trong xác minh danh tính, bảo vệ dữ liệu và trao đổi khóa an toàn.

1. Thuật toán RSA

1.1. RSA là gì?

RSA là một thuật toán mã hóa khóa công khai, được sử dụng rộng rãi trong bảo mật thông tin như mã hóa dữ liệu và tạo chữ ký số.

  • Nguyên lý: Sử dụng cặp khóa gồm khóa công khai (public key) để mã hóa và khóa riêng (private key) để giải mã.

1.2. Cách hoạt động của RSA

  • Bước 1: Tạo cặp khóa RSA
    • Chọn hai số nguyên tố lớn pq (ví dụ: p = 61, q = 53).
    • Tính n = p * q (modulus): n = 61 * 53 = 3233.
    • Tính hàm Euler φ(n) = (p-1) * (q-1): φ(n) = 60 * 52 = 3120.
    • Chọn số e (số mũ công khai) sao cho 1 < e < φ(n)e nguyên tố cùng nhau với φ(n) (nghĩa là ước chung lớn nhất của eφ(n) là 1).

      Chi tiết cách chọn e với thuật toán Euclid

      • Điều kiện chọn e:
        • 1 < e < φ(n)
        • GCD(e, φ(n)) = 1
      • Thuật toán Euclid để tính GCD:
        • Cho hai số ab (lần lượt là φ(n)e).
        • Lặp lại:
          • Chia a cho b, lấy nguyên dư: a = b * q + r (q là thương nguyên của phép chia a / b, r là phần dư hay a % b)
          • Gán a = b, b = r.
          • Tiếp tục cho đến khi r = 0.
        • GCD là giá trị b cuối cùng (trước khi r bằng 0).
      • Ví dụ chọn e với φ(n) = 3120:
        Giá trị e thử Các bước tính GCD GCD với φ(n) = 3120 Kết luận
        3 Bước 1: 3120 = 3 * 1040 + 0 (dư = 0) 3 GCD(3, 3120) = 3 ≠ 1, không thỏa mãn
        17 Bước 1: 3120 = 17 * 183 + 9 (dư = 9)
        Bước 2: 17 = 9 * 1 + 8 (dư = 8)
        Bước 3: 9 = 8 * 1 + 1 (dư = 1)
        Bước 4: 8 = 1 * 8 + 0 (dư = 0)
        1 GCD(17, 3120) = 1, thỏa mãn
        65537 Không cần tính GCD vì 65537 > 3120 - Không thỏa mãn e < φ(n), không dùng được

        Quyết định: Chọn e = 17 vì thỏa mãn cả hai điều kiện: 1 < 17 < 3120GCD(17, 3120) = 1.

      Giá trị e thử Điều kiện 1 < e < φ(n) GCD với φ(n) = 3120 Thỏa mãn?
      3 3 Không
      17 1
      65537 Không - Không
      Lưu ý:
      • Chọn e nhỏ như 3 có thể dẫn đến các cuộc tấn công nếu thông điệp không được đệm (padding) đúng cách. Trong thực tế, e = 65537 là lựa chọn phổ biến vì tính an toàn và hiệu quả.
      • Thuật toán Euclid rất hiệu quả để kiểm tra GCD, đặc biệt với các số lớn trong RSA thực tế.
    • Chi tiết cách chọn d với thuật toán Euclid mở rộng

      • Khởi tạo:
      • R1 = φ(n)
      • R2 = e
      • r là số dư của phép chia R1/R2
      • q là thương của phép chia R1/R2
      • T1 = 0
      • T2 = 1
      • t = T1-q*T2

      Để tìm d (số mũ bí mật) sao cho 17 * d ≡ 1 mod φ(n) với e = 17φ(n) = 3120, ta sử dụng thuật toán Euclid mở rộng. Bảng dưới đây mô tả các bước tính GCD(3120, 17) và các hệ số T1, T2, t để tìm d.

      q R1 R2 r T1 T2 t
      183 3120 17 9 0 1 -183
      1 17 9 8 1 -183 184
      1 9 8 1 -183 184 -367
      8 8 1 0 184 -367 3120
      - 1 0 - -367 3120 -

      Ta có T1 = -367, nghĩa là d = -367. Tuy nhiên, trong RSA, d cần là số dương. Do đó, ta chuyển d thành số dương bằng cách:
      d = φ(n) + (-367) = 3120 + (-367) = 3120 - 367 = 2753
      Kết quả: d = 2753 là số mũ bí mật.

    • Kết quả:
      • Khóa công khai: (e, n) = (17, 3233).
      • Khóa riêng: (d, n) = (2753, 3233).
  • Bước 2: Mã hóa, giải mã
Thao tác Công thức Ví dụ
Mã hóa c = m^e mod n 123^17 mod 3233 = 855
Giải mã m = c^d mod n 855^2753 mod 3233 = 123
Lưu ý: Trong thực tế, pq phải là số nguyên tố rất lớn (thường 2048 bit hoặc hơn) để đảm bảo an toàn. Các số nhỏ trong ví dụ chỉ dùng cho mục đích minh họa.

2. Chữ ký số

2.1. Chữ ký số là gì?

Chữ ký số (digital signature) là một dạng chữ ký điện tử sử dụng thuật toán mã hóa (như RSA) để xác minh danh tính người gửi và đảm bảo tính toàn vẹn của thông điệp. Nó giúp ngăn chặn tấn công giả mạo (man-in-the-middle).

  • Mục đích: Xác minh người gửi, đảm bảo thông điệp không bị thay đổi.
  • Ứng dụng: Ký hợp đồng điện tử, xác minh phần mềm, bảo mật giao dịch ngân hàng.

2.2. Cách hoạt động của chữ ký số với RSA

Chữ ký số sử dụng cặp khóa RSA với khóa bí mật dùng để ký và khóa công khai để xác minh.

Thao tác Công thức Ví dụ
Tạo chữ ký s = m^d mod n 6^2753 mod 3233 = 2902
Xác minh chữ ký m = s^e mod n 2902^17 mod 3233 = 6

3. Hàm băm MD5

3.1. MD5 là gì?

MD5 (Message Digest Algorithm 5) là một hàm băm tạo ra giá trị băm 128-bit (thường biểu diễn dưới dạng 32 ký tự HEX) từ dữ liệu đầu vào bất kỳ.

  • Đặc điểm: Nhanh, dễ tính toán, nhưng không an toàn cho bảo mật cao do dễ bị tấn công va chạm (collision).
  • Ứng dụng: Kiểm tra tính toàn vẹn của tệp, lưu trữ mật khẩu (hiện ít dùng), hỗ trợ chữ ký số.

3.2. Cách hoạt động của MD5

MD5 xử lý dữ liệu đầu vào qua các bước sau:

  • Chuẩn bị dữ liệu (Padding): Dữ liệu được bổ sung để độ dài chia hết cho 512 bit. Thêm bit "1", các bit "0", và 64 bit cuối ghi độ dài dữ liệu gốc.
  • Chia khối: Dữ liệu được chia thành các khối 512-bit để xử lý độc lập.
  • Khởi tạo bộ đệm: Sử dụng 4 biến 32-bit (A, B, C, D) với giá trị khởi tạo cố định: A=0x67452301, B=0xEFCDAB89, C=0x98BADCFE, D=0x10325476.
  • Xử lý từng khối: Mỗi khối 512-bit được chia thành 16 phần 32-bit. Thực hiện 64 bước tính toán qua 4 vòng, sử dụng phép toán bit (AND, OR, XOR, NOT), hằng số, và xoay vòng giá trị.
  • Tạo giá trị băm: Cộng giá trị A, B, C, D sau xử lý vào giá trị ban đầu, tạo ra giá trị băm 128-bit (32 ký tự HEX).
  • Ví dụ: Băm số 3:
    • Kết quả: eccbc87e4b5ce2fe28308fd9f2a7baf3.
Đầu vào Giá trị băm MD5
3 eccbc87e4b5ce2fe28308fd9f2a7baf3
Hello 8b1a9953c4611296a827abf8c47804d7
Lưu ý: MD5 không còn an toàn cho các ứng dụng bảo mật (như chữ ký số hoặc lưu trữ mật khẩu) do đã bị phát hiện có khả năng tạo va chạm. Các hàm băm hiện đại như SHA-256 hoặc SHA-3 nên được sử dụng thay thế.

4. Thuật toán Diffie-Hellman

4.1. Diffie-Hellman là gì?

Diffie-Hellman (DH) là một thuật toán trao đổi khóa, cho phép hai bên thiết lập một khóa bí mật chung qua một kênh không an toàn. Khóa này có thể được sử dụng cho mã hóa đối xứng (như DES).

4.2. Cách hoạt động của Diffie-Hellman

Diffie-Hellman thực hiện trao đổi khóa qua các bước sau:

  • Thỏa thuận các tham số công khai: Chọn một số nguyên tố lớn p (modulus) và một số nguyên g (cơ số, thường nhỏ) là tham số công khai mà cả hai bên biết.
  • Chọn khóa riêng: Mỗi bên (Alice và Bob) chọn một số bí密 a (cho Alice) và b (cho Bob).
  • Tính toán giá trị công khai:
    • Alice tính A = g^a mod p và gửi A cho Bob.
    • Bob tính B = g^b mod p và gửi B cho Alice.
  • Tính khóa bí mật chung:
    • Alice tính K = B^a mod p.
    • Bob tính K = A^b mod p.
    • Do B^a mod p = g^(b*a) mod p = g^(a*b) mod p = A^b mod p, cả hai bên sẽ có cùng khóa bí mật K.
  • Ví dụ: Với p = 23, g = 5, Alice chọn a = 6, Bob chọn b = 15:
    • Alice tính A = 5^6 mod 23 = 8 và gửi cho Bob.
    • Bob tính B = 5^15 mod 23 = 19 và gửi cho Alice.
    • Alice tính K = 19^6 mod 23 = 2.
    • Bob tính K = 8^15 mod 23 = 2.
    • Kết quả: Cả hai có khóa bí mật chung K = 2.
Thao tác Alice Bob
Khóa riêng a = 6 b = 15
Giá trị công khai A = 5^6 mod 23 = 8 B = 5^15 mod 23 = 19
Khóa bí mật chung K = 19^6 mod 23 = 2 K = 8^15 mod 23 = 2
Lưu ý: Diffie-Hellman chỉ dùng để trao đổi khóa, không mã hóa dữ liệu trực tiếp. Để đảm bảo an toàn, các tham số pg cần đủ lớn, và cần bảo vệ chống lại các cuộc tấn công như man-in-the-middle bằng cách sử dụng chữ ký số hoặc chứng chỉ.

Quay lại trang chủ

Web hosting by Somee.com