Áp dụng PSS

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Khảo sát các chữ kí số dựa trên hệ RSA, nghiên cứu lược đồ chữ kí RSA-PSS và những chuẩn hóa (Trang 75)

Lƣợc đồ ký PSS đƣợc tham số hoá bởi hai số nguyên k0 và k1. Việc sinh khoá tƣơng tự giống nhƣ sơ đồ FDH. Thuật toán ký và kiểm tra sử dụng hai hàm băm

H: {0, 1}* {0, 1}k1 và G: {0, 1}k1 {0, 1}k - k1-1 . Gọi G1 là một hàm có đầu vào  1

0,1k

 và trả về k0 bit đầu tiên của G(), trong khi

G2 trả về k-k0-k1-1 bit còn lại của G(). Khi đó lƣợc đồ đƣợc minh hoạ nhƣ hình vẽ sau

SignPSS(M) r R  0 1 , 0 k wH(M||r) r*G1(w)  r y0 ||w||r*||G2 (w) VerifyPSS(M, x) yxe mod N

Biểu diễn y dƣới dạng b||w||r*|| Đặt rr*  G1(w)

nếu H(M||r) = wG2(w) =  và b =1 thì trả về 1ngƣợc lại trả về 0

Định lý dƣới đây chứng minh tính an toàn của PSS trong mô hình tiên đoán ngẫu nhiên.

Định lý 3:

Giả sử rằng bài toán RSA là (t’, ')-secure thì lƣợc đồ ký PSS[k0, k1] là (t, qsig, qhash,  )-secure, trong đó

t = t’ – (qhash+qsig).k0.O(k3) (6)

 = ’ +3. (qhash+qsig)2 .(2-k0+2-k1) (7)

Định lý này chỉ ra rằng để PSS an toàn ngang bằng với RSA (chẳng hạn  '), nó phải rơi vào trƣờng hợp (qhash+qsig)2 .(2-k0+2-k1) < ’, điều này dẫn đến k0> kmin và

k1>kmin, trong đó kmin = 2.log2(qhash+qsig) +log2 ' 1

 (8)

Cho qhash= 260, qsign = 230 và  = 2-60 [13], chúng ta thu đƣợc k0k1 phải lớn hơn kmin

phải lớn hơn 180 bits.

Định lý 4

Giả sử rằng RSA là (t’, ')-secure, lƣợc đồ ký PSS[k0, k1] là (t, qhash, qsig,  )-secure trong đó

t = t’ – (qhash, qsig).k1.O(k3) (9)

='.(1+6.qsig.2-k0)+2(qhash+qsig)2.2-k1 (10)

Định lý này chỉ ra rằng có thể chứng minh tính an toàn của lƣợc đồ RSA-PSS bằng luợc đồ RSA với một muối ngẫu nhiên ngắn hơn nhiều, cụ thể là k0 = log2qsign bit. Khi

Chứng minh

Việc chứng minh tƣơng tự nhƣ ở định lý 2.

Gọi F là ngƣời giả mạo muốn (t, qhash, qsig, )-break PSS . Chúng ta xây dựng muốn phép toán ngƣợc I mà nó thoả mãn (t’, )’-break đƣợc bài toán RSA. Phép toán ngƣợc nhận đầu vào là bộ giá trị (N, e, ) và phải đƣa ra đƣợc dmod N. Bộ nghịch đảo I

duy trì con chạy I đƣợc khởi tạo giá trị ban đầu bằng 0. Để trả lời một yêu cầu băm

M||r trong định ký 2, chúng ta đã sinh ra một số nguyên x *

N

Zy = xeb

với b = 0 hoặc b = 1 và định nghĩa H(M||r) = y. Điểm khác duy nhất ở đây là chúng ta biểu diễn

y dƣới dạng 0||w||r*|| , trong đó w có độ dài k1 bit, kích thƣớc của r*là k0 bit, độ dài của y k-k1-k0-1 bit còn lại. Chúng ta định nghĩa H(M||r) = wG(w) = rr* || . Hơn nữa chúng ta phải chắc chắn rằng giá trị w giống nhƣ thế không bao giờ xuất hiện hai lần nếu không chúng ta sẽ phải định nghĩa lại G(w).

Khi thông điệp M xuất hiện lần đầu tiên trong yêu cầu băm hoặc yêu cầu ký, bộ nghịch đảo tăng con chạy i lên và gán Mi M. Sau đó bộ nghịch đảo sinh ra một danh sách Li

gồm qsig số nguyên ngẫu nhiên thuộc tập  0,1k0.Khi ngƣời giả mạo thực hiện một yêu cầu H-oracle đối với Mi||r thì có 2 trƣờng hợp xảy ra. Nếu r thuộc danh sách Li , bộ nghịch đảo sinh ra một số nguyên x  *

N

Z và đƣa ra kết quả H(Mi||r) = xe mod N.

Ngƣợc lại bộ nghịch đảo gắn b = 0, ngƣợc lại gán b = 1. Sau đó bộ nghịch đảo sinh ra một số ngẫu nhiên x  *

N

Z cho đến khi bit đầu tiên của y=xeb

mod N bằng 0. Khi đó nó sẽ biểu diễn y dƣới dạng 0||w||r*|| và gán H(Mi||r) = w . Bộ nghịch đảo bỏ ngang nếu w đã xuất hiện trƣớc đó. Cuối cùng bộ nghịch đảo gán G(w ) = rr* || và trả về w nhƣ là câu trả lời dành cho yêu cầu H-oracle đối với Mi||r.

Khi ngƣời giả mạo thực hiện yêu cầu oracle G đối với w, bộ nghịch đảo sẽ trả lại giá trị G(w) nếu w đã xuất hiện trƣớc đó. Ngƣợc lại nó sẽ sinh ra một chuỗi ngẫu nhiên

 {0, 1}k-k1-1

Khi ngƣời giả mạo thực hiện yêu cầu ký đối với thông điệp Mi, bộ nghịch đảo nhặt ra một giá trị r ngẫu nhiên từ danh sách Li và loại nó ra khỏi danh sách. Nếu đã có một yêu cầu oracle H đối với Mi||r thì bộ nghịch đảo biết đƣợc giá trị x, y, w, r* và thoả mãn y = xe mod Ny = 0||w||r*|| trong đó H(Mi||r) = wG(w) = r* r|| , vì vậy bộ nghịch đảo trả về giá trị x nhƣ là chữ ký của Mi. Ngƣợc lại bộ nghịch đảo sinh ra một số ngẫu nhiên x  *

N

Z cho đến khi bit đầu tiên của y = xemod N bằng 0. Sau đó nó biểu diễn y dƣới dạng 0||w||r*|| và gán H(Mi||r) = w. Bộ nghịch đảo bỏ qua nếu w đã xuất hiện trƣớc đó. Sau đó bộ nghịch đảo gán G(w) = r* r|| và trả về giá trị x nhƣ là chữ ký của Mi.

Vì có tối đa qhash yêu cầu băm và qsig yêu cầu ký nên có ít hơn qhash+qsig giá trị w khác nhau xuất hiện. Xác suất để bộ nghịch đảo bỏ ngang sau khi sinh ra một giá trị w nhỏ hơn (qsig+qhash).2-k1. Do đó với giá trị xác suất ít nhất  2k1, ngƣời giả mạo đƣa ra đƣợc sự giả mạo và tồn tại một số nguyên i sao cho có một yêu cầu oracle H đối với

Mi||r. Sau đó nếu r không thuộc vào danh sách Li , bộ nghịch đảo biết giá trị x sao cho

y=xe. với  thoả mãn d=s/x mod N và bộ nghịch đảo thành công trong việc đƣa ra

d

 mod N.

Nhƣ ở định lý 2, xác suất để ri không thuộc danh sách Li có qsig số nguyên ngẫu nhiên là (1-2-k0)qsig

. Nếu k0 log2qsig và cho qsig  2 thì (1-2-k0)qsig

 (1- sig q 1 )qsig  4 1 .

Bởi vậy xác suất thành công  ’ của ngƣời giả mạo ít nhất là (  2k1)/4. Điều này cho thấy rằng đối với k0 log2qsig xác suất phá vỡ bài toán PSS[k0, k1] hầu nhƣ là giống với xác suất để phá vỡ bài toán RSA.

Đối với giá trị k0 nhỏ hơn, chúng ta áp dụng thủ thuật giống nhƣ ở định lý 2. Chúng ta sinh ra ít hơn qsig số nguyên ngẫu nhiên trong danh sách Li, cùng với sự phân phối giống nhƣ thế với tham số . Giống nhƣ ở định lý 2, xác suất thanh công ít nhất là

) ( . ). 2

chúng ta chọn một giá trị  để xác suất thành công đạt giá trị lớn nhất. Xác suất thành công của bộ nghich đảo ít nhất là

0 1 2 . . 6 1 2 k sig k q      

Ngoài ra khi trả lời yêu cầu băm và ký, xác suất để bit đầu tiên của xeb

mod N bằng 0 đối với giá trị x *

N

Z ít nhất là ½. Do chúng ta dƣng vòng lặp sau 1+k1 bƣớc, điều đó làm tăng thêm một giá trị xác suất thất bại là 2k1cho mỗi lần băm hoặc ký. Cuối cùng xác suất thành công 'của ngƣời giả mạo ít nhất là :

0 1 2 . . 6 1 2 . ) .( 2 ' 2 k sig k sig hash q q q      

 . Đây chính là công thức (10) cần đƣợc chứng minh.

Thời gian thực hiện của phép nghịch đảo là thời gian của phép giả mạo cộng với thời gian để sinh ra xeb

mod N .Vậy công thức (9) đã đƣợc chứng minh.

5.4 Chứng minh tính an toàn tối ƣu cho PSS

Phần 5.3 đã cho chỉ ra rằng muối có độ dài bit bằng k0 = log2qsig là đủ để PSS có độ an toàn ngang bằng với bài toán RSA. Một câu hỏi thú vị đặt ra là : kích thƣớc này liệu có tối ƣu hay không? Đối với k1 là kích thƣớc trả về của hàm băm H , giá trị cực tiêu kmin đƣợc cho ở công thức (8) rõ ràng là tối ƣu, bởi vì một ngƣời giả mạo thực hiện qhash yêu cầu băm có thể tìm ra đƣợc một sự xung đột. H(M||0)=H(M’||0) với xác suất là (qhash)2.2-k1/2 và sau đó giả mạo chữ ký của M’ bằng cách sử dụng chữ ký của M. Tuy nhiên có thể có bằng chứng về tính an toàn tốt hơn đối với PSS, mà nó mang lại tính chặt khi độ dài muối k0 ngắn hơn. Trong phần này chúng ta chỉ ra rằng nếu độ dài muối ngắn hơn đƣợc sử dụng thì độ an toàn của PSS không thể chứng minh ngang bằng với bài toán RSA đƣợc. Chính xác hơn chúng ta chỉ ra rằng : từ một phép suy dẫn nghịch đảo RSA trong khoảng thời gian tR với xác suất Rkhi thực hiện tối đa r lần một phép giả mạo đã phá vỡ bài toán PSS[k0, k1] với xác suất F, nó có thể thực hiện bài toán ngƣợc RSA mà không sử dụng phép giả mạo với xác suất

I

 =R-r.F.2k02/q

Định lý 5

Cho R là phép suy dẫn (t, qhash, qsig, F, R)-reduce bài toán ngƣợc RSA để phá vỡ bài toán PSS[k0, k1] với qhash qsig. Phép suy dẫn có thể thực thi hoặc thực hiện lại phép giả mạo tối đa r lần . Từ R chúng ta có thể xây dựng một thuật toán nghịch đảo cho RSA mà (tI, I)-inverts RSA với

tI = (r+1).tR (10) I  =R- r.F. sig k q 2 0 2  (11) Chứng minh

Chúng ta sử dụng phƣơng pháp sau đây

Chúng ta xét PSS với muối ngẫu nhiên có độ dài cố định là 0k0 bit và biểu thị lƣợc đồ ký này là PSS0[k0, k1]. Đầu tiên chúng ta chỉ ra cách để biến đổi phép giả mạo đối với PSS0[k0, k1] thành PSS[k0, k1]. Sau đó với phép suy dẫn R nào đó từ việc thực hiện bài toán ngƣợc RSA tới việc phá vỡ bài toán PSS[k0, k1] sẽ sử dụng phép giả mạo này để đối với PSS[k0, k1] để tính ngƣợc RSA. Do đó từ một phép giả mạo đối với PSS0[k0, k1], chúng ta có thể thực hiện bài toán ngƣợc RSA bằng cách sử dụng phép suy dẫn R. Mặt khác

từ R xây dựng một phép suy dẫn R0 phá vỡ bài toán PSS0[k0, k1] nhờ vào bài toán ngƣợc RSA.

Bổ đề 1

Cho F0 là phép giả mạo mà nó (t0

F, q0

hash, q0

sig, 0

F

 )-breaks PSS[k0, k1]. Từ F0 chúng ta có thể xây dựng một phép giả mạo F mà (tF, qhash, qsig, F)-breaks PSS[k0, k1] với qhash = q0 hash, qsig = 2k0+1 .q0 sig, F = 0 F  /2 Chứng minh bổ đề

Từ F0 chúng ta xây dựng phép giả mạo F cho PSS[k0, k1]. Khi ngƣời giả mạo F0 thực hiên một yêu cầu băm ngƣời giả mạo F thực hiện một phép toán băm tƣơng tự và

hƣớng tới kết quả của F0. Khi ngƣời giả mạo F0 thực hiện một yêu cầu ký đối với thông điệp M, ngƣòi giả mạo F thực hiện các yêu cầu ký đối với M cho đến khi muối ngẫu nhiên đƣợc sử dụng để sinh ra chữ ký là 0k0

. Sau đó nó chuyển chữ ký này tới F0. Cuối cùng ngƣời giả mạo F0 đƣa ra một chữ ký giả mạocho PSS0[k0, k1], và đó cũng là chữ ký giả mạođối với PSS[k0, k1].

Khi F thực hiện một yêu cầu ký, muối ngẫu nhiên đƣợc sử dụng để sinh một chữ ký bằng 0k0

với xác suất là 2-k0

. Do đó F phải thực hiện trung bình 2k0

lần yêu cầu ký cho mỗi yêu cầu ký của F0. Chính xác hơn gọi Yi là số lƣợng yêu cầu ký đƣợc thực hiện bởi F đối với yêu cầu ký thứ i của F0, và gọi Y là tổng số yêu cầu ký đƣợc thực hiện bởi F. Do F bị giới hạn bởi qsig lần ký và xác suất để tất cả các yêu cầu ký của F0 đƣợc trả lời là Pr[Yqsig]. Trong trƣờng hợp này ngƣời giả mạo đƣa ra một chữ ký giả mạo với xác suất ít nhất 0

F

 . Do đó ngƣời giả mạo F đƣa ra chữ ký giả mạo với xác ít nhất là Pr[Yqsig]. 0

F

 .

Sự phân bổ của Yi kéo theo công thức có tham số 1-2-k0: Pr[Yi=j] =2-k0.(1-2-k0) j1 đối với j1

Kỳ vọng và độ biến thiêncủa Yi đƣợc cho bởi E[Yi] = 2k0 và Var[Yi] = 2k0.(2k0-1)

Chúng ta giả sử rằng F0 thực hiện đủ q0

sigyêu cầu ký . Do Y là tổng số của q0

sigbiến ngẫu nhiên độc lập, chúng ta thu đƣợc:

E[Y] = 2k0.q0

sig Var[Y] =q0

sig.2k0.(2k0-1)

Sử dụng bất đằng thức của Chebyshev, chúng ta cho một số  bất kỳ :

Pr[|Y-E[Y]|  ]  [2 ] 

Y Var

Và gán  = E[Y] , chúng ta thu đƣợc kết quả đối với q0

Pr[Y2.E[Y]] 10 sig q  2 1  Nếu q0

sig= 1, Y=Y1 và Pr[Y>2.E[Y]] = Pr[Y1>2k01] =(1-2k0

)2k011 Sử dụng bất đẳng thức (1- x 1 )x 2 1

 đối với x1, chúng ta thu đƣợc nhƣ ở phần trƣớc

Pr[Y2.E[Y]] (1-2k0 )2k0 2 1  Vậy để qsig = 2k01.q0 sig Điều này dẫn đến Pr[Yqsig]

2 1  và do Pr[Yqsig]  2 1 .

Cuối cùng ngƣời giả mạo F đƣa ra một chữ ký giả mạo cho PSS[k0, k1] với xác suất ít nhất F = 0

F

 /2. sau tối đa qsig lần yêu cầu ký.

Bổ đề 2

Cho R là phép suy dẫn mà (tR, qhash, qsig, F, R)-reduces từ bài toán ngƣợc RSA để phá vỡ bài toán PSS[k0, k1] .Từ R chúng ta có thể xây dựng một phép suy dẫn R0 mà nó (t0 R, q0 hash, q0 sig, 0 F  , 0 R

 )-reduces từ bài toán ngƣợc RSA để phá vỡ bài PSS0[k0, k1] với qsig = q0 sig.2k01q hash = q0 hashF = 0 F  /2 R = 0 R  (12) t = t0 R (13) Chứng minh

Gọi F0 là phép giả mạo thực hiện (t0 F, q0 hash, q0 sig, 0 F  )-break PSS0[k0, k1] Sử dụng bổ đề 1 từ F0 chúng ta xây dựng F mà nó (tF, qhash, qsig, F)-break PSS0[k0, k1] trong đó qhash, qsig, F đƣợc cho nhƣ ở công thức (12). Sau đó từ F sử dụng phép suy diễn R chúng ta có thể thực hiện bài toán ngƣợc RSA với xác suất ít nhất là R

Do đó từ F0 (t0 F, q0 hash, q0 sig, 0 F  )-break PSS0[k0, k1] và sử dụng R chúng ta có thể thực hiện bài toán ngƣợc RSA với xác suất ít nhất là R, vì vậy từ R chúng ta có thể xây dựng một phép suy dẫn R0 (t0 R, q0 hash, q0 sig, 0 F  , 0 R

 )-reduces bài toán ngƣợc RSA để phá vỡ bài toán PSS0[k0, k1] trong đó 0

R

 = R và t0

R = tR

Gọi R là phép suy dẫn (tR, qhash, qsig, F, R)-reduces thực hiện thành công bài toán ngƣợc RSA để phá vỡ bài toán RSA. Từ bổ đề 2 và từ phép suy dẫn R chúng ta xây dựng thuật toán R0 (t0 R, q0 hash, q0 sig, 0 F  , 0 R

 )-reduces bài toán ngƣợc RSA để phá vỡ bài toán PSS0[k0, k1] , trong đó t0 R, q0 hash, q0 sig, 0 F  , 0 R  đƣợc cho nhƣ công thức (12), (13). Phép suy dẫn R có thể thực thi hoặc lặp lại tối đa r lần, vì vậy R0 thực thi hoặc lặp lại phép giả mạo tối đa r lần. Từ R0 sử dụng định lý 6 ở tài liệu [3] chúng ta xây dựng một thuật toán I (tI, I)-invert RSA với

tI = (r+1).t0 R I  = 0 r  -r. 0 F  .exp(0 1) sig q  .         0 0 1 hash sig q q 1

Sử dụng công thức (12), (13) với qhash 2.qsig và exp(-1) 2 1  , chúng ta thu đƣợc r. 0 F  .exp(0 1) sig q  .        0 0 1 hash sig q q 1 r.F. sig k q 2 0 2 

điều này cho thấy rằng phép nghịch đảo thành công với xác suất ít nhất R-r.F. sig k q 2 0 2  Từ đây ta có công thức (10), (11).

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Khảo sát các chữ kí số dựa trên hệ RSA, nghiên cứu lược đồ chữ kí RSA-PSS và những chuẩn hóa (Trang 75)

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

(99 trang)