1. Trang chủ
  2. » Công Nghệ Thông Tin

Các hệ mật khóa công khai

24 1,1K 13
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 1,1 MB

Nội dung

Các hệ mật khóa công khai

Trang 1

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ùngnhiều trong nhiều thủ tục mật mã Bởi vậy ta sẽ dành nhiều thời gian để thảoluậ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 Elgamaldự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

5.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,

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ìnhnghiê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 150chữ 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àitoán logarithm rời rạc trong xây dợng hệ mật là khó tìm đợc các logarithmrờ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ả theothuậ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ánlogarithm 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ã đợcmã 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ố,

Trang 2

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

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

k Sau đó anh ta sẽ "tháo mặt nạ" bằng cách chia y2 cho k để thu đợc x

= 2396Khi đó 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á

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 pvới y1 ,y2  Zp* ta xác định:

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

Trang 3

5.1.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ênthuỷ theo modulo p Ta thấy rằng p và  là các số cố định Khi đó bài toánlogarithm rời rạc có thể đợc phát biểu dới dạng sau: tìm một số mũ a duynhấ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éptì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ácthừ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ếpcác cặp có thứ tự (a, a mod p) có lu ý đế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ầmthờ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.

- 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ì

Trang 4

log = mj+itrong đó 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ộtcách ( đồng thời ) qua từng danh sách L1 và L2

Sau đây là một ví dụ nhỏ để minh hoạ

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

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

= 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ử

Trang 5

pi là số nguyên tố đặc biệt Giá trị a = log đợc xác định một cách duy nhấttheo 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ựchiệ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 + qcsvớ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)/qq  (p-1)a0/qq(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)/qq mod p Nếu

p-1  0 (mod qc+1)

Trang 6

(p-1)/qq  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)/qq mod p, 2 mod p, .,

cho tới i  (p-1)/qq (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ảitiếp tục xác định a1 Để làm điều đó ta phải xác định

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

Trang 7

3 = 7

4 = 25Bở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

Trang 8

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ủaphầ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 theomodulo p nh sau:

x j  p1a1jp2a 2j 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  a1jlogp1+ + aBjlogpB (mod p-1)

1  j  C C đồng d thức đợc cho theo B giá trị logpi (1  i  B) cha biết

Ta hy vọng rằng, có một nghiệm duy nhất theo modulo p-1 Nếu đúng nhvậ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

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á

ngẫu nhiên s ( 1  s  p-2) và tính :

 =  s mod pBâ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  c1logp1+ + cBlogpB ( 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,

Trang 9

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:

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ácnhau 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ínhtoá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 chotrớc)

5.1.2 Độ bảo mật tng 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ờirạ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

Trang 10

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 pNế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 pkhi 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) | = 2với mọi y  QR(p) và bởi vậy:

| QR(p) = (p-1)/q2

bình phơng và một nữa không phải

aQR(p) nếu a chẵn Vì (p-1)/q2 phần tử 0mod 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)/q2}

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ỉ

và chỉ khi

(p-1)/q2  1 (mod p)

Nh 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 ttrong đó 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ấtkì cho việc tính Ls+1() để tính các logarithm rời rạc trong Zp

0 nếu (p-1)/q2  1( mod p)L

1()=

1 trong các tr ờng hợp còn lại

Trang 11

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ậttoán giả định bất kì tính L2() để giải bài toán logarithm rời rạc trong Zp.

(p+1)/q2 mod p là hai giá trị căn bậc hai của modulo p Một chú ý cũng quantrọ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)

Vì p  3 (mod 4) nên số nguyên (p-1)/q2 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 (cha biết) nào đó Khi đó hoặc:

(p+1)/q4  a/q2 (mod p)hoặc

-(p+1)/q4  a/q2 (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/q2)

Đ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ủalog, 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*.(

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 Z p với p  3 ( mod 4) khi

biết trớc thuật toán giả định L 2 ( ).

Trang 13

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  2Y i (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0Vì rằng xi+1 = L2() nên thuật toán là đúng Các chi tiết dành cho độc giả xemxét

Hệ mật Elgamal có thể đợc áp dụng trong một nhóm bất kì mà bài

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 trongmộ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

hoá yêu cầu dùng số nguyên k ngẫu nhiên sao cho 0  k  | H | - 1 Tuynhiê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 đổinà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 trng của bài toán: I = (G, , ), trong đó G là một nhóm hữu

Trang 14

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ởiphần tử  tuỳ ý  G dĩ nhiên phải là nhóm con cyclic cấp | H | Bởi vậy, dạngbấ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 DLtrong 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

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

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

Trang 15

ở 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ấuvới nhóm cộng Zp-1 Theo thảo luận ở trên, ta đã biết cách tinh các logarithmrờ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

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:

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 minhphé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

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ợclạ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ơnnế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

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ữuhạn q phần tử nếu q = pn, trong đó p là số nguyên tố , n  1là số nguyên Bâygiờ 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

Ngày đăng: 22/08/2012, 11:30

TỪ KHÓA LIÊN QUAN

w