CHƯƠNG 2 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
3.3 Galois Counter Mode (GCM)
3.3.2 Các yếu tố của GCM
Các yếu tố của GCM và các ký hiệu, yêu cầu liên quan được giới thiệu trong các phần dưới đây. Mật mã khối và khóa cơ bản được thảo luận. Các yếu tố dữ liệu của mã hóa xác thực và các hàm chức năng giải mã xác thực của GCM cũng sẽ được giới thiệu.
Các hàm mật mã sơ khai để bảo mật và xác thực cũng được thảo luận dưới đây [83].
3.3.2.1 Block Cipher
Các hoạt động của GCM phụ thuộc vào việc lựa chọn một mật mã khối khóa đối xứng cơ bản và do đó có thể được coi là một chế độ hoạt động của mật mã khối. Khóa GCM là khóa mật mã khối (gọi tắt là khóa). Đối với bất kỳ khóa đã cho nào, mật mã khối bên dưới của chế độ hoạt động bao gồm hai hàm là nghịch đảo của nhau [83].
41 Sự lựa chọn mật mã khối bao gồm việc chỉ định một trong hai chức năng của mật mã khối là chức năng mã hóa chuyển tiếp, như trong đặc tả giải thuật AES [83]. GCM không sử dụng chức năng mã hóa ngược (inverse cipher function).
Hàm mật mã chuyển tiếp là một hoán vị trên các chuỗi bit có độ dài cố định; các chuỗi được gọi là các khối (block). Chiều dài của một khối được gọi là kích thước khối.
Khóa được ký hiệu là K và chức năng mã hóa chuyển tiếp kết quả của mật mã khối được ký hiệu là 𝐶𝐼𝑃𝐻𝐾.
Mật mã khối cơ bản phải được phê duyệt, kích thước khối phải là 128 bit và kích thước khóa tối thiểu là 128 bit. Khóa sẽ được tạo đồng nhất một cách ngẫu nhiên hoặc gần đồng nhất một cách ngẫu nhiên, tức là, để mỗi khóa có thể có khả năng được tạo ra gần như bằng nhau. Do đó, khóa sẽ là duy nhất và không lặp lại với xác suất cao. Khóa phải bí mật và sẽ được sử dụng riêng cho GCM với mật mã khối đã chọn. Các yêu cầu bổ sung về việc thiết lập và quản lý khóa sẽ được trình bày trong phần sau [83].
3.3.2.2 Hai chức năng của GCM
Hai chức năng của GCM bao gồm mã hóa xác thực (Authenticated encription) và giải mã xác thực (Authenticated decryption). Chức năng mã hóa xác thực sẽ mã hóa dữ liệu và tính toán thẻ xác thực trên dữ liệu cần mã hóa và cả dữ liệu bổ sung. Chức năng giải mã dữ xác thực sẽ giải mã dữ liệu từ bản mã thành bản rõ và xác minh thẻ xác thực [83].
Việc triển khai có thể hạn chế đầu vào với dữ liệu không bí mật (non-confidential data). Biến thể kết quả của GCM được gọi là GMAC. Đối với GMAC, các chức năng mã hóa và giải mã được xác thực trở thành các chức năng tạo và xác minh thẻ xác thực trên dữ liệu không bảo mật. Các yêu cầu và ký hiệu cho dữ liệu đầu vào và đầu ra của các chức năng này sẽ được thảo luận trong các phần kế tiếp [83].
3.3.2.3 Chức năng mã hóa xác thực a. Ngõ vào
Với một mật mã khối đã lựa chọn và khóa được phê duyệt, có ba chuỗi đầu vào cho chức năng mã hóa xác thực [83]:
- Bản rõ (Plaintext) ký hiệu P
- Dữ liệu xác thực bổ sung (Additional Authenticated Data) ký hiệu là A - Vector khởi tạo (Initialization Vector) ký hiệu IV.
Bản rõ và AAD là hai loại dữ liệu mà GCM sẽ mã hóa. GCM bảo vệ tính xác thực của bản rõ và AAD; GCM cũng bảo vệ tính bảo mật của bản rõ, trong khi AAD sẽ không được mã hóa. Ví dụ, trong một giao thức mạng, AAD có thể bao gồm địa chỉ, cổng, số thứ tự, số phiên bản giao thức và các trường khác cho biết cách xử lý văn bản gốc.
IV về cơ bản là một nonce, tức là một giá trị duy nhất trong ngữ cảnh được xác định, chức năng mã hóa sẽ được xác thực trên dữ liệu đầu vào và sẽ được bảo vệ. Yêu cầu về tính duy nhất trên IV (và khóa) được nêu trong phần quản lý khóa [84].
Độ dài bit của chuỗi đầu vào cho chức năng mã hóa xác thực phải thỏa các điều kiện sau [83]:
+ 𝑙𝑒𝑛(𝑃) ≤ 239− 256;
42 + 𝑙𝑒𝑛(𝐴) ≤ 264− 1;
+ 1 ≤ 𝑙𝑒𝑛(𝐼𝑉) ≤ 264− 1
Mặc dù GCM được định nghĩa trên các chuỗi bit, độ dài bit của bản rõ, AAD và IV đều phải là bội số của 8, do đó các giá trị này là các chuỗi byte. Việc triển khai có thể hạn chế hơn nữa độ dài bit của các đầu vào này và phù hợp với các điều kiện ở trên.
Độ dài bit mà việc triển khai cho phép được gọi là độ dài bit được hỗ trợ. Một bộ độ dài bit được hỗ trợ cho mỗi một trong ba đầu vào phải được thiết lập cho toàn bộ quá trình thực hiện, không phụ thuộc vào khóa [83].
Đối với IV, khuyến nghị việc triển khai với độ dài 96 bit, để tăng khả năng tương tác và hiệu quả cũng như đơn giản hơn trong thiết kế.
b. Ngõ ra
Dữ liệu đầu ra của chức năng mã hóa xác thực bao gồm:
- Một bản mã (ciphertext) ký hiệu là C, có độ dài bit như của bản rõ.
- Thẻ xác thực (Tag) ký hiệu là T
Độ dài bit của thẻ, ký hiệu là t, là một tham số bảo mật. Nói chung, t có thể là một trong năm giá trị sau: 128, 120, 112, 104 hoặc 96. Đối với một số ứng dụng nhất định, t có thể là 64 hoặc 32 [83].
Việc triển khai sẽ không hỗ trợ các giá trị cho t khác với 7 giá trị ở trên. Việc triển khai có thể hạn chế hỗ trợ với một trong những giá trị này. Một giá trị cố định duy nhất cho t sẽ được liên kết với mỗi khóa.
3.3.2.4 Chức năng giải mã xác thực
Với việc chọn một mật mã khối, khóa và độ dài thẻ đã được xác định, các đầu vào cho chức năng giải mã được xác thực là các giá trị cho IV, A, C và T như mô tả ở trên. Đầu ra là:
- Bản rõ P tương ứng với bản mã C hoặc - Một mã lỗi đặc biệt, ký hiệu FAIL
Đầu ra P chỉ ra rằng T là thẻ xác thực chính xác cho IV, A và C; mặt khác, đầu ra là FAIL. Các giá trị cho 𝑙𝑒𝑛(𝐶), 𝑙𝑒𝑛(𝐴), 𝑙𝑒𝑛(𝐼𝑉) của chức năng giải mã sẽ giống như chức năng mã hóa .
3.3.2.5 Bảo mật và xác thực sơ khai
Cơ chế bảo mật của bản rõ trong GCM là một biến thể của chế độ bộ đếm (counter mode) [85], với chức năng tăng bộ đếm, ký hiệu là 𝑖𝑛𝑐32, để tạo khối truy cập. Khối đầu tiên cho mã hóa P được tạo bằng cách tăng một khối tạo từ IV. Cơ chế xác thực trong GCM dựa trên hàm băm, ký hiệu là 𝐺𝐻𝐴𝑆𝐻, có tính năng nhân với một tham số cố định, được gọi là băm khóa con trong trường Galois nhị phân.
Khóa con ký hiệu là H, được tạo bằng cách áp dụng mật mã khối cho khối zero (0). Ví dụ kết quả của hàm băm này, được ký hiệu 𝐺𝐻𝐴𝑆𝐻𝐻, được sử dụng để encode AAD và bản mã thành một khối duy nhất, sau đó được mã hóa để tạo thẻ xác thực.
𝐺𝐻𝐴𝑆𝐻 là một hàm băm có khóa nhưng không phải là hàm băm mật mã. Các giá trị trung gian trong việc thực hiện các chức năng GCM sẽ là bí mật. Cụ thể, yêu cầu này
43 sẽ loại trừ các hệ thống trong đó GCM được triển khai bằng cách sử dụng khóa con băm công khai [83].