2.1. VẤN ĐỀ XÁC THỰC THỰC THỂ SỬ DỤNG LƯỚI
2.1.1. Phương pháp sử dụng chữ ký số
Sơ đồ chữ ký cũng là bộ năm (P,A,K,S,V), trong đó:
P là tập hữu hạn các văn bản có thể A là tập hữu hạn các chữ ký có thể K là tập hữu hạn các khóa có thể S là tập các thuật toán ký
V là tập các thuật toán kiểm thử, nếu với mỗi k ∈K ta có thuật toán ký
S, : P A
k k
Sig ∈ Sig → và có thuật toán kiểm tra chữ ký:
Người ta dùng hệ mã hoá công khai để lập sơ đồ chữ ký số. Ở đây khoá bí mật dùng làm khoá ký, còn khoá công khai dùng để làm khoá kiểm tra chữ ký.
{ }
V, :PxA , ,
k k
Ver ∈ Ver → True False
2.1.1.2. Chữ ký RSA 1/. Sơ đồ chữ ký - Tạo khoá:
Chọn bí mật p,q là các số nguyên tố lớn, tính bí mật n=p.q và
( )n (p 1).(q 1)
φ = − −
Cho P=A=Zn và định nghĩa
K là tập các khoá, k=(k’,k”) với k’=a là khoá bí mật,k”=(n,b) là khoá công khai. Trong đó, a,b∈Z*n thoả mãn a b . 1mod ( )≡ φ n
Các giá trị n,b là công khai, các giá trị p,q,a là các giá trị bí mật.
- Tạo chữ ký:
Với mỗi k=(n,p,q,a,b), chữ ký trên x là:
- Kiểm tra chữ ký :
Ver x yk"( , )=True ⇔ =x ybmod , ,n x y Z∈ n Giả sử A muốn gửi thông báo x, A sẽ tính chữ ký y bằng cách
y = Sigk’(x) =xa mod n (a là khoá bí mật của A), do đó chữ ký là an toàn.
So sánh sơ đồ chữ ký RSA với sơ đồ mã hoá RSA ta thấy có sự tương ứng:
+ Việc ký chẳng qua là mã hoá, việc kiểm thử lại chính là việc giải mã.
+ Việc ký số vào tài liệu x tương ứng với việc mã hoá tài liệu x
+ Kiểm thử chữ ký chính là việc giải mã chữ ký, để kiểm tra xem tài liệu đã giải mã có đúng là tài liệu trước khi ký không. Thuật toán và khoá kiểm thử là công khai, ai cũng có thể kiểm thử chữ ký được.
'( ) a mod y Sig x = k = x n
Ví dụ: Chữ ký trên x=2
- Tạo cặp khoá (bí mật,công khai) (a,b):
Chọn bí mật số nguyên tố p=3, q=5, tính n= p.q = 3.5 = 15 , công khai n.
Đặt P=C=Zn , tính bí mật φ( )n = (p-1).(q-1) = 2.4 = 8 Chọn khoá công khai b = 3 < φ( )n ,nguyên tố với φ( ) 8n = Khoá bí mật a=3, là phần tử nghịch đảo của b theo mod φ(n)
( )
a.b ≡1modφ n
- Ký số: Chữ ký trên x = ∈2 P là
( ) amod 2 mod15 8, y A3
y =Sig xk =x n = = ∈ - Kiểm tra chữ ký:
"( , ) bmod 2 8 mod15b
Ver x yk =True⇔ =x y n ⇔ ≡ 2/. Độ an toàn của chữ ký RSA
Độ an toàn của chữ ký số RSA phụ thuộc vào bài toán tách số n thành hai số nguyên tố p và q.
2.1.1.3. Chữ ký Elgamal 1/Sơ đồ chữ ký
+ Tạo cặp khoá (bí mật, công khai) ( a,b)
Chọn số nguyên tố p sao cho bài toán logarithm rời rạc trong Zp là khó giải.
Chọn phần tử nguyên thuỷ g∈Z*p. Đặt P Z= *p, A Z xZ= *p *p-1
Chọn khoá bí mật là a∈Z*p. Tính khoá công khai b g= a mod p
Định nghĩa tập khoá K={( , , , ) : bp g a b = ga mod p} , các giá trị p,g,b được công khai, phải giữ bí mật a.
+ Tạo chữ ký:
Dùng hai khoá ký: Khoá a và khoá ngẫu nhiên bí mật r∈Z*p-1 (vì r∈Z*p-1 nên nguyên tố cùng p-1, do đó tồn tại r−1mod(p−1))
Chữ ký trên x∈P là y sig x r= k( , ) ( , )= γ δ , y∈A
Trong đó : γ ∈Z*p, δ∈Zp−1, γ = grmodp và δ = −(x a y r* )* −1mod(p−1) + Kiểm tra chữ ký :
Ver x yk( , , )δ =True⇔bγ*γδ ≡gxmodp
Ví dụ:
Giả sử cho p=467,α =2,a=127, khi đó:
mod =2 mod 467 =132127
a p
β α=
Nếu B muốn ký lên bức điện x=100 và chọn số ngẫu nhiên k =213 ( (213,466) 1
UCLN = và 213 mod 466−1 =431). Khi đó =2213mod 467 29
γ = và δ =(100-127x29) mod 466 51= Bất kỳ ai cũng có thể xác minh chữ ký bằng cách kiểm tra:
29 51
132 .29 ≡189(mod 467) và 2100 ≡189(mod 467) Vì thế chữ ký là hợp lệ.
2/ Độ an toàn của chữ ký Elgamal
Độ an toàn của chữ ký số Elgamal phụ thuộc bài toán tính loggh..
2.1.1.4. Quy trình tạo và kiểm tra chữ ký số
Việc ký một tài liệu bằng chữ ký số trước khi lưu trữ vào cơ sở dữ liệu hoặc gửi đi được thực hiện qua những bước như sau:
Chọn file tài liệu muốn ký.
Sử dụng hàm băm tạo đại diện của tài liệu cần ký.
Sử dụng khoá bí mật để mã hoá đại diện của tài liệu. Kết quả thu được chính là chữ ký số của người cần ký đối với tài liệu này.
Gắn hoặc đưa chữ ký số vào tài liệu.
Lưu tài liệu có chứa chữ ký số vào cơ sở dữ liệu hoặc gửi tài liệu đó đi.
Chữ ký có thể được lưu riêng vào một file hoặc được ghép trực tiếp vào file tài liệu. Nếu lưu riêng thì khi gửi ta phải gửi cả tài liệu gốc và file chữ ký.
Hình 2.1 Sơ đồ tạo chữ ký số của tài liệu
Để kiểm tra một tài liệu đã ký bằng chữ ký số xem tài liệu này có đúng là A gửi cho B hay không, nội dung của tài liệu có bị thay đổi hay không, A thực hiện theo những bước sau:
Mở tài liệu đã được ký bằng chữ ký số .
Tách riêng phần chữ ký số và phần nội dung của tài liệu gốc.
Sử dụng khoá công khai để giải mã chữ ký. Kết quả thu được đại diện tài liệu gốc đã tạo khi ký.
Sử dụng hàm băm tạo đại diện của tài liệu cần ký.
So sánh đại diện tài liệu mới được tạo với đại diện tài liệu có được từ việc giải mã chữ ký số.
Nếu phần chữ ký không bị thay đổi thì kết quả giải mã sẽ cho ta đại diện của tài liệu được lưu trữ hoặc gửi đi. Việc tạo đại diện của tài liệu nhận được cũng được thực hiện bằng thuật toán băm giống như khi ký tài liệu.
Vì vậy, khi giá trị đại diện của nội dung tài liệu nhận được bằng với giá trị giải mã của chữ ký số thì có nghĩa là khoá bí mật của người gửi đã được sử dụng để mã hoá đại diện của tài liệu và nội dung của tài liệu không bị thay đổi. Và do chỉ có người gửi mới biết khoá bí mật của họ nên có thể xác định được là người ký tài liệu đã gửi tài liệu đó đi. Điều này có nghĩa là người gửi không thể chối cãi về việc mình đã gửi tài liệu đi và được gọi là tính “Không thể phủ nhận” của chữ ký.
Nếu giá trị giải mã của phần chữ ký số nhận được khác với giá trị đại diện của phần nội dung tài liệu nhận được thì có thể xảy ra một hoặc các trường hợp sau đây:
- Nội dung của tài liệu nhận được đã thay đổi so với tài liệu được gửi đi.
- Chữ ký đã bị thay đổi.
- Không phải người gửi đã ký vào tài liệu nhận được