.6 Cách thứ hai để xác nhận chữ ký số

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu chữ ký số và ứng dụng của nó (Trang 57)

Cách thứ hai không cần xác thực. Ta sẽ phân tích ngắn gọn khả năng giả

mạo (forgery) của cách thứ hai của hệ thống chữ ký. Giả sử Alice muốn cung cấp

cho Bob một chữ ký giả mạo. Cô ta phải phân phối g1 và g2 sao cho phải thỏa

db-yg1a-xd = arg2bs . Điều này là không thể, trừ phi Alice biết r, xs, y.

Bây giờ giả sử Bob cho rằng Alice đã ký thông điệp e. Bob có thể chọn g1

trong G. Sau đó anh ta tính một g2 thích hợp thỏa đẳng thức trên. Nhƣng g2 = avebw

cũng cần phải thỏa. Điều này không thể, nếu anh ta không biết các số mũ vw, và

g1 không thể tính đúng. Alice có thể ngay lập tức chứng tỏ sự giả mạo bằng cách công bố vw.

Cuối cùng, giả sử Alice đã cung cấp hai phần tử g1 và g2 chính xác cho Bob thỏa db-yg1a-xd = arg2bs .Cô ta không thể từ chối chữ ký sau đó. Trƣờng hợp tranh chấp cô ta có thể phải công bố vw. Điều này chứng tỏ sự chính xác của chữ ký. 3.5 MỘT SỐ LƢỢC ĐỒ CHỮ KÝ SỐ KHÁC

3.5.1 Lƣợc đồ chữ ký số Rabin [3]

Tƣơng tự nhƣ lƣợc đồ chữ ký RSA, lƣợc đồ chữ ký Rabin cũng sử dụng số nguyên n là tích của hai số nguyên tố lớn pq, hàm một phía là hàm lấy bình phƣơng của một số nguyên theo modn, hàm ngƣợc là hàm tìm căn bậc hai theo modn, hàm này không dễ dàng tính đƣợc nếu không biết các thừa số p ,q của n.

Một cách tổng quát, lƣợc đồ chữ ký Rabin có thể đƣợc mô tả là một bộ

S = (, , , , ),

trong đó = Qn ,  = Zn ,  là tập các cặp khoá k =(k‟,k''), trong đó k'' = n là khoá công khai dùng để kiểm thử chữ ký,n là tích của hai số nguyên tố lớn pq, n

=p.q, với p q  3 (mod4), còn k‟ = d với d = (n -p -q +5)/8 là khoá bí mật dùng để ký. Các hàm sigK' và verK"đƣợc xác định nhƣ sau:

'

K

sig (x) = x d modn ,

K

ver (x,y ) = đúng xy 2 (modn ).

Ta chú ý rằng nếu pq đƣợc chọn với tính chất nói trên thì với mọi x  =Qn , xd

modn là một căn bậc hai của x theo modn, vì

( 1)( 1) 4 ( 1)( 1) 2 1 8 4 p q p q x x x x          2d (modn) ;

và các hàm sigK'và verK" đƣợc định nghĩa nhƣ trên là hợp thức.

3.5.2 Lƣợc đồ chữ ký số Schnorr [3]

Lƣợc đồ chữ ký Schnorr cũng đƣợc xây dựng tƣơng tự nhƣ lƣợc đồ chữ ký Fiat-Shamir, nhƣng dùng một hàm băm một phía dựa trên bài toán khó tính lôgarit rời rạc. Mỗi thực thể tạo cho mình cặp khoá k =(k‟,k'') bằng cách: Chọn một số nguyên tố lớn p, một số nguyên tố q là ƣớc số của p-1, một phần tử sinh  cấp q

của Zp, và một số a , 1 aq -1. Giữ k‟=a là khoá bí mật , và công bố khoá công khai k'' = (p,q,,r), trong đó r = a

mod p.

Chọn một hàm băm h : Z2 Zq. Lấy  = Z2 và  = ZqZq.

Để ký trên một thông báo x  =Z2 ngƣời ký A chọn thêm một số ngẫu nhiên kZq và tính y = k

mod p, e = h(x||y)s = ae+k mod q. Chữ ký của A trên x đƣợc xác định là cặp số (s, e).

Để kiểm thử xem cặp số (s, e) có đúng là chữ ký của A trên x hay không, ta dùng khoá công khai k'' = (p,q,,r) để tính

s e

v r mod pe‟ = h(x||v) ,

và xác nhận (s, e) đúng là chữ ký của A trên x khi và chỉ khi e‟ = e.

Ta có thể chứng minh rằng các thuật toán ký và kiểm thử xác định nhƣ vậy là hợp thức. Thực vậy, nếu chữ ký(s, e) đƣợc ký bởi A trên x, thì

s e

v r mod p =  sae

mod p =kmod p =y,

do đó e‟ = h(x||v) = h(x||y) = e. Ngƣợc lại, cũng dễ chứng tỏ rằng nếu e‟ = e thì (s,

e) đúng là chữ ký của A trên x.

3.5.3 Lƣợc đồ chữ ký số một lần [5]

Lƣợc đồ ký một lần là kỹ thuật chữ ký số mà việc ký sử dụng nhiều nhất là một lần. Nếu sử dụng nhiều lần sẽ bị giả mạo. Mỗi thông điệp sẽ có một khoá công khai. Hầu hết các lƣợc đồ ký dùng một lần có ƣu điểm trong việc sinh và thẩm định chữ ký số. Các lƣợc đồ ký dùng một lần rất hữu dụng đối với những ứng dụng nhƣ chipcard do tài nguyên tính toán cần thiết là không nhiều.

a. Lƣợc đồ ký một lần Rabin

Trong lƣợc đồ ký dùng một lần Rabin, việc thẩm định chữ ký yêu cầu có sự hỗ trợ giữa ngƣời ký và ngƣời thẩm định chữ ký. Hiện nay, lƣợc đồ này không còn đƣợc dùng nhiều nữa, tuy nhiên trong nghiên cứu cần đƣa ra để có tính lịch sử.

M0 0l = tất cả chuỗi bít có chiều dài l

M0 (i) 0l-e || be-1 . . . b1b0, ở đây be-1 . . . b1b0 là biểu diễn nhị phân của i k Một tập của chuỗi l bít

E Không gian mã hoá của tập khoá k

Et một phép mã hoá của E với khoá t Є k. Mỗi Et là ánh xạ l - l

h Là hàm một chiều, đƣợc công khai, từ tập {0,1}*

sang {0,1}m – m cố định N Là một số nguyên dƣơng, đƣợc coi nhƣ là một biến mã hoá

Thuật toán sinh khoá cho lƣợc đồ ký một lần Rabin

Mỗi thực thể A lựa chọn một lƣợc đồ mã hoá khoá đối xứng E, sinh ra 2n

chuỗi bít ngẫu nhiên, và tạo ra một tập các biến. A sẽ thực hiện các thao tác sau: 1. Lựa chọn một lƣợc đồ mã hoá khoá đối xứng (ví dụ: DES).

2. Sinh ngẫu nhiên 2n chuỗi bí mật k1, k2, …, k2n Є k, có độ dài l. 3. Tính yi = Eki (M0 (i)); 1 ≤ i ≤ 2n.

4. Khoá công khai là (y1, y2, …, y2n); khoá bí mật là (k1, k2, …, k2n)

Thuật toán ký thẩm định chữ ký của lƣợc đồ ký một lần Rabin 1. Sinh chữ ký: Thực thể A sẽ làm các bƣớc sau đây

a. Tính giá trị băm h(m)

b. Tính si = Eki(h(m)), 1 ≤ i ≤ 2n.

c. Chữ ký của A trên m là (s1, s2, …, s2n).

2. Thẩm định chữ ký: Để thẩm định chữ ký của A trên m, B sẽ thực hiện các bƣớc sau:

a. Lấy khoá công khai (đƣợc xác thực) của A (y1, y2, …, y2n)

b. Tính hàm băm h(m)

c. Chọn n số ngẫu nhiên khác nhau rj, 1 ≤ rj ≤ 2n, với 1 ≤ jn

d. Yêu cầu A các khoá krj , 1 ≤ j n

e. Thẩm định tính xác thực của các khoá nhận đƣợc bằng việc tính zj

= EKrj (M0 (rj)) và kiểm tra xem zj = yrj , với mỗi 1 ≤ jn

f. Thẩm định rằng srj = EKrj (h(m)), 1 ≤ jn

Kích thƣớc khoá: Thuật toán mã hoá Et có đầu ra là l bít, khoá bí mật và khoá công khai của thuật là 2nl bít.

Tính một lần của thuật toán: A có thể ký nhiều nhất một thông điệp với một khoá bí mật của lƣợc đồ ký một lần Rabin, trái lại A sẽ để lộ ra n + 1 hoặc nhiều hơn giá trị khoá bí mật và cho phép B (và những ngƣời khác) có thể giả mạo các chữ ký trên các thông điệp mới. Một chữ ký chỉ có thể đƣợc xác thực nếu không bị lộ (với xác suất cao) nhiều hơn n của 2n giá trị khoá bí mật.

b. Lƣợc đồ ký một lần Lamport

Lƣợc đồ ký một lần Lamport cho thông điệp có chiều dài l. Chúng ta gọi hàm một chiều f : {0,1}m {0,1}n, trong đó n là số cố định.

1. Việc sinh khoá bao gồm việc lựa chọn 2l thành phần ngẫu nhiên từ {0,1}m. Do đó chúng ta chọn x1,0, x1,1, …, xl,0, xl,1  {0,1}m. Với mỗi giá trị i, j (1 ≤ i ≤ l và j Є {0,1}) chúng ta tính yi,j = f(xi,j). Khoá công khai Pk và khoá bí mật Sk sẽ đƣợc cho nhƣ sau:

2. Để ký một thông điệp l bít m = m1 …ml, đơn giản chỉ cần “nhặt ra” những thành phần tƣơng ứng từ khoá bí mật và gửi chúng đi. Do đó, chữ ký sẽ là (x1,m1, x2,m2, …, xl,ml). Để minh hoạ, nếu chúng ta muốn ký một thông điệp m = 01…1, chúng ta sẽ lựa chọn các thành phần nhƣ sau:

Để thẩm định một chữ ký (x1, x2, …, xl) trên thông điệp m1 …ml, chỉ cần thẩm định sao cho tất cả giá trị i (với 1 ≤ i ≤ l) chúng ta có f(xi) = yi,mi ?

3.5.4 Lƣợc đồ chữ ký số Fail – Stop [5]

Lƣợc đồ chữ ký số Fail-Stop cho phép thực thể A có thể chứng minh một chữ ký thừa nhận là của A (thực tế không phải) là bị giả mạo. Lƣợc đồ ký Fail-Stop có những tính chất sau:

- Nếu một ngƣời ký lên thông điệp thì ngƣời thẩm định chữ ký sẽ dựa vào đó để kiểm tra và chữ ký đƣợc chấp nhận.

- Một kẻ giả mạo không thể đƣa ra các chữ ký thành công với thuật toán thẩm định nếu không thực hiện công việc theo hàm mũ.

- Nếu một kẻ xấu thành công trong việc khôi phục một chữ ký mà thành công với thuật toán thẩm định (với tài nguyên bỏ ra rất lớn) thì ngƣời chủ thực sự của chữ ký sẽ có phƣơng pháp để chỉ ra rằng đó là chữ ký giả mạo.

- Ngƣời ký không thể đƣa ra một chữ ký rồi sau đó lại chối rằng đó là chữ ký giả mạo.

Thuật toán sinh khoá: Việc sinh khoá đƣợc phân biệt giữa thực thể A và ngƣời trung gian tin cậy (TTP – trusted third party):

1. TTP sẽ thực hiện các bƣớc sau:

a. Lựa chọn hai số nguyên tố pq sao cho q chia hết cho (p – 1) và bài toán tính logarit rời rạc trong Zp là khó giải.

b. (Chọn một phần tử nguyên thuỷ α thuộc nhóm con Cyclic G của Z*q

bậc q)

i. Chọn ngẫu nhiên g ЄZq và tính α = g(p-1)/q mod p

ii. Nếu α = 1 thì làm lại bƣớc (i)

c. Chọn ngẫu nhiên một số nguyên a (1 ≤ aq-1) và tính β = αa

mod

p. Số nguyên a đƣợc TTP giữ bí mật. d. Gửi (p,q,α,β) công khai cho A

2. A sẽ thực hiện:

a. Chọn ngẫu nhiên các số nguyên (bí mật) x1, x2, y1, y2 trong khoảng [0,q-1]

b. Tính β1 = αx1 βx2 β2 = αy1 βy2 mod p

c. Khoá công khai của A là (β1,β2,p,q,α,ß). Khoá bí mật là bộ bốn thành phần = (x1, x2, y1, y2)

Thuật toán Lƣợc đồ ký Fail – Stop (van Heijst-Pedersen): Đây là lƣợc đồ ký một lần mà tính an toàn của nó dựa trên độ khó của bài toán logarit rời rạc trong nhóm con bậc q của Z*q .

1. Thuật toán ký: Để ký thông điệp m Є [0,q-1], A sẽ thực hiện: a. Tính s1,m = x1 + my1mod q s2,m = x2 + my2 mod q

b. Chữ ký của A trên m là (s1,m, s2,m)

2. Thuật toán thẩm định chữ ký: Để thẩm định chữ ký của A trên m, B sẽ thực hiện:

a. Lấy khoá công khai (đƣợc xác thực) của A là (β1,β2,p,q,α,β)

b. Tính v1 = β1β2m

mod p v2 = αS1,m βS2,mmod p

c. Chấp nhận chữ ký nếu v1 = v2

Chứng minh việc thẩm định chữ ký trên:

≡ αx1 + my1

βx2 + my2mod p≡ αS1,m βS2, m mod p ≡ v2 (mod p)

3.5.5 Lƣợc đồ chữ ký uỷ nhiệm

Lƣợc đồ chữ ký uỷ nhiệm cho phép một ngƣời ký gốc có thể uỷ quyền ký cho một ngƣời khác, ngƣời này gọi là ngƣời ký uỷ nhiệm. Lƣợc đồ ký uỷ nhiệm đƣợc đề xuất đầu tiên bởi M. Mambo, K. Usuda và E. Okamoto năm 1996 (MUO). Sau đó, một số lƣợc đồ ký dạng này cũng đƣợc nghiên cứu và giới thiệu. Sau đây là tổng quan về lƣợc đồ MUO [7].

Các tham số: Một số nguyên lớn p, một thừa số nguyên q của p-1, α là phần tử nguyên thuỷ của nhóm nhân Gq của Z*p. Alice là ký hiện của ngƣời ký gốc, Bob là ngƣời ký uỷ nhiệm. Giả thiết xA là khoá bí mật của Alice, khoá công khai tƣơng ứng yA = αxA mod p. (xB, yB) là cặp khoá của Bob và yB = αxB mod p. ma là tuyên bố về việc uỷ nhiệm, thông thƣờng nó chứa một số thông tin đặc biệt bao gồm định danh ngƣời đƣợc uỷ nhiệm ký. H() là hàm một chiều. Lƣợc đồ đƣợc chia làm 4 giai đoạn:

Sinh khoá uỷ nhiệm: Alice chọn một số ngẫu nhiên, kAЄR Z*q và tính:

K = αkA mod p (1)

SA = kA.yB + xA.h(ma) (2)

Cả khoá bí mật xA của ngƣời ký gốc Alice và khoá công khai yB của ngƣời ký uỷ nhiệm Bob đƣợc sử dụng để tính toán SA nên Alice không thể chối bỏ Bob là ngƣời ký uỷ nhiệm. Khi đó bộ ba (ma , K , SA) đƣợc gửi cho ngƣời ký uỷ nhiệm Bob, Bob sẽ kiểm tra tính hợp lệ nhƣ sau:

Thẩm định khoá uỷ nhiệm:

Dựa vào việc nhận đƣợc (ma , K , SA), Bob tính:

αSA = yA h(ma) . KyB mod p (3) RHS = yA h(ma) . KyB mod p = αxA .h(ma) . αkA . yB mod p =αxA .h(ma)+ kA . yB mod p = αSA= LHS

Khi đó bộ ba (ma,K,SA) đƣợc gửi bởi ngƣời ký hợp lệ sẽ đƣợc chấp nhận. Nếu việc thẩm định trên đúng, Bob sẽ thiết lập cặp khoá uỷ nhiệm (xp,yp) nhƣ sau:

xp = SA + xB . yAmod p (4)

Ký sử dụng khoá uỷ nhiệm: Với cặp khoá uỷ nhiệm (xp , yp), Bob có thể sử dụng bất kỳ thuật toán ký logorit rời rạc nào trên thông điệp m. Kết quả chữ ký uỷ nhiệm sẽ là bộ (sign(m, xp), K, m, yA, yB).

Thẩm định chữ ký uỷ nhiệm: Ngƣời thẩm định tính toán khoá công khai uỷ nhiệm yp nhƣ sau: yp = yA h(m) . KyB. yB yA mod p (6)

Chúng ta nhận thấy rằng tính toán trên cũng tƣơng tự với cũng khoá công khai đƣợc tính bởi ngƣời ký uỷ nhiệm.

LHS = αxp mod p = αSA + xB .yA mod p = αxA .h(ma)+ kA . yB + xB . yA mod p = αxA .h(ma) . αkA . yB . αxB . yA mod p = yAh(ma) . KyB . yByA mod p = RHS

Cuối cùng, ngƣời thẩm định kiểm tra xem (sign(m,xp)) có là chữ ký hợp lệ của thông điệp m tƣơng ứng với khoá công khai uỷ nhiệm yp (đƣợc tính toán bởi (6)) với một lƣợc đồ ký dựa trên DLP không. Nếu việc kiểm tra cho kết quả đúng, ngƣời thẩm định tin rằng thoả thuận của ngƣời ký gốc trên thông điệp đƣợc ký nhƣ là khoá công khai đƣợc sử dụng để thẩm định chữ ký và đƣợc tính toán thông qua việc sử dụng khoá công khai và biến số bí mật K của ngƣời ký gốc. Do đó, yêu cầu đầu tiên đối với phía thẩm định của một chữ ký uỷ nhiệm đảm bảo an ninh đƣợc thoả mãn.Và, chữ ký uỷ nhiệm đƣợc coi là chữ ký uỷ nhiệm, nó không phải là chữ ký gốc và nó chỉ đƣợc thẩm định bởi khoá công khai yp (chứ không phải khoá công khai của ngƣời ý uỷ nhiệm - yB).

4.1 ĐẶT VẤN ĐỀ

Trong phần trƣớc đã trình bày một số lƣợc đồ chữ ký số; trong các lƣợc đồ đó, việc kiểm thử là do ngƣời nhận thực hiện. Nhƣ vậy, cả văn bản cùng chữ ký có thể đƣợc sao chép và tán phát cho nhiều ngƣời mà không đƣợc phép của ngƣời gửi. Để tránh khả năng đó, ngƣời ta đƣa ra lƣợc đồ chữ ký chống chối bỏ với một yêu cầu là chữ ký không thể đƣợc kiểm thử nếu không có sự hợp tác của ngƣời ký. Khi chữ ký đòi hỏi đƣợc xác nhận bằng một giao thức kiểm thử thì một vấn đề khác lại nẩy sinh là làm thế nào để ngăn cản ngƣời ký chối bỏ một chữ ký mà anh ta đã ký bằng cách tuyên bố rằng chữ ký đó là giả mạo? Để đáp ứng yêu cầu đó, cần có thêm một giao thức chối bỏ. Nhƣ vậy, một lƣợc đồ chữ ký chống chối bỏ sẽ gồm ba phần: thuật toán ký, giao thức kiểm thử và giao thức chối bỏ.

4.2 LỊCH SỬ PHÁT TRIỂN CỦA CHỮ KÝ CHỐNG CHỐI BỎ [32]

- Năm 1989: D. Chaum và H. van Antwerpen: Lƣợc đồ chữ ký chống chối bỏ.

- Năm 1990: + J. Boyar, D. Chaum, I. B. Damgard và T.P. Pedersen: Lƣợc đồ chữ

ký chống chối bỏ có thể chuyển đổi.

+ D. Chaum : Lƣợc đồ chữ ký chống chối bỏ Zero-knowledge

- Năm 1991: D. Chaum, E. van Heijst và B. Pfitzmann: Lƣợc đồ chữ ký số chống

chối bỏ mạnh đảm bảo an ninh vô điều kiện với ngƣời ký.

+ Y. Desmedt và M. Yung: Các điểm yếu của lƣợc đồ chữ ký số chống

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu chữ ký số và ứng dụng của nó (Trang 57)

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

(94 trang)