Các bƣớc thực hiện kiểm tra tính đúng của chữ ký điện tử:
Người nhận dùng khóa công khai (key public) ke của người gửi để giải mã chữ ký điện tử y vừa nhận, khôi phục lại thông điệp thu gọn: h1 = Dke(y).
Người nhận sử dụng hàm băm giống như người gửi để biến đổi thông điệp x nhận được thành thông điệp thu gọn: h2 = Hash(x).
So sánh kết quả, nếu h1 = h2 thì chấp nhận chữ ký là của người gửi. Ngược lại, chữ ký trên thông điệp không được chấp nhận.
Thông điệp gốc Kính gửi các …… Hàm băm (HASH) A6HR40 HT84K8 Thông điệp Kính gửi các …… Irw983ikaf9 Chữ ký điện tử Message disgest Private key
Hình 2.12. Sơ đồ minh hoạ các bước kiểm tra chứ ký điện tử
Nhận xét: Lược đồ chữ ký điện tử theo kiểu này, cho phép xác định được chủ nhân đích thực của thông điệp, đồng thời đảm bảo nội dung của thông điệp không bị sửa đổi hay làm giả mạo bởi người khác trong quá trình truyền đi trên mạng. Nhưng nội dung của thông điệp có thể đọc được, do trong lược đồ này chỉ thực hiện mã hóa một khối dữ liệu nhỏ đặc trưng cho thông điệp mà không mã hoá toàn bộ thông điệp. Điều này không phù hợp với nhu cầu trao đổi thông tin bí mật thông qua internet. Vì vậy để có thể đảm bảo được bí mật của nội dung, người gửi cần thực hiện quá trình mã hoá thông điệp bằng khoá công khai của người nhận, trước khi thực hiện ký xác nhận vào tài liệu, và người nhận phải thực hiện thêm một bước vào giải mã hoá thông điệp bằng khoá riêng của mình sau khi kiểm tra đúng chữ kí của người gửi. Thông điệp Kính gửi Các…… Irw983ikaf Chữ ký điện tử Hàm băm (HASH) So sánh (compare) Irw983jkaf (decryption) Public key điệp gốc Thông
Thông điệp thu gọn h2
Thông điệp thu gọn h1
Hình 2.13 Mô hình chữ ký điện tử dùng quá trình mã hóa và giải mã
Các bƣớc thực hiện mã hoá và tạo chữ ký cho những thông điệp
Người gửi A mã hoá thông điệp x bằng khoá công khai của người nhận B: C =EkeB(X). (keB là khoá công khai của người nhận B)
Người gửi A thực hiện bước tạo chữ ký để xác nhận bản mã C với khoá riêng của mình: y = SigkdA (C).
Gửi chữ ký Y và bản mã C đến người nhận B.
Mô tả các bƣớc kiểm tra chữ ký và giải mã thông điệp
Người nhận kiểm tra chữ ký trên thông điệp bằng khoá công khai của người gửi A: verkeA (C,y) ={true, fale}.
Nếu bước kiểm tra ở trên là đúng (true), thì người nhận tiếp tục thực hiện quá trình giải mã C với khoá riêng của mình: x = dkdB (C), để khôi phục lại thông điệp x. Ngược lại chữ ký của A đối với các tài liệu x là không hợp lệ.
2.5.2.3. Lược đồ chữ ký điện tử RSA
Hệ mật mã khoá công khai RSA cũng có thể sử dụng để cung cấp một hệ thống chữ ký điện tử bằng cách đảo ngược vai trò của quá trình mã hoá và giải mã. Muốn thực hiện lược đồ chữ ký điện tử RSA, mỗi người sử dụng phải tạo một cặp
khoá, bao gồm khóa công khai và khoá riêng giống như trong lược đồ mã hoá và giải mã RSA, đồng thời thống nhất sử dụng cùng một hàm băm H(x). Giả sử để tạo chữ ký cho thông điệp (tài liệu) m người sử dụng A thực hiện như sau:
Tính thông điệp thu gọn M = H(m) (M duy nhất đối với thông điệp m)
Tính S = Sign kd (M) = Md mod N (với d là khoá bí mật của người ký A).
Kết quả thu được chính là chữ ký của người A đối với thông điệp m.
Khi kiểm tra chữ ký của tài liệu nhận được người sử dụng B thực hiện như sau :
Lấy khoá công khai đích thực cho của người ký A (N,e) (ở tại thư mục chung).
Kiểm tra chữ ký S N; nếu không thì từ chối chữ ký.
Tính M‟ = Se mod N.
Tính M = H (m).
Chấp nhận chữ ký là đúng của người gửi, nếu và chỉ nếu M M‟.
Nếu quá trình kiểm tra chữ ký đúng (Verk(m, s) = true) thì người nhận B chắc chắn rằng thông điệp m đích thực là của người A gửi và nội dung thông điệp không bị thay đổi hay bị làm giả mạo bởi người kháckhi truyền đi trên mạng.
2.5.2.4. Lược đồ chữ ký điện tử ElGamal
Hệ mật mã khoá công khai ElGamal, thực chất được thiết kế chủ yếu cho mục đích ứng dụng vào hệ thống chữ ký điện tử. Tuy nhiên, như đã nghiên cứu hệ ElGamal cũng là hệ mật mã khá mạnh (có độ an toàn cao). Để thực hiện được lược đồ chữ ký ElGamal, đầu tiên mỗi người sử dụng trong nhóm đều phải tạo riêng cho mình một cặp khoá, bao gồm khóa công khai và khóa riêng giống như ở lược đồ mã hoá và giải mã ElGamal. Giả sử người sử dụng A muốn ký vào thông điệp m để gửi cho người sử dụng B, thì thực hiện như sau:
Chọn ngẫu nhiên số bí mật k, sao cho 1 k p – 2, với gcd(k,p - 1) = 1.
Tính: r = gk(mod p)
Tính k1 mod p – 1
Tính thông điệp thu gọn M = H (m).
Cặp số (r, s) chính là chữ ký của A đối với thông điêp m (k giữ bí mật). Khi thực hiện bước kiểm tra chữ ký, người nhận B thực hiện như sau:
Lấy khoá công khai đích thực của người ký A (g, p, y).
Kiểm tra 1 r p – 1; nếu không thì từ chối chữ ký.
Tính v1 = yr*rs mod p
Tính M = H (m)
Tính v2 = gM mod p
Chấp nhận chữ ký của A đối với m, nếu và chỉ nếu v1 = v2
Nhận xét: Lược đồ chữ ký ElGamal là cũng không đơn định (non – detrministic). Nghĩa là, từ một thông điệp M có thể sinh ra nhiều chữ ký khác nhau (do k là số nguyên được chọn ngẫu nhiên trong thuật toán). Tuy nhiên điều này không ảnh hưởng đến tính đúng đắn của lược đồ chữ ký.
Chứng minh: yr* rs gx.r * gk.s (mod p) g(x.r + k.s) (mod p) (2.11) vì: s = k-1*(M – x * r) mod p -1 k * s =(M –x * r) mod p – 1 M = (x* r + k* s) mod p -1 Mà: 0 M p -1 M = u * r + v * u (2.12) (2.11) (2.12) yr* rs gm (mod p)
2.5.2.5. Lược đồ chữ ký điện tử DSA
Lược đồ chữ ký DSA (Digital Signature Algorithm) của NIST đưa ra tháng 12 năm 1994, là sự cải tiến lược đồ chữ ký ElGamal, và đã trở thành một trong những chuẩn chữ ký điện tử DSS (Digital Signature Standard) ở Mỹ và thế giới. Hệ thống chữ ký này có độ an toàn cao và thực hiện hiệu quả trên các thiết bị có tốc độ xử lý chậm và bộ nhớ ít như thẻ thông minh (Smart cards).
Trong lược đồ chữ ký ElGamal, nếu số nguyên tố p có kích cỡ 512- bist thì chữ ký sinh ra là cặp (r, s) có tổng chiều dài 1024- bits. Với các thiết bị yếu như thẻ thông minh thì chữ ký cần phải nhỏ hơn nhiều, do đó lược đồ chữ ký ElGamal,đã được cải tiến thành chữ ký DSA, sử dụng số nguyên tố p có kích cỡ khoảng 512
1024 bist, để tạo ra chữ ký 320 – bist đối với chuỗi dữ liệu đầu vào 160 – bist. Trong thực hành, thông thường chiều dài của một thông điệp lớn hơn so với chuỗi 160 - bist ở đầu vào, do đó thông điệp sẽ được nén lại thành chuỗi duy nhất có kích cỡ 160 – bist bằng thuật toán băm SHA – 1. Muốn sử dụng lược đồ chữ ký DSA đầu tiên mỗi người cần phải thực hiện các bước tạo cặp khoá như sau:
Tạo số nguyên tố lớn p (khoảng 512 1024- bits) sao cho bài toán Logarithm rời rạc trong Zp là không giải nổi, một số nguyên tố q (160 –bits) chia hết cho (p – 1), và số nguyên g Zp* có bậc q.
Chọn một số nguyên ngẫu nhiên x, sao cho 0 < x < q, và tính y = gx mod p
Công bố bộ bốn số (p, q, g, y) làm khoá công khai, và giữ bí mật số nguyên x làm khoá riêng.
Giả sử muốn tạo chữ ký cho thông điệp m người ký A thực hiện như sau:
Chọn ngẫu nhiên một số nguyên bí mật k, sao cho 1 k q – 1
Tính r =(gk mod p) mod q
Tính k-1 mod q
Tính s = k1
* {SHA – 1(m) + x * r} (mod q) (SHA - 1 là hàm băm chuẩn) cặp số nguyên (r, s) chính là chữ ký của A đối với thông điệp m
Khi kiểm tra chữ ký, người sử dụng B thực hiện các bước như sau:
Lấy khoá công khai đích thực của người ký A (p, q, g, y)
Kiểm tra 1 r q – 1 và 1 s q – 1; nếu không thì từ chối chữ ký.
Tính: v1 ={s-1 *SHA – 1 (m)} mod q
Tính: v2 = (r *s-1) mod q
Chấp nhận chữ ký của A đối với thông điệp m, nếu và chỉ nếu gv1
* yv2= r.
Nhận xét: Tính chất không thể phủ nhận chữ ký (non – repudiation) là khá rõ ràng, bởi vì trong lược đồ chữ ký sử dụng khoá riêng bí mật của mình, do đó họ không thể phủ nhận chữ ký đối với thông điệp mà họ đã ký.
Trong trường hợp nếu khoá riêng bị lộ thì hệ thống chữ ký điện tử sẽ tiến hành một quá trình gọi là huỷ bỏ bộ khoá chữ ký điện tử của người này, và cung cấp một bộ khoá khác. Các chữ ký đã được ký trước khi khóa bị lộ vẫn có hiệu lực.
Một khả năng khác quan trọng khi người ký bị lộ khoá riêng. Ví dụ, tai thời điểm T1, A ký một thông điệp cho B rút một số tiền. Sau đó vào thời điểm T2 A thông báo khoá riêng của mình bị lộ, và A cố gắng phủ nhận việc mình đã ký cho phép B rút tiền trước đó. Để giải quyết điều này, như chữ ký của A phải kèm theo giá trị về thời gian, như vậy thì chữ ký của A tại thời điểm T1 vẫn hợp lệ do T1< T2.
2.5.2.6. Tóm tắt và kết luận ứng dụng
Hệ mật mã khoá công khai RSA và hệ mật mã ElGamal cũng như lược đồ chữ ký RSA, lược đồ chữ ký Schnorr được dùng phổ biến trong các ứng dụng bảo mật do có độ an toàn và hiệu quả thực hiện tốt hiện nay. Các thuật toán cũng đơn giản và dễ thực hiện. Lược đồ chữ ký điện tử RSA được chọn để tích hợp vào hệ thống bảo mật thông tin và xác thực thư tín điện tử. Kèm theo với lược đồ chữa ký RSA là thuật băm MD5 cũng được chọn để phù hợp cho yêu cầu tạo thông điệp thu gọn dài 128 bits từ thông điệp đầu vào có chiều dài bất kỳ, phục vụ cho hệ thống chữ ký.
Chƣơng 3
MỘT SỐ MÔ HÌNH TIỀN ĐIỆN TỬ
3.1. GIỚI THIỆU VỀ TIỀN ĐIỆN TỬ
3.1.1. Các hình thức thanh toán trong thƣơng mại điện tử
Thương mại điện tử (còn gọi là thị trường điện tử, E-Commerce hay E-Business) là quá trình mua bán thông qua việc truyền dữ liệu giữa các máy tính theo đúng nguyên lý phân phối, kinh doanh và tiếp thị của thị trường. Hiện nay, mối quan hệ thương mại hay dịch vụ trực tuyến (Online) hay gián tiếp (Offline) giữa người cung cấp và khách hàng được tiến hành thông qua Internet. Hiểu theo nghĩa rộng, thương mại điện tử bao gồm tất cả các loại giao dịch thương mại mà trong đó các đối tác giao dịch với nhau trong khuôn khổ chào mời, thoả thuận mua bán và cung cấp dịch vụ đều sử dụng các kỹ thuật của công nghệ thông tin và truyền thông, kỹ thuật điện tử.
Điểm đặc biệt của thương mại điện tử so với các kênh phân phối truyền thống là tính linh hoạt cao độ về mặt giao dịch kinh doanh, cung ứng các dịch vụ và giảm thiểu được phí tổn vận tải cho các đối tác kinh doanh. Các phí tổn khác, thí dụ như cước phí điện thoại, phí tổn đi lại để thu thập, trao đổi với khác hàng hay tiếp thị, v.v. cũng được giảm thiểu đáng kể. Mặc dù vậy, đối với các dịch vụ vật chất cụ thể, khoảng cách không gian vẫn cần phải được khắc phục và vì thế đòi hỏi một khả năng tiếp vận phù hợp nhất định. Trong thương mại điện tử, vấn đề bảo đảm an toàn trong giao dịch điện tử, nhất là vấn đề thanh toán điện tử là rất quan trọng.
Trong thương mại điện tử có ba phương thức thanh toán chủ yếu, đó là thanh toán
bằng thẻ tín dụng (credit), séc (cheques) và tiền điện tử (electronic cash). Trong báo
cáo này chúng ta tập trung vào phương thức thứ ba, phương thức thanh toán tiền điện tử.
Việc thanh toán tiền điện tử được thực hiện thông qua các giao thức theo một sơ đồ được gọi là sơ đồ tiền điện tử. Sơ đồ thanh toán tiền điện tử được định nghĩa như là sơ đồ thanh toán ẩn danh. Giao thức thanh toán tiền điện tử (Electronic cash
protocol) được xem như là một trong những giao thức thanh toán có nhiều ứng dụng nhất trong thương mại điện tử trên Internet. Phần lớn các ứng dụng hiện nay là sử dụng giao thức thanh toán ẩn danh bằng cách dùng các thẻ từ thông minh. Ưu điểm của việc sử dụng các hệ thống này là người sử dụng không phải đem theo tiền mặt khi đi giao dịch kinh doanh. Mọi giao dịch đều có thể thực hiện thông qua phương tiện điện tử trên Internet một cách dễ hơn và hiệu quả.
Một trong các thẻ tiền điện tử sử dụng phổ biến hiện nay là các thẻ điện thoại (telephone cards). Với những thẻ loại mới, người sử dụng có thể nạp đầy (làm tươi) giá trị của thẻ. Tuy nhiên, trong luận văn này ta không quan tâm đến những tính chất trên.
Vấn đề chúng ta tập trung nghiên cứu ở đây là tìm hiểu một số cơ chế thanh toán tiền điện tử để xây dựng một hệ thống thanh toán an toàn để người sử dụng có thể được cung cấp các dịch vụ, mua bán hàng và thanh toán theo thể thức ẩn danh. Hệ thống này cũng cho phép người dùng bổ sung thêm giá trị vào lượng tiền có trong tiền điện tử thuộc quyền sở hữu của mình.
3.1.2. Tiền điện tử là gì?
Trước khi đi xây dựng sơ đồ thanh toán tiền điện tử (gọi tắt là tiền điện tử), chúng ta cần tìm hiều về các đặc tính của chúng. Tiền điện tử có các đặc tính sau:
“Giá trị”: Nó có thể được sử dụng để mua, bán hàng và các dịch vụ khác.
“Ẩn danh”: Danh tính của những người sở hữu tiền trước đây và hiện thời là
không biết được. Ngay cả Ngân hàng và Chính phủ cũng không biết được vết luân chuyển của các đồng tiền, không biết được những đồng tiền đó được chi tiêu bởi ai và ở đâu.
“Sự an toàn”: Tiền điện tử phải được thiết kế sao cho đảm bảo an toàn và dễ
dàng phát hiện được tiền giả.
Một sơ đồ thanh toán có ba đặc tính trên được gọi là tiền điện tử hay hệ thống
tiền điện tử. Ngoài ra cũng còn một số yêu cầu khác đối với tiền điện tử khác với
tiền thực (tiền mặt) do phương thức thanh toán là điện tử. Một trong những đặc tính quan trọng của tiền thực là bảo đảm giá trị đồng tiền đúng bằng giá trị ghi trên nó. Tiền điện tử chỉ được đảm bảo bằng giá trị tiền được cấp phát.
Các dịch vụ tiền điện tử được cài đặt theo các quá trình cụ thể, được xem như là
các cơ chế thanh toán tiền điện tử.
Liên quan đến tiền điện tử có các khái niệm cơ bản sau:
Đồng tiền (Coin): được sử dụng để mô tả một đơn vị tiền điện tử và giá trị
của nó có thể chia nhỏ được.
Ngân hàng, nhà băng (Bank): nhà kho hoặc người quản trị tiền điện tử.
Khách hàng: thực thể sử dụng và chi tiêu các đồng tiền.
Thương nhân hoặc chủ hàng: thực thể nhận các đồng tiền điện tử.
3.1.3. Cấu trúc chung của chuyển tiền điện tử
Đến nay tất cả các sơ đồ tiền điện tử đều có ba kiểu giao dịch cơ bản: rút tiền (withdrawal), thanh toán (payment) và gửi tiền (deposit). Đây là những giao dịch quan trọng nhất, quyết định sự thành công của thương mại điện tử.
Giao dịch rút tiền được thực hiện khi khách hàng muốn lấy ra một số tiền đã có trong tài khoản của họ ở Ngân hàng. Giao dịch này thực hiện thành công thì hệ thống phải chuyển cho khách hàng một lượng tiền điện tử mà họ yêu cầu, tất nhiên số tiền này không vượt quá số tiền mà họ có trong tài khoản ở Ngân hàng.
Giao dịch thanh toán được thực hiện khi khách hàng muốn chi tiêu các đồng tiền điện tử. Các đồng tiền điện tử được chuyển cho chủ hàng. Giao dịch này bao gồm cả sự chuyển giao ngược lại các hàng hoá và các dịch vụ của chủ hàng cho khách