0x |
Tiền tố cho các giá trị thập lục phân. |
0(n) |
Biến n-bit mà 0 được gán cho mọi bít. |
AND |
Phép toán logic AND từng bit. |
ai |
Biến tạo thành một phần trạng thái trong của bộ tạo dòng khóa. |
bi |
Biến tạo thành một phần trạng thái trong của bộ tạo dòng khóa. |
Ci |
Khối bản mã |
F[x] |
Vành đa thức trên trường hữu hạn F |
GF(2n) |
Trường hữu hạn của 2n phần tử |
Init |
Hàm tạo ra trạng thái khởi tạo bên trong của bộ tạo dòng khóa |
IV |
Véc tơ khởi tạo |
K |
Khóa |
Next |
Hàm trạng thái tiếp theo của bộ tạo dòng khóa |
n |
Độ dài khối |
OR |
Phép toán logic OR theo từng bit |
Out |
Hàm đầu ra kết hợp với dòng khóa và bản rõ để tạo ra bản mã |
P |
Bản rõ |
Pi |
Khối bản rõ |
Strm |
Hàm dòng khóa của bộ tạo dòng khóa |
Si |
Trạng thái bên trong của bộ tạo dòng khóa |
Z |
Dòng khóa |
Zi |
Khối dòng khóa |
[x] |
Số nguyên nhỏ nhất lớn hơn hoặc bằng số thực x |
¬x |
Phép toán bù theo từng bit |
• |
Phép nhân đa thức |
‖ |
Phép ghép theo bit |
+m |
Phép cộng số nguyên modulo 2m. |
|
Phép toán XOR (loại trừ OR) theo từng bit. |
|
Phép dịch trái t-bit trong thanh ghi n-bit. |
|
Phép dịch phải t-bit trong thanh ghi n-bit. |
|
Phép dịch vòng sang trái t- bit trong thanh ghi n-bit. |
|
Phép dịch vòng sang phải t- bit trong thanh ghi n-bit. |
|
Phép nhân cho các phần tử trong trường hữu hạn GF(2n). |
CHÚ THÍCH Ví dụ cho phép nhân của các phần tử trong trường hữu hạn GF(2n) được đưa ra trong Phụ lục A.
5 Mô hình tổng quát cho mã dòng
5.1 Tổng quan
Điều này mô tả mô hình tổng quát cho các mã dòng [TCVN 11367-4 (ISO/IEC 18033-4)]
5.2 Bộ tạo dòng khóa đồng bộ
Bộ tạo dòng khóa đồng bộ là một máy trạng thái hữu hạn. Nó được xác định bởi:
1. Hàm khởi tạo, Init lấy đầu vào là một khóa K và một véc tơ khởi tạo IV, và đưa ra một trạng thái khởi tạo S0 cho bộ tạo dòng khóa. Véc tơ khởi tạo phải được chọn sao cho không có hai thông điệp nào được mã hóa sử dụng cùng khóa và cùng véc tơ khởi tạo IV.
2. Hàm trạng thái tiếp theo Next, lấy đầu vào là trạng thái hiện tại Si của bộ tạo dòng khóa, và đưa ra trạng thái tiếp theo Si+1 của bộ tạo dòng khóa.
3. Hàm dòng khóa Strm, lấy đầu vào là một trạng thái Si của bộ tạo dòng khóa, và đưa ra một khối dòng khóa Zi
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
S0 = Init (IV, K)
Tùy theo yêu cầu, bộ tạo dòng khóa đồng bộ sẽ thực hiện với i = 0,1,....
1. Đưa ra một khối dòng khóa Zi = Strm (Si, K)
2. Cập nhật trạng thái của máy Si+1 = Next (Si, K).
Vì thế để định nghĩa một bộ tạo dòng khóa đồng bộ, ta chỉ cần xác định các hàm Init, Next và Strm, bao gồm cả độ dài và bảng chữ cái của khóa, véc tơ khởi tạo, trạng thái, và khối đầu ra.
5.3 Các hàm đầu ra
5.3.1 Mô hình tổng quát cho hàm đầu ra
Điều này quy định một hàm đầu ra của mã dòng, tức là một kỹ thuật được sử dụng trong một mã dòng để kết hợp một dòng khóa với bản rõ để tạo ra bản mã.
Một hàm đầu ra cho mã dòng đồng độ hoặc tự đồng bộ là một hàm khả nghịch Out, kết hợp một khối bản rõ Pi, một khối dòng khóa Zi để đưa ra một khối bản mã Ci (i ≥ 0). Mô hình tổng quát cho một hàm đầu ra của một mã dòng được định nghĩa như sau.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Ci = Out (Pi,Zi),
và giải mã một khối bản mã Ci bởi một khối dòng khóa Zi được cho bởi:
Pi = Out-1(Ci,Zi)
Hàm đầu ra phải thỏa mãn là với mọi khối dòng khóa Zi, và khối bản rõ Pi nào, chúng ta có:
Pi = Out-1(Out (Pi,Zi),Zi)
5.3.2 Hàm đầu ra nhị phân cộng tính
Một mã dòng nhị phân cộng tính là một mã dòng trong đó các khối dòng khóa, bản rõ, và bản mã là các số nhị phân, và phép toán để kết hợp bản rõ với dòng khóa là phép toán cộng XOR theo từng bit. Cho n Telia độ dài bit của Pi. Hàm này được xác định bởi:
Phép toán Out-1 được xác định bởi:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6 Bộ tạo dòng khóa chuyên dụng
6.1 Bộ tạo dòng khóa Enocoro-128v2
6.1.1 Giới thiệu Enocoro-128v2
Enocoro-128v2 là một bộ tạo dòng khóa sử dụng một khóa bí mật K128 bit, một véc tơ khởi tạo IV 64 bit, và một biến trạng thái Si (i > 0) bao gồm 34 byte, và đưa ra một khối dòng khóa Zi độ dài một byte tại mỗi vòng lặp của hàm Strm.
CHÚ THÍCH Bộ tạo dòng khóa được đề xuất ban đầu trong [5],
Biến trạng thái Si được chia nhỏ thành một biến 2 byte:
với aj(i) là một byte (j = 0, 1) và một biến 32 byte:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Hàm Init định nghĩa chi tiết trong 6.1.2, lấy đầu vào là khóa K 128 bit và véc tơ khởi tạo IV 64 bít, và tạo ra giá trị khởi tạo của biến trạng thái S0 = (a(0), b(0)).
Hàm Next, định nghĩa chi tiết trong 6.1.3, lấy đầu vào là biến trạng thái 34 byte Si = (a(i),b(i)) và tạo ra giá trị tiếp theo của biến trạng thái Si+1 = (a(i+1),b(i+1)).
Hàm Strm, định nghĩa chi tiết trong 6.1.4, nhận đầu vào là biến trạng thái 34 byte Si = (a(i),b(i))và tạo ra khối dòng khóa Zi.
Enocoro-128v2 sử dụng các phép toán trên trường hữu hạn GF(28). Trong biểu diễn dạng đa thức, GF(28) được thực hiện như GF(2)[x]/ψ8432(x), với ψ8432 (x) là đa thức bất khả quy bậc 8 được xác định trên trường GF(2). Bộ tạo dòng khóa Enocoro-128v2 sử dụng đa thức bất khả quy dưới đây:
ψ8432 (x) =x8 + x4 + x3 + x2 + 1
6.1.2 Hàm khởi tạo Init
Việc khởi tạo của Enocoro-128v2 được chia thành 6 bước. Trong quá trình khởi tạo Enocoro-128v2, trạng thái được cập nhật như phác họa trong hình 1.
Hàm khởi tạo Init như sau:
Đầu vào: Khóa 128 bit K, véc tơ khởi tạo 64 bit IV.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
a) Sử dụng khóa K để thiết lập phần của biến trạng thái bj(-96) như sau:
- Đặt (K0 ‖ K1‖…‖ K15) = K, với Kj là 8 bit với j = 0, 1, 2,…, 15.
- Với j = 0, 1, 2, …, 15, đặt bj(-96) = Kj
b) Sử dụng véc tơ khởi tạo IV để thiết lập phần của biến trạng thái bj(-96) như sau:
- Đặt (I0 ‖ I1 ‖ … ‖ I7) = IV, với Ij là 8 bit với j = 0, 1, 2,…, 7.
- Với j = 0,1,2, ..., 7, đặt = Ij
c) Sử dụng các hằng số C0, C1,... C9 để thiết lập phần của biến trạng thái aj(-96) và bj(-96) như sau:
- Đặt = C0 = 0x66,
- Đặt = C1 = 0xe9,
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt = C3 = 0xd4,
- Đặt = C4 = 0xef,
- Đặt = C5 = 0x8a,
- Đặt = C6 = 0x2c,
- Đặt = C7 = 0x3b,
- Đặt = C8 = 0x88,
- Đặt = C9 = 0x4c,
d) Đặt bộ đếm 8 bit ctr = 1.
e) Thực hiện các bước dưới đây với i = -96, -95, ..., -1:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt Si+1 = Next (Si)
f) Đưa ra S0.
Hình 1 - Cập nhật trạng thái quá trình khởi tạo của Enocoro-128v2
6.1.3 Hàm trạng thái tiếp theo Next
Hàm trạng thái của Enocoro-128v2 được định nghĩa sử dụng các hàm p và λ được xác định trong 6.1.5 và 6.1.6 tương ứng. Hàm trạng thái tiếp theo Next của Enocoro-128v2 như sau:
Đầu vào: Biến trạng thái Si = (a(i),b(i)).
Đầu ra: Giá trị tiếp theo của biển trạng thái Si+1 = (a(i+1),b(i+1)).
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt b(i+1) = λ(b(i), a0(i))
- Đặt Si+1 = (a(i+1),b(i+1))
- Đưa ra Si+1.
6.1.4 Hàm dòng khóa Strm
Hàm dòng khóa Strm như sau:
Đầu vào: Biến trạng thái Si.
Đầu ra: Khối dòng khóa Zi.
- Đặt Zi = a1(i).
- Đưa ra Zi.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Hình 2 - Cập nhật trạng trong quá trình sinh dòng khóa của Enocoro-128v2
6.1.5 Hàm ρ
Hàm ρ bao gồm các phép XOR, một biến đổi phi tuyến sử dụng hàm S8, và một biến đổi tuyến tính sử dụng ma trận L8432. Hàm ρ được cho như sau:
Đầu vào: Biến trạng thái Si = (a(i),b(i)).
Đầu ra: giá trị tiếp theo của biến trạng thái a(i+1)
- Đặt
- Đặt
- Đặt (v0,v1) = L8432(u0,u1),
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt
- Đưa ra a(i+1)
6.1.6 Hàm λ
Hàm λ như sau:
Đầu vào: Biến trạng thái Si = (a(i),b(i)).
Đầu ra: Giá trị tiếp theo của biến trạng thái b(i+1)
- Đặt = với j≠0, 3, 8, 17
- Đặt
- Đặt
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt
- Đưa ra b(i+1)
6.1.7 Hàm L8432
Hàm L8432 là hàm bên trong của hàm p. Ký hiệu đầu vào và đầu ra của hàm L8432 là U và V tương ứng. Hàm L8432 như sau:
Đầu vào: Xâu 16 bit U.
Đầu ra: Xâu 16 bit V.
- Đặt (u0,u1) = U, với ui là xâu 8 bít và là phần tử của trường GF(28)
- Đặt
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đưa ra V.
6.1.8 Hàm S8
Hàm S8 sử dụng phép toán trên trường hữu hạn GF(24). Trong biểu diễn đa thức, GF(24) được thực hiện như GF(2)[x]/ø41(x), với ø>41(x) là đa thức bất khả quy bậc 4 được xác định trên trường GF(2). Bộ tạo H dòng khóa Enocoro-128v2 sử dụng đa thức bất khả quy sau:
ø41(x) = x4 + x + 1
Hàm S8 là một hoán vị mà ánh xạ từ các đầu vào 8 bit tới các đầu ra 8 bit. Nó có cấu trúc SPS (thay thế, hoán vị, thay thế) và nó bao gồm 4 S-hộp nhỏ s4, ánh xạ từ các đầu vào 4 bit tới các đầu ra 4 bit và một biến đổi tuyến tính l xác định bởi một ma trận 2x2 trên trường GF(24). Biến đổi tuyến tính l được xác định:
Ký hiệu đầu vào và đầu ra của hàm S8 bởi X và Y tương ứng. Hàm S8 như sau:
Đầu vào: Xâu X 8 bit.
Đầu ra: Xâu Z 8 bit.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt
với 0x4, 0x5 là biểu diễn các phần tử của trường GF(24) ở hệ thập lục phân, và S4 được xác định như sau:
S4[16] = {1,3,9,10,5,14,7,2,13,0,12,15,4,8,6,11}.
- Đặt
- Đưa ra Z.
Hình 3 - Shộp S8
Hàm S8 được xác định bằng cách sử dụng một bảng thay thế sau:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2 Bộ tạo dòng khóa Enocoro-80
6.2.1 Giới thiệu Enocoro-80
Enocoro-80 là một bộ tạo dòng khóa sử dụng một khóa bí mật K 80 bit, một véc tơ khởi tạo IV 64 bit, và một biến trạng thái Si (i ≥ 0) bao gồm 22 byte, và đưa ra một khối dòng khóa Zi tại mỗi vòng lặp của hàm Strm.
CHÚ THÍCH Bộ tạo dòng khóa được đề xuất ban đầu trong [6],
Biến trạng thái Si được chia nhỏ thành một biến 2 byte:
với aj(i) là một byte (j = 0, 1) và một biến 20 byte:
với bj(i) là một byte (j= 0, 1,..., 19).
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Hàm Next, định nghĩa chi tiết trong 6.2.3, nhận đầu vào biến trạng thái 22 byte Si = (a(i), b(i)) và tạo ra giá trị tiếp theo của biến trạng thái Si+1 = (a(i+1), b(i+1)).
Hàm Strm, định nghĩa chi tiết trong 6.3.5, nhận đầu vào biến trạng thái 22 byte Si = (a(i), b(i)) và tạo ra khối dòng khóa Zi.
Hàm L8431 sử dụng các phép toán trên trường hữu hạn GF(28). Trong biểu diễn đa thức, GF(28) được thực hiện như GF(2)[x]/ψ8431(x), với ψ8431(x) là đa thức bất khả quy bậc 8 được xác định trên trường GF(2). Bộ tạo dòng khóa Enocoro-80 sử dụng đa thức bất khả quy dưới đây:
ψ8431(x) =x8 + x4 + x3 + x + 1
6.2.2 Hàm khởi tạo Init
Việc khởi tạo Enocoro-80 được chia thành 5 bước. Hàm khởi tạo Init như sau:
Đầu vào: Khóa K 80 bit, véc tơ khởi tạo IV 64 bit.
Đầu ra: giá trị khởi tạo của biến khởi tạo S0 = (a(0), b(0)).
a) Sử dụng khóa K để thiết lập phần của biến trạng thái bj(-40) như sau:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Với j = 0,1,2, ..., 9, đặt bj(-40)= Kj
b) Sử dụng véc tơ khởi tạo IV để thiết lập phần của biến trạng thái bj(-40) như sau:
- Đặt (I0 ‖ I1 ‖ … ‖ I7) = IV, với Ij là 8 bit với j = 0, 1, 2,…, 7.
- Với j = 0,1,2, ..., 7, đặt = Ij
c) Sử dụng các hằng số C0,C1,C2,C3 để thiết lập một phần của biến trạng thái aj(-40) và bj(-40) như sau:
- Đặt b18(-40) = C0 = 0x66,
- Đặt b19(-40) = C1 = 0xe9,
- Đặt a0(-40) = C2 = 0x4b,
- Đặt a0(-40) = C3 = 0x4d,
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt Si+1 = Next (Si)
f) Đưa ra S0.
6.2.3 Hàm trạng thái tiếp theo Next
Hàm trạng thái tiếp theo của Enocoro-80 được xác định sử dụng các hàm ρ và λ được định nghĩa trong 6.2.5 và 6.2.6 tương ứng. Hàm trạng thái tiếp theo Next của Enocoro-80 như sau:
Đầu vào: Biến trạng thái Si = (a(i), b(i)).
Đầu ra: Giá trị tiếp theo của biến trạng thái Si+1 = (a(i+1), b(i+1)).
- Đặt a(i+1) = ρ(a(i), b(i))
- Đặt b(i+1) = λ(b(i), a0(i))
- Đặt Si+1 = (a(i+1), b(i+1)).
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.2.4 Hàm dòng khóa Strm
Hàm dòng khóa Strm như sau:
Đầu vào: Biến trạng thái Si.
Đầu ra: Khối dòng khóa Zi.
- Đặt Zi = a1(i).
Đưa ra Zi.
6.2.5 Hàm ρ
Hàm ρ bao gồm các phép XOR, một biến đổi phi tuyến sử dụng hàm S8, và một biến đổi tuyến tính sử dụng ma trận L8431. Hàm S8 được mô tả trong 6.1.8. Hàm ρ được cho như sau:
Đầu vào: Biến trạng thái Si = (a(i), b(i)).
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt
- Đặt
- Đặt (v0,v1) = L8431(u0,u1),
- Đặt
- Đặt
- Đưa ra a(i+1)
6.2.6 Hàm λ
Hàm λ như sau:
Đầu vào: Biến trạng thái Si = (a(i), b(i)).
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt bj(i+1) = bj-1(i) với j≠0, 2, 5, 7
- Đặt
- Đặt
- Đặt
- Đặt
- Đưa ra b(i+1).
6.2.7 Hàm L8431
Hàm L8431 là hàm bên trong của hàm ρ. Ký hiệu đầu vào và đầu ra của hàm L8431 là U và V tương ứng. Hàm L8431 như sau:
Đầu vào: Xâu 16 bit U.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
- Đặt (u0,u1)= U, với ui là một xâu 8 bit và là phần tử của trường GF(28)
- Đặt
- Đặt V = v0 ‖ v1.
- Đưa ra V.
6.3.1 Tổng quan
TRIVIUM là bộ tạo dòng khóa lấy đầu vào là khóa bí mật 80 bit K = (K0, ...,K79), véc tơ khởi tạo 80 bit IV IV = (IV0, ...,IV79), và tạo ra đến 264 bit dòng khóa z0,z1,…,zN-1
CHÚ THÍCH Bộ tạo dòng khóa này được giới thiệu ban đầu trong [7]
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
288 bit dãy đầu tiên trong phép truy hồi được khởi tạo sử dụng khóa bí mật, véc tơ khởi tạo, và một số bít hằng số. 1152 bộ ba tiếp theo (ai, bi, ci), bắt đầu từ chỉ số i = -1152, được tính toán truy hồi, nhưng không tạo ra bất kỳ đầu ra nào. Việc lặp 1152 lần này được xem như là các vòng trống.
Mỗi lần lặp sau đó, bắt đầu từ i = 0, đưa ra một bit dòng khóa zi, được tính toán bởi phép cộng XOR của một tập con 6 bit dãy. Quá trình này được lặp lại cho đến khi tạo ra đủ tất cả các bít dòng khóa được yêu cầu.
Trong các phần tiếp theo, thuật toán tạo dòng khóa đầy đủ được mô tả chính thức hơn sử dụng khung đã giới thiệu trong Điều 5. Trạng thái bên trong Si được xác định trong 6.3.2, và các hàm Init, Next, và Strm được mô tả trong 6.3.3, 6.3.4, 6.3.5.
6.3.2 Trạng thái bên trong
Vì mỗi bộ ba mới (ai, bi, ci) chỉ phụ thuộc vào một số hạn chế của các bit dãy trước đó, không cần giữ toàn các dãy trong bộ nhớ. Tại điểm bất kỳ trong thời gian i, nó đủ để thuật toán duy trì trạng thái bên trong Si bao gồm 288 dãy bit sau:
Si = (ai-1,…, ai-93, bi-1,…, bi-84, ci-1,… ci-111).
CHÚ THÍCH Trong cài đặt phần cứng đơn giản của TRIVIUM, trạng thái bên trong này có thể được lưu trữ trong các thanh ghi dịch như minh họa trong Hình 4. Các bít trong các thanh ghi (được biểu diễn bởi các hộp trong hình) được di chuyển theo chiều kim đồng hồ sau mỗi lần lặp.
Hình 4 - Một cài đặt của TRIVIUM sử dụng thanh ghi dịch
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Trạng thái bên trong của TRIVIUM được khởi tạo sử dụng hàm Init như sau:
Đầu vào: Khóa 80 bit K, véc tơ khởi tạo 80 bit IV.
Đầu ra: Giá trị khởi tạo của trạng thái bên trong S0 = (a–1, ...,a–93, b–1,... ,b–84, c–1, .... c–111).
a) Đặt i = -1152, và khởi tạo 288 bit của Si như sau:
- Đặt (ai–93, ..., ai–1) = (0, ..., 0, K0, ..., K79).
- Đặt (ai–84,…, bi–1) = (0, …, 0, IV0,..., IV79).
- Đặt (ci–111,..., ci–1) = (1,1,1,0,..., 0).
b) Với i = -1151, -1150,..., -1,0:
- Đặt Si = Next (Si-1)
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
6.3.4 Hàm trạng thái tiếp theo Next
Hàm trạng thái tiếp theo Next được xác định như sau:
Đầu vào: Trạng thái bên trong Si = (ai-1,…, ai-93, bi-1,…, bi-84, ci-1,… ci-111).
Đầu ra: Giá trị tiếp theo của trạng thái bên trong Si+1 = (ai,…, ai-92, bi,…, bi-83, ci,… ci-110).
a) Tính toán các bit ai, bi, và ci:
- Đặt
- Đặt
- Đặt
b) Đưa ra Si+1 = (ai,…, ai-92, bi,…, bi-83, ci,… ci-110).
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Hàm đầu ra Strm được xác định như sau:
Đầu vào: Trạng thái bên trong Si = (ai-1,…, ai-93, bi-1,…, bi-84, ci-1,… ci-111).
Đầu ra: Bit dòng khóa zi.
Đưa ra
Phụ lục này liệt kê các định danh đối tượng được gán cho các thuật toán được quy định trong tiêu chuẩn này và xác định các cấu trúc tham số thuật toán.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
B.1 Véc tơ kiểm tra cho Enocoro-128v2
B.1.1 Khóa, véc tơ khởi tạo, và bộ ba dòng khóa
Điều này cung cấp các véc tơ kiểm tra số học bao gồm một khóa 128 bit, một véc tơ khởi tạo 64 bit, và 256 bit dòng khóa đầu tiên tương ứng được sinh ra bởi Enonoro-128v2.
B.1.2 Các trạng thái trong mẫu
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
B.2 Véc tơ kiểm tra của Enocoro-80
B.2.1 Khóa, véc tơ khởi tạo, và bộ ba dòng khóa
Điều này cung cấp các véc tơ kiểm tra số bao gồm một khóa 80 bit, một véc tơ khởi tạo 64 bit, và 128 bit dòng khóa đầu tiên tương ứng được tạo ra bởi Enccoro-80.
B.2.2 Các trạng thái mẫu 22
Các giá trị trung gian của trạng thái và bộ đệm được sử dụng để tạo một dòng khóa được liệt kê bên dưới:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
B.3.1 Khóa, véc tơ khởi tạo, và bộ ba dòng khóa
Điều này cung cấp một véc tơ kiểm tra số học bao gồm một khóa 80 bit, véc tơ khởi tạo 80 bit, và 128 bit dòng khóa đầu tiên tương ứng được sinh bởi Trivium.
Chú ý rằng Trivium được quy định ở mức bit, và không khác biệt đến thứ tự mà các bit này được nhóm thành các byte. Để đơn giản hóa việc kiểm tra của véc tơ kiểm tra trên các nền tảng phần mềm với các quy ước khác nhau, mỗi nhóm 8 bit được in theo hai dạng thập lục phân khác nhau. Dạng đầu tiên ánh xạ bít đầu tiên của mỗi byte thành bit có trọng số cao nhất, và phù hợp hơn cho nền tảng big-endian; Dạng thứ hai sử dụng thứ tự ngược, và phù hợp hơn với nền tảng little-endian.
B.3.2 Các bit dãy bên trong
Các giá trị của các bít dãy bên trong ai, bi và ci được tính toán để sinh ra véc tơ kiểm tra ở trên, được liệt kê bên dưới:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Như được đề cập trong 6.3.2, một cài đặt điển hình của TRIVIUM chỉ cần duy trì trạng thái bên trong của 288 bit. Nội dung của trạng thái bên trong S0 sau khi thực hiện 1152 vòng trống được liệt kê bên dưới:
B.3.4 Song song hóa
Véc tơ kiểm tra dưới đây minh họa cách cài đặt cho phép tính toán song song hóa của TRIVIUM 64 bit của bi, cùng lúc sử dụng 3 phép toán XOR 64 bit và một phép toán AND 64 bit.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
C.1.1 Song song hóa
Một tính năng của các quan hệ truy hồi được sử dụng trong TRIVIUM là các bit được tính toán tại một thời điểm cho trước chỉ ảnh hưởng đến các tính toán tuần tự sau một độ trễ ít nhất là 66 lần lặp. Do đó, việc lặp tới 66 lần liên tiếp (lựa chọn thông thường là 8, 16, 32, hoặc 64) có thể được tính toán song song mà không cần bất kỳ cản trở nào. Một minh họa cho tính chất này được đưa ra trong B.3.4.
CHÚ THÍCH Chú ý rằng không nhiều ứng dụng của TRIVIUM mà nó sẽ không có ý nghĩa để khai thác tính song song này ở mức độ nào đó. Việc triển khai phần cứng song song có thể đạt được mức tiêu thụ điện năng thấp hơn đáng kể hoặc thông lượng cao hơn để đổi lấy mức tăng khiêm tốn trong khu vực. Trong phần mềm, song song hóa của TRIVIUM làm cho nó có thể tận dụng lợi thế của kích thước từ lớn nhất có sẵn trên một kiến trúc nhất định
C.1.2 Khuyến nghị sử dụng các giá trị khởi tạo
Phần này đưa ra các khuyến nghị về cách sử dụng các véc tơ khởi tạo một cách hiệu quả nhất. Do đó, kỹ thuật này có thể được áp dụng cho tất cả các mã dòng được quy định trong tiêu chuẩn này. Các phần còn lại, chúng ta chỉ xem xét đến một ví dụ về Trivium. Trên thực tế, Trivium sử dụng một khóa bí mật 80 bit tương đối ngắn, việc sử dụng không đúng cách các véc tơ khởi tạo có thể làm giảm độ an toàn của nó xuống mức nguy hiểm thấp. Điều quan trọng cần chú ý là các véc tơ khởi tạo của Trivium phục vụ hai mục đích:
a) Cho phép dữ liệu được mã hóa với cùng một khóa bí mật, được chia thành các đoạn có thể được giải mã theo thứ tự tùy ý.
b) Làm tăng độ an toàn kháng lại các tấn công thông thường.
Để cho thấy rõ hơn hai mục đích khác nhau này, ta chia véc tơ khởi tạo 80 bit IV thành hai thành phần, I và V:
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
VÍ DỤ 1 Một ổ đĩa DVD tốc độ 1x đọc dữ liệu là 10Mbit/s và có thời gian truy cập điển hình là 100ms. Để truy cập các phần tùy ý của một đĩa đã mã hóa mà không gây ra bất kỳ độ trễ nào, thiết bị giải mã sẽ phải tạo ra dòng khóa với tốc độ 10Mbit/s, và có thể truy cập tới dòng khóa tại điểm bất kỳ trong vòng 100ms. Yêu cầu này có thể dễ dàng đạt được đáp ứng bằng cách khởi tạo lại Trivium với một giá trị khác của 1 sau mỗi khối 1Mbit. Trong trường hợp này, một biến đếm 16 bit / đủ để mã hóa một đĩa 4.7GB.
VÍ DỤ 2 Trong các ứng dụng liên quan đến liên lạc thời gian thực (như liên lạc thoại), thường không có ý nghĩa khi giải mã dữ liệu theo thứ tự khác với thứ tự đã được sử dụng trong quá trình mã hóa. Toàn bộ cuộc trao đổi có thể được mã hóa như một dòng đơn, loại bỏ cần thiết cho biến đếm, như n = 0. Tuy nhiên, để bù lại cho các khác biệt về đồng bộ, hoặc cho các gói dữ liệu đến chưa đúng thứ tự hoặc bị bỏ qua, thì các bít dòng khóa sẽ có thể cần được tạo ra ở tốc độ cao hơn so với tốc độ truyền và được giữ tạm thời trong bộ đệm.
Thành phần thứ hai V có thể được sử dụng để làm tăng khả năng chống lại các tấn công tổng quát của TRIVIUM, và cách hiệu quả nhất để làm điều đó là coi nó như khóa bí mật bổ sung, có nghĩa là, khi nào một khóa mới được yêu cầu, cả K và V đều được khởi tạo cùng lúc sử dụng khóa bí mật lớn hơn 160 bit K'.
Điều quan trọng để thực hiện là sử dụng một khóa mở rộng K' như vậy sẽ không làm tăng độ an toàn của TRIVIUM chống lại các tấn công chuyên dụng.Tấn công đoán và xác định được đề xuất bởi Maximov và Biryukov [4], là một trường hợp yêu cầu độ phức tạp đương với việc tìm kiếm vét cạn trên không gian khóa 90 bít, và điều này không phụ thuộc vào cách khởi tạo của TRIVIUM. Mặt khác, các tấn công vét cạn đòi hỏi nguồn lực tính toán lớn hơn, đặc biệt khi n có thể giữ ở mức tương đối nhỏ. Trên thực tế, các tấn công chuyên dụng hiệu quả nhất đòi hỏi đối phương phải chặn bắt một lượng lớn dữ liệu (cỡ hàng trăm petabyte trong trường hợp của [4]), sử dụng một khóa mở rộng sẽ làm tăng đáng kể hành lang an toàn của TRIVIUM trong thực hành.
Người dùng sẽ quyết định, vì những ràng buộc cụ thể của ứng dụng, có thể làm chệch thủ tục được khuyến nghị đưa ra bên trên, khi đó họ nên ít nhất thực hiện các biện pháp để đảm bảo các quy tắc sau:
a) Hai dòng dữ liệu khác nhau không bao giờ được mã hóa với cùng một khóa K, và cùng một véc tơ khởi tạo IV. Vi phạm quy tắc này sẽ làm lộ phép XOR của hai bản rõ cho kẻ tấn công. Nếu hai dòng dữ chứa độ dư thừa thông tin thì thông tin này sẽ đủ để khôi phục lại cả hai.
b) Không nên sử dụng lại cùng véc tơ khởi tạo với một số lượng lớn khóa khác nhau. Giả sử rằng một véc tơ khởi tạo đơn đã biết công khai sẽ được sử dụng với 224 (16 triệu) các khóa bí mật 80 bit khác nhau. Trong trường hợp này, việc khôi phục ít nhất một trong số các khóa 80 bit trên sẽ không khó hơn việc khôi phục một khóa đơn 56 bit.
C.2 Enocoro
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Trong một số ứng dụng, không gian véc tơ khởi tạo được yêu cầu lớn hơn không gian véc tơ của mã dòng được quy định trong tiêu chuẩn này.
Phần này cung cấp các khuyến nghị về cách sử dụng bản mã cho véc tơ khởi tạo mở rộng theo một cách an toàn. Do đó kỹ thuật này có thể được áp dụng cho tất cả các mã dòng được quy định trong tiêu chuẩn này. Trong phần còn lại của điều này, chúng ta xem xét đến ví dụ của Enocoro-128v2 mà sử dụng một véc tơ khởi tạo 64 bit tương đối ngắn. Sau đây, chúng tôi mô tả trường hợp sử dụng véc tơ khởi tạo 128 bít mở rộng IV của Enocoro-128v2.
Theo mở rộng này, các thay đổi này chỉ được thực hiện ở bước b) và c) trong hàm khởi tạo Init được quy định trong 6.1.2 như sau:
b) Thiết lập véc tơ khởi tạo IV vào phần của biến trạng thái bj(-96) như sau:
- Đặt (I0 ‖ I1 ‖ … ‖ I15) = IV, với Ij là 8 bit với j = 0, 1, 2,…, 15.
- Với j = 0,1,2, ..., 15, đặt = Ij
c) Đặt các hằng số vào phần của biến trạng thái aj(-96) như sau:
- Đặt a0(-96) = C8= 0x88
- Đặt a1(-96) = C9= 0x4c.
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Phụ lục này chỉ ra các thuộc tính hạng nhẹ của các thuật toán mật mã được mô tả trong TCVN XXX-1 Phụ lục C đưa ra các tính năng phần cứng của mã dòng hạng nhẹ. Dựa trên các chỉ số, các thuộc tính hạng nhẹ của Enocoro và Trivium được tổng hợp trong Bảng sau:
Bảng D.1 - Các thuộc tính hạng nhẹ của Enocoro và Trivium
Tên thuật toán
Enocoro
Trivium
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
80
128
80
Bề mặt chip [GE]
2700
4100
2599
Số chu kỳ để khởi tạo [CLK]
40
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
1152
Số bít trên mỗi chu kỳ [bit/CLK]
8
8
1
Năng lượnga [GE]
2700
4100
2599
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
2700
4100
2599
Năng lượng trên mỗi bita [GE*CLK/bit]
338
513
2599
Công nghệ [µm]
0,18
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
0,13
Tham chiếu
[6]
[5]
[3]
a ước lượng sử dụng chỉ số phần cứng cho mật mã hạng nhẹ trong phụ lục C của TCVN 12854-1
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
VÍ DỤ C = AÄB: Trong phép toán này, trường hữu hạn được biểu diễn bằng cách chọn một đa thức bất khả quy F(x) bậc n với các hệ số nhị phân, các khối n bit A = {an–1,an–2, ...,a0} và B = {bn–1, bn–2, …, b0} (trong đó ai và bi là các bit) được biểu diễn như các đa thức, A(x) = an–1xn–1, an–2xn–2,.... a0 và B(x) = bn–1xn–1, bn–2xn–2,.... b0 tương ứng. Cho C(x) = A(x) • B(x)mod F(x), với C(x) là đa thức bậc cao nhất là n-1 nhận được bởi phép nhân A(x) và B(x), chia kết quả cho F(x) và lấy phần dư. Nếu C(x) = cn–1xn–1, cn–2xn–2,.... c0 (với ci là các bit). Khi đó gọi C là khối n bit {cn–1, cn–2, c0}. Với trường hợp này, chúng tôi giới thiệu một hàm Xtime mà nó thực hiện phép nhân 2 trong trường GF(28) sử dụng đa thức bất khả quy ψ8431(x)= x8 + x4 + x3 + x + 1 được biểu diễn dưới dạng 0x11b. Xtime có thể được cài đặt như sau:
Thư mục tài liệu tham khảo
[1] TCVN 11367-1 (ISO/IEC 18033-1), Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 1: Tổng quan
[2] TCVN 11367-4 (ISO/IEC 18033-4), Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 4: Mã dòng
[3] T. Good and M. Benaissa, "Hardware results of selected stream cipher candidates", available at http://www.ecrypt.eu.orq/stream/pa ersdir/2007/023. df
[4] A. Maximov and A. Biryukov, "Two Trivial Attacks on TRIVIUM". In C. M. Adams, A. Miri, and M. J. Wiener, editors, Selected Areas in Cryptography, SAC 2007, volume 4876 of Lecture Notes in Computer Science, pages 36-55. Springer-Verlag, 2007
[5] Hitachi, Ltd, "Stream Cipher Enocoro Evaluation Report". CRYPTREC submission package. http://www.hitachi.com/rd/yrl/crypto/enocoro/
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
[7] C. De Canniere and B. Preneel, "Trivium Specifications". eSTREAM submission package. http://www.ecrypt.eu.orci/stream/p3ciphers/trivium/trivium p3.pdf
Mục lục
Lời nói đầu
1 Phạm vi áp dụng
2 Tài liệu viện dẫn
3 Thuật ngữ và định nghĩa
4 Ký hiệu
5 Mô hình tổng quát cho mã dòng
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
5.2 Bộ tạo dòng khóa đồng bộ
5.3 Các hàm đầu ra
6 Bộ tạo dòng khóa chuyên dụng
6.1 Bộ tạo dòng khóa Enocoro-128v2
6.2 Bộ tạo dòng khóa Enocoro-80
6.3 Bộ tạo dòng khóa Trivium
Phụ lục A (quy định) Các định danh đối tượng
Phụ lục B (tham khảo) Các véc tơ kiểm tra
Phụ lục C (tham khảo) Hướng dẫn cài đặt và sử dụng
...
...
...
Mọi chi tiết xin liên hệ: ĐT: (028) 3930 3279 DĐ: 0906 22 99 66
Phụ lục E (tham khảo) Tính toán trên trường hữu hạn
Thư mục tài liệu tham khảo
Tiêu chuẩn quốc gia TCVN 12854-3:2020 (ISO/IEC 29192-3:2012) về Công nghệ thông tin - Các kỹ thuật an toàn - Mật mã hạng nhẹ - Phần 3: Mã dòng
Số hiệu: | TCVN12854-3:2020 |
---|---|
Loại văn bản: | Tiêu chuẩn Việt Nam |
Nơi ban hành: | *** |
Người ký: | *** |
Ngày ban hành: | 01/01/2020 |
Ngày hiệu lực: | Đã biết |
Tình trạng: | Đã biết |
Văn bản đang xem
Tiêu chuẩn quốc gia TCVN 12854-3:2020 (ISO/IEC 29192-3:2012) về Công nghệ thông tin - Các kỹ thuật an toàn - Mật mã hạng nhẹ - Phần 3: Mã dòng
Chưa có Video