Một vài thuật toỏn dựng trong chữ ký số

Một phần của tài liệu MỘT số bài TOÁN về AN TOÀN THÔNG TIN TRONG GIAI đoạn KIỂM PHIẾU điện tử (Trang 51 - 61)

1/. Chữ ký số RSA

Trong mật mó học, RSA là một thuật toỏn mật mó húa khúa cụng khai. Đõy là thuật toỏn đầu tiờn phự hợp với việc tạo ra chữ ký điện tử đồng thời với việc mó húa.

Nú đỏnh dấu một sự tiến bộ vƣợt bậc của lĩnh vực mật mó học trong việc sử dụng khúa cụng khai. RSA đang đƣợc sử dụng phổ biến trong thƣơng mại điện tử và đƣợc cho là đảm bảo an toàn với điều kiện độ dài khúa đủ lớn.

Thuật toỏn đƣợc Ron Rivest, Adi Shamir và Len Adleman mụ tả lần đầu tiờn vào năm 1977 tại Học viện Cụng nghệ Massachusetts (MIT). Tờn của thuật toỏn lấy từ ba chữ cỏi đầu của tờn ba tỏc giả.

Trƣớc đú, vào năm 1973, Clifford Cocks, một nhà toỏn học ngƣời Anh, đó mụ tả một thuật toỏn tƣơng tự. Với khả năng tớnh toỏn tại thời điểm đú thỡ thuật toỏn này khụng khả thi và chƣa bao giờ đƣợc thực nghiệm. Tuy nhiờn, phỏt minh này chỉ đƣợc cụng bố vào năm 1997 vỡ đƣợc xếp vào loại tuyệt mật.

Thuật toỏn RSA đƣợc MIT đăng ký bằng sỏng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4.405.829). Bằng sỏng chế này hết hạn vào ngày 21 thỏng 9 năm 2000. Tuy nhiờn, do thuật toỏn đó đƣợc cụng bố trƣớc khi cú đăng ký bảo hộ nờn sự bảo hộ hầu nhƣ khụng cú giỏ trị bờn ngoài Hoa Kỳ. Ngoài ra, nếu nhƣ cụng trỡnh của Clifford Cocks đó đƣợc cụng bố trƣớc đú thỡ bằng sỏng chế RSA đó khụng thể đƣợc đăng ký.

Thuật toỏn RSA cú hai khúa: khúa cụng khai và khúa bớ mật. Mỗi khúa là những số cố định sử dụng trong quỏ trỡnh mó húa và giải mó. Khúa cụng khai đƣợc cụng bố rộng rói cho mọi ngƣời và đƣợc dựng để mó húa. Những thụng tin đƣợc mó húa bằng khúa cụng khai chỉ cú thể đƣợc giải mó bằng khúa bớ mật tƣơng ứng. Núi cỏch khỏc, mọi ngƣời đều cú thể mó húa nhƣng chỉ cú ngƣời biết khúa bớ mật mới cú thể giải mó đƣợc.

a). Tạo khúa

Giả sử Alice và Bob cần trao đổi thụng tin bớ mật thụng qua một kờnh khụng an toàn (vớ dụ nhƣ Internet). Với thuật toỏn RSA, Alice đầu tiờn cần tạo ra cho mỡnh cặp khúa gồm khúa cụng khai và khúa bớ mật theo cỏc bƣớc sau:

• Chọn 2 số nguyờn tố lớn p và q với p≠q , lựa chọn ngẫu nhiờn và độc lập. • Tớnh: n = pq.

• Tớnh: giỏ trị hàm số Ơle φ(n)=( p−1)(q−1).

• Chọn một số tự nhiờn e sao cho 1< e < φ(n) và là số nguyờn tố cựng nhau với φ(n).

Khúa cụng khai bao gồm: • n, mụđun

• e, số mũ cụng khai (cũng gọi là số mũ mó húa). Khúa bớ mật bao gồm:

• n, mụđun, xuất hiện cả trong khúa cụng khai và khúa bớ mật • d, số mũ bớ mật (cũng gọi là số mũ giải mó).

Một dạng khỏc của khúa bớ mật bao gồm: • p and q, hai số nguyờn tố chọn ban đầu

• d mod (p-1) và d mod (q-1) (thƣờng đƣợc gọi là dmp1 và dmq1) • (1/q) mod p (thƣờng đƣợc gọi là iqmp)

Dạng này cho phộp thực hiện giải mó và ký nhanh hơn với việc sử dụng định lý số dƣ Trung Quốc. Ở dạng này, tất cả thành phần của khúa bớ mật phải đƣợc giữ bớ mật. Alice gửi khúa cụng khai cho Bob, và giữ bớ mật khúa cỏ nhõn của mỡnh. Ở đõy, p và q giữ vai trũ rất quan trọng. Chỳng là cỏc phõn tố của n và cho phộp tớnh d khi biết e. Nếu khụng sử dụng dạng sau của khúa bớ mật (dạng CRT) thỡ p và q sẽ

đƣợc xúa ngay sau khi thực hiện xong quỏ trỡnh tạo khúa.

b). Mó húa

Giả sử Bob muốn gửi đoạn thụng tin M cho Alice. Đầu tiờn Bob chuyển M thành một số m < n theo một hàm cú thể đảo ngƣợc (từ m cú thể xỏc định lại M) đƣợc

thỏa thuận trƣớc.

Lỳc này Bob cú m và biết n cũng nhƣ e do Alice gửi. Bob sẽ tớnh c là bản mó húa của m theo cụng thức: c = me mod n

Hàm trờn cú thể tớnh dễ dàng sử dụng phƣơng phỏp tớnh hàm mũ (theo mụđun) bằng (thuật toỏn bỡnh phƣơng và nhõn). Cuối cựng Bob gửi c cho Alice.

c). Giải mó

Alice nhận c từ Bob và biết khúa bớ mật d. Alice cú thể tỡm đƣợc m từ c theo cụng thức sau:

m=cd mod n

Biết m, Alice tỡm lại M theo phƣơng phỏp đó thỏa thuận trƣớc. Quỏ trỡnh giải mó hoạt động vỡ ta cú:

cd ≡(me)d ≡med mod n.

Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), (theo Định lý Fermat nhỏ) nờn:

med ≡ m mod p và med ≡ m mod q

Do p và q là hai số nguyờn tố cựng nhau, ỏp dụng định lý số dƣ Trung Quốc, ta cú:

med ≡ m mod pq. hay cd ≡ m mod n.

d). Vớ dụ

Sau đõy là một vớ dụ với những số cụ thể. Ở đõy chỳng ta sử dụng những số nhỏ để tiện tớnh toỏn cũn trong thực tế phải dựng cỏc số cú giỏ trị đủ lớn.

Lấy:

p = 61 - số nguyờn tố thứ nhất (giữ bớ mật hoặc hủy sau khi tạo khúa) q = 53 - số nguyờn tố thứ hai (giữ bớ mật hoặc hủy sau khi tạo khúa) n = pq = 3233 - mụđun (cụng bố cụng khai)

e = 17 - số mũ cụng khai d = 2753 - số mũ bớ mật

Khúa cụng khai là cặp (e, n). Khúa bớ mật là d. Hàm mó húa là:

encrypt(m) = me mod n = m17 mod 3233 với m là văn bản rừ. Hàm giải mó là:

decrypt(c) = cd mod n = c2753 mod 3233

với c là văn bản mó.

Để giải mó văn bản cú giỏ trị 855, ta thực hiện phộp tớnh:

decrypt(855) = 8552753 mod 3233 = 123

Cả hai phộp tớnh trờn đều cú thể đƣợc thực hiện hiệu quả nhờ giải thuật bỡnh phƣơng và nhõn.

e). Chuyển đổi văn bản rừ

Trƣớc khi thực hiện mó húa, ta phải thực hiện việc chuyển đổi văn bản rừ

(chuyển đổi từ M sang m) sao cho khụng cú giỏ trị nào của M tạo ra văn bản mó

khụng an toàn. Nếu khụng cú quỏ trỡnh này, RSA sẽ gặp phải một số vấn đề sau: • Nếu m = 0 hoặc m = 1 sẽ tạo ra cỏc bản mó cú giỏ trị là 0 và 1 tƣơng ứng

• Khi mó húa với số mũ nhỏ (chẳng hạn e = 3) và m cũng cú giỏ trị nhỏ, giỏ trị m^e cũng nhận giỏ trị nhỏ (so với n). Nhƣ vậy phộp mụđun khụng cú tỏc dụng và cú

thể dễ dàng tỡm đƣợc m bằng cỏch khai căn bậc e của c (bỏ qua mụđun).

• RSA là phƣơng phỏp mó húa xỏc định (khụng cú thành phần ngẫu nhiờn) nờn kẻ tấn cụng cú thể thực hiện tấn cụng lựa chọn bản rừ bằng cỏch tạo ra một bảng tra giữa bản rừ và bản mó. Khi gặp một bản mó, kẻ tấn cụng sử dụng bảng tra để tỡm ra bản rừ tƣơng ứng.

Trờn thực tế, ta thƣờng gặp 2 vấn đề đầu khi gửi cỏc bản tin ASCII ngắn với m là nhúm vài ký tự ASCII. Một đoạn tin chỉ cú 1 ký tự NUL sẽ đƣợc gỏn giỏ trị m = 0 và cho ra bản mó là 0 bất kể giỏ trị của e và N. Tƣơng tự, một ký tự ASCII khỏc,

SOH, cú giỏ trị 1 sẽ luụn cho ra bản mó là 1. Với cỏc hệ thống dựng giỏ trị e nhỏ

thỡ tất cả ký tự ASCII đều cho kết quả mó húa khụng an toàn vỡ giỏ trị lớn nhất của

m chỉ là 255 và 255^3 nhỏ hơn giỏ trị n chấp nhận đƣợc. Những bản mó này sẽ dễ

dàng bị phỏ mó.

Để trỏnh gặp phải những vấn đề trờn, RSA trờn thực tế thƣờng bao gồm một hỡnh thức chuyển đổi ngẫu nhiờn húa m trƣớc khi mó húa. Quỏ trỡnh chuyển đổi

này phải đảm bảo rằng m khụng rơi vào cỏc giỏ trị khụng an toàn. Sau khi chuyển đổi, mỗi bản rừ khi mó húa sẽ cho ra một trong số khả năng trong tập hợp bản mó.

Điều này làm giảm tớnh khả thi của phƣơng phỏp tấn cụng lựa chọn bản rừ (một bản rừ sẽ cú thể tƣơng ứng với nhiều bản mó tuỳ thuộc vào cỏch chuyển đổi). Một số tiờu chuẩn, chẳng hạn nhƣ PKCS, đó đƣợc thiết kế để chuyển đổi bản rừ trƣớc khi mó húa bằng RSA. Cỏc phƣơng phỏp chuyển đổi này bổ sung thờm bớt vào M. Cỏc phƣơng phỏp chuyển đổi cần đƣợc thiết kế cẩn thận để trỏnh những

dạng tấn cụng phức tạp tận dụng khả năng biết trƣớc đƣợc cấu trỳc của bản rừ. Phiờn bản ban đầu của PKCS dựng một phƣơng phỏp đặc ứng (ad-hoc) mà về sau đƣợc biết là khụng an toàn trƣớc tấn cụng lựa chọn bản rừ thớch ứng (adaptive chosen ciphertext attack). Cỏc phƣơng phỏp chuyển đổi hiện đại sử dụng cỏc kỹ thuật nhƣ chuyển đổi mó húa bất đối xứng tối ƣu (Optimal Asymmetric Encryption Padding - OAEP) để chống lại tấn cụng dạng này. Tiờu chuẩn PKCS cũn đƣợc bổ sung cỏc tớnh năng khỏc để đảm bảo an toàn cho chữ ký RSA (Probabilistic Signature Scheme for RSA – RSA-PSS).

2/. Chữ ký số DSA

Giải thuật ký số (Digital Signature Algorithm, viết tắt DSA) là chuẩn của chớnh phủ Mỹ hoặc FIPS cho cỏc chữ ký số.

a). Tạo khoỏ

• Chọn số nguyờn tố 160 bit q.

• Chọn 1 số nguyờn tố L bit p, sao cho p=qz+1 với số nguyờn z nào đú, 512 ≤ L ≤ 1024, L chia hết cho 64.

• Chọn h, với 1 < h < p - 1 sao cho g = hz

mod p > 1. (z = (p-1) / q) • Chọn x ngẫu nhiờn, thoả món 0 < x < q.

• Tớnh giỏ trị y = gx mod p.

• Khoỏ cụng là (p, q, g, y). Khoỏ riờng là x.

Hầu hết cỏc số h đều thoả món yờu cầu, vỡ vậy giỏ trị 2 thụng thƣờng đƣợc sử dụng.

b). Ký

• Tạo 1 số ngẫu nhiờn với mỗi thụng điệp, giỏ trị k thỏa món 0 < k < q • Tớnh r = (gk

mod p) mod q

• Tớnh s = (k-1 (SHA-1(m) + x*r)) mod q, ở đõy SHA-1(m) là hàm băm mó hoỏ SHA- 1 ỏp dụng cho thụng điệp m

• Tớnh toỏn lại chữ ký trong trƣờng hợp khụng chắc chắn khi r=0 hoặc s=0 • Chữ ký là (r,s)

Giải thuật Euclid mở rộng cú thể đƣợc sử dụng để tớnh toỏn biểu thức k-1

mod q.

c). Xỏc nhận

• Loại bỏ chữ ký nếu hoặc 0< r <q hoặc 0< s <q khụng thỏa món. • Tớnh w = (s)-1 mod q • Tớnh u1 = (SHA-1(m)*w) mod q • Tớnh u2 = (r*w) mod q • Tớnh v = ((gu1*yu2) mod p) mod q • Chữ ký là cú hiệu lực nếu v = r

d). Sự đỳng đắn của giải thuật

Lƣợc đồ ký số là đỳng đắn cú ý nghĩa khi ngƣời xỏc nhận luụn chấp nhận cỏc chữ ký thật. Điều này cú thể đƣợc chỉ ra nhƣ sau:

Từ g = hz mod p suy ra gq ≡ hqz ≡ hp-1 ≡ 1 (mod p) bởi định lý Fermat nhỏ. Bởi vỡ g>1 và q là số nguyờn tố suy ra g cú bậc q.

Ngƣời ký tớnh

s=k−1(SHA−1(m)+xr)mod q

Nhƣ vậy: k≡SHA−1(m)s-1 +xrs-1 ≡ SHA−1(m)w+xrw(mod q).

Bởi vỡ g cú bậc q chỳng ta cú

gk ≡gSHA-1(m)w gxrw ≡ gSHA-1(m)w yrw ≡ gu1 yu2(mod p).

3/. Ký số Schnoor Sơ đồ:

Lấy G là nhúm con cấp q của Zn* với q là số nguyờn tố.

Chọn phần tử sinh g G sao cho bài toỏn logarit trờn G là khú giải. Chọn x ≠ 0 làm khúa bớ mật

Tớnh y = gx làm khúa cụng khai Lấy H làm hàm băm khụng va chạm.

* Ký:

Giả sử cần ký trờn văn bản m Chọn r ngẫu nhiờn thuộc Zq Tớnh c = H (m,xr)

Tớnh s = (r+xc) mod q

Chữ ký Schorr là cặp (c,s)

* Kiểm tra chữ ký:

Với một văn bản m cho trƣớc, một cặp (c, s) đƣợc gọi là một chữ ký Schnorr hợp lệ nếu thỏa món phƣơng trỡnh.

4/.Chữ ký dựng một lần.

Sơ đồ chữ ký dựng một lần cú nhiều ứng dụng, đặc biệt là một số ứng dụng trong cỏc mụ hỡnh tiền điện tử. Sau đõy là sơ đồ chữ ký dựng một lần của Schorr.

Với sơ đồ này, ngƣời dựng trong cựng một hệ thống cú thể chia sẻ một số ngẫu nhiờn và 2 số nguyờn tố p và q sao cho: q | (p-1), q ≠ 1 và gq = 1 mod q

Chuẩn bị:

Ngƣời dựng, giả sử Alice chọn Sk Zq ngẫu nhiờn làm khúa bớ mật. Tớnh Pt= g-sk mod p làm khúa cụng khai.

Ký:

Giả sử Alice cần ký trờn thụng điệp m Alice lấy ngẫu nhiờn r Zq*

Tớnh x = gr mod p, c = H (m||x), y= ( r + cSk )mod q Chữ ký trờn thụng điệp m là (c, y)

Kiểm tra:

Ver = true  x = gr mod p và c = H (m || x)

Nhận xột:

Số r khụng đƣợc dựng quỏ một lần để tạo ra cỏc chữ ký khỏc nhau.

Alice sử dụng r để ký hai lõn thụng điệp m và m’, tạo ra hai chữ ký khỏc nhau là (c, y) và (c’, y’). Khi đú ta cú:

(y – y’) = [(r + cSk) – (r + c’Sk)] = Sk * (c – c’)

Nhƣ vậy, nếu Alice sử dụng r quỏ một lần để ký cho hai thụng điệp khỏc nhau, thỡ bất kỳ ai cú hai thụng điệp trờn, đều cú thể giải mó đƣợc khúa bớ mật Sk.

5/.Chữ ký khụng thể phủ định

Trong cỏc sơ đồ chữ ký điện tử ta đó trỡnh bày ở trờn, việc kiểm thử tớnh đỳng đắn của chữ ký là do ngƣời nhận tiến hành. Nhƣ vậy, cả văn bản cựng chữ ký cú thể đƣợc sao chộp và phỏt tỏn 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 sơ đồ Chữ ký khụng thể phủ định đƣợc 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ý. Sự hợp tỏc đú đƣợc thể hiện qua giao thức kiểm thử ( hay xỏc nhận). 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 đề nảy sinh là làm sao cú thể ngăn cản ngƣời ký chối bỏ một chữ ký mà anh ta đó ký? Để đỏp ứng yờu cầu đú, cần cú thờm một giao thức chối bỏ, thụng qua giao thức này, ngƣời ký cú thể chứng minh một chữ ký khụng phải là chữ ký của mỡnh. Nếu anh ta từ chối khụng tham gia giao thức đú thỡ cú bằng chứng là anh ta khụng chứng minh đƣợc chữ ký đú là giả mạo, tức là anh ta khụng chối bỏ đƣợc chữ ký của mỡnh.

Một sơ đồ Chữ ký khụng thể phủ định cú 3 phần: • Một thuật toỏn ký.

• Một giao thức kiểm thử (giao thức xỏc nhận). • Một giao thức chối bỏ.

Một phần của tài liệu MỘT số bài TOÁN về AN TOÀN THÔNG TIN TRONG GIAI đoạn KIỂM PHIẾU điện tử (Trang 51 - 61)

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

(84 trang)