KHÁCH HÀNG
NGÂN HÀNG
Gửi x’, giá trị tiền k
Gửi z - Làm mù đồng tiền x: x’
- Xóa mù z: y
- Ký lên x’: z - Trừ đi k giá trị tiền trong tài khoản của khách hàng.
3.1.1. Sinh khóa
- Chọn 2 số nguyên tố lớn p, q sao cho p ≠ q. - Tính n = p*q, phi = (p-1)*(q-1);
- Chọn b thỏa mãn b (1; phi); b và phi nguyên tố cùng nhau. - Tìm a sao cho a.b 1 (mod phi)
Khi đó (a,n) khóa bí mật dùng để ký, (b,n) khóa cơng khai để xóa mù và kiểm tra chữ ký.
3.1.2. Ký “mù” lên đồng tiền
Trƣớc tiên chủ tài khoản làm mù đồng tiền rồi sau đó tiến hành gửi đồng tiền đã làm mù theo yêu cầu rút tiền tới ngân hàng để ngân hàng xác thực lên đồng tiền.
Sử dụng khóa cơng khai (n,b) và tham số mù r (r đƣợc chọn ngẫu nhiên sao cho tồn tại phần tử ngịch đảo của r và r Zn) để làm mù đồng tiền, thu đƣợc z:
z = Blind(x) = x*rb (mod n)
z đƣợc chủ tài khoản gửi đến ngân hàng. Ngân hàng sử dụng khóa bí mật (a,n) để ký lên đồng tiền z:
y = sign(z) = za mod n
Ngân hàng tiến hành gửi y cho chủ tài khoản. Đồng thời trừ trong tài khoản một lƣợng tiền tƣơng ứng với giá trị đồng tiền khách hàng vừa rút.
3.1.3. Xóa mù
Khi chủ tài khoản nhận đƣợc y, thì chủ tài khoản tiến hành xóa mù để thu đƣợc chữ ký thực sự của ngân hàng trên đồng tiền.
Unblind(y) = ymodn
r = sign(x) Vì ymodn
r =( . ) mod . mod mod ( )
b a a ba
a
x r x r
n n x n sign x
r r
Sau khi thực hiện xóa mù xong, đồng tiền lúc này đƣợc đại diện bởi 2 thành phần là x và sign(x).
3.1.4. Kiểm tra chữ ký
A tiến hành giao dịch và thanh toán tiền cho B. Khi nhận đƣợc tiền (x, sign(x)), B phải tiến hành kiểm tra xem có phải tiền thật không. Bằng việc sử dụng khóa cơng khai tƣơng ứng của ngân hàng để kiểm tra chữ kỹ của ngân hàng.
Ver(x,sign(x)= true thì là tiền thật, ngƣợc lại là tiền “giả”.
3.2. CHỨNG MINH KHÔNG TIẾT LỘ THÔNG TIN TRONG XÁC THỰC CHỦ TÀI KHOẢN THỰC CHỦ TÀI KHOẢN
3.2.1. Khởi tạo các thông số ban đầu
Khởi tạo các thông số ban đầu g1, g2, u1, u2.
- Các giá trị g1, g2 do ngân hàng chọn thỏa mãn (g1,g2) là bộ phần tử sinh của Gq với Gq là nhóm con cấp q của Zp*; p và q là các số nguyên tố thỏa mãn q là ƣớc của p-1. Hai giá trị g1, g2 công khai.
- Giá trị u1, u2 thuộc Zp do chủ tài khoản chọn ngẫu nhiên, đƣợc giữ bí mật. - Chủ tài khoản tính 1 2
1u. 2u
I g g , gửi giá trị I đến ngân hàng.
3.2.2. Chủ tài khoản gửi yêu cầu xác minh
Chủ tài khoản chọn ngẫu hiên w1, w2 Zp, tính y:
1 2 w w 1 . 2 yg g Gửi y đến ngân hàng. 3.2.3.Ngân hàng gửi thử thách
Ngân hàng nhận y, chọn ngẫu nhiên Cr Zp. Sau đó tiến hành gửi thử thách Cr lại cho chủ tài khoản.
3.2.4.Chủ tài khoản gửi chứng minh
Chủ tài khoản nhận Cr và tiến hành tính r1, r2:
1 w1 r. mod ;1 2 w2 r. 2mod ;
r C u p r C u p
3.2.5. Ngân hàng kiểm tra tính hợp pháp của chủ tài khoản
Ngân hàng nhận r1, r2 rồi tiến hành kiểm tra giá trị của biểu thức:
1 2
1 2
. Cr r. r
y I g g
Nếu trả về giá trị đúng thì đó đúng là chủ tài khoản, tiến hành tiếp các giao dịch. Ngƣợc lại trả về giá trị sai thì chủ tài khoản là giả mạo, dừng ngay giao dịch.
Vì nếu đó thực sự là chủ tài khoản thì phải biết giá trị bí mật u1, u2, và nếu biết đƣợc chúng thì: 1 2 1 2 1 1 2 2 1 2 w w w w 1 2 1 2 1 2 1 2 . Cr . ( u . u )Cr u Cr. u Cr r. r y I g g g g g g g g 3.3. CHƢƠNG TRÌNH THỬ NGHIỆM
3.3.1. Chƣơng trình thử nghiệm chữ ký mù RSA
Dữ liệu đầu vào là tệp đồng tiền dạng *.txt, chứa giá trị của đồng tiền. Ta có Dong tien giá trị 500000 đơn vị tiền (giả sử là Việt Nam đồng)