Bài toán xác nhận và sơ đồ chữ ký

Một phần của tài liệu Tài liệu Lý thuyết mật mã và An toàn thông tin pptx (Trang 120)

5.1.1. Đặt vấn đề.

Trong ch−ơng I, tiết 1.3, ta đã liệt kê một số bài toán chủ yếu về an toàn thông tin, trong đó ngoài bài toán quan trọng nhất là bảo mật thông tin thì các bài toán kế tiếp là: xác nhận thông báo và xác nhận ng−ời gửi (cùng với thông báo), x−ng danh và xác nhận danh tính của một chủ thể giao dịch, v.v... Bài toán bảo mật đ−ợc đáp ứng bằng các giải pháp mật mã đã là nội dung của các ch−ơng III và IV, trong ch−ơng này và ch−ơng sau ta sẽ đề cập đến các bài toán xác nhận và nhận thức kể trên, ch−ơng V này sẽ dành cho bài toán xác nhận thông báo và ng−ời gửi thông báo, ch−ơng VI tiếp theo sẽ xét bài toán x−ng danh và xác nhận danh tính.

Trong cách thức truyền thống, thông báo đ−ợc truyền đi trong giao dịch th−ờng d−ới dạng các văn bản viết tay hoặc đánh máy đ−ợc kèm thêm chữ ký (viết tay) của ng−ời gửi ở bên d−ới văn bản. Chữ ký đó là bằng chứng xác nhận thông báo đúng là của ng−ời ký, tức là của chủ thể giao dịch, và nếu tờ giấy mang văn bản không bị cắt, dán, tẩy, xoá, thì tính toàn vẹn của thông báo cũng đ−ợc chứng thực bởi chữ ký đó. Chữ ký viết tay có nhiều −u điểm quen thuộc nh− dễ kiểm thử, không sao chép đ−ợc, chữ ký của một ng−ời là giống nhau trên nhiều văn bản, nh−ng mỗi chữ ký gắn liền với một văn bản cụ thể, v.v...

Khi chuyển sang cách thức truyền tin bằng ph−ơng tiện hiện đại, các thông báo đ−ợc truyền đi trên các mạng truyền tin số hoá, bản thân các thông báo cũng đ−ợc biểu diễn d−ới dạng số hoá, tức d−ới dạng các dãy bit nhị phân, “chữ ký” nếu có cũng ở d−ới dạng các dãy bit, thì các mối quan hệ tự nhiên kể trên không còn giữ đ−ợc nữa. Chẳng hạn, “chữ ký” của một ng−ời gửi trên những văn bản khác nhau phải thể hiện đ−ợc sự gắn kết trách nhiệm của

ng−ời gửi đối với từng văn bản đó thì tất yếu phải khác nhau chứ không thể là những đoạn bit giống nhau nh− các chữ ký giống nhau trên các văn bản thông th−ờng. Chữ ký viết tay có thể đ−ợc kiểm thử bằng cách so sánh với nguyên mẫu, nh−ng “chữ ký” điện tử thì không thể có “nguyên mẫu” để mà so sánh, việc kiểm thử phải đ−ợc thực hiện bằng những thuật toán đặc biệt. Một vấn đề nữa là việc sao chép một văn bản cùng chữ ký. Nếu là văn bản cùng chữ ký viết tay thì dễ phân biệt bản gốc với bản sao, do đó khó mà dùng lại đ−ợc một văn bản có chữ ký thật. Còn với văn bản điện tử cùng chữ ký điện tử thì có thể nhân bản sao chép tuỳ thích, khó mà phân biệt đ−ợc bản gốc với bản sao, cho nên nguy cơ dùng lại nhiều lần là có thực, do đó cần có những biện pháp để tránh nguy cơ đó.

Một “chữ ký”, nếu muốn thể hiện đ−ợc trách nhiệm của ng−ời gửi trên toàn văn bản, thì phải mang đ−ợc một chút gắn bó nào đó với từng bit thông tin của văn bản, vì vậy, theo hình dung ban đầu, độ dài của chữ ký cũng phải dài theo độ dài của văn bản; để có đ−ợc “chữ ký ngắn” nh− trong tr−ờng hợp viết tay ng−ời ta phải dùng một kỹ thuật riêng gọi là hàm băm mà ta sẽ trình bày ở cuối ch−ơng. Bây giờ, tr−ớc hết ta sẽ giới thiệu định nghĩa về sơ đồ chữ ký (điện tử).

5.1.2. Định nghĩa sơ đồ chữ ký.

Định nghĩa 5.1. Một sơ đồ chữ kýS là một bộ năm

S = (P, A, K, S, V ),

trong đó: P là một tập hữu hạn các thông báo có thể có,

A là một tập hữu hạn các chữ ký có thể có,

K là một tập hữu hạn các khoá, mỗi khoá K ∈ K gồm có hai phần K =(K,K''), K' là khoá bí mật dành cho việc ký, còn K'' là khoá công khai dành cho việc kiểm thử chữ ký.

Với mỗi K =(K,K''), trong S có một thuật toán ký P →A , và trong Vcó một thuật toán kiểm thử P ìA →{đúng,sai} thoả mãn điều kiện sau đây đối với mọi thông báo x∈P và mọi chữ ký y∈A : ': K sig ": K ver " K ver (x, y) = đúng ⇔ y =sigK'(x ).

Với sơ đồ trên, mỗi chủ thể sở hữu một bộ khoá K =(K,K''), công bố công khai khoá K''để mọi ng−ời có thể kiểm thử chữ ký của mình, và giữ bí mật khoá K để thực hiện chữ ký trên các thông báo mà

mình muốn gửi đi. Các hàm verK"và sigK'(khi biết K ) phải tính đ−ợc một cách dễ dàng (trong thời gian đa thức), tuy nhiên hàm y =sigK'(x ) là khó tính đ−ợc nếu không biết K - điều đó bảo đảm bí mật cho việc ký, cũng tức là bảo đảm chống giả mạo chữ ký.

Bài toán xác nhận với chữ ký điện tử, theo một nghĩa nào đó, có thể xem là ô đối ngẫu ằ với bài toán bảo mật bằng mật mã, nh−

đ−ợc minh hoạ bởi thí dụ sơ đồ chữ ký RSA, đối ngẫu với sơ đồ mật mã RSA, d−ới đây :

5.1.3. Sơ đồ chữ ký RSA.

Sơ đồ chữ ký RSA đ−ợc cho bởi bộ năm S = (P, A, K, S, V ),

trong đó P =A =Zn , với n =p.q là tích của hai số nguyên tố lớn p,q,

K là tập các cặp khoá K =(K,K''), với K= aK'' = (n,b), ab là hai số thuộc Zn∗ thoả mãn a.b ≡ 1(modφ(n)). Các hàm sigK' và

" K ver đ−ợc xác định nh− sau: ' K sig (x) = xa modn , K ver ′′(x,y ) = đúng ⇔xyb (modn ).

Dễ chứng minh đ−ợc rằng sơ đồ đ−ợc định nghĩa nh− vậy là hợp thức, tức là với mọi x∈P và mọi chữ ký y∈A:

verK"(x, y) = đúng ⇔ y =sigK'(x ).

Chú ý rằng tuy hai vấn đề xác nhận và bảo mật theo sơ đồ RSA là có bề ngoài giống nhau, nh−ng nội dung của chúng là hoàn toàn khác nhau: Khi A gửi thông báo x cho B, để B có căn cứ xác nhận đó đúng thực là thông báo do A gửi, A phải gửi kèm theo chữ ký sigK'(x), tức là A gửi cho B (x, sigK'(x)), trong các thông tin gửi đi đó, thông báo x hoàn toàn không đ−ợc giữ bí mật. Cũng t−ơng tự nh− vậy, nếu dùng sơ đồ mật mã RSA, khi một chủ thể A nhận đ−ợc một bản mật mã eK′(x) từ B thì A chỉ biết rằng thông báo x đ−ợc bảo mật, chứ không có gì để xác nhận x là của B.

Nếu ta muốn hệ truyền tin của ta vừa có tính bảo mật vừa có tính xác nhận, thì ta phải sử dụng đồng thời cả hai hệ mật mã và xác nhận (bằng chữ ký). Giả sử trên mạng truyền tin công cộng, ta có cả hai hệ mật mã khoá công khai S1 và hệ xác nhận bằng chữ ký S2. Giả sử B có bộ khoá mật mã K = (K', K'') với K' = (n, e) và K'' = d

trong hệ S1, và A có bộ khoá chữ ký Ks =(Ks′,Ks′′) với và trong hệ S

s

K′ =a

( , )

mật vừa có chữ ký để xác nhận nh− sau: A ký trên thông báo x tr−ớc, rồi thay cho việc gửi đến B văn bản cùng chữ ký (x,sigKs′(x)) thì A sẽ gửi cho B bản mật mã của văn bản đó đ−ợc lập theo khoá công khai của B, tức là gửi cho B eK′((x, (adsbygoogle = window.adsbygoogle || []).push({});

s

K

sig ′(x)). Nhận đ−ợc văn bản mật mã đó B sẽ dùng thuật toán giải mã dK′′của mình để thu đ−ợc (x,sigKs′(x)), sau đó dùng thuật toán kiểm thử chữ ký công khai verKs′′ của A để xác nhận chữ ký sigKs′(x) đúng là của A trên x.

5.2. Sơ đồ chữ ký ElGamal và chuẩn chữ ký điện tử. 5.2.1. Sơ đồ chữ ký ElGamal.

Sơ đồ chữ ký ElGamal đ−ợc đề xuất năm 1985, gần nh−

đồng thời với sơ đồ hệ mật mã ElGamal, cũng dựa trên độ khó của bài toán lôgarit rời rạc. Sơ đồ đ−ợc thiết kế đặc biệt cho mục đích ký trên các văn bản điện tử, đ−ợc mô tả nh− một hệ

S = (P, A, K, S, V),

trong đó P =Zp∗, A =ZpìZp−1, với p là một số nguyên tố sao cho bài toán tính lôgarit rời rạc trong Zp∗là rất khó. Tập hợp K gồm các cặp khoá K =(K,K''), với K = alà một số thuộc Zp∗, K'' =(p, α, β ), α

là một phần tử nguyên thuỷ của Zp∗, và β = αa

modp. Klà khoá bí mật dùng để ký, và K'' là khoá công khai dùng để kiểm thử chữ ký. Các thuật toán ký và kiểm thử chữ ký đ−ợc xác định nh− sau: Với mỗi thông báo x, để tạo chữ ký trên x ta chọn thêm môt số ngẫu nhiên k∈Zp∗−1, rồi tính sigK'(x,k ) = ( , ),γ δ với k γ α= modp, 1 (x a ).k δ = − γ − mod(p -1). Thuật toán kiểm thử đ−ợc định nghĩa bởi:

"

K

ver (x,( , )γ δ ) = đúng ⇔βγ.γδ≡αx

(modp).

Dễ thấy rằng sơ đồ chữ ký đ−ợc định nghĩa nh− trên là hợp thức. Thực vậy, nếu sigK'(x,k ) = ( , ),γ δ thì ta có :

βγ.γδ≡αaγ

.αkδ

modp ≡αxmodp,

Thí dụ: Giả sử p = 467, α = 2, a = 127. Khi đó β = 2127mod467=132. Cho x =100; ta chọn ngẫu nhiên k =213 (∈Z466∗ ) và đ−ợc k -1mod466 =431. Chữ ký trên văn bản x =100 với số ngẫu nhiên k =213 là (γ, δ), trong đó γ =2213mod467 = 29 và δ = (100 - 127.29).431mod466 =51. Để kiểm thử ta tính :

βγ.γδ = 13229.2951≡ 189 (mod467), αx= 2100≡ 189 (mod467),

hai giá trị đó đồng d− với nhau theo mod467, chữ ký(γ, δ)=(29,51) đ−ợc xác nhận là đúng.

5.2.2. Tính an toàn của sơ đồ chữ ký ElGamal.

Sơ đồ chữ ký ElGamal đ−ợc xem là an toàn, nếu việc ký trên một văn bản là không thể giả mạo đ−ợc, nói cách khác, không thể có một ng−ời nào ngoài chủ thể hợp pháp có thể giả mạo chữ ký của chủ thể hợp pháp đó trên một văn bản bất kỳ. Vì vậy, việc giữ bí mật khoá dùng để tạo chữ ký là có ý nghĩa quyết định đối với việc bảo đảm tính an toàn của chữ ký. Có thể để lộ khoá bí mật

trong những tr−ờng hợp nào, và có thể không để lộ

mà vẫn giả mạo chữ ký đ−ợc không? Ta sẽ xét sau đây một vài tr−ờng hợp đơn giản :

K′ =a a

K′ = K′ =a

1) Khả năng để lộ khoá K′ =a: Cũng nh− đối với sơ đồ hệ mật mã ElGamal, khoá bí mật a có thể bị phát hiện trong tr−ờng hợp để lộ số ngẫu nhiên k ở một lần ký nào đó, hoặc sử dụng cùng một số ngẫu nhiên k ở hai lần ký khác nhau.

Nếu số ngẫu nhiên k đ−ợc sử dụng khi ký trên văn bản x bị lộ, thì khoá bí mật K′ =a đ−ợc tính theo công thức sau đây: (adsbygoogle = window.adsbygoogle || []).push({});

a = (x - kδ ). γ -1 mod(p –1).

Bây giờ ta xét tr−ờng hợp dùng cùng một số ngẫu nhiên k cho hai lần ký khác nhau, chẳng hạn cho x1 và x2. Khi đó ta có chữ ký trên x1 là (γ ,δ 1), trên x2 là (γ ,δ 2), với thành phần thứ nhất bằng nhau (và bằng γ =α k modp), và các chữ ký đó thoả mãn

1 . δ x γ 1 β γ ≡α (modp), 2 . δ x γ 2 β γ ≡α (modp). Từ đó ta có 1 2 1 2 ( 1 2 x x δ δ kδ ) α − ≡γ − ≡α −δ (modp), điều đó t−ơng đ−ơng với

x 1 - x2≡ k (δ1 - δ 2) (mod(p -1)).

Đặt d = gcd(δ1 - δ 2, p -1). Cả ba số δ1 - δ 2, p -1 và x 1 - x2 đều chia hết cho d, ta đặt

1 2 1 2 1 , , x x p x′= − δ′=δ δ− p′= − . d d d Khi đó đồng d− thức ở trên trở thành x′≡k.δ′(modp′).

Vì gcd( ,δ′ ′p)=1, nên có thể tính ε δ= ′−1modp′, và sau đó giá trị k theo mod : p′ k = x′.εmodp′, tức là

k = x′.ε+i p. ′mod(p -1)

với i là một giá trị nào đó, 0≤id –1. Thử lần l−ợt điều kiện

k

γ α= modp

với các giá trị đó của i, ta sẽ tìm đ−ợc k ;sau đó từ k tính đ−ợc a cần tìm.

2) Khả năng giả mạo chữ ký trên một văn bản cho tr−ớc : Giả sử chủ thể A chọn sơ đồ chữ ký ElGamal với cặp khoá K =(K,K''), trrong đó K′ =a là khoá bí mật. Một ng−ời ngoài O không biết khoá bí mật K′ =a mà muốn giả mạo chữ ký của A trên một văn bản x thì phải có khả năng tạo ra đ−ợc chữ ký (γ,δ) mà không cần biết a. Có hai cách : hoặc chọn tr−ớc γ rồi tìm δ t−ơng ứng, hoặc ng−ợc lại, chọn tr−ớc δ rồi tìm γ t−ơng ứng.

Nếu chọn tr−ớc γ rồi tìm δ , thì δ phải là

1

(x a )k

δ = − γ − mod(p -1) = ((xaγ) logγα mod(p -1) = log (α α βx −γ).logγα=logγ α βx −γ mod(p -1);

đó là một bài toán tính lôgarit rời rạc, mà ta biết rằng rất khó. Nếu chọn tr−ớc δ rồi tìm γ thì phải giải ph−ơng trình

. x

γ δ

β γ ≡α modp

với ẩn số γ . Ta ch−a biết có cách giải hữu hiệu nào không, nh−ng chắc là không dễ hơn bài toán tính lôgarit rời rạc.

Nh− vậy, ta có thể tin rằng khả năng giả mạo chữ ký trên một văn bản cho tr−ớc khi không biết khoá bí mật là rất ít, do đó không có ảnh h−ởng đáng kể đến tính an toàn của sơ đồ chữ ký.

K′ =a

3)Giả mạo chữ ký cùng với văn bản đ−ợc ký :

Có một khả năng giả mạo khác là giả mạo cả văn bản gửi đi x cùng với chữ ký (γ,δ ) trên x. Khả năng đó xẩy ra khi kẻ giả mạo chọn đ−ợc x và (γ,δ) thoả mãn điều kiện kiểm thử, cụ thể khi chọn đ−ợc x,γ,δ có dạng sau đây :

.

i j

1 .j δ = −γ − mod(p -1), 1 . . x= −γ i j− mod(p -1),

trong đó i, j là các số nguyên sao cho 0≤i, jp –2, gcd(j, p –1) = 1, và (adsbygoogle = window.adsbygoogle || []).push({});

j –1đ−ợc tính theo mod(p –1). Thực vậy, khi đó ta có

1 . . ( i j) j γ δ γ γ β γ ≡β α β − − modp 1 . i j . γ γ γ β α− − β− ≡ modp ≡αx modp ,

tức điều kiện kiểm thử đ−ợc thoả mãn, (γ,δ) có thể đ−ợc xác nhận hợp thức là chữ ký trên x.

Có thể có một cách giả mạo khác nữa, nếu kẻ giả mạo sử dụng chữ ký đúng (γ,δ ) trên một văn bản x có từ tr−ớc để tạo ra một chữ ký ( , )λ à mới cho một văn bản “mới” x′nh− sau:

. . h i j λ γ α β= modp, 1 (h j ) à δλ γ= − δ − mod(p -1), 1 ( )( ) x′=λ hx i+ δ hγ − jδ − mod(p -1).

Có thể thử lại rằng điều kiện kiểm thử đúng đối với “chữ ký”

( , )λ à và “văn bản” x′, tức là

. x

λ à

β λ ≡α ′modp.

Cả hai cách giả mạo nói trên đều cho chữ ký thoả mãn điều kiện kiểm thử đối với văn bản t−ơng ứng, tuy nhiên văn bản đó không phải là văn bản đ−ợc chọn theo ý muốn của ng−ời giả mạo, cho nên khả năng sử dụng các cách giả mạo đó trong thực tế cũng không có giá trị , do đó không thể gây nguy hại đáng kể cho tính an toàn của sơ đồ chữ ký nói chung.

5.2.3. Chuẩn chữ ký số (Digital Signature Standard).

Chuẩn chữ ký số (DSS) đ−ợc đề xuất từ năm 1991 và đ−ợc chấp nhận vào cuối năm 1994 để sử dụng trong một số lĩnh vực giao dịch điện tử tại Hoa kỳ. DSS dựa vào sơ đồ chữ ký ElGamal, với một vài sửa đổi. Để bảo đảm an toàn , số nguyên tố p cần phải đủ lớn, biểu diễn nhị phân của p phải có từ 512 bit trở lên (cụ thể từ 512 đến 1024 bit, số bit là một bội của 64). Tuy nhiên, độ dài chữ ký theo sơ đồ ElGamal là gấp đôi số bit của p, mà trong nhiều ứng dụng ng−ời ta lại mong muốn có chữ ký độ dài ngắn, nên giải pháp sửa đổi đ−ợc đề xuất là: trong khi vẫn dùng p lớn với độ dài biểu diễn 512 bit trở lên, thì sẽ hạn chế độ dài của γ và δ trong chữ ký (γ,δ ) vào khoảng 160 bit (nh− vậy cả chữ ký sẽ có độ dài khoảng 320 bit); điều này đ−ợc thực hiện bằng cách dùng một nhóm con cyclic Zq∗ của Zp∗ thay cho chính bản thân Zp∗, do đó mọi tính toán

vẫn đ−ợc thực hiện nh− trong Zp∗ nh−ng các dữ liệu và thành phần

Một phần của tài liệu Tài liệu Lý thuyết mật mã và An toàn thông tin pptx (Trang 120)