3.2. MỘT SỐ THUẬT TOÁN TRONG HỆ THỐNG TIỀN ĐIỆN TỬ 7 9-
3.2.3. Chia cắt và lựa chọn (Cut and Choose) 81
Phương pháp chia cắt và lựa chọn được Rabin đưa ra vào năm 1978. Phương pháp này được sử dụng rất phổ biến trong các hệ thống tiền điện tử trước đây và hiện nay vẫn đang được sử dụng rộng rãi trong thương mại điện tử.
Sau đây chúng ta mô tả tóm tắt cách thực hiện phương pháp chia cắt và lựa chọn được Chaum, Fiat và Naor [16] sử dụng trong sơ đồ tiền điện tử đầu tiên của mình để phát hiện chi tiêu đúp:
Rút tiền (Withdrawal)
1. Khách hàng chuẩn bị k đồng tiền. Mỗi đồng tiền có một giá trị nhất định và có một xâu (số seri) tương ứng với nó. Như vậy, mỗi khách hàng được xác định bởi một dãy các cặp (giá trị đồng tiền, số seri).
2. Ngân hàng chọn ngẫu nhiên một tập con k/2 đồng tiền (lấy phần nguyên).
3. Ngân hàng kiểm tra k/2 đồng tiền chứa chính xác giá trị bao nhiêu và các seri tương ứng.
4. Ngân hàng ký vào những đồng tiền không mở ra (không biết cụ thể) và giao cho khách hàng.
chúng. Số tiền còn lại thì khách hàng có thể chi tiêu.
Khách hàng không biết Ngân hàng sẽ chọn k/2 những đồng tiền nào trong số k đồng tiền.
Thanh toán (Payment)
1. Khách hàng gửi số tiền phải trả cho chủ hàng.
2. Chủ hàng kiểm tra tính hợp lệ của những đồng tiền đó bằng cách kiểm tra chữ ký của Ngân hàng.
3. Chủ hàng yêu cầu khách hàng cho biết 1 trong cặp xâu định danh của mỗi đồng tiền. Một xâu nhị phân ngẫu nhiên r = r1r2…rn được sử dụng để xác định xâu định danh.
Với mỗi ri = 1, khách hàng cho biết xâu định danh bên trái (giá trị) tương ứng của đồng tiền.
Với ri = 0 khách hàng cho biết xâu định danh bên phải (số seri) tương ứng của đồng tiền.
4. Chủ hàng kiểm tra tính hợp lệ của đồng tiền dựa vào việc phát hiện xem các xâu định danh có chính xác hay không.
Gửi tiền (Deposit)
1. Chủ hàng gửi tiền bán hàng vào Ngân hàng bao gồm cả các đồng tiền và một nửa của xâu định danh được phát hiện trong giao dịch.
2. Ngân hàng kiểm tra xem trong cơ sở dữ liệu có những đồng tiền nào trùng với xâu định danh của những đồng tiền gửi vào hay không.
3. Nếu có một đồng tiền có xâu định danh trùng, nghĩa là đã có sự tiêu đúp. Ngân hàng sẽ phải kiểm tra các xâu định danh của những đồng tiền mà khách hàng đã rút ra từ dịch vụ rút tiền trước đó.
Nếu xâu định danh trùng với định danh mà Ngân hàng biết thì chủ hàng chi tiêu đúp.
Nếu xâu định danh khác với những xâu định danh ở Ngân hàng thì khách hàng tiêu đúp.
Ngân hàng chọn một cặp định danh, trong đó phần bên trái là lấy từ một chủ hàng còn nửa bên phải là của chủ hàng khác. Ngân hàng thực hiện phép hoặc loại trừ XOR giữa hai nửa của cặp định danh vừa được chọn ra để phát hiện danh tính của khách hàng. Nếu cả hai chủ hàng sử dụng cùng một xâu ngẫu nhiên thì danh tính của khách hàng sẽ không phát hiện được. 4. Nếu các xâu định danh trên là duy nhất thì Ngân hàng nhận và tăng giá trị tiền
trong tài khoản của người gửi bằng số tiền mà họ đã gửi.
Rất tiếc, phương pháp này không thể chứng minh bằng lý thuyết rằng người sử dụng sẽ không thể phá vỡ mức độ an toàn của hệ thống.