1. Trang chủ
  2. » Tất cả

Chữ ký số ph̛̛ng ph́p ṭo v̀ x́c minh chữ ký số giải thuật chữ ký số dsa

21 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chữ Ký Số: Phương Pháp Tạo Và Xác Minh Chữ Ký Số. Giải Thuật Chữ Ký Số DSA
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành An Ninh Mạng
Thể loại Tiểu luận
Định dạng
Số trang 21
Dung lượng 1,12 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hàng ngày chúng ta vẫn sử dụng chữ ký để xác minh các vấn đề, hoặc xác nhận quyền của mình đối với một đối tượng thông qua các văn bản hoặc hợp đồng cụ thể.. Tuy nhiên, thông tin trên má

Trang 1

TIỂU LUẬN MÔN AN NINH MẠNG VIỄN

THÔNG

ĐỀ TÀI:

Chữ ký số: phương pháp tạo và xác minh chữ ký số Giải

thuật chữ ký số DSA

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA VIỄN THÔNG I

===  ===

Trang 2

Mục lục

Lời cảm ơn 3

Mở đầu 4

Danh mục hình vẽ 5

1 Hàm băm 6

1.1 Giới thiệu 6

1.2 Định nghĩa 6

1.3 Ứng dụng 6

1.4 Một số hàm băm phổ biến 7

2 Chữ ký số 10

2.1 Định nghĩa chữ ký số 10

2.2 Kiến trúc chữ ký số tổng quát 11

2.3 Các ưu điểm của chữ ký số 12

3 Giải thuật chữ ký số DSA 12

3.1 Giới thiệu 12

3.2 Định nghĩa 13

3.3 Nguyên tắc hoạt động của giải thuật DSA 13

3.4 Chức năng tạo chữ ký số 13

3.4.1 Phát sinh tham số 13

3.4.2 Tạo khoá 14

3.5 Chức năng thẩm định chữ ký số 14

3.5.1 Ký 14

3.5.2 Xác thực 14

3.6 Ưu, nhược điểm của giải thuật DSA 15

4 Dịch vụ chứng thực chữ ký số 15

4.1 Vấn đề giả mạo chữ ký số 15

4.2 Hệ thống chứng thực là gì 16

4.2.1 Khái niệm: 16

4.2.2 Tại sao cần có hệ thống chứng thực 16

4.3 Một số tổ chức chứng thực 17

4.4 Dịch vụ chứng thực chữ ký số 17

5 Ứng dụng thuật toán DSA để tạo và xác minh chữ ký số 18

6 Kết luận 21

7 Tài liệu tham khảo 21

Trang 3

Lời cảm ơn

Trước hết em xin cảm ơn các thầy cô giáo trong Khoa Viễn Thông 1 – PTIT đã tận tình giảng dạy, truyền đạt kiến thức và những kinh nghiệm quý báu trong suốt các môn học

Em xin được gửi lời cảm ơn sâu sắc đến thầy Hoàng Trọng Minh – người luôn chỉ dạy, hướng dẫn tận tình và cung cấp những tài liệu quan trọng trong quá trình học tập, giúp chúng em hoàn thành bài tiểu luận này

Tuy đã cố gắng nhưng do kiến thức còn hạn chế nên bài tiều luận cuối khóa vẫn còn nhiều thiếu sót, hi vọng thầy góp ý và bổ sung để chúng em hoàn thiện bài tiểu luận của mình một cách tốt nhất

Cuối cùng, em xin kính chúc thầy và gia đình dồi dào sức khoẻ, thành công trong

sự nghiệp cao quý!

Em xin chân thành cảm ơn!

Trang 4

Hàng ngày chúng ta vẫn sử dụng chữ ký để xác minh các vấn đề, hoặc xác nhận quyền của mình đối với một đối tượng thông qua các văn bản hoặc hợp đồng cụ thể Ví dụ như trong giấy biên nhận của ngân hàng, hoặc trong hợp đồng mua bán và chuyển nhượng

đã ký Chữ ký như vậy còn được gọi là chữ ký viết tay vì chúng được viết bởi người ký và không thể sao chép Thông thường chữ ký viết tay trên văn bản, tài liệu hoặc hợp đồng kinh tế… được dùng để xác định người ký

Ngày nay, cùng với sự phát triển của thời đại công nghệ 4.0 đã cho phép chúng ta

có thể tiến hành các giao dịch điện tử thông qua Internet, nhưng tính linh hoạt của Internet cũng tạo cơ hội cho “bên thứ ba” thực hiện các hành vi bất hợp pháp như nghe trộm và giả mạo Vì vậy, để đảm bảo cho an toàn thương mại điện tử và các giao dịch điện tử khác cần phải có hình thức bảo mật hiệu quả nhất, công nghệ được sử dụng rộng rãi nhất hiện nay là chữ ký số

Dưới góc độ vấn đề bảo mật giao dịch và sự tương đồng, hợp pháp của chữ ký tay, chữ ký điện tử đã ra đời cùng với những đặc điểm của chữ ký tay Tuy nhiên, thông tin trên máy tính luôn dễ bị sao chép, thay đổi hoặc lấy cắp thông tin tài liệu rất đơn giản, không thể sử dụng hình ảnh ký tay, do đó phải áp dụng mã hóa và các công nghệ khác để tạo ra chữ ký số xác thực

Trang 6

1 Hàm băm

1.1 Giới thiệu

Theo sơ đồ chữ ký, chữ ký của thông điệp cũng có độ dài bằng độ dài của thông điệp, đó là một bất lợi Như với chữ ký viết tay, chữ ký ngắn hơn và độ dài hạn chế là điều mà chúng ta mong muốn cho dù văn bản có độ dài bằng bao nhiêu Vì chữ ký số được ký cho mỗi bit của thông điệp, nên nếu chúng ta muốn có độ dài hữu hạn trong một thông điệp có độ dài bất kỳ, chúng ta cần tìm cách rút ngắn độ dài của thông điệp Tuy nhiên bản thân thông điệp không thể tự rút ngắn được vì vậy chúng ta chỉ còn cách

là tìm cho mỗi thông điệp một thông điệp thu gọn có độ dài hạn chế và thay vì ký trên thông điệp, ta sẽ ký trên thông điệp đã được rút gọn

Để giải quyết vấn để này ta sử dụng hàm băm, hàm này sẽ chấp nhận một thông điệp có độ dài bất kỳ làm đầu vào Hàm băm sẽ chuyển đổi thông điệp này thành một thông điệp ngắn gọn hơn và sau đó sẽ ký lên thông điệp được rút gọn đó bằng lược đồ chữ ký số

1.2 Định nghĩa [1]

Hàm băm (hash function) là một thuật toán để tạo ra các giá trị băm tương ứng

với từng khối dữ liệu (đây có thể là một chuỗi, một đối tượng trong lập trình hướng đối tượng, v.v Nó xử lý tất cả các loại khóa với các kiểu dữ liệu khác nhau

Giá trị băm hoạt động như một chìa khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta chấp nhận hiện tượng trùng lặp hoặc va chạm khóa và cố gắng cải tiến thuật toán để giảm thiểu sự va chạm đó

Các hàm băm thường được sử dụng trong bảng băm để giảm chi phí tính toán khi tìm các khối dữ liệu trong bộ sưu tập (vì so sánh các hàm băm nhanh hơn so với các khối dữ liệu lớn hơn) Do sự phổ biến của bảng băm, hầu hết các ngôn ngữ lập trình hiện nay đều cung cấp các thư viện ứng dụng cho bảng băm, thường được gọi là thư viện bộ sưu tập trong đó có các vấn đề như: tập hợp (collection), danh sách (list), bảng(table), ánh xạ (mapping), từ điển (dictionary) Nói chung, người lập trình chỉ cần viết hàm băm cho các đối tượng để tích hợp với thư viện bảng băm có sẵn

Một hàm băm tốt phải đáp ứng các điều kiện sau:

là một phép biến đổi "một chiều", có nghĩa là nếu không có cách thực tế nào để tính toán một số đầu vào tương ứng với giá trị băm cần thiết, thì việc giả mạo sẽ rất khó

Trang 7

khăn Một hàm một chiều được mã hóa điển hình không phải là đơn hình, nhưng tạo ra một hàm băm hiệu quả; một hàm trapdoor mật mã (là một hàm có thể tính một chiều dễ dàng, rất khó để tính toán theo chiều ngược lại) điển hình là một hàm đơn ánh và tạo ra một hàm ngẫu nhiên hiệu quả

Bảng băm là một ứng dụng quan trọng của hàm băm, cho phép tìm nhanh các bản ghi dữ liệu dựa trên các khóa đã ghi (lưu ý: các khóa này thường không bí mật như trong mật mã, nhưng cả hai đều được sử dụng để "mở khóa" hoặc truy cập thông tin)

Ví dụ: các khóa trong từ điển điện tử Anh-Anh có thể là các từ tiếng Anh, và các bản ghi tương ứng chứa các định nghĩa Trong trường hợp này, hàm băm phải ánh xạ chuỗi chữ cái tới các chỉ mục của mảng bên trong của bảng băm

Hàm băm được sử dụng để phát hiện và sửa lỗi tập trung giúp phân biệt các trường hợp dữ liệu bị hỏng do một quá trình ngẫu nhiên Khi hàm băm được sử dụng cho tổng kiểm tra, một giá trị băm tương đối nhỏ có thể được sử dụng để xác minh rằng các tệp dữ liệu có kích thước bất kỳ chưa bị sửa đổi Hàm băm được sử dụng để phát hiện lỗi truyền dữ liệu Tại người gửi, giá trị băm của dữ liệu đã gửi được tính toán và giá trị băm được gửi cùng với dữ liệu Khi kết thúc nhận, hàm băm được tính toán lại,

và nếu hàm băm không khớp, lỗi xảy ra ở đâu đó trong quá trình truyền Đây được gọi

là kiểm tra dư (redundancy check)

Các hàm băm cũng được sử dụng để nhận dạng âm thanh, chẳng hạn như để xác định xem tệp MP3 có khớp với tệp trong danh sách các loại tệp khác hay không Thuật toán tìm kiếm chuỗi Rabin-Karp là một thuật toán tìm kiếm chuỗi tương đối nhanh với thời gian chạy trung bình là O(n) Thuật toán dựa trên việc sử dụng hàm băm để so sánh các chuỗi

1.4 Một số hàm băm phổ biến [2]

Tính đến hiện nay đã có rất nhiều hàm băm mật mã được công bố trên thế giới, phần này đề cập đến một số thuật toán hàm băm thông dụng, thường được sử dụng trong các sản phẩm mật mã dân sự

Hàm băm MD5

MD5 được Ronald Rivest phát triển vào năm 1991 để thay thế hàm băm MD4

cũ hơn và trở thành tiêu chuẩn chống lại sức mạnh xử lý của các hệ thống máy tính thế

hệ tiếp theo trong RFC 1321 vào năm 1992 Với sức mạnh tính toán và sự phát triển gần đây của công nghệ mật mã, chúng ta có thể tính toán va chạm trong MD5 với độ phức tạp 221 phép toán trong vài giây, điều này khiến thuật toán không phù hợp với hầu hết các trường hợp sử dụng trong thế giới thực

SHA-1

SHA1 được phát triển như một phần của dự án Capstone của chính phủ Hoa Kỳ Phiên bản đầu tiên, thường được gọi là SHA0, được xuất bản vào năm 1993 bởi NIST (Viện Tiêu chuẩn và Công nghệ) với tiêu đề Secure Hash Standard, FIPS PUB 180 Công nghệ quốc gia Hoa Kỳ) Nó đã bị NSA thu hồi ngay sau khi xuất bản và được thay thế bằng một phiên bản sửa đổi đã được xuất bản trong FIPS PUB 1801 vào năm

Trang 8

1995 và thường được gọi là SHA1.SHA1 Thông báo có kích thước 160 bit (20 byte) Các xung đột với thuật toán SHA1 đầy đủ có thể được tạo ra bởi một cuộc tấn công phá

vỡ, đó là lý do tại sao hàm băm này cho đến nay vẫn được xem là không phù hợp

RIPEMD-160

RIPEMD (viết tắt của RACE Integrity Primitives Evaluation Message Digest) à một họ các hàm băm được phát triển ở Leuven, Bỉ bởi ba nhà mật mã Hans Dobbertin, Antoon Bosselaers và Bart Preneel từ nhóm nghiên cứu COSIC tại Katholieke Universiteit Leuven RIPEMD được xuất bản lần đầu tiên vào năm 1996 dựa trên các nguyên tắc thiết kế của MD4.RIPEMD160, tạo ra một thông báo 160-bit (20-byte) RIPEMD có hiệu suất tương tự như SHA1 nhưng ít phổ biến hơn và thay đổi nhiều hơn

Và cho đến nay RIPEMD160 vẫn chưa bị phá vỡ

Whirlpool

Whirlpool là một hàm băm mật mã được phát triển bởi Vincent Rijmen và Paulo

S Barreto Nó được mô tả lần đầu tiên vào năm 2000 Whirlpool là một trong hai hàm băm được phê duyệt trong dự án NESSIE, một dự án liên hợp Châu Âu đã tự đặt ra mục tiêu xác định tiêu chuẩn bảo mật cho mật mã nguyên thủy và Whirlpool cũng đã được xuất bản trong tiêu chuẩn quốc tế ISO / IEC 101183 Whirlpool dựa trên phiên bản đã sửa đổi đáng kể của Tiêu chuẩn mã hóa nâng cao (AES) Whirlpool tạo một bản tóm tắt dữ liệu 512 bit (64 byte)

SHA-2

SHA2 là một tập hợp các hàm băm mật mã được phát triển bởi Cơ quan An ninh Quốc gia Hoa Kỳ (NSA) và được xuất bản lần đầu tiên vào năm 2001 Chúng được tạo bằng cách sử dụng cấu trúc Merkle-Damgård, chức năng nén Một chiều của anh ta được xây dựng với cấu trúc Davies-Meyer của một mật mã khối chuyên dụng

SHA2 về cơ bản bao gồm hai thuật toán băm: SHA256 và SHA512 SHA224 là một biến thể của SHA256 với các giá trị hạt giống và đầu ra được cắt ngắn khác nhau SHA384 và SHA512 / 224 và SHA512 / 256 ít được biết đến hơn đều là các biến thể của SHA512.SHA512 an toàn hơn SHA256 và thường nhanh hơn SHA256 trên các máy 64-bit như AMD64

Do có các phiên bản thuật toán khác nhau nên kích thước SHA2 cũng khác nhau tùy thuộc vào thuật toán Phần mở rộng tên sau tiền tố "SHA" là độ dài của đầu ra thông điệp băm Ví dụ với SHA224 kích thước đầu ra là 224 bit (28 byte), SHA256 tạo ra 32 byte, SHA384 tạo ra 48 byte và cuối cùng SHA 512 tạo ra 64 byte Và chúng ta có thể

đã biết rằng nó sử dụng bitcoin Sử dụng hàm băm SHA256 là một phiên bản của họ SHA2 này

SHA-3

SHA3 được NIST phát hành vào ngày 5 tháng 8 năm 2015 Đây có thể là tiêu chuẩn hàm băm mới nhất cho đến nay SHA3 là một tập hợp con của họ nguyên thủy mật mã rộng hơn, Keccak Thuật toán Keccak được đề xuất bởi Guido Bertoni, Joan

Trang 9

Daemen, Michael Peeters và Gilles Van Assche Keccak dựa trên cấu trúc bọt biển Cấu trúc này cũng có thể được sử dụng để xây dựng các nguyên thủy mật mã khác, chẳng hạn như mật mã dòng SHA3 cũng có các kích thước đầu ra tương tự như SHA2, bao gồm: 224, 256, 384 và 512 bit

Hình 1 Một số hàm băm mật mã Hàm băm tiếp nhận các đầu vào với kích thước bất kỳ, và đầu ra là một khối dữ liệu có kích thước cố định Từ văn bản M, ta có thể dễ dàng tính ra bản băm của M là H(M), nhưng từ H(M) không thể tìm ra M Và một tính chất quan trọng nhất của hàm băm là với những văn bản khác biệt nhau dù là rất nhỏ, thì sau khi qua hàm băm kết quả nhận được cũng phải khác nhau, ta có thể gọi là độ nhạy cảm của hàm băm với sự thay đổi của văn bản

*) Một số đặc tính của hàm băm

- Tính chất 1: Với mọi đầu ra y cho trước không thể tính toán để tìm được bất kỳ dữ liệu đầu vào x’ nào sao cho giá trị băm h(x’) bằng giá trị đầu ra y đã cho

- Tính chất 2: Với mọi dữ liệu đầu vào x1 cho trước, không thể tính toán để tìm ra được bất kỳ một đầu vào x2 nào (x1 ≠ x2) sao cho giá trị băm h(x2) = h(x1)

- Tính chất 3: Không thể tính toán để tìm được hai dữ liệu đầu vào x1 ≠ x2 sao cho chúng có cùng giá trị băm

Trang 10

2 Chữ ký số

2.1 Định nghĩa chữ ký số [3]

Chữ ký số là một cơ chế xác thực cho phép người gửi có thể thêm vào một đoạn

mã đóng vai trò như một chữ ký Chữ ký số được đính kèm với tài liệu gốc để xác minh tác giả (người ký) của tài liệu và giúp người nhận xác minh tính toàn vẹn của tài liệu gốc Quá trình tạo và xác thực chữ ký số được mô tả như hình dưới

Hình 2.1 Tạo và xác thực chữ ký số

Chữ ký số dựa trên công nghệ mã khóa công khai, được tạo ra bằng khoá riêng

tư (private key) và được xác minh bằng khoá chung tương ứng (public key)

o "Khóa bí mật" là một khóa trong cặp khóa thuộc hệ thống mật mã không đối xứng, được dùng để tạo chữ ký số

o "Khóa công khai" là một khóa trong cặp khóa thuộc hệ thống mật mã không đối xứng, được sử dụng để kiểm tra chữ ký số được tạo bởi khóa bí mật tương ứng trong cặp khóa

o "Ký số" là việc đưa khóa bí mật vào một chương trình phần mềm để tự động tạo

và gắn chữ ký số vào thông điệp dữ liệu

o "Người ký" dùng đúng khóa bí mật của mình để ký số vào một thông điệp dữ liệu dưới tên của mình

o "Người nhận" là tổ chức hay cá nhân nhận được thông điệp dữ liệu được ký số bởi người gửi, sử dụng chứng thư số của người gửi đó để kiểm tra chữ ký số trong thông điệp dữ liệu nhận được và tiến hành các hoạt động, giao dịch có liên quan

Trang 11

2.2 Kiến trúc chữ ký số tổng quát [4]

Hình 2.2 Sơ đồ tổng quát chữ ký số Người dùng có một cặp khoá – khoá công khai và khoá bí mật Các khoá này được sử dụng cho quá trình mã hoá và giải mã Khoá bí mật được sử dụng để mã hoá, tức là khoá chữ ký và khoá công khai được sử dụng để giải mã, tức là khoá xác minh

Người dùng, tức là người ký, áp dụng hàm băm trên dữ liệu và tạo ra một bản thông điệp rút gọn

Tiếp theo, áp dụng thuật toán chữ ký số trên cả giá trị băm và khoá chữ ký để tạo chữ ký số của hàm băm đã cho

Sau đó, chữ ký số được kết nối với dữ liệu và cả chữ ký và dữ liệu đều được gửi đến người xác minh qua mạng

Người xác minh, tức là người nhận, áp dụng thuật toán xác minh và khoá xác minh Quá trình này cung cấp giá trị như một đầu ra

Người xác minh cũng sử dụng cùng một hàm băm trên dữ liệu mà người ký sử dụng để lấy giá trị băm

Cuối cùng người nhận xác định giá trị băm và đầu ra, được tạo ra bởi một thuật toán Dựa trên kết quả nhận được, người nhận sẽ so sánh chúng với nhau Nếu cả hai đều giống nhau thì chữ ký số hợp lệ; nếu không, nó không hợp lệ

Trang 12

2.3 Các ưu điểm của chữ ký số [5]

Việc sử dụng chữ ký số có nhiều thuận lợi khi xác định được nguồn gốc và tính toàn vẹn của tài liệu khi chúng được sử dụng

❖ Khả năng xác định nguồn gốc

Các hệ thống mật mã khóa công khai cho phép mã hóa văn bản bằng khóa bí mật

mà chỉ người sở hữu khóa mới biết

Để sử dụng chữ ký số, văn bản phải được mã hóa bằng hàm băm (một thuật toán được phát triển để tạo ra các giá trị băm tương ứng với từng khối dữ liệu: nó có thể là một chuỗi, một đối tượng trong lập trình hướng đối tượng, v.v Hàm băm giá trị đóng vai trò như một khóa để phân biệt các khối dữ liệu c hữ ký số Nếu nó cần được xác minh, người nhận sẽ giải mã bằng khóa công khai để lấy lại hàm băm và xác minh với hàm băm của văn bản nhận được Nếu hai giá trị này khớp nhau thì người nhận mà bạn

có thể tin tưởng rằng văn bản đến từ chủ sở hữu của khóa cá nhân

❖ Tính toàn vẹn

Cả hai bên tham gia vào quá trình trao đổi thông tin đều có thể chắc chắn rằng văn bản không bị thay đổi trong quá trình truyền, vì nếu văn bản bị thay đổi thì hàm băm cũng thay đổi và bị phát hiện Nó sẽ ẩn nội dung của bên thứ ba

❖ Tính không thể phủ nhận

Trong một giao dịch, một trong hai bên có thể từ chối xác nhận một tài liệu cụ thể

mà họ đã gửi Để tránh khả năng này, người nhận có thể yêu cầu người gửi đính kèm chữ ký số vào tài liệu Trong trường hợp có tranh chấp, bên nhận sẽ sử dụng chữ ký này làm cơ sở để bên thứ ba giải quyết

3 Giải thuật chữ ký số DSA

3.1 Giới thiệu

Khi một người gửi dữ liệu thông qua một tài liệu, điều quan trọng là phải xác minh được danh tính của họ vì lý do bảo mật và an toàn Chữ ký số được sử dụng để giải quyết vấn đề này.Xác minh các tài liệu có nghĩa là biết ai đã tạo ra chúng và chúng không bị can thiệp trong quá trình truyền Những chữ ký số này được tạo ra bằng cách

sử dụng các thuật toán nhất định Thuật toán chữ ký số (DSA) là một trong số này DSA

là một loại thuật toán mã khoá công khai và nó được sử dụng để tạo chữ ký số

Như chúng ta đã thấy, DSA là một trong nhiều thuật toán được sử dụng để tạo chữ ký số để truyền dữ liệu Trong DSA, một cặp số được tạo và sử dụng làm chữ ký điện tử Chúng được tạo ra bằng cách sử dụng một số thuật toán cụ thể Chúng cho phép người nhận xác thực nguồn gốc của dữ liệu Chữ ký số, được tạo bằng giải thuật DSA,

ở chế độ riêng tư tại thời điểm bắt đầu truyền dữ liệu trong khi kết thúc ở chế độ công khai Điều này có nghĩa là chỉ người truyền dữ liệu mới có thể tạo chữ ký, chữ ký này

sẽ được thêm vào thư, nhưng bất kỳ ai cũng có thể xác thực chữ ký ở đầu bên kia

Ngày đăng: 26/02/2023, 17:58

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w