Cơ bản về mật mã học (2)


Xem thêm:
Cơ bản về mật mã học – Phần 1
Cơ bản về mật mã học – Phần 2

————-

Ký bất đối xứng (asymmetric signing)

Các thuật toán bất đối xứng có thể được dùng để kiểm tra dữ liệu có bị thay đổi hay không và xác minh nhận dạng của bên đã tạo ra dữ liệu đó. Trong trường hợp này, vai trò của khóa công khai và khóa bí mật được hoán đổi: dùng khóa bí mật để mã hóa dữ liệu (nói chính xác hơn là tạo chữ ký) và dùng công khai giải mã dữ liệu (nói chính xác hơn là kiểm tra chữ ký)

Việc chứng minh nhận dạng của người tạo ra dữ liệu đạt được là vì chỉ có người đó mới truy cập được tới khóa bí mật. Dĩ nhiên, điều này nảy sinh thêm vấn đề là làm sao bảo vệ cho khóa bí mật. Lưu trữ khóa bí mật trên các thiết bị phần cứng như thẻ thông minh giúp đảm bảo an toàn hơn là lưu trữ nó trong kho chứa chứng chỉ thông thường.

Hình dưới đây thể hiện quá trình ký bất đối xứng giúp xác minh nhận dạng của bên gửi dữ liệu và phát hiện dữ liệu bị chỉnh sửa như thế nào

 

  1. Dữ liệu ở dạng bản rõ được truyền vào cho thuật toán mã hóa bất đối xứng sử dụng khóa bí mật của bên gửi làm khóa mã hóa. Kết quả tạo ra là bản mã của dữ liệu gốc.
  2. Bản mã được gửi tới bên nhận.
  3. Bên nhận dữ liệu lấy về khóa công khai của bên gửi. Khóa công khai có thể được phân phát ở dạng bản rõ.
  4. Bên nhận giải mã bản mã sử dụng khóa công khai của bên gửi. Kết quả là bản rõ ban đầu của dữ liệu được tạo bởi bên gửi.

Việc giải mã thành công bằng khóa công khai của bên gửi xác minh rằng dữ liệu được tạo bởi chính bên gửi đó chứ không phải ai khác. Nó cũng chứng minh rằng dữ liệu không bị chỉnh sửa trong quá trình truyền nhận vì nếu có bất kỳ thay đổi nào sẽ dẫn tới quá trình giải mã bị thất bại.

Kết hợp mã hóa đối xứng và bất đối xứng

Thực tế là hầu hết các hệ thống đều ứng dụng kết hợp giữa mã hóa đối xứng và bất đối xứng để khai thác những điểm mạnh của mỗi phương pháp. Khi được kết hợp thì:

  • Mã hóa đối xứng được dùng để chuyển bản rõ sang bản mã vì ưu điểm của nó là tốc độ xử lý nhanh với một khối dữ liệu lớn.
  • Mã hóa bất đối xứng được dùng để trao đổi khóa đối xứng được dùng để mã hóa ở trên. Điều này lợi dụng ưu điểm tính an toàn cao của mã hóa bất đối xứng khi đảm bảo rằng chỉ có người nhận thích hợp sở hữu khóa bí mật mới có thể giải mã ra khóa đối xứng.

Hình dưới đây thể hiện quá trình các bước xảy ra khi sử dụng phương pháp kết hợp này:

 

  1. Bên gửi nhận được khóa công khai của bên nhận.
  2. Bên gửi tạo một khóa đối xứng và sử dụng nó để mã hóa dữ liệu gốc ở dạng bản rõ.
  3. Khóa đối xứng được mã hóa bằng khóa công khai của bên nhận để bảo vệ nó khỏi bị đọc trộm trong quá trình truyền đi.
  4. Khóa đối xứng được mã hóa và dữ liệu ở dạng bản mã được gửi tới bên nhận thích hợp.
  5. Bên nhận sử dụng khóa bí mật của họ để giải mã ra khóa đối xứng.
  6. Bản mã sẽ được giải mã bằng khóa đối xứng để bên nhận có được dữ liệu gốc ở dạng bản rõ do bên gửi tạo ra.

Ký số dữ liệu

Ba mục đích để sử dụng mật mã là: giữ bí mật cho dữ liệu, phát hiện nếu dữ liệu bị chỉnh sửa, và chứng minh nguồn gốc của dữ liệu. Mặc dù mã hóa có thể giúp đảm bảo bí mật và bảo vệ dữ liệu khỏi bị chỉnh sửa nhưng chỉ có áp dụng ký số mới xác minh được nguồn gốc của dữ liệu. Ngoài ra, việc ký số còn giúp nhận dạng xem dữ liệu có bị chỉnh sửa hay không. Việc ký số giúp bảo vệ dữ liệu theo cách sau:

  • Quá trình ký số sử dụng một thuật toán băm (hash) để xác định xem dữ liệu gốc có bị chỉnh sửa hay không.
  • Một chữ ký số sẽ được áp dụng lên chuỗi kết quả của hàm băm (hay giá trị băm) để giúp nhận diện xem ai đã ký lên giá trị băm đó. Điều này khiến người đã ký lên giá trị băm không thể chối bỏ việc làm đó của họ vì chỉ có họ mới truy cập được vào khóa bí mật được dùng để ký lên giá trị băm. Thuật ngữ chống chối bỏ (non-repudiation) nhằm ám chỉ việc người ký không thể từ chối chữ ký là của họ.

Quá trình băm

Một thuật toán băm nhận một tài liệu hay thông điệp ở dạng bản rõ làm đầu vào và tạo ra kết quả là một giá trị có kích thước cố định được gọi là giá trị băm (hash value, message digest, digest hoặc thumbprint). Trên thực tế, vẫn có kỹ thuật để tạo ra cùng một giá trị băm từ hai nguồn dữ liệu đầu vào khác nhau. Dẫu vậy thì về mặt toán học thì chuyện này là không thể.

Các thuật toán băm

Dưới đây là các thuật toán băm được dùng phổ biến.

  • Message Digest 5 (MD5): thuật toán này nhận vào thông điệp có kích thước bất kỳ và tạo ra giá trị băm dài 128 bit.
  • Secure Hash Algorithm (SHA1): thuật toán này nhận vào dữ liệu có kích thước nhỏ hơn 2­64 bit và tạo ra giá trị băm dài 160 bit.

Mặc dù SHA1 chậm hơn chút so với MD5 nhưng lại an toàn hơn khi rất khó để tìm được hai nguồn dữ liệu đầu vào khác nhau nếu đi qua thuật toán SHA1 lại có cùng giá trị băm.

Kết hợp thuật toán băm và ký bất đối xứng

Hầu hết các ứng dụng đều thực hiện ký số bằng cách kết hợp giữa ký bất đối xứng và thuật toán băm như được thể hiện trong hình dưới đây:

 

  1. Bên A có nguồn dữ liệu ở dạng bản rõ (M).
  2. Bên A chạy một thuật toán băm xuyên qua bản rõ M để ra được một giá trị băm a’.
  3. Giá trị băm a’ được mã hóa sử dụng khóa bí mật của bên A.
  4. Bản rõ M cùng với giá trị băm a’ đã mã hóa được gửi tới bên B.
  5. Bên B sử dụng khóa công khai của bên A để giải mã giá trị băm đã mã hóa.
  6. Bên B chạy cùng thuật toán băm mà bên A sử dụng ở bước 2 để tạo ra giá trị băm b’ từ bản rõ M.
  7. Tiến hành so sánh hai giá trị băm a’ và b’. Nếu chúng khác nhau thì chứng tỏ bản rõ M hoặc giá trị băm a’ đã bị thay đổi trong quá trình truyền nhận. Ngược lại nếu chúng giống nhau thì bên B có thể tin cậy là dữ liệu gốc không bị thay đổi và rằng nguồn gốc của dữ liệu là do bên A gửi.

–manthang

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s