Sơ đồ quá trình xác thực tính hợp pháp của chủ tài khoản

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số kỹ thuật an toàn thông tin dùng trong rút tiền điện tử (Trang 38)

2.2. KỸ THUẬT CHỮ KÝ MÙ THEO SƠ ĐỒ KÝ SỐ RSA VỚI NHIỀU KHÓA KÝ

2.2.1. Chữ ký số “mù” theo sơ đồ ký RSA

Bài toán đặt ra là giả sử A muốn lấy chữ ký của B trên x, nhƣng không muốn cho B biết x. Quá trình thực hiện ký mù theo sơ đồ ký số RSA đƣợc tiến hành nhƣ sau:

+ Lấy p, q là các số nguyên tố lớn, tính n = p*q

+ Tính φ(n) = (p-1)*(q-1), chọn b  (1; φ(n)) sao cho (b,φ(n))=1. Tìm a sao

cho a.b1 mod φ(n)

Ngƣời dùng Yêu cầu

NGÂN HÀNG Yêu cầu của

khách hàng

Đáp ứng khách hàng

Tạo tài khoản mới

1. Sinh u1, u2.

2. Tính 1 2

1 2

u u

Ig g

3. Gửi I cho ngân hàng.

4. Gửi u1, u2 cho chủ tài khoản.

CSDL tài khoản khách hàng

(I, Số tài khoản, g1, g2,

mật khẩu, số dƣ tài khoản,...)

HỆ THỐNG THANH TOÁN TIỀN ĐIỆN TỬ

Quản lý tài khoản

Hệ thống tài khoản Xác thực tính hợp pháp của chủ tài khoản Tạo tài khoản Chứng minh không tiết lộ thông tin xác

+ r là số ngẫu nhiên  Zn*.

Chọn r sao cho tồn tại phần tử nghịch đảo r-1(mod n)

- Bước 1: A làm mù x bằng một hàm:

Blind(x) = x * rb mod n =z, và gửi z cho B.

- Bước 2: B ký trên z bằng hàm:

Sign(z) = Sign(Blind(x)) = za mod n = y, và gửi lại y cho A.

- Bước 3: A tiến hành xoá mù y bằng thuật toán:

UnBlind(y) = UnBlind(Sign(Blind(x))) = y/r mod n = sign(x)

Các bƣớc kiểm tra tính hợp pháp của đồng tiền sử dụng chữ ký mù RSA với nhiều khóa khác nhau

Bảng 2.1: Các bƣớc kiểm tra tính hợp pháp của đồng tiền

Bƣớc A - Ngƣời rút tiền Ngân hàng

1 Làm mù x: Blind(x) = x.rbi mod n =z Gửi z cho ngân hàng cùng với yêu cầu rút tiền.

Xác thực chủ tài khoản và kiểm tra tính hợp pháp của yêu cầu rút tiền

2 Ký mù lên z:

Sign(z) = zaimod n = y Gửi y cho A

3 - Xóa mù y đƣợc chữ ký của ngân hàng trên đồng tiền: Unblind(y) = sign(x).

Khi đó đồng tiền đƣợc đại diện bởi x, sign(x)

- Kiểm tra chữ ký của ngân hàng. Nếu đúng, thì đồng tiền đảm bảo do ngân hàng quản lý. Ngƣợc lại là tiền giả.

2.2.2. Ứng dụng của chữ ký mù RSA trong giai đoạn rút tiền

Chữ ký mù theo sơ đồ ký số RSA với nhiều khóa ký đảm bảo đƣợc các yêu cầu sau:

- Kiểm tra được tính hợp pháp của đồng tiền: Kiểm tra chữ ký của ngân hàng

trên đồng tiền, nếu đúng là chữ ký thì đồng tiền đó là tiền thật.

- Bảo vệ được đồng tiền trên đường truyền: thực hiện ký lên đồng tiền

(mã hóa).

- Đảm bảo tính riêng tư cho người tiêu tiền: Làm mù đồng tiền trƣớc khi lấy

chữ ký của ngân hàng, sau đó tiến hành xóa mù để thu đƣợc chữ ký trên đồng tiền. Việc làm mù đồng tiền khi đó ngân hàng khơng thể nhìn thấy mối liên hệ giữa đồng tiền và ngƣời tiêu tiền.

- Phòng tránh khai man giá trị đồng tiền: Do làm mù đồng tiền, nên ngƣời

dùng có thể khai man giá trị đồng tiền. Tuy nhiên với nhiều khóa ký khác nhau ứng với mỗi mệnh giá tiền sẽ khắc phục đƣợc điều này.

Sơ đồ 2.3: Ứng dụng chữ ký mù trong giai đoạn rút tiền điện tử

Ngƣời dùng Yêu cầu

NGÂN HÀNG Yêu cầu của khách hàng

Đáp ứng khách hàng

HỆ THỐNG THANH TOÁN TIỀN ĐIỆN TỬ Quản lý tài khoản Xác thực tính hợp pháp của chủ tài khoản CSDL khóa ký (ai, bi) Khóa cơng khai ai Ký số Xóa “mù” Làm “mù” Kiểm tra chữ ký Xác thực yêu cầu Ẩn danh, bảo vệ, tránh khai man đồng tiền

2.2.2.1. Kiểm tra tính hợp pháp của đồng tiền

Trong giai đoạn rút tiền từ tài khoản, để xác định tính hợp pháp của đồng tiền ta có thể quy về 2 vấn đề chính sau:

+ Vấn đề 1: Xác định người gửi đồng tiền là ai?

+ Vấn đề 2: Đồng tiền có phải được quản lý bởi ngân hàng hay không?

Để giải quyết cả hai vấn đề trên, ta có thể sử dụng chữ ký số để ký lên đồng tiền. Khi đó chỉ việc kiểm tra chữ ký trên đồng tiền. Nếu đúng là chữ ký của ngân hàng thì đó là tiền thật, ngƣợc lại là tiền giả. Các ngân hàng có thể sử dụng sơ đồ ký số khác nhau, tùy yêu cầu của ngân hàng đó.

Trong khuân khổ luận văn này, khi ký lên đồng tiền, ta sử dụng chữ ký “mù” theo sơ đồ ký số RSA. Và mỗi đồng tiền có mệnh giá khác nhau có một khóa ký bí mật, độc lập, duy nhất. Có nghĩa là nếu ngân hàng có k đồng tiền mệnh giá khác nhau thì tƣơng ứng cũng phải có k cặp khóa khác nhau.

Khi chủ tài khoản yêu cầu rút tiền thành cơng, ngân hàng sẽ gửi tiền cho ngƣời đó. Muốn kiểm tra xem đồng tiền đó có do ngân hàng gửi đến khơng thì chủ tài khoản chỉ việc kiểm tra chữ ký của ngân hàng trên đồng tiền. Nếu đúng là chữ ký của ngân hàng thì đồng tiến đó là tiền “thật”, khơng phải tiền giả.

Ví dụ: Ngân hàng có m mệnh giá đồng tiền khác nhau kí hiệu là: k1, k2, …km; Khi đó ta cần m cặp khóa tƣơng ứng với các mệnh giá đồng tiền lần lƣợt là (a1, b1), (a2, b2), …(am, bm) dùng để ký lên đồng tiền. Với ai là khóa bí mật dùng làm khóa ký, bi là khóa cơng khai dùng để kiểm tra chữ ký.

2.2.2.2. Đảm bảo tính riêng tư

Ẩn danh là đặc tính quan trọng của phƣơng thức thanh tốn bằng tiền điện tử, đây là ƣu điểm của phƣơng thức này so với những phƣơng thức khác. Nhƣ đã trình bày ở chƣơng 1, để giải quyết vấn đề này, ngƣời ta dùng kỹ thuật chữ ký “mù”. Chữ ký “mù” đảm bảo ngân hàng khơng có đƣợc bất cứ mối liên hệ nào giữa đồng tiền điện tử và chủ sở hữu của nó. Khi đó, khơng thể lần ngƣợc theo đồng tiền để tìm ra chủ nhân của đồng tiền nếu nhƣ đó là một giao dịch bất hợp pháp hoặc có yêu cầu tìm ra chủ nhân của đồng tiền.

Tuỳ theo từng hệ thống tiền điện tử, sẽ áp dụng những sơ đồ chữ ký “mù” khác nhau. Chẳng hạn, trong lƣợc đồ Chaum-Fiat-Naor dùng sơ đồ chữ ký mù RSA, lƣợc đồ Brand dùng sơ đồ chữ ký Schnorr. Mỗi lƣợc đồ có những ƣu nhƣợc điểm khác nhau.

Nếu xác thực đƣợc chấp nhận nghĩa là hồ sơ xin rút tiền của A là hợp lệ, thì quá trình rút tiền đƣợc tiến hành nhƣ sau:

* Ngân hàng trừ một lƣợng tiền tƣơng ứng từ tài khoản A. Ngân hàng và A cùng tính đƣợc m = Id (d là phần tử sinh và công khai).

Ngân hàng gửi A: z = mx, a = gw, b = mw

(w đƣợc chọn ngẫu nhiên từ Zq, x là khố bí mật của ngân hàng). * A chọn 3 số ngẫu nhiên * ; , q q sZ u vZ để làm “mù” m, z, a, b 1 2 1 1 ' s ( )s u s u s s mmIdg g d ; ' s zz ; a'a gu v; ' su sv bb m Tách ngẫu nhiên: 1 ( 1 2) mod , 2 ( 1 2) mod u sxx q u syy q

với s z1 z2modq (z1, z2 tách ngẫu nhiên từ s)

Tính 1 1 1 2 2 2

1x 2y z; '/ 1x 2y z

g g d m g g d

  

A B A

* A dùng hàm băm H tính c’ = H (m’, z’, a’, b’, A). Làm “mù” c’ bằng ' mod c c q u  , gửi c đến Ngân hàng.

* Ngân hàng ký trên c đƣợc r = xc + w mod q, gửi r cho A, điều chỉnh giảm một lƣợng tiền tƣơng ứng trong tài khoản của A.

A chấp nhận nếu kiểm tra thấy gr = hca và mr = zcb và tính r’ = ru + v mod q. Lúc này, A có đồng tiền điện tử thật sự đƣợc đại diện bởi: A, B, Sign (A, B)

với Sign (A, B) = (z’, a’, b’, r’) là chữ ký của Ngân hàng.

* Nhƣng làm thế nào chúng ta có thể biết đƣợc giá trị của từng đồng tiền. Có hai cách khác nhau để giải quyết vấn đề này:

Cách 1: Ngân hàng sử dụng một bộ khoá cho mỗi loại tiền. Nghĩa là, nếu có k

giá trị đồng tiền khác nhau thì ngân hàng phải có k bộ khoá ký khác nhau: (g1, h1) ... (gk, hk)

Cách 2: Ngân hàng công khai k phần tử giả (dummy generator) khác nhau

d1,…, dk . Mỗi phần tử sinh đƣợc dùng để biểu thị giá trị của mỗi đồng tiền.

Giao thức rút tiền khi ẩn danh đồng tiền Input: Chủ tài khoản: I, tên tài khoản, mật khẩu

Ngân hàng: x, g, h, d

Output: Begin

If (ngƣời dùng đăng nhập tài khoản thành công) then

If (xác thực đại diện tài khoản thất bại) then (Dừng giao dịch) Else

Begin

1. Ngân hàng: - Chọn wZq

- Tính m = Id, z = mx, a = gw, b = mw - Gửi z, a, b cho chủ tài khoản.

2. Chủ tài khoản: - Chọn sZq* - Tính m’ = ms = (Id)s; z’ = zs; - Chọn u v, Zq ; - Tính: a'a gu v; ' su sv bb m ; u1s = (x1 + x2)mod q; u2s = (y1 + y2)mod q s= (z1 + z2)mod q; A = ;

B= m'|A = ; c’ = H (m’, z’, a’, b’, A); ' mod c c q u  ; - Gửi c cho ngân hàng. 3. Ngân hàng:

- Tính: r = xc + w mod q; - Trừ tiền trong tài khoản; - Gửi r cho chủ tài khoản; 4. Chủ tài khoản

If (gr = hca) and (mr = zcb then

Begin

r’ = ru + v mod q

Đồng tiền = (A, B, Sign (A, B)); //Sign (A, B) = (z’, a’, b’, r’);

End; End;

Else (thông báo chữ ký sai); End;

2.2.2.3. Bảo vệ đồng tiền

Bảo vệ đồng tiền trong q trình giao dịch có nghĩa ta phải đảm bảo đồng tiền không bị sửa đổi thành tiền giả và nếu bị mất “trộm” thì kẻ gian khó có thể tiêu đƣợc đồng tiền đó.

Để thực hiện đƣợc việc đó, ta phải đảm bảo hai vấn đề sau:

- Vấn đề thứ nhất: Những ngƣời khơng đƣợc phép thì khơng thể “nhìn” thấy

nội dung đồng tiền.

Hiện nay có nhiều phƣơng pháp để giải quyết vấn đề trên, nhƣng cách thông dụng và phổ biến nhất là dùng phƣơng pháp mã hóa cụ thể là hệ mã hóa khóa cơng khai để mã hóa đồng tiền.

Sử dụng hệ mã hóa khóa cơng khai RSA để mã hóa đồng tiền.

A muốn thanh toán (gửi) x tiền cho B. Khi đó A sử dụng khóa cơng khai của B để tiến hành mã hóa x thành x’ sau đó tiến hành gửi x’ cho B. Khi nhận đƣợc đồng tiền x’, B sử dụng khóa bí mật tƣơng ứng của mình để tiến hành giải mã x’ thu đƣợc đồng tiền x. Vậy nếu kẻ gian biết đƣợc “nội dung” đồng tiền thì khó có thể “hiểu” đƣợc. Và nếu đồng tiền bị sửa đổi trƣớc khi đến tay B thì sau khi giải mã ngƣời B có thể biết đƣợc đồng tiền đã bị sửa. Vậy khóa ở đây cần sử dụng là cặp khóa do B tạo ra (của B).

Ban đầu, B tạo cặp khóa nhƣ sau:

- Chọn 2 số nguyên tố lớn p, q sao cho chúng khác nhau. - Tính n = p.q; Tính (n) = (p-1)(q-1)

- Chọn b (1, (n)) sao cho b và (n) nguyên tố cùng nhau. - Tìm a sao cho a.b1 mod (n)

Khi đó (p, q, a) là bí mật và (b, n) là công khai.

B giữ bí mật (a, n) làm khóa giải mã; Cơng khai (b, n) làm khóa mã hóa. Quá trình mã hóa:

- A cần gửi đồng tiền x cho B, khi đó A sử dụng khóa cơng khai của B để mã hóa đồng tiền x: bk(x) = xb mod n = y, gửi y cho B.

- B nhận đƣợc đồng tiền mã hóa y, tiến hành giải mã y: ak(y) = xa mod n

Nếu kẻ gian lấy trộm y do khơng biết a nên khó giải mã đƣợc y để thu đƣợc x (vì dù biết b và n nhƣng “khó” tìm đƣợc a)

- Vấn đề thứ hai: Những ngƣời khơng đƣợc phép thì khơng thể “sửa” đổi nội dung đồng tiền.

Trong giao dịch tiền giấy, nhà nƣớc mới có quyền phát hành và định giá trên mỗi tờ tiền, ngƣời dân không đƣợc phép thay đổi giá trị trên tờ tiền đó hay tự ý in ấn tiền (hành vi phạm pháp). Tƣơng tự nhƣ nhƣ vậy, tiền điện tử đƣợc tổ chức hay ngân hàng nào đó định giá, phát hành và đảm bảo quy đổi thành tiền giấy nếu ngƣời dùng có nhu cầu. A cần rút 50 triệu đồng từ tài khoản của mình trong ngân hàng,

nếu yêu cầu giao dịch thành công, ngân hàng sẽ chuyển cho A đồng tiền 50 triệu đồng và trừ đi trong tài khoản của A giá trị tiền tƣơng ứng. Khi đó A, hay kẻ gian đều khơng thể sửa thành đồng tiền có giá trị khác đƣợc dù giá trị đó là lớn hơn hay nhỏ hơn 50 triệu đồng. Để làm đƣợc việc này, ngân hàng có thể dùng phƣơng pháp ký số để ký lên đồng tiền tiền trƣớc khi gửi cho A.

Tùy ngân hàng, có thể sử dụng sơ đồ ký số RSA, MHK, Elgamal, … cho phù hợp với nhu cầu.

2.2.2.4. Phòng tránh khai man giá trị đồng tiền

Trong giao dịch bằng tiền điện tử, giá trị đồng tiền phụ thuộc vào yêu cầu giá trị tiền cần rút của chủ tài khoản. Để phòng tránh việc chủ tài khoản khai man giá trị đồng tiền làm mù đồng tiền, ta có thể thực hiện theo hai phƣơng pháp sau:

Phương pháp 1: Với mỗi giá trị đồng tiền, ngân hàng dùng một khóa ký

Giả sử:

Với đồng tiền 1 triệu đồng ngân hàng dùng khóa ký k1 Với đồng tiền 2 triệu đồng ngân hàng dùng khóa ký k2 …

Với đồng tiền 10 triệu đồng ngân hàng dùng khóa ký k10. …

Nếu ông A xin rút từ ngân hàng 5 triệu, thì khi ơng A gửi đồng tiền đã bị làm “mù” tới ngân hàng, ngân hàng dùng khóa k5 để ký.

Khi ông A khai man đồng tiền là 10 triệu, thì ngân hàng vẫn dùng khóa ký k5(bí mật) để ký lên đồng tiền và gửi lại cho ông A. Khi ông A giao dịch và thanh tốn cho ơng B đồng tiền này (đồng tiền khai man 10 triệu đã đƣợc ký bằng khóa k5). Để đảm bảo an tồn, khơng nhận phải tiền giả, ông B tiến hành kiểm chữ ký của ngân hàng trên đồng tiền. Ơng B sẽ sử dụng khóa cơng khai tƣơng ứng với k5 để thực hiện kiểm tra, kết quả nếu có khai man thì việc khai man này sẽ bị lộ.

Sử dụng chữ ký mù theo sơ đồ ký số RSA, các bƣớc ký lên đồng tiền đƣợc tiến hành theo lƣợc đồ sau:

Bảng 2.2: Các bƣớc ký mù lên đồng tiền sử dụng nhiều khóa ký Bƣớc A - Ngƣời rút tiền Ngân hàng

1 Làm mù x (chọn khóa cơng khai của ngân hàng tƣơng ứng với giá trị tiền mình cần rút), đƣợc z:

z = Blind(x)

Gửi z cho ngân hàng cùng với yêu cầu rút tiền.

Xác thực chủ tài khoản và kiểm tra tính hợp pháp của yêu cầu rút tiền

2 - Dựa trên yêu cầu rút tiền, lựa chọn

khóa ký tƣơng ứng với giá trị tiền cần rút.

- Tiến hành ký số lên đồng tiền z, đƣợc y. Gửi y cho A.

- Trừ một lƣợng tiền tƣơng ứng trong tài khoản của A.

3 - Sử dụng khóa cơng khai tƣơng ứng với khóa mà ngân hàng ký để xóa mù y đƣợc chữ ký của ngân hàng trên đồng tiền: Unblind(y) = sign(x).

Khi đó đồng tiền đƣợc đại diện bởi:

( x, sign(x))

Phương pháp 2: Dùng phƣơng pháp “CUT and CHOICE” (phƣơng pháp

xác xuất)

Để có một đồng tiền có giá trị thì ơng A phải tạo k đồng tiền đồng giá, ký hiệu là C1, C2,…,Ck. Mỗi đồng tiền đều đƣợc gắn cùng một định danh, sự khác nhau duy nhất giữa chúng là số seri.

A tiến hành làm “mù” các đồng tiền này và gửi chúng đến cho ngân hàng. Ngân hàng chọn ngẫu nhiên k-1 đồng tiền và yêu cầu A cung cấp các thông tin tƣơng ứng để khử “mù” những đồng tiền này. Sau đó, ngân hàng khử “mù” và kiểm tra tính hợp lệ của các đồng tiền. Nếu tất cả đều hợp lệ, ngân hàng sẽ tiến hành ký “mù” lên đồng tiền còn lại Ci và gửi lại cho A. Khi đó A thu đƣợc đồng tiền đã đƣợc ngân hàng ký mù và tiến hành xóa mù để thu đƣợc chữ ký của ngân hàng trên đồng tiền. Và đồng tiền khi đó đƣợc đại diện bởi đồng tiền, chữ ký của ngân hàng trên đồng tiền là (Ci, sign(Ci))

Ngân hàng có sự đảm bảo cao rằng đồng tiền cịn lại cũng hợp lệ, vì nếu A gửi kèm đồng tiền bất hợp pháp trong số k đồng tiền, thì xác suất A bị phát hiện ít nhất

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số kỹ thuật an toàn thông tin dùng trong rút tiền điện tử (Trang 38)

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

(66 trang)