Khóa luận Nghiên cứu một số giải pháp công nghệ thông tin trong việc sử dụng tiền điện tử - Nguyễn Thị An

Tài liệu Khóa luận Nghiên cứu một số giải pháp công nghệ thông tin trong việc sử dụng tiền điện tử - Nguyễn Thị An: ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ---------- ˜™ ---------- Nguyễn Thị An NGHIÊN CỨU MỘT SỐ GIẢI PHÁP CÔNG NGHỆ THÔNG TIN TRONG VIỆC SỬ DỤNG TIỀN ĐIỆN TỬ KHOÁ LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY Ngành: Công Nghệ Thông Tin HÀ NỘI - 2009 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ---------- ˜™ ---------- Nguyễn Thị An NGHIÊN CỨU MỘT SỐ GIẢI PHÁP CÔNG NGHỆ THÔNG TIN TRONG VIỆC SỬ DỤNG TIỀN ĐIỆN TỬ KHOÁ LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC 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 HÀ NỘI - 2009 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 nhất tới PGS.TS Trịnh Nhật Tiến – người Thầy luôn chỉ bảo, hướng dẫn hết sức nhiệt tình, giúp đỡ em trong suốt quá trình học tập và xây dưng khóa luận. Em xin chân thành cảm ơn các Thầy, Cô giáo đã dạy dỗ em trong suốt quá trình học tập tại trường Đại học Công Nghệ. Những kiến thức các thầy cô truyền đạt sẽ mãi là hành trang để em vững trong tương lai. Xin...

doc89 trang | Chia sẻ: hunglv | Lượt xem: 1100 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Khóa luận Nghiên cứu một số giải pháp công nghệ thông tin trong việc sử dụng tiền điện tử - Nguyễn Thị An, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ---------- ˜™ ---------- Nguyễn Thị An NGHIÊN CỨU MỘT SỐ GIẢI PHÁP CÔNG NGHỆ THÔNG TIN TRONG VIỆC SỬ DỤNG TIỀN ĐIỆN TỬ KHOÁ LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY Ngành: Công Nghệ Thông Tin HÀ NỘI - 2009 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ---------- ˜™ ---------- Nguyễn Thị An NGHIÊN CỨU MỘT SỐ GIẢI PHÁP CÔNG NGHỆ THÔNG TIN TRONG VIỆC SỬ DỤNG TIỀN ĐIỆN TỬ KHOÁ LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC 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 HÀ NỘI - 2009 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 nhất tới PGS.TS Trịnh Nhật Tiến – người Thầy luôn chỉ bảo, hướng dẫn hết sức nhiệt tình, giúp đỡ em trong suốt quá trình học tập và xây dưng khóa luận. Em xin chân thành cảm ơn các Thầy, Cô giáo đã dạy dỗ em trong suốt quá trình học tập tại trường Đại học Công Nghệ. Những kiến thức các thầy cô truyền đạt sẽ mãi là hành trang để em vững trong tương lai. Xin được cảm ơn tới các bạn K50HTTT đã cung cấp cho mình những tài liệu quý báu để mình hoàn thành khóa luận. Cảm ơn tới tất cả các bạn bè của mình đã luôn sát vai, tin tưởng và giúp đỡ mình trong suốt 4 năm đại học qua. Cuối cùng, con xin được gửi lời biết ơn sâu sắc nhất tới Bố mẹ và những người thân trong gia đình, những người luôn dành cho con tình yêu, niềm tin và động viên con trong suốt quá trình học tập. Hà nội, tháng 5 năm 2009 Sinh viên Nguyễn Thị An TÓM TẮT NỘI DUNG Thương mại điện tử nói chung và tiền điện tử nói riêng đang còn là một lĩnh vực mới mẻ. Vì vậy, để tiền điện tử có thể thực sự thâm nhập vào cuộc sống, trở thành một phương thức thanh toán hiệu quả đòi hỏi cần phải có quá trình nghiên cứu và phát triển. Khóa luận sẽ trình bày những kiến thức khái quát về Tiền điện tử, sau đó tập trung nghiên cứu hai vấn đề lớn hiện đang đặt ra đối với tiền điện tử:vấn đề ẩn danh người sử dụng và vấn đề ngăn chặn người sử dụng tiêu một đồng Tiền điện tử nhiều lần. Khóa luận cũng giới thiệu và phân tích một số hệ thống tiền điện tử hiện nay trên thế giới, và đề xuất việc ứng dụng tiền điện tử tại Việt nam. Ngoài ra, khóa luận sẽ Demo một chương trình nhỏ về một hệ thống tiền điện tử bằng ngôn ngữ C++. MỤC LỤC DANH MỤC CÁC KÝ KIỆU TT Ký hiệu Chú giải cho ký hiệu sử dụng 1 KV Lược đồ KV (tên viết tắt của hai tác giả D.Kugler và H.Vogt ) 2 RSA Hệ mã hóa khóa công khai được đề xuất bởi Ron Rivest, Adi Shamir, Len Adlemon năm 1977. 3 SSS Sơ đồ chia sẻ bí mật – Secret Sharing Schemes 4 TTP Bên thứ ba tin cậy – Trusted Third Party 5 VSS Sơ đồ chia sẻ bí mật có thể xác minh – Verify Secret Sharing DANH MỤC BẢNG BIỂU Hình 1: Mô hình giao dịch cơ bản của hệ thống Tiền điện tử. Hình 2: Mô hình phương thức thanh toán Hình 3: Mô hình giao dịch có tính chuyển nhượng Hình 4: Khái quát lược đồ Fair tracing Hình 5: Quá trình khởi tạo tài khoản của lược đồ Brand Hình 6: Quá trình chứng minh đại diện tài khoản của lược đồ Brand. Hình 7: Giao thức rút tiền trong lược đồ Brand Hình 8: Giao thức thanh toán Hình 9: Tóm tắt lược đồ KV Hình 10: Giai đoạn chuẩn bị trong lược đồ Fair tracing. Hình 11: Giao thức rút tiền trong lược đồ Fair tracing. Hình 12: Giai đoạn chuẩn bị với TTP. MỞ ĐẦU Tính cấp thiết của khóa luận. Sự mở rộng và phổ biến của Internet đã thúc đẩy sự phát triển của Thương mại điện tử. Một nhu cầu nảy sinh là thanh toán “điện tử”, đơn giản là người mua và người bán thanh toán qua ngân hàng bằng thẻ tín dụng điện tử. Hình thức thanh toán này chưa thật thuận tiện. Một hình thức thanh toán mới đã xuất hiện: thanh toán bằng tiền điện tử. Trên toàn thế giới, tiền điện tử đã và đang được ứng dụng thành công, đem lại lợi ích cho người dùng.Tuy nhiên trong quá trình sử dụng tiền điện tử đã nảy sinh một số vấn đề đáng quan tâm như: người dùng gian lận giá trị đồng tiền, tiêu nhiều lần một đồng tiền hay xác định danh tính người sở hữu đồng tiền. Vì vậy, khóa luận đi vào nghiên cứu một số bài toán trong hệ thống tiền điện tử và trình bày những cách giải quyết phù hợp cho các vấn đề trên. Mục đích của khóa luận. Mục đích của khóa luận là nghiên cứu một số giải pháp khoa học cho các bài toán phát sinh trong quá trình sử dụng tiền điện tử, so sánh, đánh giá ưu nhược điểm của các giải pháp và chỉ rõ giải pháp nào phù hợp với từng loại tiền điện tử. Đối tượng nghiên cứu. Đối tượng nghiên cứu là các bài toán phát sinh khi dùng tiền điện tử. Phương pháp nghiên cứu. Để nghiên cứu được các bài toán tiền điện tử, phần đầu khóa luận tổng hợp lại những khái niệm toán học và những kiến thức cơ bản về lý thuyết mật mã có liên quan. Sau đó đi sâu nghiên cứu về tiền điện tử, chỉ rõ cấu trúc, tính chất các loại tiền điện tử đã và đang được sử dụng trên thế giới. Từ đó, phân tích để thấy rõ các bài toán đã phát sinh như thế nào trong quá trình sử dụng tiền điện tử, và nêu lên các giải pháp phù hợp cho từng bài toán. Kết cấu của khóa luận. Khóa luận gồm 4 chương. Chương 1: Trình bày lại một số khái niệm toán học, và lý thuyết cơ bản về mật mã học. Chương 2: Trình bày khái niệm về tiền điện tử, cấu trúc, tính chất và mô hình giao dịch của tiền điện tử. Chương 3: Nêu một số bài toán phát sinh trong quá trình dùng tiền điện tử. Đối với mỗi bài toán, nêu ra các giải pháp, phân tích rõ ưu nhược điểm của các giải pháp. Chương 4: Giới thiệu một số hệ thống tiền điện tử của các nước trên thế giới và demo hệ thống tiền điện tử KV. Cuối cùng là kết luận lại những điểm chính, những đóng góp chính của khóa luận, đồng thời chỉ ra những điểm cần khắc phục và định hướng phát triển tiếp theo cho khóa luận. Chương 1. CÁC KHÁI NIỆM CƠ BẢN MỘT SỐ KHÁI NIỆM TOÁN HỌC. Khái niệm trong số học. Số nguyên tố và số nguyên tố cùng nhau. 1/. Khái niệm. Số nguyên tố là số chỉ chia hết cho 1 và chính nó. Hai số m và 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 2/. Ví dụ. 2, 3, 5, 7, 11…là những số nguyên tố. 15 và 16 là hai số nguyên tố cùng nhau. Đồng dư thức. 1/. Khái niệm. Cho các số nguyên a, b, m (m>0). Ta nói rằng a và b “đồng dư” với nhau theo modulo m, nếu chia a và b cho m, ta nhận được cùng một số dư. Ký hiệu: a ≡ b (mod m) 2/. Ví dụ. 17 ≡ 5 (mod 3) vì chia 17 và 5 cho 3, được cùng số dư 2. Nhận xét: Các mệnh đề sau đây là tương đương. a ≡ b (mod m) m \ (a - b) Tồn tại số nguyên t sao cho a = b + mt 3/. Các tính chất của quan hệ “đồng dư”. Với mọi số nguyên dương m ta có: a ≡ a ( mod m) với mọi a Z; (tính chất phản xạ) a ≡ b ( mod m) thì b ≡ a ( mod m); (tính chất đối xứng) a ≡ b ( mod m) và b ≡ c ( mod m) thì a ≡ c ( mod m); (tính chất bắc cầu) Tổng hay hiệu các đồng dư: (a+b) (mod n) ≡ [(a mod n) + (b mod n)] (mod n) (a-b) (mod n) ≡ [(a mod n) - (b mod n)] (mod n) Tích các đồng dư: (a*b) (mod n) ≡ [(a mod n) * (b mod n)] (mod n) 4/. Các lớp thặng dư: Quan hệ “đồng dư” theo modulo m trên tập Z (tập các số nguyên) là một quan hệ tương đương (vì có tính chất phản xạ, đối xứng, bắc cầu), do đó nó tạo ra trên tập Z một phân hoạch gồm các lớp tương đương: hai số nguyên thuộc cùng một lớp tương đương khi và chỉ khi chúng có cùng một số dư khi chia cho m. Mỗi lớp tương đương đại diện bởi một số trong tập Zm ={0, 1,…, m-1} là số dư khi chia các số trong lớp cho m, ký hiệu một lớp được đại diện bởi số a là [a]m . Như vậy [a]m = [b]m Û a ≡ b (mod m) Vì vậy ta có thể đồng nhất Zm với tập các lớp tương đương theo modulo m. Zm ={0, 1, 2,…, m-1} được gọi là tập các “thặng dư đầy đủ” theo modulo m. Mọi số nguyên bất kỳ đều có thể tìm được trong Zm một số đồng dư với mình theo modulo m. Phần tử nghịch đảo. 1/. Khái niệm. Cho a Î Zn , nếu tồn tại b Î Zn sao cho a b º 1 (mod n), ta nói b là phần tử nghịch đảo của a trong Zn và ký hiệu a -1. Một phần tử có phần tử nghịch đảo, gọi là khả nghịch. 2/. Định lý. UCLN (a, n) = 1 Û Phần tử a Î Zn có phần tử nghịch đảo. 3/. Tính chất.  Cho a, b Î Zn, phép chia của a cho b theo modulo n là tích của a và b-1 theo modulo n, và chỉ được xác định khi b có nghịch đảo theo modulo n. Cho a Î Zn. Khả nghịch khi và chỉ khi gcd(a,n) = 1 Giả sử d = gcd(a,n). Phương trình đồng dư ax ≡ b mod n có nghiệm x khi và chỉ khi d chia hết cho b, trong trường hợp các nghiệm d nằm trong khoảng 0 đến n-1 thì các nghiệm đồng dư theo modulo n/d. Khái niệm Logarit rời rạc. Cho p là số nguyên tố, g là phần tử nguyên thuỷ của Zp , b Î “Logarit rời rạc” chính là việc giải phương trình x = log g b (mod p) với ẩn x. Hay phải tìm số x duy nhất sao cho: g x º b (mod p). Khái niệm trong đại số. Khái niệm nhóm. 1/. Khái niệm. Nhóm là một bộ (G, *), trong đó G ¹ Æ, * là phép toán hai ngôi trên G thoả mãn ba tính chất sau: + Phép toán có tính kết hợp: (x*y)* z = x*(y*z) với mọi x, y, z Î G. + Có phần tử phần tử trung lập e Î G: x*e = e*x = x với mọi x Î G. + Với mọi xÎ G, có phần tử nghịch đảo x’Î G: x * x’ = x’ * x = e. Cấp của nhóm G được hiểu là số phần tử của nhóm, ký hiệu là . Cấp của nhóm có thể là ¥ nếu G có vô hạn phần tử. Nhóm Abel là nhóm (G, *), trong đó phép toán hai ngôi * có tính giao hoán. Tính chất: Nếu a * b = a * c, thì b = c. Nếu a * c = b * c, thì a = b. 2/. Ví dụ. + Tập hợp các số nguyên Z cùng với phép cộng (+) thông thường là nhóm giao hoán, có phần tử đơn vị là số 0, gọi là nhóm cộng các số nguyên. + Tập Q* các số hữu tỷ khác 0 (hay tập R* các số thực khác 0), cùng với phép nhân (*) thông thường là nhóm giao hoán. Gọi là nhóm nhân các số hữu tỷ (số thực) khác 0. + Tập các vectơ trong không gian với phép toán cộng vectơ là nhóm giao hoán. Nhóm con của nhóm (G,*). 1/. Khái niệm. Nhóm con của G là tập S Ì G, S ¹ f, và thỏa mãn các tính chất sau: + Phần tử trung lập e của G nằm trong S. + S khép kín đối với phép tính (*) trong G, tức là x*y Î S với mọi x, yÎ S. + S khép kín đối với phép lấy nghịch đảo trong G, tức x -1 Î S với mọi xÎS. 2/. Ví dụ. Xét nhóm cộng theo modulo 6 các số tự nhiên nhỏ hơn 6. Z6= {0, 1, 2, 3, 4, 5}  Ta có các nhóm con sinh bởi các phần tử 2,3 là: = {0, 2, 4} ={0, 3}  Nhóm Cyclic. 1/. Khái niệm. Nhóm (G, *) được gọi là Nhóm Cyclic nếu nó được sinh ra bởi một trong các phần tử của nó. Tức là có phần tử g Î G mà với mỗi a Î G, đều tồn tại số n Î N để g n = g * g * … * g = a. (Chú ý g * g * … * g là g * g với n lần). Khi đó g được gọi là phần tử sinh hay phần tử nguyên thuỷ của nhóm G. Nói cách khác: G được gọi là Nhóm Cyclic nếu tồn tại g Î G sao cho mọi phần tử trong G đều là một luỹ thừa nguyên nào đó của g. 2/. Ví dụ. Nhóm (Z + , +) gồm các số nguyên dương là Cyclic với phần tử sinh g = 1. Khái niệm độ phức tạp. Khái niệm Thuật toán. 1/. Khái niệm Bài toán. Bài toán được diễn đạt bằng hai phần: Input: Các dữ liệu vào của bài toán. Output: Các dữ liệu ra của bài toán (kết quả). Không mất tính chất tổng quát, giả thiết các dữ liệu trong bài toán đều là số nguyên. 2/. Khái niệm Thuật toán. ”Thuật toán” được hiểu đơn giản là cách thức để giải một bài toán. Cũng có thể được hiểu bằng hai quan niệm: Trực giác hay Hình thức như sau: Quan niệm trực giác về ”Thuật toán”. Một cách trực giác, Thuật toán được hiểu là một dãy hữu hạn các qui tắc (Chỉ thị, mệnh lệnh) mô tả một quá trình tính toán, để từ dữ liệu đã cho (Input) ta nhận được kết quả (Output) của bài toán. Quan niệm toán học về ”Thuật toán”. Một cách hình thức, người ta quan niệm thuật toán là một máy Turing. Thuật toán được chia thành hai loại: Đơn định và không đơn định. Thuật toán đơn định (Deterministic): Là thuật toán mà kết quả của mọi phép toán đều được xác định duy nhất. Thuật toán không đơn định (NonDeterministic): Là thuật toán có ít nhất một phép toán mà kết quả của nó là không duy nhất. 3/. Hai mô hình tính toán Hai quan niệm về thuật toán ứng với hai mô hình tính toán. Ứng với hai mô hình tính toán có hai cách biểu diễn thuật toán: Mô hình ứng dụng: Thuật toán được biểu diễn bằng ngôn ngữ tựa Algol. + Đơn vị nhớ: Một ô nhớ chứa trọn vẹn một dữ liệu. + Đơn vị thời gian: Thời gian để thực hiện một phép tính cơ bản trong số học hay logic như cộng, trừ, nhân, chia, ... Mô hình lý thuyết: Thuật toán được biểu diễn bằng ngôn ngữ máy Turing. + Đơn vị nhớ: 1 ô nhớ chứa một tín hiệu. Với mã nhị phân thì đơn vị nhớ là 1 bit. + Đơn vị thời gian: Thời gian để thực hiện một bước chuyển hình trạng. Khái niệm độ phức tạp của Thuật toán. 1/. Chi phí của thuật toán (Tính theo một bộ dữ liệu vào): Chi phí phải trả cho một quá trình tính toán gồm chi phí về thời gian và bộ nhớ. Chi phí thời gian của một quá trình tính toán là thời gian cần thiết để thực hiện quá trình tính toán đó. Với thuật toán tựa Algol: Chi phí thời gian là số các phép tính cơ bản thực hiện trong quá trình tính toán . Chi phí bộ nhớ của một quá trình tính toán là số ô nhớ cần thiết để thực hiện một quá trình tính toán. Gọi A là một thuật toán, e là dữ liệu vào của bài toán đã được mã hoá bằng cách nào đó. Thuật toán A tính trên dữ liệu vào e phải trả một giá nhất định. Ta ký hiệu: t A (e) là giá thời gian và l A(e) là giá bộ nhớ. 2/. Độ phức tạp về bộ nhớ (Trong trường hợp xấu nhất): LA(n) = max{ l A (e), với |e| £ n}, n là “kích thước” đầu vào của thuật toán. 3). Độ phức tạp thời gian (Trong trường hợp xấu nhất): TA(n) = max { t A (e), với |e| £ n}. 4). Độ phức tạp tiệm cận: Độ phức tạp PT(n) được gọi là tiệm cận tới hàm f(n), ký hiệu O(f(n)) nếu $ các số n0 , c mà PT(n) £ c.f(n) , "n ³ n0. 5). Độ phức tạp đa thức: Độ phức tạp PT(n) được gọi đa thức, nếu nó tiệm cận tới đa thức p(n). 6). Thuật toán đa thức: Thuật toán được gọi là đa thức, nếu độ phức tạp về thời gian (trong trường hợp xấu nhất) của nó là đa thức. - Nói cách khác: + Thuật toán thời gian đa thức là thuật toán có độ phức tạp thời gian O(n t ), trong đó t là hằng số. + Thuật toán thời gian hàm mũ có độ phức tạp thời gian O(t f (n) ), trong đó t là hằng số và f(n) là đa thức của n. - Thời gian chạy của các lớp thuật toán khác nhau: Độ phức tạp Số phép tính(n=106) Thời gian(106ptính/s) O(1) 1 1micro giây O(n) 106 1 giây O(n2) 1012 11,6 ngày O(n3) 1018 32 000 năm O(2n) 10301 030 10301 006 tuổi của vũ trụ Mà HÓA. Khái niệm về mã hóa. * Mã hóa là quá trình chuyển thông tin có thể đọc được (gọi là Bản rõ) thành thông tin “khó” thể đọc được theo cách thông thường (gọi là Bản mã). Đó là một trong những kỹ thuật để bảo mật thông tin. * Giải mã là quá trình chuyển thông tin ngược lạI: từ Bản mã thành Bản rõ. * Thuật toán mã hoá hay giải mã là thủ tục tính toán để thực hiện mã hóa hay giải mã. * Khóa mã hóa là một giá trị làm cho thuật toán mã hoá thực hiện theo cách riêng biệt và sinh ra bản rõ riêng. Thông thường khoá càng lớn thì bản mã càng an toàn. Phạm vi các giá trị có thể có của khoá được gọi là Không gian khoá. * Hệ mã hóa là tập các thuật toán, các khóa nhằm che giấu thông tin, cũng như làm cho rõ nó. Phân loại: Phân loại mã hóa theo đặc trưng của khóa Có 2 loại: + Hệ mã hóa khóa đối xứng + Hệ mã hóa khóa công khai Hệ mã hóa. Việc mã hoá phải theo quy tắc nhất định, quy tắc đó gọi là Hệ mã hóa. Hệ mã hóa được định nghĩa là bộ năm (P, C, K, E, D), trong đó: P là tập hữu hạn các bản rõ có thể. C là tập hữu hạn các bản mã có thể. K là tập hữu hạn các khoá 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 khóa lập mã ke Î K, có hàm lập mã eke Î E, eke: P® C, Với khóa giải mã kd Î K, có hàm giải mã dkd Î D, dkd: C® P, sao cho dkd (eke (x)) = x, " x Î P. Ở đây x được gọi là bản rõ, eke (x) được gọi là bản mã. Mã hóa và giải mã. Người gửi G ® ® eke (T) ® ® Người nhận N (có khóa lập mã ke) (có khóa giải mã kd) ­ Tin tặc có thể trộm bản mã eke (T) 1.2.4. Hệ mã hóa khóa công khai RSA. 1). Sơ đồ (Rivest, Shamir, Adleman đề xuất năm 1977) - Tạo cặp khóa (bí mật, công khai) (a, b) : Chọn bí mật số nguyên tố lớn p, q, tính n = p * q, công khai n, đặt P = C = Zn Tính bí mật f(n) = (p-1).(q-1). Chọn khóa công khai b < f(n), nguyên tố với f(n). Khóa bí mật a là phần tử nghịch đảo của b theo mod f(n): a*b º 1 mod f(n). Tập cặp khóa (bí mật, công khai) K = {(a, b)/ a, b Î Zn , a*b º 1 mod f(n)}. Với Bản rõ x Î P và Bản mã y Î C, định nghĩa: Hàm Mã hoá: y = ek (x) = x b mod n Hàm Giải mã: x = dk (y) = y a mod n 2). Ví dụ . Bản rõ chữ: R E N A I S S A N C E *Sinh khóa: Chọn bí mật số nguyên tố p= 53, q= 61, tính n = p * q = 3233, công khai n. Đặt P = C = Zn , tính bí mật f(n) = (p-1). (q-1) = 52 * 60 = 3120. + Chọn khóa công khai b là nguyên tố với f(n), tức là ƯCLN(b, f(n)) = 1, ví dụ chọn b = 71. + Khóa bí mật a là phần tử nghịch đảo của b theo mod f(n): a*b º 1(mod f(n)). Từ a*b º 1 (mod f(n)), ta nhận được khóa bí mật a = 791. * Bản rõ số: R E N A I S S A N C E (Dấu cách) 17 04 13 00 08 18 18 00 13 02 04 26 m1 m2 m3 m4 m5 m6 Theo phép lập mã: ci = mi b mod n = mi 71 mod 3233, ta nhận được: * Bản mã số: c1 c2 c3 c4 c5 c6 3106 0100 0931 2691 1984 2927 Theo phép giải mã: mi = ci a mod n = ci 791 mod 3233, ta nhận lại bản rõ. 3). Độ an toàn - Hệ mã hóa RSA là tất định, tức là với một bản rõ x và một khóa bí mật a, thì chỉ có một bản mã y. - Hệ mật RSA an toàn, khi giữ được bí mật khoá giải mã a, p, q, f(n). Nếu biết được p và q, thì thám mã dễ dàng tính được f(n) = (q-1)*(p-1). Nếu biết được f(n), thì thám mã sẽ tính được a theo thuật toán Euclide mở rộng. Nhưng phân tích n thành tích của p và q là bài toán “khó”. Độ an toàn của Hệ mật RSA dựa vào khả năng giải bài toán phân tích số nguyên dương n thành tích của 2 số nguyên tố lớn p và q. CHỮ KÝ. Giới thiệu về chữ ký. Ký số là phương pháp ký một thông điệp lưu dưới dạng “số”(điện tử).Thông điệp được ký và chữ ký cùng truyền trên mạng tới người nhận. Người ta tạo ra “chữ ký số” (chữ ký điện tử) trên “tài liệu số” giống như tạo ra “bản mã” của tài liệu với “khóa lập mã”. Như vậy “ký số” trên “tài liệu số” là “ký” trên từng bit tài liệu. Kẻ gian khó thể giả mạo “chữ ký số” nếu nó không biết “khóa lập mã”. Để kiểm tra một “chữ ký số” thuộc về một “tài liệu số”, người ta giải mã “chữ ký số” bằng “khóa giải mã”., và so sánh với tài liệu gốc. Ngoài ý nghĩa để chứng thực nguồn gốc hay hiệu lực của các tài liệu số hóa, Mặt mạnh của “chữ ký số” hơn “chữ ký tay” là ở chỗ người ta có thể “ký” vào tài liệu từ rất xa trên mạng công khai. Hơn thế nữa, có thể “ký” bằng các thiết bị cầm tay (ví dụ: điện thoại di động) tại khắp mọi nơi miễn là kết nối được vào mạng. Đỡ tốn bao thời gian, sức lực, chi phí, … “Ký số” thực hiện trên từng bit tài liệu, nên độ dài của “chữ ký số” ít nhất cũng bằng độ dài của tài liệu. Do đó thay vì ký trên tài liệu dài, người ta thường dùng “hàm băm” để tạo “đại diện” cho tài liệu, sau đó mớI “Ký số” lên “đại diện” này 1). Sơ đồ chữ ký số Sơ đồ chữ ký là bộ năm (P, A, K, S, V ), trong đó: P là tập hữu hạn các văn bản có thể. A là tập hữu hạn các chữ ký có thể. K là tập hữu hạn các khoá có thể. S là tập các thuật toán ký. V là tập các thuật toán kiểm thử. Với mỗi khóa k Î K có: Thuật toán ký Sig k Î S, Sig k : P® A, Thuật toán kiểm tra chữ ký Ver k Î V, Ver k : P ´ A® {đúng, sai}, thoả mãn điều kiện sau với mọi x Î P, y Î A Đúng, nếu y = Sig k (x) Ver k (x, y) = Sai, nếu y ¹ Sig k (x) Một số sơ đồ chữ ký . 1.3.2.1. Sơ đồ ký số RSA. 1/. Sơ đồ (Đề xuất năm 1978) *Tạo cặp khóa (bí mật, công khai) (a, b) : Chọn bí mật số nguyên tố lớn p, q, tính n = p * q, công khai n, đặt P = C = Zn Tính bí mật f(n) = (p-1).(q-1). Chọn khóa công khai b < f(n), nguyên tố với f(n) Khóa bí mật a là phần tử nghịch đảo của b theo mod f(n): a*b º 1 (mod f(n). Tập cặp khóa (bí mật, công khai) K = {(a, b)/ a, b Î Zn , a*b º 1 (mod f(n))}. * Ký số: Chữ ký trên x Î P là y = Sig k (x) = x a (mod n), y Î A. (R1) * Kiểm tra chữ ký: Verk (x, y) = đúng Û x º y b (mod n). (R2) Sơ đồ ký số Schnoor. 1/. 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. c = H (m, gs * ys) Chữ ký mù. Chữ ký mù được Chaum giới thiệu vào năm 1983. Mục đíchc của chữ ký mù là làm cho người ký trên văn bản không biết nội dung văn bản. Ứng dụng trong hệ thống tiền điện tử: Mua bán hàng trên mạng. Giả sử Alice muốn mua một quyến sách B giá 100$ từ Bob. Giả sử cả hai người đều sử dụng dịch vụ của một ngân hàng. Giao thức giao dịch sẽ gồm 3 giai đoạn. Rút tiền: Alice tạo tiền điện tử C (với những thông tin : số seri, giá trị của C, ví dụ là 100$) Alice yêu cầu ngân hàng ký mù lên C. Giao thức ký thành công, ngân hàng sẽ trừ 100$ trong tài khoản của Alice. Tiêu tiền: Alice đưa cho Bob tiền C đã có chữ ký của ngân hàng, và yêu cầu Bob đưa cho quyển sách B. Bob kiểm tra chữ ký trên C. Nếu không hợp lệ, Bob sẽ dừng ngay giao dịch. Gửi tiền: 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 hợp lệ, ngân hàng kiểm tra xem C đã được tiêu trước đó hay chưa. + Nếu C chưa được tiêu thì ngân hàng cộng thêm C 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 B cho Alice. Bob khó thể biết rằng C là từ tài khoản nào. Khi Bob gửi C thì ngân hàng cũng “khó” thể biết rằng C được lấy ra từ tài khoản của Alice vì nó đã được ký mù. Như vậy tiền điện tử C không lưu lại dấu vết của những ai đã tiêu nó. 1/. Sơ đồ chữ ký mù RSA: Yêu cầu bài toán là: A muốn lấy chữ ký của B trên x nhưng không muốn 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, tính n = p*q + Tính f(n) = (p-1).(q-1), ab ≡ 1 mod f(n) + 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 xóa mù y bằng thuật toán: UnBlind(y) = UnBlind( Sign( Blind( x))) = y/r mod n = sign(x) Ví dụ: Alice cần Bob ký lên thông điệp x = 8. Nếu theo chữ ký RSA, thì kết quả thông điệp sau khi ký là : Sign( x=8) = xa mod n = 87 mod 15 = 2 = y Nhưng Alice muốn Bob ký mù lên x. Bước 1(làm mù): Alice tiến hành làm mù x = 8 Blind (x) = x* rb mod n= 8 * 11 7 (mod 15) = 8 * 19487171 (mod 15) = 15589368 mod 15 = 13 = z. Với r = 11 là số ngẫu nhiên Î Z15 ( thoa: gcd(11, 15) = 1) Bước 2: Tiến hành ký trên z. y = Sign(z) = za mod n = 137 (mod 15) = 7 Bước 3: Tiến hành xóa mù: UnBlind(y) = y/r (mod n) =7/11 (mod 15) = 7 * 11-1 mod 15 = 2 2/. Sơ đồ chữ ký mù Schnorr: Sơ đồ chữ ký Schnorr được xây dựng bằng cách mù hóa sơ đồ ký số Schnorr. Giao thức thực hiện các bước sau: Chuẩn bị: Khóa bí mật của ngân hàng là x, khóa công khai là y = g x mod n Alice cần ký lên đồng tiền Cm Ký: Bước 1: Ngân hàng lấy ngẫu nhiên r Î Zq Tính t = gr và gửi t cho Alice Bước 2: Alice lấy ngẫu nhiên γ, δ Î Zq Tính t’ = t gγ yδ mod n Tinh c = H (Cm, t’) Tính c’ = c- δ mod q = H(Cm,t’) – δ mod q. Gửi c’ cho ngân hàng. Bước 3: Ngân hàng tính s = c’ – r x mod q Gửi s cho Alice. Bước 4: Tính s’ = s + γ mod q. Chữ ký là (c, s’) Kiểm tra chữ ký: Chữ ký (c, s) là hợp lệ nếu: c = H(Cm, t’) = H(Cm. gs * yc). 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. Vì vậy, sơ đồ chữ ký này được gọi là sơ đồ chữ ký dùng một lần. Chữ ký không thể phủ định. Trong phần trước ta đã trình bày một số sơ đồ chữ ký điện tử. Trong các sơ đồ đó, việc kiểm thử tính đúng đắn của chữ ký là do người nhận thực hiện. Nhằm tránh việc nhân bản chữ ký để sử dụng nhiều lần, tốt nhất là để người gửi tham gia trực tiếp vào việc kiểm thử chữ ký. Điều đó được thực hiện bằng một giao thức kiểm thử, dưới dạng một giao thức mời hỏi và trả lời. Giả sử tài liệu cùng chữ ký từ G gửi đến N. Khi N yêu cầu G cùng kiểm thử chữ ký, thì một vấn đề nảy sinh là làm sao để ngăn cản G chối bỏ một chữ ký mà anh ta đã ký, G có thể tuyên bố rằng chữ ký đó là giả mạo ? Để giải quyết tình huống trên, cần có thêm giao thức chối bỏ, bằng giao thức này, G có thể chứng minh một chữ ký là giả mạo. Nếu G từ chối tham gia vào giao thức đó, thì có thể xem rằng G không chứng minh được chữ ký đó là giả mạo. Như vậy sơ đồ chữ ký không phủ định được gồm 3 phần: một thuật toán ký, một giao thức kiểm thử, và một giao thức chối bỏ. 1/. Sơ đồ. (Chaum - van Antverpen). Chuẩn bị các tham số: Chọn số nguyên tố p sao cho bài toán log rời rạc trong Zp là khó. p = 2*q+1, q cũng là số nguyên tố. Gọi P là nhóm nhân con của Zp* theo q (P gồm các thặng dư bậc hai theo mod p). Chọn phần tử sinh g của nhóm P cấp q. Đặt P = A = P, K = {(p, g, a, h): a Î Z q*, h º g a mod p } Thuật toán ký: Dùng khoá bí mật k’ = a để ký lên x: Chữ ký là y = Sig k’ (x) = x a mod p. Giao thức kiểm thử: Dùng khoá công khai k” = (p, g, h). Với x, y Î P, người nhận N cùng người gửi G thực hiện giao thức kiểm thử: 1/. N chọn ngẫu nhiên e1, e2 Î Zq* 2/. N tính c = y e1 h e2 mod p, và gửi cho G. 3/. G tính và gửi cho N. 4/. N chấp nhận y là chữ ký đúng, nếu d º x e1 g e2 mod p * Giao thức chối bỏ: 1/. N chọn ngẫu nhiên e1, e2 Î Zq* 2/. N tính c = y e1 h e2 mod p, và gửi cho G. 3/. G tính và gửi cho N. 4/. N thử điều kiện d ¹ x e1 g e2 (mod p). 5/. N chọn ngẫu nhiên f1, f2 Î Zq*. 6/. N tính và gửi cho G. 7/. G tính và gửi cho N. 8/. N thử điều kiện D ¹ x f1 g f2 (mod p). 9/. N kết luận y là chữ ký giả mạo nếu: (thay a bằng g). Ví dụ Ký trên x = 229 Chuẩn bị các tham số: Chọn số nguyên tố p = 467 = 2 * q + 1, q = 233 cũng là số nguyên tố. Chọn phần tử sinh của nhóm P là g = 4, (P là nhóm nhân con cấp q của Zp*). Đặt P = A = P, K = {(p, g, a, h): a Î Z q*, h º g a mod p } Chọn khóa mật a = 121. Khóa công khai h º g a mod p = 4121 mod 467 = 422. Thuật toán ký: Dùng khoá bí mật k’ = a để ký lên x = 229: Chữ ký là y = Sig k’ (x) = x a mod p = 229121 mod 467 = 9. * Giao thức kiểm thử: Dùng khoá công khai k” = (p, g, h) = (467, 4, 422). 1/. N chọn ngẫu nhiên e1 = 48, e2 = 213 Î Zq* 2/. N tính c = y e1 h e2 mod p = 116 và gửi cho G. 3/. G tính = 235 và gửi cho N. 4/. N chấp nhận y là chữ ký đúng, nếu d º x e1 g e2 mod p N thử điều kiện d º x e1 g e2 mod p. Rõ ràng 235 º 229 48 * 4 213 (mod 467). N chấp nhận y = 9 đúng là chữ ký của G trên x = 229. * Giao thức chối bỏ: Giả sử G gửi tài liệu x = 226 với chữ ký y = 183. Giao thức chối bỏ thực hiện: 1/. N chọn ngẫu nhiên e1 = 47, e2 = 137 Î Zq* 2/. N tính c = y e1 h e2 mod p = 306, và gửi cho G. 3/. G tính = 184, và gửi cho N. 4/. N thử điều kiện d ¹ x e1 g e2 (mod p). Điều kiện trên không đúng vì 184 ¹ 226 47 * 4 137 º 145 mod 467. N lại tiếp tục thực hiện bước 5 của giao thức. 5/. N chọn ngẫu nhiên f1 = 225, f2 = 19 Î Zq*. 6/. N tính = 348, và gửi cho G. 7/. G tính = 426, và gửi cho N. 8/. N thử điều kiện D ¹ x f1 g f2 (mod p). D = 426 trong khi x f1 g f2 (mod p) = 226 225 * 4 19 º 295 mod 467. Điều kiện 8 là đúng, nên N thực hiện bước 9: 9/. N kết luận y là chữ ký giả mạo nếu: (thay a bằng g). N tính giá trị của 2 vế đồng dư º (d* a -e2)f1 º (184 * 4 -137)225 º 79 mod 467 (D* a -f2)e1 º (426 * 4 -19)47 º 79 mod 467 Hai giá trị đó bằng nhau. Kết luận chữ ký y là giả mạo 1.4. CHIA SẺ BÍ MẬT CÓ THỂ XÁC MINH. Sơ đồ chia sẻ bí mật. Các sơ đồ chia sẻ bí mật (Secret Sharing Schemes - SSS), được phát minh một cách độc lập bởi Blakley và Shamir. Một trong những mục đích của việc chia sẻ bí mật là để quản lý khóa an toàn. Ý tưởng cơ bản của việc chia sẻ bí mật là phân chia một khóa bí mật thành các mảnh và phân phối các mảnh này cho những người khác nhau, sao cho một nhóm con của những người này có thể kết hợp với nhau để tìm ra khóa ban đầu. Sơ đồ chia sẻ bí mật gọi là lược đồ (k ,n) với k, n là các số nguyên. Trong sơ đồ, có một người quản lý (Giả sủ là Alice) và n thành viên. Alice phân chia bí mật thành n phần và đưa cho mỗi thành viên một phần sao cho bất kỳ k thành phần nào được kết hợp với nhau cũng có thể tìm ra khóa bí mật, nhưng bất kỳ (k-1) thành phần nào kết hợp với nhau cũng không thể tìm ra khóa bí mật. Các mảnh được gọi là share hoặc shadow (dấu vết). Các giá trị khác nhau cho k và n phản ánh sự tương quan giữa tính an toàn và tính tin cậy của hệ thống. Một sơ đồ chia sẻ bí mật là hoàn hảo nếu bất kỳ nhóm nào với tối đa (k-1) thành viên trong số n thành viên cũng không thể tìm được khóa mật. Giá trị của k được gọi là ngưỡng. các giá trị f(i) (1 ≤ i ≤ n) cho các thành viên, trừ f(0). Như vậy, k thành viên kết hợp lại với nhau có thể tìm ra được bí mật vì khi đó chúng ta có một hệ k phương trình k ẩn. Ưu điểm của sơ đồ này là tính hiệu quả và tính an toàn mà không cần bổ sung và Alice có thể thêm vào sơ đồ một thành viên mới. Sơ đồ chia sẻ bí mật có thể xác minh. Sơ đồ chia sẻ bí mật có thể xác minh ( Veriffy Secret Sharing - VSS) hướng đến giải quyết vẫn đề nêu trên. Có nhiều đề xuất về sơ đồ VSS, ở đây trình bày sơ đồ của Okamoto và Yamamoto. Gọi s là giá trị bí mật, k là ngưỡng, n là số thành viên. Alice chọn đa thức ngẫu nhiên: f(x) = (s + a1x + a2x2 + ….+ ak-1xk-1) mod q Alice phân phối f(j) cho thành viên j, 1 ≤ j ≤ n Alice chọn p sao cho q|(p-1), phần tử sinh ngẫu nhiên g Î Zp* cấp q và tính: c0 = gs mod p c1 = ga1 mod p . ........ ck-1 = gak-1 mod p Thành viên nào cũng có thể kiểm tra việc phân phối của Alice có trung thực hay không Ver = true ó gf(j) = c0 c1j c2j2 …..ck-1 jk-1 Vì: c0 c1j c2j2 …..ck-1 jk-1 = gs ga1j …..gak-1 jk-1 = gf(j) HÀM BĂM. 1.5.1. Hàm băm h là hàm một chiều (One-way Hash) với các đặc tính sau: 1).Với tài liệu đầu vào (bản tin gốc) x, chỉ thu được giá trị băm duy nhất z = h(x). 2). Nếu dữ liệu trong bản tin x bị thay đổi hay bị xóa để thành bản tin x’, thì giá trị băm h(x’) ¹ h(x). Dù chỉ là một sự thay đổi nhỏ, ví dụ chỉ thay đổi 1 bit dữ liệu của bản tin gốc x, thì giá trị băm h(x) của nó cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp khác nhau, thì giá trị băm của chúng cũng khác nhau. 3). Nội dung của bản tin gốc “khó” thể suy ra từ giá trị hàm băm của nó. Nghĩa là: với thông điệp x thì “dễ ” tính được z = h(x), nhưng lại “khó” tính ngược lại được x nếu chỉ biết giá trị băm h(x) (kể cả khi biết hàm băm h). 1.5.2. Tính chất của hàm băm. 1). Hàm băm không va chạm yếu. Hàm băm h được gọi là không va chạm yếu, nếu cho trước bức điện x, “khó” thể tính toán để tìm ra bức điện x’ ¹ x mà h(x’) = h(x). 2). Hàm băm không va chạm mạnh. Hàm băm h được gọi là không va chạm mạnh nếu “khó” thể tính toán để tìm ra hai bức thông điệp khác nhau x’ và x (x’x) mà có h(x’) = h(x). 3) Hàm băm một chiều. Hàm băm h được gọi là hàm một chiều nếu khi cho trước một bản tóm lược thông báo z thì “khó thể” tính toán để tìm ra thông điệp ban đầu x sao cho h(x) = z. Chương 2: GIỚI THIỆU VỀ TIỀN ĐIỆN TỬ KHÁI NIỆM THANH TOÁN ĐIỆN TỬ. Khâu quan trọng nhất của Thương mại điện tử (TMĐT) là việc 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à người mua nhận được những cái gì cần mua và người bán nhận được số tiền thanh toán. Thanh toán là một trong những vấn đề phức tạp nhất của TMĐT. Hoạt động TMĐT chỉ phát huy được tính ưu việt của nó khi áp dụng được hình thức thanh toán điện tử (TTĐT). TTĐT là việc thanh toán tiền thông qua các thông điệp điện tử (Electronic message) thay cho việc thanh toán bằng tiền Sec hay tiền mặt. Bản chất của mô hình TTĐT cũng là mô phỏng lại mô hình thanh toán truyền thống, nhưng các thủ tục giao dịch, các thao tác xử lý dữ liệu, quá trình chuyển tiền… tất cả đều được thực hiện thông qua mạng máy tính, được nối bằng các giao thức chuyên dụng. 2.1.1. Các mô hình thanh toán điện tử. Hệ thống TTĐT thực hiện thanh toán cho khách hàng theo một số cách, mà tiền mặt và séc thông thường không thể làm được. Hệ thống thanh toán cũng cung cấp khả năng thanh toán hàng hóa và dịch vụ qua thời gian, bằng cách cho phép người mua trả tiền ngay, trả tiền sau hay trả tiền trước. 2.1.1.1. Mô hình trả tiền sau. Trong mô hình này, thời điểm tiền mặt được rút ra khỏi tài khoản bên mua để chuyển sang bên bán, xảy ra ngay (pay-now) hoặc sau (pay-later) giao dịch mua bán. Hoạt động của hệ thống dựa trên nguyên tắc Tín dụng (Credit crendental). Nó còn được gọi là mô hình mô phỏng Séc (Cheque-like model). 2.1.1.2. Mô hình trả tiền trước. Trong mô hình này, khách hàng liên hệ với ngân hàng (hay công ty môi giới – Broker) để có được chứng từ do ngân hàng phát hành. Chứng từ hay Đồng tiền số này mang dấu ấn của ngân hàng, được đảm bảo bởi ngân hàng và do đó có thể dùng ở bất cứ nơi nào đã có xác lập hệ thống thanh toán với ngân hàng này. Để đổi lấy chứng từ của ngân hàng, tài khoản của khách hàng bị triết khấu đi tương ứng với giá trị của chứng từ đó. Như vậy, khách hàng đã thực sự trả tiền trước khi sử dụng chứng từ này để mua hàng và thanh toán.Chứng từ ở đây không phải do khách hàng tạo ra, không phải dành cho một cuộc mua bán cụ thể, mà do ngân hàng phát hành và có thể sử dụng vào mọi mục đích thanh toán. Vì nó có thể sử dụng giống như tiền mặt, do đó mô hình này còn được gọi là mô hình mô phỏng tiền mặt (Cash-like model). Khi có người mua hàng tại cửa hàng và thanh toán bằng chứng từ như trên, cửa hàng sẽ kiểm tra tính hợp lệ của chúng, dựa trên những thông tin đặc biệt do ngân hàng tạo ra trên đó. Cửa hàng có thể chọn một trong hai cách: Hoặc là liên hệ với ngân hàng để chuyển vào tài khoản của mình số tiền trước khi giao hàng (deposit-now), hoặc là chấp nhận và liên hệ chuyển tiền sau vào thời gian thích hợp (deposit-later). Trường hợp riêng của mô hình mô phỏng tiền mặt là mô hình “tiền điện tử” (Electronic Cash). Hiện tại hầu hết các dịch vụ mua bán hàng hoá trên mạng đều sử dụng hình thức thanh toán bằng thẻ tín dụng (Credit card). Người sử dụng cần nhập vào các thông tin: tên người sử dụng, mã số thẻ, ngày hết hạn của thẻ. Nhưng vì thẻ tín dụng được dùng phổ biến cho các thanh toán khác nhau, nên những thông tin trên có nhiều người biết. Thực tế hiện nay, các gian lận về thẻ trên Internet chiếm 6-7% tổng số các giao dịch thẻ ở các nước châu Âu, tỷ lệ này ở châu Á là 10%. Tại Việt nam, dịch vụ thẻ tín dụng mới sử dụng cuối năm 1996, nhưng đến nay, tỷ lệ các giao dịch gian lận trên tổng số các giao dịch là hơn 10%. Trên thế giới hiện nay, nhu cầu về thương mại điện tử rất phổ biến, nhưng các vấn đề hạ tầng trong thanh toán điện tử vẫn chưa được giải quyết tương xứng và đáp ứng được các đòi hỏi đặt ra. Việc nghiên cứu xây dựng các hệ thống thanh toán điện tử để đảm bảo an toàn thông tin trong các dịch vụ thương mại điện tử là một hướng nghiên cứu rất cần thiết hiện nay. Xây dựng các hệ thống thanh toán điện tử về mặt kỹ thuật chính là ứng dụng các thành tựu của lý thuyết mật mã. Các mô hình thanh toán sử dụng các giao thức mật mã được xây dựng để đảm bảo an toàn cho việc giao dịch thông tin giữa các bên tham gia. KHÁI NIỆM TIỀN ĐIỆN TỬ. Tiền điện tử (E-money, E-currency, Internet money, Digital money, Digital cash) là thuật từ vẫn còn mơ hồ và chưa được định nghĩa đầy đủ. Tuy nhiên có thể hiểu Tiền điện tử là loại tiền trao đổi theo phương pháp “điện tử”, liên quan đến mạng máy tính và những hệ thống chứa giá trị ở dạng số (Digital stored value Systems). Tiền điện tử cho phép người dùng có thể thanh toán khi mua hàng, hay sử dụng các dịch vụ, nhờ truyền đi các “dãy số” từ máy tính (hay thiết bị lưu trữ như Smart Card) này tới máy tính khác (Smart Card). Cũng như dãy số (Serial) trên tiền giấy, dãy số của tiền điện tử là duy nhất. Mỗi "đồng tiền điện tử” được phát hành bởi một tổ chức (ngân hàng) và biểu diễn một lượng tiền thật nào đó. Tiền điện tử có loại ẩn danh (identified e-money), có loại định danh (anonymous identified e-money). Tiền ẩn danh không tiết lộ thông tin định danh của người sử dụng. Tính ẩn danh của tiền điện tử tương tự như tiền mặt thông thường. Tiền điện tử ẩn danh được rút từ một tài khoản, có thể được tiêu xài hay chuyển cho người khác mà không để lạidấuvết. Có nhiều loại tiền ẩn danh, có loại ẩn danh đối với người bán, nhưng không ẩn danh với ngân hàng. Có loại ẩn danh hoàn toàn, ẩn danh với tất cả mọi người. Tiền điện tử định danh tiết lộ thông tin định danh của người dùng. Nó tương tự như thẻ tín dụng, cho phép ngân hàng lưu dấu vết của tiền khi luân chuyển. Mỗi loại tiền trên lại chia thành 2 dạng: trực tuyến (online) và không trực tuyến (offline). Trực tuyến: nghĩa là cần phải tương tác với phía thứ ba để kiểm soát giao dịch. Không trực tuyến: nghĩa là có thể kiểm soát được giao dịch, mà không cần liên quan trực tiếp đến phía thứ ba (ngân hàng). Hiện nay có 2 hệ thống tiền điện tử chính: Thẻ thông minh (Smart Card) hay phần mềm. Tuy nhiên chúng có chung các đặc điểm cơ bản sau: Tính an toàn, tính riêng tư, tính độc lập, tính chuyển nhượng, tính phân chia. 2.2.1. Mô hình giao dịch mua bán bằng tiền điện tử. Ngân hàng Ông A Rút tiền Thanh toán Gửi tiền Ông B Hình 1: Mô hình giao dịch cơ bản của hệ thống Tiền điện tử. Mô hình giao dịch mua bán bằng tiền điện tử có 3 giao dịch với 3 đối tượng: Ngân hàng, Người trả tiền A (người mua), Người được trả tiền B (người bán). * Rút tiền: Ông A chuyển tiền từ tài khoản ở ngân hàng vào ‘Túi’ của mình (‘Túi’ có thể là Smart Card hay máy tính) . * Thanh toán: Ông A chuyển tiền từ ‘Túi’ của mình đến ‘Túi’ ông B. * Gứi tiền: Ông B chuyển tiền nhận được vào tài khoản của mình ở ngân hàng. Mô hình này có thể thực hiện bằng 2 cách: trực tuyến, không trực tuyến. Trực tuyến: Ông B liên lạc với ngân hàng để kiểm tra tính hợp lệ của đồng tiền trước khi thanh toán và phân phối hàng. Thanh toán và Gửi tiền được tiến hành đồng thời. Thanh toán trực tuyến cần thiết cho giao dịch có giá trị lớn. Hệ thống yêu cầu phải liên lạc với ngân hàng trong suốt mỗi lần giao dịch, vì thế chi phí nhiều hơn (tiền và thời gian). Không trực tuyến: ông B liên lạc với ngân hàng để kiểm tra tính hợp lệ của đồng tiền được tiến hành sau quá trình thanh toán. Nó phù hợp cho những giao dịch có giá trị thấp. TIỀN ĐIỆN TỬ (E-MONEY) Định danh (Identified) 0 trực tuyến (offline) trực tuyến (online) Ẩn danh (Anonymous) 0 trực tuyến (offline) trực tuyến (online) Hình 2: Mô hình phương thức thanh toán Cấu trúc của Tiền điện tử. Với mỗi hệ thống thanh toán điện tử, tiền điện tử có có cấu trúc và định dạng khác nhau nhưng đều bao gồm các thông tin chính như sau. Số sê-ri của đồng tiền: Giống như tiền mặt, số sê-ri được dùng để phânbiệt các đồng tiền khác nhau. Mỗi đồng tiền điện tử sẽ có một số sê-ri duy nhất. Tuy nhiên, khác với tiền mặt, số sê-ri trên tiền điện tử thường là một dãy số được sinh ngẫu nhiên. Điều này có liên quan tới tính ẩn danh của người sử dụng. Giá trị của đồng tiền: Mỗi đồng tiền điện tử sẽ có giá trị tương đương với một lượng tiền nào đó. Trong tiền mặt thông thường, mỗi tờ tiền có một giá trị nhất định (1$, 10$,…), trong tiền điện tử, giá trị này có thể là một con số bất kỳ (9$, 17$,…). Hạn định của đồng tiền: Để đảm bảo tính an toàn của đồng tiền và tính hiệu quả của hệ thống, các hệ thống thường giới hạn ngày hết hạn của đồng tiền. Một đồng tiền điện tử sau khi phát hành sẽ phải gửi lại ngân hàng trước thời điểm hết hạn. Các thông tin khác: Đây là các thông tin thêm nhằm phục vụ cho mục đích đảm bảo an toàn và tính tin cậy của đồng tiền điện tử, ngăn chặn việc giả mạo tiền điện tử và phát hiện các vi phạm (nếu có). Trong nhiều hệ thống, các thông tin này giúp truy vết định danh người sử dụng có hành vi gian lận trong thanh toán tiền điện tử. Các thông tin trên tiền điện tử được ngân hàng ký bằng khóa bí mật của mình. Bất kỳ người sử dụng nào cũng có thể kiểm tra tính hợp lệ của đồng tiền bằng cách sử dụng khóa công khai của ngân hàng. Tính chất của tiền điện tử: Tiền điện tử cũng có một số đặc điểm tương tự như tiền giấy: dùng để biểu diễn một lượng tiền nào đó, có thể chuyển nhượng được, không để lại dấu vết, có tính ẩn danh, có thể mang đi mang lại và đặc biệt có thể đổi được. Tính an toàn (security). * Đảm bảo đồng tiền điện tử không bị sao chép, không bị sử dụng lại. * Sự giả mạo(forgery). Các gian lận thường gặp trong hệ thống thanh toán là sự giả mạo. Tương tự như tiền giấy, có hai loại giả mạo đối với tiền điện tử. + Giả mạo đồng tiền: tạo ra đồng tiền giả giống như thật, nhưng không có xác nhận rút tiền của ngân hàng. + Tiêu một đồng tiền nhiều lần: là sử dụng cùng một đồng tiền nhiều lần (thuậtngữ tương đương như double spending, hay multiple spending, hay repeat spending) Tính xác thực. Do luôn có sự giả mạo, nên ta cần phải xác lập được các mức khác nhau về cách đánh giá tính xác thực. + Nhận dạng người dùng: Người dùng cần phải biết mình đang giao dịch với ai. + Xác thực tính toàn vẹn thông điệp: đảm bảo bản copy của thông điệp hoàn toàn giống bản ban đầu. Tính riêng tư ( privacy) Chưa thể định nghĩa một cách rõ ràng tính chất này của Tiền điện tử. Đối với một số người, tính riêng tư có nghĩa là sự bảo vệ chống lại “eavesdropping”. Đối với một số người khác như David Chaum, “tính riêng tư” có nghĩa là trong quá trình thanh toán, người trả tiền phải được ẩn danh, không để lại dấu vết, ngân hàng không nói được tiền giao dịch là của ai. Tính chất này nhằm bảo vệ người dùng, khó có thể truy vết, chấp nối mối quan hệ giữa người dùng với các giao dịch hay chi tiêu mà người đó thực hiện. Tính chất này cũng có thể thấy rõ trong các giao dịch bằng tiền mặt. Sau khi thanh toán, việc chứng minh người nào đã sở hữu số tiền đó trước đây là rất khó. Tính độc lập (portability) Tính chất này có nghĩa là sự an toàn của Tiền điện tử không phụ thuộc vào vị trí địa lý. Tiền có thể được chuyển qua mạng máy tính hoặc lưu trữ vào các thiết bị nhớ khác nhau. Tính chuyển nhượng được ( transferrability) Người dùng Tiền điện tử có thể chuyển giao quyền sở hữu đồng tiền điện tử cho nhau. Tính chuyển nhượng được là một tính chất rất quan trọng cho việc tiêu tiền điện tử, thực sự giống với tiêu tiền mặt thông thường. Hình 3: Mô hình giao dịch có tính chuyển nhượng Tuy vậy, có một số vấn đề nảy sinh mà hệ thống vẫn cần phải giải quyết: Kích thước dữ liệu tăng lên sau mỗi lần chuyển nhượng. Vì vậy, cần giới hạn số lần chuyển nhượng tối đa cho phép. Phát hiện giả mạo và tiêu một đồng tiền nhiều lần có thể quá trễ, khi đồng tiền đã được chuyển nhượng nhiều lần. Người dùng có thể nhận ra đồng tiền của mình, nếu nó lại xuất hiện trong một lần giao dịch khác. Tính phân chia được (divisibility) Người dùng có thể phân chia đồng tiền của mình thành những mảnh có giá trị nhỏ hơn, với điều kiện tổng giá trị các mảnh nhỏ bằng giá trị đồng tiền ban đầu. Tiền điện tử thực chất là một dãy số bị mã hóa, nên không phải hệ thống nào cũng thực hiện được việc chia dãy số này thành các đồng tiền có giá trị nhỏ hơn. Chương 3: MỘT SỐ VẤN ĐỀ PHÁT SINH KHI DÙNG TIỀN ĐIỆN TỬ MỘT SỐ VẤN ĐỀ PHÁT SINH. Tiền điện tử mang lại lợi ích không chỉ cho phía người dùng mà còn cho cả phía ngân hàng cũng như phía nhà cung cấp. Tiền điện tử làm tăng tốc độ cũng như hiệu quả của các phiên giao dịch. Tuy nhiên, để Tiền điện tử thực sự trở thành một phương thức thanh toán hữu hiệu, các nhà công nghệ, các nhà phát triển và các chuyên gia an toàn thông tin còn đứng trước nhiều thách thức. Hiện nay có nhiều vấn đề cần phải giải quyết với Tiền điện tử, trong đó có hai vấn đề lớn nhất là: vấn đề ẩn danh người sử dụng đồng tiền và vấn đề ngăn chặn người dùng tiêu một đồng tiền “điện tử” nhiều lần (double-spending). Vấn đề ẩn danh người sử dụng đồng tiền. Ẩn danh là đặc tính rất quan trọng của phương thức thanh toán bằng tiền điện tử. Tính ẩn danh được hiểu là người tiêu tiền phải được ẩn danh và không để lại dấu vết, nghĩa là ngân hàng không thể biết được: tiền giao dịch là của ai. Để giải quyết vấn đề trên người ta đã sử dụng kỹ thuật “chữ ký mù”. Đó là dạng đặc biệt của chữ ký điện tử, nó đòi hỏi người ký thực hiện ký vào thông điệp mà không biết nội dung của nó. Người ký sau này có thể nhìn thấy cặp chữ ký, thông điệp, nhưng không thể biết được là mình đã ký thông điệp đó khi nào và ở đâu, mặc dù anh ta có thể kiểm tra được chữ ký đó là đúng đắn. Nó cũng giống như ký khi đang nhắm mắt vậy! Với chữ ký mù của ngân hàng, họ không thể có được mối liên hệ nào giữa đồng tiền điện tử và chủ sở hữu của nó. Vấn đề gian lận giá trị đồng tiền. Việc Ngân hàng dùng chữ ký “mù” để ký vào đồng tiền làm nảy sinh một vấn đề khác, đó là: ông A gian lận, gửi tới ngân hàng đồng tiền ghi giá trị 50 $ để xin chữ ký của họ trên đồng tiền này, nhưng lại báo với ngân hàng rằng đồng tiền đó chỉ ghi giá trị 1$. Như vậy ông A đã có đồng tiền 50 $ cùng với chữ ký của ngân hàng, nhưng tài khoản của ông chỉ bị khấu trừ 1 $. Ông A đã “thắng” đậm. 3.1.3. Vấn đề tiêu xài một đồng tiền hai lần. Tiền điện tử có dạng số hoá, nên dể dàng tạo bản sao từ bản gốc. Chúng ta không thể phân biệt được giữa đồng tiền “gốc” và đồng tiền “sao”. Kẻ gian có thể tiêu xài đồng tiền “sao” này nhiều lần mà không bị phát hiện. Hệ thống tiền điện tử được áp dụng vào thực tế, thì phải có khả năng ngăn ngừa hay phát hiện được trường hợp “Một đồng tiền tiêu xài hai lần” (double spending). Để giải quyết vấn đề này, đã có các giải pháp khác nhau tuỳ theo từng hệ thống tiền điện tử. GIẢI PHÁP CHO BÀI TOÁN “ẨN DANH” VÀ “CHỐNG GIAN LẬN GIÁ TRỊ ĐỒNG TIỀN”. Giới thiệu giải pháp. Tính ẩn danh là đặc tính quan trọng của phương thức thanh toán bằng tiền điện tử Như đã trình bày ở trên, để 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ó. Tùy 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, lược đồ Chaum-Fiat-Naor dùng sơ đồ chữ ký mù RSA, lược đồ Brand dùng sơ đồ chữ ký mù Schnorr. Mỗi lược đồ cũng có những ưu nhược điểm khác nhau. Mặc dù đạt được tính ẩn danh, nhưng giải pháp chữ ký mù làm nảy sinh một vấn đề: làm sao để ngăn chặn Alice đưa cho ngân hàng ký một đồng tiền không trung thực. Ví dụ: Alice yêu cầu rút 1$, nhưng lại đưa cho ngân hàng ký lên đồng tiền có giá trị 100$. Vì ngân hàng ký mù lên đồng tiền đó, nên không thể biết được nội dung của nó. Để giải quyết vấn đề này, có hai phương pháp được đưa ra. 1). Phương pháp thứ nhất: Ngân hàng dùng một bộ khóa (khoá ký, khóa kiểm tra chữ ký) khác nhau cho mỗi loại tiền. Nếu có k giá trị đồng tiền thì ngân hàng phải có k bộ khoá khác nhau. Ví dụ với đồng tiền giá trị 1$ thì dùng khoá k1, đồng tiền 50 $ thì dùng khoá k50. Như vậy nếu gian lận của ông A tạo ra đồng tiền 50$ với khóa k1, thì đó là đồng tiền không hợp lệ. 2). Phương pháp thứ hai: Để rút từ ngân hàng một đồng tiền giá trị T, ông A phải tạo k đồng tiền C1,C2,...,Ck cùng giá trị T. Chúng đều được gắn định danh, khác nhau duy nhất giữa chúng là số sê-ri. Ông A làm “mù” những đồng tiền này, và gửi chúng đến ngân hàng. Ngân hàng yêu cầu ông A cung cấp thông tin để khử “mù” k-1 đồng tiền bất kỳ. Ngân hàng khử “mù” và kiểm tra chúng. Nếu tất cả đều hợp lệ, ngân hàng ký “mù” lên đồng tiền còn lại Ci (là đồng tiền mà ngân hàng không khử “mù”), và gửi cho ông A. Ngân hàng có sự đảm bảo cao rằng đồng tiền còn lại Ci cũng là hợp lệ, vì nếu ông A gửi kèm đồng tiền không hợp pháp trong số k đồng tiền, thì xác suất bị phát hiện ít nhất là k-1/ k. Xác suất này càng cao nếu k càng lớn. Tuy nhiên nếu k quá lớn thì hệ thống xử lý phải trao đổi nhiều dữ liệu. Lược đồ Chaum-Fiat-Naor. Lược đồ. Lược đồ Chaum - Fiat - Naor, là lược đồ hệ thống tiền điện tử có tính ẩn danh. Để bảo đảm tính ẩn danh của đồng tiền, lược đồ sử dụng kỹ thuật “chữ ký mù” RSA. Trong đó khoá mật là a, khóa công khai là (n, b), hàm f , g không “va chạm”. Mỗi người dùng có số tài khoản u, ngân hàng sẽ giữ số đếm v liên quan đến số tài khoản này (đơn vị Ui tạo ra), ngân hàng dựa vào u để xác định kẻ gian lận. 1 2 5 4 3 Hình 4 : Khái quát lược đồ Chaum – Fiat – Naor 1). Khách hàng gửi đồng tiền ở dạng “mù” , yêu cầu Ngân hàng ký. 2). Ngân hàng gửi đồng tiền đã ký cho Khách hàng (đồng tiền vẫn còn “mù 3). Sau khi xóa “mù” đồng tiền, Khách hàng chuyển tiền cho Người bán hàng. 4). Người bán hàng chuyển giao hàng cho Khách hàng. 5). Người bán chuyển tiền đến Ngân hàng để kiểm tra tính hợp lệ của đồng tiền. 1/. Giao thức Rút tiền: 1). Ông A muốn rút từ ngân hàng một đồng tiền ẩn danh, thì phải tạo k đơn vị Ui và chuyển chúng đến ngân hàng. Mỗi Ui được tạo từ các số ngẫu nhiên ai , ci , di sao cho Ui độc lập và duy nhất, 1 £ i £ k. Cụ thể Å là phép XOR, Ù là phép nối. Ui = f (xi, yi ), xi = g ( ai , ci ), yi = g (ai Å (u Ù (v + i)), di ). 2). Ông A làm “mù” k đơn vị Ui thành Bi bằng tham số “mù” ngẫu nhiên ri và gửi chúng đến ngân hàng. Những tham số “mù” đó ngăn chặn ngân hàng kiểm tra tức thì nội dung những “đồng tiền” Ui. Cụ thể Bi =  Ui ri b mod n. 3). Ngân hàng chọn ngẫu nhiên k/2 đơn vị Ui để kiểm tra, yêu cầu ông A cung cấp các tham số ri , ai , ci, di tương ứng với những đơn vị Ui mà ngân hàng đã chọn. 4). Ông A cung cấp cho ngân hàng các tham số ri , ai , ci, di theo yêu cầu. 5). Dựa vào các tham số do ông A cung cấp, ngân hàng xóa “mù” k/2 đơn vị Ui đã chọn, kiểm tra để đảm bảo rằng ông A không có gian lận. Nếu không có gian lận, ngân hàng mới ký “mù” lên những đơn vị Uj  còn lại (đó là đơn vị Uj mà ngân hàng không xoá “mù, chính là Bj )và gửi cho ông A. Chữ ký trên Bj là Bja mod n. Chú ý j ngẫu nhiên ≤ k, chỉ dùng k/2 phần tử Bj Sau đó ngân hàng trừ số tiền tương ứng vào tài khoản của ông A. 6). Ông A xoá “mù” đơn vị Bj đã được ngân hàng ký, bằng cách chia Bj a cho rj. Lúc này ông A có đồng tiền điện tử với giá trị thật sự. T = Uj a mod n = f (xj, yj) a mod n 2/. Giao thức Thanh toán: 1). Ông A gửi tiền T đến Ông B. 2). Ông B chọn chuỗi nhị phân ngẫu nhiên z1 z2… z k/2 và gửi nó đến ông A. 3). Ông A phản hồi lại tuỳ theo từng trường hợp sau: + Nếu zi = 1 thì ông A sẽ gửi đến ông B: ai, ci và yi + Nếu zi = 0 thì ông A sẽ gửi đến ông B: xi, ai (u (v + i)) và di. 4). Ông B kiểm tra T là hợp lệ trước khi chấp nhận thanh toán của ông A. 3/. Giao thức Gửi tiền: 1). Ông B gửi lịch sử thanh toán đến ngân hàng. 2). Ngân hàng kiểm tra chữ ký số của ngân hàng. 3). Ngân hàng kiểm tra đồng tiền này không bị tiêu xài trước đó. 4). Ngân hàng nhập vào cơ sở dữ liệu những đồng tiền đã tiêu xài, ghi lại chuỗi nhị phân zi và những phản hồi tương ứng từ ông A. Điều này giúp phát hiện kẻ tiêu xài hai lần. 5). Ngân hàng ghi T vào tài khoản của Ông B. 3.2.2.2. Phân tích – đánh giá. Lược đồ Chaum - Fiat - Naor là lược đồ hệ thống tiền điện tử có tính ẩn danh. 1). Để bảo đảm tính “ẩn danh” của đồng tiền, lược đồ dùng “chữ ký mù” RSA. 2). Để ngăn ngừa người rút tiền khai “gian lận giá trị” đồng tiền, lược đồ đã sử dụng giao thức “Cắt và chọn” Cut and choose). Ngân hàng chọn ngẫu nhiên k/2 đơn vị Ui để kiểm tra, nếu không có gian lận xảy ra thì mới ký “mù” lên các đơn vị Uj còn lại. Cũng như lý luận ở trên về giao thức “Cắt và chọn”, ngân hàng có sự đảm bảo cao rằng đồng tiền còn lại Uj cũng là hợp lệ, nếu k càng lớn. 3). Để ngăn chặn việc ‘tiêu xài hai lần’ một đồng tiền, lược đồ dùng giao thức “hỏi-đáp” để lấy một phần thông tin định danh gắn lên đồng tiền. Nếu nó được “tiêu xài hai lần”, thì thông tin định danh trên hai lần “tiêu xài” sẽ kết hợp lại, để truy vết tìm ra kẻ gian lận. Nếu ông A tiêu tiền T hai lần, thì khả năng ngân hàng có thể lấy được cả hai tham số ai và ai Å (u Ù (v + i)) để tính được u. Đó là số tài khoản của ông A tại ngân hàng, chính vì vậy từ u, ngân hàng có thể truy ra được ông A là người có hành vi tiêu một đồng tiền hai lần. Vì khả năng có cặp bít khác nhau trong 2 chuỗi z1, z2,…,zk/2 và z’1, z’2,…,z’k/2 là rất cao. Chỉ cần có một cặp bit tương ứng zi và z’i khác nhau, là ngân hàng có thể có đủ thông tin định danh của ông A. Xác suất để 2 chuỗi zi và z’i trùng nhau là , tức là ngân hàng không có đủ thông tin để tìm ra được định danh của ông A. Như vậy nếu chọn k đủ lớn thì khả năng hai chuỗi zi và z’i trùng nhau có thể xem là khó thể xảy ra. 4). Chi phí. Trong lược đồ Chaum-Fiat-Naor chi phí (thời gian, tính toán, tiền bac…) phụ thuộc vào độ lớn của k. Tại giao thức rút tiền, ông A gửi k packet đến ngân hàng, tuy nhiên, ngân hàng chỉ phải gửi trả lại 1 packet. Việc tiến hành làm “mù” và “xóa mù” k packet làm tăng sự tính toán, trao đổi và thời gian lưu trữ. Tại giao thức thanh toán, sau khi ông A gửi tiền đến ông B. Ông B gửi một chuỗi nhị phân tới ông A, sau đó ông A phải gửi k/2 phản hồi khác nhau. Điều này làm tăng thời gian và sự tính toán, liên lạc và chi phí lưu trữ. 5). Tấn công. Đây là phương pháp dựa vào kỹ thuật RSA, vì vậy, tất cả những cách tấn công vào RSA đều có thể tấn công vào lược đồ này. Tuy nhiên, về mặt lý thuyết, có khả năng ông A có thể tránh được sự phát hiện của ngân hàng khi tiêu xài hai lân. Điều này xảy ra khi ông A và ông C cùng hợp tác với nhau, cụ thể như sau: Ông A sau khi thực hiện một giao dịch thanh toán với ông B, sẽ gửi những tiền đã tiêu tới ông C và mô tả cho ông C quá trình giao dịch với ông B. Như vậy, ngân hàng sẽ nhận được thông tin giao dịch từ ông B và ông C giống như nhau. Lúc này, ngân hàng sẽ không có khả năng xác định được định danh của ông A. Lược đồ Brand. Lược đồ được xây dựng dựa trên chữ ký Shnorr và bài toán đại diện trong nhóm cấp nguyên tố. Gq là nhóm con cấp q của Zp*, trong đó p,q là số nguyên tố thỏa mãn q|(p-1) Ngân hàng khởi tạo 5 thành phần: g, h, g1, g2, d. + (g, h) Î Gq (generator - tuple): khóa công khai của ngân hàng được dùng trong sơ đồ ký ở giao thức rút tiền, x là khóa bí mật của ngân hàng. x = logg h (h = gx ) + (g1, g2): bộ phần tử sinh của Gq. + Phần tử sinh giả d ( khác g1 và g2), đảm bảo rằng định danh của người dung sẽ không bị phát hiện trong giao thức thanh toán. Lược đồ. 1/. Khởi tạo tài khoản. + Alice khởi tạo ngẫu nhiên u1, u2 Î Zq. Tính I = g1u1 g2u2, chuyển I đến ngân hàng + Ngân hàng lưu I = g1u1 g2u2 cùng định danh của Alice và số tài khoản, nhưng ngân hàng không biết u1 và u2. +Trường hợp Alice tiêu xài đồng tiền hai lần, ngân hàng có thể tìm ra (u1, u2) và tính được I, từ I tìm ra định danh kẻ gian lận. u1, u2 Î Zq I = g1u1 g2u2 I Định danh Số tài khoản I Hình 5: Quá trình khởi tạo tài khoản của lược đồ Brand 2/. Chứng minh đại diện tài khoản: Khi Alice rút tiền đầu tiên phải xưng danh với ngân hàng, bằng cách chứng minh với ngân hàng là sẽ rút tiền trong tài khoản mà Alice đang sở hữu. Phương pháp được dùng ở đây là “Chứng minh tri thức của một đại diện”. Alice phải chứng minh cho Ngân hàng rằng: Alice biết u1 và u2 cho Ngân hàng. Quá trình thực hiện được tiến hành như sau: 1. Alice chọn ngẫu nhiên w1 và w2 Î Zq và gửi y = g1w1 g2w2 đến Ngân hàng. 2. Ngân hàng thử thách để kiểm tra có đúng Alice sở hữu tài khoản không, bằng cách chọn ngẫu nhiên Cr ÎZq và gửi đến Alice. 3. Alice tính r1 = w1 + Cru1 và r2 = w2 + C2u2 mod q, gửi đến Ngân hàng. 4. Ngân hàng chấp nhận xác thực là đúng khi và chỉ khi. yICr = g1r1 g2r2 trong đó I = g1u1 g2u2 Bởi vì, nếu Alice thực sự là chủ sở hữu tài khoản, thì phải biết u1, u2 (là 2 giá trị khởi tạo tài khoản ban đầu) và nếu biết được chúng thì : yICr ≡ g1w1 g2w2 (g1u1 g2u2 ) ≡ g1w1+u1Cr g2w2 + u2Cr ≡ g1r1 g2r2 Alice (Người chứng minh) Ngân hàng ( người kiểm tra) Biết u1 và u2 là đại diện của I = g1u1 g2u2 Chỉ biết I, g1,g2. Không biết u1 và u2 Tạo 2 số ngẫu nhiên w1 và w2 ÎZq Tính y = g1w1 g2w2 gửi đến Ngân hàng Nhận y, chọn ngẫu nhiên Cr ÎZq Gửi thử thách Cr đến Alice Nhận Cr, tính: r1 = w1 + Cru1 và r2 = w2 + C2u2 mod q Gửi đến Ngân hàng Nhận r1, r2, kiểm tra: yICr = g1r1 g2r2 Nếu thỏa mãn: ngân hàng chấp nhận Alice biết đại diện của I ( có nghĩa là biết u1, u2) Hình 6 : Quá trình chứng minh đại diện tài khoản của lược đồ Brand. 3/. Giao thức rút tiền. Nếu xác thực được chấp nhận, 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 của Alice. Ngân hàng và Alice cùng tính được m = Id ( d là phần tử sinh và công khai). Ngân hàng gửi Alice : z = mx, a = gw , b = mw (w được chọn ngẫu nhiên từ Zq, x là khóa bí mật của Ngân hàng) + Alice chọn 3 số ngẫu nhiên s ÎZq*; u,v ÎZq để làm “mù” m, z, a, b. m’ = ms = (Id)s = g1u1s g2u2s ds z’ = zs ; a’ = au gv ; b’ = bsu msv Tách ngẫu nhiên: u1s = (x1 + x2) mod q, u2s = ( y1 + y2) mod q với s = z1 + z2 mod q Tính A = g1x1 g2y1 dz1 ; B = m’/A = g1x2 g2y2 dz2 Alice dùng hàm băm H tính c’ = H( m’, z’, a’, b’, A). Làm “mù” c’ bằng c = c’/u mod q, 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 Alice, ghi có vào khoản của Alice. + Alice chấp nhận nếu kiểm tra thấy gr = hca và mr = zcb và tính r’ = ru + v modq. + Lúc này, Alice có đồng tiền điện tử thực 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. Xác định giá trị đồng tiền: Làm thế nào để có thể biết được giá trị của từng đồng tiền? Có hai cách để giải quyết vấn đề này: Cách 1: Ngân hàng sử dụng một khóa công khai cho mỗi loại tiền. Nghĩa là, nếu có k đồng tiền khác biệt thì ngân hàng phải công khai k khóa công khai sau: (g1 , h1)….. (gk , hk) Cách 2: Chọn k phần tử sinh giả (dummy generator) khác nhau được công khai d1,….., dk. Mỗi phần tử sinh được dùng để biểu hiện giá trị của mỗi đồng tiền. Alice Ngân hàng I = g1u1 g2u2 x: khóa bí mật (g, h): khóa công khai ( h= gx) Quá trình chứng minh đại diện z, a, b mÎZq, m = Id z = mx, a = gw , b = mw m = Id = g1u1g2u2 d, s ÎZq* m’ = ms = (Id)s = g1u1s g2u2s ds z’ = zs Tách ngẫu nhiên u,v ÎZq, a’ = au gv , b’ = bsu msv c’ = H( m’, z’, a’, b’, A). c = c’/u mod q c r = xc + w mod q Kiểm tra: gr = hca và mr = zcb Tính r’ = ru + v modq. Đồng tiền: A, B, Sign(A, B) với Sign ( A, B) = (z’, a’, b’,r’) Hình 7: Giao thức rút tiền trong lược đồ Brand 4/. Giao thức thanh toán. Khi Alice muốn mua hàng hay sử dụng dịch vụ của Bob, trước tiên Alice cần phải gửi tiền cho Bob, quá trình thanh toán được thực hiện theo những bước sau. 1. Alice gửi tiền (A, B, Sign(A, B)) đến Bob. A = g1x1 g2y1 dz1 B = m’/A = g1x2 g2y2 dz2 Sign ( A, B) = (z’, a’, b’,r’) 2. Đầu tiên, Bob kiểm tra xem AB # 1 hay không. Nếu AB = 1, có nghĩa: (g1x1g2y1 dz1 ) (g1x2g2y2 dz2 ) = 1 à g1x1 + x2g2 y1 + y2 d z1 + z2 = 1 à s = 0 Vậy, Ngân hàng không xác định được u1, u2 trong trường hợp “double - spending” Sau đó, Bob kiểm tra chữ ký của Ngân hàng sign(A, B) có hợp lệ không. Nếu đúng, Bob thử thách Alice bằng cách gửi c ÎZq*, c không cần thiết là số ngẫu nhiên nhưng phải đảm bảo duy nhất trong mỗi lần thanh toán. Bob tính c như sau: c = H0 ( A, B, Ib, date/time), với I là định danh của Bob, date/time là nhãn thời gian của giao dịch, H0 là hàm băm. 3. Alice phản hồi với: r1 = x1 + cx2 mod q r2 = x1 + cy2 mod q r3 = x1 + cz2 mod q 4. Bob kiểm tra, nếu g1r1g2 r2 g3 r3 = ABc thì chấp nhận thanh toán vì: g1r1g2 r2 g3 r3 = g1x1 + cx2g2 y1 + cy2 g3 z1 + cz2 = = (g1x1g2 y1 g3 z1 ) (g1cx2g2 cy2 g3 cz2 ) = ABc Alice Bob A, b, sign(A, B) AB ≠ 1 Kiểm tra sign ( A, B), c ÎZq c r1 = x1 + cx2 mod q r2 = x2 + cy2 mod q r3 = x3 + cz2 mod q r1, r2, r3 g1r1g2 r2 g3 r3 = ABc Nếu đúng Bob chấp nhận thanh toán Hình 8: Giao thức thanh toán 5/. Giao thức gửi. Bob gửi thông tin thanh toán (A, B, sign(A, B)), c, r1, r2, r3 đến ngân hàng. Ngân hàng kiểm tra chữ ký có chính xác không và đồng tiền không được tiêu xài trước đấy. Bob thử thách Alice bằng giá trị c = H0 (A, B, Ib, date/time) Alice trả lời lại giá trị r1, r2, r3 Nếu tất cả thỏa mãn, Ngân hàng gửi tiền vào tài khoản của Bob. Đánh giá. Lược đồ này sử dụng những lý thuyết toán học phức tạp, khó có thể hiểu được đầy dủ. Do vậy lược đồ này không phổ biến bằng lược đồ CHAUM – FIAT – NAOR Lược đồ không sử dụng giao thức “cut and choose” như CHAUM –FIAT-NAOR, nên khônh phải tạo k mẫu khác nhau cũng như không phải giữ những bản copy của phần định danh( định danh được chia làm hai phần). Ngân hàng cũng không cần kiểm tra k/2 mẫu trước khi tiến hành ký. Độ an toàn của lược đồ Brand sẽ phụ thuộc vào độ khó của việc tính toán logarit rời rạc và dĩ nhiên sẽ an toàn hơn lược đồ sử dụng RSA. Trong lược đồ này, định danh của người mua hàng(Alice) được ẩn danh hoàn toàn. Người bán hàng và ngân hàng hoàn toàn không biết định danh của Alice, trừ khi Alice có hành vi gian lận, tiêu một đồng tiền nhiều lần. 3.2.3.3. Phương pháp phát hiện định danh trong trường hợp tiêu xài 2 lần một đông tiền. Trong trường hợp Alice tiêu xài một đồng tiền 2 lần thì sẽ phải gửi cho Ngân hàng: Lần 1: c và r1, r2, r3 Lần 2: c’ và r’1, r’2, r’3. Với: Và r1 = x1 + cx2 mod q r’1 = x1 + cx’2 mod q r2 = x2 + cy2 mod q r’2 = x2 + cy’2 mod q r3 = x3 + cz2 mod q r’3 = x3 + cz’2 mod q Từ hai phương trình 3 ẩn này, ngân hàng sẽ tìm ra được định danh của kẻ gian lận: A = g1(c’r1 – cr’1) / (c’-c)g2 (c’r2 – cr’2) / (c’-c) g3 (c’r3 – cr’3) / (c’-c) B = g1(r1 – r’1) / (c’-c)g2 (r2 – r’2) / (c’-c) g3 (r3 – r’3) / (c’-c) Mà: A = g1x1 g2y1 dz1 B = g1x2 g2y2 dz2 (c’r1 – cr’1) = x1 mod q (r1 – r’1) = x2 mod q (c’r2 – cr’2) = y1 mod q (r2 – r’2) = y2 mod q (c’r3 – cr’3) = z1 mod q (r3 – r’3) = z2 mod q Từ công thức, Ngân hàng tính: u1s = x1 + x2 , u2s = y1 + y2 , s = z1 + z2 Tiến hành thay x1 , y1, z1 , x2 , y2, z2 theo kết quả trên ta được. u1s = + mod q u2s = + mod q s = + mod q u1 = mod q u1 = mod q Từ u1 và u2 tính được I theo công thức I = g1u1 g2u2, Ngân hàng so sánh giạ trị I trong cơ sở dữ liệu đã được lưu trước đó và tìm ra định danh của kẻ gian lận. Tấn công. Có một kiểu tấn công trong lược đồ Brand, đó là Alice có thể tiêu một đồng tiền nhiều lần mà không bị phát hiện. Cách tấn công này nhằm vào giao thức tạo tài khoản lúc ban đầu, khi mở tài khoản thay vì sử dụng I = g1u1 Alice sẽ chọn I = g1u1 g2u2 , như vậy, tại giao thức rút tiền, Ngân hàng sẽ kỹ trên. A = g1u1 g2u2+1 B = g1x1 g2x2 Sign( A, B) = (Z’ = (g1u1 g2u2+1), a’ = gwu+v, b = (g1u1 g1u2+1)wsu+sv, r = H, (A, b,z’, a’, b’)x + wu+v) Tại giao thức rút tiền thu được e1 = de + x1 và r2 = df + x2 ở đây (e, f) là đại diện của A = (g1e gf), e = u1s, f = (u2 +1)s. GIẢI PHÁP CHO BÀI TOÁN “TIÊU NHIỀU LẦN MỘT ĐỒNG TIỀN” Giới thiệu giải pháp. Làm thế nào để đảm bảo tính ẩn danh người dùng, mà vẫn truy vết được định danh khi họ vi phạm? Giải pháp được dùng là “chữ ký mù có điều kiên” (conditional blind signature), còn gọi là chữ ký mù một phần ( partial blind signature). 1). Chữ ký mù có điều kiện đảm bảo: Nếu không có vi phạm xảy ra, nó giống hệt chữ ký mù, tức là đảm bảo tính ẩn danh cho người dùng. Nếu có vi phạm xảy ra, ngân hàng có thể kết hợp với nhà cung cấp để truy ra vết định danh người vi phạm. 2). Ý tưởng của chữ ký mù có điều kiện: Khi người dùng A thực hiện giao thức rút tiền, A phải gửi cho ngân hàng một số thông tin. Tương tự, khi thanh toán, A cũng gửi cho bên B một số thông tin. Nếu chỉ dựa vào thông tin mà A cung cấp cho ngân hàng, hoặc thông tin A cung cấp cho B, thì không thể truy vết ra định danh của A. Tuy nhiên Ngân hàng và B hợp tác với nhau, dưới sự giám sát của pháp luật, để truy vết ra A. Sau đây là hai lược đồ dựa trên ý tưởng của chữ ký mù có điều kiện. Lược đồ truy vết gian lận KV. Lược đồ KV, viết tắt của hai tác giả D. Kugler và H. Vogt, dựa trên sơ đồ chữ ký mù của Schnorr và sơ đồ chữ ký không thể chối bỏ của Chaum. Đặc tính mù được dùng để ẩn danh người dùng, đặc tính không thể chối bỏ dùng để truy vết đồng tiền điện tử. 1/. Chuẩn bị + Chọn p và q là hai số nguyên tố lớn sao cho q là ước của (p-1). + g1, g2, g3 ÎZp* là các phần tử cấp q. + (s1, s2) ngẫu nhiên Î Zq là khóa bí mật của ngân hàng cho chữ ký mù. + v = g1s1 g2s2 mod p là thành phần chính trong khóa công khai của ngân hàng cho chữ ký mù. Như vậy, khóa công khai là bộ 5 số (p, q, g1, g2, v). + x ngẫu nhiên Î Zq là khóa bí mật của ngân hàng cho chữ ký không thể chối bỏ. + y = g3x mod p là khóa công khai của ngân hàng cho chữ ký không thể chối bỏ. 2/. Giao thức rút tiền. + Ngân hàng Chọn r ngẫu nhiên Î Zq* Tính: α = g2r mod p Tính chữ ký không thể chối bỏ ω = αx mod p Gửi α và ω cho Alice. + Alice làm α mù và ω Với mỗi đồng tiền, Alice chọn δ ngẫu nhiên Î Zq* và tính: α’ = αδ mod p , ω’ = ωδ = (αx)δ = (α’)δ mod p + Ngân hàng chọn (k1, k2 ) Î Zq ngẫu nhiên. Tính t = g1k1 αk2 mod p gửi cho Alice. + Alice chọn (β1, β2, γ) ngẫu nhiên và tính t’ = tg1β1(α’) β2 νγ mod p (ν là khóa công khai của Ngân hàng) c’ = H(m, α’, t’) Gửi c = c’ – γ mod q cho Ngân hàng. + Ngân hàng tính: S1 = k1 – cs1 mod q S2 = k2 – cs2r-1 mod q thỏa mãn: t = g1s1 αs2 νc mod p Ngân hàng gửi S1, S2, t cho Alice. + Alice tính S’1 =  S1 + β1 mod q S’2 =  S2 + β2 mod q Các thông tin trên đồng tiền gồm (m, t’, S’1, S’2, α’, ω’ ). + Kiểm tra chữ ký Ver = true ó t’ = g1S’1 (α’)S’2 νc’ mod p Khách hàng Ngân hàng Với mỗi đồng tiền. α’ = αδ mod p ω’ = ωδ = (αx)δ = (α’)δ mod p (β1, β2, γ) Î Zq ngẫu nhiên t’ = tg1β1(α’) β2 νγ mod p c’ = H(m, α’, t’) c = c’ – γ mod q. S’1 =  S1 + β1 mod q S’2 =  S2 + β2 mod q t’ = g1S’1 (α’)S’2 νc’ mod p Đồng tiền (m, t’, S’1, S’2, α’, ω’ ) α , ω t c S1, S2 Với mỗi lần rút tiền; r ngẫu nhiên Î Zq* α = g2r mod p ω = αx mod p (k1, k2 ) Î Zq ngẫu nhiên. Tính t = g1k1 αk2 mod p S1 = k1 – cs1 mod q S2 = k2 – cs2r-1 mod q thỏa mãn: t = g1s1 αs2 νc mod p Hình 9 : Tóm tắt lược đồ KV 3/. Phân tích lược đồ KV. Khả năng truy vết: Nếu Ngân hàng quyết định phát hành các đồng tiền được đánh dấu, đơn giản là ngân hàng chỉ cần chọn và lưu một khóa ký không thể chối bỏ ngẫu nhiên bằng cách dùng xM thay vì x để tính ω = αxM mod p, xM được gọi là khóa đánh dấu. Trường hợp này có thể xảy ra theo yêu cầu của khách hàng hoặc luật sư. Khi một đồng tiền được gửi vào ngân hàng, trong quá trình kiểm tra phát hiện thấy sai, thì khóa đánh dấu sẽ được phát hiện. Trường hợp này, ngân hàng kiểm tra xem ω’ có bằng ω = αxM mod p đối với tất cả các khóa đánh dấu đã được lưu giữ xM. Tuy nhiên nếu Khách hàng (Alice) cố gắng kiểm tra xem đồng tiền của mình có bị truy vết không. Alice phải yêu cầu ngân hàng công bố tất cả các khóa đánh dấu xM trong pha kiểm toán. Nếu Alice phát hiện khóa đánh dấu tương ứng với đồng tiền của Alice không phải là x hay xM thì Alice có thể cãi rằng đồng tiền đã bị truy vết một cách bất hợp pháp. Nếu khóa đánh dấu nằm trong danh sách xm, Alice sẽ yêu cầu giấy phép hợp lệ của trọng tài - người chịu trách nhiệm cho việc truy vết này. Nhược điểm: Một trong những nhược điểm của lược đồ KV là nó cần quá nhiều thông tin bổ sung trong quá trình truy vết đồng tiền hợp lệ. Nguyên nhân là do việc đánh dấu phải được hợp pháp hóa bởi một trọng tài và ngân hàng phải lưu tất cả các khóa đánh dấu và các chứng nhận của trọng tài. Trong pha kiểm toán, Ngân hàng phải công bố tất cả các khóa đánh dấu và khóa ký không thể chối bỏ x. Do vậy, đối với quá trình truy vết hợp lệ, Ngân hàng phải lưu danh sách các khóa đánh dấu và các chứng nhận của trọng tài cho các đồng tiền bị nghi ngờ. Một điểm yếu khác là khách hàng cần phải có năng lực cao về mặt tính toán để kiểm tra đồng tiền của mình. Khách hàng phải so sánh tất cả các x, xM, với x’ sử dụng công thức ω = (α’)x’mod p. Nếu không thể tìm thấy x hay xM nào phù hợp, khách hàng có thể cãi rằng đồng tiền đã bị truy vết một cách bất hợp pháp. Bên cạnh đó, khi khách hàng cố gắng thử phép toán trên, việc đưa ra danh sách các khóa đánh dấu này làm nảy sinh một vấn đề về an toàn và bảo mật. Khách hàng sẽ kiểm tra trên máy tính cá nhân, do vậy ngân hàng phải gửi dánh sách khóa đánh dấu cho khách hàng, từ đó, khách hàng sẽ biết danh sách này và có thể chuyển giao cho người khác Lược đồ Fair tracing. 1/. Chuẩn bị. - Alice gửi yêu cầu rút tiền tới ngân hàng. - Ngân hàng chọn ngẫu nhiên r Î Zq*, tính α = g2r mod p gửi cho Alice. - Alice chọn x ngẫu nhiên làm thẻ đánh dấu bí mật và tính chữ ký không thể chối bỏi: ω = αx mod p - Alice chọn ngẫu nhiên đa thức f(y) = x + a1y mod q và tính: c0 = gx mod p , c1 = ga1 mod p Alice gửi f(1), g, c0, c1 đến ngân hàng theo sơ đồ VSS. Ngân hàng có thể kiểm tra tính đúng đắn của giá trị được chia sẻ: gf(1) = c0c1 = gxga1 = gx + a1 = gf(1) Khách hàng Ngân hàng ω = αx mod p x là “dấu” bí mật f(y) = x + a1y mod q c0 = gx mod p c1 = ga1 mod p Yêu cầu rút tiền α f(1), g, c0,c1 r ngẫu nhiên r Î Zq* α = g2r mod p gf(1) = c0c1 = gxga1 = gx + a1 = gf(1) Hình 10 : Giai đoạn chuẩn bị trong lược đồ Fair tracing. Nếu kiểm tra thất bại, yêu cầu sẽ bị từ chối, vì Alice đang cố gắng gian lận “thẻ đánh dấu”. Nếu Alice bị nghi ngờ, ngân hàng sẽ lưu các giá trị này cùng với ID của Alice để truy vết. Sau đó Alice gửi f(2), g, c0,c1 tới nhà cung cấp. Có thể tìm được “thẻ đánh dấu” bí mật từ x từ f(1) và f(2) bằng cách VSS nếu ngân hàng và nhà cung cấp phối hợp với nhau. Ngân hàng không biết “dấu x” và sẽ gửi α, ω cho Alice. 2/. Giao thức rút tiền. Với mỗi đồng tiền, Alice chọn ngẫu nhiên δ Î Zq* và tính: α’ = αδ mod p ω’ = ωδ mod p Rõ ràng ở đây, mối quan hệ giữa α’và ω’được giữ nguyên như giữa α và ω: ω’ = ωδ mod p = (αx) δ mod p = (αδ) x mod p = (α’)x mod p Alice phải chuyển α thành α’ bằng cách dùng thành phần δ ngẫu nhiên, nếu không ngân hàng có thể dựa vào α để nhận ra đồng tiền trong lức gửi tiền. Ngân hàng chọn ngẫu nhiên (k1, k2 ) Î Zq ngẫu nhiên. Tính t = g1k1 αk2 mod p gửi cho Alice Ngân hàng cũng quyết định ngày hết hạn hiệu lực Tv của đồng tiền và ký trên nó. Ngân hàng gửi t, Tv, Sigbank(Tv) cho Alice. * Làm mù: Alice tạo thông điệp đồng tiền m’ = m || Tv || Sigbank(Tv). Chọn ngẫu nhiên (β1, β2, γ) Î Zq và tính: t’ = tg1β1(α’) β2 νγ mod p (ν là khóa công khai mù của Ngân hàng) Tính : c’ = H(m’, α’, t’) và gửi c = c’ – γ mod q cho Ngân hàng. * Ngân hàng ký: S1 = k1 – cs1 mod q S2 = k2 – cs2r-1 mod q thỏa mãn: t = g1S1 αS2 νc mod p Ngân hàng gửi S1, S2 cho Alice. * Xóa mù: S’1 =  S1 + β1 mod q S’2 = δ-1 S2 + β2 mod q Như vậy đồng tiền là bộ các số ( m’, t’, S1’, S2’, α’, ω’, c0, c1) * Tính tin cậy của đồng tiền. Tính tin cậy của đồng tiền có thể thu được bằng cách kiểm tra chữ ký mù. Trong bước này, tất cả các giá trị cần thiết có thể được lấy ra từ các giá trị lưu trên đồng tiền và khóa công khai của Ngân hàng. Cụ thể, có thể lấy g1 , v từ bộ khóa công khai (p, q, g1, g2, v), lấy t’, S1’, S2’, α’ từ bộ giá trị ( m’, t’, S1’, S2’, α’, ω’, c0, c1) chứa trong đồng tiền, và tính được c’ từ phương trình: c’ = H’ (m’, α’, t’). Bất cứ ai cũng có thể kiểm tra tính tin cậy của đồng tiền bằng cách so sánh giá trị của t’ và g1s1 (α’)s2’ νc’ mod p Khách hàng Ngân hàng Với mỗi đồng tiền: Chọn ngẫu nhiên δ Î Zq* và tính α’ = αδ mod p, ω’ = ωδ mod p tạo thông điệp đồng tiền m’ = m || Tv || Sigbank(Tv). Chọn ngẫu nhiên (β1, β2, γ) Î Zq. Tính, t’ = tg1β1(α’) β2 νγ mod p (ν là khóa công khai mù của Ngân hàng) Tính : c’ = H(m’, α’, t’) c = c’ – γ mod q S’1 =  S1 + β1 mod q S’2 =  S2 + β2 mod q Đồng tiền : (m’ t’, S’1, S’2, α’, ω’, c0, c1 ) t, Tv, Sigbank(Tv) c S1,S2 chọn ngẫu nhiên (k1, k2 ) Î Zq Tính t = g1k1 αk2 mod p S1 = k1 – cs1 mod q S2 = k2 – cs2r-1 mod q thỏa mãn: t = g1s1 αs2 νc mod p Hình 11 : Giao thức rút tiền trong lược đồ Fair tracing. 3/. Giao thức trả tiền. - Alice gửi các giá trị sau cho Bob. Đồng tiền (m’ t’, S’1, S’2, α’, ω’, c0, c1 ) Các giá trị f(2) và g của VSS g’ = gδ modp D = δ’ + c’Sk Làm chữ ký một lần, δ ngẫu nhiên là số chỉ được dùng một lần. - Bob kiểm tra tính chất chân thực của các giá trị này bằng cách so sánh. gf(1) = c0c12 = gxg2a1 = gx + 2 a1 - Bob kiểm tra tính chân thực của chữ ký một lần bằng cách so sánh. Kiểm tra xem: g’ = gDPkc’ mod p = g(δ + c Sk) (g-Sk ) c’ mod p = gδ mod p Trong đó, c’ = H(m’, α’, t’) có thể được tính từ đồng tiền Alice gửi (m’ t’, S’1, S’2, α’, ω’, c0, c1 ) 5/. Giao thức gửi tiền và kiểm tra chữ ký: Trong giao thức gửi tiền, Bon chỉ cần gửi lại đồng tiền cho Ngân hàng. Nếu không có vi phạm, đồng tiền sẽ được chấp nhận. Nếu có vi phạm, Ngân hàng phải thực hiện thêm một hoặc một số tương tác như truy vết đồng tiền hay ngăn chặn “double-spending”. 6/. Phân tích lược đồ Fair tracing Truy vết không gian lận(Fair tracing). Rõ ràng, nếu Ngân hàng biết “thẻ đánh dấu” bí mật x, ngân hàng có thể dễ dàng kiểm tra đồng tiền với: ω’ = (α’)x mod p Thực tế, Ngân hàng không thể biết được thông tin này. Do vậy, việc truy vết bất hợp pháp là không thể. Mặt khác, Alice có thể đưa x cho Ngân hàng khi bị tống tiền, khi đó ngân hàng có thể dễ dàng kiểm tra đồng tiền. Nếu Alice bị nghi ngờ có sai phạm, ngân hàng đã lưu các giá trị được chia sẻ: f(1), g, c0, c1 vào cơ sở dữ liệ trong khâu chuển bị, khi đó ngân hàng sẽ so sánh c0 và c1 của đồng tiền gửi vào với các giá trị được lưu trong cơ sở dữ liệu. Nếu các giá trị này giống nhau, Ngân hàng sẽ yêu cầu Bob cung cấp f(2) dưới sự giám sát của luật sư. Từ đó, ngân hàng có thể giải được các giá trị của x, cụ thể. Ta có: f(1) = x + a1.f(2) = x + 2a1 à x = 2f(1) – f(2) Bob hoàn toàn không được lợi gì trong giao thức này, vì vậy, ngân hàng không thể truy vết được đồng tiền mà không có sự hợp tác của bên thứ ba. Do vậy, việc truy vết được gọi là không gian lận - Phát hiện và ngăn chặn “double-spending”. Mỗi đồng tiền có một thời hạn sử dụng nhất định, do vậy, tất cả các đồng tiền phải được gửi trở lại ngân hàng trước ngày đồng tiền hết hiệu lực thanh toán Tv và ngân hàng duy trì việc lưu trữ các đồng tiền đã tiêu cho đến thời điểm Tv. Trong hệ thống trực tuyến, khi Bob nhận được tiền, anh ta có thể yêu cầu ngân hàng kiểm tra xem đồng tiền đã có trong danh sách các đồng tiền đã tiêu hay chưa, nếu có, Bob sẽ từ chối giao dịch. Do vậy, Bob hoàn toàn không cần yêu cầu chữ ký một lần của Alice. Trong hệ thống ngoại tuyến, việc ngăn chặn “double-spending” trong thời gian thực là không thể, nhưng chúng ta hoàn toàn có thể phát hiện hành vi “double-spending” bằng cách sử dụng các kỹ thuật giống như trong hệ thống trực tuyến thông qua các đồng tiền gửi vào dựa trên ngày tiền hết hiệu lực Tv . Tuy vậy, chúng ta không biết ai đã tiêu một đồng tiền nhiều lần, vì các giá trị (c0, c1) chỉ là một chứng cứ và ngân hàng không lưu tất cả các danh sách này. Giải pháp cho vấn đề này là chữ ký một lần. Xem xét lại giao thức trả tiền, ta thấy rằng Alice đã chọn một số ngẫu nhiên dùng một lần duy nhất δ cho mỗi đồng tiền, và nhận chữ ký mù của ngân hàng. Vì thế, δ là một hệ số mù quan trọng và được kết hợp với chữ ký mù. Nếu Alice cố tình sử dụng nó hơn một lần cho thông điệp đồng tiền khác m’, khóa bí mật của Alice sẽ bị tìm ra theo cách sau: D’ = δ + c’Sk Như vậy Alice sẽ không cố gắng sử dụng một đồng tiền nhiều hơn một lần. Nếu không, vào ngày Tv, hành vi “double-spending” sẽ bị phát hiện, và ngân hàng sẽ kết hợp với Bob để truy ra danh tính của Alice. Chú ý: Chúng ta có thể biến đổi lược đồ trên bằng cách thêm vào sự tham gia của một TTP (Trusted Third Party). Trong khâu chuẩn bị, TTP quyết định thẻ dánh dấu x và phân phối giá trị bí mật cho Alice và ngân hàng. Các giao thức khác hoàn toàn không cần thay đổi. TTP sẽ đưa ra giá trị của x khi cần thiết và khi được yêu cầu một cách hợp pháp. Khâu chuẩn bị được thay đổi cụ thể như sau: + Alice gửi yêu cầu rút tiền tới ngân hàng. + Ngân hàng chọn ngẫu nhiên r Î Zq*, tạo phần tử sinh mới α = g2r mod p, gửi nó cho Alice và TTP. + TTP chọn x ngẫu nhiên làm thẻ đánh dấu và tính ω = αx mod p. + TTP chọn một đa thức ngẫu nhiên f(y) = x + a1y mod p và tính. c0 = gx mod p c1 = ga1 mod p + TTP gửi f(1), g, c0, c1 cho ngân hàng và f(2), g, c0, c1 cho Alice theo sơ đồ VSS. + Thẻ đánh dấu bí mật x có thể được giả ra nhờ f(1) và f(2) sử dụng sơ đồ VSS. + Vậy, Ngân hàng không biết giá trị của x, đồng thời α và ω được chuyể đến Alice TTP Tính: ω = αx mod p ω, f(2), g, c0, c1 f(y) = x + a1y mod p f(1),g, c0 ,c1 c0 = gx mod p Alice Yêu cầu rút tiền. c1 = ga1 mod p Ngân hàng Phần tử sinh mới α Hình 12: Giai đoạn chuẩn bị với TTP. So sánh lược đồ KV và Fair tracing. So với lược đồ KV của D.Kugler và H.Vogt, lược đồ Fair tracing của Byyeong Kon Kim hiệu quả hơn rất nhiều về mặt độ phức tạp tính toán, và không gian lưu trữ dữ liệu, đồng thời khắc phục được một số điểm yêu của lược đồ KV. Giả sử một ngân hàng cỡ trung bình có khoảng một tỷ (106) khách hàng hoặc tài khoản, mỗi khách hàng phải rút và sử dụng khoảng 103 đồng tiền, trong đó có khoảng 1% khách hàng bị nghi ngờ. Trong trường hợp này, có tất cả 109 đồng tiền được phát hành. Với lược đồ KV , phải mất 109 các danh sách khó cho việc truy vết một đồng tiền được gửi vào. Như vậy, độ phức tạp với mỗi đồng tiền, lược đồ Fair tracing hiệu quả gấp 109 lần. Chúng ta sẽ xét tiếp về không gian để lưu trữ đồng tiền và các thông tin cần thiết khác. Trong lược đồ Fair tracing, các thông tin thêm được yêu cầu có kích cỡ gần như tương tự hoặc nhỏ hơn so với lược đồ KV. Lý do là lược đồ KV cần chứng thực của pháp luật và các danh sách thẻ đánh dấu đã được ký. Tuy nhiên, lược đồ Fair tracing cần thêm một số thông tin khác cho lược đồ VSS. Đặc điểm chính hơn hẳn của lược đồ Fair tracing là: Ngân hàng không thể tự mình truy vết một cách bất hợp pháp mà bắt buộc phải hợp tác với nhà cung cấp dưới sự giám sát của pháp luật, tức là lược đồ đã đạt tới tiêu truy vết không gian lận. Ngoài ra, lược đồ Fair tracing an toàn hơn do sử dụng chữ ký một lần và ngăn chặn được double-spending trong pha trả tiền. Ưu điểm nữa của lược đồ Fair tracing là chữ ký có thể được tách rời khỏi giao thức chính, và việc khám phá ra khóa bí mật của một chữ ký không ảnh hưởng đến sơ đồ chữ ký khác mà chỉ ảnh hưởng đến tính bí mật của khách hàng bị truy vết. Trong lược đồ KV, chúng ta đã mặc định coi như có 3 đối tượng hoàn toàn khác nhau, mà không xét đến trường hợp ngân hàng cũng có thể giữ thêm vai trò nhà cung cấp. Trường hợp này khá hiếm, song không phải không xảy ra, bởi cũng có những ngân hàng tham gia kinh doanh một số mặt hàng nào đó. Trong trường hợp này, khách hàng phải tự dưa tất cả các giá trị được chia sẻ cho ngân hàng, do vậy ngân hàng có thể tự mình tìm ra thẻ đánh dấu bí mật. Khi đó, nếu khách hàng không quan tâm đến khả năng truy vết của ngân hàng, họ sẽ sử dụng những đồng tiền được phát hành bởi chính ngân hàng đó, nếu không, họ sẽ phải sử dụng những đồng tiền của những ngân hàng khác. Chương 4: MỘT SỐ HỆ THỐNG TIỀN ĐIỆN TỬ 4.1. HỆ THỐNG DIGICASH. Digicash (còn gọi là E-cash) là một sản phẩm tiền điện tử của công ty Digicash mà sáng lập viên là David Chaum, một chuyên gia quốc tế trong lĩnh vực mật mã. Hệ thống Digicash được thiết kế phục vụ cho các giao dịch an toàn từ PC đến PC thông qua Internet. Giống như mô hình tiền điện tử cơ bản, hệ thống Digicash có ba đối tượng chính: Khách hàng (Alice), nhà cung cấp (Bob) và nhà phát hành (thường là một ngân hàng). Điểm hấp dẫn của Digicash thể hiện ở chỗ hệ thống đảm bảo tính ẩn danh của khách hàng, khách hàng sẽ không cần tiết lộ thông tin cá nhân cho nhà cung c ấp hay ngân hàng ngoại trừ khách hàng cố tình gian lận trong giao dịch. Điều kiện để sử dụng hệ thống là cả Alice và Bob đều phải có tài khoản ở một ngân hàng có hỗ trợ Digicash. Ngoài ra, cần có thêm một phần mềm hỗ trợ việc tạo đồng tiền điện tử gọi là “Cyber wallet” (túi số) 4.1.1. Phương thức hoạt động. Quá trình giao dịch trong hệ thống Digicash gồm 4 pha: Pha 1: Tạo tiền điện tử (Tương ứng với giao thức rút tiền trong mô hình tiền điện tử) * Phía Alice, phần mềm “Cyber wallet” làm nhiệm vụ: - Sinh một dãy các số ngẫu nhiên dùng làm số sê-ri của đồng tiền. Các số này phải đủ dài để đảm bảo tính duy nhất - Gắn mỗi số sê-ri với một giá trị của đồng tiền - Mù hóa các giá trị trên, mã hóa bằng khóa riêng của Alice và gửi cho ngân hàng. * Ngân hàng sau khi nhận được các thông tin từ Alice sẽ thực hiện: - Ký mù lên các đồng tiền - Trừ đi một khoản tiền tương ứng ở trong tài khoản của Alice - Gửi các đồng tiền đã được ký mù cho Alic * Alice sử dụng phần mềm “Cyber wallet” để khử mù đồng tiền và thu được các đồng tiền có chữ ký hợp lệ của ngân hàng. Các đồng tiền này được lưu trên máy của Alice và được quản lý bởi phần mềm “Cyber wallet” Pha 2: Tiêu tiền điện tử (Tương ứng với giao thức trả tiền) - Alice gửi yêu cầu mua hàng đến Bob - Bob gửi thông tin trở lại về máy tính của Alice: thông tin sản phẩm, số tiền cần thanh toán… - Sau khi Alice chấp nhận giao dịch, phần mềm “Cyber wallet” sẽ tự động thu thập các đồng tiền theo đúng yêu cầu. - Alice gửi các đồng tiền điện tử cho Bob Pha 3: Đổi tiền điện tử (Tương ứng với giao thức gửi tiền) Trước khi chấp nhận thanh toán, Bob gửi các đồng tiền điện tử nhận được đến ngân hàng để kiểm tra tính hợp lệ. Ngân hàng kiểm tra chữ ký trên đồng tiền và xem nó được tiêu chưa. Nếu tất cả là hợp lệ, ngân hàng chấp những đồng tiền, tăng tài khoản của Bob tương ứng với số tiền, đồng thời lưu các dãy số trên đồng tiền vào danh sách những đồng tiền đã tiêu. Pha 4: Kết thúc giao dịch Sau khi tất cả đã được kiểm tra hợp lệ, Bob gửi sản phẩm và biên nhận đến Alice và giao dịch kết thúc. 4.4.2. Nhận xét. Ưu điểm của hệ thống Digicash là: Chi phí giao dịch thấp Độ an toàn của hệ thống dựa trên hệ mật mã RSA do mọi tính toán và sơ đồ ký của hệ thống đều dựa trên hệ mật mã này. Đảm bảo tính ẩn danh của người sử dụng. Trong hệ thống Digicash, cả Alice và Bob đều không cần biết lẫn nhau, và Bob cũng không thể liên kết bất cứ thông tin nào giữa Alice và các đồng tiền mà Alice đã tiêu Không phụ thuộc vào phần cứng: hệ thống Digicash không chỉ sử dụng cho PC mà còn có thể được áp dụng cho smart card (thẻ thông minh) và một số thiết bị điện tử khác Nhược điểm của hệ thống Digicash. Việc kiểm tra trực tuyến là cần thiết: Digicash là hệ thống thanh toán trực tuyến, nó đòi hỏi ngân hàng phải tham gia vào tất cả các giao dịch để kiểm tra tính hợp lệ của đồng tiền. Ngoài ra, cơ sở dữ liệu của ngân hàng phải đủ lớn để lưu tất cả các đồng tiền đã được sử dụng Cả khách hàng và nhà cung cấp đều phải có tài khoản ở cùng một ngân hàng có hỗ trợ tiền điện tử Digicash Nếu dữ liệu về các đồng tiền bị phá hủy (do máy tính hỏng, thông tin bị giải mã,…) thì không có cách nào lấy lại những đồng tiền đã bị mất. Lý do là ngân hàng không có mối liên hệ nào giữa đồng tiền và người sở hữu, trừ phi người sở hữu đồng ý bỏ tính ẩn danh khi sử dụng Digicash Tóm lại, mặc dù có những điểm không thuận lợi nhất định song với những ưu điểm của mình, Digicash được đánh giá là một hệ thống tiềm năng. Hiện nay, trên thế giới có một số các ngân hàng đã chấp nhận Digicash như: Ngân hàng Mark Twain (Mỹ), ngân hàng EUnet (Phần Lan), ngân hàng St. George (Đức),… 4.2. HỆ THỐNG PAYWORD PayWord là hệ thống thanh toán cho các giao dịch có giá trị nhỏ (micropayment), được đề xuất bởi Ronald Rivest và Adi Shamir (1996). PayWord phù hợp cho các thanh toán lặp lại nhiều lần với cùng một nhà cung cấp. Giao thức PayWord sử dụng một chuỗi các giá trị băm gọi là các payword, mỗi payword biểu diễn một giá trị nhất định. Hệ thống PayWord bao gồm ba đối tượng chính: User (Người sử dụng) – giả sử là Alice, Broker (Người môi giới, thường là một ngân hàng) và Vendor (Nhà cung cấp) – Giả sử là Bob. 4.2.1. Phương thức hoạt động. Trong Millicent, nhà cung cấp hoặc Broker tạo ra các scrip, còn trong PayWord, người sử dụng tạo ra các payword (tương đương với scrip trong Millicent). Payword có thể được tạo từ trước hoặc ngay khi thực hiện việc mua hàng. Trình tự như sau: Alice mở một tài khoản và nhận một chứng thực PayWord (PayWord Certificate) CU chứa các thông tin như: tên/ID của Broker, khóa công khai của Alice, ngày hết hạn và các thông tin khác được mã hóa bằng khóa bí mật của Broker: CU = {Broker_id, user_public_key, expiration_date, other_info} SK B Với chứng nhận CU, Alice có thể tạo ra các payword sử dụng hàm băm MD5 hay SHA. Cách thức Alice tạo các payword (w1, w2, …, wn) như sau: Trước tiên, Alice lấy wn ngẫu nhiên rồi tính chuỗi các giá trị băm theo thứ tự ngược lại: wi = h(wi+1) với i = n-1, n-2, …, 0 Chú ý rằng w0 không phải là một payword, nó là root của payword và là thành phần chính cấu tạo nên thỏa thuận M giữa Alice và Bob. Một thỏa thuận giữa người sử dụng và nhà cung cấp sẽ gồm các thông tin sau: + w0 + Định danh nhà cung cấp (V – vendor indentity) + Chứng thực của người sử dụng (CU – User’s certificate) + Ngày hết hạn thanh toán (D – expiration date) + các thông tin khác (IM) Alice dùng khóa bí mật của mình để ký lên các thông tin trên, như vậy: M = {w0, V, CU, D, IM}SKU Để mua hàng, trước tiên, Alice gửi M cho Bob. Bob giải mã M, kiểm tra V và D. Chữ ký của Alice được chứng thực bởi CU, do vậy nó ngăn chặn một bên thứ ba giả mạo M. Kể từ bây giờ (cho đến thời điểm expiration_date), bất cứ khi nào cần mua hàng từ Bob, Alice chỉ cần tạo một payword, gửi P = (wi, i) (1£ i £ n) cho Bob. Alice sẽ sử dụng các payword theo thứ tự: w1, w2,… + Bob kiểm tra payword, nếu hợp lệ, Bob lưu cặp payword này vào Plast + Nếu giá trị của mặt hàng lớn hơn giá trị của payword, Alice có thể trả thêm bằng cách bỏ qua các payword. Ví dụ: Giả sử payword chưa tiêu tiếp theo của Alice là wi+1, mỗi payword có trị giá là 1 cent, mặt hàng Alice cần mua có giá 5 cent. Khi đó, Alice có thể bỏ qua 4 payword và gửi (wi+5, i+5). Bob có thể kiểm tra được giá trị này bằng cách băm giá trị payword 5 lần (thực hiện việc băm cho đến khi được kết quả giống như giá trị được lưu trong Plast) Như vậy, tất cả dữ liệu Bob cần lưu trữ chỉ là M và Plast. Sau một chu kỳ (có thể là một ngày, một tuần,…) Bob thông báo lại giá trị của Plast cho Broker. Broker kiểm tra M và tính toán lượng tiền mà Alice đã tiêu bằng cách băm giá trị Plast, từ đó, trừ đi một khoản tương ứng (bằng tổng các giá trị băm được) trong tài khoản của Alice đồng thời tăng tài khoản của Bob. 4.2.2. Nhận xét. Về ưu điểm: Hệ thống PayWord có khả năng ngăn chặn việc giả mạo do: + Trong cùng một chuỗi, các payword đã tiêu là giá trị băm một chiều của các payword chưa tiêu. Do vậy, biết được các payword đã tiêu có thể xác định được các payword chưa tiêu + Một chuỗi payword được xác nhận bởi một thỏa thuận và được ký bởi người sử dụng, còn định danh của người sử dụng được đảm bảo bởi chứng nhận CU được ký bởi Broker. Về nhược điểm: + Việc hệ thống PayWord cho phép người sử dụng tự tạo ra các payword mà không cần đến ngân hàng chứng nhận giúp tăng tính linh hoạt cho người sử dụng lên rất nhiều. Người sử dụng có thể tạo các payword có giá trị theo ý muốn, tuy nhiên, nó cũng giúp cho Bob có kh ả năng gian lận payword. + Nếu Bob phát hiện ra Alice và Carol cùng tạo ra một chuỗi payword giống nhau và giả sử Alice tiêu trước Carol k payword, Bob hoàn toàn bi ết được k payword chưa tiêu của Carol, từ đó Bob có thể gian lận giá trị của k payword đó. Do vậy, hệ thống cần có cơ chế đảm bảo các chuỗi payword của những người sử dụng khác nhau là khác nhau. Tóm lại, PayWord là hệ thống có nhiều ưu điểm. Bản thân PayWord vẫn chưa được phát triển hoàn thiện, song hiện nay, có một số hệ thống thanh toán được phát triển dựa trên mô hình của PayWord như NetPay, UPayWord. 4.3. VẤN ĐỀ DÙNG TIỀN ĐIỆN TỬ Ở VIỆT NAM. Nhu cầu an toàn, an ninh thông tin trên mạng máy tính ngày càng trở nên cấp thiết, đặc biệt là khi thông tin trên giấy được thay dần bằng thông tin “điện tử” (thông tin “số”). Trong xu thế hội nhập quốc tế và khu vực, vấn đề giao dịch điện tử đã trở thành một xu thế tất yếu đối với tất cả các nước trên thế giới, trong đó có Việt Nam. Với tình hình nước ta hiện nay, khóa luận xin đưa ra một số đề nghị về khả năng sử dụng tiền điện tử ở Việt Nam. 1/. Xây dựng “đường đi” an toàn cho đồng tiền điện tử. Việc xây dựng “đường đi” an toàn cho đồng tiền điện tử, cụ thể là việc xây dựng một Cơ sở hạ tầng về mật mã khóa công khai, viết tắt là PKI (Public Key Infrastructure). Ở đây, PKI được hiểu là tập hợp các công cụ, phương tiện cùng các giao thức bảo đảm an toàn truyền tin cho các giao dịch trên mạng máy tính công khai. PKI là nền móng mà trên đó, các ứng dụng, các hệ thống an toàn bảo mật thông tin được thiết lập. Việc xây dựng PKI đồng nghĩa với việc xây dựng ba thành phần chính cấu thành nên PKI, bao gồm: + Xây dựng tập hợp các công cụ, các phương tiện, các giao thức bảo đảm an toàn thông tin. + Xây dựng hành lang pháp lý cho PKI, bao gồm: Luật giao dịch điện tử, các Quy định dưới luật. + Xây dựng các tổ chức điều hành giao dịch điện tử (CA, RA, LRA,…). Hiện nay có rất nhiều hệ thống đang được tin học hóa và con người là yếu tố quan trọng trong các hệ thống đó. Người sử dụng chỉ sử dụng hệ thống khi họ thực sự thấy tiện lợi và tin cậy. Tức là, chỉ có những hệ thống đảm bảo tin cậy mới được người sử dụng ủng hộ, khi đó nó gián tiếp thúc đẩy việc tin học hóa nói chung và lĩnh vực thương mại điện tử nói riêng. PKI là hệ thống đảm bảo tin cậy. Chỉ khi xây dựng được PKI, đồng tiền điện tử mới có thể “di chuyển” một cách an toàn từ nơi này sang nơi khác. 2/. Xây dựng các cơ sở bảo vệ “ví tiền” của người sử dụng. “Ví điện tử” là một phương tiện thanh toán mới so với các phương tiện thanh toán đã có từ lâu như thẻ tín dụng hay séc, nó cho phép ng ười sử dụng giao dịch với ngân hàng để nhận hay gửi tiền. Với “ví điện tử”, tiền điện tử được chuyển vào “ví tiền” của người sử dụng trước khi người sử dụng tiến hành bất cứ giao dịch nào. Cách thức này của “ví điện tử” giống hệt như ví tiền thông thường. Vấn đề đặt ra là làm sao để bảo đảm an toàn cho “ví tiền” của người sử dụng. Giải pháp cho vấn đề này chính là thẻ thông minh (Smart Card). Với thẻ thông minh, một con chip được gắn ngay trên mặt trước thẻ. Con chip này có khả năng lưu trữ lượng thông tin rất lớn. Nó có thể là một con chip thông thường hoặc một bộ vi xử lý. Ưu điểm của thẻ thông minh là khả năng bảo vệ dữ liệu khỏi sự truy nhập trái phép từ bên ngoài. Lý do là dữ liệu trên thẻ chỉ có thể được truy nhập thông qua các giao diện điều khiển bởi hệ điều hành, dữ liệu bí mật (như khóa công khai của người sử dụng, các chứng nhận,…) được ghi lên thẻ theo cách mà bên ngoài không thể đọc được. Thêm vào đó, dữ liệu trong thẻ chỉ có thể được đọc bởi CPU của thẻ. Ở Việt Nam, thẻ thông minh vẫn chưa thực sự phổ biến, chủ yếu chỉ là những loại hình thẻ thông minh đơn giản như SIM điện thoại di động. Hiện nay, thẻ thông minh mới được sản xuất bởi MK Technology Group – nhà sản xuất thẻ thông minh chuyên nghiệp, còn lại hầu hết được nhập dưới dạng thẻ trắng. Sau đó, các nhà phân phối sẽ nạp thông tin và cài đặt phần mềm tùy theo yêu cầu của khách hàng. Với xu thế hiện nay, việc sản xuất và đưa vào sử dụng các loại hình thẻ thông minh đã trở thành yêu cầu cấp thiết để xây dựng nền tảng cho thương mại điện tử nói chung và tiền điện tử nói riêng. 4.4. DEMO HỆ THỐNG TIỀN ĐIỆN TỬ DỰA TRÊN LƯỢC ĐỒ KV. Chương trình mô phỏng lược đồ KV, viết bằng ngôn ngữ C++ trên nền chương trình Dev-C 4.9.9.2. Chương trình dược chia làm 4 modul chính: Modul 1: Các hàm tính toán . Hàm tính modulo(a, n). Hàm tính a^n( mod p). Hàm tính a-1( mod p). Modul 2: Chuẩn bị các tham số. Hàm tính khóa công khai của ngân hàng cho chữ ký mù. Hàm tính khóa công khai của ngân hàng cho chữ ký không thể chối bỏ. Modul 3: Giao thức rút tiền: Hàm tính chữ ký không thể chối bỏ của Ngân hàng. Hàm tính chữ ký mù của khách hàng. Hàm tính tiền mà Ngân hàng gửi cho Khách hàng. Hàm xóa mù của Khách hàng. Modulo 4: Giao thức kiểm thử. Hàm kiểm tra đồng tiền có hợp lệ hay không. KẾT LUẬN Khóa luận đã trình bày những kiến thức tổng quát về tiền điện tử, nghiên cứu và phân tích giải pháp cho các bài toán này sinh khi dùng tiền điện tử. Những kết quả chính của luận văn là: 1/. Nghiên cứu và tìm hiểu trong tài liệu để hệ thống lại các vấn đề sau: - Các khái niệm cơ bản về số học và độ phức tạp thuật toán. Đây là các khái niệm được sử dụng trong mật mã học. - Các kiến thức nền tảng về mã hóa và chữ ký điện tử. - Các kiến thức tổng quan về thương mại điện tử và tiền điện tử. - Cơ sở khoa học của tiền điện tử: + Khái niệm, mô hình, tính chất và cấu trúc của tiền điện tử. + Tìm hiểu và so sánh hai hệ thống thanh toán điện tử: hệ thống thanh toán trực tuyến và hệ thống thanh toán ngoại tuyến. + Nghiên cứu và phân tích giải pháp cho hai vấn đề cơ bản của tiền điện tử: + Vấn đề ẩn danh người sử dụng tiền điện tử. + Vấn đề ngăn chặn tiêu một đồng tiền nhiều lần 2/. Nghiên cứu và phân tích hai hệ thống thanh toán điện tử hiện nay trên thế giới, bao gồm: DigiCash (đại diện cho các hệ thống hiện đang được sử dụng), và PayWord (đại diện cho các hệ thống đang trong giai đoạn đề xuất). 3/. Đề xuất về khả năng sử dụng tiền điện tử ở Việt Nam. 4/. C trình Demo về Hệ thống tiền điện tử, dựa trên lược đồ KV. Hướng phát triển tiếp theo của luận văn là nghiên cứu sâu hơn nữa về vấn đề double-spending trong tiền điện tử, phân tích các mô hình tiền điện tử, phát hiện các lỗ hổng an toàn trong các mô hình tiền điện tử và đề xuất các mô hình Tiền điện tử hiệu quả. DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt. GS Phan Đình Diệu (2006), Lý thuyết Mật Mã và An toàn thông tin, nhà xuất bản Đại học quốc gia Hà nội. PGS.TS Trịnh Nhật Tiến (2007), Giáo trình An toàn dữ liệu. PGS.TS Trịnh Nhật Tiến (2007), Bài giảng môn Phân tích đánh giá thuật toán. PGS.TS Trịnh Nhật Tiến , thanh toán bằng Tiền “điện tử”. Tiếng Anh. Byeong Kon Kim, School of Engieering, Information and Communications University (2004), Bài viết “Design of Fair Tracing E_Cash System based on Blind Signature” trên trang web. Digicash, home page. D.Chaum, A.Fiat, and M.Naor, Untraceable electronic cash, In Advances in Cryptology-Crypto '88. Ricarda Weber. Digital Payment Systems. 2000.

Các file đính kèm theo tài liệu này:

  • docNguyen Thi An_K50HTT_Khoa luan tot nghiep dai hoc.doc
Tài liệu liên quan