Giới thiệu chung

Một phần của tài liệu Tìm hiểu về chữ ký số (digital signature) và ứng dụng (Trang 32)

Chữ ký số (Digital Signature) được tạo ra và kiểm tra bằng mật mã, đó là phương pháp thuộc lĩnh vực toán học, nó chuyển toàn bộ message thành một dạng khó có thể nhận dạng và có thể giải mã. Digital Signature sử dụng hai khóa thông dụng, một khóa để tạo ra Digital Signature hoặc chuyển message thành dạng khó nhận dạng, một khóa dùng để kiểm tra Digital Signature hoặc để chuyển message đã mã hóa về dạng ban đầu của nó.

Digital Signature là hình thức cơ bản để bảo mật cho một tài liệu điện tử (e-mail, bảng tính, text file,…) đáng tin cậy. Đáng tin cậy nghĩa là bạn biết ai tạo ra tài liệu và bạn biết nó không bị thay đổi trong bất cứ cách nào từ người tạo ra nó.

Digital Signature làm việc dựa trên hai khóa là Public key và private key và thực hiện qua hai giai đoạn là việc hình thành chữ ký trên tài liệu ở phía người gửi và việc xác nhận tài liệu nhận được đã chính xác và nguyên vẹn hay không ở phía người nhận.

Tạo chữ ký điện tử gồm hai phần mã hóa trước khi gửi đi và kiểm tra thẩm quyền để đọc. Hay chính là diễn ra hai quá trình mã hóa (Encrypt) và và giải mã (Decrypt).

4.2. Ký chữ ký và xác thực chữ ký điện tử

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 33

Khi một người muốn gửi cho ai đó một văn bản quan trọng, đòi hỏi văn bản phải được ký xác nhận định danh người gửi văn bản; người gửi văn bản sẽ làm thực hiện quy trình ký chữ ký số.

Quy trình ký chữ ký số sử dụng khóa công khai được mô phỏng như hình vẽ:

Hình 4.1 – Sơ đồ quá trình ký vào tài liệu điện tử dùng private key

Các bước thực hiện như sau:

Bước 1: Dùng giải thuật băm để thay đổi thông điệp cần truyền đi. Kết quả ta được một bản tin tóm lược (Message Digest). Dùng giải thuật (Message Digest 5) ta được bản mã có chiều dài 128-bit. Nếu dùng giải thuật SHA (Secure Hash Algorithm) ta có chiều dài 160-bit.

Bản tin điện tử Khóa bí mật của người gửi Hàm băm Mã hóa Chữ ký số vào văn bản điện tử Dữ liệu sẵn sàng được gửi đi Chữ ký số

Bản tin rõ đã ký Bản tin tóm lược

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 34

Bước 2: Sử dụng khóa bí mật (Private key) của người gửi để mã hóa Message Digest thu được ở bước 1. Thông thường ở bước này người ta dùng giải thuật RSA kết quả sẽ thu được chữ ký số của thông điệp ban đầu.

Bước 3: Gộp chữ số vào bản tin điện tử ban đầu. Việc này gọi là “ký xác nhận” vào thông điệp. Sau khi ký xác nhận vào thông điệp mọi sự thay đổi trên thông điệp sẽ bị phát hiện trong giai đoạn kiểm tra. Ngoài ra việc ký xác nhận này đảm bảo người nhận tin tưởng thông điệp này xuất phát từ người gửi.

4.2.2. Xác thực chữ ký số (giải mã - Decrypt )

Sau khi nhận một văn bản có đính kèm chữ ký của người gửi, người nhận văn bản phải giải mã trở lại văn bản trên và kiểm tra xem văn bản này đã bị thay đổi bởi người thứ ba chưa, và chữ ký đính kèm trên văn bản có đúng của người gửi hay không (kiểm tra “chính danh”).

Quy trình giải mã được thể hiện ở hình 2:

Các bước thực hiện quá trình giải mã:

Bước 1: Bản tin điện tử có đính kèm chữ ký của người gửi, sau khi nhận sẽ được tách riêng phần chữ ký và phần văn bản nguyên vẹn. Sử dụng khóa công khai (Public key) của người gửi (khóa này được thông báo đến mọi người) để giải mã chữ ký điện tử của thông điệp, kết quả là bản tin tóm lược 1.

Bước 2: Dùng giải thuật băm MD5 (hoặc SHA) để băm văn bản đã tách phần chữ ký số, kết quả thu được văn bản tóm lược 2.

Bước 3: So sánh hai văn bản tóm lược thu được ở bước 1 và 2. Nếu trùng nhau kết luận thông điệp này không bị thay đổi trong quá trình truyền tin và xác nhận thông điệp này là của người gửi.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 35

Bản tin đã bị thay đổi

Hình 4.2 – Sơ đồ quá trình xác thực điện tử dùng Public Key.

4.3. Chương trình Demo mô phỏng chữ ký số đơn giản

Giả thiết Alice muốn gửi một tài liệu A cho Bob, Alice dùng giải thuật MD5 để tạo ra một mã duy nhất từ A mà ta vẫn gọi là chữ ký điện tử hay ký số S(A).

Khóa công khai của người gửi

Giải mã Tách bản tin và CKS Giải mã Bản tin tóm lược 2 Bản tin điện tử CKS Hàm băm Bản tin tóm lược 1 Giống nhau Bản tin đã ký Giống nhau Bản tin là toàn vẹn Không đúng người gửi

Khác nhau

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 36

Đặc điểm của S(A) là duy nhất với mỗi tài liệu, cho dù có sửa một ký tự trong tài liệu A thì ngay lập tức S(A) mới khác ngay với S(A) cũ. Điều đó để ta chắc chắn rằng mỗi tài liệu chỉ có một chữ ký duy nhất.

Hay nói cách khác với chữ ký tay ta thường dùng đó là mọi văn bản ta đều ký một chữ ký “của ta” vào nó. Còn chữ ký số là một mã được sinh ra từ nội dung của một tài liệu, nội dung khác thì sẽ có một mã chữ ký khác nhau và là duy nhất. Sau đó khi ta muốn gửi tài liệu A cho người nhận, thì chúng ta sẽ phải gửi kèm cả chữ ký S(A) theo.

Giả sử tài liệu A đến tay một người nào đó trước khi đến tay Bob và họ cố tình sửa nội dung của nó theo mục đích khác (mục đích xấu). Khi đó Bob sẽ nhận được tài liệu A’ tất nhiên khác A, khi đó Bob dùng MD5 để tạo chữ ký cho A’ thì thu được S(A’), tiến hành so sánh với S(A) nhận được tất nhiên S(A’) phải khác S(A). Khi đó Bob biết nội dung đã bị sửa.

Tuy nhiên nếu đối tượng đó vừa sửa nội dung thành A’ vừa tạo chữ ký S(A’) và gửi cho Bob, và Bob nhận được là A’ và S(A’) khi đó Bob không có được S(A) gốc để so sánh, và tất nhiên khi Bob dùng MD5 để tạo chữ ký cho A’ thì nhận được S(A’) = S(A’) nhận được, vì thế mà Bob không biết được tài liệu đã bị sửa.

Để khắc phục nhược điểm này Alice phải dùng thêm mã hóa cho chữ ký, ta sử dụng mã RSA. Tài liệu A MD5 Chữ ký của Tài liệu S(A)

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 37

Chương trình mô phỏng

Hình 4.3: Chương trình demo chữ ký điện tử.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 38

4.4. Phân loại chữ ký số

+ Chiến lược chữ ký với phần đính kèm:

- Chữ ký điện tử đi kèm với thông điệp gốc

- Cần có thông điệp (gốc) cho quá trình kiểm tra chữ ký điện tử - Sử dụng hàm băm mật mã

- Ví dụ DSA, RSA, ElGamal, Schnorr,…

+ Các mức độ “Phá vỡ” chiến lược chữ ký điện tử:

- Total Break: Tìm được phương pháp hiệu quả để “giả mạo” chữ ký hợp lệ:

+ Biết được Private key?

+ Không biết Private key nhưng tìm được phương pháp hiệu quả để giả tạo chữ ký hợp lệ.

- Selective forgery: Cho trước một thông điệp, người tấn công có khả năng tạo ra được chữ ký hợp lệ trên thông điệp này.

- Existential forgery: Có thể tìm và chỉ ra được một số (có thể vô nghĩa). Nhưng dễ dàng để người tấn công có thể tạo ra được chữ ký hợp lệ trên thông điệp này.

Chiến lược chữ ký Xác định Ngẫu nhiên Đính kèm Khôi phục thông điệp Xác định Ngẫu nhiên

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 39

+ Phân loại tấn công

- Key-only: Người tấn công chỉ biết public key - Message attack

+ Known-message attack: Người tấn công có các chữ ký của một tập các thông điệp. Người tấn công biết nội dung của các thông điệp này nhưng không được phép chọn sẵn các thông điệp.

- Chosen-message attack: Người tấn công có được các chữ ký hợp lệ của một tập hợp các thông điệp có chọn lọc.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 40

CHƢƠNG 5

CHỮ KÝ SỐ NGƢỜI DÙNG KHÔNG CHỐI BỎ (UNDENIAL SIGNATURE)

5.1. Giới thiệu

Chữ ký số chống chối bỏ được công bố bởi Chaum và Van Antwerpen vào năm 1989. Nó có một nét riêng mới lạ rất thú vị. Quan trọng nhất trong số đó là chữ ký không thể kiểm tra khi không được sự cộng tác của người ký, Bob.

Sự bảo vệ này của Bob đề phòng khả năng chữ ký trong tài liệu của anh ta bị sao chép và phân phối bởi thiết bị điện tử mà không có sự đồng ý của anh ta. Ví dụ, Bob có một phần mềm và chữ ký kèm theo được tạo ra nhờ thuật toán của chữ ký số thông thường. Như vậy, sẽ không tránh khỏi trường hợp phần mềm bị sao chép mà Bob không biết. Người mua sẽ kiểm tra chữ ký kèm theo phần mềm nhờ thuật toán kiểm tra công khai Ver và công nhận chữ ký là đúng. Vì chúng ta đã biết bản sao của chữ ký số là đồng nhất với bản gốc. Đương nhiên như vậy Bob bị mất bản quyền. Để tránh điều bất lợi đó Bob đã dùng chữ ký số chống chối bỏ. Sự kiểm tra sẽ thành công khi thực hiện giao thức hỏi – đáp.

Lược đồ chữ ký chống chối bỏ gồm 3 phần: Thuật toán ký, giao thức kiểm tra, giao thức chối bỏ (disavowal).

5.2. Lược đồ chữ ký chống chối bỏ 5.2.1. Thuật toán ký 5.2.1. Thuật toán ký

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 41

Cho p, q là các số nguyên tố lẻ sao cho p = 2q +1 và bài toán rời rạc trên Zp là khó. Lấy   Zp* là một phần tử của bậc q (Nếu 0 là phần tử nguyên thủy của Zp thì  = 0

(p -1)/q

mod p). Lấy 1  a  q-1 và xác định:  = a

mod p. Lấy G là phân nhóm nhân của Zp*

bậc q (G bao gồm các thặng dư bậc 2 theo modun p).

Lấy P = A = G, xác định: K =  (p, , a, ):  = a

mod p

Các giá trị p, ,  là công khai, a là bí mật.  Tạo chữ ký:

Với K = (p, , a, ) và x  G, xác định chữ ký y trên thông báo x: y = sigk(x) = xa mod p

5.2.2. Giao thức kiểm tra

Với x, y  G, sự kiểm tra được tiến hành theo giao thức sau: 1. Alice chọn e1, e2 ngẫu nhiên, e1, e2 Zp*.

2. Alice tính c = ye1 e2

mod p và gửi nó cho Bob. 3. Bob tính d = ca1modq mod p và gửi nó cho Alice. 4. Alice chấp nhận y là chữ ký đúng khi và chỉ khi:

d  xe1e2

mod p.

Vai trò của p, q trong lược đồ:

Lược đồ nằm trong Zp; tuy nhiên chúng ta cần tính toán trong phân nhóm nhân G của Zp

*

của bậc số nguyên tố lẻ. Đặc biệt, chúng ta cần tính phần tử nghịch đảo theo modunG, điều này lý giải tại saoGnên là nguyên tố lẻ. Nó thuận tiện nếu lấy p = 2q+1 với q là nguyên tố lẻ. Trong trường hợp này phân nhóm G tồn tại.

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 42

Ở đây, chúng ta chứng minh rằng Alice sẽ chấp nhận chữ ký đúng. Trong các phép toán dưới đây, tất cả số mũ là biến đổi theo modun q.

Ta có: d  ca1 mod p Mà c = ye1 e2 mod p  d  ye1 a1e2 a1mod p (1) Ta lại có: a mod p  1 a  mod p (2) Tương tự ta cũng có: y = xa mod p  ya1 = x mod p (3) Thay (2), (3) vào (1) được:

d  xe1e2mod p. Đó là điều phải chứng minh.

Ví dụ: Giả sử chúng ta lấy p = 467. Từ (2) là căn nguyên thủy => 22 = 4 là thặng dư bậc 2 theo modun 467 và 4 là phần tử sinh của G. Lấy  = 4. Giả sử a = 101, ta có:

 = a

mod p = 4101 mod 467 = 449 Bob sẽ ký thông báo x = 119 với chữ ký:

y = xa mod p = 119101 mod 467 = 129

Giả sử Alice muốn kiểm tra chữ ký y. Alice chọn ngẫu nhiên e1 = 38, e2 = 397.

Ta có: c = ye1 e2 mod p = 12938 449397 mod 467 = 13 Alice gửi c =13 cho Bob và Bob sẽ tính d theo:

d = ca1modq mod p  d = 13101 1  mod233 mod 467 (q = (p - 1)/2 = (467 –1 )/2 = 233)  d = 9

Alice kiểm tra chữ ký y theo bước 4. Có: xe1e2mod p = 11938 4397 mod 467 = 9

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 43

 d  xe1e2mod p.

Do đó, Alice chấp nhận chữ ký là đúng. (xem trong [8])

5.2.3. Giao thức chối bỏ

Một vấn đề đặt ra, nếu sự cộng tác của Bob là cần thiết trong việc kiểm tra chữ ký thì điều gì đã ngăn cản Bob từ chối chữ ký do chính anh tạo ra trong thời gian gần đây? Tất nhiên, Bob có thể cho rằng chữ ký đúng đó là giả mạo và từ chối kiểm tra nó hoặc Bob thực hiện một giao thức mà theo đó chữ ký sẽ không được kiểm tra.

Vì vậy, một lược đồ chữ ký chống chối bỏ được kết hợp chặt chẽ với một giao thức bỏ và nhờ điều đó Bob có thể chứng minh rằng chữ ký đó là giả mạo. (Nếu anh ta từ chối thực hiện một phần trong giao thức chối bỏ, điều đó đồng nghĩa với dấu hiệu chứng minh chữ ký đó là xác thực trên thực tế và anh ta đang cố gắng từ chối chữ ký của mình).

Giao thức chối bỏ gồm 2 tiến trình của giao thức kiểm tra và có các bước sau:

1. Alice chọn e1, e2 ngẫu nhiên, e1, e2 Zq *

.

2. Alice tính c = ye1 e2 mod p và gửi nó cho Bob. 3. Bob tính d = ca1modq

mod p và gửi nó cho Alice. 4. Alice kiểm tra d  xe1e2mod p.

5. Alice chọn f1, f2 ngẫu nhiên, f1, f2 Zq *

.

6. Alice tính C = yf1f2 mod p và gửi nó cho Bob. 7. Bob tính D = ca1modq

mod p và gửi nó cho Alice. 8. Alice kiểm tra D  xf1f2mod p

9. Alice kết luận rằng y là chữ ký giả mạo khi và chỉ khi (de2

)f1  (Df2 )e1

Đỗ Thị Xuân Thắm K31 B – Khóa luận tốt nghiệp – Chuyên ngành Tin học 44

Các bước 1 – 4 và 5 – 8 là hai tiến trình không thành công của giao thức kiểm tra. Bước 9 là bước “kiểm tra tính chính xác” cho phép Alice xác định rõ chữ ký đó có xác thực hay không nếu sự trả lời của Bob được tạo ra như giao thức theo lý thuyết. Ví dụ: Ta lấy tương tự như ví dụ trước.

Lấy p = 467,  = 4, a = 101,  = 449.

Ký thông báo x = 286 với chữ ký y = 83 (là giả mạo). Bob muốn thuyết phục Alice rằng chữ ký đó là không đúng. Vậy phải thực hiện như sau:

Alice chọn ngẫu nhiên e1 = 45, e2 = 237. Alice tính c = 305 và Bob trả lời với d = 109. Alice tính: 28645

. 4237mod 467 = 149.

Vì 149  109 nên Alice thực hiện tiếp giao thức chối bỏ.

Alice chọn tiếp f1 = 125, f2 = 9, ngẫu nhiên, Alice tính C = 270 và Bob trả lời với D = 68. Alice tính: 286125

.49mod 467 = 25.

Vì 25  68 nên Alice thực hiện bước cuối cùng của giao thức tức là thực hiện kiểm tra tính xác thực.

Ta có: (109.4-237)125  188 mod 467 và (68.4-9)45 188 mod 467

(de2)f1  (Df2)e1 mod p

Vậy Alice tin chắc rằng chữ ký đó là không đúng. Bây giờ, chúng ta cần chứng minh 2 điều là:

a. Bob có thể thuyết phục Alice rằng chữ ký không đúng đó là giả mạo.

Một phần của tài liệu Tìm hiểu về chữ ký số (digital signature) và ứng dụng (Trang 32)