Sử dụng hàm Hash để tạo thẻ chứng thực

Một phần của tài liệu NGHIÊN CỨU VÀ ỨNG DỤNG CHỮ KÝ SỐ TRONG BẢO MẬT TRUYỀN THÔNG (Trang 45 - 50)

Phương pháp MAC có nhược điểm là phụ thuộc cả vào bản tin và người gửi. Phương pháp dùng hàm hash là để khắc phục nhược điểm của MAC. Hàm Hash chấp nhận bản tin đầu vào M có độ dài bất kỳ và đầu ra là message digest có độ dài cố định H(M).

Hình 3.3 : Mô hình hàm Hash

Không giống MAC, hàm Hash không lấy khóa bí mật làm đầu vào. Để chứng thực bản tin, message digest được gửi cùng message theo cách mà message digest được chứng thực.

Có 3 cách để chứng thực message digest :

• Message digest được mã hóa theo cách truyền thống nếu giả sử rằng chỉ có người nhận và người gửi biết được khóa mã hóa

Hình 3.4 : Chứng thực bản tin sử dụng mã hóa truyền thống

• Message digest được mã hóa sử dụng mã hóa khóa công khai. Hướng tiếp cận theo mã hóa khóa công khai có 2 ưu điểm : thứ nhất đó là nó cung cấp chữ ký số để chứng thực message, thứ hai là nó không yêu cầu phân phối khóa tới các bên tham gia truyền thông.

Hình 3.5 : Chứng thực sử dụng mã hóa khóa công khai

• Chứng thực dựa vào số bí mật được chia sẻ. Kỹ thuật này giả sử hai bên tham gia truyền thông là A và B cùng chia sẻ số bí mật SAB. Khi A muốn gửi tin cho B, A sẽ tính hàm hash của message có thêm số bí mật

MD(M) = H (SAB|| M) A sau đó gửi [M || MDM] sang B.

Hình 3.6 : Chứng thực sử dụng số bí mật

B nhận được, sẽ tính lại H (SAB || M) vì B cũng có SAB và xác định lại MDM. Trong kỹ thuật này, vì bản thân số bí mật SAB không được gửi nên việc kẻ tấn công sửa đổi tin nhắn chặn được là điều không thể. Miễn là số bí mật được giữ bí mật thì kẻ tấn công không thể sinh ra một message tương tự.

Dạng khác của phương pháp này được biêt tới nhiều đó là HMAC, giải thuật này kết hợp hàm hash và khóa bí mật.

3.4 HOẠT ĐỘNG CỦA MỘT HỆ THỐNG CHỮ KÝ SỐ

Chữ ký số được tạo ra và kiểm tra bằng mật mã, đó là một 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ể được giải mã. Chữ ký số sử dụng hai khóa thông dụng, một khóa để tạo ra chữ ký hoặc chuyển message thành dạng khó nhận dạng, một khóa dùng để kiểm tra chữ ký hoặc để chuyển message đã mã hóa về dạng nguyên thủy của nó.

Các khóa của một hệ thống mã hóa bất đối xứng dùng cho chữ ký điện tử bao gồm một khóa bí mật (private key) được dùng để tạo chữ ký và chỉ người ký mới biết khóa bí mật đó, và một khóa công khai (public key) được công khai cho tất cả mọi người và do một bên tin cậy dùng để xác minh chữ ký số. Nếu có nhiều người cùng muốn xác minh một chữ ký, khóa công khai cần được phân phối tới tất cả mọi người. Khi đó, khóa công khai có thể được đặt trong một thư mục hay một kho chứa

trực tuyến. Mặc dù các khóa có quan hệ về mặt toán học nhưng xét về mặt tính toán, không thể khôi phục khóa bí mật từ khóa công khai. Do đó, mặc dù có nhiều người cùng biết khóa công khai của người ký và dùng nó để xác minh chữ ký nhưng không thể tìm ra được khóa bí mật và dùng khóa bí mật này để giả mạo chữ ký. Đây được gọi là nguyên lý không thể đảo ngược.

Một phương pháp cơ bản là sử dụng một hàm băm để tạo và xác minh chữ ký. Một hàm băm là một thuật toán tạo ra một biểu diễn số dưới dạng một giá trị băm có chiều dài cố định và thường nhỏ hơn bản tin và là duy nhất với bản tin. Bất cứ thay đổi nào với bản tin đều tạo nên một giá trị băm khác khi sử dụng cùng một hàm băm. Với một hàm băm bảo mật, thì không thể khôi phục được bản tin nguyên gốc từ giá trị băm của nó. Do đó, một hàm băm cho phép tạo ra chữ ký điện tử trên dữ liệu nhỏ hơn, có kích thước xác định và liên quan chặt chẽ với nội dung bản tin. Bằng cách này, đảm bảo được rằng không có sự sửa đổi bản tin khi nó được ký số.

Việc sử dụng chữ ký điện tử bao gồm hai quá trình, một được tiến hành bởi người ký và một bởi người nhận chữ ký:

 Tạo chữ ký điện tử (Digital Signature creation) sử dụng giá trị băm duy nhất nhận được từ bản tin được ký và khóa bí mật cho trước. Vì giá trị băm là bảo mật, do đó rất ít khả năng xảy ra trường hợp hai bản tin hay hai khóa bí mật cùng tạo ra một giá trị băm.

 Xác minh chữ ký điện tử (Digital signature verification) là quá trình kiểm tra chữ ký điện tử sử dụng bản tin nguyên gốc và một khóa công khai cho trước. Bằng cách này xác định được chữ ký điện tử có phải được tạo ra từ bản tin sử dụng khóa bí mật tương ứng với khóa công khai hay không.

Hình 3.7: Chữ ký số bên gửi

Hình 3.8 Chữ ký số bên nhận

3.4.1 Quá trình tạo chữ ký

Quá trình ký số bao gồm 3 bước:

Hình 3.9: Quá trình ký trong bản tin

Bước 1:

“Băm” tài liệu gửi thành các hash-value hay còn được gọi là Message Digest, các Message Digest này sẽ được tính toán để đưa vào quá trình mã hoá chữ ký.

Trong bước 2 của tiến trình, hash-value (giá trị băm) của một message thường được gọi là Message Digest được tính toán bằng cách áp dụng các thuật toán băm mã hoá như MD2, MD4, MD5, SHA1,…Một hash-value đã tính của message là một dãy bit liên tục, có độ dài cố định, được trích rút từ message theo cách nào đó.

Bước 3: Tính chữ ký số ( Caculate the Digital Signature)

Trong bước 3 của việc ký message, Message Digest được mã hoá với khoá private key của người ký vào message, thu được giá trị băm đã mã hóa gọi là chữ ký số (Digital Signature). Để thực hiện việc này, sử dụng các thuật toán mã hoá tính toán chữ ký số từ message digest . Thuật toán thường được sử dụng là RSA (dựa trên lý thuyết số), DSA (Digital Signature Algorithm – dựa trên lý thuyết logart rời rạc), ECDSA (Elliptic Curve DSA - dựa trên lý thuyết đường elip). Sau đó chữ ký số sẽ được đính kèm bản tin theo một dạng xác định và được gửi đi cùng bản tin. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu NGHIÊN CỨU VÀ ỨNG DỤNG CHỮ KÝ SỐ TRONG BẢO MẬT TRUYỀN THÔNG (Trang 45 - 50)