Để khắc phục sự thông gian của một nhân viên ngân hàng với người dùng thì cần thực hiện “chia sẻ bí mật” khóa ký xác nhận đồng tiền. Khi đó khóa bí mật để ký lên đồng tiền cần “chia” thành nhiều mảnh bí mật, mỗi mảnh lại được phân phát một cách bí mật cho từng nhân viên ngân hàng có thẩm quyền.
Hình 2.4: Sơ đồ chia sẻ bí mật khóa ký
Để “chia” khóa bí mật K thành nhiều mảnh, ta sử dụng giao thức “chia sẻ bí mật” Sharmir được xây dựng trên sơ đồ ngưỡng A(t,m).
Sơ đồ ngưỡng A(t,m):
K là khóa bí mật cần chia “chia”.
t, m là các số nguyên dương thỏa mãn t ≤ m.
P là một tập gồm m thành viên.
Sơ đồ ngưỡng A(t, m) là phương pháp phân chia khoá K cho một tập P gồm m thành viên Pi , sao cho t thành viên bất kỳ có thể tính được giá trị K, nhưng không một nhóm gồm (t-1) thành viên nào có thể làm được điều đó.
Ví dụ có m = 4 thủ quỹ giữ két bạc ngân hàng. Xây dựng sơ đồ “chia sẻ bí mật” sao cho phải có tối thiểu có t = 3 thủ quỹ mới có thể ký xác nhận tiền cho người dùng, và là khó (gần như không thể) với một nhóm dưới 3 thủ quỹ. Đó là sơ đồ ngưỡng A(3, 4).
Đơn giản ta có thể xem người D làm nhiệm vụ phân phối khóa không thuộc nhóm P. Khi D muốn phân chia khoá K cho các thành viên trong P, anh ta sẽ cho mỗi thành viên một thông tin “cục bộ” nào đó về K (nghĩa là mỗi người trong P không biết những người còn lại nắm giữ thông tin gì), được gọi là các “mảnh khóa”.
Các mảnh khóa được phân phát một cách bí mật, để không một thành viên nào biết được mảnh khóa của thành viên khác.
Sơ đồ ngưỡng Sharmir Được đưa ra năm 1979.
Là sơ đồ ngưỡng A(t, t) trong Zm với trường hợp đặc biệt khi t = m
* Chia sẻ khóa bí mật K.
- D chọn một cách bí mật (độc lập và ngẫu nhiên) (t -1) phần tử của Zm là:
y1, …, y t-1
- D thực hiện tính các mảnh khóa yi: yi = K -
t
j 1
yj (mod m) với 1≤ i ≤ t.
Sau đó trao mảnh yi cho Pi
* Khôi phục khóa bí mật K.
Để khôi phục được khóa K, phải có cả t thành viên cùng hợp tác và K được tính theo công thức:
K = yi -
t
j 1
yj (mod m) 2.3.1. Chia sẻ khóa bí mật K
Người D thực hiện chia khóa bí mật K Zp thành các mảnh để trao cho nhân viên ngân hàng như sau:
- D chọn số nguyên tố p Zp và m phần tử khác nhau xi Zp (1≤ i ≤ m;
xi ≠ 0). Trong đó xi được công khai. D trao giá trị xi cho thành viên Pi. (1≤ i ≤ m) - D chọn bí mật, ngẫu nhiên t-1 phần tử của Zp là a1, …, a t-1. Lập đa thức trong Zp là : P(x) = K +
1
1 t
j
a j x j mod p. Với 1≤ i ≤ m - D tính giá trị các mảnh khóa yi : yi = P(xi)
- D trao một cách bí mật mảnh yi cho Pi để sao cho không ai biết mảnh khóa của ai.
Chú ý : Đa thức P(x) có bậc tối đa là t-1:
P(x) = K +
1
1 t
j
a j x j mod p. Với 1≤ i ≤ m
Với thành phần hằng số là khoá bí mật K. Mỗi thành viên Pi sẽ có một điểm (x i, yi) trên đa thức.
Ví dụ: Chia sẻ khóa bí mật K = 15
Khóa K=15 cần chia thành 3 mảnh cho 3 người P1, P3, P5.
- Chọn số nguyên tố p = 17, chọn m = 5 phần tử xi = i trong Zp, i =1, 2, 3, 4, - D trao giá trị công khai xi cho Pi .
- D chọn bí mật t - 1 = 2 phần tử trong Zp : a1 =10, a2 = 2. Lập đa thức P(x):
P(x)= K + ∑ t-1 j=1 aj xj j (mod p) = 13 + a1 x + a2 x2 (mod 17).
- D tính yi = P( x i ), 1 ≤ i ≤ m, trao mảnh yi cho Pi :
y1 = P(x1 ) = P(1) = 13 + a1 .1 + a2 .12 = 13 + 10 .1 + 2 .12 = 8
y3 = P(x3 ) = P(3) = 13 + a1 .3 + a2 .32 = 13 + 10 .3 + 2 .32 = 10 y5 = P(x5 ) = P(5) = 13 + a1 .5 + a2 .52 = 13 + 10 .5 + 2 .52 = 11 2.3.2. Khôi phục khóa bí mật K.
Có hai phương pháp: Giải hệ phương trình tuyến tính và dùng công thức nội suy Lagrangre.
Giải hệ phương trình tuyến tính khôi phục K
Giải hệ phương trình tuyến tính t ẩn số, t phương trình.
Giả sử rằng các thành viên Pi1,…, Pit muốn xác định khoá K. Họ biết rằng yij = P(x ij), 1≤ j ≤ t, trong đó P(x) Zp [x] là đa thức do phân phối khóa D chọn.
Vì P(x) có bậc lớn nhất là (t-1) nên có thể viết
P(x) = a0 + a1 x + …+ a t-1 x t-1
trong đó các hệ số a0, a1, … at-1 là chưa biết của Z p, còn a0 = K là khoá.
Vì yij = P (x ij), nên ta có hệ phương trình tuyến tính t ẩn số, t phương trình.
Chú ý ở đây các phép tính số học đều thực hiện trên Z p. Nếu các phương trình độc lập tuyến tính, thì sẽ có một nghiệm duy nhất, trong đó giá trị khoá a0 = K.
Ví dụ: Khôi phục khóa bí mật K = 13
Trong ví dụ 1, ta đã biết D chọn số nguyên tố p = 17, chọn m = 5 phần tử xi = i. trong Zp, i =1, 2, 3, 4, 5. D trao giá trị công khai xi cho Pi .
Giả sử nhóm thành viên giữ các “mảnh khóa“ B = {P1, P3, P5} sẽ kết hợp các mảnh của họ tương ứng là y1 = 8, y3 = 10, y5 = 11.
B biết đa thức:
P(x) = K + ∑ t-1 j=1ajxj j (mod p) = a0 + a1 x + a2x2 (mod 17).
Các phương trình cụ thể trong Z17 là a0 + a1 + a2 = 8 (mod 17).
a0 + 3 a1 + 9 a2 = 10 (mod 17).
a0 + 5 a1 + 8 a2 = 11 (mod 17).
Hệ này có nghiệm duy nhất trong Z17 là a0 = 13, a1 = 10, a2 = 2.
Như vậy khoá được khôi phục lại là : K = a0 = 13
Chương 3: CÀI ĐẶT THỬ NGHIỆM
Hệ thống ngân hàng và người dùng đều thực hiện các giao dịch trên mạng Internet. Người dùng lưu đồng tiền điện tử trên máy tính cá nhân, thẻ thông minh,…để thực hiện các giao dịch
Hình 3.1: Sơ đồ tổng quan giao dịch điện tử
Khách hàng đăng nhập tài khoản hoặc khởi tạo tải khoản, chứng minh mình là người sở hữu hợp pháp tài khoản, gửi yêu cầu rút tiền, rút tiền.
* Khởi tạo tài khoản (Open account).
Người dùng A muốn khởi tạo tài khoản tại một ngân hàng. A tạo ra hai số ngẫu nhiên u1 và u2, sau đó tính giá trị 11 22
u u
Ig g , gửi đến ngân hàng. Ngân hàng lưu lại giá trị I trong CSDL.
* Chứng minh đại diện tài khoản (Authenticate).
Khi rút tiền, A cần chứng minh với ngân hàng về sở hữu hợp pháp tài khoản.
A phải chứng minh cho ngân hàng là mình biết giá trị u1 và u2 mà không cần tiết lộ hai giá trị này.
* Rút tiền (Withdraw Money).
Sau khi xác thực được chấp nhận, Ngân hàng gửi cho A lượng tiền mà A yêu cầu. Ngân hàng trừ lượng tiền tương ứng vào tài khoản của A. A kiểm tra tiền từ ngân hàng, nếu thấy hợp lệ, thì chấp nhận tiền điện tử này.
A
Tổ chức Ngân hàng
Internet