C) Hoạt động của AH và ESP trong các chế độ (mode)
a) Giản lược thông điệp MD dựa trên hàm băm một chiều
MD là phương pháp sử dụng để phát hiện lỗi truyền dẫn, nó được thực hiện bằng các hàm băm một chiều. Các hàm băm một chiều được sử dụng để tính MD. Một hàm băm được coi là tốt nếu thoả mã các yêu cầu:
- Việc tính MD đơn giản, hiệu quả cho phép tính MD của các bản tin có kích thước nhiều GB.
- Không có khả năng tính ngược lại bản tin ban đầu khi biết giá trị MD của nó. Đây là lý do có tên gọi là hàm băm một chiều.
- Giá trị MD phải phụ thuộc vào tất cả các bit của bản tin tương ứng. Dù chỉ một bit trong bản tin bị thay đổi, thêm vào hoặc xoá bớt thì sẽ có khoảng 50% các bit trong MD sẽ thay đổi giá trị một cách ngẫu nhiên. Hàm băm có khả năng thực hiện ánh xạ message-to-digest giả ngẫu nhiên, nghĩa là với hai bản tin gần giống hệt nhau thì mã hash của chúng lại hoàn toàn khác nhau.
- Do bản chất ngẫu nhiên của hàm băm và số lượng cực lớn các giá trị hash có thể, nên hầu như không có khả năng hai bản tin phân biệt có cùng giá trị hash. Với các ứng dụng thực tế hiện nay có thể coi đầu ra của hàm băm thực hiện trên một bản tin là dấu vân tay duy nhất cho bản tin đó.
Hình 4.2: Hàm băm thông dụng MD5, SHA-1
MD có độ dài cố định hoạt động như một dấu vân tay duy nhất cho một bản tin có độ dài tuỳ ý. Với độ dài thông thường của một MD từ 128 đến 256 bit thì
có thể đại diện cho 1038÷1070 giá trị vân tay khác nhau.
Có hai hàm băm thông dụng là MD5 (Message Digest #5) và SHA (Security Hash Function). MD5 do Ron Rivest (RSA Security Inc) phát minh, tính giá trị hash 128 bit (16 Byte) từ một bản tin nhị phân có độ dài tuỳ ý. SHA được phát triển bởi NIST (US National Institute of Standards and Technology) với sự cộng tác của NSA (National Security Agency). SHA-1 tính giá trị hash 160 bit (20 Byte) từ một bản tin nhị phân có độ dài tuỳ ý. Thuật toán này tương tự như MD5 nhưng an toàn hơn vì kích thước lớn hơn. Thuật toán SHA-2 với kích thước hash là 256, 384, và 512 bit đã được NIST công bố vào tháng 10 năm 2000 để thích ứng với các khoá có độ dài lớn của thuật toán mã hoá AES.
* Cấu trúc cơ bản của hàm băm một chiều MD5/SHA
Cả MD5 và SHA đều làm việc với khối dữ liệu đầu vào 512 bit. Như vậy
bản tin ban đầu được phân thành số nguyên lần các khối dữ liệu này. Điều này
được thực hiện bằng cách thêm một trương Length 64 bit vào cuối bản tin, sau đó chèn 0÷512 bit đệm vào trước trường Length để khối dữ liệu cuối cùng có độ dài đúng 512 bit.
Hình 4.3: Cấu trúc cơ bản của MD5/SHA
Việc xử lý theo từng khối này cho phép tính giá trị hash của các bản tin lớn theo kiểu nối tiếp.
Vector khởi tạo IV (initialization Vector) và giá trị hash:
Ngoài 512 bit khối dữ liệu đầu vào, hàm băm còn yêu cầu một vector khởi tạo IV có kích thước bằng kích thước của hash (128 bit đối với MD5, 160 bit đối với SHA-1).
Trong vòng đầu tiên, IV lấy giá trị định nghĩa trước trong các chuẩn MD5, SHA. Một giá trị hash sẽ được tính dựa trên khối 512 bit đầu vào đầu tiên. Giá trị hash này đóng vai trò IV trong vòng thứ hai. Quá trình tiếp tục với giá trị hash vòng trước là IV của vòng sau. Sau khi khối dữ liệu 512 bit cuối cùng được xử lý thì giá trị hash tính được là MD của toàn bộ bản tin.