2.4 Tổng quan về thƣ viện mã hoá của Microsoft
2.4.3 Hàm băm và chữký số
2.4.3.1 Dữ liệu băm
Một dữ liệu băm từ văn bản luôn có độ dài cố định. Có thể gọi là digest. CryptoAPI tạo dữ liệu băm từ bất kỳ văn bảo nào. Sau đó dữ liệu băm được sử dụng như đại diện của văn bản kèm theo. Để đảm bảo tính tồn vẹn của văn bản, dữ liệu băm được gửi cùng với văn bản. Người nhận có thể tính tốn dữ liệu băm nhận được từ văn bản và so sánh với dữ liệu đã được băm gửi cùng. CryptoAPI cung cấp đối tượng CryptCreateHash, CryptHashData để tính ra dữ liệu băm.
2.4.3.2 Chữ ký điện tử
Khi người nhânh muốn kiểm tra định danh thơng báo của người gửi thì chữ ký điện tử được sử dụng. Việc ký lên một thơng báo khơng thay đổi thơng báo; nó chỉ tạo ra một chuỗi chứa chữ ký điện tử và có thể chuyển cùng với thông báo hoặc chuyển riêng. Một chữ ký điện tử là một đoạn dữ liệu nhỏ được mã hoá bằng khoá riêng của người gửi. Giải mã chữ ký sử dụng khố cơng khai của người gửi. Chữ ký điện tử được sinh ra bởi sử dụng thuật tốn ký khố cơng khai. Khố riêng mã hoá và phát sinh chữ ký và chỉ có khố cơng khai cùng cặp mới có thể giải mã và xác định tính hợp lệ của chữ ký. Được mơ tả trong hình sau:
Hình 21: Sơ đồ kiểm tra chữ ký điện tử
Để kiểm tra chữ ký thì phải có cả message và chữ ký được yêu cầu. Đầu tiên giá trị băm phải được tạo từ message với cùng cáhc chữ ký được tạo ra. Giá trị băm này được kiểm tra với chữ ký bằng các sử dụng khố cơng khai của người gửi. Nếu giá trị băm và chữ ký giống nhau, thì có thể tin tưởng rằng message được đến từ đúng người gửi đã ký và nó khơng bị làm giả. Hình 20 sau mơ tả tiến trình kiểm tra chữ ký điện tử
Hình 20: Tiến trình kiểm tra chữ ký điện tử
Một giá trị băm bao gồm một chuỗi bit có độ dài thường là 160 bit. Được tính tốn sử dụng thuật toán băm (hashing algorithm).