Nghiên Cứu Chữ Ký Điện Tử Và Ứng Dụng Trong Thanh Toán Điện Tử Nghiên Cứu Chữ Ký Điện Tử Và Ứng Dụng Trong Thanh Toán Điện Tử Nghiên Cứu Chữ Ký Điện Tử Và Ứng Dụng Trong Thanh Toán Điện Tử Nghiên Cứu Chữ Ký Điện Tử Và Ứng Dụng Trong Thanh Toán Điện Tử
TỔNG QUAN VỀ AN TOÀN THÔNG TIN TRÊN MẠNG
Vấn đề an toàn thông tin trên mạng Internet
Internet hiện nay đã trở thành mạng truyền dữ liệu được dùng phổ biến trên toàn thế giới Nó được sử dụng để truyền thư điện tử, truy nhập các website, kết nối tới các công sở ở xa, giám sát hệ thống từ xa, truyền tệp, làm việc ở nhà, liên lạc với các khách hàng và sử dụng các dịch vụ ngân hàng Những tập đoàn công nghiệp, những công ty đa quốc gia, thị trường chứng khoán… đều sử dụng môi trường mạng Internet để tiến hành xử lý và truyền nhận những thông tin đắt giá, những phiên giao dịch hay mua bán cổ phiếu Giờ đây với sự tăng trưởng nhanh của các siêu thị điện tử, thương mại điện tử thì hàng ngày có một khối lượng tiền rất lớn được lưu chuyển trên mạng toàn cầu
Rõ ràng tiềm năng của mạng Internet là rất lớn và Internet có những kỹ thuật tuyệt vời cho phép mọi người truy nhập, khai thác, chia sẻ thông tin Tuy nhiên nó lại bị hạn chế bởi chính thiết kế mở của mình Mạng Internet sử dụng giao thức truyền dữ liệu TCP/IP, các gói tin truyền từ điểm nguồn tới điểm đích sẽ đi qua rất nhiều các máy tính trung gian, các thông tin này lại không được mã hoá, vì vậy nó quá dễ dàng để can thiệp, theo dõi và giả mạo các bức điện trên Internet Lý do này khiến nhiều người đang đắn đo trong việc sử dụng mạng Internet cho các ứng dụng về tài chính và các số liệu nhạy cảm về tính pháp lý
Mạng Internet vốn có không cung cấp bất kỳ một sự bảo vệ nào đối với các thông tin được truyền trên nó, và nó có thể trở thành một ác mộng về an toàn thông tin đối với các công ty kết nối vào nó Bức tường lửa (Firewall) và việc điều khiển truy nhập (Access Control) bằng cách sử dụng mật khẩu (Password) một lần không thể xử lý được tất cả các vấn đề Rất dễ dàng để ghi lại và phân tích hầu hết các dữ liệu truyền trên mạng hay tấn công một máy tính rồi sử dụng máy tính này để tấn công các máy tính khác thậm chí ngay cả khi các máy tính này đã có bức tường lửa bảo vệ
Đặc điểm nổi bật của môi trường mạng là lượng người sử dụng đông đảo, điều này khiến việc bảo vệ các tài nguyên khỏi các mối đe dọa mất mát hoặc xâm phạm trở nên phức tạp hơn đáng kể so với trường hợp chỉ có một số lượng người dùng hạn chế.
5 một máy tính đơn lẻ, một người sử dụng Để bảo vệ thông tin đạt hiệu quả cao, chúng ta phải lường trước được càng nhiều càng tốt các khả năng xâm phạm, các sự cố rủi ro đối với thiết bị và dữ liệu trên mạng Xác định chính xác các nguy cơ nói trên ta càng quyết định được tốt các giải pháp phù hợp để ngăn chặn và giảm thiểu các thiệt hại
Trước tình hình như vậy, việc quản lý vận hành mạng sao cho an toàn, tận dụng tốt các ưu điểm mà hệ thống Mạng đem lại, hạn chế tối đa các nhược điểm gây ra là nhiệm vụ vô cùng khó khăn đòi hỏi những nhà thiết kế quản trị mạng cần có hiểu biết sâu sắc về mạng, đặc biệt là vấn đề an ninh mạng
Vấn đề an ninh mạng máy tính được chia làm ba lĩnh vực:
An toàn mạng (Network Security)
An toàn ứng dụng (Application Security)
An toàn hệ thống (System Security)
An toàn mạng (Network Security)
Phần này mô tả các phương pháp đảm bảo an toàn cho các quá trình trao đổi dữ liệu trên mạng Nó đảm bảo cho dữ liệu sẽ đến đúng nơi cần truyền, dữ liệu không bị xem trộm trong đường truyền, đảm bảo tính toàn vẹn của dữ liệu từ nơi gửi đến nơi nhận
An toàn ứng dụng (Application Security)
Phần này mô tả các phương pháp bảm mật được áp dụng cho từng ứng dụng cụ thể và nó độc lập với việc đảm bảo an toàn mạng Ở mức này sẽ đảm bảo vấn đề bảo mật thông tin cá nhân trên các ứng dụng cụ thể
An toàn hệ thống (System Security)
Một hệ thống an toàn là hệ thống chỉ cho phép các thành viên thực hiện các chức năng mà họ được phép An toàn hệ thống khác với an toàn về mặt dữ liệu, những thành viên của hệ thống không có quyền thao tác với dữ liệu thì cũng không thể sửa được dữ liệu
Yêu cầu của an toàn thông tin
Một hệ thống mạng đảm bảo an toàn nếu nó hội đủ các yếu tố sau [7]:
Tính riêng tƣ ( Privacy ) hay tính bí mật ( Confidentiality ):
Có lẽ hầu hết sự chú ý khi nói đến an toàn của mạng Internet là tính riêng tư của dữ liệu được truyền trên mạng Vấn đề là ở chỗ thông tin được truyền đi trên mạng công cộng mà không biết nó có bị xem trộm bởi bên thứ ba hay không Tính riêng tư này yêu cầu rất khác nhau phụ thuộc vào các bên và mục đích của thông tin trao đổi Ví dụ như hầu hết mọi người không lo lắng về bức thư điện tử của họ có bị xem trộm hay không, có lẽ nó cũng không thu hút được sự tò mò cho lắm Tuy nhiên các thông tin nội bộ giữa tổng hành dinh và các chi nhánh sẽ thu hút được sự chú ý hơn Các công ty sẽ lo lắng về các thông tin kinh doanh của họ bị lọt vào tay đối thủ cạnh tranh, và họ sẽ bị mất đi lợi nhuận hay thị trường
Tính toàn vẹn của dữ liệu ( Data intergrity ): đảm bảo rằng các gói tin gửi đi/ nhận được không có sự trùng lặp, chèn, sửa đổi, hoán vị hoặc tái sử dụng
Để đảm bảo tính tin cậy trong truyền thông mạng, ngoài tính riêng tư, tính toàn vẹn của dữ liệu cũng cần được bảo vệ Do bản chất của Internet, dữ liệu truyền đi thường được lưu trữ tạm thời tại các máy trung gian, nơi mà tính toàn vẹn của chúng có thể bị xâm phạm do các hành động cố ý hoặc vô tình Nói cách khác, bất kỳ ai cũng có thể thay đổi nội dung dữ liệu tại bất kỳ điểm nào trên đường truyền sau khi rời khỏi máy phát và trước khi đến đích Ví dụ điển hình là cách tin tặc đính kèm vi-rút vào phần mềm được tải xuống và lây nhiễm sang các máy khác trong cùng mạng.
Xác thực ( Authentication ): liên quan đến việc đảm bảo rằng một cuộc trao đổi là đáng tin Để thương mại điện tử được đưa vào khai thác trên mạng Internet, một vấn đề rất quan trọng là phải biết mình đang trao đổi dữ liệu với ai? Xác thực là việc xác
7 định máy trạm hay máy chủ được nối có đích thực là máy trạm hay máy chủ cần nối không? Nó cũng được dùng để đảm bảo là một tệp hay các số liệu được đưa đến từ một nguồn tin cậy
Hiện nay trên Internet, một máy tính có thể chặn một bức điện hay yêu cầu gửi bức điện tới một địa chỉ IP nhất định, và đóng giả như là một máy mong đợi Thí dụ, một máy có thể đóng giả như một máy chủ để cho máy trạm liên lạc với nó Bằng cách này, cuộc đối thoại giữa máy trạm và máy chủ sẽ diễn ra, theo đó máy trạm sẽ bị lừa cung cấp các thông tin cho máy chủ mà nó nghĩ là đang cung cấp thông tin cho máy cần cung cấp Cách này được gọi là “masquerading” hay
“spoofing”, nó cũng có thể hoạt động theo chiều ngược lại, lúc này một máy sẽ đóng giả làm máy trạm hợp lệ và trao đổi thông tin với máy chủ
Khi tiến hành giao dịch thương mại điện tử hay chuyển tiền trực tuyến, sự tin tưởng của người dùng vào máy chủ mà họ tin tưởng để cung cấp thông tin cá nhân như số tài khoản là vô cùng quan trọng Nếu không có sự tin tưởng này, thương mại điện tử khó có thể phát triển.
Tính không thể phủ nhận ( Non repudiation ):
Ngăn cản người gửi và người nhận khỏi sự chối bỏ một gói tin đã được truyền
Vì vậy khi một gói tin đã được gửi đi, bên nhận có thể chứng minh được rằng gói tin đó thật sự được gửi đi bởi người gửi hợp pháp Hoàn toàn tương tự khi một gói tin được nhận, bên phát có thể chứng minh được gói tin đó đúng thật là được nhận bởi người nhận hợp lệ
Điều khiển truy nhập ( Access Control ):
Là khả năng hạn chế và điều khiển truy nhập tới các hệ thống máy chủ và các ứng dụng thông qua hệ thống truyền thông Để đạt được việc điều khiển này, mỗi thực thể cố gắng đạt được quyền truy nhập phải qua nhận diện, hoặc được xác nhận sao cho quyền truy nhập có thể được đáp ứng nhu cầu của từng cá nhân
Các cuộc tấn công khác nhau có thể tạo ra sự mất mát hoặc thiếu về sự sẵn sàng của dịch vụ Do đó, dịch vụ này nhằm ngăn chặn và khôi phục những tổn thất của hệ thống do các cuộc tấn công gây ra.
Các giải pháp an toàn thông tin
Hiện nay mạng Internet được xây dựng dựa trên mô hình 7 tầng OSI và sử dụng bộ giao thức truyền thông TCP/IP[8]
Hình 1.1: Những lỗ hổng bảo mật tiềm tàng
Các giải pháp an ninh mạng được định hướng tới ba mục tiêu chính như sau:
Theo dõi Vấn đề đầu tiên là Bảo mật Ta đã biết, ở một mạng Internet thông thường, các gói tin được truyền dưới dạng không mã hóa, ta có thể cài đặt một chương trình thông tin sẽ bị truy cập một cách trái phép, đây là hình thức tấn công chủ động hay
9 là hình thức tấn công bên theo dõi mạng Khi đó ta có thể nắm bắt các gói tin trên mạng, đọc chúng ra, các trong mạng Để chống lại việc này, ta tiến hành các hình thức bảo mật như: Với phần cứng, ta xây dựng các mạng riêng ảo, với các giao thức truyền thông đã được mã hóa Với phần mềm, ta xây dựng các chương trình mã hóa dữ liệu riêng biệt, các dữ liệu truyền đi sẽ được mã hóa ở nguồn truyền và giải mã ở đích nhận Để ngăn chặn các thông tin trái phép cũng như các hình thức phá hoại từ ngoài vào, ta sử dụng các giải pháp an toàn về phần cứng và phần mềm như: Firewall, các bộ định tuyến Router, các Switch thông minh
Theo dõi các thông tin trên mạng phục vụ mục đích theo dõi phát hiện các thông tin trái phép, các hình thức phá hoại mới mà các biện pháp ngăn chặn chưa phát hiện ra Sau đó, từ các thông tin theo dõi được, ta đề ra các cách giải quyết, xử lý Cuối cùng ta sẽ tiến hành bổ sung các cách giải quyết đó vào giải pháp ngăn chặn như nạp thêm thông tin chặn bắt vào Firewall, thiết lập thêm các bộ định tuyến, phân mảnh mạng, quy hoach lại luồng đi của các gói tin
Một giải pháp an ninh hoàn hảo cần tối đa hóa lợi ích của việc truyền thông dữ liệu qua mạng, đồng thời đảm bảo các thành phần sau: tính bảo mật, tính toàn vẹn và tính sẵn sàng của dữ liệu Tính bảo mật đảm bảo dữ liệu chỉ được truy cập bởi những người dùng được ủy quyền, tính toàn vẹn bảo vệ tính chính xác và hoàn chỉnh của dữ liệu, còn tính sẵn sàng đảm bảo dữ liệu có thể truy xuất được bất cứ lúc nào khi cần.
Bảo vệ vật lý ( Physical Security )
Kiểm soát truy nhập ( Access Control )
Chứng thực ( Certification ) và xác thực ( Authentication ) thông tin
Trong các chương tiếp theo, “Các kỹ thuật mã hóa” – chương 2 và “Chữ kí điện tử” – chương 3, sẽ trình bày chi tiết hơn vấn đề đảm bảo an toàn hệ thống mạng bằng việc sử dụng các cơ chế mật mã hoá, cơ chế chứng thực và xác thực thông tin
Khái niệm mã hóa và giải mã
Mã hoá (encryption) là quá trình chuyển đổi thông tin từ dạng có thể đọc được sang dạng không thể đọc được đối với những người không được nhận thông tin đó
Giải mã là quá trình chuyển đổi thông tin từ dạng không thể đọc được sang dạng có thể đọc được Các thuật toán mã hóa là các hàm toán học đặc biệt được sử dụng để thực hiện quá trình này giúp bảo vệ thông tin khỏi những truy cập trái phép.
Mã hóa đóng vai trò bảo mật thông tin, ngăn chặn kẻ xâm nhập đọc hoặc sửa đổi Mã hóa và giải mã tuân theo nguyên tắc quan hệ một-một giữa văn bản ban đầu (plaintext) và văn bản đã mã hóa (ciphertext) Quá trình mã hóa và giải mã thực chất là thực hiện các hàm có hai tham số:
Bản tin được mã hoá (là plaintext) /giải mã (là ciphertext)
Gọi hai hàm đó là E k và D k ứng với một từ khoá mã K Khi đó hai hàm này phải thoả mãn biểu thức sau:
P = D k (C) = D k (E k (P)) Để giải mã thì phải biết được cách mã hoá, tức là phải biết được hàm E k và biết được Key Hàm mã hoá E k có thể được thay đổi sau vài năm nhưng Key có thể thay đổi thường xuyên nếu cần, hàm Ek nói chung không thể thay đổi liên tục vì sẽ rất khó khăn để nhiều người dùng cùng thay đổi cả phần cứng và phần mềm thiết bị mã hoá, giải mã Một phương pháp mã hoá dữ liệu được bảo mật 5 năm thì có nghĩa là đã bảo mật thành công
Hàm E k trước khi dùng phải được kiểm tra độ an toàn bảo mật và phải được thống nhất sử dụng chung Vì vậy hàm E k chưa phải là cái bí mật, Key mới thực sự là bí mật Mức độ bảo mật sẽ tăng lên khi chiều dài của Key tăng lên
Hình 1.2: Mô hình Mã hoá và Giải mã Để bảo đảm an toàn thì phương thức mã hoá phải có độ bảo mật cao Ngay cả khi giải mã được một số đoạn tin thì vẫn rất khó giải mã được nội dung thông tin
Kích thước không gian khóa trong mã hóa được định nghĩa là số lượng các cặp khóa mã hóa và giải mã tồn tại trong một hệ thống mã hóa [1] Khóa mã hóa là một phương tiện xác định phép biến đổi mã hóa cụ thể trong một tập hợp các phép biến đổi có sẵn Ví dụ, nếu có một phép biến đổi mã khối độ dài t, thì số lượng các hàm mã hóa có thể là t! Mỗi hàm mã hóa này có thể được biểu diễn bằng một phép hoán vị duy nhất, chính là khóa mã hóa.
Kích thước không gian khóa có mối quan hệ chặt chẽ với tính bảo mật của hệ thống mã hóa Cụ thể, kích thước khóa càng lớn thì mức độ bảo mật càng cao Đây là một đặc điểm rất quan trọng ảnh hưởng đến tính an toàn của hệ thống.
Kỹ thuật mã hóa khóa bí mật
Mã hóa khóa bí mật hay mã hóa khóa đối xứng là dạng kinh điển của mật mã học đã được sử dụng từ xa xưa Trong các hệ mã khóa đối xứng, hai bên gửi và nhận tin chia sẻ chung một khóa bí mật được dùng để mã hóa và giải mã các bản
12 tin Điều này đòi hỏi giữa hai bên phải thiết lập một kênh truyền liên lạc an toàn để họ thống nhất về khóa bí mật dùng chung đó
Hình 1.3: Sơ đồ minh hoạ Symetric-key Crytography
Một truyền thông hai phía sử dụng mã hóa khóa đối xứng có thể mô tả bằng sơ đồ khối như hình sau [1]:
Hình 1.4: Truyền thông hai phía sử dụng mã hóa đối xứng
1.5.2 Mã hóa sử dụng chuẩn DES
Vào những năm đầu thập kỷ 70, nhu cầu về một tiêu chuẩn mã hóa thuật toán thống nhất trở nên cấp thiết Năm 1977, Văn phòng Tiêu chuẩn Quốc gia ra mắt chuẩn DES để sử dụng cho các ứng dụng tại Mỹ DES mã hóa các khối dữ liệu 64 bit thành các khối mã 64 bit.
D d (c) = m Đích m e Kênh an toàn e Kênh không an toàn
13 bits với khóa 56 bits (thực ra DES sử dụng khoá có độ dài 64 bits nhưng sử dụng 8 bits để kiểm tra chẵn lẻ (parity) tại các vị trí 8,16, 64 nên độ dài khoá chỉ còn lại
56 bits) Như vậy DES thuộc loại mã hoá đối xứng và sử dụng mô hình mã khối CBC Sơ đồ của phương pháp mã hoá này như hình 2.7:
Hình 1.5: Giải thuật DES (a)-Sơ đồ tổng quan (b)-Một tầng lặp
Bản rõ (PlainText) được mã hoá từng khối 64 bits thành khối bản mã (CipherText) 64 bits Thuật toán được tham số hoá bằng một key 56 bits Phép mã hoá gồm 19 tầng:
- Tầng 1: là tầng hoán vị các bit của plainText
- Tầng 18: đổi chỗ 32 bits trái với 32 bits phải
- Tầng 19: đảo từng bit một 0 → 1 và 1 → 0
- Tầng 2-17 là các tầng lặp (hoạt động giống nhau nhưng có khoá khác nhau)
Tại mỗi tầng lặp i, hàm f đảm nhận vai trò nòng cốt trong quá trình mã hóa, nhận đầu vào là R i-1 và K i (khóa 48 bit) và trả về một giá trị Giá trị này sau đó được xor với R i-1 để tạo ra R i, trong khi L i được thiết lập bằng R i-1 Cấu trúc luân phiên này tạo ra chuỗi các nửa khối L và R liên kết với nhau thông qua phép toán xor và hàm f, góp phần tạo nên sự phức tạp của thuật toán DES.
32 bits R i-1 được hoán vị và lặp lại theo một qui luật cố định để tạo ra chuỗi
E và K i đi qua một bộ XOR để lấy ra 48 bits
48 bits này được chia ra làm 8 nhóm 6 bits, mỗi nhóm được đưa vào một S- box riêng (S-box là bộ mã hoá thay thế) 6 bits đầu vào tương ứng với 4 bits đầu ra trên S-box đó
8*4 bits được đi qua một bộ P-box (P-box là bộ mã hoá thay đổi trật tự) Trong mỗi tầng lặp dùng một K i riêng được tạo ra như sau:
56 bits Key được hoán vị ở mỗi tầng khác nhau
Ngay trước mỗi tầng lặp 56 bits đã được hoán vị được chia thành hai nhóm
28 bits, mỗi nhóm quay trái số bit tuỳ theo chỉ số tầng lặp i (nếu i=1,2,9,16 thì quay trái 1 bit, các tầng còn lại quay trái 2 bits)
Kết quả nhận được lại được hoán vị rồi lấy ra 48 bits (Sau khi hoán vị Ci bỏ qua các bit 9,18,22,25 tạo thành 24 bits nửa trái của K i còn D i bỏ qua các bit 35,38,43,54 tạo ra 24 bits nửa phải của K i )
Như vậy một tập con 48 bit được lấy ra từ 56 bit Key được thay đổi ở mỗi vòng
Cấu trúc của các S-box:
Mỗi S-box như một bộ biến đổi gồm 4 bảng biến đổi, mỗi bảng biến đổi một đầu vào 4 bit thành đầu ra cũng 4 bit (bảng 10 dòng) Đầu vào 4 bit chính là lấy từ các bit 2-5 của nhóm 6 bit Còn lại các bit 1 và 6 sẽ dùng để xác định 1 trong 4 bảng biến đổi của S-box Vì thế chúng được gọi là các bit điều khiển
Quá trình giải mã DES được thực hiện theo cùng giải thuật này nhưng theo thứ tự ngược lại: ở vòng lặp thứ i sử dụng khoá K 17-i (K 16 ở vòng lặp đầu tiên, K 1 ở vòng lặp cuối cùng) và Ri-1 = L i ; L i-1 = R i ⊕ F(L i ,K i )
Sơ đồ biểu diễn thuật toán tạo khóa cho DES được mô tả như trong hình 2.8 sau:
Hình 1.6: Sơ đồ biểu diễn thuật toán tạo khoá
Tấn công bằng phương pháp vét cạn (hay brute-force attack)
Tấn công dạng brute-force là dạng tấn công bằng cách thử tất cả các khoá đến khi tìm được khoá đúng
DES có 2 56 7 khóa Nếu như biết một cặp TIN/MÃ thì chúng ta có thể có tất cả 10 7 này để tìm ra khóa cho kết quả khớp
Một cuộc tấn công dạng brute-force gần đây có khả năng thử 245 tỉ khoá trong một giây do tốc độ chip xử lý ngày càng cao và môi trường tính toán song song ngày càng mở rộng Với khả năng tính toán này, một tin tặc có thể thử tất cả các khoá 56 bits (2 56 trường hợp) trong 81 giờ, tìm ra khoá với thời gian trung bình là
40 giờ Vì vậy, một bản tin được mã hoá bằng giải thuật DES nguyên bản hoàn toàn có thể khôi phục được Tuy nhiên với khoá 112 bits (2 112 trường hợp) thì sẽ phải mất trung bình 366 nghìn tỉ (trillion) năm để khám phá ra khoá Chính vì vậy, để tăng tính bảo mật của thông tin, phải tăng số lần mã hoá lên, chẳng hạn mã hoá DES
Hình 1.7: Mã hóa 3 tầng DES (Triple DES) Đây chính là phương pháp được sử dụng nhiều nhất để thay thế cho DES Triple
DES được thực hiện bằng việc chuyển dữ liệu thành dạng mật mã thông qua 3 quá trình DES Dữ liệu trước hết được mã hoá với một khoá bằng việc truyền qua giải thuật mã hoá DES Sau đó, dữ liệu đầu ra được truyền qua giải thuật mã hoá DES
Sử dụng lần lượt ba khóa DES (Data Encryption Standard) với một khóa thứ hai Sau đó, đầu ra của quá trình thứ hai được mã hóa lại bằng DES bằng cách sử dụng một khóa thứ ba hoặc sử dụng lại khóa thứ nhất Trong trường hợp đầu tiên, tổng chiều dài khóa là 112 bit (Triple DES 2 khóa), còn trường hợp thứ hai là 168 bit (Triple DES 3 khóa).
Triple DES với 2 khoá được sử dụng thay thế cho DES khá phổ biến và đã được chấp nhận sử dụng trong chuẩn quản lý khoá tài chính ISO 8732 Triple DES hoạt động chậm hơn gấp 3 lần so với DES nhưng an toàn hơn gấp hàng tỉ lần nếu sử dụng một cách đúng đắn.
Kỹ thuật mã hóa khóa công khai
Mã hóa khóa đối xứng đã và đang được sử dụng rất rộng rãi, tạo ra nhiều hệ thống liên lạc một cách an toàn qua mạng công cộng Tuy nhiên, mã hóa khóa đối xứng gặp một số vấn đề, đặc biệt đối với các hệ thống lớn:
Vấn đề quản lý khóa (Tạo, lưu mật, trao chuyển …) là rất phức tạp và ngày càng khó khi sử dụng trong môi trường trao đổi tin giữa rất nhiều người dùng Với số lượng user là n thì số lượng khóa cần tạo lập là n(n - 1)/2 Mỗi người dùng phải tạo và lưu (n-1) khóa bí mật để làm việc với (n-1) người khác trên mạng Như vậy rất khó khăn và không an toàn khi n tăng lớn
Vấn đề thứ hai là trên cơ sở mã đối xứng, không thể thiết lập được khái niệm chữ kí điện tử (mà thể hiện được các chức năng của chữ kí tay trong thực tế) và cũng do đó không có dịch vụ không thể phủ nhận được (non - repudiation) cho các giao dịch thương mại trên mạng
Xuất phát từ sự hạn chế của phương pháp mã hoá đối xứng, mã khoá công khai hay mã hoá bất đối xứng (asymmetric algorithm) đã ra đời và nhanh chóng tạo ra một cuộc cách mạng trong toàn bộ lịch sử mã hoá
Vào những năm 1975-1976, Whitfield Diffie và Martin Hellman đã có công đề xuất ý tưởng về hệ thống mật mã khóa công khai Khái niệm này đánh dấu một bước ngoặt trong lĩnh vực mật mã học, vì nó cho phép mỗi người dùng sở hữu một khóa riêng và một khóa công khai, trái ngược với phương pháp truyền thống là sử dụng chung một khóa cho cả hai bên trong một lần trao đổi.
Trong hệ thống mã hóa khóa công khai, mỗi user có hai khóa, một được gọi là khóa bí mật (secret key hay private key) và một được gọi là khóa công khai (public key) Khóa thứ nhất chỉ mình user biết và giữ bí mật, khóa thứ hai được phổ biến công khai Khóa thứ nhất thường đi liền với thuật toán giải mã, còn khóa thứ hai thường đi liền với thuật toán sinh mã, tuy nhiên điều đó không phải là bắt buộc Kí hiệu z là khóa riêng và Z là khóa công khai
Hoạt động của chúng là đối xứng:
Trong đó (1) được sử dụng cho truyền tin mật : B, C, D muốn gửi tin cho A chỉ việc mã hóa thông tin với khóa công khai (Z A ) của A rồi gửi đi Chỉ có A mới có thể có khóa riêng để giải mã (zA) và đọc được tin, E dù nghe trộm cũng không thể giải mã để lấy được tin vì không có khóa z A
Còn (2) sẽ được sử dụng để xây dựng các hệ chữ kí điện tử (Ký bằng E(Z A ) và kiểm định bằng D(z A ))
Hình 1.8 Sơ đồ minh hoạ Public-key Crytography
Một truyền thông hai phía sử dụng mã hóa khóa đối xứng có thể mô tả bằng sơ đồ khối như hình sau[1]:
Hình 1.9: Mô hình truyền thông hai phía sử dụng mã hóa khóa công khai
1.6.2 Nguyên tắc cấu tạo một hệ khóa công khai
Một hệ mã PKC có thể được tạo dựng trên cơ sở sử dụng một hàm kiểu one – way (một chiều) Một hàm f được gọi là one – way nếu: a Đối với mọi X tính ra Y = f(X) là dễ dàng; b Khi biết Y rất khó để tính ra X
Alice Bob e Kênh không an toàn c
Cần một hàm one – way đặc biệt mà có trang bị một trap – door (cửa bẫy), sao cho nếu biết trap – door thì việc tính X khi biết f(X) là dễ dàng còn ngược lại sẽ khó khăn
Một hàm one – way có trap – door như thế có thể dùng để tạo một hệ mã PKC Lấy Ez (hàm sinh mã) là hàm one – way có trap – door Trap – door chính là khóa bí mật, mà nếu biết nó thì có thể dễ dàng tính được nghịch đảo của E z tức là biết D z , còn nếu không biết thì rất khó tính được
Các thuật toán khóa công khai dựa trên việc sử dụng khóa công khai để mã hóa và khóa riêng tương ứng để giải mã Do đó, mỗi người dùng trong hệ thống sở hữu hai khóa riêng biệt: khóa mã hóa E và khóa giải mã D.
Những giải thuật này có những đặc tính quan trọng sau:
D(E(P)) = P (Plaintext - bản tin mã hoá)
Khối lượng tính toán không khả thi để xác định khóa giải mã D khi chỉ biết giải thuật mật mã và khóa mã hóa E
Không thể phát hiện khoá mã hoá E từ bản tin P chọn sẵn
Trong một số giải thuật như RSA còn có đặc điểm: hoặc một trong hai khóa liên quan có thể được sử dụng cho mã hóa còn khóa kia được dùng cho giải mã
Ngoài ra có một đặc tính khác, đó là việc tính toán cho các bên tạo cặp khoá mã hoá - giải mã, việc tính toán khi biết bản tin cần mã hoá và khoá công khai của bên kia để tạo bản mã tương ứng, việc sử dụng bản tin đã được mã hoá và khoá bí mật của mình để khôi phục bản tin ban đầu phải dễ dàng thực hiện và với tốc độ cao
Các bước cần thiết trong quá trình mã hóa khóa công khai:
Mỗi hệ thống đầu cuối trong mạng tạo ra một cặp khóa để dùng cho mã hóa và giải mã đoạn tin mà nó sẽ nhận
Mỗi hệ thống công bố rộng rãi khóa mã hóa bằng cách đặt khóa vào một thanh ghi hay một file công khai Đây là khóa công khai (public key), khóa còn lại được giữ riêng (private key)
Nếu A muốn gửi một đoạn tin P tới B thì A mã hóa đoạn tin bằng khóa công khai E B của B (gửi E B (P) cho B)
Khi B nhận đoạn tin mã hóa, nó giải mã bằng khóa bí mật D B của mình (tính
D B (E B (P))=P) Không một người nào khác có thể giải mã đoạn tin mã này bởi vì chỉ có mình B biết khóa bí mật đó thôi
Với cách tiếp cận này, tất cả những người tham gia có thể truy xuất khóa công khai Khóa riêng được tạo ra bởi từng cá nhân, vì vậy không bao giờ được công bố Ở bất kỳ thời điểm nào, hệ thống cũng có thể thay đổi khoá riêng của nó và công bố khoá công khai tương ứng để thay thế khoá công khai cũ
1.6.3 Mã hóa khóa công khai RSA
Các hệ thống lai
Các hệ thống lai kết hợp các hệ mã khóa công khai và hệ mã khóa bí mật [22] Bắt đầu quá trình giao tiếp giữa 2 bên là thiết lập một số thoả thuận, thực hiện bằng cách sử dụng một bộ mã khoá công khai, kết quả là các bên tham gia thoả thuận được khoá phiên (session key) Khoá phiên được sử dụng với một bộ mã hoá đối xứng để mã hoá phần còn lại của quá trình giao tiếp Khoá phiên sẽ hết chức năng sử dụng khi các bên kết thúc quá trình giao tiếp Nếu họ muốn một quá trình giao tiếp mới, họ sẽ tạo một khoá phiên mới, điều này sẽ làm cho việc thám mã vất vả hơn
Những hệ thống lai có cả sức mạnh của các bộ mã hoá đối xứng và mã khoá công khai Trong hệ thống lai, một bộ mã khoá công khai được dùng cho chứng thực và toàn vẹn dữ liệu, và một bộ mã hoá đối xứng được sử dụng để bảo mật (confidentiality) Những bộ mã hoá đối xứng có tốc độ nhanh hơn những bộ mã khoá công khai, do đó sẽ tăng tính hiệu quả khi sử dụng những bộ mã hoá đối xứng cho hầu hết quá trình giao tiếp Cũng như vậy, những bộ mã khoá công khai lại phù hợp với việc chứng thực và trao đổi khoá phiên
So sánh mã hóa khóa đối xứng và mã hóa khóa công khai
Mã hoá đối xứng Mã hoá công khai
* Khoá: sử dụng 1 khoá chung cho cả mã hoá và giải mã khoá được giữ bí mật (secret key)
- 1 khoá công khai (public key) dùng để mã hoá (được công bố rộng rãi)
- 1 khoá riêng (private key) dùng để giải mã (được giữ bí mật)
* Yêu cầu để hoạt động:
- Giải thuật tương tự cho mã hóa và giải mã
- Người gửi và người nhận phải tham gia cùng giải thuật và cùng khóa
* Yêu cầu để hoạt động:
- Một giải thuật cho mã hóa và một giải thuật cho giải mã
- Người gửi và người nhận, mỗi người phải có cặp khóa cho riêng mình
* Yêu cầu cho bảo mật:
- Khóa phải được giữ bí mật
- Không thể hay ít nhất không có tính thực tế để giải mã đoạn tin nếu thông tin khác không có sẵn
- Kiến thức về giải thuật cộng với các mẫu về mật mã không đủ để xác định khóa
* Yêu cầu cho bảo mật:
- Một trong hai khóa phải được giữ bí mật
- Không thể hay ít nhất không có tính thực tế để giải mã đoạn tin nếu thông tin khác không có sẵn
- Kiến thức về giải thuật cộng với một trong các khóa, cộng với các mẫu về mật mã không đủ để xác định khóa kia
- dùng để mã hoá/giải mã
- dùng để mã hoá/giải mã
- xây dựng chữ ký số
- chậm hơn rất nhiều lần
Bảng 1.1: So sánh Mã hoá đối xứng và Mã hoá công khai
CHỮ KÝ ĐIỆN TỬ
Một số khái niệm cơ bản
Chữ kí số (Digital Signature) [4]
Chữ kí số là sự biến đổi của một bản tin sử dụng một hệ thống mã bất đối xứng (asymmetric cryptosystem) và một hàm băm mà một người có bản tin ban đầu và khóa công khai của người kí có thể xác định chính xác được:
1 Sự biến đổi có được tạo ra bằng cách sử dụng khóa bí mật tương ứng với khóa công khai của người kí hay không
2 Bản tin ban đầu có bị thay đổi do sự biến đổi của nó gây ra hay không
Chữ kí số (hay chữ kí điện tử) là ứng dụng quan trọng nhất của mã hoá khoá công khai Chữ ký điện tử là một hình thức để đảm bảo tính pháp lý của các cam kết Người gửi mã hóa đoạn tin (ký) bằng khóa bí mật của mình, người nhận giải mã bằng khóa công khai của người gửi Chữ ký được áp dụng đối với thông điệp hay với một khối dữ liệu nhỏ tương ứng với thông điệp Nó phải đáp ứng được các yêu cầu sau:
- Phải tương đối dễ dàng để tạo ra chữ ký điện tử
- Phải tương đối dễ dàng để xác định và kiểm tra chữ ký điện tử
- Phải không có khả năng tính toán để giả mạo một chữ ký điện tử, hoặc tạo một đoạn tin mới cho một chữ ký điện tử có sẵn
- Người nhận có thể xác thực được đặc điểm nhận dạng của người gửi, nói cách khác, chữ ký phải sử dụng một số thông tin duy nhất đối với người gửi để chống cả giả mạo và phủ nhận Vì vậy, người gửi sau này không thể chối bỏ được nội dung của bản tin mà mình đã gửi
- Người nhận không thể bịa đặt hay thay đổi bản tin nhận được
Chứng chỉ là một bản tin thực hiện các chức năng sau:
1 Xác định tổ chức cấp chứng chỉ (Certification authority - CA) phát hành chứng chỉ đó
2 Gọi tên hoặc nhận dạng người sử dụng chứng chỉ (subscriber)
3 Chứa khóa công khai của người sử dụng chứng chỉ
4 Xác định thời hạn hợp lệ (operational period) của chứng chỉ (tức khoảng thời gian mà thông tin trong chứng chỉ còn hiệu lực)
5 Xác định chứng chỉ đã được kí một cách số hóa bởi tổ chức cấp chứng chỉ phát hành nó
Một người muốn xác minh một chữ kí điện tử thì ít nhất cần phải có: (1) khóa công khai tương ứng với khóa bí mật được dùng để tạo chữ kí, và (2) chứng cứ chắc chắn rằng khóa công khai (và do đó cả khóa bí mật tương ứng của cặp khóa) là của người ký Mục đích cơ bản của chứng chỉ là đáp ứng cả hai yêu cầu này theo cách thức tin cậy
Một chứng chỉ thông thường sẽ ở dạng các bản ghi nhị phân (binary record) nằm trong quá trình trao đổi dữ liệu điện tử (Electric Data Interchange - EDI) hiện thời Việc sử dụng các trường bổ sung hay các mở rộng nhằm cung cấp thêm thông tin hay các thuộc tính bổ sung (ví dụ như sự xác nhận người sử dụng chứng chỉ (subscriber ) như một tác nhân, hay tham chiếu chéo đến các cơ sở dữ liệu khác cung cấp thông tin về người sử dụng) là không bắt buộc
Tổ chức cấp chứng chỉ (CA) cần phải ký một cách số hóa lên chứng chỉ, nhằm hai mục đích: (1) Bảo vệ tính toàn vẹn thông tin của chứng chỉ, và (2) cho phép xác nhận chữ kí điện tử của tổ chức cấp chứng chỉ
Chữ kí điện tử của tổ chức cấp chứng chỉ (CA) cũng như chữ kí điện tử của người sử dụng chứng chỉ (subscriber) cần có một dấu thời gian (time - stamp) để thuận tiện cho việc chứng minh rằng chữ kí điện tử (của tổ chức cấp chứng chỉ hay của người sử dụng chứng chỉ) được tạo ra trong thời gian hiệu lực của một chứng chỉ hợp lệ, do đó chữ kí điện tử có khả năng kiểm định một chứng chỉ
Xác nhận hợp lệ (Validation)[4]
Thông tin trong một chứng chỉ có thể thay đổi theo thời gian Một người sử dụng chứng chỉ (certificate user) cần phải đảm bảo là dữ liệu trong chứng chỉ là đúng (gọi là xác nhận hợp lệ chứng chỉ) Có hai phương pháp cơ bản để xác nhận hợp lệ chứng chỉ:
Người sử dụng có thể trực tiếp hỏi CA về tính hợp lệ của chứng chỉ mỗi lần sử dụng nó Đây là kiểu xác nhận hợp lệ trực tuyến (online validation)
CA có thể chứa thêm thời hạn hợp lệ vào trong mỗi chứng chỉ - một bộ thời gian sẽ định nghĩa khoảng thời gian mà các thông tin chứa trong chứng chỉ được cho là hợp lệ (còn hiệu lực) Đây là xác nhận hợp lệ không trực tuyến (offline validation)
Thu hồi chứng chỉ là kết thúc vĩnh viễn thời hạn hợp lệ (operational period) của một chứng chỉ xét từ một thời điểm xác định trở đi Sự thu hồi chứng chỉ là quá trình báo cho người sử dụng biết khi thông tin trong một chứng chỉ bất ngờ mất hiệu lực Việc này có thể xảy ra khi một chủ thể của khoá riêng bị lộ, hay khi thông tin định danh của một chứng chỉ thay đổi (thí dụ như chủ thể có một số điện thoại mới)
Xác thực là một quá trình được dùng để xác định nhận dạng của một người hoặc tính toàn vẹn của một thông tin cụ thể Đối với một bản tin, sự xác thực bao gồm việc xác định nguồn gốc bản tin và xác định nó chưa bị sửa đổi hoặc thay thế trong quá trình truyền thông
Khi một tổ chức chứng nhận (CA) xác nhận danh tính của một thực thể và người dùng xác minh tính hợp lệ của chứng nhận đó, thì thực thể đó được coi là đã được xác thực Mức độ tin cậy của người dùng vào thông tin trong chứng chỉ và tính hợp lệ của nó phản ánh mức độ tin cậy của chứng chỉ.
(strength of Authentication) của sự xác thực Ví dụ, nếu bạn nhìn Alice và thấy mắt cô ta màu xanh, khi đó bạn có một sự xác thực mạnh mẽ về màu mắt của Alice, mặt khác nếu bạn nghe ai đó nói về điều đó thì sự xác thực là yếu và bạn chưa hoàn toàn tin tưởng vào điều đó
Hàm băm là một thuật toán ánh xạ hay chuyển đổi một chuỗi bit thành một chuỗi bit khác thường có kích thước nhỏ hơn (gọi là kết quả băm) có các đặc tính sau:
(1) Một bản tin cho kết quả băm như nhau tại mọi thời điểm khi thuật toán được thực thi sử dụng cùng một bản tin đầu vào
(2) Về mặt tính toán, không thể khôi phục được bản tin từ kết quả băm nhận được từ thuật toán
(3) Về mặt tính toán, không thể tìm được hai bản tin cho cùng một kết quả băm từ thuật toán băm
Hàm băm đôi khi được gọi là “hàm một chiều” (one – way function) hay “Thuật toán rút gọn bản tin” (message digest algorithm)
Vấn đề xác thực và chữ kí điện tử
Xác thực (Athentication) là một kỹ thuật để xác minh xem người tham gia hội thoại là đúng người cần hội thoại hay là kẻ mạo danh Việc xác thực là để đảm bảo thông tin trao đổi giữa hai người A và B không bị một kẻ đột nhập (intruder) nào đó
34 can thiệp, xem trộm hay sửa chữa nội dung Vì vậy có thể nói xác thực là một thành phần rất cần thiết của một hệ thống bảo mật đối với bất cứ một doanh nghiệp nào quan tâm đến việc bảo vệ tài sản thông tin và muốn biết ai đang cố gắng truy nhập vào mạng của họ Việc xác thực trở nên đặc biệt quan trọng khi một số những phương thức truyền thông phức tạp được sử dụng
Ngoài việc chứng minh người sử dụng, các hệ thống xác thực cũng được sử dụng để xác định những thông tin được yêu cầu nào có thể truy nhập – ví dụ, một cơ sở dữ liệu tài nguyên hoặc cơ sở dữ liệu tài chính của một tổ chức Một hệ thống xác thực đúng đắn thường là sự kết hợp của 2 hoặc 3 thành phần sau:
Người dùng có gì (smart card, giấy chứng nhận - certificate)
Người dùng biết gì (mật khẩu - password)
Một thuộc tính vật lý (vân tay hoặc những thông tin sinh học khác)
Việc xác thực thường đạt được thông qua yêu cầu và phản hồi (Challenge and response), chứng chỉ số (Digital Certificate), hoặc thông điệp được băm (Message digest - MD) và chữ ký điện tử (Digital Signature)
Xác thực dùng chữ kí điện tử được mô tả như trong hình sau:
Hình 2.1 Sơ đồ minh hoạ việc xác thực sử dụng chứng chỉ số và chữ ký điện tử
- Trước tiên, User đưa vào mật khẩu truy nhập khoá riêng của mình cho Client
- Sau đó, Client truy lục khoá riêng và sử dụng nó để tạo chữ ký điện tử cho User
- Tiếp theo, Client gửi chứng chỉ và chữ ký điện tử của User tới Server qua mạng
- Server sử dụng chứng chỉ và chữ ký nhận được để xác thực định danh của User
- Nếu đúng, Server xác thực quyền truy nhập cho User và cho phép User bắt đầu phiên làm việc giữa Client và Server
Quá trình ký số diễn ra như sau:
- Tạo ra một câu ngắn để nhận dạng – ví dụ như “Tôi là Nguyễn Xuân Hoàng”
- Mã hoá nó bằng khoá riêng (private key) của mình tạo ra chữ ký điện tử
- Gắn chữ ký này vào thông điệp cần gửi và mã hoá toàn bộ bằng khoá công khai (public key) của người nhận
Người nhận sẽ dùng khoá riêng của mình để giải mã thông điệp và lấy chữ ký ra Sau đó giải mã chữ ký này bằng khoá công khai của người gửi Chỉ người gửi nào có khoá riêng tương ứng với khoá công khai của người nhận mới có thể tạo ra chữ ký mà người nhận giải mã thành công Do đó người nhận có thể định danh được người gửi.
Hoạt động của một hệ thống chữ kí điện tử
Chữ kí số hay chữ kí điện tử (Digital Signature) được tạo ra và xác minh dựa trên mã hóa khóa công khai, sử dụng một thuật toán dùng hai khóa khác nhau nhưng có quan hệ toán học với nhau [10]
Các khóa của một hệ thống mã hóa bất đối xứng dùng cho chữ kí điện tử bao gồm một khóa bí mật (private key) được dùng để tạo chữ kí và chỉ người kí biết được khóa này, và một khóa công khai (public key) được công khai cho tất cả mọi người cần biết và do một bên tin tậy dùng để xác minh chữ kí điện tử Nếu có nhiều người cùng muốn xác minh một chữ kí, khóa công khai cần được phân phối tới tất
36 cả mọi người Khi đó, khóa công khai có thể được đặt trong một thư mục hay một kho chứa trực tuyến Mặc dù các khóa có quan hệ về mặt toán học với nhau nhưng xét về mặt tính toán, không thể khôi phục được khóa bí mật từ khóa công khai Do đó, mặc dù nhiều người cùng biết khóa công khai của người kí và dùng nó để xác minh chữ kí, nhưng không thể tìm ra được khóa bí mật và dùng khóa bí mật này để giả mạo chữ kí Nguyên lí này được gọi là nguyên lí không thể đảo ngược
Một phương pháp cơ bản là sử dụng một hàm băm để tạo và xác minh chữ kí Một hàm băm là một thuật toán tạo ra một biểu diễn số dưới dạng một giá trị băm có chiều dài không đổi và thường nhỏ hơn bản tin và là duy nhất đối với bản tin Bất cứ thay đối nào đối với bản tin đều tạo nên một giá trị băm khác khi sử dụng cùng một hàm băm Với một hàm băm bảo mật, thì không thể khôi phục được bản tin nguyên gốc từ giá trị băm của nó Do đó, một hàm băm cho phép tạo chữ kí điện tử trên dữ liệu nhỏ hơn, có kích thước xác định và liên quan chặt chẽ với nội dung bản tin Bằng cách đó, đảm bảo được rằng không có sự sửa đổi bản tin khi nó được kí số
Việc sử dụng chữ kí điện tử bao gồm hai tiến trình, một được tiến hành bởi người kí và một bởi người nhận chữ kí [10]:
Tạo chữ kí điện tử (Digital signature creation) sử dụng giá trị băm duy nhất nhận được từ bản tin được kí và khóa bí mật cho trước Vì giá trị băm là bảo mật, do đó rất ít khả năng xảy ra trường hợp hai bản tin hay hai khóa bí mật cùng tạo ra một giá trị băm
Quá trình xác minh chữ ký điện tử xác định tính xác thực của một chữ ký điện tử bằng cách sử dụng bản tin gốc và khóa công khai Quá trình này xác nhận xem chữ ký có được tạo bằng khóa bí mật tương ứng với khóa công khai hay không, đảm bảo rằng bản tin gốc không bị giả mạo.
Hình 2.2: Sơ đồ minh hoạ quá trình truyền thông điệp sử dụng chữ ký điện tử
2.3.1 Quá trình tạo chữ kí
Xét trên quan điểm kĩ thuật, quá trình kí số một bản tin được tiến hành gồm hai bước:
Only Private Key Holder Can Sign create.vsd
Hình 2.3: Quá trình tạo chữ kí số cho một bản tin
Bước 1: Tính toán giá trị băm của bản tin (Caculate the Message Digest)
Trong bước đầu tiên của quá trình, giá trị băm của bản tin (thường gọi là bản tin thu gọn – message digest) được tính bằng cách áp dụng các thuật toán băm (hashing algorithm) như MD2, MD4, MD5, SHA1… Giá tị băm tìm được của bản tin là một chuỗi bit, thường có độ dài cố định, được tách ra từ bản tin theo một cách thức nào đó
Tất cả các thuật toán tính giá trị băm tin cậy sử dụng các chuyển đổi toán học thỏa mãn khi một bit từ bản tin đầu vào bị thay đổi sẽ dẫn đến thay đổi toàn bộ giá trị băm Nhờ đặc tính này, các thuật toán này rất khó bị tấn công, nói cách khác, không thể tìm được bản tin ban đầu từ giá trị băm cho trước của bản tin đó Giá trị băm của một bản tin có kích thước nhỏ hơn hàng trăm lần so với bản tin đầu vào Các tài nguyên tính toán cần dùng cho tìm bản tin từ giá trị băm của nó lớn đến mức trên thực tế là không thể thực hiện được
Trên lý thuyết, có thể có hai bản tin khác nhau có cùng một giá trị băm được tính bởi cùng một thuật toán Tuy nhiên, khả năng xảy ra trường hợp này là rất nhỏ và không đáng kể trong thực tế.
Bước 2: Tính toán chữ kí số (Caculate the Digital Signature)
Trong bước hai của quá trình kí số một bản tin, thông tin nhận được từ bước thứ nhất – giá trị băm của bản tin (Bản tin thu gọn – message digest) được mã hóa với khóa bí mật của người kí, thu được giá trị băm đã mã hóa, gọi là chữ kí số (digital signature) Để thực hiện việc này, các thuật toán mã hóa tính toán chữ kí điện tử từ bản tin thu gọn cho trước được dùng Các thuật toán phổ dụng nhất là RSA (dựa trên lý thuyết số), DSA (dựa trên lý thuyết logarit rời rạc), và ECDSA (dựa trên lý thuyết đường elip) Sau đó, chữ kí số thu được sẽ được đính kèm vào bản tin theo một định dạng xác định và được gửi đi cùng với bản tin
2.3.2 Quá trình xác minh chữ kí
Công nghệ chữ ký điện tử giúp người nhận bản tin đã ký số xác thực được nguồn gốc thực và tính toàn vẹn của bản tin Quá trình xác minh chữ ký điện tử nhằm xác định xem bản tin có được ký bởi khóa bí mật tương ứng với một khóa công khai nhất định hay không Tuy nhiên, quá trình xác minh không thể xác thực người ký có thực sự ký bản tin hay không Để kiểm tra người ký, cần có khóa công khai thực sự của họ được trao đổi theo cách bảo mật Nếu không có khóa công khai này, không thể xác định chắc chắn bản tin có được người đó ký hay không.
Xét trên quan điểm kĩ thuật, quá trình xác minh chữ kí điện tử được tiến hành gồm ba bước:
Bước 1: Tính toán giá trị băm hiện thời (Caculate the Curent Hash - Value)
Trong bước một, thực hiện tính giá trị băm của bản tin đã kí Khi tính toán sử dụng cùng một thuật toán băm như trong quá trình kí số bản tin Giá trị băm nhận được gọi là giá trị băm hiện thời vì nó được tính từ trạng thái hiện thời của bản tin
Bước 2: Tính giá trị băm ban đầu (Caculate the Original Hash - Value)
Trong bước thứ hai của quá trình xác minh chữ kí, chữ kí số được giải mã với cùng một thuật toán dùng trong quá trình kí số bản tin Việc giải mã được thực hiện bởi khóa công khai tương ứng với khóa bí mật dùng trong quá trình kí Kết quả chúng ta nhận được giá trị băm ban đầu (Original Hash - Value) được tính từ bản tin nguyên gốc dùng trong bước đầu của quá trình kí số (the original message digests)
Step 3: Compare the hash value of the signed document with the original hash value If both hash values match, it indicates that the signed document has not been tampered with since it was signed, thus verifying the digital signature's authenticity.
Trong bước thứ ba, chúng ta so sánh giá trị băm hiện thời nhận được trong bước một với giá trị băm ban đầu nhận được trong bước hai Nếu hai giá trị băm giống nhau, việc xác minh đã thành công và chứng minh được bản tin đã được kí bằng khóa bí mật tương ứng với khóa công khai dùng trong quá trình xác minh Nếu hai giá trị băm khác nhau, thì chữ kí số là không hợp lệ và việc xác minh chữ kí là thất bại
Nguyên nhân dẫn đến chữ kí không hợp lệ:
Một chữ kí số là không hợp lệ có thể có ba nguyên nhân sau:
Phân loại các hệ thống chữ kí điện tử
Các hệ thống chữ kí điện tử bao gồm hai phân lớp tổng quát nhất, có thể mô tả tóm lược như sau [1]:
1 Các hệ thống chữ kí số với phụ lục (Digital Signature Schemes with appendix) yêu cầu đầu vào của thuật toán xác minh là bản tin nguyên gốc
2 Các hệ thống chữ kí số với hồi phục bản tin (Digital Signature Schemes with message recovery) không yêu cầu đầu vào của thuật toán xác minh là bản tin nguyên gốc Trong trường hợp này, bản tin gốc được khôi phục từ chữ kí
2.4.1 Chữ kí điện tử với phụ lục
Các hệ thống chữ kí số với phụ lục được sử dụng rộng rãi trong thực tế Chúng dựa vào các hàm băm mã hóa (cryptographic) và ít bị tấn công[1]
Các hệ thống chữ kí số yêu cầu đầu vào của thuật toán xác minh là bản tin nguyên gốc được gọi là hệ thống chữ kí số với phụ lục
Hệ thống chữ ký số DSA, ElGamal và Schnorr là các ví dụ về cơ chế chữ ký điện tử Để thuận tiện theo dõi, các ký hiệu được sử dụng đều có trong bảng 3.1.
Tập các phần tử được gọi là không gian bản tin (message space) Tập các phần tử được gọi là không gian kí số (sigining space) Tập các phần tử được gọi là không gian chữ kí (signature space) Ánh xạ 1 - 1 từ M đến M S gọi là hàm dư thừa (redundancy function) Ảnh của R ( M R = Im(R)) Hàm ngược của R (R -1 : M R M) Tập các phần tử được gọi là tập chỉ số (indexing set of signing) Hàm một chiều trên miền M Ảnh của h ( h: M M h ); M h M S được gọi là không gian giá trị Băm
Hệ thống chữ kí số
Bảng 2.1 Các kí hiệu toán học
Mỗi thực thể tạo một khóa bí mật dùng để kí các bản tin, và một khóa công khai tương ứng cho các thực thể khác dùng để xác minh chữ kí
1 Mỗi thực thể A cần chọn một khóa bí mật định nghĩa một tập
S A = {S A,k : kR } các phép biến đổi Mỗi S A,k là một ánh xạ 1 – 1 từ M h tới
S và được gọi là một phép biến đổi ký (signing transformation)
2 S A định nghĩa một ánh xạ tương ứng V A từ M h × S tới tập {true, false} thỏa mãn:
Với tất cả m M h , s * S; m = h(m) với mM V A được gọi là phép biến đổi xác minh (verification transformation) và được xây dựng bằng các tính toán mà không cần biết khóa bí mật của người kí
3 Khóa công khai của A là V A ; khóa bí mật của A là tập S A
3 Thuật toán tạo chữ kí và xác minh chữ kí
Thực thể A tạo một chữ kí s S cho bản tin m M , mà sau đó thực thể B có thể xác minh
1 Tạo chữ kí Thực thể A thực hiện các công việc sau:
(c) Chữ kí của A cho bản tin m là s * Cả m và s * là sẵn dùng cho các thực thể muốn xác minh chữ kí
2 Xác minh chữ kí Thực thể B thực hiện các công việc sau:
(a) Nhận khóa công khai đã xác thực của A là V A
(c) Chấp nhận chữ kí nếu và chỉ nếu u = true
Hình sau cho thấy cái nhìn tổng quan về mặt ngữ nghĩa của một hệ thống chữ kí số với phụ lục Các phép biến đổi kí số và xác minh chữ kí yêu cầu các đặc tính sau:
(i) Với mỗi kR , S A,k phải tính được
(iii) Về mặt tính toán, không một thực thể nào ngoài A có thể tìm được một giá trị mM và một s * S mà V A ( m , s * ) = true với m = h(m)
(a) Quá trình kí số bản tin
(b) Quá trình xác minh chữ kí
Hình 2.6: Tổng quan về hệ thống chữ kí số với phụ lục
Các hệ thống chữ ký số thường được chia làm hai loại: hệ thống với hồi phục bản tin và hệ thống với phụ lục Hệ thống với hồi phục bản tin được áp dụng cho các bản tin có độ dài cố định, trong khi đó, hệ thống với phụ lục được sử dụng cho các bản tin có độ dài tùy biến Trong các hệ thống này, hàm băm không xung đột thường được lựa chọn làm hàm một chiều để tạo và xác minh chữ ký.
Một phương pháp băm khác là chia nhỏ bản tin thành các khối có chiều dài cố định, các khối này được kí riêng lẻ sử dụng hệ thống chữ kí số với hồi phục bản tin
2.4.2 Chữ kí điện tử với khôi phục bản tin
Một hệ thống chữ kí số với khôi phục bản tin là một hệ thống chữ kí số trong đó thuật toán xác minh chữ kí không yêu cầu sử dụng bản tin ban đầu[1]
Các hệ thống chữ kí số loại này có đặc tính là bản tin được kí có thể khôi phục được từ chữ kí Đặc tính này có được là do việc sử dụng các bản tin ngắn
Các ví dụ của cơ chế chữ kí điện tử với hồi phục bản tin là các hệ thống chữ kí số RSA , Rabin, Nyberg – Rueppel [1]
2 Thuật toán tạo khóa (Key generation Algorithm)
Mỗi thực thể tạo một cặp khóa mật mã gồm khóa bí mật và khóa công khai tương ứng Khóa bí mật được sử dụng để ký các bản tin, trong khi khóa công khai được sử dụng bởi các thực thể khác để xác thực chữ ký Điều này đảm bảo tính bảo mật và tính toàn vẹn của các bản tin được truyền đi.
1 Mỗi thực thể A lựa chọn một tập S A = {S A,k : k R } các phép biến đổi Mỗi
S A,k là một ánh xạ 1 – 1 từ M S tới S và được gọi là một phép biến đổi ký (signing transformation)
2 S A định nghĩa một ánh xạ V A có đặc tính là : V A S A,k là ánh xạ đồng nhất trên M S (identity map) với tất cả k R V A được gọi là phép biến xác minh chữ kí được xây dựng bằng các tính toán mà không cần biết khóa bí mật của người kí
3 Khóa bí mật của A là V A ; khóa công khai của A là tập S A
3 Thuật toán tạo chữ kí và xác minh chữ kí
Thực thể A tạo một chữ kí s S cho bản tin m M , mà sau đó thực thể B có thể xác minh Bản tin m được hồi phục từ s
1 Tạo chữ kí (Signature Generation Algorithm)
Thực thể A thực hiện các công việc sau:
(b) Tính m = R(m) và s * = S A,k ( m ) (R là một hàm dư thừa)
(c) Chữ kí của A cho bản tin m là s * ; s * là sẵn dùng cho các thực thể muốn xác minh chữ kí và bản tin m được khôi phục từ s *
2 Xác minh chữ kí (Verification Algorithm)
Thực thể B thực hiện các công việc sau:
(a) Nhận khóa công khai đã xác thực của A là V A
(c) Kiểm tra m M R Nếu m M R , loại bỏ chữ kí
(d) Hồi phục m từ m bằng cách tính R -1 ( m )
Hình 2.7: Tổng quan về hệ thống chữ kí số hồi phục bản tin
Hình 3.7 cho thấy cái nhìn tổng quan về mặt ngữ nghĩa của một hệ thống chữ kí số hồi phục bản tin Các phép biến đổi kí số và xác minh chữ kí yêu cầu các đặc tính sau:
(i) Với mỗi kR , S A,k phải tính được
(iii) Về mặt tính toán, không một thực thể nào ngoài A có thể tìm được một giá trị s * S mà V A ( s * ) M R
GIAO DỊCH THANH TOÁN TRONG THƯƠNG MẠI ĐIỆN TỬ 54
Giới thiệu về thương mại điện tử
3.1.1 Thương mại điện tử là gì?
Sự phát triển của công nghệ số đã thúc đẩy sự ra đời của thương mại điện tử ở các quốc gia phát triển và các nước NICs Thương mại điện tử là hình thức kinh doanh sử dụng các phương tiện điện tử để thực hiện các hoạt động thương mại, bao gồm mua bán hàng hóa, dịch vụ, giao nhận nội dung số, chuyển tiền điện tử, mua bán cổ phiếu điện tử, đấu giá thương mại, thiết kế hợp tác, tiếp thị trực tiếp và dịch vụ sau bán hàng Thương mại điện tử không chỉ đa dạng hóa hoạt động kinh doanh mà còn tạo nên một cuộc cách mạng kinh tế - xã hội, đánh dấu bước đột phá mới của nền kinh tế thế giới.
Tóm lại, theo nghĩa rộng thì thương mại điện tử có thể được hiểu là các giao dịch tài chính và thương mại bằng phương tiện điện tử như: trao đổi dữ liệu điện tử; chuyển tiền điện tử và các hoạt động gửi rút tiền bằng thẻ tín dụng
Thương mại điện tử theo nghĩa hẹp bao gồm các hoạt động thương mại được thực hiện thông qua mạng Internet Các tổ chức như: Tổ chức Thương mại thế giới (WTO), Tổ chức Hợp tác phát triển kinh tế đưa ra các khái niệm về thương mại điện
56 tử theo hướng này Thương mại điện tử được nói đến ở đây là hình thức mua bán hàng hóa được bày tại các trang Web trên Internet với phương thức thanh toán bằng thẻ tín dụng Để có một cách hiểu thống nhất, có thể định nghĩa :
Thương mại điện tử là việc ứng dụng các công nghệ thông tin để tiến hành các giao dịch mua – bán các sản phẩm, dịch vụ và thông tin thông qua các mạng máy tính có sử dụng các tiêu chuẩn truyền thông chung
Thương mại điện tử sử dụng hệ thống mạng truyền thông số toàn cầu Internet để tạo ra một thị trường điện tử cho mọi loại hình sản phẩm, dịch vụ, công nghệ và hàng hóa, bao hàm tất cả các hoạt động cần thiết để hoàn tất một thương vụ, bao gồm đàm phán, trao đổi chứng từ, truy cập thông tin từ các dịch vụ trợ giúp và ngân hàng, tất cả được thực hiện trong các điều kiện an toàn và bảo mật.
Các đặc trưng của Thương mại điện tử: Đặc trưng nổi bật nhất của thương mại điện tử là các hoạt động kinh doanh như mua, bán, đầu tư và vay mượn được thực hiện và chuyển giao giá trị qua các mạng thông tin điện tử
So với các hoạt động Thương mại truyền thống, thương mại điện tử có một số điểm khác biệt cơ bản sau:
Các bên tiến hành giao dịch trong thương mại điện tử không tiếp xúc trực tiếp với nhau và không đòi hỏi phải biết nhau từ trước
Các giao dịch thương mại truyền thống được thực hiện với sự tồn tại của khái niệm biên giới quốc gia, còn thương mại điện tử được thực hiện trong một thị trường không có biên giới (thị trường thống nhất toàn cầu) Thương mại điện tử trực tiếp tác động tới môi trường cạnh tranh toàn cầu
Trong hoạt động giao dịch thương mại điện tử đều có sự tham gia của ít nhất ba chủ thể, trong đó có một bên không thể thiếu được là người cung cấp dịch vụ mạng, các cơ quan chứng thực
Đối với thương mại truyền thống, mạng lưới thông tin đóng vai trò là phương tiện trao đổi dữ liệu Ngược lại, trong thương mại điện tử, mạng lưới thông tin chính là thị trường, nơi diễn ra các giao dịch mua bán thông qua nền tảng trực tuyến.
Để tiến hành các giao dịch thương mại điện tử, cần có một chương trình máy tính được cài đặt tại ít nhất một điểm cuối của giao dịch hoặc quan hệ thương mại Tại điểm cuối khác có thể có một chương trình máy tính, một người sử dụng đầu cuối khác có thể là một chương trình máy tính hay sử dụng một kĩ thuật truy nhập mạng nào đó
Hoạt động thương mại điện tử được thực hiện trên cơ sở các nguồn thông tin dưới dạng số hóa của các mạng điện tử Nó cho phép hình thành những dạng thức kinh doanh mới và những cách thức mới để tiến hành hoạt động kinh doanh Ví dụ, Công ty thương mại Amazon.com kinh doanh rất nhiều sản phẩm như đồ điện, băng đĩa nhạc, các loại sách
Thương mại điện tử phụ thuộc nhiều vào sự phát triển của công nghệ thông tin
3.1.2 Giao dịch trong thương mại điện tử
[12]Giao dịch trong thương mại điện tử là một hệ thống bao gồm không chỉ các giao dịch liên quan đến mua bán hàng hóa và dịch vụ, tạo thu nhập, mà còn là các giao dịch có khả năng trợ giúp quá trình tạo ra thu nhập: kích thích nhu cầu đối với hàng hóa và dịch vụ, cung ứng dịch vụ trợ giúp bán hàng, trợ giúp người tiêu dùng, hoặc trợ giúp trao đổi thông tin giữa các doanh nghiệp
Tính chất và nội dung của các giao dịch trong thương mại điện tử phụ thuộc nhiều vào việc chúng xảy ra trong môi trường của mô hình kinh doanh nào?
Hiện nay có hai mô hình kinh doanh cơ bản nhất được hầu hết các doanh nghiệp thương mại điện tử quan tâm [26]: thương mại điện tử giữa doanh nghiệp và người tiêu dùng (B2C), thương mại giữa các doanh nghiệp (B2B)
Giao dịch thanh toán điện tử
Xét trên nhiều phương diện, thanh toán trực tuyến là nền tảng của các hệ thống thương mại điện tử Sự khác biệt cơ bản giữa thương mại điện tử với các ứng dụng khác mà Internet cung cấp chính là nhờ khả năng thanh toán trực tuyến này
An toàn đang trở thành một trong những vấn đề được quan tâm nhất khi tiến hành thương mại điện tử Mối lo ngại về an toàn trong thanh toán điện tử là một trong các lý do được đưa ra nhiều nhất dẫn đến người dùng không sử dụng phương thức thanh toán này Do đó việc xác định rõ các yếu tố liên quan đến an toàn thanh toán điện tử và tìm ra các giải pháp công nghệ nhằm đáp ứng các yêu cầu trên là vấn đề quan trọng thúc đấy sự phát triển của thương mại điện tử
Bản chất của an toàn là một vấn đề phức tạp, liên quan đến nhiều khía cạnh khác nhau Đối với an toàn thanh toán điện tử và các giao dịch trực tuyến, nói chung có năm khía cạnh cần giải quyết bao gồm: Tính sẵn dùng, tính xác thực, tính toàn vẹn, tính không chối bỏ, tính tin cậy
Trong các hệ thống thanh toán điện tử trên Internet, nhiều giải pháp công nghệ cho phép thực hiện điều này Kỹ thuật mã hóa thông tin, Chữ ký điện tử và chứng thực điện tử được sử dụng để đáp ứng các yêu cầu trên
Trong không gian ảo (cyberspace), để có thể đảm bảo tính tin cậy, tính xác thực và riêng tư của các giao dịch cần phải áp dụng kỹ thuật mã hóa Yêu cầu đặt ra đối với mỗi hệ thống thanh toán phụ thuộc vào những thông tin sẽ được mã hóa Ví dụ, khi tiến hành các giao dịch mua – bán, để đảm bảo tính tin cậy của giao dịch, tất cả các thông tin được mã hóa bởi trình duyệt Web của khách hàng sẽ được chuyển tới máy chủ Web của người bán Nhưng nếu người bán có thể giải mã toàn bộ thông tin này thì tính an toàn sẽ không được đảm bảo Trong trường hợp người bán chỉ được phép giải mã các thông tin đặt hàng, còn có các thông tin liên quan đến thanh toán (như việc kiểm tra tài khoản, số thẻ tín dụng ) đã được mã hóa sẽ được chuyển tới
64 ngân hàng thanh toán được ủy quyền, thì chắc chắn những hành vi gian lận thương mại sẽ ít xảy ra hơn
Trong thương mại điện tử, muốn đối phó với các hành vi gian lận, cần sử dụng những kỹ thuật để xác thực đối với người bán cũng như người mua và đảm bảo tính toàn vẹn của một người bán Thí dụ, một người mua hàng cần có đủ bằng chứng giúp họ có thể tin tưởng vào người bán, tin tưởng vào những gì mà người này cung cấp Vì vậy, cần sử dụng nhiều thủ tục để giải quyết vấn đề này như sử dụng chữ kí điện tử nhằm xác thực các giao dịch điện tử, sử dụng các chứng chỉ điện tử khi nhận biết một doanh nghiệp
3.2.2 Yêu cầu đối với các hệ thống thanh toán điện tử
Những yêu cầu đặt ra đối với các hệ thống thanh toán điện tử được chỉ ra dưới đây [13]:
Tính an toàn (Security) – Tính an toàn bao gồm nhiều khía cạnh, từ vấn đề an toàn máy tính nói chung đến các công nghệ mã hóa Sau đây là các vấn đề ảnh hưởng đến tính an toàn của một hệ thống thanh toán điện tử:
Sử dụng kép (Double Spending) – Tiền điện tử (Digital Cash) được biểu diễn dưới dạng các byte do đó có thể dễ dàng bị sao chép và sử dụng lại Vấn đề này liên quan đến việc khách hàng có thể sử dụng lại tiền điện tử trong nhiều lần thanh toán Các cơ sở dữ liệu sử dụng kép được dùng để ghi lại tiền điện tử đã được sử dụng
Giả mạo (Counterfeiting) – Tiền điện tử là biểu diễn số hóa giá trị tiền tệ thực, do đó có thể xảy ra khả năng giả mạo loại tiền biểu trưng này Vấn đề giả mạo cần được phát hiện và ngăn chặn
Quản lý tính riêng tư (Privacy Control) – Tính tin cậy (Confidentiality), tính ẩn danh (anonymity) và tính không lưu vết (untraceability) là các yêu cầu cần thiết đối với các hệ thống thanh toán Tính tin cậy có thể đảm bảo tương đối dễ dàng, trong khi đó tính ẩn danh và tính không lưu vết phụ thuộc vào môi trường, như địa chỉ IP tĩnh, các cookies, các cài đặt trình
65 duyệt…v.v Do đó, tính ẩn danh và tính không lưu vết có thể tồn tại trong điều kiện lí tưởng nhưng khó thực hiện trong môi trường ảo
Minh bạch tính toán và thanh toán: Mô hình và quy trình thanh toán dễ hiểu, tự động hóa thay cho người dùng, thể hiện rõ ràng mối liên hệ giữa các khoản chế tác và giao dịch tương ứng.
Tính mở (Extensibility) – Hệ thống thanh toán phải hỗ trợ và dễ dàng được chấp nhận bởi nhiều loại mô hình thương mại
Chi phí giao dịch thấp (Low Transaction Costs) – Chi phí một giao dịch phải cân xứng với giá trị kinh tế được chuyển giao Cần phải có sự cân bằng giữa yếu tố hiệu năng tính tính toàn nhằm hoàn thành giao dịch và các yêu cầu an toàn do các bên tham gia đưa ra
Tính hiệu quả - Thuật toán sử dụng cần hiệu quả và phải hạn chế tối đa các truyền thông ngoài để quản lý giao dịch thanh toán Các yêu cầu tính toán và lưu trữ từ phía người bán và nhà cung cấp dịch vụ thanh toán phải được giảm thiểu để duy trì dữ liệu khách hàng và đáp ứng các yêu cầu an toàn.
HỆ THỐNG THANH TOÁN SỬ DỤNG CHỮ KÝ ĐIỆN TỬ
Mô tả hệ thống
Hệ thống được xây dựng theo mô hình thanh toán sử dụng chữ kí điện tử và chứng chỉ số như đã mô tả trong phần 2.6 của chương 4
Người bán cung cấp sản phẩm tới khách hàng thông qua một máy chủ bán hàng Khách hàng lựa chọn sản phẩm cần mua, lựa chọn hình thức thanh toán thông qua trình duyệt Web phía người mua Quá trình thanh toán sẽ do một máy chủ thanh toán thực hiện Cả người bán và người mua đều phải đăng kí tài khoản với máy chủ thanh toán Khi khách hàng chấp nhận mua sản phẩm, một yêu cầu thanh toán sẽ được chuyển tới máy chủ thanh toán Nếu thanh toán thành công, máy chủ thanh toán gửi một chứng chỉ xác nhận tới khách hàng Khách hàng gửi xác nhận tới máy chủ bán hàng của người bán, khi đó khách hàng nhận điện thoại đã mua Quá trình truyền thông giữa các bên tham gia được bảo đảm bằng cách sử dụng chữ kí số trên các thông điệp truyền đi
Phân tích hệ thống
Mô hình hệ thống được thể hiện trong hình 5.1 Mô hình gồm 3 node tham gia là Client, Server bán hàng và Server thanh toán Trước khi tham gia mua bán, cả nhà
Server thanh toán - Payment Server
Lựa chọn mặt hàng, xem kết quả
Yêu cầu chuyển giao sản phẩm
Server bán hàng - Vendor Nhà cung cấp
Hình 4.1: Mô hình hệ thống
69 cung cấp và khách hàng đều phải đăng kí tài khoản và dịch vụ thanh toán với Server thanh toán
+ Server bán hàng – VendorServer: Cung cấp dịch vụ mua bán hàng qua mạng Nhà cung cấp sẽ thông qua Server máy chủ bán hàng để phân phối mẫu sản phẩm đến người mua, nhận về yêu cầu mua của khách hàng và chuyển sản phẩm đã được thanh toán tới người mua
+ Server thanh toán – Payment Server: Cung cấp dịch vụ thanh toán Việc thanh toán giữa người bán và người mua sẽ do server thanh toán đảm nhiệm Việc chuyển tác vụ thanh toán cho máy chủ thanh toán thực hiện sẽ giảm được gánh nặng cho máy chủ bán hàng và tăng mức độ an toàn cho hệ thống Khi xảy ra tranh cãi giữa người bán và người mua thì máy chủ bán hàng sẽ đóng vai trò bên thứ ba tin cậy để giải quyết Sau khi thực hiện thanh toán, máy chủ thanh toán gửi một xác nhận làm bằng chứng thanh toán cho người mua
+ Client – Customer: Khách hàng tương tác với hệ thống thông qua một giao diện (trình duyệt Web) được cung cấp bởi node Client Client nhận yêu cầu mua hàng từ phía khách hàng, gửi yêu cầu thanh toán tới máy chủ thanh toán, nhận về xác nhận thanh toán từ máy chủ thanh toán, sau đó gửi yêu cầu chuyển hàng cùng xác nhận thanh toán tới máy chủ thanh toán và nhận về sản phẩm từ máy chủ thanh toán
4.2.2 Các chức năng chính của hệ thống
Chức năng này cho phép một khách hàng mới đăng kí là thành viên sử dụng hệ thống.
Khách hàng đăng nhập hệ thống sử dụng username / password đã đăng kí với hệ thống Sau khi đăng nhập khách hàng có thể thực hiện đăng kí tài khoản với Server thanh toán và thực hiện mua hàng
Chức năng này cho phép khách hàng và nhà cung cấp đăng kí một tài khoản với một nhà cung cấp dịch vụ thanh toán – máy chủ thanh toán, tài khoản này được dùng để thanh toán giữa hai bên mua và bán Sau khi yêu cầu đăng kí tài khoản được thực hiện, máy chủ thanh toán sẽ gửi lại ID và số tiền hiện có trong tài khoản của bên đăng kí và khóa công khai của Payment Server dùng cho việc trao đổi thông tin sau này
Khi khách hàng chấp nhận mua hàng, Payment Server sẽ xử lý yêu cầu thanh toán bao gồm ID người mua, ID người bán và số tiền thanh toán Server này chuyển tiền từ tài khoản người mua sang người bán, sau đó xác nhận thanh toán cho khách hàng Khách hàng dùng xác nhận này gửi cho nhà cung cấp làm bằng chứng thanh toán để nhận sản phẩm.
Chức năng này được khách hàng dùng để nhận sản phẩm đã được thanh toán Sau khi kiểm tra chứng thực thanh toán, nhà cung cấp sẽ gửi một thông báo tới khách hàng Mặt hàng được chuyển giao tới cho khách hàng
Các thông điệp trao đổi giữa các thành phần tham gia các chức năng trên đều được kí số bằng khóa bí mật của bên gửi và bên nhận kiểm tra bằng khóa công khai tương ứng của bên gửi sử dụng thuật toán DSA.
4.2.3 Các thông điệp đƣợc kí số
Giao tiếp giữa các mô-đun diễn ra thông qua các thông điệp được bảo mật bằng chữ ký điện tử Chữ ký này được tạo ra bằng hàm băm bảo mật SHA, đảm bảo tính toàn vẹn và tính xác thực của thông điệp.
Thuật toán băm SHA-1 thu gọn thông điệp thành bản tin thu gọn (Message Digest) Thuật toán chữ ký điện tử DSA mã hóa bản tin thu gọn này để tạo ra chữ ký điện tử Dữ liệu truyền đi bao gồm thông điệp gốc và chữ ký điện tử tương ứng.
Protocol Data Unit PDU = message + DSA [SHA(message)]
Bên nhận có thể xác minh chữ kí sử dụng khóa công khai của bên gửi
Trong hệ thống thanh toán được xây dựng, ta chỉ thực hiện kí số lên các thông điệp quan trọng bao gồm:
Thông điệp yêu cầu thanh toán từ Customer đến Payment Server
Thông điệp trả lời chứa chứng thực thanh toán từ Payment Server đến Customer
Thông điệp yêu cầu chuyển giao sản phẩm chứa chứng thực thanh toán từ Customer đến Vendor Để mô hình hóa các thông điệp, ta sử dụng các kí hiệu sau:
Các chữ viết tắt sau được sử dụng:
Kí hiệu viết tắt Mô tả
Chữ kí của người bán hay Vendor
Chữ kí của Customer dùng trong trao đổi với Payment Server
Mục dữ liệu – Data Item Giá trị băm – Hash Value Chữ kí
Chữ kí của Customer dùng trong trao đổi với Vendor Chữ kí của Payment Server
ID duy nhất của Vendor
ID duy nhất của Customer
Khóa công khai của Customer Khóa bí mật của Customer Khóa công khai của Vendor Khóa bí mật của Vendor Khóa công khai của Payment Server Khóa bí mật của Payment Server
ID duy nhất của một mẫu chào hàng – Offer
ID duy nhất của một chứng thực thanh toán được tạo ra bởi Payment Server cho phép xác định một giao dịch thanh toán Tổng số tiền phải chuyển từ tài khoản của Customer sang tài khoản của Vendor là value.
Nhãn thời gian do Customer tạo để nhận biết khóa được dùng để kí tại một thời điểm cụ thể
Nhãn thời gian tạo bởi Payment Server props vc Thông tin tùy chọn trao đổi giữa Vendor và Customer như thông tin mô tả sản phẩm, thông tin giao hàng
Ta chỉ xem xét việc trao đổi thông điệp để thực hiện một quá trình thanh toán Do đó ta giả thiết các bước sau đã được thực hiện:
1 Khách hàng đã đăng kí với hệ thống, đã trao đổi khóa công khai với Vendor và Payment Server Customer có C ID hợp lệ và biết được V ID
2 Tài khoản của Customer đủ để thực hiện thanh toán
3 Customer nhận được một mẫu chào hàng từ Vendor chứa oid và value, đã lựa chọn mua sản phẩm
4 Vendor đã đăng kí dịch vụ thanh toán với Payment Server và trao đổi khóa công khai với nhau
Thiết kế hệ thống
Các module xử lý của Vendor gồm ba phần:
Phần xử lý thông điệp
Bộ đệm thông điệp (MessageBuffer): có nhiệm vụ nhận và chuyển giao thông điệp Quá trình này có hai chiều:
Hình 4.5: Sơ đồ xử lý dữ liệu của Module Vendor
- Nhận các thông điệp yêu cầu từ Module Customer và chuyển cho
Bộ phân tích thông điệp (Message Analyser)
- Nhận thông điệp đáp ứng từ bộ tạo thông điệp (Message Creator) và chuyển cho Module Customer
Bộ phân tích thông điệp (MessageAnalyser): Có nhiệm vụ phân tích các thông điệp nhận được từ Module Customer Xác định loại thông điệp và gửi cho bộ xử lý tương ứng:
- Yêu cầu đăng nhập được chuyển tới Bộ xử lý đăng nhập (Login Processor)
- Yêu cầu đăng kí được chuyển cho Bộ xử lý đăng kí (RegisterProcessor)
- Yêu cầu chuyển hàng được chuyển cho Bộ xử lý chuyển hàng (ShipmentProcessor)
Bộ tạo thông điệp (MessageCreator): Nhận đầu vào là kết quả xử lý từ các bộ xử lý, đóng gói thành thông điệp chuyển cho Bộ đệm thông điệp (MessageBuffer) để gửi cho Customer
Phần xử lý dữ liệu
Bộ xử lý yêu cầu đang nhập (LoginProcessor): Nhận đối tượng đăng nhập từ
Customer, kiểm tra đã có Customer nào đăng nhập hệ thống với Username tương ứng chưa Nếu đã có, LoginProcessor sẽ gửi lại thông báo cho Customer và chấm dứt đăng nhập
Bộ xử lý yêu cầu đăng kí (RegisterProcessor): Nhận vào đối tượng đăng kí từ
Customer, kiểm tra đã có Customer nào đăng kí hệ thống với Username tương ứng chưa Nếu đã có, RegisterProcessor sẽ gửi lại thông báo cho Customer và chấm dứt đăng kí Nếu không, RegisterProcessor sẽ yêu cầu bộ kết nối CSDL (DBConnector) ghi thông tin Customer vào CSDL
Bộ xử lý yêu cầu chuyển hàng (ShipmentProcessor): Nhận vào các thông tin yêu cầu chuyển hàng, tách các thông tin của xác nhận thanh toán và chữ kí của Payment Server chuyển cho bộ kiểm tra chứng thực (Receipt Checker) Module này cũng thực hiện chuyển mặt hàng điện tử đã được thanh toán tới cho bộ tạo thông điệp để chuyển cho Customer
Bộ kiểm tra chứng thực (ReceiptChecker): Thực hiện kiểm tra chữ kí của
PaymentServer trên các thông tin của chứng thực thanh toán và chữ kí của Customer trên thông điệp yêu cầu chuyển giao hàng
Phẩn giao tiếp Cơ sở dữ liệu
Bộ kết nối Cơ sở dữ liệu (DBConnector): có nhiệm vụ kết nối cơ sở dữ liệu, thực hiện các thao tác trên cơ sở dữ liệu
Hình 4.6 : Sơ đồ xử lý dữ liệu của Module Customer
Các module xử lý của Customer gồm ba phần:
Phần xử lý thông điệp
Bộ đệm thông điệp (MessageBuffer): có nhiệm vụ nhận và chuyển giao thông điệp Quá trình này có hai chiều:
- Nhận các thông điệp yêu cầu từ bộ tạo thông điệp (Message Creator) và chuyển tới Module Vendor
- Nhận thông điệp đáp ứng từ Module Vendor và chuyển cho Bộ phân tích thông điệp (MessageAnalyser)
Bộ phân tích thông điệp (MessageAnalyser): Có nhiệm vụ phân tích các thông điệp nhận được từ Module Vendor Tùy vào thông điệp nhận được, Bộ phân tích sẽ yêu cầu hiển thị các thông tin tương ứng
Bộ tạo thông điệp (MessageCreator): Nhận đầu vào là dạng yêu cầu và thông tin đầu vào từ người dùng đóng gói thành thông điệp chuyển cho Bộ đệm thông điệp (MessageBuffer) để gửi cho Vendor
Bộ xử lý yêu cầu thanh toán (PaymentListenerHandling) nhận các thông điệp yêu cầu thanh toán từ Bộ tạo thông điệp, thực hiện liên lạc với PaymentServer để thực hiện thanh toán Module này hỗ trợ thực hiện một số tùy ý các giao dịch thanh toán Khi có nhiều yêu cầu thanh toán, chúng sẽ được đưa vào một hàng đợi, sau đó thực hiện từng giao dịch
Bộ xử lý kết quả thanh toán (Receipt/FailureHandling) nhận về kết quả của giao dịch thanh toán từ PaymentServer Nếu thanh toán thành công, một chứng thực Receipt được trả về, module này sẽ chuyển Receipt cho Bộ tạo thông điệp để đóng gói yêu cầu giao hàng chuyển tới ModuleVendor Nếu thất bại, một thông điệp thất bại Failure được trả về, phần GUI sẽ hiển thị thông báo cho người dùng
Phần giao tiếp người dùng
Bộ xử lý thông tin vào (InputProcessing): Nhận yêu cầu và thông tin người dùng đưa vào
Bộ hiển thị (ShowMessage) hiển thị các thông tin
4.3.3 Thiết kế Module Payment Server
Hình 4.7 : Sơ đồ xử lý dữ liệu của Module PaymentServer
Hình 4.8 mô tả dạng tổng quát nhất của sơ đồ xử lý dữ liệu của Module Payment Server Các module xử lý của Payment Server gồm ba phần:
Phần xử lý thông điệp
Bộ đệm thông điệp (MessageBuffer): có nhiệm vụ nhận và chuyển giao thông điệp Quá trình này có hai chiều:
- Nhận các thông điệp yêu cầu thanh toán từ Module Customer và chuyển tới Bộ điều khiển thanh toán
- Nhận thông điệp kết quả thanh toán (thành công hoặc thất bại) từ
Bộ tạo thông điệp Message Creator và chuyển tới Module Customer
Bộ tạo thông điệp (MessageCreator) tiếp nhận Chứng thực thanh toán để tạo thông điệp phản hồi cho Nhà cung cấp Thông điệp này thông báo trạng thái thanh toán thành công hoặc thất bại, sau đó được chuyển đến Bộ đệm thông điệp (MessageBuffer) để chuyển tiếp đến Nhà cung cấp.
Phẩn thực thi thanh toán
Bộ điều khiển thanh toán (PaymentController): Điều khiển quá trình thanh toán, phân tích thông tin thanh toán và gửi thông điệp cho bộ xử lý thích hợp
Bộ chuyển giao tài khoản (AccountTransmitter) đóng vai trò quan trọng trong quá trình giao dịch tài chính Nó thực hiện nhiệm vụ tiếp nhận thông tin giao dịch từ Bộ điều khiển thanh toán, bao gồm số tài khoản của người bán, người mua và tổng số tiền cần chuyển Tiếp theo, Bộ chuyển giao tài khoản thực hiện việc chuyển tiền từ tài khoản của người mua sang tài khoản của người bán, đảm bảo quá trình thanh toán diễn ra an toàn và chính xác.
Bộ tạo chứng thực (ReceiptCreator): Tạo một chứng thực cho giao dịch thanh toán trong trường hợp thành công
Bộ tạo xác nhận thất bại (FailureCreator): Tạo một xác nhận giao dịch thanh toán thất bại trong trường hợp không thành công
Bộ kết nối CSDL (DBConnector): Thực hiện các thao tác trên Cơ Sở Dữ Liệu
4.3.4 Chứng thực thanh toán Receipt Đặc điểm quan trọng của hệ thống thanh toán được xây dựng là việc sử dụng chứng thực thanh toán Receipt Chứng thực thanh toán đảm bảo được tính an toàn, bảo mật của quá trình thanh toán
Cấu trúc dữ liệu của Receipt gồm bốn phần khác nhau là:
Các trường cơ bản – Là các trường bắt buộc như đã xác định trong phần phân tích hệ thống – mục 6.3.5
Trường trạng thái – Trạng thái được dùng để báo hiệu trường hợp một quá trình thanh toán kết thúc không bình thường
Các trường mở rộng – Dữ liệu phụ phụ thuộc vào từng giao dịch cụ thể như hạn sử dụng của chứng thực
Trường bảo mật – Chữ kí của Payment Server.
Cài đặt hệ thống
4.4.1 Một số hàm phương thức được sử dụng:
● Hàm tạo cặp khóa riêng/khóa công khai TaoKhoa() :
// hàm tạo cặp khoá riêng – khoá công khai public List TaoKhoa()
ReRandom://Random để chọn lại khóa
Random r = new Random(); long x = r.Next(1001, 9997); long y = r.Next(1001, 9997); while (CHECK_SNT(x) == false || CHECK_SNT(y) == false)
Random rr = new Random(); x = rr.Next(1001, 9997);
List Khoa = new List(); // khai báo mảng chứa khóa 1,2 PriKey 3,4 PubKey long N = x * y; //Tính số hàm modulo của hệ thống long phi = (x - 1) * (y - 1); //Tính giá trị hàm số Ơ-le long E = 0; for (long i = 17; i < phi; i++) //Tìm số nguyên tố cùng nhau của E vs phi trong khoảng từ 1 0) //ở vị trí có số 1 thì nhân với a^(2^i) tương ứng Tất cả các phép nhân đều có phép mod p theo sau ret = ret * a % p; a = a * a % p; //tính tiếp a^(2^(i+1)), a^1 -> a^2 -> a^4 -> a^8 -> a^16 v.v b /= 2;
● Hàm kiểm tra chữ ký bằng khóa công khai CheckSignal(string, string, long, long)
// Kiểm tra chữ ký bằng khóa công khai
//Xác thực chữ ký public int CheckSignal(string message, string signal, long so_n, long so_e) {
List Mang1 = new List();
List Mang2 = new List();
//Giải mã bản tin thành hàm băm tạo ra bản tóm lược 1 string decrypt_message = sig.Decrypt_MD5(message);
//Xác thực chữ ký string[] chuoi = signal.Split(' '); for (int i = 0; i < chuoi.Length; i ++)
Mang1.Add(long.Parse(chuoi[i]));
//Xác thực chữ ký foreach (long i in Mang1)
//Giải mã chữ ký số cùng với khóa công khai và tạo ra bản tóm lược 2 tam = sig.TINHA(i, so_e, so_n);
//Chuyển thành chuỗi để so sánh
87 string Decrypt_signal = String.Join("", Mang2); int k = 0; if(decrypt_message.Length == Decrypt_signal.Length)
{ for(int i = 0; i < decrypt_message.Length; i ++)
{ if (Decrypt_signal[i] != decrypt_message[i])
} if (k == 0) return 1; //Bản tin đc bảo toàn else return 0;//Bản tin đã bị thay đôi
4.4.2 Một số giao diện cài đặt
Hình 5.8, 5.9, 5.10, 5.11, 5.12, 5.13, 5.14 trình bày một số giao diện cài đặt của hệ thống Với điều kiện khách hàng đã đăng kí tài khoản và đăng nhập trong hệ thống Các bước để khách hàng tiến hành mua sắm như sau:
Hình 4.8 Giao diện mua hàng
Hàng được chọn sẽ được cập nhật vào giỏ hàng
Hình 4.9 Giao diện giỏ hàng
Nhấn nút đặt hàng Hệ thống sẽ hiển thị thông báo đang xử lý giao dịch: nhận hàng rồi thanh toán hoặc thanh toán online
Hình 4.10: Giao diện đặt hàng
Khi thực hiện thanh toán online, thông tin chủ tài khoản và chủ thẻ sẽ tự động được điền vào thanh input
Hình 4.11 : Giao diện thanh toán online
Khi nhấn nút thanh toán, hệ thống sẽ gửi xác nhận yêu cầu thanh toán cho khách hàng bao gồm: thông tin thẻ, số dư tài khoản, tổng tiền thanh toán và số tiền còn lại trong thẻ
Hình 4.12 : Giao diện xác nhận thanh toán
Trong trường hợp khách hàng không đủ tiền thanh toán, hệ thống sẽ thông báo và không cho người dùng xác nhận thanh toán
Hình 4.13 : Giao diện thông báo giao dịch không thành công
VendorServer (Server nhà cung cấp) gửi thông điệp yêu cầu thanh toán cho PaymentServer (Ngân hàng) PaymentServer sau khi kiểm tra thấy thông điệp là hợp lệ, nó sẽ trừ tiền trong tài khoản của khách hàng và gửi thông báo xác nhận Thông điệp này cũng được mã hóa Sau khi kiểm tra tính hợp lệ của thông điệp nhận được, Vendor Server ghi yêu cầu mua hàng của khách hàng vào cơ sở dữ liệu của mình Các thông điệp đều được kí bằng thuật toán DSA
Sau bước 3, VendorServer thông báo đã thực hiện giao dịch thành công (Hình 4.13 )
Hình 4.14 : Giao diện khi thanh toán thành công
Kết luận
Hệ thống được xây dựng nhằm mục đích ứng dụng chữ kí điện tử trong quá trình truyền thông giữa các đối tác tham gia một giao dịch mua – bán qua mạng Giao thức dùng trong chương trình đã được đơn giản hóa so với giao thức đang được dùng trong các hệ thống thương mại điện tử thực tế trên Internet Điểm mấu chốt trong giao thức này đó là việc sử dụng một chứng thực điện tử - Receipt làm bằng chứng cho một quá trình thanh toán thành công Đây là cơ sở để người bán chuyển giao sản phẩm cho người mua Chương trình được xây dựng bằng ngôn ngữ ASP.NET, sử dụng kiến trúc mã hóa để thực hiện mã hóa và kí số lên các thông điệp