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.3 Các phép biến đổi toán của GCM
Phần này trình bày các thành phần toán học được sử dụng trong chức năng mã hóa và giải mã đó là các phép toán trên bit, hàm bộ đếm, phép nhân các khối, hàm 𝐺𝐻𝐴𝑆𝐻, hàm 𝐺𝐶𝑇𝑅, cùng các thông số ngõ vào/ngõ ra các bước của thuật toán, sơ đồ khối và tóm tắt [83].
3.3.3.1 Một vài ví dụ về các phép tính và ký hiệu chuỗi
Cho một số thực 𝑥, hàm làm tròn, ký hiệu ⌈𝑥⌉, là số nguyên nhỏ nhất không nhỏ
hơn 𝑥 [83]. Ví dụ ⌈2.1⌉ = 3 và ⌈4⌉ = 4.
Cho một số nguyên dương 𝑠, 0𝑠 biển thị chuỗi gồm 𝑠 bit số 0. Ví dụ, 08 = 00000000.
Phép nối chuỗi, ký hiệu ||. Ví dụ 001 || 10111 = 00110111.
Cho các chuỗi bit có độ dài bằng nhau, phép XOR, ký hiệu ⊕, là phép cộng, modulo 2 của các bit theo từng vị trí.
Cho chuỗi 𝑥, độ dài chuỗi ký hiệu 𝑙𝑒𝑛(𝑥). Ví dụ 𝑙𝑒𝑛(0101) = 4
Tương tự, các phép biến đổi 𝐿𝑆𝐵, 𝑀𝑆𝐵 lấy chỉ số nhỏ/lớn của chuỗi được minh họa như sau:
𝐿𝑆𝐵3(111011010) = 010 𝑀𝑆𝐵3(111011010) = 111 3.3.3.2 Hàm bộ đếm (Incremental function)
Cho một số nguyên dương 𝑠 và một chuỗi bit 𝑋 sao cho 𝑙𝑒𝑛(𝑋) = 𝑠, hàm tăng 𝑠 bit kí hiệu như sau:
𝑖𝑛𝑐𝑠(𝑋) = 𝑀𝑆𝐵𝑙𝑒𝑛(𝑋)−𝑠(𝑋)||[𝑖𝑛𝑡(𝐿𝑆𝐵𝑠(𝑋)) + 1 𝑚𝑜𝑑 2𝑠]𝑠
Nói cách khác, hàm tăng các bit MSB của chuỗi, được coi là biểu diễn nhị phân của một số nguyên, modulo 2𝑠; các bit còn lại, 𝑙𝑒𝑛(𝑋) − 𝑠 vẫn không đổi.
3.3.3.3 Phép nhân các khối (block)
Cho chuỗi bit 𝑅 = 11100001||0120. Cho 2 khối 𝑋, 𝑌, giải thuật số 1 bên dưới tính toán một tích của 2 block, ký hiệu 𝑋 ∙ 𝑌 như sau [83]:
Giải thuật 1: 𝑋 ∙ 𝑌 Ngõ vào:
Khối 𝑋, 𝑌 Ngõ ra:
Khối 𝑋 ∙ 𝑌 Các bước:
1. Cho 𝑥0𝑥1… 𝑥127 là ký hiệu thứ tự các bit trong 𝑋 2. Cho 𝑍0= 0128 và 𝑉0= 𝑌.
3. Cho 𝑖 = 0 đế𝑛 127, tính toán các khối 𝑍𝑖+1, 𝑉𝑖+1 như sau:
44 - 𝑍𝑖+1={𝑍𝑖 , 𝑖𝑓 𝑥𝑖 = 0
𝑍𝑖⊕ 𝑉𝑖 , 𝑖𝑓 𝑥𝑖= 1
- 𝑉𝑖+1 ={ 𝑉𝑖 ≫ 1 , 𝑖𝑓 𝐿𝑆𝐵1(𝑉𝑖) = 0 (𝑉𝑖 ≫ 1) ⊕ 𝑅 , 𝑖𝑓 𝐿𝑆𝐵1(𝑉𝑖) = 1 4. Trả về giá trị 𝑍128
Phép toán ∙ trên khối 2128 tương ứng với nhân nhị phân trong trường Galois cho 2128 phần tử. Khi cố định R, xác định một đại diện của trường này là phép nhân modulo của đa thức nhị phân có số mũ nhỏ hơn 128.
3.3.3.4 Hàm GHASH
Giải thuật số 2 cho hàm 𝐺𝐻𝐴𝑆𝐻 bên dưới:
Giải thuật 2: 𝐺𝐻𝐴𝑆𝐻𝐻(𝑋) Điều kiện tiên quyết:
Khối H, khóa con băm Ngõ vào:
Chuỗi bit 𝑋 có 𝑙𝑒𝑛(𝑋) = 128𝑚 với m nguyên dương Ngõ ra:
Khối 𝐺𝐻𝐴𝑆𝐻𝐻(𝑋) Các bước:
1. Cho 𝑋1, 𝑋2, … , 𝑋𝑚−1, 𝑋𝑚 là ký hiệu cho thứ tự các khối trong 𝑋 = 𝑋1||𝑋2|| … ||𝑋𝑚−1||𝑋𝑚.
2. Cho 𝑌0 là khối 0, 0128.
3. Cho 𝑖 = 1, … , 𝑚 để 𝑌𝑖 = (𝑌𝑖+1⊕ 𝑋𝑖) ∙ 𝐻 4. Trả về 𝑌𝑚
Hàm 𝐺𝐻𝐴𝑆𝐻 tính toán 𝑋1∙ 𝐻𝑚⊕ 𝑋2∙ 𝐻𝑚−1⊕ … 𝑋𝑚−1∙ 𝐻2⊕ 𝑋𝑚∙ 𝐻 Chú ý rằng, nếu 𝑌0 = 0 thì giá trị 𝑋1 không đổi [86].
3.3.3.5 Hàm GCTR
Giải thuật 3 mô tả hàm 𝐺𝐶𝑇𝑅. Các ký hiệu đề xuất không chỉ ra hàm mật mã khối cơ bản [83].
Điều kiện tiên quyết:
Mã hóa khối 𝐶𝐼𝑃𝐻 với kích thước 128 bit;
Khóa K Ngõ vào:
Giá trị khởi tạo ICB Ngõ ra:
Chuỗi bit 𝑌 có độ dài 𝑙𝑒𝑛(𝑋) Các bước:
1. Nếu 𝑋 rỗng, trả về giá trị 𝑌 rỗng
45 2. Cho 𝑛 = ⌈𝑙𝑒𝑛(𝑋)/128⌉.
3. Cho chuỗi bit 𝑋1, 𝑋2, … , 𝑋𝑛−1, 𝑋𝑛∗ với - 𝑋 = 𝑋1||𝑋2|| … ||𝑋𝑛−1||𝑋𝑛∗;
- 𝑋1, 𝑋2, … , 𝑋𝑛−1 là những khối hoàn chỉnh 4. Cho 𝐶𝐵1= 𝐼𝐶𝐵
5. Cho 𝑖 = 2 đến 𝑛, để 𝐶𝐵𝑖 = 𝑖𝑛𝑐32(𝐶𝐵𝑖−1)
6. Cho 𝑖 = 1 đến 𝑛 − 1, để 𝑌𝑖 = 𝑋𝑖⊕ 𝐶𝐼𝑃𝐻𝐾(𝐶𝐵𝑖) 7. Cho 𝑌𝑛∗ = 𝑋𝑛∗ ⊕ 𝑀𝑆𝐵𝑙𝑒𝑛(𝑋𝑛∗)(𝐶𝐼𝑃𝐻𝐾(𝐶𝐵𝑛)) 8. Cho 𝑌 = 𝑌1||𝑌2|| … ||𝑌𝑛−1||𝑌𝑛∗
9. Trả về giá trị 𝑌
Hình dưới đây mô tả hàm 𝐺𝐶𝑇𝑅
ICB incr CB2 incr
CIPH(K) CIPH(K)
X2
CBn-1 CBn
CIPH(K) CIPH(K)
X1 X(n-1) X*(n)
Y1 Y2 Y(n-1) Y(n)
Hình 3.10 - Sơ đồ khối hàm GCTR 3.3.3.6 GCM specifications
Thuật toán GCM cho các chức năng mã hóa và giải mã được xác thực của GCM được định nghĩa dưới đây. Các thông số đầu vào, đầu ra, các bước của thuật toán, sơ đồ và tóm tắt. Mật mã khối cơ bản được lựa chọn trong GCM không được đề xuất. Các ngõ vào thường được cố định trong nhiều yêu cầu của hàm được gọi là các điều kiện tiên quyết; tuy nhiên, một số điều kiện tiên quyết cũng có thể thay đổi và được coi là đầu vào (thay đổi). Các điều kiện tiên quyết và các đầu vào khác phải đáp ứng các yêu cầu về giải thuật của thuật toán. Đối với cả hai thuật toán mã hóa và giải mã, các bước tương đương tạo ra ngõ ra chính xác được cho phép [83].
3.3.3.7 Giải thuật mã hóa xác thực
Thuật toán dưới đây chỉ định chức năng mã hóa, xác thực [83]:
𝐺𝐶𝑀 − 𝐴𝐸𝐾(𝐼𝑉, 𝑃, 𝐴) Điều kiện tiên quyết:
Mã hóa khối CIPH được phê duyệt với kích thước block 128 bit;
Khóa K;
Định nghĩa độ dài ngõ vào/ngõ ra;
Chiều dài Tag (T) được hỗ trợ với khóa K
46 Ngõ vào:
Vector khởi tạo IV (có độ dài được hỗ trợ);
Bản rõ P (plaintext) có độ dài được hỗ trợ;
Dữ liệu xác thực bổ sung AAD (có độ dài được hỗ trợ) Ngõ ra:
Bản mã C;
Thẻ xác thực T.
Các bước:
1. Cho 𝐻 = 𝐶𝐼𝑃𝐻𝐾(0128).
2. Định nghĩa 1 block, 𝐽0, như sau:
- Nếu 𝑙𝑒𝑛(𝐼𝑉) = 96 thì, 𝐽0 = 𝐼𝑉||031||1.
- Nếu 𝑙𝑒𝑛(𝐼𝑉) ≠ 96 thì 𝑠 = 128⌈𝑙𝑒𝑛(𝐼𝑉)/128⌉ − 𝑙𝑒𝑛(𝐼𝑉), và 𝐽0= 𝐺𝐻𝐴𝑆𝐻𝐻(𝐼𝑉||0𝑠+64||[𝑙𝑒𝑛(𝐼𝑉)]64).
3. Để 𝐶 = 𝐺𝐶𝑇𝑅𝐾(𝑖𝑛𝑐32(𝐽0), 𝑃).
4. Để 𝑢 = 128 ∙ ⌈𝑙𝑒𝑛(𝐶)/128⌉ − 𝑙𝑒𝑛(𝐶) và cho 𝑣 = 128 ∙ ⌈𝑙𝑒𝑛(𝐴)/128⌉ − 𝑙𝑒𝑛(𝐴).
5. Định nghĩa một block, 𝑆, như sau:
- 𝑆 = 𝐺𝐻𝐴𝑆𝐻𝐻(𝐴||0𝑣||𝐶||0𝑢||[𝑙𝑒𝑛(𝐴)]64||[𝑙𝑒𝑛(𝐶)]64).
6. Để 𝑇 = 𝑀𝑆𝐵𝑡(𝐺𝐶𝑇𝑅𝐾(𝐽0, 𝑆)).
7. Trả về giá trị (𝐶, 𝑇).
Trong bước 1, khóa con được cho hàm băm 𝐺𝐻𝐴𝑆𝐻 được tạo ra bằng cách áp dụng mật mã khối cho khối 0
Trong bước 2, khối tiền truy cập 𝐽0 được tạo ra từ 𝐼𝑉. Cụ thể, khi độ dài của 𝐼𝑉 là 96 bit, thì chuỗi đệm 031||1 được gắn vào IV để tạo thành khối tiền truy cập. Mặt khác, nếu độ dài của 𝐼𝑉 khác 96, 𝐼𝑉 được đệm với số bit tối thiểu 0 bit, có thể không có, do đó, độ dài của chuỗi kết quả là bội số 128 bit (bằng kích thước khối); lần lượt chuỗi này được gắn thêm 64 bit 0, tiếp theo biểu diễn 64 bit về độ dài của 𝐼𝑉 và sử dụng hàm 𝐺𝐻𝐴𝑆𝐻 cho chuỗi kết quả để tạo thành 𝐽0, giá trị đầu vào cho khối pre-counter [83].
Bước 3, hàm tăng 32 bit được áp dụng cho khối pre-counter, 𝐺𝐶𝑇𝑅, để tạo khối bộ đếm ban đầu cho một lệnh gọi hàm 𝐺𝐶𝑇𝑅 trên bản rõ. Đầu ra của hàm này là bản mã (ciphertext).
Trong bước 4 và 5, AAD và bản mã được mỗi lần nối với số bit tối thiểu là 0 bit, có thể không có, do đó độ dài của chuỗi bit kết quả là độ dài của kích thước khối. Việc nối với các chuỗi này được nối với các biểu diễn 64 bit về độ dài của AAD và bản mã, và hàm 𝐺𝐻𝐴𝑆𝐻 được áp dụng cho kết quả để tạo ra một khối đầu ra duy nhất [83].
Trong bước 6, khối đầu ra này được mã hóa bằng hàm 𝐺𝐶𝑇𝑅. Với khối pre- counter, được tạo ra ở bước 2 và kết quả được cắt theo chiều dài thẻ (T) để tạo thnafh thẻ xác thực (Authentication Tag) [83].
Bước 7, trả về giá trị bản mã (Ciphertext: C) và giá trị xác thực (Tag: T) [83].
47 IV
J0 incr32 GCTR(K)
P
P 0v C 0u [len(A)]64 [len(A)]64
GHASH(H)
GCTR(K)
MSB(t)
T
128
0
CIPH
H
K
Hình 3.11 - Sơ đồ khối mã hóa xác thực
Hàm mã hóa xác thực được minh họa trên hình. Việc xác định 𝐽0 từ 𝐼𝑉 (bước 2) không được mô tả
3.3.3.8 Giải thuật giải mã xác thực
Thuật toán dưới đây chỉ định chức năng giải mã, xác thực [83]:
𝐺𝐶𝑀 − 𝐴𝐷𝐾(𝐼𝑉, 𝐶, 𝐴, 𝑇) Điều kiện tiên quyết:
Mã hóa khối CIPH được phê duyệt với kích thước block 128 bit;
Khóa K;
Định nghĩa độ dài ngõ vào/ngõ ra;
Chiều dài Tag (T) được hỗ trợ với khóa K Ngõ vào:
Vector khởi tạo IV (có độ dài được hỗ trợ);
Bản mã C (Ciphertext) có độ dài được hỗ trợ;
Dữ liệu xác thực bổ sung AAD (có độ dài được hỗ trợ);
Thẻ xác thực T Ngõ ra:
48 Bản rõ P (Plaintext) hoặc dấu hiệu xác thực FAIL.
Các bước:
1. Nếu chiều dài của 𝐼𝑉, 𝐴 hoặc 𝐶 không được hỗ trợ, hoặc 𝑙𝑒𝑛(𝑇) ≠ 𝑡, trả về giá trị FAIL.
2. Cho 𝐻 = 𝐶𝐼𝑃𝐻𝐾(0128).
3. Định nghĩa 1 block, 𝐽0, như sau:
- Nếu 𝑙𝑒𝑛(𝐼𝑉) = 96 thì, 𝐽0 = 𝐼𝑉||031||1.
- Nếu 𝑙𝑒𝑛(𝐼𝑉) ≠ 96 thì 𝑠 = 128⌈𝑙𝑒𝑛(𝐼𝑉)/128⌉ − 𝑙𝑒𝑛(𝐼𝑉), và 𝐽0= 𝐺𝐻𝐴𝑆𝐻𝐻(𝐼𝑉||0𝑠+64||[𝑙𝑒𝑛(𝐼𝑉)]64).
4. Để 𝑃 = 𝐺𝐶𝑇𝑅𝐾(𝑖𝑛𝑐32(𝐽0), 𝐶).
5. Để 𝑢 = 128 ∙ ⌈𝑙𝑒𝑛(𝐶)/128⌉ − 𝑙𝑒𝑛(𝐶) và cho 𝑣 = 128 ∙ ⌈𝑙𝑒𝑛(𝐴)/128⌉ − 𝑙𝑒𝑛(𝐴).
6. Định nghĩa một block, 𝑆, như sau:
- 𝑆 = 𝐺𝐻𝐴𝑆𝐻𝐻(𝐴||0𝑣||𝐶||0𝑢||[𝑙𝑒𝑛(𝐴)]64||[𝑙𝑒𝑛(𝐶)]64).
7. Để 𝑇′ = 𝑀𝑆𝐵𝑡(𝐺𝐶𝑇𝑅𝐾(𝐽0, 𝑆)).
8. Nếu 𝑇 = 𝑇′ thì trả về 𝑃 nếu không thì trả về FAIL.
Trong bước 1, nếu độ dài của 𝐼𝑉, 𝐶, 𝐴𝐴𝐷 và 𝑇 không được hỗ trợ thì trả về giá trị FAIL.
Trong bước 2, khóa con được cho hàm băm 𝐺𝐻𝐴𝑆𝐻 được tạo ra bằng cách áp dụng mật mã khối cho khối 0.
Bước 3, khối tiền truy cập 𝐽0 được tạo ra từ 𝐼𝑉. Cụ thể, khi độ dài của 𝐼𝑉 là 96 bit, thì chuỗi đệm 031||1 được gắn vào IV để tạo thành khối tiền truy cập. Mặt khác, nếu độ dài của 𝐼𝑉 khác 96, 𝐼𝑉 được đệm với số bit tối thiểu 0 bit, có thể không có, do đó, độ dài của chuỗi kết quả là bội số 128 bit (bằng kích thước khối); lần lượt chuỗi này được gắn thêm 64 bit 0, tiếp theo biểu diễn 64 bit về độ dài của 𝐼𝑉 và sử dụng hàm 𝐺𝐻𝐴𝑆𝐻 cho chuỗi kết quả để tạo thành 𝐽0, giá trị đầu vào cho khối pre-counter.
Bước 4, hàm tăng 32 bit được áp dụng cho khối pre-counter, 𝐺𝐶𝑇𝑅, để tạo khối bộ đếm ban đầu cho một lệnh gọi hàm 𝐺𝐶𝑇𝑅 trên bản mã. Đầu ra của hàm này là bản rõ (Plaintext).
Trong bước 5 và 6, AAD và bản mã được mỗi lần nối với số bit tối thiểu là 0 bit, có thể không có, do đó độ dài của chuỗi bit kết quả là độ dài của kích thước khối. Việc nối với các chuỗi này được nối với các biểu diễn 64 bit về độ dài của AAD và bản mã, và hàm 𝐺𝐻𝐴𝑆𝐻 được áp dụng cho kết quả để tạo ra một khối đầu ra duy nhất.
Trong bước 7 khối đầu ra này được mã hóa bằng hàm 𝐺𝐶𝑇𝑅. Với khối pre- counter, được tạo ra ở bước 3 và kết quả được cắt theo chiều dài thẻ (T) để tạo thành thẻ xác thực (Authentication Tag).
Bước 8, giá trị ở bước 7 sẽ được đem đi so sánh với thẻ xác thực ngõ vào. Nếu chúng khớp với nhau, thì bản rõ (P) được trả về, nếu không, giá trị trả về giá trị FAIL.
Có thể xác minh thẻ đi trước khi tạo ra bản rõ P. Hàm giải mã xác thực được mô tả như hình bên dưới.
49 IV
J0 incr32 GCTR(K)
P
P 0v C 0u [len(A)]64 [len(A)]64
GHASH(H)
GCTR(K)
MSB(t)
T
128
0
CIPH
H
K
If !=
T
FAIL
Hình 3.12 - Sơ đồ khối giải mã xác thực 3.3.3.9 Tính duy nhất cho 𝐼𝑉𝑠 và khóa K
Các 𝐼𝑉 trong GCM phải đáp ứng các yêu cầu duy nhất sau đây:
Xác suất mà chức năng mã hóa xác thực cùng sử dụng giống 𝑰𝑽 và cùng khóa trên hai (hoặc nhiều) bộ dữ liệu đầu vào khác nhau sẽ không lớn hơn 𝟐−𝟑𝟐.
Tuân thủ yêu cầu này rất quan trọng đối với bảo mật GCM. Trên tất cả các phiên bản của hàm mã hóa xác thực bằng một khóa đã cho, nếu thậm chí có một IV được lặp lại, thì việc giả mạo, tấn công sẽ dễ dàng [84]. Trong thực tế, yêu cầu này gần như là quan trọng vì tính bảo mật của khóa.
Vai trò chính của thiết lập khóa được trình bày ở phần sau.
3.3.3.10 Thiết lập khóa
Yêu cầu sau đây là tiêu chuẩn cho các thuật toán mã hóa khóa bí mật nói chung.
Bất kỳ khóa GCM nào được thiết lập giữa người dùng phải tạo mới.
Trong thực tế, phải đảm bảo rằng khóa được làm mới khi tạo, nếu cơ chế tạo chống lại sự giả mạo, do đó, thường đặt các yêu cầu này với tác vụ quản lý khóa.
50 Cụ thể, nếu cơ chế tạo khóa là xác định, thì việc quản lý sẽ đảo bảm chắc chắn không có sự lặp lại khóa. Ví dụ, các khóa GCM có thể sử dụng các giao thức sau:
Transport Layer Security, IKEv1(Internet Key Exchange v1), IKEv2, và Secure Shell [87].
Tương tự, nếu một khóa mới được trao đến người nhận thông qua phương thức phân phối khóa phải đảm bảo chống sự phát lại “replay”, để không bên nào có thể thay thế, sửa đổi được khóa. Các khóa GCM phải được thiết lập trong cấu trúc quản lý khóa, đảm bảo mới, bảo mật và tính xác thực của chúng [83].
3.3.3.11 Giới thiệu 𝐼𝑉𝑠
Có 2 cách để xây dựng 1 frame IV [83].
Đối với bất kỳ độ dài IV được hỗ trợ nào dưới 96 bit sẽ được xây dựng trong phần (a). Đối với độ dài trên 96 bit, có thể sử dụng cả hai cách.
Ví dụ: giả sử rằng việc triển khai hỗ trợ độ dài 64 bit, 96 bit, 128 bit và 160 bit.
Đối với IV 64 bit, lựa chọn duy nhất là trong cấu trúc phần a. Đối với 3 độ dài còn lại, một sự kết hợp giữa các cấu trúc có thể là lựa chọn
a. Cấu trúc xác định (Deterministic construction) [83]
- Trong cấu trúc xác định, IV là sự kết hợp của hai trường, được gọi là trường cố định và trường gọi (invocation). Trường cố định sẽ xác định thiết bị cho chức năng mã hóa xác thực. Trường gọi sẽ xác định các bộ đầu vào cho chức năng mã hóa được xác thực trong thiết bị cụ thể đó.
- Đối với bất kì khóa nào, không có hai thiết bị riêng biệt nào có chung trường cố định và trường gọi. Tuân thủ hai yêu cầu này tức là đảm bảo tính duy nhất đối với IV.
- Nếu muốn, trường cố định có thể được xây dựng từ hai hoặc nhiều trường nhỏ hơn.
Ngoài ra, một trong các trường nhỏ hơn đó có thể bao gồm các bit tùy ý, miễn là các bit còn lại đảm bảo rằng trường cố định không được lặp lại toàn bộ cho một số thiết bị khác với cùng khóa.
- Tương tự, toàn bộ trường cố định có thể bao gồm các bit tùy ý, chỉ khi có ngữ cảnh xác định, trong trường hợp này, nếu các sesion chia sẻ một trường cố định chung, thì giao thức sẽ đảm bảo rằng các trường gọi là khác biệt cho các ngõ vào dữ liệu riêng biệt.
- Trường gọi thường là bộ đếm số nguyên hoặc thanh ghi dịch. Trong cả hai trường hợp, trường gọi tăng theo mỗi lần gọi hàm mã hóa xác thực.
- Độ dài và vị trí của trường cố định và trường gọi phải được cố định cho mỗi độ dài IV được hỗ trợ. Để tăng khả năng tương tác thì độ dài IV mặc định là 96 bit được khuyến nghị. 32 bit bên trái giữ vai trò trường cố định và 64 bit bên phải giữ trường gọi.
b. RBG-based construction [83]
- Trong cấu trúc dựa trên RBG (Random Bit Generator), IV là sự kết hợp của hai trường, được gọi là trường ngẫu nhiên (random field) và trường tự do (free field). Đối với mỗi độ dài IV được hỗ trợ bởi việc triển khai và sử dụng với cấu trúc dựa trên RBG, độ dài của các trường này sẽ được cố định cho 1 vòng sử dụng khóa. Ngoài ra, độ dài của trường ngẫu nhiên tối thiểu là 96 bit; trường tự do có thể rỗng.
- Nếu 𝑖 là độ dài IV được hỗ trợ thì dựa trên RBG, 𝑟(𝑖) biểu thị độ dài bit của trường ngẫu nhiên. Trường ngẫu nhiên bao gồm 1) chuỗi đầu ra gồm các bit 𝑟(𝑖) từ RBG được phê duyệt với bảo mật 2) kết quả của việc áp dụng hàm tăng 𝑟(𝑖) bit cho trường
51 ngẫu nhiên. Chuỗi đầu ra 𝑟(𝑖) bit từ RBG được gọi là chuỗi ngẫu nhiên trực tiếp và các trường ngẫu nhiên là kết quả của việc áp dụng hàm tăng 𝑟(𝑖) bit được gọi là kế tiếp.
- Không có yêu cầu về các bit trong trường tự do. Đối với bất kì độ dài IV nào có liên quan đến cấu trúc RBG, trường tự do được khuyến nghị để trống, để trường ngẫu nhiên là toàn bộ IV.