Nếu chưa có tài khoản Quý khách đăng ký tại đây!
Tiêu chuẩn Quốc gia TCVN 11367-4:2016 ISO/IEC 18033-4:2011 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
- Thuộc tính
- Nội dung
- Tiêu chuẩn liên quan
- Lược đồ
- Tải về
Đây là tiện ích dành cho thành viên đăng ký phần mềm.
Quý khách vui lòng Đăng nhập tài khoản LuatVietnam và đăng ký sử dụng Phần mềm tra cứu văn bản.
Tiêu chuẩn Việt Nam TCVN 11367-4:2016
Số hiệu: | TCVN 11367-4:2016 | Loại văn bản: | Tiêu chuẩn Việt Nam |
Cơ quan ban hành: | Bộ Khoa học và Công nghệ | Lĩnh vực: | Khoa học-Công nghệ, Thông tin-Truyền thông |
Ngày ban hành: | 07/07/2016 | Hiệu lực: | |
Người ký: | Tình trạng hiệu lực: | Đã biết Vui lòng đăng nhập tài khoản gói Tiêu chuẩn hoặc Nâng cao để xem Tình trạng hiệu lực. Nếu chưa có tài khoản Quý khách đăng ký tại đây! | |
TIÊU CHUẨN QUỐC GIA
TCVN 11367-4:2016
ISO/IEC 18033-4:2011
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
Information technology-Security techniques-Encryption algorithms-Part 4: Stream ciphers
Lời nói đầu
TCVN 11367-4:2016 hoàn toàn tương đương với ISO/IEC 18033-4:2011.
TCVN 11367-4:2016 do Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã biên soạn, Ban Cơ yếu Chính phủ đề nghị, Tổng cục Tiêu chuẩn Đo lường Chất lượng thẩm định, Bộ Khoa học và Công nghệ công bố.
Bộ tiêu chuẩn TCVN 11367Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mãgồm 04 phần:
- TCVN 11367-1:2016 (ISO/IEC 18033-1:2015) 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.
- TCVN 11367-2:2016 (ISO/IEC 18033-2:2006) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 2: Mật mã phi đối xứng.
- TCVN 11367-3:2016 (ISO/IEC 18033-3:2010) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 3: Mã khối.
-TCVN 11367-4:2016 (ISO/IEC 18033-4:2011) 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.
Giới thiệu
Tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033) bao gồm các thuật toán mã dòng. Mã dòng là cơ chế mã hóa sử dụng khóa dòng để mã hóa bản rõ theo cách từng bit hoặc từng khối. Có hai loại mã dòng: mã dòng đồng bộ, trong đó khóa dòng chỉđược tạo ra từ khóa bí mật (và véc tơ khởi tạo) và mã dòng tự đồng bộ, trong đó khóa dòng được tạo ra từ khóa bí mật (và véc tơ khởi tạo). Tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033) mô tả cả hai bộ tạo số giảngẫu nhiên để sinh ra khóa dòng và hàm đầu ra kết hợp khóa dòng với bản rõ.
Tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033) bao gồm hai hàm đầu ra:
- Hàm đầu ra cộng nhị phân; và
- Hàm đầu ra MULTI-S01.
Tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033) bao gồm năm bộ tạo khóa dòng chuyên dụng:
- Bộ tạo khóadòng MUGI;
- Bộ tạo khóa dòng SNOW 2.0;
-Bộ tạo khóa dòng Rabbit;
- Bộ tạo khóa dòng Decimv2; và
- Bộ tạo khóa dòng Kcipher-2(K2).
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
Information technology-Security techniques-Encryption algorithms-Part 4: Stream ciphers
1. Phạm vi áp dụng
Tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033) quy định
a) Hàm đầu ra để kết hợp một khóa dòng với bản rõ,
b) Bộ tạo khóa dòng để sinh khóa dòng, và
c) Định danh đối tượng được gán cho bộ tạo khóa dòng chuyên dụng phù hợp với tiêu chuẩn ISO/IEC9834.
CHÚ THÍCH 1 Danh sách định danh đối tượng được gán đưa ra trong Phụ lục A.
CHÚ THÍCH 2 Bất kỳ thay đổi nào của đặc tả các thuật toán này làm thay đổi hành vi chức năng sẽ dẫn đến thay đổi đối tượng định danh gán cho thuật toán có liên quan.
2. Tài liệu viện dẫn
Các tài liệu viện dẫn sau rất cần thiết cho việc áp dụng tiêu chuẩn này. Đối với các tài liệu viện dẫn ghi năm công bố thì áp dụng phiên bản được nêu. Đối với các tài liệu viện dẫn không ghi năm công bố thì áp dụng phiên bản mới nhất, bao gồm cả các sửa đổi, bổ sung (nếu có).
ISO/IEC 18033-1,lnformation technology-Security techniques-Encryption algorithms-Part 1: General
3. Thuật ngữ và định nghĩa
Trong tiêu chuẩn này áp dụng các thuật ngữ và định nghĩa dưới đây:
3.1.Big-endian(big-endian)
Phương pháp lưu trữ các số nhiều byte với byte trọng số cao nhất tại các địa chỉ bộ nhớ thấp nhất
[ISO/IEC 10118-1:2000]
3.2.Bản mã(ciphertext)
Dữ liệu đãđược biến đổi để giấu thông tin chứa trong đó
[ ISO/IEC 10116:2006]
3.3.Tính bí mật(confidentiality)
Thuộc tính mà thông tin không ở dạng sẵn sàng hoặc bị tiết lộ cho cá nhân, thực thểhoặc quy trình không được phép
3.4.Tính toàn vẹn dữ liệu(data integrity)
Thuộc tính mà dữ liệu không bịthay đổi hoặc phá hủy một cách trái phép
[ISO/IEC 9797-1:2011]
3.5.Giải mã(decryption)
Phép toán ngược với phép mã hóa tương ứng
[ISO/IEC 10116-1:2006]
3.6.Mã hóa(encryption)
Phép biến đổi (khả nghịch) dữ liệu bởi thuật toán mật mã để tạo ra bản mã, tức là giấu nội dung thông tin của dữ liệu.
[ISO/IEC 9797-1:2011]
3.7.Giá trị khởi tạo(initialization value)
Giá trị sử dụng trong việc xác định điểm khởi đầu của quá trình mã hóa
3.8.Khóa(key)
Dãy các kí hiệu điều khiển sự vận hành của các phép biến đổi mật mã (ví dụ, phép mã hóa, giải mã, tính toán hàm kiểm tra mật mã, tạo chữ ký số hoặc xác thực chữ ký số)
[ISO/IEC 11770-1:2010]
3.9.Hàm khóa dòng(keystreamfunction)
Hàm nhận đầu vào là trạng thái hiện tại của bộ tạo khóa dòng và (tùy chọn) một phần của bản mãđược tạo ra trước đó và cho đầu ra là phần tiếp theo của khóa dòng.
3.10.Bộ tạo khóa dòng(keystream generator)
Quá trình dựa trên trạng thái (nghĩa là máy trạng thái hữu hạn) nhận đầu vào là một khóa, một véc tơ khởi tạo và bản mã nếu cần thiết, và đưa đầu ra là một khóa dòng (nghĩa là dãy tuần tự các bit hoặc các khối bit) có độdài tùy ý.
3.11.Mã khối n bit(n-bit block cipher)
Mã khối với tính chất là các khối của bản rõ và bản mã đều có độ dài n bit
[ISO/IEC 10116:2006]
3.12.Hàm chuyển trạng thái tiếp theo(next-state function)
Hàm nhận đầu vào là trạng thái hiện tại của bộ tạo khóa dòng và (tùy chọn) một phần của bản mãđược tạo trước đó, và đưa đầu ra là một trạng thái mới của bộ tạo khóa dòng.
3.13.Hàm đầu ra(outputfunction)
Hàm kết hợp khóadòng mã bản rõ để tạo bản mã
CHÚ THÍCH Hàm này thực hiện phép XOR từng bit.
3.14.Đệm(padding)
Bit mở rộng đính kèm cho xâu dữ liệu
[ISO/IEC 10118-1:2000]
3.15.Bản rõ(plaintext)
Thông tin chưa được mã hóa
[ISO/IEC 9797-1:2011]
3.16.Khóa bí mật(secret key)
Khóa sử dụng cho kỹ thuật mật mã đối xứng và được dùng bởi một tập thực thể xác định
[ISO/IEC 11770-3:2008]
3.17.Trạng thái(State)
Trạng thái bên trong hiện tại của bộ tạo khóa dòng
4. Ký hiệu và chữ viết tắt
4.1.Kýhiệu
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 bit. |
AND | Phép toán logic AND từng bit. |
Am(i)[Y] | Bit thứYcủa thanh ghiAm(i)trong KCipher-2 (K2). |
ai | Các biến trong trạng thái trong của bộ tạo khóa dòng. |
bi | Các biến trong trạng thái trong của bộ tạo khóa dòng. |
CFB | Chếđộ phản hồi mãkhối |
CTR | Chế độ bộ đếm của mã khối. |
Ci | Khối bản mã. |
Di | Hằng số 64-bit được sử dụng cho MUGI. |
eK | Hàm mã hóa mã khối đối xứng sử dụng khóa bí mậtK. |
F | Hàm con được sử dụng cho MUGI. |
FSM | Hàm con được sử dụng cho SNOW 2.0. |
GF(2n) | Trường hữu hạn gồm có2nphần tử. |
GF(2n)[x] | Vành đa thức trên trường hữu hạnGF(2n) |
Init | Hàm tạo trạng thái khởi tạo trong của bộ tạo khóadòng |
IV | Véc tơ khởi tạo. |
IK | Khóa trong được sử dụng cho KCipher-2 (K2). |
K | Khóa |
M | Hàm con được sử dụng cho MUGI. |
Next | Hàm chuyển trạng thái tiếp theo của bộ tạo khóa dòng. |
NLF | Hàm phi tuyến sử dụng cho KCipher-2 (K2). |
n | Độ dài khối. |
OFB | Chế độ phản hồi đầu ra mã khối. |
OR | Phép toán logic OR từng bit. |
Out | Hàm đầu ra kết hợp khóa dòng và bản rõ để tạo bản mã. |
P | Bản rõ. |
Pi | Khối bản rõ. |
R | Đầu vào bổ sung cho biếnOut. |
SR | Hàm con được sử dụng cho MUGI. |
Strm | Hàm khóa dòng của bộ tạo khóa dòng. |
SUB | Bảng tra cứu sử dụng cho MUGI và SNOW 2.0. |
SubK2 | Hàm con được sử dụng cho KCipher-2 (K2). |
Si | Trạng thái trong của bộ tạo khóa dòng. |
T | Hàm con được sử dụng cho SNOW 2.0. |
Z | Khóa dòng. |
Zi | Khối khóadòng. |
aMUL | Bảng tra cứu được sử dụng cho SNOW 2.0. |
aMUL0 | Bảng tra cứu với chỉsố 0 được sử dụng cho KCipher-2 (K2). |
aMUL1 | Bảng tra cứu với chỉ số 1 được sử dụng cho KCipher-2 (K2). |
aMUL2 | Bảng tra cứu với chỉ số 2 được sử dụng cho KCipher-2 (K2). |
aMUL3 | Bảng tra cứu với chỉ số 3 được sử dụng cho KCipher-2 (K2). |
ainv_MUL | Bảng tra cứu nghịch đảo được sử dụng cho SNOW 2.0. |
rl | Hàm con được sử dụng cho MUGI. |
ll | Hàm con được sử dụng cho MUGI. |
[x] | Các số nguyên nhỏ nhất lớn hơn hoặc bằng số thực. |
| Phép toán bù từng bit. |
. | Phép nhân đa thức. |
|| | Phép ghép các xâu bit. |
+m | Phép cộng số nguyên modulo2m. |
Å | Phép toán XOR (OR loại trừ) từng bit. |
Ä | Phép nhân các phần tử trong trường hữu hạnGF(2n). |
Phép cộng modulo | |
<<nt | Phép dịch tráit-bit trong thanh ghin-bit. |
>>nt | Phép dịch phảit-bit trong thanh ghin-bit. |
<<<nt | Phép dịch vòng sang tráit- bit trong thanh ghin-bit. |
>>>nt | Phép dịch vòng sang phảit- bit trong thanh ghin-bit. |
4.2.Các hàm
4.2.1.Hàm cắt trái các bit
Phép toán lựa chọnjbít bên trái của mảngA= (a0,a1, … ,am-1) để bạo ra một mảngj-bit và được viết
(j~A) = (a0,a1, … ,aj-1)
Phép toán xác định với 1£j£m.
Xem trong ISO/IEC 10116:2006.
4.2.2.Phép toán dịch
Phép toán dịch được xác định như sau: Cho một biếnn-bitXvà biếnk-bitVtrong đó 1£k£n, tác dụng của hàm dịch để tạo ra biếnn-bit
Shiftk(X\V) = (xk,xk+1,...,xn-1,v0,v1,...,vk) | (k < n) |
Shiftk(X\V) =(v0,v1,...,vk-1) | (k=n) |
Kết quả sự dịch chuyển các bit của mảngXsang trái k vị trí, bỏ đix0,x1,... ,xk-1và đưa vào bên phải nhất mảngVkvị trí củaX. Khik = nthì hoàn toàn thay thếXbởiV.
Xem ISO/IEC 10116:2006.
4.2.3.BiếnI(k)
Biếnl(k)là một biếnk-bit mà mỗi bit được gán giá trị 1.
5. Khung cho mã dòng
Điều này bao gồm mô tả mức cao nhất của khung cho mã dòng được quy định trong phần này của bộ TCVN 11367 (ISO/IEC 18033). Mô tả chi tiết của mô hình tổng quát cho mã dòng được quy định tại điều 6. Mãdòng được quy định trong tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033) được xác định bởi các đặc tảcủa các quy trình sau:
a) Bộ tạo khóa dòng, cóthể là:
- Bộ tạo khóa dòng đồng bộ, hoặc
- Bộ tạo khóa dòng tự đồng bộ.
CHÚ THÍCH 1 Các Chế độ hoạt động của mãkhối là phương pháp mà mãkhối cóthể được sử dụng đểxây dựng một bộ tạo khóa dòng. Các chế độ này được chuẩn hóa trongtiêu chuẩnISO/IEC 10116 và ý nghĩa của các hàm được sử dụng trong đặc tảđược xác định trong6.2.1và6.2.2.
CHÚ THÍCH 2 Mãkhối được định nghĩa trong tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033).
b) Hàm đầu ra, có thể là:
- Hàm đầu ra cộng nhị phân, hoặc
- Hàm đầu ra MULTI-S01.
6. Mô hình tổng quát của mã dòng
6.1.Các bộ tạo khóa dòng
6.1.1.Bộ tạo khóa dòng đồng bộ
Bộ tạo khóa dòng đồng bộ là máy trạng thái hữu hạn được định nghĩa như sau:
a) Một hàm khởi tạo,Init, nhận đầu vào khóaKvà véc tơ khởi tạoIVvà cho đầu ra một trạng thái khởi tạoS0cho bộ tạo khóa dòng. Véc tơ khởi tạo cần được lựa chọn để không bao giờ có hai thông báo được mã hóa sử dụng cùng khóa và cùng véc tơ khởi tạoIV.
b) Hàm chuyển trạng thái tiếp theo,Next, nhận đầu vào làtrạng thái hiện tại của bộ tạo khóa dòngSi, và đưa ra trạng thái tiếp theo của bộ tạo khóa dòngSi+1.
c) Hàm khóa dòng,Strm, nhận đầu vào là trạng thái của bộ tạo khóadòngSi, và đưa ra khối khóa dòngZi.
Khi bộ tạo khóa dòng đồng bộ lần đầu khởi tạo, nó sẽ nhập vào một trạng thái khởi tạoS0được xác định bởi:
S0=Init(IV,K)
Theo nhu cầu bộ tạo khóa dòng đồng bộ sẽ, vớii=0,1,...
a) Đưa ra khối khóa dòngZi= Strm(Si,K).
b) Cập nhật trạng thái máySi+1=Next(Si,K).
Vìvậy, để xác định bộ tạo khóa dòng đồng bộ chỉcần xác định hàmInit,Nextvà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.
6.1.2.Bộ tạo khóa dòng tự đồng bộ
Việc tạo ra khóa dòng cho mã dòng tự đồng bộ chỉ phụ thuộc vào bản mã trước, khóa và véc tơ khởitạo. Mô hình tổng quát cho bộ tạo khóa dòng cho mã dòng tự đồng bộ được xác định:
a) Hàm khởi tạo,Init, nhận đầu vào là khóaKvà véc tơ khởi tạoIVvà đưa ra đầu vào trong cho bộ tạo khóa dòngSvà khối bản mã giảr C-1, C-2,… ,C-r.
b) Hàm khóa dòng,Strm, nhận đầu vàoSvà khối bản mãrC-1,C-2,...,C-rvà đưa ra khối khóa dòngZi.
Để xác định bộ tạo khóa dòng tự đồng bộ chỉcần thiết xác định số lượng các khối phản hồirvà hàmInitvà hàmStrm.
CHÚ THÍCH Mãdòng tự đồng bộ khác với mãdòng đồng bộởchỗ khóa dòng chỉphụ thuộc vào bản mãtrước, véc tơ khởi tạo và khóa, nghĩa làbộ tạo khóa dòng hoạt động trong kiểu không trạng thái. Kết quả là, sự giải mãcho mật mãnhư vậy có thể khôi phục từ sự mất mát của đồng bộ hóa sau khi nhận được đầy đủcác khối bản mã. Điều này cũng cónghĩa là các phương pháp tạo khóa dòng phụ thuộc vào hàm đầu ra được lựa chọnOut, mà điển hình là phép toán XOR từng bit.
6.2.Các hàm đầu ra
6.2.1.Mô hình tổng quát của hàm đầu ra
Điều 6.2 chỉ rõhai hàm đầu ra mã dòng, nghĩa là các kỹ thuật được sử dụng trong mã dòng để kết hợp khóa dòng với bản rõ để nhận được bản mã.
Hàm đầu ra cho mã dòng đồng bộ hoặc tự đồng bộ là hàmOutkết hợp khối bản rõPi,khối khóa dòngZivà một số đầu vào khácRnếu cần thiết để đưa ra khối bản mãCi(i> 0). Mô hình tổng quát của hàm đầu ra mã dòng được xác định:
Mã hóa khối bản rõPibằng khối khóa dòngZixác định như sau:
Ci=Out(Pi,Zi,R)
Và giải mã khối bản mãCibằng khối khóa dòngZixác định như sau:
Pi= Out-1(Pi,Zi,R).
Hàm đầu ra phải đáp ứng cho bất kỳ khối khóa dòngZi, khối bản rõPivà đầu vào khácR,
Pi= Out-1(Out(Pi,Zi,R),Zi,R).
6.2.2.Hàm đầu ra cộng nhị phân
Mã dòng cộng nhịphân là mãdòng trong đó khối khóa dòng, khối bản rõvà khối bản mã làcác xâu các số nhị phân và phép toán đểkết hợp bản rõ với khóa dònglà phép toán XOR từng bit. Phép toánOutcó hai đầu vào vàkhông sử dụng bất kỳ thông tin bổsungRđểtính toán. Chonlà độ dài bit củaPi. Hàm này xác định như sau:
Out(Pi, Zi, R) =PiÅZi
Phép toánOut-1xác định như sau:
Out-1(Ci,Zi,R) =CiÅZi
CHÚ THÍCH Hệ mã dòng cộng nhịphân không cung cấp bất kỳ tính bảo vệ tính toàn vẹn cho dữ liệu được mãhóa. Nếu có yêu cầu tính toàn vẹn cho dữ liệu thì hoặc làsử dụng hàm đầu ra MULTI-S01 hoặc cócơ chếtoàn vẹn riêng biệt, chẳng hạn MAC, nghĩa là Mãxác thực thông báo (cơ chếnày được quy định trong tiêu chuẩn ISO/IEC 9797).
6.2.3.Hàm đầu ra MULTI-S01
a) Mô hình tổng quát của MUTIL-S01
MULTI-S01 là hàm đầu ra cho mã dòng đồng bộ hỗ trợ cả tính toàn vẹn và tính bí mật của dữ liệu. Phép toán mãhóa MULTI-S01 phù hợp để sử dụng trong môi trường trực tuyến. Tuy nhiên, phép toán giải mã của MULTI-S01 có thểchỉ thực hiện trong tình huống ngoại tuyến, như kiểm tra tính toàn vẹn chỉđược thực hiện sau khi nhận được tất cảcác khối bản mã. MULTI-S01 có một tham số an toànn. Việc tính toán đầu ra phụ thuộc vào sự lựa chọn trườngGF(2n), tức là phụ thuộc vào lựa chọn đa thức bất khả quy bậcntrên trườngGF(2n). Hàm MULTI-S01 chỉ chấp nhận thông báo có chiều dài làbội số củan. Để mã hóa thông điệp có chiều dài không phải là bội củan, yêu cầu sử dụng thêm cơ chế đệmPad(M).
CHÚ THÍCH Việc dưthừaRđược tạo ra theo cách mà người gửi và người nhận chia sẻ nó.Rcóthể là một giátrịcông khai cốđịnh như 0x00...0.
b) Hàm mã hóaOut(P,R, Z)
Đầu vào: bản rõPn.u- bit, khóa dòngZ= (Z0,Z1,...), Trong đóZilà các khốin-bit, dư thừaRn-bit.
Đầu ra: Bản mãC.
1) Lấytlàgiá trị thấp nhất củai(i³0) sao choZi# 0(n).
2) Lấy (P0,P1,…Pu-1)=P,trong đóPilà khốin-bit
3) ĐặtPu=Zt+u+3.
4) ĐặtPu+1=R.
5) Đối với mỗiPi, thực hiện các phép tính sau (vớii = 0,1,...,u+1).
- LấyWị=PiÅZt+i+1.
- LấyXi=ZtÄWi(trong trườngGF(2n)).
- LấyCi=XiÄWi-1trong đóWi-1là giá trịWcủa khốii-1trước đó vàW-1=0(n)
- ĐặtC=C0||C1||…|||Cu+1.
- Đưa raC.
Hình 1 mô tả sơ đồ khối của hàmOut
Hình 1 - Hàm Out của chế độ MUTIL-S01
CHÚ THÍCH 2 Đa thức bất khả quy được sử dụng để xác định phép nhân trong trường phụ thuộc vàon. Vídụ, trong trường hợpn=64 và 128, cóthể sử dụng đa thức bất khả quy x64+ x4+x3+x +1 vàx128+ X7+x2+x + 1.
c) Hàm giải mãOut-1(P,Z,R)
Đầu vào: bản mãCđộ dàin.v-bitkhóa dòngZ, dư thừaRđộ dàin-bit.
Đầu ra: bản rõPhoặc“từchối”.
1) Lấytlà giá trị thấp nhất củai(i³0) sao choZi¹0(n).
2) Lấy (C0,C1,...Cv-1) =C, trong đóCilà khốin-bit
3) Đối với mỗiCi, thực hiện các phép tính sau (vớii=0,1,...,v-1):
- LấyXi=CiÅWi-1, trong đóW-1= 0(n).
- LấyWi=Zt-1ÄXi(trong trườngGF(2n)).
- LấyPi=WiÅZt+i+1.
4) NếuPv-2=Zt+v+1và Pv-1=R, đưa raP=P0||P1||…||Pv-3là bản rõ. Nếu không, đưa ra biểutượng đặc biệt nghĩa là“từ chối”mà không có bất kỳ văn bản nào.
Hình 2 mô tảsơ đồ khối của hàmOut-1
Hình 2 - HàmOut-1của chế độ MULTI-S01
d) Cơ chế đệmPad(M)
Chỉ khi độ dài của thông báo đầu vào không phải là bội số củan, cơ chế đệmPad(M)sau đây được thực thi:
Đầu vào: XâuMđộ dài (nv+c)-bit, trong đóvlà số nguyên không âm và 0£c<n.
Đầu ra: bản rõPđược đệm
1) Đệm xâu bit“1”vào cuối thông báo.
2) Đệm xâu0(n-c-1)độ dài (n-c-1)-bit vào xâu được tạo bởi bước a).
3) Đưa ra toàn bộ xâu có độ dài(nv+n)-bit.
CHÚ THÍCH 3 Nếu độdài của thông báo làbội số củan, trong mỗi trường độ dài không phải là nhất định như vậy, cơ chế đệm này được khuyến khích.
CHÚ THÍCH 4 Đểbỏ đệm của thông báo, loại bỏliên tiếp bit0ở phần cuối của dữ liệu vàloại bỏcác bit“1”.
7. Xây dựng bộ tạo khóa dòng từ mã khối
7.1.Các chế độ mã khối cho bộ tạo khóa dòng đồng bộ
7.1.1.Chếđộ OFB (Đầu ra phản hồi) và CTR (Bộ đếm)
Điều 7.1 quy định hai chế độn-mã khối cho bộ tạo khóa dòng đồng bộ. Đó là, chế độ OFB (Đầu ra phản hồi) và chế độ CTR (Bộ đếm) của mãkhốieKn-bit.
7.1.2.Chế độ OFB
Chế độ OFB được xác định bởi một tham sốr, 1£r£n, là kích thước của khối bản rõ và bản mã.
Véc tơ khởi tạoIVà xâun-bit.IVsẽ được tạo ra khác nhau cho hai quá trình mã hóa với cùng một khóaK. HàmInit,NextvàStrmđược quy định như sau:
- Init(IV,K)=IV.
-Next(Si,K) = eK(Si)
- Strm(Si) = (r ~ Si).
CHÚ THÍCHInit(IV,K) =IVtương đương vớiS0=IV.
Trong trường hợp của chế độ OFB, hàm đầu ra cộng nhị phân được xác định trong6.2.2được sử dụng. Hình 3 mô tả sơ đồ khối của bộ tạo khóa dòng dựatrên chế độ CFB.
Hình 3 - Tạo khóa dòng dựa trên chếđộOFB
7.1.3.Chế độ CTR
Chế độ CTR được xác định bằng một tham sốr, 1£r£n, là kích thước của khối bản rõ và bản mã.
Véc tơ khởi tạoIVlà xâun-bit cần được đảm bảo rằngSi¹S’jcho hai khóa dòngS0, S1, S2, …vàS’0,S’1,S’2,... được tạo ra với cùng một khóaK. HàmInit,NextvàStrmđược xác định như sau:
- Init(IV, K) = IV.
- Next(Si,K) = Si+ 1 mod2n.
-Strm(Si,K) =(r~eK(Si)).
CHÚ THÍCHInit(IV,K) = IVtương đương vớiS0=IV.
Trong trường hợp của chế độ CTR, hàm đầu ra cộng nhị phân được xác định trong6.2.2được sử dụng. Hình 4 mô tả sơ đồ khối của bộ tạo khóa dòng dựa trên chế độ CFB.
Hình 4 - Tạo khóa dòng dựa trên chế độ CTR
7.2.Chếđộ mã khối cho bộ tạo khóa dòng tự đồng bộ
7.2.1.Giới thiệu chế độ CFB
Chế độ CFB của mã khốin-bit là mã dòng tự đồng bộ.
7.2.2.Chế độ CFB
Chế độ CFB (Phản hồi mã) được xác định với 3 tham số, tức là kích thướcjcủa bộ đệm phản hồiSi,trong đón£j£1024n, kích thước biến phản hồib, trong đó 1£b£nvà khối đầu ra có kích thướcr, trong đó 1£r£b.
CHÚ THÍCH 1 Giá trịb-rcần nhỏ hơn b
Véc tơ khởi tạoIVcần được tạo ngẫu nhiên xâuj-bit và cũng cần được tạo ra khác nhau cho hai mã hóa với cùng một khóaK. HàmInit, NextvàStrmđược xác định như sau:
-Init(IV,K)=IV.
-Next(S) =Shiftb(S|Shiftr(I(b)|Ci)).
-Strm(S,K) = (r~eK((n~S))).
CHÚ THÍCH 2Init(IV,K) =IVtương đương vớiS0=IV.
Trong trường hợp của chế độ CFB, hàm đầu ra cộng nhị phân được xác định trong 6.2.2 được sử dụng. Hình 5 mô tả sơ đồ khối của bộ tạo khóa dòng dựa trên chế độ CFP.
Hình 5 - Tạo khóa dòngdựa trên chế độ CFB
8. Bộ tạo khóa dòng chuyên dụng
8.1.Bộ tạo khóa dòng MUGI
8.1.1.Giới thiệu MUGI
MUGl là bộ tạo khóa dòng sử dụng khóa bí mậtK128-bit, véc tơ khởi tạoIV28-bit và biến trạng tháiSi(i³0) bao gồm 19 khối 64-bit (lưu ý rằng mỗi khối được sử dụng thông qua đặc tả của MUGI cho mỗi khối 64-bit) và đưa ra khối khóa dòngZitạimỗi lần lặp của hàmStrm.
CHÚ THÍCH Bộ tạo khóadòng này ban đầu được đềxuất trong [17].
Biến trạng thái được chia nhỏthành kết hợp của biến 3-khối:
a(i)=,
Trong đólà khối (vớij= 0, 1, 2) và biến 16-khối
b(i)=,
Trong đólà khối (vớij= 0, 1,..., 15)
HàmInit, được xác định chi tiết trong 8.1.2, nhận đầu vào khóaKđộ dài 128-bit và véc tơ khởi tạoIVđộ dài 128-bit và tạo giá trị ban đầu của biến trạng tháiS0= (a(0),b(0)),
HàmNext, được xác định chi tiết trong 8.1.3, nhận đầu vào biến trạng thái 19-khốiSi= (a(i),b(i))và đầu ra là giá trị tiếp theo của biến trạng tháiSi+1= (a(i+1),b(i+1)).
HàmStrm, được xác định chi tiết trong 8.1.4, nhận đầu vào biến trạng thái 19-khốiSi=(a(i),b(i))vàđầu ra là khối khóa dòngZi.
Lưu ý rằng hàmNextđược xác định trong các số hạng củar1vàl1được xác định tương ứng trong 8-1.5 và 8.1.6. Hàmr1được xác định trong số hạng của hàmr1được xác định trong8.1.7
Có 3 hằng số được sử dụng trong MUGI,D0trong hàm khởi tạoInit, vàD1,D2trongr1. Chúng xác định bởi:
D0=0x6A09E667F3BCC908,
D1= 0xBB67AE8584CAA73B,
D2= 0x3C6EF372FE94F82B.
8.1.2.Hàm khởi tạoInit
Việc khởi tạo MUGI được chia ra thành 8 bước. Các khối nửa trái và nửa phải củaKđược biểu diễn tương ứng bằngK0vàK1.IV0vàIV1được xác định theo cách tương tự. Hàm khởi tạoInit như sau:
Đầu vào: KhóaK128-bit, véc tơ khởi tạoIVđộ dài 128-bit.
Đầu ra: Giá trị khởi tạo của biến trạng tháiS0= (a(0),b(0))
a)Đặt khóaKvào thành phần của biến trạng tháia(-49)như sau:
- Đặt(K0,K1)=K, trong đóKilà 64 bit vớii= 0, 1
- Đặt=K0.
- Đặt=K1.
- Đặt= (K0<<<647)Å= (K1>>>647)ÅD0.
D0trong biểu thức trên là hằng số (xem 8.1).
b)Vớii= -49, -48,..., -34 đặta(i+1)=r1(a(i),0(64),0(64)).Mô tả củarxem 8.1.5.
c)Vớii= 0, 1,…,15 đặt=a0(i-48)
d)Thêm véc tơ khởi tạoIVvào trạng thái như sau:
- ĐặtIV0||IV1=IV, trong đóIVilàkhối
-Đặt=ÅIV0.
-Đặt=ÅIV1.
-Đặt=Å(IV0<<<647)Å(IV1>>>647)ÅD0.
e)Vớii= -32, -31,..., -17, đặt a(i+1)=r1(a(i),0(64),0(64))
f)ĐặtS-16= (a(-16),b(-16))
g)Lặp hàm cập nhậtNext16 lần:
ĐặtS0=Next16(S-16)
Trong đóNext16 đại diện cho 16 lần lặp của hàm chuyển trạng thái theoNext
h)Đưa raS0.
8.1.3.Hàm chuyển trạng thái theoNext
Hàm chuyển trạng thái theo của MUGI được xác định là sự kết hợp củar1vàl1. Hàm chuyển trạng thái theo của MUGI như sau:
Đầu vào: Biến trạng tháiSi= (a(i),b(i)).
Đầu ra: Trạng thái tiếp theo của biến trạng tháiSi+1= (a(i+1),b(i+1)).
- Đặta(i+1)=r1(ai,,). Mô tả chi tiết của hàmr1được đưa ra trong 8.1.5.
- Đặtb(i+1)=l1(bi, a0(i)).Mô tả chi tiết của hàml1được đưa ra trong 8.1.6.
- ĐặtSi+i= (a(i+1),b(i+1))
- Đưa raSi+1.
8.1.4.Hàm khóa dòngStrm
Hàm khóa dòngStrmnhư sau:
Đầu vào: Biến trạng tháiSi.
Đầu ra: Khối khóa dòngZi.
-ĐặtZi=
- Đưa raZi.
8.1.5.Hàmr1
Hàmr1như sau:
Đầu vào: Biến trạng tháia(i), hai tham số độ dài 64-bitw1,w2.
Đầu ra: Giá trị tiếp theo của biến trạng tháia(i+1)
-Đặt
-ĐặtÅF(,w1)ÅD1.
-ĐặtÅF(, (w2<<<6417)ÅD2.
-Đưa raa(i+1).
D1,D2là hằng số (xem thêm chi tiết tại 8.1).
Hình 6 mô tả sơ đồ khối của hàmr1.Môtả chi tiết của hàmFđược đưa ra trong 8.1.7.
Hình 6 - Hànr1của MUGI
8.1.6.Hàml1
Hàml1như sau:
Đầu vào: Biến trạng thái b(i), tham sốa độ dài 64-bit.
Đầu ra: Giá trịtiếp theo của biến trạng tháib(i+1)
- Đặtvớij¹0, 4, 10.
-ĐặtÅa .
- Đặt
- Đặt<<<6432)
Đưa rab(t+1).
8.1.7.HàmF
HàmFdùng phép toán trên trường hữu hạnGF(28). Trong biểu diễn đa thức,GF(28)được thực hiện nhưGF(2)[x]/f(x), trong đóf(x)là đa thức bất khả quy bậc 8 được xác định trên trườngGF(2). Bộ tạo khóa dòng MUGI sử dụng đa thức bất khả quy sau:
f(x) = x8+ x4+ x3+ x + 1.
HàmFlà kết hợp của phép cộng khóa (việc bổ sung dữ liệu từ một phần của biến trạng tháib),phép biến đổi phi tuyến sử dụng hàmSR, biến đổi tuyến tính sử dụng ma trậnMvà phép xáo trộn byte (xem Hình 7).
Chúng ta biểu diễn đầu vào và đầu ra cho hàmFtương ứng làXvàY. Khi đó, hàmFxác định như sau: Đầu vào: hai xâuXvàTđộ dài 64-bit.
Đầu ra: xâuYđộ dài 64-bit.
-X =XÅT
- Đặt (X0,X1,X2,X3,X4,X5,X6,X7) =X trong đóXilà xâu có độ dài 8-bit
- ĐặtPi=SR(Xi) vớii= 0,1, …,7.
-ĐặtPL=P0||P1||P2||P3.
- ĐặtPR=P4||P5||P6||P7.
-ĐặtQL=M(PL).
-ĐặtQR=M(PR).
-Đặt (Q0,Q1,Q2,Q3) =QL.
- Đặt (Q4,Q5,Q6,Q7) =QR.,
- ĐặtY=Q4||Q5||Q2||Q3||Q0||Q1||Q6||Q7.
- Đưa ra Y.
Hình 7 mô tảsơ đồ khối của hàmF
Hình 7 - HàmFcủa MUGI
8.1.8.HàmSR
HàmSRlà hàm nội tại của hàmF. HàmSRcó thể được mô tả bằng cách sử dụng bảng thay thế. Trong trường hợp này, hàmSRnhư sau:
Đầu vào: xâuxđộ dài8-bit
Đầu ra: xâuđộ dài 8-bit.
- Đặty=SUB[x]
- Đưa ray.
SUBsử dụng trong hàmSRlà thay thế như sau:
8.1.9.HàmM
HàmMlà hàm nội tại của hàmF. HàmMnhư sau:
Đầu vào: xâuXcóđộ dài 32-bit.
Đầu ra: xâuYcó độ dài 32-bit
- Đặt (x0,x1,x2,x3) =X, trong đóxilàxâu cóđộ dài 8-bit và là phần tử củaGF(28).
-Đặt
Trong đó 0x01, 0x02 và 0x03 là biểu diễn thậplục phân của các phần tử của trườngGF(28).
- ĐặtY=y0||y1||y2||y3.
- Đưa raY.
8.2.Bộ tạo khóa dòng SNOW 2.0
8.2.1.Giới thiệu SNOW2.0
SNOW 2.0, trong phần tiếp theo chỉđơn giản ký hiệulà SNOW, là bộ tạo khóa dòng sử dụng như là đầu vào khóa bí mậtKcóđộ dài 128 hoặc 256-bit và một véc tơ khởi tạoIVcó độ dài 128-bit. Chúng được sử dụng để khởi tạo biến trạng tháiSi(i³0) bao gồm 18 khốin= 32 bit. Thứ tự bit/byte là big-endian, tức là nếu khóa và véc tơ khởi tạo được cho dưới dạng một dãy các bit/byte, bit/byte phần đầu/tận cùng bên trái có trọng số cao nhất của dữ liệu tương ứng. Đối với mỗi lần lặp hàmStrm, 32-bit khóa dòngZiđược tạo coi như đầu ra.
Biến trạng thái SNOWSibao gồm hai phần. Phần thứ nhất, 16 biến có độ dài 32-bit:
thực hiện một thanh ghi dịch phản hồi tuyến tính (LFSR). Phần thứ hai, 2 biến có độ dài 32-bit:
duy trìtrạng thái của máy trạng thái hữu hạn (FSM). SNOW được hiểu là tốt nhất với tham chiếu trong Hình 8, trong đó cho thấy một ảnh chụp, tại thời điểmi,bỏqua biến phụ thuộc thời gian (i)
Hình 8 - Biểu đồcủa SNOW
Phép toán SNOW được xác định:
HàmInit, xác định chi tiết trong8.2.2, nhận đầu vào khóaKcó độ dài 128 hoặc 256-bit và véc tơ khởi tạoIVcó độ dài 128-bit và tạo giá trị khởi tạo của biến trạng tháiS0= (a(0),b(0)).
HàmNext, được xác định chi tiết trong8.2.3, nhận đầu vào 18 biến trạng tháiSi= (a(i),b(i)) có độ dài 32-bit và tạo đầu ralàgiá trị tiếp theo của biến trạng tháiSi+1= (a(i+1),b(i+1)). HàmNextchạy trong 2 chế độ, tùy thuộc vào việc thực hiện lặp là một phần của việc khởi tạo, hoặc, trong chếđộ bình thường của tạo đầu ra, xem dưới đây.
HàmStrm, được xác định chitiết trong8.2.4nhận đầu vào là18 biến trạng thái có độ dài 32-bitSi= (a(i), b(i)) và tạo ra như là đầu ra khóa dòngZicó độ dài 32-bit.
CHÚ THÍCH 1 Đối với SNOW, khuyến nghị số lượng tối đa khóa dòng được tạo ra từ (K,IV)là 250khóa cóđộ dài 32-bit. Giới hạn này đãđược lựa chọn để cung cấp biên an toàn tốt nhất đối với việc thám mãvà ngụ ý không có giới hạn thực tế áp dụng các thuật toán.
CHÚ THÍCH 2 Bài viết[10] được tham chiếu cho lý thuyết nền tảng vềlý do căn bản thiết kếcho SNOW.
8.2.2.Hàm khởi tạoInit
Hàm khởi tạoInitnhư sau.
Đầu vào: KhóaKcóđộ dài128 hoặc 256-bit, Véc tơ khởi tạoIVcóđộ dài 128-bit.
Đầu ra: Giá trị khởi tạo của biến trạng tháiS0=(a(0),b(0)).
a)Khởi tạo thanh ghi bằng thông tin khóa.
- Đối với khóa có độ dài 128-bit, Đặt (K3,K2,K1,K0) =K,và=K3-jvà
Ø(K3-j) vớij=0, 1, 2, 3.
- Đối với khóa có độ dài 256-bit, Đặt (K7,K6,...,K0) =và=Ø(K7-j) vớij = 0, 1, …,7.
b)ĐặtS-33= (a(-33),b(-33)) bằng
-Đặt (IV3,IV2,IV1,IV0) =IV.
- Đặt=vớii= 0, 1, 2, 3, 4, 5, 6, 7,8, 11, 13,14.
-Đặt
-Đặt.
-ĐặtS-1=Next32(S-33,INIT), trong đóNext32biểu diễn cho 32 lần lặp của hàmNext
d)S0=Next(S-1).
e)Đưa raS0.
8.2.3.Hàm chuyển trạng thái theoNext
SNOW có hai chế độ với hàmNext
Đầu vào: Biến trạng tháiSi=(a(i),b(i))mode={INIT,null}.
Đầu ra: Giá trị tiếp theo của biến trạng tháiSi+1= (a(i+1),b(i+1)).
a)Đặt=T().
b)Đặt=).
c)Vớij= 0,1, …,14 đặt
d)Nếu chế độINIT, đặt.Nếu không thì, đặt
e)Si+1= (a(i+1),b(i+1))
f)Đưa ra Si+1.
Mô tả của hàmTvà số học trường hữu hạn bao gồm thành phần cố địnhađề cập tương ứng trong điều 8.2.5 và 8.2.6.
CHÚ THÍCH Hình 9 môtả sơ đồ khối của chếđộINIT của hàmNext
Hình 9 - Chế độ INIT của hàmNext
Định nghĩa của hànFSMđề cập trong điều 8.2.8.
8.2.4.Hàm khóa dòngStrm
Hàm khóadòngStrmnhư sau:
Đầu vào: Biến trạng tháiSi
Đầu ra: Khóa dòngZicó độ dài 32-bit
a)ĐặtZi=FSM().
b)Đưa raZi.
8.2.5.HàmT
HàmTlà hàm thay thế, đặc biệt là hoán vịtrên trườngGF(232)dựa trên các thành phần từ Chuẩn mã hóa tiên tiến (AES), TCVN 11367-3:2016 (ISO/IEC 18033-3). Cuối cùng trường hữu hạnGF(28)được sử dụng như là trườngGF(2)[x]modulo với đa thức bất khả quy.
f(x) = x8+ x4+x3+x+1.
Và vành đa thứcGF(28)[y]mdulo(y4+1).
Đầu vào: xâuwcóđộ dài 32-bit
Đầu ra: xâuq=T(w)có độdài 32-bit
a)Đặt (w3,w2,w1,w0=w) trong đó mỗiwjcó độ dài 8 bit.
b)Vớij= 0,1,2, 3 đặttj=SUB[wj].
c)Lấyt(y)làđa thứct(y) =t3y3+t2y2+t1y +t0trên trườngGF(28)[y], trong đótjđược hiểu như làmột phần tử củaGF(28)theo cách tự nhiêntj=tj,7x7+…+ tj,1x+tj,0,tj,ktrong trườngGF(2)
d)Đặtq(y) =c(y).t(y)modulo(y4+1), trong đóc(y) = (x +1)y3+ y2+ y + x trên trườngGF(28)[y].
e)Kết hợp xâuq= (q3,q2,q1,q0) 32-bit với kết quả trên,q(y) =q3y3+ q2y2+ q1y + q0
f)Đưa raq.
Lưu ý rằng trong bước c), hai đa thức được nhân với nhau trong đó các phép toán hệ số-nhân-hệ số thực hiện trong trườngGF(28)được xác định bởi hàmf(x) ở trên. Sau đó kết quả được rút gọn theo modulo y4+1.
CHÚ THÍCH 1 HộpthếS-boxcủa AES đượctìm thấy trong 8.1.8
CHÚ THÍCH 2 Tham khảo chi tiết tối ưu hóa này và một số vấn đềkhác tại bài báo [10].
8.2.6.Phép nhânatrong sốhọc trường hữu hạn
Đầu vào: Xâuwcó độ dài 32-bit, đại diện cho phần tử củaGF(232).
Đầu ra: Xâuw có độ dài 32-bit, đại diện choµÄwtrong trườngGF(232).
a)Đặtw = (w<<328)ÅaMUL[w >>3224]
b)Đưa raw
HàmaMULđược xác định như sau:
aMUL[256] = {
8.2.7.Phép nhâna-1trong số học trường hữu hạn
Đầu vào: Xâu y có độ dài 32-bit, đại diện cho phần tử củaGF(232).
Đầu ra: Xâu y có độ dài 32-bit, đại diện choa-1Äy trong trườngGF(232).
a)Đặty = (y>>328)Åainv_MUL(y mod256]
b)Đưa ray’
Hàmainv_MULđược xác định như sau:
ainv_MUL[256] = {
8.2.8. Hàm FSM(x,y,z)
Đầu vào: 3 xâu cóđộ dài 32-bit,x,yvàz
Đầu ra: xâuqcó độ dài 32-bit
a)Đặtq= (x +32y)Åz.
b)Đưa raq.
8.3.Bộ tạo khóa dòng Rabbit
8.3.1.Tổng quan bộ tạo khóa dòng Rabbit
Rabbit là bộ tạo khóadòng sử dụng khóa bí mậtKcóđộ dài 128-bit, véc tơ khởi tạoIVcó độ dài 64-bit và biến trạng thái trongSi(i³0) cóđộ dài 513-bit. Rabbit đưa ra khối khóa dòngZicó độ dài 128-bit tại mỗi lần lặp hàmStrm.
513-bit của trạng thái trongSiđược chia giữa 8 biến trạng thái có độ dài 32-bit, 8 biến đếm, và 1 bit nhớ bộ đếmb(i).
Mô tả sử dụng các ký hiệu đưa ra tại Điều 4 của tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033). Ngoài ra, ký hiệu đặc biệt cho mảng bit được sử dụng để tăng cường khả năng đọc: Khi ghi nhãn các bit của một biếnA, bit có trọng số thấp nhất được ký hiệu làA(0). Ký hiệuA[h..g]môtả các bit từhcho đếngcủa biếnA, trong đó bit có vịtríhlà bit có trọng số cao hơn bit ở vị tríg.
CHÚ THÍCH 1 Đối với bộ sinh khóa dòng Rabbit, khuyến nghịsố lượng khóa dòng tối đa được tạo ra từmột khóaKcho trước là264khối khóa dòng. Giới hạn này đãđược lựa chọn để cung cấp biến an toàn tốt nhất đối với việc phân tích mãvà đồng thời ngụ ý không cógiới hạn thực tế về khả năng áp dụng các thuật toán.
CHÚ THÍCH 2 Bài báo [8]được tham chiếu cho đề xuất ban đầu của mật mãvà bài báo [9] được tham chiếu đến tổng quan vềan toàn mật mãcủa nó.
8.3.2.Các biến bổ sung và ký hiệu
Đối với bộ tạo khóa dòng Rabbit, các ký hiệu sau đây được sử dụng thêm:
A | Hằng số cho Rabbit |
b | Bít nhớ cho Rabbit |
C | Biến đếm cho Rabbit |
g | Hàm con được sử dụng cho Rabbit |
X | Biến trạng thái trong cho Rabbit |
Ngoài ra, một sốký hiệu được sử dụng cho các biến phụ cục bộ trong mô tả các thuật toán. Những biểu tượng này chỉxảy ra trong đặc tảhàm đưa ra và không có nghĩa toàn cục. Các biến này được mô tả trong phần khai báo của hàm.
8.3.3.Hàm khởi tạoInit
Trong phần tiếp theo, hàm khởi tạoInitcho Rabbit được quy định.
Đầu vào: KhóaKcóđộ dài 128-bit, véc tơ khởi tạoIVcó độdài 64-bit.
Đầu ra: Giá trị khởi tạo của biến trạng tháiS0=.
Biến cục bộ: biến đếmi,j
a)LấyK0=K[15..0],K1=K[31...16],…,K7=K[127..112]
b)ĐặtS-9, như sau:
1)Đặtb(-9)= 0.
2)Vớij= 0,1, …,7:
- Nếujlà chẵn, đặt=K(j+1mod8)||Kjvà=K(j+4mod8))||K(j+5mod8).
- Ngược lạijlẻ đặt=K(j+5mod8)||K(j+4mod8)) và=K(j+1mod8).
c)Lặp lại các hàm trạng thái tiếp theoNext4 lần: đặtSi=Next(Si-1) vớii= -8, -7, -6, -5
d)ĐặtS-4như sau:
1)Thay đổi các biến đếm như sau:
2)
e)Lặp lại hàm chuyển trạng thái theoNext4 lần: đặtSi=Next(Si-1) vớii= -3, -2, -1,0
f)Đưa raS0=
CHÚ THÍCH Véc tơ khởi tạoIVđược trộn vào trạng thái trong ở bước d) vàe) của thuật toán. Nếu các ứngdụng yêu cầu táikhởi tạo thường xuyên với cùng một khóa,điều này cónghĩa đểlưu trữ trạng thái trong sau bước c) như trạng thái chủvàđểthực thichỉbước d) tới bướcf) cho tái khởi tạo.
8.3.4.Hàm chuyển trạng thái theoNext
Hàm chuyển trạng thái theoNextcho Rabbit được quy định như sau:
Đầu vào: Biến trạng tháiSi=
Đầu ra: Biến trạng tháiSi+1=.
Biến cục bộ: biến đếmj, biến tạm làsố nguyên dương có độ dài 32-bit
a)Đặt hằng sốA0, ...A7như sau:
b)Lấy= bi
c)Vớij= 0,1,2, … ,7:
- Lấytemp=;kết quả này là giá trị cóđộ dài 33-bit
- Lấy=temp[32]
- Lấy=temp[31…0]
d)Lấyb(i+1)=
e)Vớij= 0,1,… ,7, lấyGj=g(), trong đóhàmgđược đưa ra trong 8.3.6.
f)Thay đổi trạng thái trong như sau:
g)Đưa raSi+1= (b(i+1),)
8.3.5.Hàm khóa dòngStrm
Hàm khóa dòngStrmcho Rabbit được quy định như sau:
Đầu vào: Biến trạng tháiSi= (b(i),).
Đầu ra: Khối khóa dòngZi.
a)ĐặtZinhư sau:
Zi[15. .0] | = | [15..0] | Å | [31..16] |
Zi[31..16] | = | [31..16] | Å | [15..0] |
Zi[47. .32] = | = | [15. .0] | Å | [31. .16] |
Zi[63..48] = | = | [31..16] | Å | [15..0] |
Zi[79..64] = | = | [15. .0] | Å | [31. .16] |
Zi[95..80] = | = | [31. .16] | Å | [15. .0] |
Zi[111..96] = | = | [15. .0] | Å | [31. .16] |
Zi[127..112] = | = | [31. .16] | Å | [15. .0] |
b)Đưa raZi.
8.3.6.Hàmg
Hàmgđược quy định như sau:
Đầu vào: 2 tham sốuvàvcó độ dài 32-bit
Đầu ra: kết quảhàmg(u, v) có độ dài 32-bit
Biến cục bộ:tempsố nguyên dương có độ dài 32-bit
a)Lấytemp= (u+32v)2; kết quảlà giá trị có độ dài 64-bit.
b)Lấyg(u, v) =temp[31..0]Åtemp[63..32]
c)Đưa rag(u, v)
8.4.Bộ tạo khóa dòngDecimv2
8.4.1.Giớithiệu bộ tạo khóa dòngDecimv2
DECIMv2là bộ tạo khóa dòng trong đó sử dụng khóa bí mậtKcó độ dài 80-bit và véc tơ khởitạoIVcó độ dài 64-bit.DECIMv2bao gồm thanh ghi dịch phản hồi tuyến tính A có độ dài tối đa 192-bit, được lọc bởi hàm BooleanLF14-biến. Trong chế độ tạo khóa dòng, đầu ra củaLFđược sử dụng đểnuôi một khối nén là hàm được gọi làABSG, mà đầu cuối điqua một bộ đệmBdài 32-bit để điều chỉnh tốc độ đầu ra khóa dòng.
DECIMv2được mô tả trong Hình 10, trong đó mô tả ảnh chụp, đúng thời điểm, bỏ qua biến phụ thuộc thời gian (i) từ các ký hiệu.
CHÚ THÍCH 1 Bài báo [6] được tham chiếu cho lý thuyết nền tảng vềlý do căn bản thiết kếcủaDECIMv2.
Biến trạng tháiSicủaDECIMv2bao gồm giá trị độ dài 192-bit của thanh ghiai=vàbiếnTiđộ dài 3-bit tương ứng với trạng thái của hàm nénABSG, 32-bitbi=trong bộđệmB, và số lượngI(i)bit trong bộ đệmBđã sẵn sàng đưa ra.
Hình 10 - Sơ đồ củaDECIMv2
HàmInit, được xác định chi tiết trong8.4.3, nhận đầu vào là khóaKđộ dài 80-bit và véc tơ khởi tạoIVđộ dài 64-bit và tạo ra giá trị khởi tạo của biến trạng tháiS0= (a(0),T(0),b(0),I(00).
HàmNext, được xác định chi tiết trong 8.4.5, nhận đầu vào là giá trị các biến trạng tháiSi= (a(i),T(i),b(i),I(i) và tạo ra đầu ra là giá trị tiếp của biến trạng tháiSi+1= (a(i+1),T(i+1),b(i+1),I(i+1)). HàmNextchạy trong 3 chế độ, tùy thuộc vào việc thực hiện lặp lại là một phần của khởi tạo thanh ghi, khởi tạo của bộ đệm hoặc bộ tạo khóa dòng tuần tự.
HàmStrm, được xác định chi tiết trong 8.4.6 nhận đầu vào là giá trịcủa các biến trạng tháiSi=(a(i),T(i),b(i),I(i) và tạo ra đầu ra là bit khóa dòngZi.
CHÚ THÍC 2: Tốc độ đầu ra chuẩn củaDECIMv2là ¼. Vì vậy,đểđồng bộ biến trạng thái và đầu ra khóa dòng, hàmNextthực hiện 4 vòng lặp tiêu chuẩn củaDECIMv2được quy định trong [6].
CHÚ THÍCH 3 Hàm nén củaDECIMv2có tốc độ đầu ra thay đổi, bằng 1/3 mức trung bình. Vìvậy, một cơ chếđệm được sử dụng để đảm bảo tốc độ đầu ra cố định. Sự khác biệt giữa tốc độ đầu ra bộ đệm và tốc độ đầu ra hàm nén, cũng nhưđộ dài bộ đệm, đã được lựa chọn đểđảm bảo rằng các bộ đệm luôn luôn có các chức năng như mong muốn với xác suất đa số, như mô tả trong 8.4.3.
CHÚ THÍCH 4DECIMv2kháng các tấn công như mô tả trong [18].
8.4.2.Các biến bổsung và ký hiệu
Đối với bộ tạo khóa dòngDecimv2, các ký hiệu sau đây được sử dụng thêm:
a | Biến trạng thái trong choDecimv2 |
ABSG | Hàm nén được sử dụng choDecimv2 |
b,b | Biến trạng thái trong choDecimv2 |
B | Hàm đệmđược sử dụng choDecimv2 |
F | Hàm phản hồi tuyến tính choDecimv2 |
I, I | Biến trạng thái trong choDecimv2 |
LF | Hàm lọc được sử dụng choDecimv2 |
T,T’ | Biến trạng thái trong choDecimv2 |
Y | Hàm Boolean được sử dụng choDecimv2 |
Ngoài ra, một số ký hiệu được sử dụng cho các biến phụ cục bộ trong mô tả các thuật toán. Những biểu tượng này chỉ xảy ra trong đặc tả hàm đưa ra và không cónghĩa toàn cục. Các biến này được mô tả trong phần khai báo của hàm.
8.4.3.Hàm khởi tạoInit
Hàm khởi tạoInitđược xác định như sau:
Đầu vào: KhóaKđộ dài 80-bit và véc tơ khởi tạoIVđộdài 64-bit.
Đầu ra: Giá trị khởi tạo của biến trạng tháiS0= (a(0),T(0),b(0),I(0)).
Biến cục bộ: biến đếmi,j
a)Khởi tạo thanh ghi với khóaKvà véc tơ khởi tạoIV.
- Đặt=Kjvớij= 0, 1, 2, …,79
- Đặt=Kj-80ÅIVj-80vớij= 80, 81, …,143
-Đặt=Kj-80ÅIVj-144ÅIVj-128ÅIVj-112ÅIVj-196vớij= 144,145, ...,159
-Đặt=Kj-160ÅIVj-128Å1vớij= 160, 161,…,191
b)Khởi tạo bộ đệm và hàm nén:
- ĐặtT(-256)= 000
- Đặt= 0 vớij= 0, 1,2,…,31
- ĐặtI(-256)= 0
c)ĐặtS-64=InitNext192(S-256,LFSR)
d)Đặti= -64
e)Trong khiI(i)< 32 vài< 0: ĐặtSi+1=InitNext(Si,BUFF) vài=i+1. Nếu số bước trong hàmInitcần cho thực thi được cố định thì có thể việc kiểmtraI(i)< 32 có thể được loại bỏ.
f)ĐặtS0=Si.
g)Đưa raS0.
CHÚ THÍCH Các bước d), e) vàf) của khởi tạoDECIMv2liên quan đến việc làm đầy bộ đệm trước khi bắt đầu đưa ra khóa dòng. Khi tốc độ đầu ra của hàm nén thay đổi, số lượng các bước yêu cầu để làm đầy bộ đệm cóthểthay đổi. Trong bước e) hàmInitNext(Si,BUFF) được lặp lại nhiều nhất 64 lần, đảm bảo rằng bộ đệm đầy với xác suấtlớn hơn 1 - 2-97. Tính trung bình, bộ đệm đầy sau 24 lần lặp lại.
Hình 11 - Chếđộ LFSR của khởi tạo hàm chuyển trạng thái theoInitNext
8.4.4.Khởi tạo hàm chuyển trạng thái theoInitNext
Decimv2cóhai chế độ hoạt động cho hàmInitNext: một chế độ được sử dụng trong quá trình khởi tạo thanh ghiAvà chế độ thứ 2 trong quá trình khởi tạo làm đầy bộ đệm.
Đầu vào: Biến trạng tháiSi= (a(i),T(i),b(i),I(i), mode є{LFSR,BUFF}
Đầu ra: Giá trị tiếp theo của biến trạng tháiSi+1= (a(i+1),T(i+1),b(i+1),I(i+1))
Biến cục bộ: biến đếmj, k, các bộ đệmfk,r, c, các bộ đệm trạng tháia(0),…,a(4),t(0),…,t(4),b(0),...,b(4),i(0),...,i(4).
Chế độLFSR(thực thi nếu mode = LFSR):
a)Cập nhật trạng thái của thanh ghiAvới các bước sau:
1)Đặta(0)=a(i)
2)Vớik= 0,1,2,3:
- Đặtfk=LF(a(k))vàr=L(a(k))Åfk.
- Vớii= 0,1, ...,190 đặt
- Đặt=r
3)Đặta(i+1)=a(4)
Hình 11 mô tả sơ đồ khối của chế độLFSRcủa hàmInitNext.
Chế độ BUFF (thực thi nếu mode = BUFF):
a)Cập nhật trạng thái của thanh ghiAvới các bước sau:
4)Đặta(0)=a(i)
5)Vớik= 0,1,2,3:
- Đặtfk=a(k)ÅLF(a(k)) vàr=L(a(k))
- Vớij= 0,1, …,190 đặt
- Đặt=r
6)Đặta(i+1)=a(4)
b)Đặtt(0)=T(i),b0,=bi,i(0)=I(i)
c)Vớik= 0,1,2,3:
1)Cập nhật trạng thái của khối nén với các bước sau:
-Đặtc=fkÅ
- Đặtt(k+1)=ABSG(t(k),fk)
- Nếu= 0, đặtoutput=TRUE, ngược lại đặtoutput=FALSE
2)Cập nhật trạng thái của bộ đệm bởi (b(k+1),i(k+1)) =b(k),i(k)đầu ra,c)
d)ĐặtT(i+1)=t(4)
e)Đặtb(i+1)=b(4)vàI(i+1)=i(4)
8.4.5.Hàm chuyển trạng thái theoNext
Đầu vào: Biến trạng tháiSi= (a(i),T(i),b(i),I(i)).
Đầu ra: Giá trịtiếp theo của biến trạng tháiSi+1= (a(i+1),T(i+1),b(i+1),I(i+1)).
Biến cục bộ: biến đếm j, k, các bộ đệmfk,r, c, các bộ đệm trạng thái
a(0),…,a(4),t(0),…,t(4),b(0),...,b(4),i(0),...,i(4).
a)Cập nhật trạng thái của thanh ghiAvới các bước sau:
7)Đặta(0)=a(i)
8)Vớik=0,1,2,3:
- Đặtfk=ÅLF(a(k)) vàr=L(a(k))
- Vớij= 0,1, …,190 đặt
-Đặt=r
9)Đặta(i+1)=a(4)
b)Đặtt(0)=T(i),b(0)=bi,i(0)=I(i)- 1
c)Vớij= 0,1,… ,t(0)-1, đặt
d)Vớik= 0,1,2,3:
1)nếui(0)= 0, đặtt(k+1)=t(k),output=TRUE vàc=fk, ngược lại cập nhật trạng thái của khối nén với các bước sau:
-Đặtc=
- Đặtt(k+1)=ABSG(t(k),fk)
- Nếu= 0, đặtoutput= TRUE, ngược lại đặtoutput= FALSE.
2)Cập nhật trạng thái của bộ đệm bởi (b(k+1),i(k+1)) =B(b(k),i(k),đầu ra,c)
e)ĐặtT(i+1)=t(4),b(i+1)=b(4)vàI(i+1)=i(4)
CHÚTHÍCH 1 Điều kiệnt(0)= 0 trong bước 1) của bước d) không bao giờ thỏa mãn: Nếu điều kiện thỏa mãn, điều này có nghĩa bộ đệm trởnên rỗng trong quá trình tạo khóadòng. Điều này xảy ra với xác suất nhỏ hơn 2-80tại mỗi trạng thái cập nhật, xem chi tiết hơn trong [8]. Ngoàira, xác suất này cao hơn nếu bộ đệm là không đầy sau hàm khởi tạoInit, nhưng, như đãđềcập trong 8.4.3 (CHÚ THÍCH), điều này cũng xảy ra với xác suất không đáng kể.
CHÚ THÍCH 2 HàmInitNextvà hàmNextcùng chia sẻ nhiều bước tính toán. Thật vậy, chếđộLFSRcủa hàmInitNextchủyếu bao gồm cập nhậtLFSRtrong chế độBUFFvà của hàmNextsự khác biệt duy nhất là đầu ra hàm Boolean được thêm bit phản hồi. Chế độ BUFF của hàmInitNextvà hàmNextchỉkhác nhau ở bộ đệmBchỉđược dịch chuyển muộn hơn.
8.4.6.Hàm khóa dòngStrm
Đầu vào: Biến trạng tháiSi= (a(i),T(i),b(i),I(i)).
Đầu ra: Bit khóa dòngZi.
a)ĐặtZi=
b)Đưa raZi
8.4.7.Hàm phản hồi tuyến tínhL
Đầu vào: xâuw= (w0,w1, …,w191)có độ dài 192-bit
Đầu ra: Bitq=L(w)
Đặtq=w0Åw3Åw4Åw23Åw36Åw37Åw60Åw61Åw98Åw115Åw146Åw175Åw176Åw187
8.4.8.Hàm trích lọcLF
Đầu vào: xâuw= (w0,w1,...,w191) có độ dài 192-bit
Đầu ra: Bitq = LF(w)
Đặtq = L(w). Đặtq =Y(w13,w28,w45,w54,w65,w104,w111,w144,w162,w172,w178,w186,w191))
8.4.6.Hàm BooleanY
Đầu vào: xâuw= (w0,w1,...,w12) có độ dài 13-bit
Đầu ra: Bitq =Y(w)
Đặtq= (Å0£j£12wj)Å(Å0£j£12wjwk)
CHÚTHÍCH Tương ứng,qđược cho bởiq= 0 niếuX= 0 hoặcX= 3 vàq=1 trong trường hợp ngược lại vớiX=w0+w1+…+w12mod 4
8.4.10.Hàm nénABSG
Đầu vào: 3-bit trạng tháiT, đưa vào bitc
Đầu ra: 3-bit trạng tháiT =ABSG(T,c)
a)NếuT0= 1, đặtT1=T’1, ngược lạiT’1=c.
b)ĐặtT’2=T0VÀ(T1Åc)
c)ĐặtT’0= (T0Å1)HOẶC T’2
8.4.11.Hàm bộ đệmB
Đầu vào: xâub= (b0,b1, ...,b31) cóđộ dài 32-bit, chỉ sốI, Booleanoutput, nhập vào bitc.
Đầu ra: xâub = (b’0,b’1,…,b’32)có độ dài 32-bit, chỉ sốI’.
a)ĐặtI’=I,b’=b.
b)Nếuoutput= TRUE, vàI’< 32, thực hiện như sau:
- Đặtb’I’=c.
- ĐặtI’=I’+1.
c)Đầu raB(b,i,output,c) = (b’,I’)
8.5.bộ tạo khóa dòng KCipher-2 (K2)
8.5.1.Giới thiệu KCipher-2 (K2)
KCipher-2 (K2) là bộ tạo khóa dòng trong đó sử dụng đầu vào là khóa bí mậtKđộ dài 128-bit và véc tơ khởi tạoIVđộ dài 128-bit. Khóa bí mật và Véc tơ khởi tạo được sử dụng để khởi tạo biến trạng tháiSi(i³0) bao gồm 20 khối 32-bit, trong đóSibiểu diễn trạng thái trong củaK2tại chu kỳi. Thứ tự bit/byte là big-endian, tức là nếu khóa và véc tơ khởi tạo được cho dưới dạng dãy các bit/byte, Thứ nhất/tận cùng bên trái của bit/byte có trọng số cao nhất của dữ liệu tương ứng. Đối với mỗi lần lặp của hàmStrm, 64-bit khóa dòngZiđược tạo coi như đầu ra.
Biến trạng tháiSicủaK2 bao gồm 3 thành phần. Thành phần đầu tiên bao gồm 5 biến 32-bit tuầntự:
trên trườngGF(232),m³0)
Dạng trạng thái của thanh ghi dịch phản hồi (FSR)A. Thành phần thứ haiB(i)bao gồm 11 biến 32-bit tuần tự:
B(i)=trên trườngGF(232),m³0)
Dạng trạng thái cho thanh ghi dịch phản hồi (FSR)B. Thành phần thứ ba bao gồm bộ 4 biến 32-bit:
R1(i),L1(i),R2(i),L2(i), trên trườngGF(232)
duy trì trạng thái của hàm phi tuyến. Phép toán củaK2 được tóm tắt trong Hình 12 và 13, trong đó mô tả một bản chụp các phép toán, tại thời điểmI, bỏ qua biến phụ thuộc thời gian(i).
Hình 12- Biểu đồ của K2
Hoạt động của K2 được xác định bởi ba hàm sau đây:
HàmInit, được xác định trong 8.5.2, nhận giá trịđầu vào là khóaKđộ dài 128-bit và véc tơ khởi tạoIVđộ dài 128-bit để tạo ra trạng thái khởi tạoS0=(A(0),B(0),R1(0),L1(0),R2(0),L2(0)).
HàmNext, được xác định trong 8.5.3, nhận giá trị đầu vào là trạng thái trongSi=(A(i),B(i),R1(i),L1(i),R2(i),L2(i)) và tạo như đầu ra giá trị tiếp theo của biến trạng tháiSi+1= (A(i+1),B(i+1),R1(i+1),L1(i+1),R2(i+1),L2(i+1)). HàmNextchạy trong hai chếđộ, tùy vào phép lặp thực thi là một phần của khởi tạo hoặc trong chế độ tạo đầu ra thông thường.
HàmStrm, được xác định trong 8.5.4, nhận giá trị đầu vào là trạng thái trong,Si=(A(i),B(i),R1(i),L1(i),R2(i),L2(i)) và tạo như đầu ra khóa dòngZi=.
CHÚTHÍCH 1 Số lượng khóa dòng tối đa được khuyến nghị của bít khóa dòng không có hoặc tạo khóa mới hoặc tái khởi tạo với véc tơ khởi tạoIVmới là 264bit.
CHÚ THÍCH 2 Đối với những cơ sởthiết kếcho K2,tham khảo [12],[13],[14].
Hình 13- Hàm phi tuyến của K2
8.5.2.Hàm khởi tạoInit
Hàm khởi tạo hút hoạt động như sau:
Đầu vào: KhóaKđộ dài 128-bit và véc tơkhởi tạoIVđộ dài 128-bit.
Đầu ra: Giá trị khởi tạo của biến trạng tháiS0=(A(0),B(0),R1(0),L1(0),R2(0),L2(0)).
Biến cục bộ: biến đếmm
a)Mở rộng khóaK= (K0,K1,K2,K3) độ dài 128-bit thành khóa trongIK=(IK0,IK1,...,IK11) độ dài 384-bit như sau:
1)Vớim= 0,1,2, 3 đặtIKm=Km.
2)Vớim= 4, 5,...11,
- Nếu m¹4 hay 8, đặtIKm=IKm-4ÅIKm-1.
- Nếum= 4, đặtRcon[0] = (0x01,0x00,0x00,0x00) và
IKm=IKm-4ÅSubk2Å(IKm-1<<328)Å(IKm-1>>3224))ÅRcon[- 1]. HàmSubK2được đề cập đến trong 8.5.5
- Nếum=8, đặtRcon[1] = (0x02,0x00,0x00,0x00) và
IKm=IKm-4ÅSubK2(IKm-1<<328)Å(IKm-1>>3224))ÅRcon[- 1]. HàmSubK2được đề cập đến trong 8.5.5
b)Khởi tạo các thanh ghi với khóa trongIKvàIV=(IV0,IV1,IV2,IV3).
- Vớim= 0,1,2,3,4 đặt=IK4-m.
- Đặt thanh ghi trongFSR-Bnhư sau.
- Đặt thanh ghi trong hàm phi tuyến như sau.
R1(-24)=0x00000000,L1(-24)=0x00000000,R2(-24)=0x00000000,L2(-24)=0x00000000
c)ĐặtS0=Next24(S-24,INIT), trong đóNext24biểu diễn 24 lần lặp của hàmNext
d)Đưa raS0
Chúng ta tham khảo 8.5.5 cho mô tả hàmSubK2.
8.5.3.Hàm chuyển trạng thái theoNext
K2 có 2 chế độ cho hàmNext
Đầu vào: Biến trạng tháiSi= (A(i),B(i),R1(i),L1(i),R2(i),L2(i)), mode = {INIT, null}.
Đầu ra: Giá trị tiếp theo của biến trạng tháiSi+1= (A(i+1),B(i+1),R1(i+1),L1(i+1),R2(i+1),L2(i+1)).
Biến cục bộ: biến đếmm
a)Đặt biến trong hàm phi tuyến như sau.
b)Vớim= 0,1,2, 3, đặt
c)Vớim= 0, 1, 2 9,đặt
d) Với chế độINIT, đặt
với chế độ null, đặt đặt
e)Với chế độINIT, đặt
với chế độ null,đặt
f)ĐặtSi+1= (A(i+1),B(i+1),R1(i+1),L1(i+1),R2(i+1),L2(i+1)).
g)Đưa raSi+1.
[Y] trong {0,1} biểu thị bit thứYcủa thanh ghi, trong đó[31] là bit có trọng số cao nhất của. Mô tả của hàmSubK2và sốhọc trường hữu hạn liên quan đến các phần tửcố địnha0,a1,a2vàa3được đềcập tương ứng đến trong 8.5.5, 8.5.6, 8.5.7, 8.5.8 và 8.5.9. Ngoài ra, định nghĩa của hàmNLFđược đềcập đến trong 8.5.10.
Hình 14 là sơ đồ khối của chếđộINITcủa hàmNext.
Hình 14 - ChếđộINITcủa hàmNext
8.5.4.Hàm khóa dòngStrm
Hàm khóa dòngStrmhoạt động như sau.
Đầu vào: Biến trạng tháiSi=(A(i),B(i),R1(i),L1(i),R2(i),L2(i)).
Đầu ra: Khóa dòngZi= () độ dài 64-bit.
a)Đặt=NLF)
b)Đặt=NLF
c)ĐặtZi= ()
d)Đưa raZi.
HàmNLFđược định nghĩa trong 8.5.10.
8.5.5.HàmSubK2
HàmSubK2là một hoán vị trong trườngGF(232), dựa trên các thành phần tửchuẩn mã hóa tiên tiến (AES) [TCVN 11367-3:2016 ISO/IEC 18033-3]. Trong hàmSubK2, giá trị đầu vào 32-bit được chia thành 4 xâu 1-byte và một hoán vịphi tuyến được áp dụng cho mỗi byte sử dụng hàm hay thế 8x8 bit(SBox) tiếp sau một hoán vị tuyến tính 32x32 bit. Các hàmSBoxlà giống nhưSBoxcủa AES, và hoán vịgiống như phép toánMixColumncủa AES.
CHÚ THÍCH 1 HàmSBoxAES,SBox, cóthể được tìm thấy trong 8.1.8 là hàmSUB.
CHÚ THÍCH 2 HàmSubK2tạo ra đầu ra tương tự nhưhàmTcủa 8.2.5.
Đầu vào: Một giá trịwđộ dài 32-bit biểu diễn cho một phần tử trên trườngGF(232).
Đầu ra: Một xâuq = SubK2(w) độ dài 32-bit.
Biến cục bộ: biến đếmm.
a)Đặtw= (w3,w2,w1,w0),trong đómỗiwmcó độ dài 8 bit.
b)Với mỗim=0, 1, 2, 3, đặttm=SBox(wm).
c)Đặtq= (q3,q2,q1,q0) như sau
Phép nhân các phần tửtiđược thực hiện trong trườngGF(28)dùng đa thức bất khả quyf(x) = x8+ x4+x3+x+1.
d)Đưa ra q.
8.5.6.Phép nhân củaa0trong trườngGF(232)
Đầu vào: Một giá trịwđộ dài 32-bit, biểu diễn cho 1 phần tử trên trườngGF(232).
Đầu ra: Một xâuw’độ dài 32-bit, biểu diễn choa0Äwtrên trườngGF(232).
a) Đặt w’=(w<<328)ÅaMUL0[w>>3224].
b)Đưa raw’.
HàmaMUL0được định nghĩa như sau:
8.5.7.Phép nhân củaa1trong trườngGF(232)
Đầu vào: Một giá trịwđộ dài 32-bit, biểu diễn cho 1 phần tử trên trườngGF(232).
Đầu ra: Một xâuw’độ dài 32-bit, biểu diễna1Äwtrên trườngGF(232).
a)Đặtw’= (w<<328)ÅaMUL1[w>>3224].
b)Đưa raw’.
HàmaMUL1được định nghĩa nhưsau:
8.5.8.Phép nhân củaa2trong trườngGF(232)
Đầu vào: Một giá trịwđộ dài 32-bit, biểu diễn cho 1 phần tửtrên trườngGF(232).
Đầu ra: Một xâuw’độ dài 32-bit, biểu diễn choa2Äwtrên trườngGF(232).
a)Đặtw’= (w<<328)ÅaMUL2[w>>3224].
b)Đưa raw’.
HàmaMUL2được định nghĩa như sau:
8.5.9.Phép nhân củaa3trong trườngGF(232)
Đầu vào: Một giá trịwđộ dài 32-bit, biểu diễn cho 1 phần tử trên trườngGF(232).
Đầu ra: Một xâuw’độ dài 32-bit, biểu diễn choa3Äwtrên trườngGF(232).
a) Đặtw’= (w<<328)ÅaMUL3[w>>3224].
b)Đưa raw’.
HàmaMUL3được định nghĩa như sau:
8.5.10.HàmNLF(a,b,c,d)
Đầu vào: 4 giá trị độ dài 32-bita, b, cvàd.
Đầu ra: Một xâuqđộ dài 32-bit
a)Đặtq= (a+32b)ÅcÅd).
b)Đưa raq.
PHỤ LỤC A
(Quy định)
ĐỊNH DANH ĐỐI TƯỢNG
Phụ lục này liệt kêcác định danh đối tượng gán cho các thuật toán được đặc tả trong bộ TCVN 11367 (ISO/IEC 18033) và xác định các cấu trúc tham số thuật toán. Vui lòng tham khảo tiêu chuẩn TCVN 11367-3:2016 (ISO/IEC18033-3) về các ID của đối tượng cho các chế độ hoạt động của mã khối.
PHỤ LỤC B
(Tham khảo)
CÁC PHÉP TOÁN TRÊN TRƯỜNG HỮU HẠN GF(2n)
Đối với bất kỳ số nguyên dươngntồn tại một trường hữu hạn gồm có 2nphần tử. Trường hữu hạn này duy nhất trên phép đẳng cấu và trong tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033) nó được gọi là trường hữu hạnGF(2n).
Trong mô tả đa thức, mỗi phần tử củaGF(2n) được mô tảbởi một đa thức nhị phân có bậc nhỏhơnn. Một cách rõràng hơn, xâu bita=an-1...,a2a1a0được thực hiện để đại diện cho đa thức nhịphân a(x) =an-1xn-1+…+a2x2+a1x +a0. Cơ sở của đa thức là tập hợpB=(xn-1, ...,x2,x, 1). Đối với 2 xâu bita=an-1…,a2a1a0vàb=bn-1...b2b1b0,tổng làc=aÅb=cn-1...c2c1c0, trong đóci=aiÅbi.
Phép nhân trong trường hữu hạn, được viết làaÄbtương ứng với phép nhân hai đa thứca(x)b(x) modulo với một đa thức bất khả quy nhịphânp(x) bậcn. Một đa thức là bất khả quy nếu nó không có ước số tầm thường.
GF(2n)\{0} ký hiệu làGF(2n)*là một nhóm abel đối với phép nhân và phần tử đơn vị là 1. Đối với bất kỳ đa thức nhịphân khác khôngb(x)bậc nhỏ hơnn, các nghịch đảo củab(x)ký hiệu làb-1(x), có thể được tính như sau: sử dụng thuật toán Euclid mở rộng để tính toán đa thứca(x)vàc(x)sao chob(x). a(x) + p(x). c(x)= 1. Do đó,a(x).b(x) mod p(x)= 1, có nghĩa làb-1(x) =a(x)modp(x). Thuật toán Euclid mở rộng được mô tả trong [15].
PHỤ LỤC C
(Tham khảo)
CÁC VÍ DỤ
C.1.Ví dụ cho MUGI
C.1.1.Khóa, véc tơ khởi tạo và bộ ba khóa dòng
C.1.2. Ví dụ các trạng thái trong
C.2. Ví dụ khóa 128 bit cho SNOW 2.0
C.2.1. Khóa, véc tơ khởi tạo và bộ ba khóa dòng
C.2.2.Ví dụ các trạng thái trong
C.3.Ví dụ khóa 256 bit cho SNOW 2.0
C.3.1.Khóa, véc tơ khởitạo và bộ ba khóa dòng
C.3.2.Ví dụ cáctrạng thái trong
C.4.Ví dụ cho Rabbit
C.4.1.Giới thiệu
Tất cả các véc tơ kiểm tra cho Rabbit được đưa ra trong ký hiệu little-endian, tức là cho số nhiều byte, các byte cótrọng số cao nhất được lưu trữ tại các địa chỉbộ nhớ cao nhất.
C.4.2.Khóa, véc tơ kiểm tra và bộ ba khóa dòng
C.4.3.Ví dụcác trạng tháitrong
C.5.Ví dụ choDecimv2
C.5.1.Giới thiệu vídụDecimv2
Các giá trị byte và phân tích nhịphân của các byte theo ký hiệu big-endian, tức là với số nhiều byte, byte có trọng số cao nhất được lưu trữ tại địa chỉ bộ nhớ thấp nhất. Đặc biệt, lưu trữkhóa, IV, khóa dòng, thanh ghi và bộ đệm byte và giá trịnhịphân đưa ra dưới đây.
K=K79...K0
IV = IV63...IV0
Z=Zn...Z0
a=a191...a0
b=b31...b0
T=T2T1T0
và, vídụ đưa ra khóa
K = de aa00 40 30 00 0f08 80
Mỗi thanh ghi được xác định:
[K79...K72] = de, [K71...K64] = aa... [K7…K0] = 80
Với phân tích bit như sau:
C.5.2.Khóa, véc tơ khởitạo và bộ ba khóa dòng
C.5.3.Ví dụ trạng thái trong
Các tương đương nhị phân của trạng thái trong cho các giai đoạn khóa, cụ thể được cung cấp tại thời điểm -256, thời điểm -64, thời điểm 0 và thời điểm 193.
Từ -256 đến -64 (thực thi củaInitNext(S,LRSR), các biến trạng thái trongT,bvàIcó giá trị sau:
C.6.Các ví dụ cho Kcipher-2(K2)
C.6.1.Khóa, véc tơ khởi tạo và bộ ba khóa dòng
C.6.2.Ví dụ các trạng thái trong
PHỤ LỤC D
(Tham khảo)
THÔNG TIN AN TOÀN
D.1.Mức độ an toàn của mã dòng
Phụ lục này liệt kêmức độ an toàn của mã dòng được mô tả trong tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033).
Bảng D.1-Mức độ an toàn của các chếđộ mã dòng
Hàm đầu ra | Bímật dữ liệu | Toàn vẹn dữ liệu |
Chế độ cộng nhịphân | Một cơ chế mã hóa dựa trên các hàm đầu ra làan toàn miễn là bộ tạo khóa dòng an toàn. Điều này được chứng minh bằng toán học. | Chếđộ này không cung cấp an toàn liên quan đến toàn vẹn dữ liệu. |
Chế độ MULTI-S01 | Việc an toàn liên quan đến toàn vẹn dữ liệu thông thường an toàn như bộ tạo khóa dòng. Tuy nhiên mức độ an toàn luôn luôn bị chặn trên bởi chiều dài của thông báo giả mạo. Một thông báo giả mạo có chiều dài làunbit có thểđược chấp nhận với xác suất thành công (u- 2)2-n, trong đónlà tham số an toàn của chế độ này. |
Bảng D.2-Mức độ an toàn của bộ tạo khóa dòng chuyên dụng
Bộ tạo khóa dòng | Tuyên bốan toàn | Độ dài khóa | Độ phức tạp tính toàn của tấn công tốt nhất đượcbiết đến |
Chế độ CFB, OFB, CTR với mã khốin-bit với độ dài khóak-bit | Giảsửrằng các mãkhối về cơ bản là an toàn, nói chung không thể phân biệt chế độ CFB, OFB và CTR từ một chuỗi ngẫu nhiên. Tuy nhiên, nếu số lượng các khối được xử lý vượt quá khoảng 2n/2thì xác suất của phân biệt giữa khóa dòng và chuỗi ngẫu nhiên trở nên đáng kể. Sự an toàn của khóa dòng được chặn trên bởi an toàn của mã khối, chẳng hạn độ dài khóa và mức độ mật mãcóthể được phân tích mã. | k- bit | 2n/ 2 |
MUGI | Không cómột tấn công phân tích mãnào được biết đến đối với MUGI nhanh hơn so với tấncông vét cạn khóa. MUGI có độdài khóa là 128- bit. | 128-bit | 2128 |
SNOW 2.0 | Đối với chế độ 256-bit, các thuật toán phân biệt đã được phân biệt đầu ra của SNOW 2.0 từ một chuỗi ngẫu nhiên. Cách tốt nhất để ước tính và cần biết khoảng 2174-bit khóa dòng. Điều này hầu như không vi phạm mức độ an toàn trên lý thuyết, có thể được suy ra từ độ dài khóa, 256-bit. Tuy nhiên, bất kỳ tấn công nào liên quan đến phân biệt đã biết sẽ không có mối đe dọa nào với sử dụng thực tế. | 128 hoặc 256-bit | 2174 |
Rabbit | Không có tấn công phân biệt nào được biết đến đối với với Rabbit nhanh hơn so với tấn công vét cạn khóa, miễn là không quá 264khối khóa dòng được tạo ra sử dụng một khóa. | 128 bit | 2128 |
Decimv2 | Không có một tấn công phân tích mã nào được biết đến đối vớiDecimv2nhanh hơn so với tấn công vét cạn khóa. | 80 bit | 280 |
KCipher-2(K2) | Không có một tấn công phân tích mã nào được biết đến đối với K2 nhanh hơn so với tấn công vét cạn khóa. K2 có độ dài khóa là 128-bit | 128 bit | 2128 |
D.2.An toàn hiệu quả đánh đổi trong MULTI-S01
Chonlà kích thước khối của hàm đầu ra MULTI-S01. Với thông báon.u-bit, hàm đầu ra MULTI-S01 lặp xử lý khốiu+2lần. Trong cảhai phần mềm và phần cứng thực hiện, việc tính toán chi phối là các phép nhân trong trường hữu hạnGF(2n).
Nếu hai thực thi, giữa kích thước khốinkhác nhau, được so sánh, việc thực thi vớinnhỏ hơn nói chung là nhanh hơn khối khác - mặc dù việc thực hiện với giá trịnnhỏ hơn lặp nhiều lần hơn, mỗi lần nhân có thể được tính trong thời gian ít hơn và sử dụng không gian nhỏ hơn. Các yếu tố mà việc tính toán tăng tốc độ lên phụ thuộc vào thuật toán và nền tảng được sử dụng đểthực thi nó.
Bảng D.3 - cho thấy một số kết quả thực nghiệm của việc thực thi MULTI-S01 vớin= 64.
Bảng D.3 - Kết quả thực nghiệm của việc thực thi chếđộ MULTI-S01 không có bộ tạo khóa dòng (n= 64)
Chọn lựa | Tốc độ/Kích thước | Đặc tả nền tảng |
ASIC tốc độ cao | 5.1 Gbps@80MHz, 25.7 KCổng | ASICsửdụng thư viện ngăn Hitachi HG73C (0.35mm) |
ASIC kích thước nhỏ | 2.0 K Cổng, 100Mbps@100MHz | |
Phần mềm | 10 chu kỳ/byte (hoặc tương đương 520 bps@650 MHz) | Intel Pentium III 650 MHz (Coppermine), Windows98 SE, RAM 64MB,Visual C++Ver.6.0 Service Pack 3. |
D.3.Hướng dẫn vềmãdòng
Phụ lục này liệt kêcác tính năng của mã dòngđược mô tả trong tiêu chuẩn này của bộ TCVN 11367 (ISO/IEC 18033).
Bảng D.4-Đặc điểm của mãdòng
Bộ tạo khóa dòng | Phát biểu thuộc tính |
Chế độ CFB, OFB, CTR với mã khối n-bit với độ dài khóak-bit | Thuận lợi của 3 chế độ này là chúng chia sẻ các thành phần với các chế độ khác của mã khối. Các chế độ này có thể được sử dụng cho bản rõcó độ dài bất kỳ trên một vài kiến trúc, và OFB và CTR là hai chếđộ phù hợp cho việc mã hóa và giải mã bản rõ độ dàinx-bit. CFB có thể khôi phục lỗi đồng bộ và hiệu năng của nó phụ thuộc vào độ dài khóadòng. CTR chấp nhận truy cập ngẫu nhiên đến bản mã. |
MUGI | MUGI sử dụng véc tơ khởi tạo độ dài 128-bit. Nó bao gồm các phép toán 64-bit và tạo ra 64-bit khóa dòng cho mỗilần thực hiện. Mật mãcó thể được sử dụng cho bản rõcó độ dài bất kỳ trên một số kiến trúc, và nó hiệu quả hơn cho kiến trúc CPU 64-bit và mãhóa/giải mã bản rõ độ dài64x. |
SNOW 2.0 | SNOW 2.0 sử dụng véc tơ khởi tạo độ dài 128-bit. Nó bao gồm các phép toán 32-bit và tạo ra 32-bit khóa dòng cho mỗi lần thực hiện. Mật mã có thể được sử dụng cho bản rõcó độ dài bất kỳ trên một sốkiến trúc và nó hiệu quả hơn cho kiến trúc CPU 32-bit và mã hóa/giải mãbản rõ độ dài32x. |
Rabbit | Rabbit sử dụng véc tơ khởi tạo độ dài 64-bit. Nóbao gồm các phép toán 32-bit và tạo ra 128-bit khóa dòng cho mỗi lần thực hiện. Mật mãcó thể được sử dụng cho bản rõ có độ dài bất kỳ trên một số kiến trúc và nó hiệu quảhơn cho kiến trúc CPU 32-bit và mã hóa/giải mã bản rõđộdài 128x. |
Decimv2 | Decimv2sử dụng véc tơ khởi tạo độ dài 64-bit. Nó bao gồm các phép toán từng bit và tạo ra 1-bit khóadòng cho mỗi lần thực hiện. Mật mã có thể được sử dụng cho bản rõcó độ dài bất kỳ trên một số kiến trúc và nó hiệu quảhơncho thực hiện phần cứng trên các thiết bị có tài nguyên hạn chế. |
KCipher-2 (K2) | KCipher-2 sử dụng véc tơ khởi tạo độdài 128-bit.Nó bao gồm các phép toán 32-bit và tạo ra 64-bit khóa dòng cho mỗi lần thực hiện. Mật mã có thể được sử dụng cho bản rõ cóđộ dài bất kỳ trên một số kiến trúc, và nó hiệu quả hơn cho kiến trúc CPU 32-bit và mã hóa/giải mã bản rõ độ dài64x. |
THƯ MỤC TÀI LIỆU THAM KHẢO
[1]ISO/IEC 9797-1:2011,Information technology-Security techniques-Message Authentication Codes (MACs)-Part 1: Mechanisms using a block cipher
[2]ISO/IEC 10116:2006,Information technology-Security techniques-Modes of operation for an n-bit block cipher
[3]ISO/IEC 10118-1:2000,lnformation technology-Security techniques-Hash-functions-Part 1: General
[4]ISO/IEC 11770-1:2010,lnformation technology-Security techniques-Key management-Part 1: Framework
[5]ISO/IEC 11770-3:2008,Information technology-Security techniques-Key management-Part 3: Mechanisms using asymmetric techniques
[6]Berbain,C., Billet,O., Canteaut, A., Courtois, N., Debraize. B.,Gilbert, H., Goubin, L., Gouget,A., Granboulan, L., Lauradoux,C., Minier, M., Pornin, T. and Sibert, H.,“DECIMv2, a compact hardware- oriented stream cipher”, SASC 2006 - Stream Ciphers revisitedWorkshop, Leuven, Belgium, 2006
[7]Biryukov, A. and Shamir, A.,“Cryptanalytic Time/Memory/Data Tradeoffs forStream Ciphers”, Advances in Cryptology - ASIACRYPT 2000, 6th International Conference on the Theory and Application of Cryptology and Information Security, Kyoto, Japan, December 2000, Proceedings, ed. Okamoto, T., Lecture Notes in Computer Science vol. 1976, Springer-Verlag, pp.1-13, 2000
[8]Boesgaard, M., Vesterager, M., Pedersen, T., Christiansen, J., and Scavenius,O.,“Rabbit: A new high- performance stream cipher“. In T. Johansson, editor, Proc. Fast Software Encryption 2003, Lecture Notes in Computer Science vol.2887, Springer-Verlag, pp.307-329, 2003
[9]Boesgaard, M.(Vesterager, M.t Christensen, T., Zenner, E.,“The Rabbit stream cipher - design and security analysis”. Available from <http://www.cryptico.com/files/filer/rabbitsasc.final.pdf>
[10]Ekdahl,P. and Johansson, T.,“A new version of the stream cipher SNOW”, SelectedAreas in Cryptography, 9th AnnualWorkshop, SAC 2002, St. John s, Newfoundland, Canada, Aug. 2002, Revised Papers, eds. Nyberg, K. and Heys, H.,Lecture Notes in Computer Science vol. 2595, Springer- Verlag, pp.47-61, 2002
[11]Furuya,S., Watanabe, D., Seto, Y., and Takaragi, K.,“Integrity-Aware Mode ofStream Cipher,”IEICE Transactions on Fundamentalsof Electronics, Communications and Computer Science vol. E85-A No.1, pp.58-65, 2002
[12]Kiyomoto,S., Tanaka, T.,and Sakurai, K.,“A Word-OrientedStream Cipher Using Clock Control”, In SASC 2007Workshop Record, pp.260-274, January, 2007
[13]Kiyomoto,S., Tanaka, T., and Sakurai, K.,“K2: AStream Cipher Algorithm Using Dynamic Feedback Control“, In Proc. of SECRYPT 2007, pp.204-213, July, 2007
[14]Kiyomoto,S., Tanaka, T., and Sakurai, K.,“K2Stream Cipher”, Communications in Computer and Information Science, E-business and Telecommunications, 4th International Conference, ICETE 2007, Barcelona. Spain, July 28-31, 2007, Revised Selected Papers, pp.14-226
[15]Menezes, A.J., van Oorschot, P.C., and Vanstone, SA, Handbook of Applied Cryptography, CRC Press, 1996
[16]Nyberg, K., Wallen,J.,“Improved Linear Distinguishers for SNOW 2.0”, FSE 2006, Lecture Notes in Computer Science vol.4047, Springer-Verlag, pp.44-162, 2006
[17]Watanabe, D., Furuya,S., Yoshida, H., Takaragi, K., and Preneel, B.t“A New KeyStreamGenerator MUGI,”Fast Software Encryption, 9th InternationalWorkshop, FSE 2002, Leuven, Belgium, February 4-6, 2002, Revised Papers, eds. Daemen, J. and Rijmen, V., Lecture Notes in Computer Science vol.2365, Springer-Verlag, pp.179-194, 2002
[18]Wu, H. and Preneel, B„“Cryptanalysis of the stream Cipher DECIM”, Proc. FSE 2006, LectureNotes in Computer Science vol. 4047, Springer-Verlag, pp.30-40, 2006
[19]ISO/IEC 9834 (all parts), lnformation technology-Open Systems Interconnection-Procedures for the operation ofOSIRegistration Authorities
MỤC LỤC
Lời nói đầu
Giới thiệ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 và từ viết tắt
4.1.Ký hiệu
4.2.Các hàm
5.Khung cho mã dòng
6.Mô hình tổng quát của mã dòng
6.1.Các bộ tạo khóa dòng
6.2.Các hàm đầu ra
6.2.2.Hàm đầu ra cộng nhị phân
7.Xây dựng bộ tạo khóa dòng từ mã khối
7.1.Các chế độ mã khối cho bộ tạo khóa dòng đồng bộ
7.2.Chế độ mã khối cho bộ tạo khóa dòng tự đồng bộ
8.Bộ tạo khóa dòng chuyên dụng
8.1.Bộ tạo khóa dòng MUGI
8.2.Bộ tạo khóa dòng SNOW 2.0
8.3.Bộ tạo khóa dòng Rabbit 32
8.4.Bộ tạo khóa dòngDecimv2
8.5.Bộ tạo khóa dòng KCipher-2 (K2)
Phụ lục A (Quy định) Định danh đối tượng
Phụ lục B (Tham khảo) Các phép toán trên trường hữu hạnGF(2n)
Phụlục C (Tham khảo) Các ví dụ
Phụ lục D (Tham khảo) Thông tin an toàn
Thư mục tài liệu tham khảo