Phiên bản thử nghiệm
BAN CƠ YẾU CHÍNH PHỦ
CỤC QUẢN LÝ MẬT MÃ DÂN SỰ VÀ KIỂM ĐỊNH SẢN PHẨM MẬT MÃ
NATIONAL AGENCY OF CRYPTOGRAPHY AND INFORMATION SECURITY
Thuật toán mật mã - Phần 4: Mã dòng
02:39:00 | 02-05-2020

Các nội dung chính TCVN 11367-4:2016
“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”

ISO/IEC 18033-4 “Information technology – Security techniques – Encryption algorithms – Part 4: Stream ciphers

    Tiêu chuẩn này nằm trong 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à một số bản mã trước (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 bao gồm hai hàm đầu ra: hàm đầu ra cộng nhị phân và hàm đầu ra MULTI-S01; năm bộ tạo khóa dòng chuyên dụng: bộ tạo khóa dò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; bộ tạo khóa dòng Kcipher-2(K2) và quy định hàm đầu ra để kết hợp một khóa dòng với bản rõ; bộ tạo khóa dòng để sinh khóa dòng, và đị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/IEC 9834.

    Mô hình tổng quát của mã dòng

    Mã dòng được quy định trong tiêu chuẩn này và được xác định bởi hai đặc tả của hai quy trình: Bộ tạo khóa dòng đồng bộ hoặc bộ tạo khóa dòng tự đồng bộ. 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.

     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óa K và véc tơ khởi tạo IV và cho đầu ra một trạng thái khởi tạo S0 cho 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ạo IV. 

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òng Si, và đưa ra trạng thái tiếp theo của bộ tạo khóa dòng Si+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óa dòng Si, và đưa ra khối khóa dòng Zi.

    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ạo S0 đượ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ới i = 0, 1,…

a) Đưa ra khối khóa dòng Zi=Strm(Si,K).

b) Cập nhật trạng thái máy Si+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àm Init, Next 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.

    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ởi tạ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óa K và véc tơ khởi tạo IV và đưa ra đầu vào trong cho bộ tạo khóa dòng S và 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ào S và khối bản mã r C-1, C-2,…,C-r và đưa ra khối khóa dòng Zi.

    Để 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ồi r  và hàm Init và hàm Strm.

    Một số bộ tạo khóa dòng chuyên dụng:

    - Bộ tạo khóa dòng MUGI: MUGI là bộ tạo khóa dòng sử dụng khóa bí mật K 128-bit, véc tơ khởi tạo IV 128-bit và biến trạng thái Si (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òng Zi tại mỗi lần lặp của hàm Strm.

    - Bộ tạo khóa dòng SNOW 2.0: SNOW 2.0, ký hiệu là SNOW, là bộ tạo khóa dòng sử dụng như là đầu vào khóa bí mật K có độ dài 128 hoặc 256-bit và một véc tơ khởi tạo IV có độ dài 128-bit. Chúng được sử dụng để khởi tạo biến trạng thái Si (i≥0) bao gồm 18 khối n = 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àm Strm, 32-bit khóa dòng Zi được tạo coi như đầu ra.

    - Bộ tạo khóa dòng Rabbit: Rabbit là bộ tạo khóa dòng sử dụng khóa bí mật K có độ dài 128-bit, véc tơ khởi tạo IV có độ dài 64-bit và biến trạng thái trong Si (i≥0) có độ dài 513-bit. Rabbit đưa ra khối khóa dòng Zi có độ dài 128-bit tại mỗi lần lặp hàm Strm.

    - Bộ tạo khóa dòng Decimv2: DECIMv2 là bộ tạo khóa dòng trong đó sử dụng khóa bí mật có độ dài 80-bit và véc tơ khởi tạo Icó độ dài 64-bit.  DECIMv2 bao 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 Boolean LF 14-biến. Trong chế độ tạo khóa dòng, đầu ra của LF được sử dụng để nuôi một khối nén là hàm được gọi là ABSG, mà đầu cuối đi qua một bộ đệm B dài 32-bit để điều chỉnh tốc độ đầu ra khóa dòng.

    - Bộ tạo khóa dòng 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ật K độ dài 128-bit và véc tơ khởi tạo IV độ 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ái Si (i≥0) bao gồm 20 khối 32-bit, trong đó Si biểu diễn trạng thái trong của K2 tạ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àm Strm, 64-bit khóa dòng Zi được tạo coi như đầu ra.

    Các hàm đầu ra, cách tạo các bộ khóa dòng từ mã khối, các ví dụ cụ thể cho mã dòng, các thông tin an toàn và các phép toán trên trường hữu hạn GF(2n) có liên quan tới mã dòng được quy định chi tiết tại TCVN 11367-4:2016.

TS. Hồ Văn Hương, Cục QLMMDS & KĐSPMM

Đường dây nóng
Phòng QLMMDS: 024 3775 6896
Trung tâm ĐGSPH: 024 3232 3313
Cục trưởng: 0903 234 845
P.Cục trưởng phụ trách: 0913 592 170