Độ phức tạp cầu

Một phần của tài liệu khảo sát mã dòng và ứng dụng (Trang 71 - 75)

Chương 2. Lí THUYẾT MÃ DềNG

2.6. Các khía cạnh mật mã của Sequences

2.6.4. Độ phức tạp cầu

Cho x là một dãy hữu hạn với chiều dài n trên GF(q). Độ phức tạp trọng số (weight complexity) của dãy hữu hạn được định nghĩa bởi [4]:

), ( min )

(x ( ) L x y

WCu =WH y u +

=

ở đây WH(y) là ký hiệu trọng số Hamming của y (y cũng trên GF(q)), nghĩa là số các phần tử của y khác “không”(zero) [22] (ta xem xy đóng vai trò như hai vector thuộc không gian GF(q)n).

Bây giờ xét không gian GF(q)n với khoảng cách Hamming dH. Khoảng cách Hamming giữa hai vector là số vị trí (tọa độ) mà hai phần tử tương ứng trên hai vector

khác nhau [22], vector ở đây là một khái niệm tổng quát còn trong trường hợp cụ thể có thể là dãy bit khi xét trên không gian GF(2)n. Ví dụ: Xét 2 dãy bit cùng chiều dài là a = 01111010, b = 10111011, ta có dH(a, b) = 3.

Ký hiệu S(x,u)={y:dH(x,y)=u}, theo định nghĩa ta có [4]:

).

( min )

(x ( , )L y WCu =yS xu

Điều này nói lên rằng độ phức tạp trọng sốbiên nhỏ nhất của độ phức tạp tuyến tính của tất cả các dãy với chiều dài n trên mặt cầu S(x,u).

Cho O(x,u)={y:0<dH(x,y)≤u} là hình cầu với tâm x. Độ phức tạp cầu (sphere complexity) được định nghĩa bởi:

).

( min ) ( min )

(x ( , )L y 0 WC x

SC v

u v u

x O

u =y∈ = <≤

Tương tự, cho s∞ là một dãy với chu kỳ N (không nhất thiết là chu kỳ nhỏ nhất) trên )

(q

GF . Độ phức tạp trọng sốđộ phức tạp cầu của dãy được xác định tương ứng như:

) ( min ) (

), (

min )

(

0 ) (

<

=

=

+

=

s WC s

SC

t s L s

WC

u v u v

u t

u WH N

trong đó t∞ cũng có chu kỳ là N.

Cơ sở mật mã của các độ phức tạp này là: một số dòng khóa (keystream) với độ phức tạp tuyến tính lớn có thể được tính xấp xỉ bởi một số dãy với độ phức tạp tuyến tính thấp hơn. Độ phức tạp cầu và độ phức tạp trọng số được dựa trên mô hình xấp xỉ LFSR. Trái ngược với độ phức tạp tuyến tính được dựa trên LFSR ngắn nhất sinh ra một dãy, độ phức tạp cầu SCk(s∞) thì được dựa trên LFSR ngắn nhất sinh ra một dãy

khác với một xác suất giống nhau (phù hợp) không nhỏ hơn N

k

1 , ở đây N là chu kỳ của dãy s∞ ứng với độ phức tạp cầu. Độ phức tạp trọng số WCk(s∞) được dựa trên LFSR ngắn nhất sinh ra một dãy khác với xác suất giống nhau đúng bằng

N

k

1 .

Hai độ phức tạp dựa trên mô hình xấp xỉ LFSR này chỉ có tính mật mã quan trọng nếu có một thuật toán hiệu quả để tìm LFSR cho việc xấp xỉ generator gốc [4].

Ta xem xét một tấn công. Để đơn giản hóa vấn đề, ta giả sử rằng dòng khóa ở dạng nhị phân. Với giả sử rằng độ phức tạp tuyến tính của dòng khóa của đối phương rất kém bền vững, nhà phá mã (cryptanalyst) có thể cố gắng xây dựng một LFSR để xấp xỉ generator dòng khóa gốc, theo các bước sau [4]:

Bước 1: Khởi đầu

- Dùng thuật toán Berlekamp-Massey để xây dựng một LFSR sinh ra dãy

1 1

0 ⋅ ⋅⋅ −

= n

n z z z

z .

- Sau đó dùng LFSR đã được xây dựng để giải mã một mẫu lớn bản mã.

- Nếu chỉ có ε phần trăm (hằng số này có thể linh hoạt, chẵng hạn như nhỏ hơn 15) bản mã được giải mã không thể cảm nhận được, thì chấp nhận LFSR này và dừng. Ngược lại đi đến Bước 2.

Bước 2: Chạy vòng lặp

- Cho i = 0 tới n – 1, thực hiện:

+ zi =zi ⊕1

+ Áp dụng thuật toán Berlekamp-Massey đối với dãy mới (sau khi thực hiện phép ⊕ ở trên) để xây dựng một LFSR sinh ra dãy mới.

+ Sau đó dùng LFSR đã được xây dựng để giải mã một mẫu lớn bản mã.

+ Nếu chỉ có ε phần trăm (hằng số này có thể linh hoạt, chẵng hạn như nhỏ hơn 15) bản mã được giải mã không thể cảm nhận được, thì chấp nhận LFSR này và dừng. Ngược lại, lặp lại bước này đối với i = i + 1 nếu i < n – 1, và đi đến Bước 3 nếu i = n – 1.

Bước 3: Chạy vòng lặp

- Cho cặp (i, j) với i < ji,j∈{0,1,...,n−1}, thực hiện:

+ zi =zi⊕1 và zj =zj ⊕1.

+ Áp dụng thuật toán Berlekamp-Massey đối với dãy mới (sau khi thực hiện phép các ⊕ ở trên) để xây dựng một LFSR sinh ra dãy mới.

+ Sau đó dùng LFSR đã được xây dựng để giải mã một mẫu lớn bản mã.

+ Nếu chỉ có ε phần trăm (hằng số này có thể linh hoạt, chẵng hạn như nhỏ hơn 15) bản mã được giải mã không thể cảm nhận được, thì chấp nhận LFSR này và dừng. Ngược lại, lặp lại bước này đối với cặp tiếp theo (i, j) với i < j nếu đây là một cặp trong số còn lại, và xuất “thất bại”

(fail) rồi dừng nếu đây không phải là một cặp còn lại (chạy hết vòng lặp).

Bởi vì độ phức tạp của thuật toán Berlekamp-Massey đối với các dãy có chiều dài nO(n2), nên độ phức tạp của tấn công trên là O(n4). Vì vậy nếu s∞ là một keystream sao cho độ phức tạp tuyến tính của nó là rất lớn (chẵng hạn ví dụ như 240) và

) (s

SCk đủ nhỏ (chẵng hạn ví dụ như nhỏ hơn 1000) với k rất nhỏ, thì tấn công này

phải thành công. Ý tưởng cơ bản của tấn công này là, ta mong đợi rằng dãy keystream có thể được biểu diễn như:

∞ =u +v z

sao cho u∞ và v∞ có chu kỳ là N, tỉ số N

v WH( N)

rất nhỏ và dãy u∞ có độ phức tạp tuyến tính nhỏ. Điều này có thể được thực hiện khi độ phức tạp tuyến tính của keystream rất kém bền vững. Trong trường hợp này, ta mong đợi rằng keystream được biết zn có thể được biểu diễn như:

n n

n u v

z = +

với WH(vn)≤2 nếu k n< 2N .

Do đó dẫn đến vấn đề là nhà thiết kế của một mã dòng đồng bộ cộng phải đảm bảo rằng k rất nhỏ, độ phức tạp cầu SCk(s∞) đủ lớn. Nói cách khác, nhà thiết kế của một mã dòng đồng bộ cộng sẽ đảm bảo rằng dòng khóa được sinh ra không thể bị xấp xỉ bởi một dãy với độ phức tạp tuyến tính nhỏ, bởi vì thuật toán thời gian đa thức trên có thể được dùng để tìm một LFSR để xấp xỉ dãy keystream gốc nếu độ phức tạp tuyến tính của nó rất kém bền vững. Điều này nói lên rằng độ phức tạp cầu là yếu tố mật mã quan trọng [4].

Một phần của tài liệu khảo sát mã dòng và ứng dụng (Trang 71 - 75)

Tải bản đầy đủ (DOC)

(138 trang)
w