Đây là cải tiến của tấn công gặp nhau ở giữa. 2.2.3.1 Yêu cầu và giả thiết phục vụ tấn công
Đối với tấn công này,giả thiết thám mã biết bản mã (u, v) trong đó khóa công khai (q, p, y) sử dụng để mã hóa thông điệp. Chỉ có phần thứ hai v= myk của bản mã được sử dụng.
Điều kiện tốt để thực hiện tấn công:
Thông điệp m ban đầu hầu hết là các bit b nhỏ. VD: Thám mã có thể biết được thông điệp là khóa DES 56 bit. Tuy nhiên tấn công này trở nên không khả thi khi chọn các thông điệp lớn hơn 64 bit
Yêu cầu s>2b
m có thể phân tích thành 2 thừa số với kích thước lớn nhất là b1, b2
Biết thứ tự n của g trong Zp*. Nếu p- 1 chỉ có một ước nguyên tố lớn thì có thể dùng phương pháp pollard’s rho để phân tích để tính n.
Thông điệp được đaị diện như một phần tử của (g). Đối với Elgamal thì thông điệp được đại diện như một phần tử của Zp*
n (p-1)2-b. Điều đó cho thấy khi cho một phần tử vn có trật tự phân chia (p-
1)/n trong Zp* thì số lượng thông điệp phân biệt mong muốn m sao cho mn= vn là nhỏ
2.2.3.2 Trình bày thuật toán: Các bước thực hiện như sau:
Cho p- 1 = nrs với s là mịn
Tìm phần tử a của Zp* để tạo ra các phân nhóm trật tự s
Thay vì lũy thừa v bậc n như Mid in the middle, ta lũy thừa v với bậc nr
(anr)s = ap-1 =1 với a là một phần tử của Zp*, anr sẽ là một phần tử thuộc nhóm con < > với thứ tự s. Do đó có thể tính được hàm logarit rời rạc với cơ số
Giả sử có thể phân tích thành = 1 2 , kích thước được cho lớn nhất là b1, b2 ,nếu v là một bản mã của thì:
v= yk = yk 1 2
vnr =(yk)nr 1nr 2nr vnr = 1nr 2nr
log vnr = log 1nr +log 2nr với cơ số
Trước hết ở giai đoạn trước khi tính toán, ta xây dựng hai bảng T1 và T2. Với T1
chứa cặp (log 1nr, 1) với 1 = 1…2b1 và T2 chứa cặp (log 2nr, 2) với 2 = 1…2b2
Ở giai đoạn tấn công: Tìm hai cặp (t1, v1) và (t2, v2) trong bảng sao cho log vnr = t1+ t2 mod s. Nếu tìm được một cặp như thế thì v1v2 là bản rõ và m= v1v2.
Lưu trữ và tìm kiếm phần tử trong bảng
Sắp xếp bảng T1 theo thứ tự tăng dần của bản mã
Sắp xếp bảng T2 theo thứ tự giảm dần của bản mã
Cho t= log vnr tìm cặp (t1, v1) và (t2, v2) trong hai bảng T1, T2 sao cho t1 = t- t2 mod s. với t cố định
Phần tử bé nhất của T2’không nhất thiết phải được đẩy lên đầu tiên, mà sắp xếp vòng tròn.
Nếu t2 = t+ 1 thuộc T2 thì t- (t+ 1) mod s = s- 1 sẽ là phần tử lớn nhất trong T2’
Sử dụng tìm kiếm nhị phân t + 1 trong T2, nếu tìm thấy phần tử này thì sẽ giảm chỉ số của phần tử cần tìm kiếm. Nếu không tìm thấy phần tử này thì tìm kiếm nhị phân sẽ tìm các chỉ số giữa. Chỉ số nhỏ nhất sẽ cho phần tử nhỏ nhất 2 trong T2 nhỏ
hơn t+ 1 và phần tử t - 2 sẽ là phần tử lớn nhất trong T2’
Mục đích của việc sử dụng thêm bảng T2’ là tìm phần tử (t1, v1) trong T1 và (t2’, v2) trong T2’ sao cho t1= t2’. Khi đó có thể tìm được phần tử đích t là tổng phần tử đầu tiên của T1 và phần tử đầu tiên của T2’. Nếu phần tử đầu tiên trong T1 nhỏ hơn phần tử
đầu tiên trong T2’ thì sẽ tìm thấy phần tử đích ở trong T1 ngược lại phần tử đó được
tìm thấy ở T2’
Nếu b1= b2 thì các bảng sẽ giống nhau, lúc đó chỉ cần sử dụng 1 bảng được sắp xếp theo thứ tự tăng dần của bản mã.
Tấn công này có thể mở rộng cho ba, bốn bảng : Thông điệp sẽ được chia thành 3 hoặc 4 phần tử nên xác suất thành công sẽ thấp hơn rất nhiều. Tuy nhiên tấn công này đòi hỏi ít bộ nhớ hơn, tấn công sẽ khả thi cho những thông điệp dài.
2.2.3.3 Đánh giá phương pháp :
Để tránh được tấn công này ta thực hiện như sau: Biểu diễn thông điệp như một phần tử nguyên thủy của . Bằng cách chọn phần tử nguyên thủy g như vậy và = Zp* hoặc thiết lập ánh xạ giữa thông điệp với các nhóm con của , sau đó lũy thừa vn= 1.
II.3 Mật mã đường cong Elliptic
Cho K= FP định nghĩa trên trường hữu hạn với p> 3 là số nguyên tố. Đường
cong Elliptic theo công thức Weierstrass được mô tả như sau:
Xét tất cả các điểm P= (x, y) thỏa mãn E cùng với điểm vô cực 0 tạo thành một nhóm Abel ký hiệu E(K). Điểm x, y P được ký hiệu là x(P), y(P).
Cho P1= (x1, y1) và P2= (x2, y2) trên E(K) mà không có kết quả là điểm vô cực 0. Tổng P3= P1+ P3= (x3, y3) có thể tính như sau :
x3= λ (p1, p2)2 – x1 – x2, y3= λ (p1, p2)2 (x1 – x3) – y1
khi λ (p1, p2)= (3x12 + a)/ (2y1) với p1 = p2 và λ (p1, p2)= (y2- y1)/(x2- x1) với p1# p2 Chúng ta gọi p1+ P2(p1= p2) là Elliptic curve dou-bling(ECDBL), và p1+ P2(p1# p2)
là Elliptic curve addition (ECADD) trong tọa độ afine (x, y)
- Các tham số phổ biến :
Đường cong Elliptic E trên Fp hoặc F2m
Bậc của đường cong E ký hiệu #E là một số nguyên tố q lớn
P thuộc E
- Khóa bí mật:
D thuộc [1, q- 1] chọn ngẫu nhiên - Khóa công khai
Q= [d]P
- Mã hóa
Chọn một số n ngẫu nhiên n thuộc [1, q- 1]
Tính điểm (x1, y1)= [n]P và (x2, y2) = [n]Q Tính c= x2 + m Bản mã thu được (x1, y1, c) - Giải mã : Từ bản mã (x1, y1, c) Tính (x, y)= [d] (x1, y1) và m= c- x