Khóa luận Nghiên cứu một số giao thức thanh toán qua mạng công khai

ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ  
Trác Hoàng Long  
NGHIÊN CỨU MỘT SỐ GIAO THỨC  
THANH TOÁN QUA MẠNG CÔNG KHAI  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Công Nghệ Thông Tin  
HÀ NỘI - 2010  
 
ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ  
Trác Hoàng Long  
NGHIÊN CỨU MỘT SỐ GIAO THỨC  
THANH TOÁN QUA MẠNG CÔNG KHAI  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Công Nghệ Thông Tin  
Cán bộ hƣớng dẫn: PGS.TS Trịnh Nhật Tiến  
Cán bộ đồng hƣớng dẫn: ThS Lƣơng Việt Nguyên  
HÀ NỘI - 2010  
LỜI CẢM ƠN  
Lời đầu tiên, em xin đƣợc gửi lời cảm ơn chân thành và sâu sắc tới PGS.TS Trịnh  
Nhật Tiến, ngƣời thầy đã cho em những định hƣớng và ý kiến quý báu trong suốt quá  
trình hoàn thành khoá luận. Sự hƣớng dẫn của thầy đã giúp em hiểu biết sâu rộng về  
một số vấn đề liên quan đến bảo mật thông tin đặc biệt trong thanh toán từ xa.  
Em xin đƣợc cảm ơn ThS Lƣơng Việt Nguyên đã giúp em hoàn thành khóa luận  
một cách tốt nhất  
Em xin đƣợc cảm ơn các thầy, các cô đã giảng dạy em trong suốt bốn năm qua.  
Những kiến thức mà các thầy, các cô đã dạy sẽ mãi là hành trang giúp em vững bƣớc  
trong tƣơng lai  
Em cũng xin đƣợc cảm ơn tập thể lớp K51CA, một tập thể lớp đoàn kết với  
những ngƣời bạn luôn nhiệt tình giúp đỡ mọi ngƣời, những ngƣời bạn đã giúp đỡ em  
trong suốt bốn năm học tập trên giảng đƣờng Đại học.  
Cuối cùng, em xin đƣợc gửi lời cảm ơn sâu sắc tới gia đình và bạn bè, những  
ngƣời luôn kịp thời động viên, khích lệ em, giúp đỡ em vƣợt qua những khó khăn để  
hoàn thành tốt khoá luận này.  
Hà nội, tháng 05 năm 2010  
Sinh viên  
TRÁC HOÀNG LONG  
1
 
TÓM TẮT NỘI DUNG  
Trong xu thế hội nhập quốc tế và khu vực thanh toán điện tử từ xa qua hệ thống  
mạng công khai đã trở thành một xu thế tất yếu. Việt Nam cũng đã bắt đầu thử  
nghiệm. Mặc dù vẫn còn khá mới mẻ nhƣng chắc chắn nó sẽ là một xu hƣớng trong  
tƣơng lai. Mặc dù vậy, để các phƣơng thức thanh toán điện tử có thể thâm nhập vào  
cuộc sống và trở nên phổ biến thì cần phải một quá trình nghiên cứu và phát triển hệ  
thống này.  
Khóa luận sẽ trình bày những kiến thức khái quát nhất về thanh toán từ xa, sau  
đó sẽ tập trung nghiên cứu các giao thức thanh toán bằng tiền mặt điện tử dựa trên lý  
thuyết mật mã. Khóa luận sẽ trình bày hai thuật toán phổ biến và đƣợc đánh giá là tốt  
nhất cho việc thanh toán điện tử qua mạng công khai. Đồng thời khóa luận cũng sẽ xây  
dựng một hệ thống điện tử đã đƣợc phát triển trên thế giới đó là hệ thống Digital Cash  
System.  
2
 
MỤC LỤC  
3
4
DANH SÁCH CÁC HÌNH VẼ TRONG KHÓA LUẬN  
Hình 1. 1: Mô hình mã hoá đối xứng  
Hình 1. 2: Mã hoá và giải mã của hệ mã hoá khoá công khai  
Hình 1. 3: Sơ đồ ký RSA  
Hình 1. 4: Sơ đồ chữ ký một lần của Schnorr  
Hình 1. 5: Sơ đồ chữ ký mù  
Hình 1. 6: Sơ đồ chữ ký mù dựa trên chữ ký RSA  
Hình 1. 7: Sơ đồ chữ ký mù nhóm  
Hình 2. 1: Mô hình mô phỏng séc  
Hình 2.2 : Mô hình mô phỏng tiền mặt  
Hình 3. 1: Mô hình giao dịch của hệ thống tiền điện tử trong cùng ngân hàng  
Hình 3. 2: Mô hình giao dịch của hệ thống tiền điện tử trong liên ngân hàng  
Hình 3. 3: Lược đồ Fiat-Chaum-Naor  
Hình 4. 1: Giao diện đăng nhập  
Hình 4. 2: Giao diện nhận các đồng tiền ngân hàng có  
Hình 4. 3: Giao diện rút tiền  
Hình 4. 4: Giao diện thanh toán  
5
BẢNG CHỮ VIẾT TẮT  
Bảng ký hiệu viết tắt  
Từ viết tắt  
TMĐT  
TTĐT  
Tiếng Việt  
Tiếng Anh  
Electronic Business  
Electronic Payment  
Distance Payment  
Thƣơng mại điện tử  
Thanh toán điện tử  
Thanh toán từ xa  
TTTX  
DBMS  
Hệ quản trị cơ sở dữ liệu  
Database management system  
Bảng ký hiệu toán học  
Ký hiệu  
||  
Ý nghĩa  
Nối chuỗi bit  
N
Tập các số tự nhiên  
eK(x)  
dK(x)  
Sig(x)  
Ver(x, y)  
Phép mã hóa thông điệp với khóa K  
Phép giải mã thông điệp với khóa K  
Chữ kí thông điệp trên x  
Kiểm tra chữ ký y trên thông điệp x  
6
LỜI MỞ ĐẦU  
Trong những năm gần đây, sự phát triển mạnh mẽ của Internet đã làm thay đổi  
cuộc sống của con ngƣời, trong đó hoạt động thƣơng mại có những bƣớc thay đổi tích  
cực. Thƣơng mại điện tử (TMĐT) dựa trên cơ sở mạng Internet là một phƣơng thức  
hoạt động mới của thƣơng mại. Đối với TMĐT thì khâu quan trọng nhất là “thanh  
toán” bởi vì mục tiêu cuối cùng của cuộc trao đổi thƣơng mại là việc hàng hóa đƣợc  
giao đến cho ngƣời mua và ngƣời bán nhận đƣợc số tiền tƣơng ứng.  
Thanh toán từ xa qua mạng công khai là một phƣơng pháp thanh toán đƣợc  
thực hiện trên máy tính, các bên tham gia giao dịch có thể thực hiện thanh toán mà  
không cần phải gặp trực tiếp  
Vấn đề an toàn thông tin trong mọi giao dịch luôn là một yêu cầu nhất thiết phải  
có đối với mọi hoạt động thƣơng mại, đặc biệt là các hoạt động thƣơng mại qua mạng  
công khai. Các thành tựu của ngành mật mã, đặc biệt là lý thuyết mật mã khóa công  
khai đã cung cấp các giải pháp cho vấn đề an toàn thông tin cho các hoạt động thƣơng  
mại, tạo cơ sở cho việc xây dựng các hệ thống thanh toán điện tử Sự phát triển trong  
lĩnh vực nghiên cứu về hệ thống thanh toán điện tử, với sự ra đời của các mô hình  
thanh toán nhƣ mô hình Untraceable Electronic Cash của FIAT-CHAUM-NAOR, hệ  
thống DCASH đã tạo nền móng để xây dựng và đƣa vào sử dụng các hệ thống thanh  
toán điện tử.  
Trong khuôn khổ khóa luận, em sẽ nghiên cứu một cách tổng quan về thanh  
toán từ xa qua mạng công khai, các cơ sở mật mã đƣợc ứng dụng trong thanh toán từ  
xa. Nghiên cứu một số giao thức thanh toán tiêu biểu và tạo chƣơng trình mô phỏng hệ  
thống thanh toán Digital-Cash.  
7
 
Khóa luận bao gồm:  
Lời mở đầu: Trình bày sơ lƣợc về thanh toán từ xa qua mạng công khai  
Chƣơng 1: Các khái niệm cơ bản  
Chƣơng 2: Tổng quan về thanh toán từ xa  
Chƣơng 3: Các giao thức thanh toán tiền điện tử  
Chƣơng 4: Chƣơng trình mô phỏng hệ thống Digital Cash  
Tuy nhiên, do còn nhiều hạn chế về thời gian cũng nhƣ khả năng của bản thân,  
khoá luận này không thể tránh khỏi thiếu sót. Em rất mong nhận đƣợc sự quan tâm và  
đóng góp ý kiến của các thầy, cô giáo cũng nhƣ các anh, chị và các bạn những ngƣời  
quan tâm đến lĩnh vực này.  
Em xin chân thành cảm ơn!  
8
Chương 1. CÁC KHÁI NIỆM CƠ BẢN  
1.1 CÁC KHÁI NIỆM TRONG TOÁN HỌC  
1.1.1 Số nguyên tố và nguyên tố cùng nhau  
Số nguyên tố là số nguyên dƣơng chỉ chia hết cho 1 và chính nó. Ví dụ 1,2,3…  
Các hệ mật mã thƣờng dùng các số nguyên tố cỡ 512 bit hoặc lớn hơn  
Hai số nguyên dƣơng m n đƣợc gọi là nguyên tố cùng nhau, nếu ƣớc số  
chung lớn nhất của chúng bằng 1, ký hiệu gcd(m, n) = 1.  
Ví dụ: 8 và 17 là hai số nguyên tố cùng nhau.  
1.1.2 Hàm Euler  
1) Định nghĩa  
Cho n1, (n) đƣợc định nghĩa là số lƣợng các số nguyên trong khoảng từ [1, n)  
nguyên tố cùng nhau với n. Hàm đƣợc gọi là hàm  
Euler.  
2) Tính chất  
1/ Nếu p là số nguyên tố thì (p)=p-1.  
2/ Hàm  
Euler là hàm có tính nhân:  
. Nếu gcd(m, n)=1 thì (m*n)=(m). (n).  
e1  
e2  
3/ Nếu n=p1 . p2 ... pkek một biểu diễn gồm các thừa số nguyên tố của, n thì:  
  
  
  
   
1
1
1
(n)n 1  
1  
... 1  
   
   
p1  
p2  
pk  
9
       
1.1.3 Đồng dƣ thức  
1) Định nghĩa  
Cho a b là các số nguyên, khi đó a đƣợc gọi là đồng dƣ với b theo modulo n,  
ký hiệu là a  
b mod n nếu a, b chia cho n có cùng số dƣ. Số nguyên n đƣợc gọi là  
modulo của đồng dƣ.  
Ví dụ: 5 7 mod 2 vì: 5 mod 2 = 1 và 7 mod 2 = 1  
2) Tính chất  
Cho a, a1, b, b1, c Z. Ta có các tính chất sau:  
1/ a b mod n nếu và chỉ nếu a b có cùng số dƣ khi chia cho n  
2/ Tính phản xạ: a a mod n  
3/ Tính đối xứng: Nếu a b mod n thì b  
4/ Tính giao hoán: Nếu a b mod n và b  
5/ Nếu a a1 mod n, b b1 mod n thì a+b  
3) Lớp tương đương  
Lớp tƣơng đƣơng của một số nguyên a là tập hợp các số nguyên đồng dƣ với a  
theo modulo n.  
Cho n cố định đồng dƣ với n trong không gian Z vào các lớp tƣơng đƣơng. Nếu  
a=qn +r, trong đó 0 n thì a r mod n. Vì vậy mỗi số nguyên a là đồng dƣ theo  
a mod n  
c mod n thì a  
(a1+b1 )mod n và ab a1b1 mod n  
c mod n  
r
modulo n với duy nhất một số nguyên trong khoảng từ 0 đến n-1 và đƣợc gọi là thặng  
dƣ nhỏ nhất của a theo modulo n. Cũng vì vậy, a r cùng thuộc một lớp tƣơng  
đƣơng. Do đó r có thể đơn giản đƣợc sử dụng để thể hiện lớp tƣơng đƣơng.  
10  
 
1.1.4 Không gian Zn và Zn*  
Không gian các số nguyên theo modulo n:  
Zn là tập hợp các số nguyên không âm nhỏ hơn n. Tức là: Zn = {0, 1, .., n-1}  
Tất cả các phép toán trong Zn đều đƣợc thực hiện theo modulo n.  
Ví d: Z25 ={0, 1, 2,..., 24}. Trong Z25: 12 + 20 = 7(mod 25)  
*
Không gian Zn là tập hợp các số nguyên p thuộc Zn sao cho ƣớc chung lớn nhất  
*
của p n là 1. Tức là, Zn = {p thuộc Zn | gcd(n, p) = 1}  
Ví dụ: Z2 = { 0, 1 }; Z* =| 1 | vì gcd(1, 2)=1  
2
1.1.5 Khái niệm phần tử nghịch đảo trong Zn  
1) Định nghĩa  
Cho aZn. Nghịch đảo nhân ca a theo modulo n là mt snguyên xZn sao cho  
a*x1 (mod n). Nếu tn tại thì đó là giá trị duy nht và a gi là khnghch, nghịch đảo  
ca a ký hiu là a-1.  
2) Tính cht  
1/ Cho a, bZn. Phép chia ca a cho b theo modulo n là tích ca a và b-1 theo  
modulo n, và chỉ đƣợc xác định khi b có nghịch đảo theo modulo n.  
2/ Gisd=gcd(a, n). Phƣơng trình đồng dƣ ax b (mod n) có nghim x nếu  
và chnếu d chia hết cho b, trong trƣờng hp các nghim d nm trong  
khoảng 0 đến n-1 thì các nghiệm đồng dƣ theo modulo n/d.  
Ví d: 4-1 = 7(mod 9) vì 4*7 1(mod 9).  
11  
   
1.1.6 Khái niệm nhóm  
1) Nhóm  
Nhóm là bộ các phần tử (G, *) thỏa mãn các tính chất sau:  
1/ Tính chất kết hợp: ( x * y ) * z = x * ( y * z )  
2/ Tính chất tồn tại phần tử trung gian e G: e * x= x * e = x, x G  
3/ Tính chất tồn tại phần tử nghịch đảo x’ G: x’ * x = x * x’ = e  
2) Nhóm con  
Nhóm con là bộ các phần tử ( S, * ) là nhóm thỏa mãn các tính chất sau:  
1/ S G, phần tử trung gian e S  
2/ x, y S => x * y S  
3) Nhóm cylic  
Nhóm Cyclic là nhóm mà mọi phần tử x của nó đƣợc sinh ra từ một phần tử đặc  
biệt g G. Phần tử này đƣợc gọi là phần tử nguyên thủy, tức là:  
Vi x G: n N gn = x.  
Ví dụ: (Z+, *) là một nhóm cyclic có phần tử sinh là 1  
12  
 
1.1.7 Các phép tính cơ bản trong không gian modulo  
Cho n là số nguyên dƣơng. Nhƣ trƣớc, các phần tử trong Zn đƣợc thể hiện bởi các  
số nguyên {0, 1, 2, , n-1}. Nhận xét rằng: nếu a, b Zn thì:  
a b  
if a+b<n  
(a+b) mod n =  
a b n if a b n  
Vì vậy, phép cộng modulo (và phép trừ modulo) có thể đƣợc thực hiện mà không  
cần thực hiện các phép chia dài. Phép nhân modulo của a b đƣợc thực hiện bằng  
phép nhân thông thƣờng a với b nhƣ các số nguyên bình thƣờng, sau đó lấy phần dƣ  
của kết quả sau khi chia cho n. Phép tính nghịch đảo trong Zn có thể đƣợc thực hiện  
nhờ sử dụng thuật toán Euclidean mở rộng nhƣ mô tả sau:  
Nếu b=0 thì đặt d:=a; x:=1; y:=0; return(d; x; y) ;  
Đặt x2:=1; x1:=0 ; y2:=0 ; y1:=1 ;  
Khi b>0 thực hiện:  
q:=[a/b]; r=a-qb; x:=x2-qx1; y:=y2-qy1 ;  
a:=b; b:=r; x2:=x1; x1:=x; y2:=y1; y1:=y ;  
d:=a ; x:=x2 ; y:=y2 ; return(d, x, y) ;  
1.1.8 Hàm một phía và hàm một phía có cửa sập  
1) Hàm một phía  
Một hàm một phía là hàm mà dễ dàng tính toán ra quan hệ một chiều, nhƣng rất  
khó để tính ngƣợc lại. Ví nhƣ biết x thì có thể dễ dàng tính ra f(x), nhƣng nếu biết f(x)  
thì rất khó tính ra đƣợc x. Trong trƣờng hợp này “khó” có nghĩa là để tính ra đƣợc kết  
quả thì phải mất rất nhiều thời gian để tính toán.  
Ví dụ:  
Tính y = f(x) = αx mod p dễ nhƣng tính ngƣợc lại x = logα y là bài toán “khó”  
(bài toán logarit rời rạc)  
13  
   
2) Hàm một phía có cửa sập  
F(x) đƣợc gọi là hàm một phía có cửa sập nếu tính xuôi y = f(x) thì dễ nhƣng tính  
ngƣợc x = f-1(y) thì khó tuy nhiên nếu có “cửa sập” thì vấn đề tính ngƣợc trở nên dễ  
dàng. Cửa sập ở đây là một điều kiện nào đó giúp chúng ta dễ dàng tính ngƣợc.  
Ví dụ:  
y = f(x) =xb mod n tính xuôi thì dễ nhƣng tính ngƣợc x= ya mod n thì khó vì phải  
biết a với a * b  
1 (mod(  
(n)) trong đó  
(n) = (p-1)(q-1)). Nhƣng nếu biết cửa sập  
p, q thì việc tính n = p * q và tính a trở nên dễ dàng.  
14  
1.1.9 Độ phức tạp tính toán  
Lý thuyết thuật toán và các hàm tính đƣợc ra đời từ những năm 30 của thế kỉ 20  
đã đặt nền móng cho việc nghiên cứu các vấn đề “tính đƣợc”, “giải đƣợc” trong toán  
học. Tuy nhiên từ cái “tính đƣợc” đến việc tính toán thực tế là một khoảng cách rất  
lớn. Có rất nhiều vấn đề đƣợc chứng minh là có thể “tính đƣợc” nhƣng không tính  
đƣợc trong thực tế cho dù có sự hỗ trợ của máy tính. Vào những năm 1960, lý thuyết  
độ phức tạp tính toán đƣợc hình thành và phát triển một cách nhanh chóng, cung cấp  
nhiều hiểu biết sâu sắc về bản chất phức tạp của các thuật toán và các bài toán, từ  
những bài toán thuần túy lý thuyết đến những bài toán thƣờng gặp trong thực tế.  
Độ phức tạp tính toán (về không gian hay thời gian) của một tiến trình tính toán  
là số ô nhớ đƣợc dùng hay số các phép toán sơ cấp đƣợc thực hiện trong tiến trình tính  
toán đó. Dữ liệu đầu vào đối với một thuật toán thƣờng đƣợc biểu diễn qua các từ  
trong một bảng ký tự nào đó. Độ dài của một từ là số ký tự trong từ đó.  
Cho một thuật toán A trên bảng ký tự Z ( tức là có các đầu vào là các từ trong Z).  
Độ phức tạp tính toán của thuật toán A đƣợc hiểu nhƣ một hàm số fa(n) sao cho với  
mỗi số n thì fa(n) là số ô nhớ, hay số phép toán sơ cấp tối đa mà A cần để thực hiện tiến  
trình tính toán của mình trên các dữ liệu vào có độ dài nhỏ hơn hoặc bằng n. Ta nói:  
thuật toán A có độ phức tạp thời gian đa thức, nếu có một đa thức P(n) sao cho với mọi  
n đủ lớn ta có: fa(n) p(n), trong đó fa(n) là độ phức tạp tính toán theo thời gian của A.  
Bài toán P đƣợc gọi là “giải đƣợc” nếu tồn tại thuật toán để giải nó, tức là thuật  
toán làm việc có kết thúc trên mọi dữ liệu đầu vào của bài toán. Bài toán P đƣợc gọi là  
“giải đƣợc trong thời gian đa thức” nếu có thuật toán giải nó với độ phức tạp thời gian  
đa thức.  
Các thuật toán có độ phc tp giống nhau đƣợc phân loi vào trong các lớp tƣơng  
đƣơng. Ví dtt ccác thut toán có độ phc tp là n3 đƣợc phân vào trong lp n3 và  
ký hiu bi 0(n3).  
15  
 
1.2 HỆ MÃ HÓA  
1.2.1 Khái niệm mã hoá  
Thông tin truyền đi trên mạng rất dễ bị trộm cắp. Để đảm bảo việc truyền tin an  
toàn, ngƣời ta thƣờng mã hóa thông tin trƣớc khi truyền đi. Việc mã hóa cần theo quy  
tắc nhất định.  
Hệ mật mã đƣợc định nghĩa là bộ năm (P, C, K, E, D) trong đó:  
- P là một tập hữu hạn các bản rõ có thể.  
- C là một tập hữu hạn các bản mã có thể.  
- K là một tập hữu hạn các khóa có thể.  
- E là tập các hàm lập mã.  
- D là tập các hàm giải mã.  
Với mỗi k  
K, có một hàm lập mã ek E  
sao cho:  
,
ek : P C, và một hàm giải mã  
,
dk D dk :C P  
d e x x,xP  
   
k
k
Các hệ thống mật mã gồm hai quá trình:  
- Mã hoá: Là quá trình chuyển một thông điệp ban đầu (bản rõ) thành một thông  
điệp đƣợc mã hoá (bản mã), sử dụng một thuật toán mã hoá và một khoá mật mã.  
- Giải mã: Là quá trình ngƣợc lại, bản mã đƣợc chuyển lại về bản rõ, sử dụng một  
thuật toán giải mã và một khoá giải mã.  
Mục tiêu của hệ mật mã là từ bản mã “khó” thể lấy đƣợc bản rõ nếu nhƣ không  
có khoá giải mã tƣơng ứng.  
16  
   
1.2.2 Hệ mã hoá đối xứng  
Hệ mã hoá khoá đối xứng hay còn gọi là hệ mã hoá khoá bí mật là hệ mã hoá khi  
biết khóa mã hóa có thể dễ dàng tìm đƣợc từ khóa giải mã và ngƣợc lại  
Hệ mật mã khóa bí mật yêu cầu ngƣời gửi và ngƣời nhận phải thỏa thuận một  
khóa trƣớc khi tin tức đƣợc gửi đi, khóa này phải đƣợc cất giữ bí mật.  
Mô hình mã hoá đối xứng gồm hai quá trình mã hoá và giải mã nhƣ sau:  
Hình 1. 1: Mô hình mã hoá đối xứng  
Ưu điểm  
- Tốc độ mã hoá và giải mã nhanh  
- Dùng một khoá cho cả hai quá trình mã hoá và giải mã  
Nhược điểm  
- Không an toàn vì độ phức tạp tính toán phụ thuộc vào khoá.  
- Vì bên nhận và bên gửi đều sử dụng một khoá nên khoá cần phải đƣợc truyền trên  
kênh an toàn. Điều này làm phức tạp cho hệ thống cài đặt hệ mật mã khoá đối  
xứng.  
Một số thuật toán mã hoá đối xứng  
- DES: 56 bit, không an toàn. Có thể bị bẻ khoá trong khoảng vài phút.  
- Triple DES, RDES: mở rộng độ dài khoá trong hệ DES lên tới 168 bit.  
- IDEA (International Data Encryption Algorithm): 128 bit, thuật toán này thƣờng  
đƣợc dùng trong các chƣơng trình email.  
17  
 
1.2.3 Hệ mã hoá công khai  
Hệ mã hoá khoá công khai sử dụng một khoá để mã hoá thƣờng đƣợc gọi là khoá  
công khai (public key), và một khoá để giải mã đƣợc gọi là khoá bí mật hay khoá  
riêng (private key).  
Trong hệ mật mã khóa công khai, khóa mã hóa khác với khóa giải mã, biết đƣợc  
khóa công khai “khó” thể tìm đƣợc khóa bí mật.  
Hình 1. 2: Mã hoá và giải mã của hệ mã hoá khoá công khai  
Ưu điểm  
- Kẻ tấn công biết đƣợc thuật toán mã hoá và khoá mã hoá cũng “khó” có thể tính  
đƣợc khoá riêng. Chức năng này đạt đƣợc trên nguyên tắc sử dụng các hàm một  
chiều khi tính hàm y=f(x) là dễ nhƣng ngƣợc lại việc tính giá trị x khi đã biết y là  
khó.  
- Không đòi hỏi kênh truyền bí mật vì khoá mã hoá đƣợc công khai cho tất cả mọi  
ngƣời.  
Nhược điểm  
- Tốc độ mã hoá chậm hơn so với mã hoá khoá đối xứng  
Một số thuật toán mã hoá khoá công khai  
- RSA: độ dài khoá 512 đến 1024 bit, loại mã này đƣợc dùng nhiều nhất cho web và  
chƣơng trình email.  
- ElGamal: độ dài khoá từ 512 đến 1024 bit.  
18  
 
1.3 CHỮ KÝ SỐ  
1.3.1 Khái niệm chữ ký số  
Lƣợc đồ chữ ký số là phƣơng pháp ký một thông điệp lƣu dƣới dạng điện tử. Và  
thông điệp đƣợc ký này có thể đƣợc truyền trên mạng.  
Với chữ ký truyền thống, khi ký lên một tài liệu thì chữ ký là bộ phận vật lý của  
tài liệu đƣợc ký. Tuy nhiên, chữ ký số không đƣợc gắn một cách vật lý với thông điệp  
đƣợc ký.  
Để kiểm tra chữ ký đối với chữ ký truyền thống việc kiểm tra bằng cách so sánh  
nó với những chữ ký gốc đã đăng ký. Tất nhiên, phƣơng pháp này không an toàn lắm  
vì nó tƣơng đối dễ đánh lừa bởi chữ ký của ngƣời khác. Trong khi chữ ký số thì đƣợc  
kiểm tra bằng cách dùng thuật toán kiểm tra đã biết công khai. Nhƣ vậy, “ngƣời bất  
kì” có thể kiểm tra chữ ký số. Việc sử dụng lƣợc đồ ký an toàn sẽ ngăn chặn khả năng  
đánh lừa (giả mạo chữ ký).  
Chữ ký điện tử phải đáp ứng được các yêu cầu:  
- Chứng thực: Chữ ký thuyết phục đƣợc ngƣời nhận rằng văn bản chứa nó là do  
ngƣời ký gửi đến.  
- Chống giả mạo: Chữ ký là bằng chứng cho việc ngƣời ký đã ký lên, bởi không ai  
có thể giả mạo chữ ký của ngƣời ký.  
- Chống tái sử dụng: Chữ ký không chỉ đặc trƣng cho ngƣời ký mà còn cả văn bản  
chứa nó, ngƣời ta không thể di chuyển chữ ký vào một tài liệu khác với vai trò  
nhƣ chữ ký hợp pháp của văn bản ấy.  
- Chống thay đổi văn bản: Sau khi văn bản đƣợc ký, nó không thể bị sửa đổi vì  
mọi sự sửa đổi đều dẫn đến chữ ký không hợp lệ.  
- Chống phủ nhận: Ngƣời ký không thể phủ nhận chữ ký của mình trên văn bản.  
Một sơ đồ chữ ký số là bộ 5 (P, A, K, S, V) thoả mãn các điều kiện dƣới đây:  
- P: tập hữu hạn các thông điệp  
- A: tập hữu hạn các chữ ký.  
- K: tập hữu hạn các khoá (không gian khoá).  
19  
   
sig   
- Với mỗi K thuộc K tồn tại một thuật toán ký  
B và một thuật toán xác minh  
k
ver   
V.  
k
Mỗi sigk : P A ver : PxA {true, false} là những hàm sao cho mỗi bức điện  
k
và mỗi chữ ký y A thoả mãn phƣơng trình dƣới đây:  
True: nếu y = sig(x)  
xP  
Ver(x,y) =  
False: nếu y # sig(x)  
20  
1.3.2 Các loại chữ ký số  
1.3.2.1Chữ ký RSA  
Sơ đồ ký RSA (đề xuất 1978)  
1. Sinh khoá  
Cho n = pq trong đó, p và q là các số nguyên tố.  
Khi đó:  
K = {(n, p, q, a, b | n=p*q, p q là các số nguyên tố và  
a* b 1mod(n)  
}
Các giá trị n b là công khai, và các giá trị a, p, q là bí mật.  
2. Ký  
Với mỗi K = {n, p, q, a, b} x P ta định nghĩa:  
y = sigk(x) = xa mod n , y A.  
3. Kiểm tra chký  
verk(x,y)= true  
x
yb mod n  
Hình 1. 3: Sơ đồ ký RSA  
21  
   
1.3.2.2Chữ ký một lần  
Sơ đồ chữ ký dùng một lần (one-time signature) là 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ử. Khóa luận sẽ  
trình bày về sơ đồ chữ ký dùng một lần của Schnorr.  
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 q sao cho:  
q|(p-1), q1 và gq 1 mod q. Sơ đồ ký nhƣ sau:  
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  
sk  
-
Tính P g  
mod p làm khóa công khai  
k
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 chký:  
Ver = true x = gr mod p c = H(m||x)  
Hình 1. 4: 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 m m’, tạo ra hai chữ ký là (c, y) và  
(c’, y’). Khi đó, ta có:  
(r cSk ) (r c'Sk )  
c c'  
y y'  
c c'  
Sk  
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ý dung một lần  
22  
 
1.3.2.3 Chữ ký mù  
1) Giới thiệu chữ ký mù  
Chữ ký mù đƣợc Chaum giới thiệu vào năm 1983. Mục đích của chữ ký mù là  
làm sao mà ngƣời ký lên văn bản mà không đƣợc biết nội dung văn bản, nghĩa là có  
đƣợc chữ ký trên x  
P mà không cho ngƣời ký biết giá trị x.  
Các bƣớc tiến hành nhƣ sau:  
1/ Làm mù x: A làm mù x bằng một hàm: z = Blind(x) và gửi z cho B.  
2/ Ký: B ký trên z bằng hàm y = Sign(z) = Sign(Blind(x)) và gửi lại y cho A.  
3/ Xoá : A tiến hành xoá mù trên y bằng hàm  
Sign(x) = UnBlind(y) = UnBlind(Sign(Blind(x))).  
Hình 1. 5: Sơ đồ chữ ký mù  
Chứ kí mù đƣợc áp dụng trong kỹ thuật bỏ phiếu từ xa và hệ thống e-money ẩn danh  
2) Chữ kí mù dựa trên chữ ký RSA  
Bài toán là 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 nhƣ sau:  
Lấy p,q là các số nguyên tố lớn, n=p*q,  
(n), r là một số ngẫu nhiên Zn  
(n) = (p-1)*(q-1), ab = 1 mod  
1/ Làm mù x: A làm mù x bằng hàm: Blind(x) = x*rb mod n=z và gửi z cho B.  
r đƣợc chọn sao cho tồn tại phần tử nghịch đảo r-1(mod n)  
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.  
3/ Xoá mù: A tiến hành xoá mù y bằng thuật toán:  
r1  
UnBlind(y) = UnBlind(Sign(Blind(x))) = y*  
mod n = sign(x).  
23  
 
Hình 1. 6: Sơ đồ chữ ký mù dựa trên chữ ký RSA  
Ví dụ:  
Giả sử ông A gửi ông B thông điệp x=8. Ông B ký lên thông điệp x đã đƣợc làm  
mù, thông điệp đƣợc ký sẽ gửi lại ông A, ông A xoá mù.  
1/ Theo ví dụ ở phần chữ ký RSA, khi ký trên x=8 thì chữ ký là:  
Sign(x)= xamod n= 87 mod 15 = 2=y.  
2/ Quy trình “ký mù”: ba bƣớc.  
Bước 1 (làm mù): làm mù x=8  
Blind(x)=x * rb(mod n) = 8 * 57(mod 15)=8*78125(mod 15)  
= 625000 mod 15 = 10 = z  
vi r = 5 là sngu nhiên Z .  
15  
Bước 2 (ký): ký trên z  
a
7
y =Sig(z)= z (mod n) = 10 (mod 15)= 10000000 (mod 15) = 10.  
Bước 3 (xoá mù): xoá mù y= 10  
UnBlind(y)= y / r (mod n) = 10 / 5 (mod 15) = 2. (Bi vì 2*5(mod 15)=10)  
24  
1.3.2.4 Chữ ký nhóm  
Ngƣời tin cậy Z là trƣởng nhóm chọn hệ thống khóa bí mật, Z chuyển cho mỗi  
thành viên trong nhóm một danh sách các khóa bí mật (các danh sách này là khác  
nhau) và công bố một danh sá ch các khóa công khai tƣơng ứng (theo thứ tự ngẫu  
nhiên) trong thƣ mục công khai tin tƣởng.  
- Mỗi thành viên trong nhóm có thể ký bằng khóa bí mật si trong danh sách của anh  
ta. Ngƣời nhận kiểm tra chữ ký bằng khóa công khai tƣơng ứng:  
s
h =  
g
i mod p.  
- Mỗi khóa bí mật si chỉ đƣợc sử dụng một lần  
- Z biết danh sách khóa bí mật của mỗi thành viên, vì trong trƣờng hợp cần thiết anh  
ta biết đƣợc ai đã tạo ra chữ ký đó. Để làm đƣợc điều này Z mở một chữ ký  
- Theo sơ đồ này Z biết danh sách bí mật của mọi thành viên và có thể giả mạo chữ  
ký. Điều này có thể giải quyết bằng việc sử dụng các khóa công khai mù  
1) Cải biên 1  
*
Chọn p là số nguyên tố, g là phần tử sinh của nhóm nhân Zp .  
Thành viên thứ i tự chọn khóa bí mật “thực sự” của mình là si, khóa công khai  
s
thực sựlà h =  
g
i mod p. Trƣởng nhóm Z có danh sách các khóa công khai  
khác nhau và tên các thành viên tƣơng ứng trong nhóm  
- Mỗi tuần đƣa cho thành viên i một số ngẫu nhiên ri  
{1, 2, , p-1}, trong tuần  
này, thành viên i sẽ sử dụng s i r i mod (p-1) làm khóa bí mật . (Khóa mật si  
đã bị che bởi ri).  
si ri  
si ri  
Khóa công khai ” tƣơng ứng là h - mù =  
2) Cải biên 2  
g
=
(g )  
.
- Không cần phải có nhóm trƣởng, mỗi thành viên của nhóm gửi các khóa công  
khai của họ vào một danh sách khoá công khai của nhóm. Chỉ những thành viên  
của nhóm mới có thể gửi các khóa công khai vào danh sách này.  
25  
 
1.3.2.5Chữ ký mù nhóm  
Chữ ký số “mù nhóm” kết hợp thuộc tính của chữ ký “nhóm” và chữ ký “mù”.  
Sơ đồ chữ ký số “mù nhóm” đƣợc Lysyanskaya và Ramzam đƣa ra năm 1998.  
Các thủ tục trong sơ đồ chữ ký “mù nhóm”:  
Setup: Dùng thuật toán xác suất để sinh khoá công khai của nhóm và khoá quản lý  
bí mật cho Trƣởng nhóm.  
Join: Giao thức tƣơng tác giữa Trƣởng nhóm và thành viên mới của nhóm để cung  
cấp cho thành viên này khoá bí mật và chứng nhận thành viên .  
Sign: Giao thức tƣơng tác giữa thành viên nhóm là Bob và ngƣời dùng bên ngoài  
nhóm là Alice có thông điệp m, để Bob có thể tạo chữ ký $ trên thông điệp này.  
Verify: Giải thuật có đầu vào (m, $, ) để kiểm tra chữ ký $ trên thông điệp m.  
Open: Giải thuật có đầu vào ($, ) để xác định thành viên của nhóm đã ký chữ ký $.  
Hình 1. 7: Sơ đồ chữ ký mù nhóm  
26  
 
1.4 MỘT SỐ VẤN ĐỀ LIÊN QUAN  
1.4.1 Chứng chỉ số  
Chứng chỉ khóa công khai là giấy chứng nhận khóa công khai của một thực thể (gọi tắt  
là chứng chỉ số). Sử dụng chứng chỉ số có thể đảm bảo đƣợc các mục tiêu chung của  
các hệ thống bảo mật:  
. Tính bí mật: Tài nguyên chỉ có thể đƣợc truy cập bởi ngƣời có thẩm quyền.  
. Tính toàn vẹn: Tài nguyên chỉ đƣợc sửa đổi bởi ngƣời có thẩm quyền.  
. Tính khả dụng: Tài nguyên luôn đƣợc sẵn sàng đáp ứng cho ngƣời có thẩm  
quyền.  
Việc ứng dụng hệ mã hoá công khai trong bảo mật thông tin rất quan trọng. Tuy  
nhiên, có một vấn đề nảy sinh là nếu hai ngƣời không quen biết nhau nhƣng muốn tiến  
hành giao dịch thì làm sao họ có thể có mã công khai của nhau. Giả sử Alice muốn  
giao tiếp với Bob, Alice sẽ vào website của Bob để lấy khóa công khai. Alice sẽ gõ địa  
chỉ URL của Bob trên trình duyệt, trình duyệt sẽ tìm DNS của trang Web và gửi yêu  
cầu của Alice. Nhƣng không may là kẻ giả mạo Oscar lại nhận yêu cầu của Alice và  
trả về trang Web của Oscar là bản sao của Bob hoàn toàn giống trang web của Bob  
khiến cho Alice không thể phát hiện đƣợc. Nhƣ vậy lúc này Alice sẽ có khoá công  
khai từ Oscar chứ không phải là của Bob. Alice tiến hành mã hoá thông điệp bằng  
khoá công khai, Oscar sẽ giải mã thông điệp, đọc thông tin và mã hóa lại bằng khoá  
công khai của Bob và gửi thông điệp cho Bob. Nhƣ vậy cả Alice và Bob hoàn toàn  
không biết có kẻ thứ ba là Oscar đã đọc đƣợc nội dung của thông điệp, trƣờng hợp xấu  
hơn Oscar sẽ thay đổi nội dung của thông điệp trƣớc khi gửi cho Bob.  
Nhƣ vậy bài toán đặt ra là phải có một kỹ thuật để đảm bảo rằng khóa công khai  
đƣợc trao đổi an toàn không giả mạo.  
Để giải quyết vấn đề này cần một tổ chức cung cấp chứng nhận rằng khóa công  
khai này thuộc về một ngƣời, một công ty hay tổ chức. Tổ chức gọi là CA  
(Certification Authority), và chứng nhận này gọi là chứng thực số hay chứng chỉ số.  
27  
   
1.4.2 Đại diện thông điệp  
1) Định nghĩa  
Hàm H sinh ra giá trị băm h theo công thức: h=H(M)  
Trong đó:  
- M là thông điệp có độ dài thay đổi  
- H(M) là giá trị băm có độ dài cố định  
Giá trị băm sinh ra đƣợc gắn vào thông điệp nguồn, ngƣời nhận xác thực thông  
báo bằng cách tính lại giá trị băm so với thông điệp hiện tại và so sánh với giá trị băm  
gắn trên thông điệp nguồn. Nếu kết quả so sánh giống nhau là hợp lý.  
2) Các thuộc tính của hàm băm  
Tham số của H là một khối dữ liệu có kích thƣớc bất kỳ  
- Hàm băm H là hàm một chiều, nghĩa là dễ dàng tính H(x) cho bất kỳ giá trị x  
nhƣng “khó” có thể tìm đƣợc x khi biết H(x) = h.  
- H sinh ra giá trị băm có độ dài cố định.  
- Hai văn bản giống hệt nhau thì qua hàm băm phải cho ra đại diện giống nhau  
- Với mỗi đại diện chỉ có duy nhất một bản gốc tƣơng ứng (trên thực tế)  
3) Một số hàm băm  
- MD5 (Message Digest): 128 bit, nhanh và đƣợc sử dụng rộng rãi.  
- SHA (Secure Hash Algorithm): 160 bit  
28  
 

Tải về để xem bản đầy đủ

pdf 62 trang yennguyen 02/06/2025 250
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Nghiên cứu một số giao thức thanh toán qua mạng công khai", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_nghien_cuu_mot_so_giao_thuc_thanh_toan_qua_mang_co.pdf