CÁc hệ MẬt khoá CÔng khai kháC



tải về 269.78 Kb.
Chuyển đổi dữ liệu13.08.2016
Kích269.78 Kb.
#17951


CHƯƠNG 5

CÁC HỆ MẬT KHOÁ CÔNG KHAI KHÁC

Trong chương này ta sẽ xem xét một số hệ mật khoá công khai khác. Hệ mật Elgamal dựa trên bài toán logarithm rời rạc là bài toán được dùng nhiều trong nhiều thủ tục mật mã. Bởi vậy ta sẽ dành nhiều thời gian để thảo luận về bài toán quan trọng này. ở các phần sau sẽ xem xét sơ lược một số hệ mật khoá công khai quan trọng khác bao gồm các hệ thoóng loại Elgamal dựa trên các trường hữu hạn và các đường cong elliptic, hệ mật xếp ba lô Merkle-Helman và hệ mật McElice.


    1. HỆ MẬT ELGAMAL VÀ CÁC LOGARITHM RỜI RẠC.

Hệ mật Elgamal được xây dựng trên bài toán logảithm rời rạc . Chúng ta sẽ bắt đầu băng việc mô tả bài toán bài khi thiết lập môi trường hữu hạn Zp, p là số nguyên tố ( hình 5.1) ( Nhớ lại rằng nhóm nhân Zp* là nhóm cyclic và phần tử sinh của Zp* được gọi là phần tử nguyên thuỷ).


Bài toán logarithm rời rạc trong Zp là đối tượng trong nhiều công trình nghiên cứu và được xem là bài toán khó nếu p được chọn cẩn thận. Cụ thể không có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây khó khăn cho các phương pháp tấn công đã biết p phải có ít nhất 150 chữ số và (p-1) phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarithm rời rạc trong xây dượng hệ mật là khó tìm được các logarithm rời rạc ,song bài toán ngược lấy luỹ thừa lại có thể tính toán hiệu quả theo thuật toán "bình phương và nhân". Nói cách khác , luỹ thừa theo modulo p là hàm một chiều với các số nguyên tố p thích hợp.
Elgamal đã phát triển một hệ mật khoá công khai dựa trên bài toán logarithm rời rạc. Hệ thống này được trình bày trên hình 5.2.
Hệ mật này là một hệ không tất định vì bản mã phụ thuộc vào cả bản rõ x lẫn giá trị ngẫu nhiên k do Alice chọn. Bởi vậy, sẽ có nhiều bản mã được mã từ cùng bản rõ.

Hình 2.6 Bài toán logarithm rời rạc trong Zp


Đặc trương của bài toán: I = (p,,) trong đó p là số nguyên tố,

  Zp là phần tử nguyên thuỷ ,   Zp*

Mục tiêu:Hãy tìm một số nguyên duy nhất a, 0  a  p-2 sao cho:

a   (mod p)

Ta sẽ xác định số nguyên a bằng log 


Hình 2.7 Hệ mật khoá công khai Elgamal trong Zp*

Cho p là số nguyên tố sao cho bài toán logarithm rời rạc trong Zp là khó giải. Cho   Zp* là phần tử nguyên thuỷ.Giả sử P = Zp* ,

C = Zp*  Zp* . Ta định nghĩa:

K = {(p, ,a,):   a (mod p)}

Các giá trị p, , được công khai, còn a giữ kín

Với K = (p, ,a,) và một số ngẫu nhiên bí mật k  Zp-1, ta xác định:

ek (x,k) = (y1 ,y2 )

trong đó

y1 = k mod p

y2 = xk mod p

với y1 ,y2  Zp* ta xác định:

dk(y1 ,y2 ) = y2 (y1a )-1 mod p

Sau đây sẽ nmô tả sơ lược cách làm việc của hệ mật Elgamal .Bản rõ x được "che dấu" bằng cách nhân nó với k để tạo y2 . Giá trị k cũng được gửi đi như một phần của bản mã. Bob -người biết số mũ bí mật a có thể tính được k từ k . Sau đó anh ta sẽ "tháo mặt nạ" bằng cách chia y2 cho k để thu được x.


Ví dụ 5.1

Cho p = 2579,  = 2, a = 765. Khi đó

 = 2765 mod 2579 = 949

Bây giờ ta giả sử Alice muốn gửi thông báo x = 1299 tới Bob. Giả sử số ngẫu nhiên k mà cô chọn là k = 853. Sau đó cô ta tính


y1 = 2853 mod 2579

= 435


y2 = 1299  949853 mod 2579

= 2396
Khi đó Bob thu được bản mã y = (435,2396), anh ta tính


x = 2396  (435765)-1 mod 2579

= 1299
Đó chính là bản rõ mà Alice đã mã hoá.




      1. Các thuật toán cho bài toán logarithm rời rạc.

Trong phần này ta xem rằng p là số nguyên tố,  là phần tử nguyên thuỷ theo modulo p. Ta thấy rằng p và  là các số cố định. Khi đó bài toán logarithm rời rạc có thể được phát biểu dưới dạng sau: tìm một số mũ a duy nhất, 0  a  p-2 sao cho a  (mod p), với   Zp* cho trước.
Rõ ràng là bài toán logarithm rời rạc (DL) có thể giải bằng một phép tìm kiếm vét cạn với thời gian cỡ O(p) và không gian cỡ O(1) ( bỏ qua các thừa số logarithm). Bằng cách tính toán tất cả các giá trị a có thể và sắp xếp các cặp có thứ tự (a, a mod p) có lưu ý đến các tạo độ thứ hai của chúng, ta có thể giải bài toán DL với thời gian cỡ O(1) bằng O(p) phép tính toán trước và O(p) bộ nhớ ( vẫn bỏ qua các thừa số logarithm). Thuật toán không tầm thường đầu tiên mà chúng ta sẽ mô tả là thuật toán tối ưu hoá thời gian - bộ nhớ của Shanks.
Thuật toán Shanks




Hình 5.3. Thuật toán Shanks cho bài toán DL.





  1. Tính mj mod p, 0  j  m-1

  2. Sắp xếp m cặp thứ tự ( j,mj mod p) có lưu ý tới các tạo độ thứ hai

của các cặp này, ta sẽ thu được một danh sách L1

  1. Tính -i mod p, 0  i  m-1

  2. Sắp xếp m cặp thứ tự (i, -i mod p) có lưu ý tới các toạ độ thứ hai của các cặp được sắp này, ta sẽ thu được một danh sách L2

  3. Tìm một cặp (j,y)  L1 và một cặp (i,y)  L2 ( tức là một cặp có tạo độ thứ hai như nhau).

  4. Xác định log = mj + i mod (p-1)





  • Nếu cần, các bước 1 và 2 có thể tính toán trước ( tuy nhiên, điều này không ảnh hưởng tới thời gian chạy tiệm cận)

  • Tiếp theo cần để ý là nếu (j,y)  L1 và (i,y)  L2 thì

mj = y = -i


Bởi vậy
mj+i = 
như mong muốn. Ngược lại, đối với  bất kì ta có thể viết
log = mj+i
trong đó 0  j,i  m-1. Vì thế phép tìm kiếm ở bước 5 chắc chắn thành công.
Có thể áp dụng thuật toán này chạy với thời gian O(m) và với bộ nhớ cỡ O(m) ( bỏ qua các thừa số logarithm). Chú ý là bước 5 có thể thực hiện một cách ( đồng thời ) qua từng danh sách L1 và L2.
Sau đây là một ví dụ nhỏ để minh hoạ.

Ví dụ 5.2.

Giả sử p = 809 và ta phải tìm log3525. Ta có  = 3,  = 525 và m = 808 = 29. Khi đó:
29 mod 809 = 99
Trước tiên tính các cặp được sắp (j,99j mod 809) với 0  j28. Ta nhận được danh sách sau:
(0,1) (1,99) (2,93) (3,308) (4,559)

(5,329) (6,211) (7,664) (8,207) (9,268)

(10,644) (11,654) (12,26) (13,147) (14,800)

(15,727) (16,781) (17,464) (18,314) (19,275)

(20,582) (21,496) (22,564) (23,15) (24,676)

(25,586) (26,575) (27,295) (28,81)


Danh sách này sẽ được sắp xếp để tạo L1.
Danh sách thứ hai chứa các cặp được sắp (i,525(3i)-1 mod 809), với 0  i  28. Danh sách này gồm:
(0,525) (1,175) (2,328) (3,379) (4,396)

(5,132) (6,44) (7,554) (8,724) (9,511)

(10,440) (11,686) (12,768) (13,256) (14,,355)

(15,388) (16,399) (17,133) (18,314) (19,644)

(20,754) (21,496) (22,564) (23,15) (24,676)

(25,356) (26,658) (27,489) (28,163)


Sau khi sắp xếp danh sách này, ta có L2 .

Bây giờ nếu xử lý đồng thời qua cả hai danh sách, ta sẽ tìm được ( 10,644) trong L1 và (19,644) trong L2. Bây giờ ta có thể tính


log3525 = 2910+19

= 309
Có thể kiểm tra thấy rằng quả thực 3309  525 (mod 809).


Thuật toán Pohlig - Hellman.

Thuật toán tiếp theo mà ta nghiên cứu là thuật toán Pohlig - Hellman. Giả sử





pi là số nguyên tố đặc biệt. Giá trị a = log được xác định một cách duy nhất theo modulo p-1. Trước hết nhận xét rằng, nếu có thể tính a mod pici với mỗi i, 1  i  k, thì có thể tính a mod (p-1) theo định lý phần dư China. Để thực hiện diều đó ta giả sử rằng q là số nguyên tố.

p
-1  0 (mod qc)

Ta sẽ chỉ ra cách tính giá trị

x = a mod qc

0
 x  qc-1. Ta có thể biểu diễn x theo cơ số q như sau:

trong đó 0  ai  q-1 với 0  i  c-1. Cũng có thể biểu diễn như sau:

a = x + qcs

với s là một số nguyên nào đó.
Bước đầu tiên của thuật toán tính a0. Kết quả chính ở đây là:
(p-1)/q  (p-1)a0/q(mod p)
Đ

ể thấy rõ điều đó cần chú ý rằng:
Điều này đủ để cho thấy:

K

ết quả này đúng khi và chỉ khi:

Tuy nhiên

Đó chính là điều cần chứng minh.


Do đó ta sẽ bắt đầu bằng việc tính (p-1)/q mod p. Nếu
(p-1)/q  1 (mod p)
thì a0=0. Ngược lại chúng ta sẽ tính liên tiếp các giá trị:
 = (p-1)/q mod p, 2 mod p,. . .,

cho tới i  (p-1)/q (mod p).

với một giá trị i nào đó. Khi điều này xảy ra ta có a0 =i.
Bây giờ nếu c = 1 thì ta đã thực hiện xong. Ngược lại, nếu c > 1 thì phải tiếp tục xác định a1. Để làm điều đó ta phải xác định
1 =  -ao

và kí hiệu

x1 = log1 mod qc

D
ễ dàng thấy rằng


V
ì thế dẫn đến

Như vậy ta sẽ tính 1(p-1)/q2 mod p và rồi tìm i sao cho

K
hi đó a1 = i.
Nếu c =2 thì công việc kết thúc; nếu không, phải lặp lại công việc này c-2 lần nữa để tìm a2,. . .,ac-1.
Hình 5.4 là mô tả giải mã của thuật toán Pohlig - Hellman. Trong thuật toán này,  là phần tử nguyên thuỷ theo modulo p, q là số nguyên tố .

p-1  0 (mod qc)

v
à

Thuật toán tính các giá trị a0, . . ., ac-1 trong đó

log mod qc

H
ình 5.4. Thuật toán Pohlig - Hellman để tính log mod qc.






  1. Tính  = (p-1)/q mod p với 0  i  q-1

  2. Đặt j = 0 và j = 

  3. While j  c-1 do

  4. Tính  = j(p-1)/q j+1 mod p

  5. Tìm i sao cho  = i

  6. aj = i

  7. j+1 = j-aj qj mod p

  8. j = j +1



Chúng ta minh hoạ thuật toán Pohlig - Hellman (P - H) qua một ví dụ nhỏ.


Ví dụ 5.3

Giả sử p=29; khi đó

n = p-1 = 28 = 22.71

Giả sử  = 2 và  = 18. Ta phải xác định a = log218. Trước tiên tính a mod 4 rồi tính a mod 7.

Ta sẽ bắt đầu bằng việc đặt q = 2, c = 2. Trước hết

0 = 1

và 1 = 28/2 mod 29

= 214 mod 29

= 28

Tiếp theo



 = 28/2 mod 29

= 1814 mod 29

= 28

Vì a0 = 1. Tiếp theo ta tính:



1 = 0-1 mod 29

= 9


128/4 mod 29 = 97 mod 29

= 28



1  28 mod 29

Ta có a1 = 1. Bởi vậy a  3 ( mod 4).

Tiếp theo đặt q = 7 và c = 1, ta có

28/7 mod 29 = 184 mod 29

= 25

và 1 = 28/7 mod 29



= 24 mod 29

= 16.


Sau đó tính: 2 = 24

3 = 7

4 = 25

Bởi vậy a0 = 4 và a  4 ( mod 7)


Cuối cùng giải hệ phương trình

a  3 ( mod 4)

a  4 ( mod 7)

bằng định lý phần dư China, ta nhận được a  11( mod 28). Điều này có nghĩa là đã tính được log218 trong Z29 là 11.



Phương pháp tính toán chỉ số.

Phương pháp tính chỉ số khá giống với nhiều thuật toán phân tích thừa số tốt nhất. Trong phần này sẽ xét tóm tắt về phương pháp. Phương pháp này chỉ dùng một cơ sở nhân tử là tập B chứa các số nguyên tố nhỏ. Giả sử B = {p1,p2,. . ., pB}. Bước đầu tiên ( bước tiền xử lý) là tìm các logarithm của B số nguyên tố trong cơ sở nhân tử. Bước thứ hai là tính các logarithm rời rạc của phần tử  bằng cách dùng các hiểu biết về các log của các phần tử trong cơ sở.

Trong quá trình tiền xử lý, ta sẽ xây dựng C = B +10 đồng dư thức theo modulo p như sau:
xj  p1a1jp2a2j. . . pBaBj(mod p)

1  j  C. Cần để ý rằng, các đồng dư này có thể viết tương đương như sau:


xj  a1jlogp1+ . . . + aBjlogpB (mod p-1)

1  j  C. C đồng dư thức được cho theo B giá trị logpi (1  i  B) chưa biết. Ta hy vọng rằng, có một nghiệm duy nhất theo modulo p-1. Nếu đúng như vậy thì có thể tính các logarithm của các phần tử theo cơ sở nhân tử.


Làm thế nào để tạo các đồng dư thức có dạng mong muốn?. Một phương pháp sơ đẳng là chọn một số ngẫu nhiên x, tính x mod p và xác định xem liệu x mod p có tất cả các thừa số của nó trong B hay không. (Ví dụ bằng cách chia thử).
Bây giờ giả sử rằng đã thực hiện xong bước tiên tính toán, ta sẽ tính giá trị mong muốn log bằng thuật toán xác suất kiểu Las Vegas. Chọn một số ngẫu nhiên s ( 1  s  p-2) và tính :

 =  s mod p

Bây giờ thử phân tích  theo cơ sở B. Nếu làm được điều này thì ta tính được đồng dư thức dạng:

s = p1c1p2c2. . . pBcB (mod p)

Điều đó tương đương với

log + s  c1logp1+ . . . + cBlogpB ( mod p-1)

Vì mọi giá trị đều đả biết trừ giá trị log nên có thể dễ dàng tìm được log.
Sau đây là một ví dụ minh hoạ 2 bước của thuật toán.
Ví dụ 5.4.

Giả sử p =10007 và  = 5 là một phần tử nguyên thuỷ được dùnglàm cơ sở của các logarithm theo modulo p. Giả sử lấy B = {2, 3, 5, 7} làm cơ sở. Hiển nhiên là log55 = 1 nên chỉ có 3 giá trị log của các phần tử trong cơ sở cần phải xác định. Để làm ví dụ, chọn một vài số mũ "may mắn" sau: 4063, 5136 và 985.

Với x = 4063, ta tính

54063 mod 10007 = 237

ứng với đồng dư thức
log52 + log53 + log57  4063 ( mod 10006).

Tương tự, vì


55136 mod 10007 = 54 = 233

và 59865 mod 10007 = 189 = 337


ta tìm được hai đồng dư thức nữa:
log52 + 3log53  5136 ( mod 10006)

3log53 + log57  9865 ( mod 10006)


Bây giờ ta có 3 đồng dư thức theo 3 giá trị log chưa biết. Giải các phương trình đồng dư này, ta có log52 = 6578, log53 = 6190, log57 = 1301.
Bây giờ giả sử ta cần tìm log59451, ta chọn số mũ "ngẫu nhiên" s=7736 và tính:

945157736 mod 10007 = 8400


Vì 8400 = 24315271 các thừa số trong B nên ta nhận được:

log59451 = 4log52 + log53 + log55 + log57 - s mod 10006

= 46578 + 6190 + 21 + 1310 - 7736 mod 10006

= 6057.


Kiểm tra lại ta thấy rằng 56057  9451 ( mod 10007).
Đ

ã có nhiều nghiên cứu phân tích mò mẫm nhiều kiểu thuật toán khác nhau. Với giả thiết hợp lý, Thời gian chạy tiệm cận của giai đoạn tiền tính toán này cỡ

và thời gian để tính một giá trị logarithm rời rạc riêng là khoảng


Hình 5.5. Bít thứ i của logarithm rời rạc.



Bản chất của bài toán: I = (p, , , i) trong đó p là số nguyên tố , Zp* là phần tử nguyên thuỷ,   Zp* và i là một số nguyên sao cho 1  i  log2(p-1).
Mục tiêu:Tính Li() là bít thấp nhất thứ i của log. (với  và p cho trước)




      1. Độ bảo mật tưng bít của các logarithm rời rạc.

Bây giờ ta xem xét vấn đề về thông tin bộ phận của các logarithm rời rạc và thử xem việc tính các bít riêng của các logarithm rời rạc là khó hay dễ. Cụ thể , xét bài toán trình bày trên hình 5.5. Bài toán này được gọi là bài toán về bít thứ i.
Trước tiên, ta sẽ chỉ ra rằng, bít thấp nhất của các logarithm rời rạc rất dễ tính toán. Nói cách khác, nếu i = 1 thì bài toán về bít thứ i có thể giải được một cách hiệu quả. Điều này rút ra từ tiêu chuẩn Euler liên quan đến thặng dư bình phương theo modulo p, với p là số nguyên tố .
Xét ánh xạ f: Zp* Zp* được định nghĩa như sau:
f(x) = x2 mod p
Nếu kí hiệu QR(p) là tập các thặng dư bình phương theo modulo p thì
QR(p) = { x2 mod p : x  Zp*}
Trước tiên ta thấy rằng, f(x) = f(p-x). Tiếp theo xét thấy:
w2  x2 mod p

khi và chỉ khi p | (w-x)(w+x)


điều này sẽ xảy ra khi và chỉ khi w   x mod p. Từ đây rút ra:
| f-1(y) | = 2
với mọi y  QR(p) và bởi vậy:
| QR(p) = (p-1)/2
Điều đó có nghĩa là có đúng một nữa các thặng dư trong Zp* là các thặng dư bình phương và một nữa không phải.
Bây giở giả sử rằng,  là một phần tử nguyên thuỷ của Zp* . Khi đó aQR(p) nếu a chẵn. Vì (p-1)/2 phần tử 0 mod p, 2 mod p,. . .,p-3 mod p đều là các phần tử khác nhau nên:
QR(p) = {2i mod p: 0  i  (p-3)/2}
Bởi vậy,  là thặng dư bình phương khi và chỉ khi log là chẵn, tức khi và chỉ khi L1() = 0. Tuy nhiên theo tiêu chuẩn Euler  là thặng dư bình phương khi và chỉ khi

(p-1)/2  1 (mod p)

N
hư vậy, ta đã có công thức hữu hiệu sau để tính L1():

Bây giờ xét việc tính Li() với i > 1. Giả sử

p-1 = 2s t

trong đó t là số lẻ. Khi đó có thể chỉ ra rằng, dễ dàng tính được Li() nếu 1s. Mặt khác, việc tính Ls+1() chắc chắn là khó nếu dùng thuật toán giả định bất kì cho việc tính Ls+1() để tính các logarithm rời rạc trong Zp.


Ta sẽ chứng minh kết quả này trong trường hợp s = 1. Chính xác hơn, nếu p  3 (mod 4)là số nguyên tố thì ta sẽ chỉ ra cách sử dụng một thuật toán giả định bất kì tính L2() để giải bài toán logarithm rời rạc trong Zp.
Nếu  là một thặng dư bình phương trong Zp và p  3 ( mod 4) thì (p+1)/2 mod p là hai giá trị căn bậc hai của modulo p. Một chú ý cũng quan trọng là với bất kì   0:

L1()  L1(p-).

nếu p  3 (mod 4). Ta sẽ thấy điều đó như sau. Giả sử

a   (mod p)

thì a+(p-1)/2  - (mod p)

Vì p  3 (mod 4) nên số nguyên (p-1)/2 là một số lẻ. Từ đây rút ra kết quả.


Bây giờ giả sử  = a với số mũ chẵn a (chưa biết) nào đó. Khi đó hoặc:

(p+1)/4  a/2 (mod p)

hoặc

-(p+1)/4  a/2 (mod p)



Ta có thể xác định giá trị nào trong hai giá trị có thể này là đúng nếu biết giá trị L2(), vì

L2() = L1(a/2)

Điều này được khai thác trong thuật toán được mô tả trong hình 5.6.
Ở cuối thuật toán, các giá trị xi là các bít biểu diễn nhị phân của log, nghĩa là:



Dưới đây là một ví dụ nhỏ để minh hoạ.


Ví dụ 5.5.

Giả sử p =19,  = 2 và  = 6. Vì trong ví dụ này, các giá trị quá nhỏ nên có thể lập bảng các giá trị của L1() và L2() với mọi mọi giá trị Z19*.( Nói chung L1 có thể tính được một cách hiệu quả bằng tiêu chuẩn Euler, còn L2 được tính theo thuật toán giả định). Các giá trị này được cho trên bảng 5.1. Thuật toán được tiến hành như trên hình 5.7.

Bởi vậy, log26 = 11102 = 14, ta có thể dễ dàng kiểm tra được giá trị này.
Hình 5.6. Tính các logarithm rời rạc trong Zp với p  3 ( mod 4) khi biết trước thuật toán giả định L2().




  1. x0 = L1()

  2.  = /x0 mod p

  3. i =1

  4. While   1 do

  5. xi = L2()

  6.  = (p+1)/4 (mod p)

  7. if L1() = xi then

  8.  = 

  1. 9. else

10.  = p -

  1.  = /xi mod p

  2. i = i+1



Bảng 5.1. Các giá trị của L1 và L2 với p =19,  = 2






L1()

L2()



L1()

L2()



L1()

L2()

1

0

0

7

0

1

13

1

0

2

1

0

8

1

1

14

1

1

3

1

0

9

0

0

15

1

1

4

0

1

10

1

0

16

0

0

5

0

0

11

0

0

17

0

1

6

0

1

12

0

0

18

1

0

Có thể đưa ra một chứng minh hình thức cho tính đúng đắn của thuật toán bằng phương pháp quy nạp. Kí hiệu

V
ới i  0, ta định nghĩa:

Yi = x/2i+1
Hình 5.7 Tính log26 trong Z19


  1. x0 = 0

  2.  =6

  3. i =1

  1. x1 = L2(6) = 1

  2.  = 5

  3. L1(5) = 0  x1

10.  =14

11. i =2


12. i =2

5. x2 = L2(7) =1

6.  = 11

7. L1(11) = 0  x2

10.  =8

11.  =4


12. i = 3

5. x3 = L2(4) = 1

6.  =17

7. L1(17) = 0  x3

10.  = 2

11.  =1


12. i = 4

4. DONE



Cũng vậy ta xác định 0 là giá trị của  ở bước 2 trong thuật toán; và với i1, ta xác định i là giá trị của  ở bước 11 trong bước lặp thứ i của vòng While. Có thể chứng minh bằng phương pháp quy nạp rằng:


i  2Yi (mod p)

với mọi i0. Bây giờ để ý rằng: 2Yi = Yi-1 - xi

điều này kéo theo
xi+1 = L2(i) , i0
Vì rằng xi+1 = L2() nên thuật toán là đúng. Các chi tiết dành cho độc giả xem xét.



    1. TRƯỜNG HỮU HẠN VÀ CÁC HỆ THỐNG ĐƯƠNG CONG ELLIPTIC.

Chúng ta đã dành thời gian đáng kể để xét bài toán logarithm rời rạc (DL) vào việc phân tích số. Ta sẽ còn trở lại hai bài toán này trong các loại hệ mật và các giao thức mã khác nhau. Bài toán DL đã được nghiên cứu trong trương hữu hạn Zp, tuy nhiên việc xét bài toán này theo các thiết lập khác nhau cũng rất có ích và là chủ đề của phần này.


Hệ mật Elgamal có thể được áp dụng trong một nhóm bất kì mà bài toán DL là khó giải. Ta đã dùng nhóm nhân Zp* tuy nhiên các nhóm khác cũng là những ứng cử viên thích hợp. Trước hết ta phát biểu bài toán DL trong một nhóm hữu hạn nói chung G (hữu hạn) và ở đó kí hiệu phép lấy nhóm là dấu "". Dạng bài toán tổng quát hoá như vậy trình bài trên hình 5.8.
Dễ dàng xác định một hệ mật Elgamal trong nhóm con H theo cách tương tự đã mô tả trong Zp* và được trình bày trên hình 5.9. Chú ý rằng phép mã hoá yêu cầu dùng số nguyên k ngẫu nhiên sao cho 0  k  | H | - 1. Tuy nhiên, nếu Alice không biết cấp của nhóm con H thì cô ta có thể tạo một số nguyên k thoả mãn 0  k  | G | -1, khi đó sẽ không có bất kì sự thay đổi nào trong quá trình mã và giải mã. Cũng cần chú ý là nhóm G không phải là nhóm Aben (Tuy H vẫn là nhóm Aben vì nó là nhóm cyclic).

Hình 5.8. Bài toán logarithm rời rạc trong (G,0)



Đặc trưng của bài toán: I = (G, , ), trong đó G là một nhóm hữu hạn với phép lấy nhóm o ,   G và   H, trong đó
H = { i : i  0}
là một nhóm con sinh bởi .
Mục tiêu: Tìm một số nguyên duy nhất a sao cho 0  a  | H | -1 và

a = , với kí hiệu a có nghĩa là  o . . . o  (a lần)

Ta sẽ kí hiệu số nguyên a này bằng log


Bây giờ ta sẽ trở lại bài toán DL tổng quát hoá . Nhóm con H được sinh bởi phần tử  tuỳ ý  G dĩ nhiên phải là nhóm con cyclic cấp | H |. Bởi vậy, dạng bất kì của bài toán theo một nghĩa nào đó đều tương đương với bài toán DL trong một nhóm cyclic. Tuy nhiên, độ khó của bài toán DL dường như phụ thuộc vào cách biểu diễn nhóm được dùng.


Xét một ví dụ về cách biểu diễn mà với nó, bài toán logarithm rời rạc rất dễ giải. Xét nhóm cộng cyclic Zn và giả sử UCLN(,n) = 1, bởi vậy  là phần tử sinh của Zn. Vì phép toán trong nhóm là cộng theo modulo n nên phép lấy mũ sẽ là nhân với a theo modulo n. Vì thế trong cách xây dựng này, bài toán logarithm rời rạc sẽ là tìm số nguyên a sao cho.

a   (mod n)

Vì UCLN(,n) = 1 nên  có phần tử nghịch đảo nhân theo modulo n và ta có thể dễ dàng tính -1 mod n bằng thuật toán Euclide. Sau đó có thể giải để tìm a và nhận được

log =  -1 mod n



Hình 5.9. Hệ mật khoá công khai Elgamal tổng quát

Giả sử G là một nhóm hữu hạn có phép lấy nhóm o. Giả sử   G là một phần tử sao cho bài toán DL trong H là khó; ở đây H = {i, i  0} là một nhóm con sinh bởi . Đặt P = G, C = GG và định nghĩa:

K = {(G, , a, ) :  = a}

Các giá trị ,  công khai, còn a được giữ kín.

Với K = (G, , a, ) và với một số ngẫu nhiên bí mật k  Z|H| ta xác định:

eK(x,k) = (y1,y2)

trong đó y1 = k

và y2 = (x o k)

Với bản mã y = (y1,y2) ta xác định:

dK(y) = y2 o (y1a)-1



Ở phần trên ta đã nghiên cứu bài toán DL trong nhóm nhân Zp* vơi p là là số nguyên tố . Nhóm này là nhóm cyclic cấp p-1 và bởi vậy nó đẳng cấu với nhóm cộng Zp-1. Theo thảo luận ở trên, ta đã biết cách tinh các logarithm rời rạc một cách hiệu quả trong nhóm cộng này. Điều đó gợi ý khả năng giải bài toán DL trong Zp* bằng cách quy nó về bài toán giải được dễ dàng trong Zp-1.

Ta hãy xem xét điều này được thực hiện như thế nào?. Khi nói rằng, (Zp*, ) là đẳng cấu với (Zp-1, +) có nghĩa là có một song ánh :

 : Zp*  Zp-1

sao cho (xy mod p) = ((x) + (y)) mod (p-1)

Điều đó kéo theo:

(a mod p) = a () mod (p-1)

Bởi vậy


  a mod p  a ()  () (mod p-1)

Do đó nếu tìm a theo mô tả ở trên, ta có:

log = () (())-1 mod (p-1)

Bây giờ, nếu có một phương pháp hữu hiệu để tính phép đẳng cấu  thì ta sẽ có một thuật toán hữu hiệu để tính các logarithm rời rạc trong Zp*. Khó khăn ở đây là không có một phương pháp chung đã biết nào để tính hiệu quả phép đẳng cấu  với số nguyên tố tuỳ ý. Ngay cả khi đã biết hai nhóm là đẳng cấu thì vẫn không thể biết một thuật toán hiệu quả để mo tả tương minh phép đẳng cấu.


Phương pháp này có thể áp dụng cho bài toán DL trong một nhóm G tuỳ ý. Nếu có một phương pháp hiệu quả tính phép đẳng cấu giữa H và Z|H| thì bài toán DL trong G mô tả ở trên có thể giải được một cách hữu hiệu. Ngược lại, dễ dàng thấy rằng, một phương pháp tính các logarithm rời rạc có hiệu quả sẽ tạo ra phương pháp hiệu quả tính phép đẳng cấu giữa hai nhóm.
Thảo luận ở trên chỉ ra rằng, bài toán DL có thể dễ hoặc khó (xétbề ngoài) tuỳ thuộc vào biểu diễn của nhóm cyclic được dùng. Như vậy, sẽ tốt hơn nếu xem xét các nhóm khác với hy vọng tìm được các thiết lập khác nhau để bài toán DL có vẻ khó. Có hai lớp nhóm như vậy.


  1. Nhóm nhân của trường Galois GF(pn)

  2. Nhóm của một đường cong elliptic xác định trên một trương hữu hạn.

Ta hãy xem xét hai lớp nhóm này ở phần sau.
5.1.2. Trường Galois

Ta đã biết rằng, nếu p là số nguyên tố thì Zp sẽ là một trường. Tuy nhiên có nhiều trường hữu hạn khác không có dạng trên. Thực tế có các trường hữu hạn q phần tử nếu q = pn, trong đó p là số nguyên tố , n  1là số nguyên. Bây giờ ta sẽ mô tả ngắn gọn cách xây dựng một trường như vậy. Trước tiên ta sẽ đưa ra một vài định nghĩa.


Định nghĩa 5.1

Giả sử p là số nguyên tố. Gọi Zp[x] là tập tất cả các đa thức biến x. Bằng cách xây dựng phép cộng và nhân đa thức theo quy tắc thông thường ( và rút gọn hệ số theo modulo p) ta sẽ tạo nên một vành.

Với f(x), g(x)  Zp[x], ta nói rằng, f(x) chia hết cho g(x) ( kí hiệu f(x) | g(x)) nếu tồn tại q(x)  Zp[x] sao cho:

g(x) = q(x)f(x)

Với f(x)  Zp[x], ta xác định bậc của f ( kí hiệu là deg(f)) là số mũ cao nhất có trong các số hạng của f.

Giả sử f(x), g(x), h(x)  Zp[x] và deg(f) = n  1, ta định nghĩa:

g(x)  h(x) (mod f(x))

nếu f(x) | (g(x) - h(x)).
Chú ý sự tương tự giữa định nghĩa về đồng dư của các đa thức với định nghĩa về đồng dư của các số nguyên.
Bây giờ ta sẽ định nghĩa vành các đa thức theo modulo f(x). (ta kí hiệu vành này là Zp[x]/f(x)). Việc xây dựng Zp[x]/f(x) từ Zp[x] dựa trên khái niệm về các đồng dư thức theo modulo f(x) và nó tương tự như việc xây dựng Zm từ Z.
Giả sử deg(f) = n. Nếu chia g(x) cho f(x), ta thu được thương q(x) và phần dư r(x), trong đó:

g(x) = q(x)f(x) + r(x)

và deg(r) < n.

Điều này có thể thực hiện theo cách chia các đa thức thông thường. Bởi vậy, một đa thứ bất kì trong Zp[x] đều đồng dư theo modulo f(x) với một đa thức duy nhất có bậc  n-1.


Bây giờ ta sẽ xác định các phần tử của Zp[x]/f(x) là pn các đa thức trong Zp[x] có bậc nhiều nhất là n-1. Phép cộng và nhân trong Zp[x]/(f(x)) được xác định như trong Zp[x], sau đó thực hiện rút gọn theo modulo f(x). Với phép toán này, Zp[x]/(f(x)) sẽ tạo thành một vành.
Cần nhớ lại rằng, Zm là một trường khi và chỉ khi m là số nguyên tố và các phần tử nghịch đảo nhân có thể tìm được qua thuật toán Euclide. Tình hình cũng tương tự xảy ra đối với Zp[x]/(f(x)). Sự tương tự của các số nguyên tố với các đa thức bất khả quy được xác định như sau:
Định nghĩa 5.2

Đa thức f(x)  Zp[x] được gọi là bất khả quy nếu không tồn tại các đa thức f1(x), f2(x)  Zp[x] sao cho

f(x) = f1(x)f2(x).

trong đó deg(f1) > 0 và deg(f2) > 0.
Một thực tế rất quan trọng là Zp[x]/(f(x)) là một trường khi và chỉ khi f(x) bất khả quy. Hơn nữa, các phần tử nghịch đảo nhân trong Zp[x]/(f(x)) có thể tính được bằng cách dùng thuật toán Euclide mở rộng có biến đổi đôi chút.
Sau đây là một ví dụ minh hoạ cho vấn đề nêu ra.
Ví dụ 5.6

Xây dựng một trường 8 phần tử. Điều này có thể thực hiện bằng cách tìm một đa thức bất khả quy bậc 3 trong Z2[x]. Ta chỉ cần xem xét các đa thức có thành phần hằng số bằng 1 vì một đa thức bất kì có thành phần hằng số bằng 0 sẽ chia hết cho x và bởi vậy nó là một đa thức bất khả quy . Có tất cả 4 đa thức như vậy.


f1(x) = x3 + 1

f2(x) = x3 + x + 1

f3(x) = x3 + x2 + 1

f4(x) = x3 + x2 + x + 1


Xét thấy f1(x) là khả quy vì:
x3 +1 = (x+1)(x2+x+1)
(cần để ý là tất cả các hệ số được rút gọn theo modulo 2). Tương tự, f4(x) cũng khả quy vì:
x3+x2+x+1 = (x+1)(x2+1)
Tuy nhiên cả hai đa thức f2(x) va f3(x) lại đều là đa thức bất khả quy và có thể dùng hai đa thức này để xây dựng trường 8 phần tử .
Giả sử dùng f2(x) để xây dựng trường Z2[x]/(x3+x+1). 8 phần tử của trường là 8 đa thức : 0, 1, x, x+1, x2, x2+1, x2+x, x2+x+1
Để tính tích của hai phần tử của trường, nhân hai đa thức với nhau và rút gọn theo modulo x3+x+1 (tức chia cho (x3+x+1) và tìm đa thức dư). Vì ta chia một đa thức bậc 3 nên đa thức dư có bậc nhiều nhất là 2 và vì thế nó là một phần tử của trường.
Ví dụ, ta hãy tính (x2+1)(x2+x+1) trong Z2[x]/(x3+x+1). Trước hết tính tích trong Z2[x] là x4+x3+x+1. Khi chia cho x3+x+1, ta nhận được biểu thức sau:

x4+x3+x+1 = (x+1)(x3+x+1) +x2+x


Bởi vậy, trong trường Z2[x]/(x3+x+1) ta có :
(x2+1)(x2+x+1) = x2+x
Dưới đây sẽ đưa ra bảng dầy đủ cho cá phần tử khác 0 của trường. Để đơn giản, ta viết đa thức : a2x2+a1x+a0 theo bộ ba được sắp a2a1a0.





001 010 011 100 101 110 111

001

010


011

100


101

110


111

001 010 011 100 101 110 111

010 100 110 011 001 111 101

011 110 101 111 100 001 010

100 011 111 110 010 101 001

101 001 100 010 111 011 110

110 111 001 101 011 010 100

111 101 010 001 110 100 011

Việc tính các phần tử nghịch đảo được tực hiện theo thuật toán Euclide mở rộng có biến đổi đôi chút.


Cuối cùng, ta thâý rằng nhóm nhân của các đa thức khác 0 trong trường là một nhóm cyclic cấp 7. Vì 7 là số nguyên tố nên suy ra mọi phần tử khác 0 của trường đều là phần tử sinh của nhóm này (tức là phần tử nguyên thuỷ).
Ví dụ, nếu tính các luỹ thừa của x, ta có:
x1 = x

x2 =x2

x3 = x+1

x4 = x2+1

x5 = x2+ x+1

x6 = x2+1

x7 = 1

sẽ bao gồm tất cả các phần tử khác 0 của trường.


Vấn đề còn lại là sự tồn tại và tính duy nhất của các trường dạng này. Có thể chỉ ra rằng, có ít nhất một đa thức bất khả quy bậc bất kì n 1 trong Zp[x]. Bởi vậy, sẽ có một trường hữu hạn pn phần tử đối với mọi nguyên tố p và mọi số nguyên n1. Thông thương có khá nhiều đa thức bất khả quy bậc n trong Zp[x]. Tuy nhiên, những trường hữu hạn được xây dựng từ hai đa thức bất khả quy bất kì bậc n đều có thể chứng tỏ được chúng là đaửng cấu với nhau. Bởi vậy, chỉ có một trương hữu hạn duy nhất cấp pn tuỳ ý (p - số nguyên tố, n 1) là trường GF(pn). Trong trường hợp n = 1, trương GF(p) cũng chính là Zp. Cuối cùng, có thể chỉ ra rằng, không tồn tại một trường hữu hạn r phần tử trừ phi r = pn với p là số nguyên tố , n là số nguyên nào đó (n1).
Ta đã nhận thấy là nhóm nhân Zp* (p - số nguyên tố) là một nhóm cyclic cấp p-1. Thực tế, nhóm nhân của trường hữu hạn bất kì đều là nhóm cyclic: GF(pn)\{0} là một nhóm cyclic cấp pn-1. Nhóm này sẽ cho các ví dụ về các nhóm cyclic trong đó bài toán DL có thể được nghiên cứu.


Thực tế các trường hữu hạn GF(2n) đã được nghiên cứu khá kĩ. Cả hai thuật toán logarithm rời rạc Shanks và Pohlig-Hellman đều làm việc trên các trường GF(2n). Phương pháp tính toán chỉ số có thể sửa đổi để làm việc trên các trương này. Thời gian tiền tính toán của thuật toán tính toán chỉ số khoảng

còn thời gian để tìm một giá trị logarithm rời rạc riêng khoảng

Tuy nhiên, với các giá trị n lớn (n > 800), bài toán DL trong GF(2n) được coi là khó cỡ 2n phải có ít nhất một thừa số nguyên tố "lớn" ( để gây khó khăn cho cách tấn công Pohlig - Hellman).


      1. Các đương cong Elliptic

Ta bắt đầu bằng việc định nghĩa khái niệm đường cong elliptic.


[Phương trình (5.1) có thể dùng để xác định một đường cong elliptic trên một trường bất kì GF(pn) với p - là số nguyên tố lớn hơn 3. Đường cong elliptic trên GF(2n) hoặc GF(3n) được xác định bằng một phương trình khác đôi chút)].


Đường cong elliptic E có thể tạo thành một nhóm Aben bằng cách xác định một phép toán thích hợp trên các điểm của nó. Phép toán này là phép cộng và được xác định như sau ( ở đây mọi phép toán số học được thực hiện trên Zp).

Giả sử


P = (x1,y1) và Q = (x2,y2)

là các điểm trên E. Nếu x2=x1 và y2=-y1 thì P+Q = O; ngược lại P+Q = (x3,y3) trong đó:

x3 = 2-x1-x2

y
3 = (x1-x3)-y1


Cuối cùng ta xác định

P+O = O+P = P

đối với mọi P  E. Với định nghĩa phép cộng như vậy, có thể chỉ ra rằng, E là một nhóm Aben với phần tử đơn vị O. ( phần lớn các phép kiểm tra đều khá đơn giản song việc chứng minh tính kết hợp lại rất khó).
Cần để ý là các phần tử ngược (nghịch đảo) rất dễ tính toán. Phần tử nghịch đảo của (x,y) là (x,-y) với mọi (x,y)  E ( ta kí hiệu phần tử này là -(x,y) do phép nhóm là phép cộng)
Xét ví dụ sau.
Ví dụ 5.7

Giả sử E là một đường cong elliptic y2 = x3+x+6 trên Z11. Trước tiên ta xác định các điểm trên E. Để làm điều đó, xét mỗi giá trị có thể x  Z11, tính x3+x+6 mod 11 và thử giải phương trình (5.1) đối với y. Với giá trị x cho trước, ta có thể kiểm tra xem liệu z = x3+x+6 mod 11 có phải là một thặng dư bình phương hay không bằng cách áp dụng tiêu chuẩn Euler. Ta đã có một công thức tường minh để tính các căn bậc hai của các thặng dư bình phương theo modulo p với các số nguyên tố p  3 (mod 4). Áp dụng công thức này, ta có các căn bậc hai của một thặng dư bình phương z là:

z(11+1)/4 mod 11 = z3 mod 11

Kết quả của các phép tính này được nêu trên bảng 5.2


Như vậy, E có tất cả 13 điểm. Với một nhóm bất kì cấp nguyên tố đều là nhóm cyclic nên dẫn đến E đẳng cấu với Z13 và một điểm bất kì ( không phải điểm vô cực) đều là phần tử sinh của nhóm E. Giả sử ta lấy phần tử sinh là (2,7) = . Khi đó ta có thể tính các "luỹ thừa" của  ( chính là các bội của  vì phép nhóm là phép cộng). Để tính 2 = (2,7) + (2,7), trước hết ta tính:

 = (322+1)(27)-1 mod 11

= 23-1 mod 11

= 24 mod 11

= 8

Sau đó ta có: x3 = 82-2-2 mod 11



= 5

và y3 = (8(2-5)-7) mod 11

= 2

Bởi vậy 2 = (5,2)


Bảng 5.2 Các điểm trên đường cong elliptic y2 = x3+x+6 trên Z11


x

x3+x+6 mod 11

Có trong QR(11)?

y

0

1

2



3

4

5



6

7

8



9

10


6

8

5



3

8

4



8

4

9



7

4


Không

Không


Không



Không


Không





4,7


5,6
2,9
2,9

3,8
2,9


Bội tiếp theo là 3 = 2+ = (5,2) + (2,7). Ta lại bắt đầu bằng viẹc tính .

 = (7-2)(2-5)-1 mod 11

= 58-1 mod 11

= 57 mod 11

= 2


Khi đó ta có x3 = 22-5-2 mod 11

= 8


và y3 = 2(5-8) - 2 mod 11

= 3


Bởi vậy 3 = (8,3)

Tiếp tục theo cách tương tự, có thể tính được các bội còn lại như sau:


 = (2,7) 2 = (5,2) 3 = (8,3)

4 = (10,2) 5 = (3,6) 6 = (7,9)

7 = (7,2) 8 = (3,5) 9 = (10,9)

10 = (8,8) 11 = (5,9) 12 = (2,4)


Do đó  = (2,7) thực sự là phần tử nguyên thuỷ.
Một đường cong elliptic xác định trên Zp (p là số nguyên tố >3) sẽ có khoảng p điểm. Chính xác hơn, theo một định lý nổi tiếng của Hasse, số các điểm trên E ( kí hiệu là E) thảo mãn bất đẳng thức sau:


Việc tính toán chính xác giá trị của E có khó hơn nhưng đã có một thuật toán hữu hiệu do Schoof đưa ra giúp tính toán dễ dàn hơn.( Nghĩa hữu hiệu ở đây được hiểu là thời gian chạy của thuật toán là thời gian đa thức theo log p. Thuật toán Schoof có thời gian chạy khoảng O((log p)8) phép tính trên bít và có thể thực hiện đối với các số nguyên tố p có vài trăm chữ số).
Bây giờ giả sử có thể tính được E. Vấn đề tiếp theo là phải tìm một nhóm con cyclic trong E sao cho bài toán DL trong nó là khó. Bởi vậy ta phải biết một vài điều về cấu trúc của nhóm E. Định lý sau đây cung cấp một thông tin đáng kể về cấu trúc nhóm của E.
Định lý 5.1

Cho E là một đường cong elliptic trên Zp, p là số nguyên tố > 3. Khi đó, tồn tại các số nguyên n1 và n2 sao cho E là đẳng cấu với Zn1Zn2. Ngoài ra n2 | n1 và n2 | (p-1).
Bởi vậy nếu có thể tính được các số n1 và n2 thì ta sẽ biết rằng E có một nhóm con cyclic đẳng cấu với Zn1 và có thể dùng E để thiết lập một hẹe mật Elgamal.
Chú ý là nếu n2 = 1 thì E là một nhóm cyclic. Cũng vậy, nếu E là một số nguyên tố hoặc là tích của các số nguyên tố khác nhau thì E là nhóm cyclic có chỉ số nhóm cyclic.

Các thuật toán Shanks và Pohlig - Hellman có thể áp dụng cho bài toán rời rạc trên đường cong Elliptic song tới nay vẫn chưa có một thuật toán thích hợp cho phương pháp tính chỉ số đối với các đường cong Elliptic.Tuy nhiên, đã có một phương pháp khai thác đẳng cấu một cách tường minh giữa các đường cong Elliptic trong trường hữu hạn. Phương pháp này dẫn đến các thuật toán hữu hiệu đối với một số lớp các đường cong Elliptic. Kỹ thuật này do Menezes, Okamoto và Vanstone đưa ra và có thể áp dụng cho một số trường hợp riêng trong một lớp đặc biệt các đường cong Elliptic (được gọi là các đường cong siêu biến, chúng đã được kiến nghị sử dụng trong các hệ thống mật mã). Tuy nhiên, nếu tránh các đường cong siêu biến thì lại xuất hiện một đường cong Elliptic có một nhóm con cyclic cỡ 2160 , đường cong này sẽ cho phép thiết lập an toàn một hệ mật miễn là bậc của nhóm con phải là bội của ít nhất một thừa số nguyên tố lớn ( nhằm bảo vệ hệ mật khỏi phương pháp tấn công của Pohlig - Hellman).


Xét một ví dụ về phép mã Elgamal sử dụng đường cong elliptic nêu trên ví dụ 5.7.
Ví dụ 5.8.

Giả sử  = (2,7) và số mũ mật của Bob là a = 7. Bởi vậy:

 = 7 = (7,2)

Phép mã hoá thực hiện như sau

eK(x,k) = (k(2,7),x+k(7,2))

trong đó xE và 0  k  12 còn phép giải mã thực hiện như sau:

dK(y1,y2) = y2-7y1

Giả sử Alice muốn mã bản tin x = (10,9) ( là một điểm trên E). Nếu cô chọn giá trị ngẫu nhiên k=3 thì cô tính

y1 = 3(2,7)

= (8,3)


và y2 = (10,9) + 3(7,2)

= (10,9) + (3,5)

= (10,2)

Bởi vậy, y = ((8,3),(10,2)). Bây giờ nếu Bob nhận được bản mã y thì anh ta giải mã như sau:

x = (10,2) - 7(8,3)

= (10,2) - (3,5)

= (10,2) + (3,6)

= (10,9)


Đây chính là bản rõ đúng.
Trên thực tế có một số khó khăn khi áp dụng hệ mật Elgamal trên đường cong Elliptic. Hệ thống này được áp dụng trong Zp ( hoặc trong GF(pn) với n > 1) sẽ có hệ số mở rộng bản tin là 2. Việc áp dụng đường cong Elliptic sẽ có thừa số mở rộng khoảng 4 lần. Điều này là do có xấp xỉ p bản rõ, nhưng mỗi bản mã lại gổm bốn phần tử của trường. Một trở ngại là không gian bản rõ chứa các điểm trên đường cong E và không có phương pháp nào xác định tường minh các điểm trên E
Menezes và Vanstone đã tìm ra một phương án hiệu quả hơn. theo phương án này đường cong Elliptic dùng để "che dấu", còn các bản rõ và bản mã hợp lệ là các cặp được sắp tùy ý các phần tử khác không của trường( tức là chúng không đòi hỏi phải là các điểm trên E). Điều này sẽ tạo hệ số mở rộng bản tin là 2 giống như trong hệ mật Elgamal ban đầu. Hệ mật Menezes - Vanstone được mô tả trên hình 5.10.
Nếu trở lại đường cong y2 = x3 + x + 6 trên Z11 ta sẽ thấy rằng hệ mật Menezes - Vanstone có 1010 = 100 bản rõ, trong khi đó hệ mật ban đầu chỉ có 13 bản rõ. Ta sẽ minh hoạ phép mã và giải mã trong hệ mật này bằng cách sử dụng đường cong trên.
Hình 3.6 Hệ mật trên đường cong Elliptic của Menezes - Vanstone


Giả sử E là một đường cong Elliptic trên Zp (p là số nguyên tố > 3) sao cho E chứa một nhóm con cyclic H, trong đó bài toán DL là bài toán khó.

Giả sử P = Zp*  Zp* , C = E  Zp*  Zp* ,ta định nghĩa:

K = { (E,,a,) :  = a  }

trong đó E. Các giá trị  và  được công khai, còn a được giữ kín.

Đối với K = (E,,a,), với số ngẫu nhiên bí mật k  Z| H |

và x = (x1,x2)  Zp* Zp*, ta xác định:



eK (x,k) = (y0,y1,y2)

y0 = k 

(c1,c2) = k 

y1 = c1x1 mod p

và y2 = c2y2 mod p

Với bản mã y = (y0,y1,y2), ta định nghĩa

dK (y) = (y1c1-1 mod p, y2c2-1 mod p)

trong đó a y0 = (c1,c2)




Ví dụ 5.9

Cũng như ví dụ trước, giả sử  = (2,7) và số mũ mật của Bob là 7. Khi đó

 = 7 = (7,2)

Giả sử Alice muốn mã hoá bản rõ sau:

x = (x1,x2) = (9,1)

(Cần chú ý là x không phải là một điểm trên E) và cô chọn giá trị ngẫu nhiên k = 6. Đầu tiên cô tính:
y0 = k = 6(2,7) = (7,9)

và k = 6(7,2) = (8,3)

Như vậy, c1 = 8 còn c2 = 3.
Tiếp theo Alice tính:

y1 = c1x1 mod p = 89 mod 11 = 6

và y2 = c2x2 mod p = 31 mod 11 = 3

Bản mã mà cô giửi cho Bob là:


y = (y0,y1,y2) = ((7,9), 6, 3)

Khi Bob nhận được bản mã này, Trước tiên anh ta tính:


(c1,c2) = (a y0) = 7(7,9) = (8,3)

và sau đó tính:

x = (y1c1-1 mod p, y2c2-1 mod p)

= ((68-1 mod 11, 33-1 mod 11)

= (67 mod 11, 34 mod 11)

= (9,1).
H


Đặc trưng của bài toán: I = (s1, s2, . . . ,sn, T) trong đó s1, . . ., sn và T là các số nguyên dương. Các si được gọi là các cỡ, T được gọi là tổng đích.
Vấn đề: Liệu có một véc tơ nhị phân x = (x1, . . . , xn) sao cho:




ình 5.11. Bài toán tổng các tập con

Đây chính là bản rõ đúng.



5.3. HỆ MẬT XÊP BA LÔ MERKLE - HELLMAN


Каталог: files -> FileMonHoc
FileMonHoc -> NGÂn hàng câu hỏi lập trình cơ BẢn nhóm câu hỏI 2 ĐIỂM
FileMonHoc -> CHƯƠng 2 giới thiệu về LÝ thuyết số
FileMonHoc -> BỘ MÔn duyệt chủ nhiệm Bộ môn
FileMonHoc -> Khoa công nghệ thông tin cộng hòa xã HỘi chủ nghĩa việt nam
FileMonHoc -> Chủ nhiệm Bộ môn Ngô Thành Long ĐỀ CƯƠng chi tiết bài giảNG
FileMonHoc -> Chủ nhiệm Bộ môn Phan Nguyên Hải ĐỀ CƯƠng chi tiết bài giảNG
FileMonHoc -> Khoa: CÔng nghệ thông tin cộng hòa xã HỘi chủ nghĩa việt nam
FileMonHoc -> MẬt mã khóA ĐỐi xứng lý thuyết cơ bản của Shannon
FileMonHoc -> Khoa công nghệ thông tin bài giảng LẬp trình cơ BẢn biên soạn
FileMonHoc -> Khoa cntt cộng hòa xã HỘi chủ nghĩa việt nam

tải về 269.78 Kb.

Chia sẻ với bạn bè của bạn:




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương