TCVN11367-4:2016

Tiêu chuẩn quốc gia TCVN 11367-4:2016 (ISO/IEC 18033-4:2011) về 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 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 In f ormation 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 ín h 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 11367 Cô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ó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 Decim v 2 ; 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 In f ormation 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/IEC 9834. 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 (con f identiality) 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 (keystream f unction) 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 b i t (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 (output f unction) Hàm kết hợp khóa d ò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 0 x 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ứ Y của thanh ghi Am (i ) trong KCipher-2 (K2). a i Các biến trong trạng thái trong của bộ tạo kh ó a dòng. b i 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. C i Khối bản mã. D i Hằng số 64-bit được sử dụng cho MUGI. e K Hàm mã h ó a mã khối đối xứng sử dụng khóa bí mật K . F Hàm con được sử dụng cho MUGI. FSM Hàm con được sử dụng cho SNOW 2.0. GF(2 n ) Trư ờ ng hữu hạn gồm có 2 n phần tử. GF(2 n ) [x] Vành đa thức trên trường hữu hạn GF(2 n ) Init Hàm tạo trạng thái khởi tạo trong của bộ tạo khóa d ò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. O FB 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õ. P i Khối bản r õ . R Đầu vào bổ sung cho biến Out . S R 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. Su b K2 Hàm con được sử dụng cho KCipher-2 ( K 2 ). S i 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. Z i Khối khóa d òng. a MUL Bảng tra cứu đư ợ c sử dụng cho SNOW 2.0. a MUL 0 Bảng tra cứu với ch ỉ số 0 được sử dụng cho KCipher-2 (K2). a MUL 1 Bảng tra cứu với chỉ số 1 được sử dụng cho KCipher-2 (K2). a MUL 2 Bảng tra cứu với chỉ số 2 được sử dụng cho KCipher-2 (K2). a MUL 3 Bảng tra cứu với chỉ số 3 được sử dụng cho KCipher-2 (K2). a inv_M UL Bảng tra cứu nghịch đảo được sử dụng cho SNOW 2.0. r l Hàm con được sử dụng cho MUGI. l l 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 modulo 2 m . Å 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ạn GF(2 n ) . Phép cộng modulo n t Phép dịch trái t -bit trong thanh ghi n -bit. >> n t Phép dịch phải t -bit trong thanh ghi n -bit. n t Phép dịch vòng sang trái t - bit trong thanh ghi n -b i t. >>> n t Phép dịch vòng sang phải t - bit trong thanh ghi n -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ọn j bít bên trái của mảng A = ( a 0 , a 1 , … , a m-1 ) để bạo ra một mảng j -bit và được viết ( j~A ) = ( a 0 , a 1 , … , a j -1 ) Phép toán xác định với 1 £ j £ m . Xem trong ISO/IEC 10116:2006. 4.2.2 . P hép toán dịch Phép toán dịch được xác định như sau: Cho một biến n -b i t X và biến k -bit V trong đó 1 £ k £ n , tác dụng của hàm d ị ch để tạo ra biến n -bit Shift k ( X\V ) = ( x k , x k+ 1 ,..., x n - 1 , v 0 , v 1 ,...,v k ) ( k <> ) Shift k ( X\V ) = ( v 0 , v 1 ,...,v k -1 ) ( k = n ) Kết quả sự dịch chuyển các bit của mảng X sang trái k vị tr í , bỏ đi x 0 , x 1 ,. .. ,x k- 1 và đưa vào bên phải nhất m ả ng V k vị trí của X . Khi k = n thì hoàn toàn thay thế X bởi V . Xem ISO/IEC 10116:2006. 4.2.3 . Biến I (k) Biến l (k) là một biến k -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 ( I SO/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 trong tiê u chuẩn I SO/IEC 10116 và ý nghĩa của các hàm được sử dụng trong đặc tả đ ược xác định trong 6.2.1 và 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, I nit , nhận đầu vào khóa K và véc tơ khởi tạo I V và cho đầu ra một trạng thái khởi tạo S 0 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 I V . 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 S i , và đưa ra trạng thái tiếp theo của bộ tạo khóa dòng S i+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 S i , và đưa ra khối khóa dòng Z i . 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 S 0 được xác định bởi: S 0 = Init ( I V , 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 Z i = Strm ( S i , K ). b) Cập nhật trạng thái máy S i+1 = Next ( S i , 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 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. 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 ở 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 , S tr m , 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 Z i . Để 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 . 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 ọ n Ou t , 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àm Out kết hợp khối bản r õ P i , khối khóa dòng Z i và một số đầu vào khác R nếu cần thiết để đưa ra khối bản mã C i ( 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õ P i bằng khối khóa dòng Z i xác định như sau: C i = Out ( P i , Z i , R ) Và giải mã khối bản mã C i b ằ ng khối khóa dòng Z i xác định như sau: P i = Ou t -1 ( P i , Z i , R ). Hàm đầu ra phải đáp ứng cho bất kỳ khối khóa dòng Z i , khối bản r õ P i và đầu vào khác R , P i = Out - 1 ( Out ( P i , Z i , R ), Z i , 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òng l à phép toán XOR từng bit. Phép toán Out có hai đầu vào v à không sử dụng bất kỳ thông tin b ổ sung R đ ể tính toán. Cho n là độ dài bit của P i . Hàm này xác định như sau: Out ( P i , Z i , R ) = P i Å Z i Phép toán Out -1 xác định như sau: Out - 1 ( C i , Z i , R ) = C i Å Z i 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àn n . Việc tính toán đ ầ u ra phụ thuộc vào sự lựa chọn trường GF(2 n ) , tức là phụ thuộc vào lựa chọn đa thức bất khả quy bậc n trên trường GF(2 n ) . Hàm MULTI-S01 chỉ chấp nhận thông báo có chiều dài l à bội số của n . Để mã hóa thông điệp có chiều dài không phải là bội của n , yêu cầu sử dụng thêm cơ chế đệm Pad(M). CHÚ THÍCH Việc d ư thừa R được tạo ra theo cách mà người gửi và người nh ậ n chia sẻ n ó . R c ó thể là một giá trị công khai c ố định như 0x00...0. b) Hàm mã hóa Out(P, R, Z) Đầu vào: bản rõ P n.u - bit, khóa dòng Z = ( Z 0 , Z 1 , ...), Trong đó Z i là các khối n -bit, dư thừa R n -bit. Đầu ra: Bản mã C . 1) Lấy t l à giá trị th ấ p nh ấ t của i ( i ³ 0) sao cho Z i # 0 (n) . 2) Lấy ( P 0 , P 1 , … P u- 1 ) = P , trong đ ó P i là khối n -bit 3) Đặt P u = Z t+u +3 . 4) Đặt P u +1 = R . 5) Đối với mỗi P i , thực hiện các phép t í nh sau ( vớ i i = 0,1,..., u + 1 ). - Lấy W ị = P i Å Z t + i +1 . - Lấy X i = Z t Ä W i (trong trường G F(2 n ) ). - Lấy C i = X­ i Ä W­ i-1 trong đ ó W i- 1 là giá trị W của khối i -1 trước đó và W -1 = 0 ( n ) - Đặt C = C 0 || C 1 || … ||| C u +1 . - Đưa ra C . H ì nh 1 mô tả sơ đồ khối của hàm Out 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ào n . V í dụ, trong trư ờ ng hợp n =64 và 128, c ó thể sử dụng đa thức b ấ t khả quy x 64 + x 4 +x 3 + x +1 v à x 128 + X 7 +x 2 + x + 1. c) Hàm giải mã Out -1 ( P ,Z, R ) Đầu vào: bản mã C đ ộ dà i n. v -bit khóa dòng Z , dư thừa R độ dài n -bit . Đầu ra: bản rõ P hoặc “ từ ch ối” . 1) Lấy t l à giá trị thấp nhất của i ( i ³ 0) sao cho Z i ¹ 0 (n ) . 2) Lấy ( C 0 , C 1 ,... C v-1 ) = C , trong đó C i là khối n -bit 3) Đối với mỗi C i , thực hiện các phép tính sau (với i=0, 1 ,...,v- 1 ): - Lấy X i = C i Å W i -1 , trong đó W - 1 = 0 (n) . - Lấy W i = Z­ t -1 Ä X­ i (trong trường GF(2 n ) ). - Lấy P i = W i Å Z t+ i +1 . 4) Nếu P v - 2 = Z t +v +1 và P v- 1 = R , đưa ra P = P 0 || P 1 || … || P v - 3 là bản rõ. Nếu không, đưa ra biểu tượ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àm Out -1 Hình 2 - Hàm Out -1 của chế độ MULTI-S01 d) Cơ chế đệm Pad(M) Chỉ khi độ dài của thông báo đầu vào không phải là bội số của n , cơ chế đệm Pad(M) sau đây được thực thi: Đầu vào: Xâu M độ dài ( nv+c )- bit, trong đó v là 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âu 0 (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ủa n , 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 b i t 0 ở phần cuối của dữ liệu v à l oại b ỏ các b i t “ 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ối e K n -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ạo IV à xâu n- bit. IV sẽ được tạo ra khác nhau cho hai quá trình mã hóa với cùng một khóa K . Hàm In i t , Next và Strm được quy định như sau: - Init( I V,K)= I V. - Next ( S i , K) = e K (S i ) - Strm ( S i ) = (r ~ S i ). CHÚ THÍCH Init( I V , K) = IV t ương đư ơ ng với S 0 = I V . Trong trường hợp của chế độ OFB, hàm đầu ra cộng nhị phân được xác định trong 6.2.2 được sử dụng. Hình 3 mô tả sơ đồ khối của bộ tạo khóa dòng dựa tr ên chế độ CFB. Hình 3 - Tạo khóa dòng dựa trên ch ế độ O F B 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ạo IV l à xâu n -bit cần được đảm bảo rằng S i ¹ S’ j cho hai khóa dòng S 0 , S 1 , S 2 , … và S ’ 0 , S ’ 1 , S ’ 2 ,... được tạo ra với cùng một khóa K . Hàm Init, N ext và Str m được xác định như sau: - Init (I V, K) = IV. - Next ( S i , K) = S i + 1 mod 2 n . - Strm(S i , K) = ( r ~ e K ( S i )) . CHÚ THÍCH Init (I V, K) = IV tương đương v ớ i S 0 = IV . Trong trường hợp của chế độ CTR, hàm đầu ra cộng nhị phân được xác định trong 6.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ối n -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ước j của bộ đệm phản hồi S i , trong đó n £ j £ 1024 n , kích thước biến phản hồi b , trong đó 1 £ b £ n và kh ố i đầu ra có k í ch thước r , trong đó 1 £ r £ b . CHÚ THÍCH 1 Giá trị b-r c ầ n nhỏ hơn b Véc tơ khởi tạo IV cần được tạo ngẫu nhiên xâu j- 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óa K . Hàm I n i t, Next v à Strm được xác định như sau: - Init ( IV, K ) = IV . - Next ( S ) = Shift b ( S | Shift r (I ( b ) | C i )). - Strm ( S, K ) = ( r ~ e K (( n ~ S ))). CHÚ THÍCH 2 I nit ( IV , K ) = IV tương đương với S 0 = I V. 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 ò ng d ự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ật K 128-bit, véc tơ khởi tạo IV 28-bit và biến trạng thái S i ( 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 Z i tạ i mỗi lần lặp của hàm Strm . CHÚ THÍCH Bộ tạo khóa dò 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ới j = 0, 1, 2) và bi ế n 16-khối b ( i ) = , Trong đó là khối (với j = 0, 1,..., 15) H à m Init , được xác định chi tiết trong 8.1.2, nhận đầu vào khóa K độ dài 128-bit và véc tơ khởi tạo IV độ dài 128-bit và tạo giá trị ban đầu của biến trạng thái S 0 = ( a (0) , b (0) ), Hàm Next , được xác định chi tiết trong 8.1.3, nhận đầu vào biến trạng thái 19-khối S i = ( a (i) , b ( i ) ) và đầu ra là giá trị tiếp theo của biến trạng thái S i +1 = ( a ( i +1) , b ( i +1) ). Hàm Strm , được xác định chi tiết trong 8.1.4, nhận đầu vào biến tr ạ ng thái 19-khối S i = ( a (i) , b ( i ) ) và đầu ra là khối khóa dòng Z i . Lưu ý rằng hàm Next được xác đ ị nh trong các số hạng của r 1 và l 1 được xác định tương ứng trong 8-1.5 và 8.1.6. Hàm r 1 được xác định trong số hạng của hàm r 1 đ ược xác định trong 8.1.7 Có 3 hằng số được sử dụng trong MUGI, D 0 trong hàm khởi tạo I nit , và D 1 , D 2 trong r 1 . Chúng xác định bởi: D 0 = 0 x6A09E667F3BCC908, D 1 = 0xBB67AE8584CAA73B, D 2 = 0x3C6EF372FE94F82B. 8.1.2 . Hàm kh ở i tạo In i t 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ủa K được biểu diễn tương ứng b ằ ng K 0 và K 1 . IV 0 và I V 1 được xác định theo cách tương tự. Hàm khởi tạo I nit như sau: Đầu vào: Khóa K 128 -bit , véc tơ khởi tạo IV đ ộ dài 128-bit. Đầu ra: Giá trị khởi tạo của biến trạng thái S 0 = ( a (0) , b (0) ) a) Đặt khóa K vào thành ph ầ n của biến trạng thái a ( - 49) như sau: - Đặt ( K 0 , K 1 ) = K , trong đó K i là 64 bit với i = 0, 1 - Đặt = K 0 . - Đặt = K 1 . - Đặt = ( K 0 64 7) Å = ( K 1 >>> 64 7) Å D 0 . D 0 trong biểu thức trên là hằng số (xem 8.1). b) Với i = -49, -48,..., -34 đặt a ( i +1) = r 1 ( a ( i ) , 0 (64) , 0 (64) ). Mô tả của r xem 8.1.5. c) Với i = 0, 1 ,…, 15 đặt = a 0 (i-48) d) Thêm véc tơ khởi tạo IV v à o trạng thái như sau: - Đặt IV 0 || IV 1 = I V , trong đó IV i l à khối - Đặt = Å IV 0 . - Đặt = Å IV 1 . - Đặt = Å ( IV 0 64 7) Å ( IV 1 >>> 64 7) Å D 0 . e) Với i = -32, -31,..., -17, đặt a ( i +1) = r 1 ( a ( i ) , 0 ( 64 ) , 0 (64) ) f) Đặt S -16 = (a ( -16 ) , b (- 16 ) ) g) Lặp hàm cập nhật Next 16 lần: Đặt S 0 = N ext 16 ( S - 16 ) Trong đ ó Next 16 đại diện cho 16 lần lặp của hàm chuyển trạng thái theo Next h) Đưa ra S 0 . 8.1.3 . Hàm chuy ể n trạng th á i theo Next Hàm chuyển trạng thái theo của MUGI được xác định là sự kết hợp của r 1 và l 1 . Hàm chuyển trạng thái theo của MUGI như sau: Đầu vào: Biến trạng thái S i = (a ( i ) , b ( i ) ). Đầu ra: Trạng thái tiếp theo của biến trạng thái S i + 1 = ( a ( i +1) , b ( i +1) ). - Đặt a ( i +1 ) = r 1 ( a i , , ). Mô tả chi tiết của hàm r 1 được đưa ra trong 8.1.5. - Đặt b ( i +1 ) = l ­ 1 (b i , a 0 (i) ). Mô tả chi tiết của hàm l 1 được đưa ra trong 8.1.6. - Đặt S i +i = ( a ( i +1) , b ( i +1 ) ) - Đưa ra S i +1 . 8.1.4 . Hàm khóa dòng S tr m Hàm khóa dòng Strm như sau: Đầu vào: Biến trạng thái S i . Đầu ra: Khối khóa dòng Z i . - Đặt Z i = - Đưa ra Z i . 8.1.5 . Hàm r 1 Hàm r 1 như sau: Đầu vào: Biến trạng thái a ( i ) , hai tham số độ dài 64-bit w 1 , w 2 . Đầu ra: Giá trị tiếp theo của biến trạng thái a ( i +1) - Đặt -Đặt Å F ( , w 1 ) Å D 1 . - Đặt Å F ( , ( w 2 64 17) Å D 2 . - Đưa ra a ( i +1) . D 1 , D 2 l à hằng số (xem thêm chi tiết tại 8.1). H ì nh 6 mô tả sơ đồ kh ố i của hàm r 1 . M ô tả chi tiết của hàm F được đưa ra trong 8.1.7. H ì nh 6 - Hàn r 1 của MUGI 8.1.6 . Hàm l 1 Hàm l 1 như 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ái b ( i + 1) - Đặt với j ¹ 0, 4, 10. - Đ ặ t Å a' . - Đặt - Đặt 64 32) Đưa ra b ( t +1) . 8.1.7 . Hàm F Hàm F dùng phép toán trên trường hữu hạn GF (2 8 ). Trong biểu diễn đa thức, GF(2 8 ) đượ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ường GF (2). Bộ tạo khóa dòng MUGI sử dụng đa thức bất khả quy sau: f (x) = x 8 + x 4 + x 3 + x + 1. Hàm F là 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ái b ) , phép biến đ ổ i phi tuy ế n sử dụng hàm S R , biến đ ổ i tuyến tính sử dụng ma trận M và 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àm F tương ứng là X và Y . Khi đó, hàm F x á c định như sau: Đầu vào: hai xâu X và T độ dài 64-bit. Đầu ra: xâu Y độ dài 64-bit. - X ' = X Å T - Đặt ( X 0 , X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 ) = X ' trong đó X i là xâu có độ dài 8-bit - Đặt P i = S R ( X i ) với i = 0,1 , …, 7. - Đặt P L = P 0 || P 1 || P 2 || P 3 . - Đặt P R = P 4 || P 5 || P 6 || P 7 . -Đặt Q L = M ( P L ). - Đặt Q R = M ( P R ) . - Đặt ( Q 0 , Q 1 , Q 2 , Q 3 ) = Q L . - Đặt ( Q 4 , Q 5 , Q 6 , Q 7 ) = Q R ., - Đặt Y = Q 4 || Q 5 || Q 2 || Q 3 || Q 0 || Q 1 || Q 6 || Q 7 . - Đưa ra Y. Hình 7 mô t ả sơ đồ khối của hàm F H ì nh 7 - Hàm F của MUGI 8.1.8 . Hàm S R Hàm S R là hàm nội tại của hàm F . Hàm S R có thể được mô tả bằng cách sử dụng bảng thay th ế . Trong trường hợp này, hàm S R như sau: Đầu vào: xâu x độ dài 8 -b i t Đầu ra: x â u đ ộ dài 8-b i t. - Đặt y = S UB [ x ] - Đưa ra y . SUB sử dụng trong hàm S R là thay thế như sau: 8.1.9 . Hàm M Hàm M l à hàm nội tại của hàm F . Hàm M như sau: Đầu vào: xâu X c ó độ dài 32-bit. Đầu ra: x â u Y có độ dài 32-bit - Đặt ( x 0 , x 1 , x 2 , x 3 ) = X , trong đó x i l à xâu c ó độ dài 8-bit và là phần tử của G F( 2 8 ). - Đặt Trong đó 0x01, 0x02 và 0x03 là biểu diễn thập l ục phân của các phần tử của trư ờ ng GF(2 8 ). - Đặt Y = y 0 || y 1 || y 2 || y 3 . - Đưa ra Y . 8.2 . Bộ tạo khóa dòng SNOW 2.0 8.2.1. Giới thiệu SNO W 2.0 SNOW 2.0, trong phần tiếp theo ch ỉ đơn giản 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 S i ( 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, bi t/ 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 Z i được tạo coi như đầu ra. Bi ế n trạng thái SNOW S i bao 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ểm i , 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àm I nit , xác định chi tiết trong 8.2.2 , nhận đầu vào khóa K có độ dài 128 hoặc 256-bit và véc tơ khởi tạo IV có độ dài 128-bit và tạo giá trị khởi tạo của biến trạng thái S 0 = ( a (0) , b (0) ). Hàm Next , được xác đ ị nh chi tiết trong 8.2.3 , nhận đầu vào 18 biến trạng th á i S i = ( a ( i ) , b ( i ) ) có độ dài 32-bit và tạo đầu ra là giá trị tiếp theo của biến trạng thái S i +1 = ( a ( i +1) , b ( i +1) ). Hàm Next chạ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àm Strm , được xác định ch i tiết trong 8.2.4 nhận đầu vào l à 18 biến tr ạ ng thái có độ dài 32-bit S i = ( a ( i ) , b ( i ) ) và tạo ra như là đầu ra khóa dòng Z i có độ 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 ,I V ) là 2 50 khó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ạo I nit Hàm kh ở i tạo I nit như sau. Đầu vào: Kh ó a K có độ dà i 128 hoặc 256-bit, Véc tơ khởi tạo IV c ó độ dài 128-bit. Đầu ra: Giá trị khởi tạo của bi ế n trạng thái S 0 = (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 ( K 3 , K 2 , K 1 , K 0 ) = K, và = K 3- j và ­ Ø ­( K 3- j ) v ới j = 0, 1, 2, 3. - Đối với kh ó a có độ dài 256-bit, Đặt ( K 7 , K 6 , ..., K 0 ) = và = Ø ­ ( K 7 -j ) với j = 0, 1, …,7. b) Đặt S -33 = ( a (-33 ) , b ( - 33 ) ) bằng - Đặ t ( I V 3 , I V 2 , I V 1 , IV 0 ) = I V . - Đặt = với i = 0, 1, 2, 3, 4, 5, 6, 7 , 8, 11, 13 , 14. -Đặt - Đặt . - Đặt S -1 = Next 32 ( S -33 , INIT ), trong đ ó Next 32 biểu diễn cho 32 lần lặp của hàm Next d) S 0 = Next ( S - 1 ). e) Đưa ra S 0 . 8.2.3. Hàm chuyển trạng thái theo Next SNOW có hai chế độ với hàm Next Đầu vào: Biến trạng thái S i = (a (i) , b (i) ) mode = { I NIT , null } . Đầu ra: Giá trị tiếp theo của biến trạng thái S i +1 = ( a ( i +1) , b ( i +1) ). a) Đặt = T ( ). b) Đặt = ). c) Với j = 0,1 , …, 14 đặt d) Nếu chế độ IN I T , đặt . Nếu không thì, đặt e) S i +1 = ( a ( i +1 ) , b ( i +1 ) ) f) Đưa ra S i +1 . Mô tả của hàm T và số học trường hữu hạn bao gồm thành phần cố định a đề 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 ế độ I N I T của hàm Next Hình 9 - Chế độ INIT của hàm Next Định nghĩa của hàn FSM đ ề cập trong điều 8.2.8. 8.2.4. Hàm khóa dòng Strm Hàm khóa d òng Strm như sau: Đầu vào: Biến trạng thái S i Đầu ra: Khóa dòng Z i có độ dài 32-bit a) Đặt Z i = FSM ( ) . b) Đưa ra Z i . 8.2.5. Hàm T Hàm T l à hàm thay thế, đặc biệt là hoán v ị trên trường GF(2 32 ) 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ạn GF(2 8 ) được sử dụng như là trường GF(2)[x] modulo với đa thức bất khả quy . f (x) = x 8 + x 4 + x 3 + x + 1 . Và vành đa thức GF( 2 8 ) [ y] m dul o ( y 4 +1). Đầu vào: x â u w c ó độ dài 32-b i t Đầu ra: xâu q = T(w) có độ d ài 32-bit a) Đặt ( w 3 , w 2 , w 1 , w 0 = w ) trong đó mỗi w j có độ dài 8 bit. b) Với j = 0,1 , 2, 3 đặt t j = SUB[w j ]. c) Lấy t(y) l à đa thức t (y) = t 3 y 3 + t 2 y 2 + t 1 y + t 0 trên trường GF(2 8 )[y] , trong đó t j được hiểu như là một ph ầ n tử của GF(2 8 ) t heo cách tự nhiên t j = t j ,7 x 7 + … + t j , 1 x + t j , 0 , t j , k trong trường GF(2) d) Đặt q (y) = c (y). t (y) modulo ( y 4 +1), trong đó c (y) = (x + 1 )y 3 + y 2 + y + x trên trường GF(2 8 )[y]. e) Kết hợp xâu q = ( q 3 , q 2 , q 1 , q 0 ) 32-bit với kết quả trên, q ( y ) = q 3 y 3 + q 2 y 2 + q 1 y + q 0 f) Đưa ra q . 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ường GF( 2 8 ) được xác định bởi hàm f (x) ở trên. Sau đó kết quả được rút gọn theo modulo y 4 +1. CHÚ THÍCH 1 Hộp t h ế S-box của AES được tì 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ân a trong s ố học trường hữu hạn Đ ầ u vào: Xâu w có độ dài 32-bit, đại diện cho phần tử của G F (2 32 ). Đầu ra: Xâu w ' có độ dài 32-bit, đại diện cho µ Ä w trong trường G F (2 32 ). a) Đặt w ' = ( w 32 8) Å a MUL [w >> 32 24] b) Đưa ra w ' Hàm a MUL được xác định như sau: a MU L [256] = { 8.2.7. Phép nhân a -1 trong 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ủa GF (2 32 ). Đầu ra: Xâu y có độ dài 32-bit, đại diện cho a - 1 Ä y trong trường G F (2 32 ). a) Đặt y ' = ( y >> 32 8) Å a inv_MUL ( y mod 2 56 ] b) Đưa ra y ’ Hàm a inv_MUL được xác định như sau: a i nv_MUL [256] = { 8 . 2.8. Hàm FSM( x, y, z ) Đầu vào: 3 xâu c ó độ dài 32-bit, x,y và z Đầu ra: xâu q có độ dài 32-bit a) Đặt q = (x + 32 y) Å z. b) Đưa ra q . 8.3 . Bộ tạo khóa dòng Rabbit 8.3.1. Tổng quan bộ tạo khóa dòng Rabbit Rabb i t 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 S i ( i ³ 0 ) c ó độ dài 513-bit. Rabbit đưa ra khối khóa dòng Z i có độ dài 128-bit tại mỗi lần lặp hàm Strm . 513-bit của trạng thái trong S i đượ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ộ đếm b (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ến A , bit có trọng số thấp nhất được ký hiệu l à A (0) . Ký hiệu A [ h..g ] m ô tả các bit từ h cho đến g của biến A , trong đó bit có v ị trí h là 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óa K cho trước l à 2 64 khố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ạo Init Trong phần tiếp theo, hàm khởi tạo Init cho Rabbit được quy định. Đầu vào: Khóa K c ó độ dài 128-bit, véc tơ khởi tạo IV có độ d ài 64-bit. Đầu ra: Giá trị khởi tạo của biến trạng thái S 0 = . Biến cục bộ: biến đếm i, j a) Lấy K 0 = K [15..0] , K 1 = K [31...16] ,…, K 7 = K [127..112] b) Đặt S -9 , như sau: 1) Đặt b ( -9 ) = 0. 2) Với j = 0,1 , …, 7: - Nếu j là chẵn, đặt = K (j+1 mod 8 ) || K j và = K (j+4 mod 8 ) ) || K (j+5 mod 8 ) . - Ngược lại j lẻ đặt = K (j+5 mod 8 ) || K (j+4 mod 8 ) ) và = K (j+1 mod 8 ) . c) Lặp lại các hàm trạng thái tiếp theo Next 4 lần: đặt S i = Next ( S i -1 ) với i = -8, -7, -6, -5 d) Đặt S -4 như 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 theo Next 4 lần: đặt S i = N ext ( S i -1 ) với i = -3, -2, -1,0 f) Đưa ra S 0 = CHÚ THÍCH Véc tơ kh ở i tạo IV đượ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 ứng d ụng yêu cầu tái khở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 th i ch ỉ bước d) t ớ i bước f ) cho t á i khởi tạo. 8.3.4. Hàm chuy ể n trạng th á i theo Next Hàm chuyển trạng thái theo Next cho Rabbit được quy định như sau: Đầu vào: Biến trạng thái S i = Đầu ra: Biến trạng thái S i +1 = . Bi ế n cục bộ: biến đếm j , biến tạm l à số nguyên dương có độ dài 32-bit a) Đặt h ằ ng s ố A 0 , ... A 7 như sau: b) Lấy = b i c) Với j = 0, 1, 2 , … , 7: - Lấy temp = ; kết quả này là giá trị c ó độ dài 33-bit - Lấy = temp [ 32 ] - L ấ y = temp [ 31 … 0 ] d) L ấ y b (i +1 ) = e) Với j = 0, 1, … , 7, lấy G j = g ( ), trong đ ó hàm g được đưa ra trong 8.3.6. f) Thay đổi trạng thái trong như sau: g) Đưa ra S i +1 = ( b (i +1 ) , ) 8.3.5. Hàm khóa dòng Strm Hàm khóa dòng Strm cho Rabbit được quy định như sau: Đầu vào: Bi ế n trạng thái S i = ( b (i ) , ). Đầu ra: Khối khóa dòng Z i . a) Đặt Z i như sau: Z i [15. .0] = [1 5 . .0] Å [31. .16] Z i [31. .16] = [31..16] Å [15. .0] Z i [ 47. .32] = = [1 5. .0] Å [31. .16] Z i [ 63. .48] = = [31. .16] Å [15. .0] Z i [79. . 64] = = [15. .0] Å [31. .16] Z i [ 95 . .80 ] = = [31. .16] Å [15. .0] Z i [ 111 . .96 ] = = [15. .0] Å [31. .16] Z i [ 127 . .112 ] = = [31. .16] Å [15. .0] b) Đưa ra Z i . 8.3.6. Hàm g Hàm g đ ư ợ c quy định như sau: Đầu vào: 2 tham số u và v có độ dài 32-bit Đầu ra: kết qu ả hàm g ( u, v ) có độ d à i 32-bit Biến cục bộ: temp số nguyên dương có độ dài 32-bit a) Lấy temp = ( u + 32 v ) 2 ; kết quả l à giá trị có độ dài 64-bit. b) Lấy g ( u, v ) = temp [ 31 .. 0] Å temp [63 .. 32] c) Đưa ra g ( u, v ) 8.4 . Bộ tạo khóa dòng Decim v 2 8.4.1. G iới th iệ u bộ tạo khóa dòng Decim v 2 DECIM v 2 là bộ tạo khóa dòng trong đó sử dụng khóa bí mật K có độ dài 80-bit và véc tơ kh ở i t ạo IV có độ dài 64-bit. DEC I M v 2 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. DECIM v 2 đượ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ủa DECIM v 2 . Biến trạng thái S i của DEC I M v 2 bao gồm giá trị độ dài 192-bit của thanh ghi a i = và biến T i độ dài 3-bit tương ứng với trạng thái của hàm nén ABSG , 32-bit b i = trong bộ đệm B , và số lượng I ( i ) bit trong bộ đệm B đã sẵn sàng đưa ra. Hình 10 - Sơ đồ của DECIM v 2 Hàm Init , được xác định chi tiết trong 8.4.3 , nhận đầu vào là khóa K độ dài 80-bit và véc tơ khởi tạo IV độ dài 64-bit và tạo ra giá trị khởi tạo của biến trạng thái S 0 = ( a (0) , T (0) , b (0) , I (0 0 ). Hàm Next , đượ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ái S i = ( 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ái S i +1 = ( a ( i +1) , T ( i +1) , b ( i +1) , I ( i +1) ). Hàm Next chạ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àm S t rm , đượ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ái S i = ( a ( i ) , T ( i ) , b ( i ) , I ( i ) và tạo ra đ ầ u ra là bit khóa dòng Z i . CHÚ TH Í C 2: Tốc độ đ ầ u ra chuẩn của DECIM v 2 là ¼. Vì vậy, để đ ồ ng bộ biến trạng thái và đầu ra khóa dòng, hàm Nex t thực hiện 4 vòng lặp tiêu chuẩn của DECIM v 2 được quy định trong [6]. CHÚ THÍCH 3 H à m nén của DECIM v 2 có 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 4 DECIM v 2 khá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òng Decim v 2 , các ký hiệu sau đây được sử dụng thêm: a Bi ế n trạng thái trong cho Decim v 2 ABSG Hàm nén được sử dụng cho Decim v 2 b , b' Biến trạng thái trong cho Decim v 2 B Hàm đệm đ ược sử dụng cho Decim v 2 F Hàm ph ả n hồi tuyến tính cho Decim v 2 I, I ' Biến trạng thái trong cho Dec i m v 2 LF Hàm lọc được sử dụng cho Decim v 2 T, T’ Biến trạng th á i trong cho Decim v 2 Y Hàm Boolean được sử dụng cho Decim v 2 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ạo Init Hàm khởi tạo I nit đ ược xác định như sau: Đầu vào: Khóa K đ ộ dài 80-bit và véc tơ khởi tạo IV độ d ài 64-bit. Đầu ra: Giá trị khởi tạo của biến trạng thái S 0 = ( a ( 0 ) , T ( 0 ) , b ( 0 ) , I ( 0) ). Biến cục bộ: biến đếm i, j a) Khởi tạo thanh ghi với khóa K và véc tơ khởi tạo IV . - Đặt = K j với j = 0, 1, 2 , …, 79 - Đặt = K j - 8 0 Å IV j - 80 với j = 80, 81 , …, 143 - Đặt = K j - 80 Å I V j - 1 44 Å I V j -1 2 8 Å I V j -11 2 Å IV j - 196 v ới j = 144,145, ...,159 - Đặt = K j - 160 Å IV j -1 28 Å 1 với j = 160, 161, …, 191 b) Khởi tạo bộ đệm và hàm nén: - Đặt T (- 2 5 6 ) = 000 - Đặt = 0 với j = 0, 1, 2,…, 31 - Đặt I (- 256 ) = 0 c) Đặt S -64 = InitNext 1 92 ( S -2 5 6 , L F SR ) d) Đặt i = -64 e) Trong khi I ( i ) < 32="" và=""> i < 0:="" đặt=""> S i +1 = InitNext ( S i , BUFF ) và i = i +1. Nếu số bước trong hàm Init cần cho thực thi được cố định thì có thể việc kiểm tr a I ( i ) < 32="" có="" thể="" được="" loại=""> f) Đặt S 0 = S i . g) Đưa ra S 0 . CHÚ THÍCH Các bước d), e) v à f) của khởi tạo DECIM v 2 liê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àm InitNext ( S i , 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 ấ t lớ n hơn 1 - 2 -9 7 . 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 theo InitNext 8.4.4. Khởi tạo hàm chuyển trạng thái theo InitNext Decim v 2 c ó hai chế độ hoạt động cho hàm InitNext : một chế độ được sử dụng trong quá trình khởi tạo thanh ghi A và chế độ thứ 2 trong quá trình khởi tạo làm đầy bộ đệm. Đầu vào: Biến trạng thái S i = ( 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ái S i +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ộ đệm f k , 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) . Chế độ LFSR (thực thi n ế u mode = LFSR): a) Cập nhật trạng thái của thanh ghi A với các bước sau: 1) Đặt a (0) = a ( i ) 2) Với k = 0,1,2,3: - Đặt f k = LF ( a ( k ) ) và r = L ( a ( k ) ) Å f k . - Với i = 0,1, ...,190 đặt - Đặt = r 3) Đặt a ( i +1 ) = a ( 4) H ì nh 11 mô tả sơ đồ khối của chế độ LFSR của hàm InitNext . Chế độ BUFF ( thự c thi n ế u mode = BUFF): a) Cập nhật trạng thái của thanh ghi A với các bước sau: 4) Đặt a (0 ) = a ( i ) 5) Với k = 0, 1, 2, 3: - Đặt f k = a ( k ) Å LF ( a ( k ) ) và r = L ( a ( k ) ) - Với j = 0,1 , …, 190 đặt - Đặt = r 6) Đặt a ( i +1 ) = a (4 ) b) Đặt t (0) = T ( i ) , b 0 ,= b i , i (0) = I ( i ) c) Với k = 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: - Đặt c = f k Å - Đặt t ( k +1 ) = ABSG ( t ( k ) , f k ) - Nếu = 0, đặt output = TRUE, ngược lại đặt output = 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) Đặt T ( i +1 ) = t (4) e) Đặt b ( i +1 ) = b (4) và I ( i +1 ) = i (4) 8.4.5. Hàm chuyển trạng thái theo Next Đầu vào: Biến trạng thái S i = ( a ( i ) , T ( i ) , b ( i ) , I ( i ) ). Đầu ra: Giá t rị tiếp theo của biến trạng thái S i +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ộ đệm f k , 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 ghi A với các bước sau: 7) Đặt a (0) = a ( i ) 8) Với k = 0 ,1,2,3: - Đặt f k = Å LF ( a ( k ) ) và r = L ( a ( k ) ) - Với j = 0,1 , …, 190 đặt - Đặt = r 9) Đặt a ( i +1) = a ( 4) b) Đặt t (0) = T ( i ) , b (0) = b i , i (0) = I (i) - 1 c) Với j = 0,1 ,… , t (0) -1, đặt d) Với k = 0,1,2,3: 1) nếu i (0) = 0, đặt t ( k +1) = t ( k ) , output = TRUE và c=f k , 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: - Đặt c = - Đặt t ( k +1) = ABSG ( t ( k ) , f k ) - Nếu = 0, đặt output = TRUE, ngược lại đặt output = 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) Đặt T ( i +1 ) = t (4 ) , b ( i +1 ) = b (4) và I ( i +1) = i (4) CH Ú TH Í CH 1 Điều kiện t (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óa d òng. Điều này xảy ra với xác suất nhỏ hơn 2 -80 tại mỗi trạng th á i c ậ p nhật, xem chi tiết hơn trong [8]. Ngo ài ra, xác suất này cao hơn nếu bộ đệm là kh ô ng đầy sau hàm khởi tạo I n i t , 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àm InitNext và hàm Next cùng chia sẻ nhi ề u bước tính toán. Thật vậy, ch ế độ LFSR của hàm In it Next ch ủ yếu bao gồm cập nhật LFSR trong chế độ BUFF và của hàm Next sự khác biệt duy nhất là đầu ra hàm Boolean được thêm b i t phản h ồ i. Chế độ BUFF của hàm In i tNext và hàm Next chỉ khác nhau ở bộ đệm B ch ỉ được d ị ch chuyển muộn hơn. 8.4.6. Hàm khóa dòng S tr m Đầu vào: Bi ế n trạng thái S i = ( a ( i ) , T ( i ) , b ( i ) , I ( i ) ). Đầu ra: Bit khóa dòng Z i . a) Đặt Z i = b) Đưa ra Z i 8.4.7. Hàm phản hồi tuy ế n tính L Đầu vào: xâu w = ( w 0 , w 1 , …, w 191 ) có độ dài 192-bit Đầu ra: Bit q = L ( w ) Đặt q = w 0 Å w 3 Å w 4 Å w 23 Å w 36 Å w 37 Å w 60 Å w 61 Å w 98 Å w 115 Å w 146 Å w 175 Å w 176 Å w 187 8.4.8. Hàm trích lọc LF Đầu vào: xâu w = ( w 0 , w 1 , ... , w 191 ) có độ dài 192-bit Đầu ra: Bit q = LF ( w ) Đặt q = L ( w ). Đặt q = Y ( w 13 , w 28 , w 45 , w 54 , w 65 , w 10 4 , w 111 , w 144 , w 162 , w 1 72 , w 178 , w 1 8 6 , w 1 91 )) 8.4.6. Hàm Boolean Y Đầu vào: xâu w = ( w 0 , w 1 ,..., w 1 2 ) có độ dài 13-bit Đầu ra: Bit q = Y ( w ) Đặt q = ( Å 0 £ j £ 12 w j ) Å ( Å 0 £ j £ 12 w j w k ) CH Ú TH Í CH Tương ứng, q đ ược cho bởi q = 0 ni ế u X = 0 hoặc X = 3 v à q = 1 trong trường hợp ngược lại với X = w 0 + w 1 + … + w 12 mod 4 8.4.10. Hàm nén ABSG Đầu vào: 3-b i t trạng thái T , đưa vào bit c Đầu ra: 3-bit trạng thái T ' = ABSG ( T, c ) a) Nếu T 0 = 1, đặt T 1 = T ’ 1 , ngược lại T ’ 1 = c . b) Đặt T’ 2 = T 0 V À ( T 1 Å c ) c) Đặt T ’ 0 = ( T 0 Å 1) HOẶC T ’ 2 8.4.11. Hàm bộ đệm B Đầu vào: xâu b = ( b 0 , b 1 , ..., b 31 ) c ó độ dài 32-bit, chỉ số I , Boolean output , nhập vào bit c . Đầu ra: xâu b' = ( b ’ 0 , b ’ 1 ,…, b ’ 32 ) có độ dài 32-bit, chỉ số I’ . a) Đặt I’ = I , b’ = b . b) Nếu output = TRUE, và I’ < 32,="" thực="" hiện="" như=""> - Đặt b ’ I ’ = c . - Đặt I’ = I’ + 1. c) Đầu ra B ( 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ậ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 S i ( i ³ 0) bao gồm 20 khối 32-bit, trong đó S i biểu diễn trạng thái trong của K 2 tại chu kỳ i . Thứ tự bit/byte là big-end i an, 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 bi t/ 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 Z i được tạo coi như đ ầ u ra. Biến trạng thái S i của K 2 bao gồm 3 thành phần. Th à nh phần đầu tiên bao gồm 5 biến 32-bit tuần tự: trên trường G F (2 3 2 ), 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ứ hai B ( i ) bao gồm 11 biến 32-bit tuần tự: B ( i ) = trên trường GF (2 32 ), 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: R 1 ( i ) , L 1 ( i ) , R 2 ( i ) , L 2 ( i ) , t r ê n trường GF (2 32 ) duy trì trạng thái của hàm phi tuyến. Phép toán của K 2 đượ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ểm I , 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àm I n it , được xác định trong 8.5.2, nhận giá tr ị đầu vào là khóa K độ dài 128-bit và véc tơ khởi tạo IV độ dài 128-bit để tạo ra trạng thái khởi tạo S 0 = ( A (0) , B (0) , R 1 (0) , L 1 (0) , R 2 (0) , L 2 (0) ). Hàm Next , được xác định trong 8.5.3, nhận giá trị đầu vào là trạng thái trong S i = ( A ( i ) , B ( i ) , R 1 ( i ) , L 1 ( i ) , R 2 ( i ) , L 2 ( i ) ) và tạo như đầu ra giá trị tiếp theo của biến trạng thái S i +1 = ( A ( i +1 ) , B ( i +1 ) , R 1 ( i +1) , L 1 ( i +1 ) , R 2 ( i +1 ) , L 2 ( i +1 ) ). Hàm Next chạ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àm Str m , được xác định trong 8.5.4, nhận giá trị đầu vào là trạng thái trong, S i = ( A ( i ) , B ( i ) , R 1 ( i ) , L 1 ( i ) , R 2 ( i ) , L 2 ( i ) ) và tạo như đầu ra khóa dòng Z i = . 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ạo IV m ớ i là 2 64 bit. 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ạo In i t Hàm khởi tạo hút hoạt động như sau: Đ ầ u vào: Khóa K đ ộ dài 128-bit và véc t ơ khởi tạo IV độ dài 128-bit. Đầu ra: Giá trị khởi tạo của bi ế n trạng thái S 0 = ( A (0) , B (0) , R 1 (0) , L 1 (0) , R 2 (0) , L 2 (0) ) . Bi ế n cục bộ: biến đếm m a) Mở rộng khóa K = ( K 0 , K 1 , K 2 , K 3 ) độ d à i 128-bit thành khóa trong I K = ( I K 0 , I K 1 ,..., I K 11 ) độ dài 384-bit như sau: 1) Với m = 0, 1, 2, 3 đặt IK m = K m . 2) Với m = 4, 5,...11, - Nếu m ¹ 4 hay 8, đặt I K m = I K m -4 Å IK m - 1 . - Nếu m = 4, đặt R con [0] = (0x01,0x00,0x00,0x00) và I K m = I K m - 4 Å Sub k2 Å ( I K m - 1 32 8) Å ( IK m - 1 >> 32 24)) Å R con [ - 1]. Hàm Sub K 2 được đề cập đến trong 8.5.5 - Nếu m = 8, đặt R con [ 1 ] = (0x02,0x00,0x00,0x00) và IK m = IK m - 4 Å S u b K 2 ( IK m - 1 32 8) Å ( IK m - 1 >> 32 24)) Å R con [ - 1 ] . Hàm Sub K 2 được đề cập đến trong 8.5.5 b) Khởi tạo các thanh ghi với khóa trong IK và IV = ( I V 0 , IV 1 , I V 2 , IV 3 ). - Với m = 0, 1, 2, 3, 4 đặt = IK 4 - m . - Đặt thanh ghi trong FSR-B như sau. - Đặt thanh ghi trong hàm phi tuy ế n như sau. R 1 (-2 4) =0x00000000, L 1 (-24) =0x00000000, R 2 (- 24) =0x00000000, L 2 (-2 4 ) =0x00000000 c) Đặt S 0 = Next 2 4 ( S -24 , INIT ), trong đó Next 24 biểu diễn 24 lần lặp của hàm Next d) Đưa ra S 0 Ch ú ng ta tham khảo 8.5.5 cho mô tả hàm Su b K 2 . 8.5.3. Hàm chuyển trạng thái theo Next K 2 có 2 chế độ cho hàm Next Đầu vào: Biến trạng thái S i = ( A ( i ) , B ( i ) , R 1 ( i ) , L 1 ( i ) , R 2 ( i ) , L 2 ( i ) ), mode = { I NIT, null}. Đầu ra: Giá trị tiếp theo của biến trạng thái S i +1 = ( A ( i +1 ) , B ( i +1) , R 1 ( i +1 ) , L 1 ( i +1) , R 2 ( i +1 ) , L 2 ( i +1) ). Biến cục bộ: biến đếm m a) Đặt biến trong hàm phi tuyến như sau. b) Với m = 0, 1, 2, 3, đặt c) Với m = 0, 1, 2 9, đặt d ) Với chế độ INIT , đặt với chế độ null, đặt đặt e) Với chế độ I N I T, đặt với chế độ null , đặt f) Đặt S i +1 = ( A ( i +1 ) , B ( i +1 ) , R 1 ( i +1 ) , L 1 ( i +1) , R 2 ( i +1 ) , L 2 ( i +1) ). g) Đưa ra S i +1 . [ Y ] trong {0,1} biểu thị bit thứ Y của thanh ghi , trong đó [31] là bit có trọng số cao nhất của . Mô tả của hàm Sub K 2 và s ố học trường hữu hạn liên quan đến các phần t ử cố định a 0 , a 1 , a 2 và a 3 đượ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àm NLF được đ ề cập đến trong 8.5.10. Hình 14 là sơ đồ khối của ch ế độ INIT của hàm Next . Hình 14 - Ch ế độ INI T của hàm Next 8.5.4. Hàm khóa dòng S tr m Hàm khóa dòng Strm hoạt động như sau. Đầu vào: Biến trạng thái S i = ( A ( i ) , B ( i ) , R 1 ( i ) , L 1 ( i ) , R 2 ( i ) , L 2 ( i ) ). Đầu ra: Khóa dòng Z i = ( ) độ dài 64-bit. a) Đặt = NLF ) b) Đặt = NLF c) Đặt Z i = ( ) d) Đưa ra Z i . Hàm NLF đ ược định nghĩa trong 8.5.10. 8.5.5. Hàm Sub K 2 Hàm S ub K 2 là một hoán vị trong trường GF (2 32 ), 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àm Sub K 2 , giá trị đầu vào 32-b i t đượ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àm SBox là giống như SBox của AES, và hoán v ị gi ố ng như phép toán Mix Co l umn của AES. CHÚ THÍCH 1 Hàm SBox AES, SBox , c ó thể được t ì m th ấ y trong 8.1.8 là hàm SUB . CHÚ THÍCH 2 Hàm Sub K 2 tạo ra đầu ra tương tự nh ư hàm T củ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ường GF(2 32 ) . Đầu ra: Một xâu q = Sub K 2 ( w ) độ dài 32-bit. Biến cục bộ: biến đ ế m m . a) Đặt w = ( w 3 , w 2 , w 1 , w 0 ) , trong đ ó mỗi w m có độ dài 8 bit. b) Với mỗi m = 0, 1, 2, 3, đặt t m = SBox ( w m ). c) Đặt q = ( q 3 , q 2 , q 1 , q 0 ) như sau Phép nhân các phần tử t i được thực hiện trong trường GF(2 8 ) dùng đa thức bất khả quy f ( x ) = x 8 + x 4 +x 3 + x + 1 . d) Đưa ra q. 8.5.6. Phép nhân của a 0 trong trường GF(2 32 ) Đầu vào: Một giá trị w độ dài 32-bit, biểu diễn cho 1 phần tử trên trường GF(2 3 2 ) . Đầu ra: Một xâu w’ độ dài 32-bit, bi ể u diễn cho a 0 Ä w trên trường GF(2 3 2 ) . a ) Đặt w ’ = ( w 32 8) Å a M UL 0 [ w >> 32 24]. b) Đưa ra w’ . Hàm a MUL 0 được định nghĩa như sau: 8.5.7. Phép nhân của a ­ 1 trong trường G F(2 32 ) Đầu vào: Một giá trị w đ ộ dài 32-bit, biểu diễn cho 1 phần tử trên trường GF( 2 3 2 ) . Đầu ra: Một xâu w’ độ dài 32-bit, biểu diễn a 1 Ä w trên trư ờ ng GF(2 32 ) . a) Đặt w ’ = ( w 32 8) Å a M UL 1 [ w >> 32 24]. b) Đưa ra w’ . Hàm a MU L 1 được định nghĩa nh ư sau: 8.5.8. Phép nhân của a 2 trong trường G F(2 3 2 ) Đầu vào: Một giá trị w độ dài 32-bit, biểu diễn cho 1 phần t ử trên trường G F(2 32 ) . Đầu ra: Một x â u w’ đ ộ dài 32-bit, biểu diễn cho a 2 Ä w trên trường GF(2 32 ). a) Đặt w’ = ( w 32 8) Å a M U L 2 [ w >> 32 24]. b) Đưa ra w’ . Hàm a MU L 2 được định nghĩa như sau: 8.5.9. Phép nhân của a 3 trong trường G F(2 3 2 ) Đ ầ u vào: Một giá trị w độ dài 32-bit, biểu diễn cho 1 phần tử trên trường GF(2 3 2 ) . Đ ầ u ra: Một xâu w’ độ dài 32-bit, biểu diễn cho a 3 Ä w tr ê n trường G F(2 32 ). a ) Đặt w’ = ( w 32 8) Å a M U L 3 [ w >> 32 24]. b) Đ ư a ra w’ . Hàm a M UL 3 được định nghĩa như sau: 8.5.10. Hàm NLF ( a, b, c, d ) Đầu vào: 4 giá trị độ dài 32-bit a, b, c và d . Đầu ra: Một xâu q độ dài 32-bit a) Đặt q = ( a + 32 b ) Å c Å d ). b) Đưa ra q . 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(2 n ) Đối với bất kỳ số nguyên dương n t ồ n tại một trường hữu hạn gồm có 2 n phầ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ạn GF (2 n ). Trong mô tả đa thức, mỗi phần tử của GF (2 n ) được mô t ả bởi một đa thức nhị phân có bậc nh ỏ hơn n . Một cách r õ ràng hơn, xâu bit a = a n - 1 ... , a 2 a 1 a 0 được thực hiện để đại diện cho đa thức nh ị phân a(x) = a n - 1 x n -1 + … + a 2 x 2 + a 1 x + a 0 . Cơ sở của đa thức là tập hợp B = ( x n -1 , ..., x 2 , x , 1). Đối với 2 xâu bit a = a n - 1 …, a 2 a 1 a 0 và b = b n -1 ... b 2 b 1 b 0 , tổng là c = a Å b = c n -1 . .. c 2 c 1 c 0 , trong đó c i = a i Å b i . Phép nhân trong trư ờ ng hữu hạn, được viết l à a Ä b tương ứng với phép nhân hai đa thức a ( x ) b ( x ) modulo với một đa thức b ấ t khả quy nh ị phân p ( x ) bậc n . Một đa thức là bất khả quy nếu nó không có ước số tầm thường. GF (2 n )\{0} ký hiệu là GF (2 n )* 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ông b(x) bậc nhỏ hơn n , các nghịch đảo của b(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ức a(x) và c(x) sao cho b (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 ) mod p ( 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 ởi tạo và bộ ba khóa dòng C.3.2 . Ví dụ các tr ạ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 á i trong C. 5 . Ví dụ cho Dec i m v 2 C.5.1 . Giới thi ệ u v í dụ Dec i m v 2 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 = K 79 ... K 0 IV = IV 63 ... IV 0 Z = Z n ... Z 0 a = a 191 ... a 0 b = b 31 ... b 0 T = T 2 T 1 T 0 và, v í dụ đưa ra khóa K = de aa 00 40 30 00 0 f 08 80 Mỗi thanh ghi đ ư ợc xác định: [ K 7 9 ... K 72 ] = de, [ K 71 ... K 6 4 ] = aa... [ K 7 … K 0 ] = 80 Với phân tích bit như sau: C.5.2 . Khóa, véc tơ kh ởi tạ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ủa InitNext(S,LRSR) , các biến trạng thái trong T, b và I có giá trị sau: C. 6 . Các ví dụ cho Kc i pher-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 à un bit có th ể được chấp nhận với xác suất thành công ( u - 2)2 - n , trong đó n là 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 đ ược biết đến Chế độ CFB, OFB, CTR với mã khối n -bit với độ dài khóa k -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 2 n/ 2 thì 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 2 n/ 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 ấ n công vét cạn kh ó a. MUGI có độ d ài khóa là 128- b i t. 128-bit 2 128 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 2 174 -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 2 174 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á 2 64 khối khóa dòng được tạo ra sử dụng một khóa. 128 bit 2 128 Decim v 2 Không có một t ấ n công ph â n tích mã nào được biết đến đối với Decim v 2 nhanh hơn so với tấn công vét cạn khóa. 80 bit 2 80 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 2 128 D. 2 . An toàn hiệu quả đánh đổi trong MULTI-S01 Cho n là kích thước khối của hàm đầu ra MULTI-S01. Với thông báo n .u -bit, hàm đ ầ u ra MULTI-S01 lặp xử lý khối u+2 lầ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ạn GF (2 n ). Nếu hai thực thi, giữa k í ch thước khối n khác nhau, được so sánh, việc thực thi với n nhỏ 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ị n nhỏ 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ới n = 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 K C ổng ASIC sử dụng thư viện ngăn Hitachi HG73C (0.35 m m ) 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, V isual 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/ I EC 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óa k -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ài nx -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 óa dòng. CTR chấp nhận truy cập ngẫu nhiên đến bản mã. MU G I 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-b i t 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 64-bit và m ã h ó a/gi ả i mã bản rõ độ dài 64x . 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ài 32x . Rabbit Rabb i t 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 1 28x . Decim v 2 Decim v 2 sử 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ó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 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ài 64x . THƯ MỤC TÀI LIỆU THAM KHẢO [1] ISO/IEC 9797-1:2011, In f ormation technology - Security techniques - Message Authentication Codes (MACs) - Part 1: Mechanisms using a block cipher [2] ISO/IEC 10116:2006, In f ormation technology - Secur i ty techniques - Modes of operation for an n-bit b l ock cipher [3] ISO/IEC 10118-1:2000, lnformation technology - Secur i ty techniques - Hash-functions - Part 1: General [4] ISO/IEC 11770-1:2010, lnformation technology - Secur i ty techniques - Key management - Part 1: Framework [5] ISO/IEC 11770-3:2008, Information technology - Security techniques - Key management - Part 3: Mechanisms using asymmetr i c techniques [6] Berbain, C ., Billet, O ., Canteaut, A., Courtois, N., Debraize. B. , Gilbert, H., Goubin, L., Gouget, A., Granboulan, L., Lauradoux, C ., Minier, M., Po rn in, T. and Sibert, H., “ DECIMv2, a compact hardware- oriented stream cipher ” , SASC 2006 - Stream Ciphers revisited W orkshop, Leuven, Belgium, 2006 [7] Biryukov, A. and Shamir, A., “ Cryptanalytic Time/Memory/Data Tradeoffs for S tream Ciphers ” , Advances in Cryptology - ASIACRYPT 2000, 6th International Con f erence 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., Pe d ersen, T., Christiansen, J., and Scavenius, O ., “ Rabbit: A new high- per f ormance 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 htt p ://www.cr yp tico.com/files/f i ler/ r abbit sasc . final.pdf > [10] Ekdahl, P . and Johansson, T., “ A new version of the stream cipher SNOW ” , Selecte d Areas in Cryptography, 9th Annual W orkshop, 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] Fu ru ya, S ., Watanabe, D., Seto, Y., and Takaragi, K., “ Integrity-Aware Mode of S tream Cipher, ” IEICE Transactions on Fundamenta ls of Electronics, Communications and Computer Science vo l . E85-A No.1, pp.58-65, 2002 [12] Kiyomoto, S ., Tanaka, T ., and Sakurai, K., “ A Word-Oriented S tream Cipher Using Clock Control ” , In SASC 2007 W orkshop Record, pp.260-274, January, 2007 [13] Kiyomoto, S ., Tanaka, T., and Sakurai, K., “ K2: A S tream Cipher Algorithm Using Dynamic Feedback Control “ , In Proc. of SECRYPT 2007, pp.204-213, July, 2007 [14] Kiyomoto, S ., Tanaka, T., and Sakurai, K., “ K2 S tream Cipher ” , Communications in Computer and In f ormation Science, E-business and Telecommunications, 4th International Con f erence, 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 Distinguish e rs for SNOW 2.0 ” , FSE 2006, Lecture Notes in Computer Science vol.4047, Springer-Verlag, pp.44-162, 2006 [17] W atanabe, D., F u ruya, S ., Yoshida, H., Takaragi, K., and Preneel, B.t “ A New Key S tream Generator MUGI, ” Fast Software Encryption, 9th International W orkshop, 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, Lecture Notes 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 of OS I Registration 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òng Decimv 2 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ạn GF ( 2 n ) 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