Chương 3: BẢO MẬT HỆ THỐNG PHẦN MỀM TRONG .NET
3.2. Bảo mật trong NET
3.2.4. Thư viện bảo mật trong NET
.NET Framework cung cấp triển khai nhiều thuật toán mã hóa tiêu chuẩn, nó được chia thành hai nhóm chính [2, 7]:
3.2.4.1. Mã hóa
Trong mật mã học, mã hóa là quá trình mã hóa thông điệp hoặc thông tin sang dạng hiển thị khác sử dụng thuật toán + khóa, do vậy chỉ các bên được ủy quyền mới có thể giải mã và những người không được ủy quyền thì không thể giải mã. Các dạng mã hóa bao gồm: hàm băm, mã hóa khóa đối xứng, mã hóa khóa khóa công khai.
a) Hàm băm (Hash)
Sử dụng thuật toán Hash để đưa ra một chuỗi cố định từ một thông điệp có độ dài bất kỳ. Khi sử dụng thuật toán này, xung đột giá trị băm rất hiếm khi xảy ra, chuỗi mã hóa không thể giải mã thành chuỗi ban đầu do không sử dụng khóa.
Các thuật toán mã hóa bao gồm: MD5, SHA-1, SHA256, SHA512,… Các thư viện trong .NET hỗ trợ các thuật toán trên:
MD5CryptoServiceProvider
SHA1CryptoServiceProvider
SHA356CryptoServiceProvider
SHA512CryptoServiceProvider
b) Mã hóa khóa đối xứng
Trong mã khóa đối xứng, sử dụng 1 khóa dùng chung để mã hóa và giải mã. Trong loại mã hóa này, khóa được giữ bí mật và chỉ được biết đến với các bên mã hóa (người gửi) và giải mã (người nhận).
Trong mật mã khóa đối xứng có 5 thành phần (Hình 3.12), đó là
Plainttext: Bản rõ
Ciphertext: Bản mã
Encryption algorithm: Thuật toán mã hóa
Decription algorithm: Thuật toán giải mã
KEY: Khóa bí mật
Các thuật toán mã hóa bao gồm: 3DES, Rijndael (AES), blowfish,… Các thư viện trong .NET hỗ trợ các thuật toán trên:
AesCryptoServiceProvider AesManaged DESCryptoServiceProvider RC2CryptoServiceProvider RijndaelManaged TripleDESCryptoServiceProvider
Các lưu ý khi thực hiện tạo khóa mật mã hóa khóa đối xứng an toàn:
Khóa tốt nhất là một số nguyên tố ngẫu nhiên.
Sử dụng thuật toán hàm băm (MD5, SHA) để tạo khóa.
Sử dụng khóa băm HMAC để sinh khóa.
b) Mã hóa khóa công khai (Mã hóa bất đối xứng)
Trong mã khóa công khai, sử dụng hai khóa để cùng tạo nên một cặp chìa khóa (public key và private key). Một trong những khóa này từ cặp được sử dụng để mã hóa và khóa còn lại để giải mã. Một trong những khóa này được giữ bí mật và khóa còn lại được công khai cho mọi người sử dụng, đây là lý do tại sao nó được đặt tên là mật mã khóa công khai. Vì có hai khóa khác nhau được sử dụng, đây còn được gọi là mật mã khóa bất đối xứng.
Hình 3.13b: Mã hóa với Private key và giải mã với Public key.
Trong mật mã khóa công khai có 6 thành phần (Hình 2.5a và 2.5b), đó là:
Plaintext: Bản rõ
Ciphertext: Bản mã
Encryption algorithm: Thuật toán mã hóa
Decryption algorithm: Thuật toán giải mã
Public key: khóa công khai, khóa này có thể dùng để mã hóa và giải mã
Private key: khóa bí mật, khóa này có thể dùng để mã hóa và giải mã
Các thuật toán mã hóa bao gồm: RSA, DSA. Các thư viện trong .NET hỗ trợ các thuật toán trên:
DSACryptoServiceProvider
RSACryptoServiceProvider
ECDiffieHellmanCng
ECDsaCng
Các giải thuật tiêu biểu của mật mã hóa khóa công khai:
Thuật toán mã hóa RSA
Các kỹ thuật mã hóa đường cong Elliptic
Lưu ý khi thực hiện tạo khóa mật mã khóa công khai an toàn, sử dụng số nguyên tố ngẫu nhiên đủ lớn để tạo ra cặp khóa công khai và bí mật.
3.2.3.5. Chữ ký số
Chữ ký số là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video…) nhằm mục đích xác định người chủ của dữ liệu đó. Chữ ký số mang một số ích lợi:
Khả năng xác định nguồn gốc của dữ liệu.
Tính toàn vẹn dữ liệu.
Tính không thể phủ nhận của dữ liệu.