Hệ mã hóa khóa công khai

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số công cụ công nghệ thông tin dùng trong thanh toán điện tử (Trang 63)

* Ưu điểm của hệ mã hóa khóa công khai:

- Dùng cặp khóa để mã hóa nên không cần bảo mật khóa mã hóa, chỉ cần bảo mật khóa giải mã.

- Có thể dùng mã hóa khóa công khai để tạo chữ ký điện tử, chứng chỉ số.

* Nhược điểm của hệ mã hóa khóa công khai:

2.3.3.2. Chữ ký số

1/. Khái niệm chữ ký số

Với thỏa thuận thông thƣờng trên giấy , hai đối tác xác nhận sự đồng ý bằng cách kí tay vào cuối các hợp đồng. Bằng cách nào đó ngƣời ta phải thể hiện đó là chữ kí của riêng họ và kẻ khác không thể giả mạo. Mọi cách sao chép chữ kí trên giấy thƣờng dễ bị phát hiện, vì bản sao có thể phân biệt đƣợc với bản gốc.

Các giao dịch hợp tác trên mạng cũng đƣợc thực hiện theo cách tƣơng tự, nghĩa là hai đối tác trên hai nút mạng cũng phải kí vào Bản thỏa thuận. Chỉ khác là văn bản truyền trên mạng đƣợc biểu diễn dƣới dạng “số” (chỉ dùng chữ số 0 và 1), ta gọi nó này là “văn bản số” (điện tử). Do đó chữ kí trên “văn bản số” khác với chữ kí trên văn bản giấy thông thƣờng.

Việc giả mạo và sao chép lại đối với “văn bản số” là việc hoàn toàn dễ dàng, không thể phân biệt đƣợc bản gốc với bản sao. Nhƣ vậy “chữ kí” ở cuối “văn bản số” không thể chịu trách nhiệm đối với toàn bộ nội dung văn bản loại này. Do đó Chữ kí thể hiện trách nhiệm đối với toàn bộ “văn bản số” phải là “chữ kí” đƣợc kí trên từng bit của văn bản loại này. Bản sao của “chữ kí số” có tƣ cách pháp lí.

Chữ kí thông thƣờng đƣợc kiểm tra bằng cách so sánh nó với chữ kí gốc. Ví dụ, ai đó kí một tấm séc để mua hàng, ngƣời bán phải so sánh chữ kí trên mảnh giấy với chữ kí gốc nằm ở mặt sau của thẻ tín dụng để kiểm tra. Dĩ nhiên, đây không phải là phƣơng pháp an toàn vì nó dễ dàng bị giả mạo.

“Chữ kí số” có thể đƣợc kiểm tra chính xác nhờ dùng một thuật toán kiểm tra công khai. Nhƣ vậy, bất kỳ ai cũng có thể kiểm tra đƣợc chữ kí số. Việc dùng một sơ đồ chữ kí an toàn có thể sẽ ngăn chặn đƣợc khả năng giả mạo.

Đại diện thông điệp

Vì “Chữ kí số ” đƣợc kí trên từng bit của “văn bản số”, nên độ dài của nó ít nhất cũng bằng văn bản cần kí. Nhƣ vậy sẽ tốn kém chỗ nhớ cũng nhƣ thời gian “kí” và thời gian truyền “Chữ kí số ”. Trên thực tế thay vì kí trên “văn bản số”, ngƣời ta kí trên “Đại diện” của nó.

Để ký trên “văn bản số” dài, đầu tiên phải tạo “đại diện” của văn bản nhờ “Hàm băm ”.

Hàm băm là một quá trình sử dụng thuật toán băm để tính toán một số, đƣợc gọi là giá trị băm, từ một thông báo có độ dài bất kỳ. Hàm băm là hàm của thông báo, nó chính là dấu vân tay cho một thông báo vì nó gần nhƣ duy nhất đối với mỗi thông báo. Do sinh ra các thuật toán băm chất lƣợng tốt, khả năng xảy ra tình trạng hai thông báo khác nhau có cùng kết quả băm là vô cùng nhỏ. Mã hoá băm là một cách thích hợp để phát hiện nếu thông báo bị sửa đổi trong quá trình chuyển tiếp, bởi vì ngƣời nhận sẽ tính toán giá trị băm của thông báo nhận đƣợc và so sánh với giá trị băm của thông báo gốc để phát hiện ra thông báo có bị sửa hay không

Hàm băm có đầu vào là thông báo M với đồ dài bất kỳ, đầu ra là một mã băm H(M) có độ dài cố định. Đôi khi ngƣời ta gọi đầu ra của hàm băm là tóm lƣợc thông báo. Mã hàm băm là một hàm của tất cả các bit có trong thông báo, đồng thời nó cung cấp khả năng phát hiện lỗi: Nếu A thay đổi một hoặc nhiều bít bất kỳ trong thông báo thì mã băm cũng thay đổi theo

Mục đích của hàm băm là tạo ra một “dấu vân tay ” cho một file, một thông báo, hoặc một khối dữ liệu.

Một thông điệp đƣợc đƣa qua hàm băm sẽ tạo ra xâu bit với độ dài cố định và ngắn hơn đƣợc gọi là “Đại diện”. Mỗi thông điệp đi qua 1 hàm băm chỉ cho duy nhất 1 “Đại diện”. Ngƣợc lại, “khó” tìm đƣợc 2 thông điệp khác nhau mà có cùng một “Đại diện” (ứng với cùng 1 hàm băm).

Hàm băm kết hợp với “chữ ký số” ở trên sẽ tạo ra một loại “chữ ký điện tử ” vừa an toàn (không thể cắt / dán), vừa có thể dùng để kiểm tra tính toàn vẹn của thông điệp.

* Ngƣời gửi: Tạo ra “chữ ký số”.

Đƣa thông điệp cần gửi qua hàm băm tạo ra Đại diện”.

Mã hoá Đại diện bằng khoá riêng (private) của ngƣời gửi để tạo ra “chữ ký số”. Mã hoá thông điệp và chữ ký bằng khoá công khai (public) của ngƣời nhận, gửi đi.

* Ngƣời nhận: Định danh người ký, kiểm tra tính toàn vẹn của thông điệp.

Giải mã thông điệp bằng khoá riêng của mình, giải mã chữ ký bằng khoá công khai của ngƣời gửi để lấy Đại diện ra.

Cho thông điệp qua hàm băm để tạo ra Đại diện mới. So sánh Đại diện mới với Đại diện nhận đƣợc.

Nếu chúng giống nhau thì ngƣời nhận có thể vừa định danh đƣợc ngƣời gửi, vừa kiểm

tra tính toàn vẹn của thông điệp.[1].

Phân loại chữ ký điện tử.

Chữ ký “điện tử” đƣợc chia làm 2 lớp, lớp chữ ký kèm thông điệp (message appendix) và lớp chữ ký khôi phục thông điệp (message recovery).

Chữ ký kèm thông điệp: Đòi hỏi thông điệp ban đầu là đầu vào của giải thuật kiểm tra. Ví dụ: chữ ký Elgamal.

P P

h S

h sigk’

x x’=h(x) y=sigk’(x’)

Hình 2.14 : Mô hình quá trình ký có sử dụng hàm băm

P x S

True

False

verk’’

Hình 2.15 : Quá trình kiểm thử

Chữ ký khôi phục thông điệp: Thông điệp ban đầu có thể khôi phục từ chữ ký. Ví dụ: Chữ ký RSA.

P S

sigk’

x s=sigk’(x)

2/. Sơ đồ chữ ký RSA.

Thuật toán Sinh khóa cho chữ ký RSA (do người A thực hiện) 1. Sinh hai số nguyên tố lớn pq có giá trị xấp xỉ nhau 2. Tính n = p.q, và (n) = (p-1).(q-1)

3. Chọn một số ngẫu nhiên b, 1 < b < (n), sao cho gcd(b, (n)) = 1

4. Sử dụng thuật toán Euclide để tính số a, 1 < a < (n), sao cho a.b ≡ 1 (mod (n))

5. Khóa kiểm thử là (n, b), Khóa ký là (a)

Thuật toán Ký và Kiểm thử chữ ký (i).Ký: (do người A thực hiện)

a. Sử dụng khóa ký (a) theo thuật toán trên b. Chọn một bản mã x, trong khoảng [1, n-1] c. Tính: y = xa mod n

d. Nhận đƣợc chữ ký y

(ii). Kiểm thử: (do người B thực hiện)

a. Lấy khóa kiểm thử (n, b). Khóa này đƣợc công khai. b. Nếu x yb mod nTRUE, ngƣợc lại  FALSE [2]

3/. Sơ đồ chữ ký DSS.

Phƣơng pháp Digital Signature Standard (DSS) là sự cải tiến của phƣơng pháp ElGamal. Phƣơng pháp này đƣợc công bố trên Federal Register vào ngày 19 tháng 5 năm 1994 và chính thức trở thành phƣơng pháp chuẩn từ ngày 1 tháng 12 năm 1994.

Thuật toán Sinh khóa cho chữ ký DSS (do người A thực hiện) 1. Chọn một số nguyên tố q trong khoảng 2159 < q < 2160

2. Chọn một số t (0 t 8), và chọn một số nguyên tố p

(2511+64t<p<2512+64t) sao cho p chia hết cho (q–1) 3. Chọn 1 phần tử sinh  trong nhóm Cyclic có cấp là q

4. Chọn một số ngẫu nhiên a (1 a q–1) 5. Tính  = a

mod p

6. Khóa kiểm thử là (p, q, , ), Khóa ký là (a)

Thuật toán Ký và Kiểm thử chữ ký

(i).Ký: (do người A thực hiện với văn bản x)

a. Chon ngẫu nhiên một số nguyên k (0 < k < q) b. Tính r = (k

mod p) mod q

c. Tính k-1 mod q

d. Tính s = k-1(m + ar) mod q

e. Chữ ký của A trên x là (r, s) (ii). Kiểm thử: (do người B thực hiện)

a. Lấy khóa kiểm thử (p, q, , ). Khóa này đƣợc công khai. b. Kiểm tra 0 < r < q0 < s < q, ngƣợc lại FALSE

c. Tính w = s-1 mod q

d. Tính u1 = w.m (mod q) và u2 = r.w (mod q) e. Tính v = (u1u2

mod p) mod q

1. Sinh khoá

- Ngƣời dùng, giả sử là Alice, chọn Sk Zq ngẫu nhiên làm khóa bí mật

- Tính sk

k g

P   mod p làm khóa công khai

2. Ký: Giả sử Alice cần ký lên thông điệp m - Alice lấy ngẫu nhiên r Zq

*

- Tính x = gr mod p

- Tính c = H(m||x)

- Tính y = (r + cSk) mod q

- Chữ ký trên thông điệp m là cặp (c, y)

3. Kiểm tra chữ ký:

Ver = true x = gr mod pc = H(m||x)

4/. Chữ ký Schnorr (Chữ ký một lần)

Sơ đồ chữ ký dùng một lần (one-time signature) là một khái niệm vẫn còn khá mới mẻ song rất quan trọng, đặc biệt là trong một số mô hình về tiền điện tử.

Với sơ đồ chữ ký dùng một lần của Schnorr, những ngƣời dùng trong cùng hệ thống có thể chia sẻ một số ngẫu nhiên g và hai số nguyên tố p và q sao cho: q|(p-1), q1 và gq  1 mod q. Sơ đồ ký nhƣ sau:

Hình 2.17: Sơ đồ chữ ký một lần của Schnorr

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.

Giả sử Alice sử dụng r để ký hai thông điệp mm’, tạo ra hai chữ ký là (c, y) và (c’, y’). Khi đó, ta có: k k k S c c S c r cS r c c y y         ' ) ' ( ) ( ' '

Nhƣ vậy, nếu Alice sử dụng r quá một lần cho hai thông điệp khác nhau, 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. Vì vậy, sơ đồ chữ ký loại này đƣợc gọi là sơ đồ chữ ký dùng một lần. Chữ ký dùng một lần đƣợc áp dụng trong các hệ thống tiền điện tử. [2],[9]

5/. Chữ ký ủy nhiệm:

Hệ chữ ký này dành cho các trƣờng hợp mà ngƣời chủ chữ ký bị ốm không có khả năng làm việc hay đã đi vắng đến một nơi không có phƣơng tiện mạng máy tính cần thiết để ký. Vì vậy chữ ký ủy nhiệm đƣợc tạo ra để ngƣời ký có thể ủy nhiệm cho một ngƣời nào đó ký thay. Tất nhiên chữ ký ủy nhiệm phải có các thuộc tính riêng thêm vào:

Chữ ký ủy nhiệm là phần phân biệt với chữ ký thƣờng, và ngƣời đƣợc ủy nhiệm không thể tạo đƣợc chữ ký chủ (chữ ký của ngƣời chủ).

Chữ ký ủy nhiệm cũng có chức năng chứng thực nhƣ chữ ký chủ, chỉ có ngƣời chủ và ngƣời đƣợc ủy nhiệm mới có thể tạo đƣợc chữ ký này. Ngƣời nhận đƣợc văn bản có thể hoàn toàn tin tƣởng vào chữ ký đó nhƣ chữ ký chủ.

-Ngƣời chủ có thể xác định đƣợc danh tính ngƣời ký từ một chữ ký ủy nhiệm. - Ngƣời đƣợc ủy nhiệm không thể chối cãi đƣợc nếu đã ký một văn bản ủy nhiệm hợp lệ (tức là anh ta không thể chối đổ cho ai khác hay chính ngƣời chủ đã ký mà lại nói anh ta ký).

6/. Chữ ký không thể phủ nhận (chống chối bỏ):

Chữ ký không thể phủ nhận do David Chaum và Hans Van Antwerpen phát minh năm 1989. Ở đây, thuật toán kiểm định đòi hỏi phải có sự tham gia của ngƣời ký. Thực chất đây là chữ ký có tính chất không thể chuyển giao đƣợc (Untranferable): Chỉ có ý nghĩa với ngƣời nhận là ngƣời có trao đổi làm ăn với ngƣời ký, khi chuyển nó cho một ngƣời khác thì không có tác dụng nữa (không thể kiểm định đƣợc chữ ký nữa). Các văn bản có chữ ký này không nhằm vào mục đích đem đi công bố ở nơi khác mà chỉ có tính chất giấy phép. Vì thế nếu sao chép là mất ý nghĩa.

Chữ ký không thể phủ nhận đƣợc dùng trong việc bán sản phẩm phần mềm: Các hãng phần mềm sẽ bán các sản phẩm của mình có chữ ký chứng tỏ bản quyền. Việc kiểm định đòi hỏi phải liên lạc với hãng này. Nếu nhƣ có một ai đó bán phần mềm sao chép thì lúc đó ngƣời mua đòi kiểm định sẽ bị lộ ngay vì không thực hiện đƣợc. [9]

7/. Chữ ký nhóm:

Tình huống thực tế minh họa cho chữ ký này nhƣ sau: Một công ty có nhiều máy tính nối với nhau trong một mạng cục bộ, các máy tính này đƣợc đặt trong một số phòng ban bộ phận. Mỗi phòng chỉ có một máy in mà chỉ các cán bộ của phòng mới đƣợc in ra. Vì vậy ngƣời ta muốn một cơ chế để việc in này có thể thực hiện mà việc kiểm soát không cho ngƣời ngoài phòng in đƣợc, trong khi mỗi yêu cầu in lại không cần nêu rõ tên ngƣời yêu cầu để tránh xâm phạm tính riêng tƣ của từng công việc.

Nhƣ vậy một hệ chữ ký sẽ đƣợc thiết lập sao cho chỉ có những ngƣời nằm trong một nhóm ngƣời nào đó – trong cùng phòng – là có thể tạo ra đƣợc chữ ký mà ngƣời kiểm định – trong ví dụ trên là máy in hay chƣơng trình quản lý máy in – kiểm tra và chấp nhận. Chữ ký này chỉ nói lên ngƣời ký nằm trong nhóm đó mà thôi chứ không nói lên đích xác đó là ngƣời nào nên giữ đƣợc tính riêng tƣ của từng ngƣời ký. Tuy nhiên hệ chữ ký đặc biệt này còn có một tính chất đặc biệt nữa là: nếu cần thiết, một ngƣời thẩm quyền có thể “mở” đƣợc một chữ ký ra để xem ai cụ thể trong nhóm đã ký. Ứng dụng của nó là nếu chƣơng trình quản lý máy in cho thấy có ngƣời đã quá lạm dụng thì trƣởng phòng có thể dùng quyền hạn của mình để “cảnh báo” những chữ ký lên những yêu cầu in tốn kém đó, sau đó có biện pháp phạt ngƣời lạm dụng nhƣ là nộp tiền phạt. Khả năng này làm cho tất cả mọi ngƣời phải biết điều độ với máy in của công ty, nếu không muốn bị nêu tên cảnh báo.[5]

8/. Chữ ký mù:

Chữ ký mù đƣợc đƣợc Chaum giới thiệu vào năm 1983. Chữ ký mù là để ngƣời ký tạo ra chữ ký trên một văn bản mà chính ngƣời ký cũng không biết nội dung - không biết nội dung nhƣng vẫn tạo đƣợc chữ ký hợp lệ. Đặc trƣng của nó là: Chỉ có duy nhất ngƣời chủ của chữ ký mới có khả năng tạo ra chữ ký hợp lệ cho một văn bản và chữ ký cho một văn bản đó có thể đƣợc kiểm tra tính đúng đắn bởi bất cứ ai. Chữ ký mù đƣợc áp dụng trong kỹ thuật bỏ phiếu từ xa và hệ thống e-money ẩn danh.[6]

Giả sử Alice muốn mua quyển sách Q với giá 50$ từ Bob. Giả sử hai ngƣời cùng dùng dịch vụ của một ngân hàng. Giao thức giao dịch gồm ba giai đoạn sau:

Rút tiền (Withdrawal):

- Alice tạo tiền điện tử C (với thông tin: số serial, giá trị của C, ví dụ 50$). - Alice yêu cầu ngân hàng ký “mù” lên C.

- Giao thức ký thành công, thì ngân hàng sẽ trừ 50$ trong tài khoản của Alice.

Tiêu tiền (Spending):

- Alice đƣa C đã ký của ngân hàng cho Bob và yêu cầu quyển sách Q.

- Bob kiểm tra chữ ký C, nếu chữ ký không hợp lệ thì Bog kết thúc giao thức.

Gửi tiền (Deposit):

- Bob lấy C từ Alice và gửi cho ngân hàng. - Ngân hàng xác thực chữ ký trên C.

+ Nếu chữ ký là hợp lệ, ngân hàng sẽ kiểm tra xem C đã đƣợc tiêu trƣớc đó chƣa. + Nếu C chƣa đƣợc tiêu, thì ngân hàng sẽ cộng thêm tiền vào tài khoản của Bob. Nếu việc gửi tiền thành công, Bob sẽ gửi quyển sách Q cho Alice.

Bob khó thể biết C từ tài khoản nào. Khi Bog gửi C vào tài khoản của mình, ngân hàng cũng khó thể biết đồng tiền đó nhận từ Alice vì nó đã đƣợc ký “mù”. Nhƣ vậy tiền điện tử C không lƣu vết của những ai đã “tiêu” nó.

Khi ký mù lên văn bản x, các bƣớc đƣợc tiến hành nhƣ sau:

Hình 2.18 : Sơ đồ chữ ký mù

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số công cụ công nghệ thông tin dùng trong thanh toán điện tử (Trang 63)

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

(140 trang)