Tấn công logarit rời rạc trên đường cong

Một phần của tài liệu luận văn: nghiên cứu sự an toàn của một số hệ mật mã hiện đại (Trang 67)

2.3.2.1 Lý thuyết liên quan đến cuộc tấn công a/.Bài toán logarit rời rạc DLP:

Có nhiều phương pháp tấn công logarit rời rạc đối với các đường cong elliptic nói chung. Trong đó thuật toán nổi tiếng nhất để tính toán logarit rời rạc là thuật toán Pollard-Rho, mà tính toán rời rạc logarit của một nhóm G trong thời gian bằng O ( ), trong đó p là số nguyên tố lớn nhất của #G.

Trước đó khoảng một thập kỷ, nhà khoa học , N. Koblitz đã đề xuất một phương pháp tổng quát của mật mã đường cong elliptic trên đường cong hyperelliptic. Dựa vào phương pháp này của N. Koblitz, P. Gaudry đưa ra phương pháp tấn công chỉ số tính cho các đường cong hyperelliptic. Ông có thể chạy thuật toán của mình để tính toán bài toán logarit rời rạc chỉ với việc sử dụng phần cứng khiêm tốn. Các bước của thuật toán được mô tả dưới đây

b/. Các nhánh của đường cong hyperelliptic :

Ở đây có hai lớp đó là đường cong hyperelliptic và lớp Jacobians

Đường cong hyperelliptic được cho bởi phương trình : y2 = f (x), trong đó f là một đa thức chia của biến x.

Jacobians. Các lớp này được coi là cấu trúc nhóm của G Cho k là phần mở rộng của k’. w là căn bậc hai của k.

Nếu C là đường cong hyperelliptic xác định bởi y2 = (x- w)f(x) thì ta có y2= g(x) định nghĩa trên k’. Các đường cong C’ có tính chất đặc biệt mà Jacobian C đồng cấu với Jacobian C’ đối với bậc của các nhóm.

Gọi là một đẳng cấu. Để thực hiện tấn công cần biết bậc của Jacobian C’. Chiến lược là sau khi tìm đường cong Elliptic E thì xây dựng đường cong C’. Khi đã

có C’ sẽ áp dụng cuộc tấn công một lần nữa, khi có thể áp dụng cuộc tấn công, có thể

tính được hiệu quả Jacobian C’.

c/. Các phép toán đối với cuộc tấn công :

Cho đường cong C, cần chứng tỏ là chuẩn của C. hay với đường cong C, chúng ta có Jac(C) cần chứng tỏ cũng là Jacobian .

Bổ đề 2.1 :

Cho C1 : y2 – f và C2 : y2 – g là hai đường cong hyperelliptic định nghĩa trên trường k, với f và g là hai đa thức chia trong k[x] với h- fg/(gcd(f, g))2 không thuộc k. Nếu đặt C3 = y2 – h thì đường cong trở thành :

C= y4 – 2(f+ g)y2 – (f- g)2 có thuộc tính

Jac(C)

Bằng cách kiểm tra nguồn gốc của C trong ta thấy không nằm

trong x. Đó là nơi mà h không thuộc k được sử dụng. Cho trường chức năng của C1

k(x) và cho trường chức năng của C2 là k(x) .

Nếu lấy tổng hợp của hai trường chức năng trên ta được k(x) . Với y= y1+ y2 là hoán vị của hàm Galois, Gal(k(x) /k(x))= {1, } và Gal(k(x) /k(x))=

{1, } nghĩa là k(x) = k(x) . Dễ dàng thấy rằng đa thức tối giản Irrk(x)y là kết

quả của C, nó chỉ đơn giản là . Bây giờ ta có Gal(k(x) /k(x) =

Z/2Z Z/2Z và rõ ràng là C/ C2, C/ C1 và C/( ) C3. Do vậy ta có

Jac(C) Định lý 2.3:

Cho C là đường cong Elliptic . Nếu tồn tại một điểm k-rational r Supp(R) sao cho nếu (r) không thuộc Supp(R) và (Supp(R)- {r})= Supp(R), sau đó Jac(C)2 là k- isogenous của Jaccobian trên đường cong hyperelliptic C’ định nghĩa trên trường k’.

Hệ quả 2.1: Đường cong C’ có thể viết là :

Y2= với x và y cho bởi

x=

y= + t(w2 + 1- )

Với là một đa thức trong k’[t]

Định lý 2.4:

Tồn tại hàm : (Jac(C)(k)) (Jac(C’)(k’)) và : (Jac(C’)(k’))

(Jac(C)(k)) sao cho nhân của thành phần bao gồm tất cả bậc của (Jac(C)(k)).

Hệ quả 2.2: Sử dung các ký hiệu trên : #Jac(C)(k) = #Jac(C’)(k’)

Hệ quả 2.3:

Có k’-isogeny W Jac(C’). Nếu L(t) là đa thức của C trên k, thì L(t2) là đa thức của C’ trên k’. Từ đó #C’(k’)= q + 1

d/. Thuật toán đếm điểm ([16], trang 9) :

Cho đa thức L và hàm Zeta có quan hệ với nhau. Cho Fq và = Fq là phần

bậc hai mở rộng với w2 Fq. Cho C là đường cong Elliptic định nghĩa bởi y2= (x- w)f, f Fq với gốc w.

Thuật toán đầu tiên được sử dụng để tạo ra đường cong của bất kỳ với q +1 điểm trên

Thuật toán 2.5:

 Input :

(1) Một số nguyên tố q (2) Một số nguyên g>0

 Output :

(1)Một đường cong hyperelliptic của 2g trên Fq với q+ 1 điểm

 Thực hiện :

(1) Tìm ngẫu nhiên trong s w2 Fq. Đặt w2= s

(2) Tìm ngẫu nhiên đa thức chia f của 2g+ 1

(3) Nếu f có w hoặc –w là gốc, quay lại bước trước

(4) Kết quả phương trình Y2= sử dụng f và w

Thuật toán 2.6:

 Input:

(1) Một số nguyên tố q > 3 (2) Giá trị w

(3) Một đường cong C trên (4) Đa thức L của C

 Output:

(1) Một đường cong hyperelliptic trên Fq với đa thức L(t2).

 Thực hiện

(5) Kết quả phương trình Y2= sử dụng f và w

2.3.2.2 Trình bày thuật toán ([16], trang 10)

Thuật toán tấn công này dựa trên chỉ số tính toán :

Thuật toán :

 Input :

1. Đường cong C trên từ y2 = (x- w)f

2. Một phép chia D= [z- x0, y0] trên C

3. Đường cong C’ từ thuật toán 2

 Output :

1. Phép chia D là một dạng của C’ sao cho (D)= D’

2. Định nghĩa a0(z)= (z- x0)(z- ) và định nghĩa a(t)= a0(x)=(t2- 1)2 với x từ hệ

quả 1.

3. if y0=0 return [1, 0]

Cho a1(t) và a2(t) là phân tích tối giản của a(t)

 if a1 và a2 là duy nhất, đổi chỗ ai với

 Cho 1 là gốc duy nhất của i, đặt ei =( - 1)( i + 1)

Cho T (e1Tr(y0), e2Tr(y0))

Cho G là đa thức y2= G(x) định nghĩa trên C’.

Đặt bi = (T[i]2 +G)/(2T[i])

if G mod a1= mod a1 then return [a1, bi mod a1]

if G mod a2= mod a2 then return [a2, bi mod a2]

5. Cho R là danh sách gốc của a(t) trên trường phân chia

6. Cho d0= trên phần mở rộng

7. Cho e(t) = (t2- 1)(t + 1)

8. For i= 1 to #R, Kiểm tra if x(Ri)= x0 với x(t) là phần mở rộng của hệ quả 1

if phép kiểm tra là đúng thì thêm vào [(y0- d0)e(Ri), (y0+ d0)e(Ri),Ri)] vào ma trận L

9. if #Rows(L)< 2 hoặc x0 k’ then

Cho b là đa thức nội suy của điểm (L1,3, L1,1), ( , )

Đổi chỗ a(t) và return 2[a(t), b]

10. else cho A nội suy (L1,3, L1,1), (L2,3, L2,2), ( , ), ( , )

11. Và B nội suy (L1,3, L1,2), (L2,3, L2,1), ( , ), ( , )

12. if G mod a(t) = A2 mod a(t), return [a(t), A]

13. else return [a(t),B]

2.3.1.3 Ví dụ minh họa ([16], trang 12)

Ví dụ về đếm điểm trên đường cong yếu :

Sử dụng thuật toán 2 về đếm điểm với 160 bits, chúng ta có đường cong hyperelliptic y2= 67353434412343231568661t6+ 266764643564099517354601t5 + 244021071497214277712230t4+ 311017899974232689949122t3 + 557134887168713724834785t2+ 537290912002427906501256t+246564062462488879689319

trên trường GF(1207034207473389622886491). Số nguyên tố Jacobians của đường cong có 160 bits 1456931578010913785349746263294406745202104698519.

Ví dụ về đếm điểm trên đường cong sử dụng thuật toán 2.6 w2 = 12499454285990

trên GF (17592186044423) và xem xét các đường cong elliptic xác định bởi

E : y2 = x3 + (17592186044422w1 + (12188339541165w0 + 12188339541164))x2 + ((5403846503258w0 + 5403846503259)w1 + (16901862777098w0 + 4980906183389))x + (690323267325w0 + 12611279861034)w1

Trên GF(175921860444234). Số nguyên tố được phân tích là: 1995436902172302086412028343508819458313536173109093 Thuật toán 2.6 cho kết quả 4 đường cong

C:y2=

362258632462x10+8876727378392x9+1189989348357x8+1604531604165x7+812169 1981760x6+ 10448625566159x5 + 16506034668669x4 + 15707410711712x3 + 7302308550432x2 + 1913995000352x +6027788515385 trên GF(17592186044423) Tấn công dựa trên phần cứng

Các cuộc tấn công dựa trên phần cứng giúp thám mã có thể tìm được các thông tin mong muốn mà không cần phải tấn công vào thuật toán mã hóa. Với loại tấn công này thám mã không cần phải có một thiết bị máy tính siêu việt nào mà chỉ cần các thiết bị hoạt động bình thường, bằng sự hiểu biết về hoạt động của hệ thống cộng thêm sự theo dõi sự thay đổi của các tín hiệu thu được trong quá trình phân tích của hệ thống mà thám mã có thể tìm ra được khóa bí mật, các kiểu tấn công này chủ yếu dựa vào các thông tin thu được như: Thời gian trễ, nguồn điện tiêu thụ hay các tín hiệu khác.. Đối với mật mã dựa trên đường cong Elliptic, các tấn công đó thực hiện như sau:

Một phần của tài liệu luận văn: nghiên cứu sự an toàn của một số hệ mật mã hiện đại (Trang 67)

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

(84 trang)