1. Trang chủ
  2. » Công Nghệ Thông Tin

TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử

51 40 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 đề Tìm Hiểu Về Chữ Ký Điện Tử Và Xây Dựng Ứng Dụng Tạo Và Xác Thực Chữ Ký Điện Tử
Tác giả Nguyễn Văn Quang, Đào Chiến Thắng
Người hướng dẫn Mạnh Thiên Lý
Trường học Trường Đại Học Công Nghiệp Thực Phẩm TP. HCM
Chuyên ngành An Toàn Thông Tin
Thể loại Đồ án môn học
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 51
Dung lượng 1,49 MB

Cấu trúc

  • CHƯƠNG 1. (11)
    • 1.1 Giới thiệu về mật mã học (11)
      • 1.1.1 Các thành phần mật mã học (0)
    • 1.2 Phân loại hệ mã hoá (12)
      • 1.2.1 Hệ mã khối - Block Cipher (0)
      • 1.2.2 Hệ mã hoá đối xứng (0)
      • 1.2.3 Hệ mã hoá bất đối xứng (0)
      • 1.2.4 Hệ mã hoá RSA (0)
      • 1.2.5 HÀM BĂM (HASH) (0)
  • CHƯƠNG 2. (26)
    • 2.1 Sơ lược về hàm băm (26)
    • 2.2 Khái niệm hàm băm (26)
    • 2.3 Tính chất của hàm băm (26)
    • 2.4 Thuộc tính cần thiết (26)
    • 2.5 Cách hoạt động của hàm băm (27)
    • 2.6 Các loại hàm băm phổ biến (28)
    • 2.7 Ứng dụng của hàm băm (30)
  • CHƯƠNG 3. (32)
    • 3.1 Giới thiệu về chữ ký số (32)
    • 3.2 Khái niệm chữ ký số (32)
    • 3.3 Các ưu điểm của chữ ký số (32)
    • 3.4 Quy trình tạo và xác thực chữ ký số (34)
      • 3.4.1 Tạo chữ ký và ký vào thông điệp (0)
      • 3.4.2 Kiểm tra và xác thực chữ ký số (0)
      • 3.4.3 MỘT SỐ QUY ĐỊNH, THÔNG TƯ VỀ CHỮ KÝ SỐ (0)
  • CHƯƠNG 4. (37)
    • 4.1 Quy định về ký số, kiểm tra chữ ký số trên văn bản điện tử trong cơ quan nhà nước việt nam (37)
    • 4.2 Chứng thư số, chữ ký số nước ngoài tại việt nam (38)
      • 4.2.1 Đối tượng sử dụng chứng thư số nước ngoài (0)
      • 4.2.2 Phạm vi hoạt động và thời hạn giấy phép sử dụng chứng thư số nước ngoài 4.2.3 tại Việt Nam (0)
      • 4.2.4 Đối với tổ chức cung cấp dịch vụ chứng thực chữ ký số nước ngoài có 4.2.5 chứng thư số được công nhận tại Việt Nam (0)
    • 5.1 Giới thiệu về phần mềm (40)
    • 5.2 Thực hiện tạo khóa bí mật và khóa công khai (41)
    • 5.3 Thực hiện tạo chữ ký số bằng giải thuật RSA (43)
    • 5.4 Thực hiện giải mã để xác thực cho chữ ký được tạo bằng giải thuật RSA 45 KẾT LUẬN (45)
  • PHỤ LỤC (49)
  • TÀI LIỆU THAM KHẢO (51)

Nội dung

Giới thiệu về mật mã học

Mật mã học là gì?

Mật mã học, một ngành có lịch sử hàng nghìn năm, bắt nguồn từ thời Hy Lạp cổ đại với các phương pháp mã hóa đơn giản bằng bút và giấy Ngành này đã phát triển mạnh mẽ thành mật mã học hiện đại nhờ vào sự tiến bộ của điện cơ, điện tử và máy tính Claude Shannon, được xem là cha đẻ của mật mã toán học, đã mở ra kỷ nguyên mới cho lĩnh vực này từ năm 1949 khi ông công bố các lý thuyết về tin học và truyền thông trong hệ thống bảo mật.

Mật mã học bao gồm hai quá trình chính: mã hóa (Cryptography) và giải mã (Cryptanalysis) Mã hóa là phương pháp chuyển đổi nội dung văn bản hoặc tập tin thành dạng dữ liệu khó đọc (bản mờ), nhằm bảo vệ thông tin khỏi truy cập trái phép Ngược lại, giải mã là quá trình chuyển đổi bản mờ trở lại thành văn bản gốc có thể đọc được Hai quá trình này đóng vai trò quan trọng trong việc đảm bảo tính bí mật cho các thông tin và dữ liệu quan trọng trong các lĩnh vực như quân sự, tình báo, ngoại giao, kinh tế và thương mại.

Trong những năm gần đây, ứng dụng của mật mã hóa đã mở rộng ra rất nhiều lĩnh vực, không chỉ dừng lại ở việc bảo mật thông tin Mật mã hóa hiện đại hỗ trợ cho nhiều hoạt động như giao dịch tài chính, chuyển khoản, mua sắm, và chứng thực khóa công khai Với sự gia tăng của các hoạt động trực tuyến, nhu cầu bảo mật dữ liệu ngày càng cao, dẫn đến việc mọi quá trình trao đổi thông tin đều cần được mã hóa Ngay cả những người không có nhu cầu bảo mật cũng sử dụng công nghệ mật mã hóa, thường được tích hợp sẵn bởi các kỹ sư trong hạ tầng công nghệ thông tin và viễn thông.

Các thành phần mật mã học

Một hệ mã hoá bao gồm các yếu tố quan trọng sau:

 Thông báo, văn bản gốc M: Là một chuỗi hữu hạn các ký hiệu lấy từ một bảng chữ cái Z nào đó và được ký hiệu là M

 Mã hoá: Là quy trình biến đổi văn bản gốc khiến nó không thể đọc được đối với bất kỳ người khác ngoài người nhận được mong muốn

 Phép mã hoá thường được ký hiệu là e (M), với M là thông báo cần mã hoá

Khoá K là một thông số quan trọng trong quá trình mã hoá và giải mã Khoá mã hoá được ký hiệu là Ke, trong khi khoá giải mã được ký hiệu là Kd.

 Chuỗi mật mã, bản mờ C: Là dữ liệu bản gốc đã được mã hoá, ký hiệu là: c = e (m, ke)

 Giải mã: Là quá trình ngược lại với mã hoá, dùng khoá K để chuyển dữ liệu bản mờ C về lại dữ liệu gốc M, ký hiệu là: d (c, kd) = m

Quy trình cơ bản của mật mã học

Ví dụ 1.1 về quy trình cơ bản của mật mã học

Người gửi A muốn thông báo cho người nhận B bằng cách sử dụng thuật toán mã hóa e kết hợp với khóa K để chuyển đổi thông báo m thành chuỗi mật mã c Chuỗi c được gửi qua các kênh truyền thông thông thường, và ngay cả khi bị hacker chặn, họ cũng không thể đọc được nội dung vì đã được mã hóa Khóa K được A gửi cho B thông qua một thuật toán truyền khóa bí mật Khi đến nơi, B nhận được khóa K và chuỗi mật mã c, sau đó sử dụng thuật toán giải mã d với khóa K để khôi phục lại thông báo gốc m Như vậy, thông báo đã được truyền đi một cách an toàn từ A đến B.

Hình 1.1 Mô hình mã hoá dữ liệu cơ bản

Phân loại hệ mã hoá

Mật mã học bao gồm hai phương pháp mã hóa dữ liệu chính: mã hóa khóa đối xứng và mã hóa khóa công khai Mã hóa khóa công khai đóng vai trò quan trọng trong việc tạo lập và xác thực chữ ký số Trước khi khám phá chi tiết về hai hệ mã hóa này, chúng ta sẽ tìm hiểu lý thuyết về hệ mã dòng và hệ mã khối.

Hệ mã dòng - Stream Cipher

Hệ mã dòng (stream cipher) thực hiện mã hóa từng bit của bản rõ, với One Time Pad (OTP) là một trong những ví dụ nổi bật Cần lưu ý rằng OTP khác với One Time Password Trong OTP, bản rõ m và khóa k phải có độ dài (bit) bằng nhau.

Hình 1.2 Mô hình về hệ mã hoá dòng Stream Cipher

Với OTP, khóa k phải đáp ứng đủ 3 điều kiện sau đây:

 Độ dài của khóa phải bằng kích thước bản rõ

 Khóa phải được chọn hoàn toàn ngẫu nhiên (truly random)

 Và khóa chỉ được sử dụng một lần

Nếu hệ mã OTP đáp ứng ba điều kiện cần thiết, nó sẽ được coi là an toàn tuyệt đối theo định lý của Claude Shannon Điều này có nghĩa là kẻ tấn công không thể thu thập bất kỳ thông tin nào về bản rõ chỉ từ bản mã.

Hàm mã hóa và giải mã trong OTP thực hiện phép toán XOR trên các bit của dữ liệu đầu vào, giúp đạt được tốc độ tính toán nhanh chóng.

Do độ dài khóa và bản rõ bằng nhau, việc truyền chúng cùng nhau một cách bí mật trở thành một nhược điểm của OTP Thực tế, người ta thường tạo khóa K ngẫu nhiên có kích thước ngắn hơn bản rõ, sau đó sử dụng hàm tạo số ngẫu nhiên (Pseudo Random Generator - PRG) để mở rộng độ dài của khóa K.

Vì vậy, thực tiễn của OTP được sử dụng như sau:

D'(c, k) = D(c, PRG(k)) = (m XOR PRG(k)) XOR PRG(k) = m, trong đó, k có kích thước nhỏ hơn rất nhiều so với m

Hệ mã khối - Block Cipher

Hệ mã khối chia dữ liệu đầu vào thành các khối bit có kích thước cố định, thường là 64 hoặc 128 bit, để thực hiện tính toán và mã hóa Khi độ dài của đầu vào không phải là bội số của kích thước khối, cần thực hiện thao tác đệm (padding) để đảm bảo số bit của đầu vào sau khi đệm là bội số của khối.

Hình 2.3 Mô hình về hệ mã hoá khối Block Cipher

Các hệ mã khối nổi tiếng bao gồm DES với kích thước khối 64 bit và kích thước khóa 56 bit, cùng với AES có kích thước khối 128 bit và kích thước khóa linh hoạt từ 128, 192 đến 256 bit.

Hệ mã hóa khối thường chậm hơn so với hệ mã hóa dòng, nhưng lại hiệu quả với các khối dữ liệu có kích thước cố định, chẳng hạn như mã hóa file và mã hóa tin nhắn trong các giao thức như HTTP.

Hệ mã hoá đối xứng

Trong mật mã học, thuật toán khóa đối xứng là các phương pháp mã hóa mà trong đó khóa sử dụng cho cả mã hóa và giải mã là giống nhau Khoá này được chia sẻ và thống nhất giữa hai bên trước mỗi giao dịch, đảm bảo tính bảo mật trong quá trình truyền tải thông tin.

Hệ mã hoá đối xứng trải qua hai giai đoạn phát triển: giai đoạn đầu tiên là việc áp dụng các thuật toán mã hoá cổ điển, và giai đoạn thứ hai là sự chuyển mình sang các thuật toán mã hoá hiện đại.

1.2.3.1 Hệ mã hoá cổ điển

Các tính chất cơ bản của các giải thuật mật mã hoá là

 Phải có tính bảo mật cao

 Thuật toán phải dễ dàng tiếp cận nhưng vẫn bảo mật, không phụ thuộc vào giải thuật mà chú trọng về khoá

 Có thể áp dụng vào các ứng dụng trên các thiết bị điện tử

Một số giải thuật mã hoá cổ điển

 Mã thay thế đơn giản (Substitution Cipher)

Phương pháp mã hóa là quá trình thay thế từng ký tự hoặc nhóm ký tự trong thông tin gốc bằng một ký tự hoặc nhóm ký tự khác, tạo ra bản mã hóa Người nhận sẽ sử dụng bản mã này để giải mã thông tin ban đầu.

15 nhận được bản mờ chỉ cần đảo ngược quá trình thay thế ở trên để có được thông tin gốc ban đầu

Khoá thường được biểu diễn bằng một chuỗi 26 ký tự Có 26! (≈ 4.1026) hoán vị (khoá)

Dựa vào khoá này chúng ta thay thế ký hiệu A trong thông báo bằng d, ký hiệu

B sẽ được thay bằng l, … cứ thế đến khi hết khoá

Cho một đoạn thông tin gốc là MATMAHOC

Chúng ta tìm ra bản mờ bằng cách thay thế các ký tự tương ứng trong bảng dưới đây

Hình 3.4 Bảng ví dụ sắp xếp thuật toán mã hoá thay thế

Từ đó chúng ta thu được kết quả: tdmtdegr

Mã thay thế n-gram là một phương pháp mã hóa tiên tiến hơn so với mã thay thế thông thường, trong đó thay vì chỉ thay thế từng ký tự, nó thay thế các cụm ký tự có độ dài cố định, như cụm 2 ký tự (bigram) hoặc cụm 3 ký tự (trigram), và có thể áp dụng cho bất kỳ cụm ký tự nào với độ dài n.

Với bảng chữ cái gồm 26 ký tự tiếng Anh thì phép thay thế n - gram sẽ có khoá là một hoán vị của 26 n - gram khác nhau

Trong trường hợp diagram thì chúng ta có thể biểu diễn bằng một dãy 2 chiều

Bảng 26 x 26 được cấu trúc với các hàng ngang đại diện cho ký hiệu đầu tiên và các cột dọc biểu thị ký hiệu thứ hai Nội dung trong từng ô của bảng thể hiện chuỗi thay thế tương ứng với các hàng và cột.

Mã hoán vị bậc d (Permutation Cypher) là một phương pháp mã hóa thông điệp bằng cách chia thông điệp thành các khối có chiều dài d Sau đó, một hoán vị h của các số từ 1 đến d được áp dụng cho từng khối, tạo ra một phiên bản mã hóa của thông điệp gốc.

• Ví dụ 1.3: Nếu d = 5 và h = (4 1 3 2 5), hoán vị (1 2 3 4 5) sẽ được thay thế bằng hoán vị mới (4 1 3 2 5)

• Ví dụ 1.4: Ta có thông báo m = JOHN IS A GOOD ACTOR

Qua phép mã hoá này m sẽ trở thành chuỗi mật mã c sau: c = NJHO AI S DGOO OATCR

 Mã dịch chuyển (Shift Cypher)

Trong phương pháp mã hóa Vigenère, khóa là một chuỗi gồm d ký tự, được lặp lại dưới thông điệp Các ký tự trong thông điệp sẽ được cộng với khóa theo quy tắc modulo 26, trong khi các ký tự trắng sẽ được giữ nguyên và không bị thay đổi.

• Nếu d = 1 thì khoá chỉ là một ký tự đơn và được gọi là phương pháp Caesar (được đưa ra sử dụng đầu tiên bởi Julius Caesar)

Hình 4.5 Bảng mã dịch chuyển

Kết quả thu được dựa trên bảng mã: XPOJSVVG

 Mã tuyến tính (Affine Cipher)

Phương pháp mã tuyến tính là một dạng mã hoá có dạng như sau: e(x) = ax + b (mod 26), với a, b 𝜖 𝑍 26

Nếu a = 1 ta có mã dịch chuyển

Giải mã: Tìm x? y = ax + b (mod 26) ax = y - b (mod 26) x = 𝑎 −1 (y - b) (mod 26)

Sơ lược về hàm băm

Các hàm băm là thành phần thiết yếu trong mật mã hiện đại, tạo ra mã băm từ bản tin đầu vào Mã băm, hay còn gọi là kết quả băm, là một ảnh biểu diễn rút gọn của xâu vào, thường được coi như dấu tay số hoặc tóm lược thông báo Việc sử dụng các hàm băm cho phép người dùng xử lý và xác thực dữ liệu một cách hiệu quả, giữ nguyên tính toàn vẹn của thông tin.

Các mã xác thực thông báo (MAC) là một lớp hàm băm cho phép xác thực thông điệp thông qua kỹ thuật mã hóa đối xứng Trong chương này, chúng ta sẽ khám phá về hàm băm và các ứng dụng của nó trong cuộc sống hàng ngày.

Khái niệm hàm băm

Quá trình chuyển đổi dữ liệu có độ dài bất kỳ thành một chuỗi đầu ra có độ dài cố định được gọi là hàm băm Độ dài của chuỗi đầu ra phụ thuộc vào kiểu hàm băm được sử dụng.

Khi tải một file mp3 từ internet và áp dụng hàm băm SHA-256, chúng ta nhận được một chuỗi 256 bit Nếu sử dụng hàm băm SHA-512, kết quả sẽ là một chuỗi 512 bit, tùy thuộc vào loại hàm băm được chọn.

Tính chất của hàm băm

Hàm băm mang những tính chất đặc trưng như sau:

 Không thể đảo ngược: chúng ta không thể truy xuất dữ liệu ban đầu từ các giá trị đã được băm

Tính toàn vẹn của dữ liệu được đảm bảo thông qua việc sử dụng giá trị băm, vì mỗi dữ liệu đầu vào chỉ có một giá trị băm duy nhất Chỉ cần một ký tự trong dữ liệu đầu vào bị thay đổi, giá trị băm cũng sẽ thay đổi theo, từ đó cho phép chúng ta xác định liệu dữ liệu có còn nguyên vẹn hay không.

 Giá trị băm là duy nhất: hai dữ liệu đầu vào khác nhau thì cho ra hai giá trị băm khác nhau.

Thuộc tính cần thiết

Một hàm băm được xem là mạnh và tốt thì cần phải có những thuộc tính sau đây

1 Tính xác định: Dữ liệu đầu vào bất kể ở kích thước nào đều chỉ có ra giá trị băm có độ dài nhất quán

2 Tốc độ tính toán: Tốc độ băm rất quan trọng và thay đổi tùy theo trường hợp sử dụng Ví dụ như đôi lúc chúng ta sẽ cần một hàm băm nhanh và đôi lúc chúng ta cần hàm băm chậm

3 Tính chống đảo ngược: Hàm băm không được phép đảo ngược ,tức là nó chỉ có một chiều chúng ta sẽ không thể khôi phục được giá trị ban đầu từ các giá trị băm.

Cách hoạt động của hàm băm

 Đầu tiên, hàm băm sẽ chia dữ liệu vào (Data input) thành các phần bằng nhau (về kích thước)

 Tiếp theo, thuật toán băm sẽ được thực hiện trên từng phần dữ liệu vào riêng biệt

Giá trị băm của phần đầu tiên sẽ được cộng vào phần dữ liệu thứ hai, sau đó thuật toán băm sẽ được áp dụng để tạo ra giá trị băm cho phần thứ hai.

 Tiếp tục như vậy cho đến khi không còn phần dữ liệu nào nữa thì chúng ta sẽ được kết quả của một hàm băm

Hình bên dưới mô tả chi tiếp quá trình này:

Hình 9.1 Sơ đồ hoạt động hàm băm

K: Phần dữ liệu đã được chia

Kn: Phần dữ liệu đã được chia cuối cùng

G(K): Giá trị băm của phần dữ liệu K

Hình 10.2 Ví dụ về hàm băm Ở hình trên giá trị đầu vào được chia làm 4 phần

 Phần dữ liệu đầu tiên (B1) được băm thành giá trị băm h(B1)

 Giá trị băm h(B1) kết hợp với phần dư liệu thứ hai (B2) và được băm thành h(B2)

 Giá trị băm h(B2) kết hợp với phần dư liệu thứ ba (B3) và được băm thành h(B3)

 Giá trị băm h(B3) kết hợp với phần dư liệu thứ tư (B4) và được băm thành h(B4)

Giá trị băm cuối cùng h(B4) cũng là kết quả cuối cùng của hàm băm

Hàm băm được sử dụng để phát hiện sự giả mạo, vì bất kỳ thay đổi nào trong giá trị đầu vào sẽ dẫn đến sự thay đổi của giá trị băm.

Các loại hàm băm phổ biến

Có nhiều hàm băm khác nhau nhưng trong bài này chúng ta sẽ nghiên cứu sơ lược về MD5 và tập trung vào thuật toán của hàm băm SHA

2.6.1.1 Tổng quan về hàm băm MD5

MD5, được phát hành vào năm 1992, là một trong ba thuật toán băm do Ronald Rivest phát triển Phiên bản đầu tiên, MD2, được giới thiệu vào năm 1989, và sau đó MD4 ra mắt vào năm 1990 như một sự thay thế cho MD2.

MD5 được phát triên cho các hệ máy 32 bit và nó không nhanh như MD4 nhưng được cho là phiên bản MD an toàn nhất

Tuy nhiên hiện tại nó được cho là không an toàn vì lỗi hổng bảo mật

Mã MD5 có độ dài 128 bit và có giá trị băm là chuỗi hệ thập lục phân 32 ký tự

Ví dụ 2.3: Sử dụng công cụ HashCalc để kiểm tra Cho dữ liệu đầu vào là

“hello world” thì giá trị băm đầu ra sẽ là “5eb63bbbe01eeed093cb22bb8f5acdc3”

Hình 11.3Ví dụ về hàm băm MD5 bằng công cụ HashCalc

MD5 là một phương pháp kiểm tra tính toàn vẹn của dữ liệu bằng cách tổng hợp giá trị trên hai file và so sánh chúng, thay vì kiểm tra từng dữ liệu ban đầu.

Là một thuật toán băm an toàn Họ hàm băm SHA gồm: SHA-0, SHA-1, SHA-

 SHA-0: Ít được sử dụng trên thực tế;

 SHA-1: Tương tự SHA0, nhưng đã khắc phục một số lỗi, chuỗi đầu ra của SHA-1 có kích thước 160 bít và thương được biểu diễn thành 40 số hexa

 SHA-2: Khắc phục lỗi của SHA1 và có nhiều thay đổi Kích thước chuỗi đầu ra có thể là 224, 256, 384 và 512 bít;

 SHA-3: Cho phép chuỗi đầu ra có kích thước không cố định

Sau đây chúng ta sẽ tiến hành tìm hiểu về các loại hàm băm trên:

SHA là thuật toán băm đầu tiên với độ dài giá trị băm 160 bit, tương đương 40 ký tự Hex hay 20 byte Ra mắt vào năm 1993, SHA nhanh chóng bị thay thế bởi SHA-1 do những lỗ hổng bảo mật nghiêm trọng.

SHA-1 là phiên bản thứ hai của SHA, với độ dài giá trị băm tương tự như SHA-0, nhưng đã khắc phục các điểm yếu bảo mật của phiên bản trước Tuy nhiên, vào năm 2005, SHA-1 cũng bị phát hiện là không an toàn Dù vậy, nó đã đóng vai trò quan trọng trong việc phát triển các phiên bản sau.

Là tiêu chuẩn hàm băm mật mã của hầu hết phần mềm và phần cứng hiện nay

SHA-2 bao gồm: SHA-224, SHA-256, SHA-284, SHA-512

SHA-2 được xem là hàm băm an toàn nhất hiện nay vì không thể khôi phục dữ liệu từ giá trị băm do thuật toán SHA Hơn nữa, chỉ cần một sự thay đổi nhỏ trong dữ liệu cũng có thể tạo ra giá trị băm hoàn toàn khác biệt.

Hàm Keccak, hay còn gọi là SHA-3, được phát triển vào năm 2007 bởi Guido Bertoni, Joan Daemen, Michæl Peeters và Gilles Van Assche, nhằm khắc phục những điểm yếu tiềm ẩn của SHA-1 và SHA-2 Kế thừa từ SHA-2, SHA-3 cũng bao gồm các phiên bản như SHA3-224, SHA3-256, SHA3-384 và SHA3-512.

256, SHA3-384, SHA3-512 với kích thước đầu ra tương ứng

SHA-3 được tối ưu hóa cho hiệu suất phần cứng, tuy nhiên lại chậm hơn khi thực hiện trên phần mềm, mất gấp đôi thời gian so với SHA-2 Ngược lại, trên các thiết bị phần cứng, SHA-3 chỉ tiêu tốn một phần tư thời gian so với phiên bản trước.

Ứng dụng của hàm băm

Hàm băm đã trở nên quen thuộc trong cuộc sống hàng ngày nhờ vào những ứng dụng đa dạng của nó Dưới đây là một số ứng dụng quan trọng của hàm băm mà bạn nên biết.

2.7.1.1 Kiểm tra sự toàn vẹn của tệp tin

Hàm băm đảm bảo rằng cùng một giá trị sẽ luôn tạo ra cùng một giá trị băm, cho phép chúng ta so sánh tệp tin tải về với bản gốc bằng cách kiểm tra giá trị băm của chúng Nếu hai giá trị băm trùng khớp, tệp tin của chúng ta là bản gốc; ngược lại, nếu khác nhau, tệp tin có thể đã bị sửa đổi hoặc hỏng Trong một số trường hợp, tệp tin tải về có thể bị can thiệp bởi bên thứ ba, dẫn đến việc cài mã độc Do đó, việc kiểm tra giá trị băm là cách hiệu quả để đảm bảo an toàn cho tệp tin của chúng ta.

Ứng dụng này cho phép hàm băm được sử dụng trong các chứng chỉ SSL/TLS, giúp kiểm tra dữ liệu đầu vào trong quá trình truyền tin.

Trong thiết kế cơ sở dữ liệu hiện đại, mật khẩu không được lưu trữ dưới dạng văn bản mà là giá trị hash Khi người dùng nhập mật khẩu, nó sẽ được xử lý qua hàm hash và so sánh với giá trị đã lưu trong cơ sở dữ liệu để xác thực Điều này giúp giảm thiểu thiệt hại nếu cơ sở dữ liệu bị tấn công, vì chỉ có giá trị băm bị lộ chứ không phải mật khẩu thực Để tăng cường bảo mật, hệ thống còn thêm giá trị muối (salt) vào mật khẩu trước khi băm và lưu trữ Nhờ vậy, ngay cả khi giá trị băm bị giải mã, kẻ tấn công cũng không thể truy cập mật khẩu thật sự do sự hiện diện của giá trị "salt".

Hàm băm giúp xử lý hiệu quả lượng lớn dữ liệu bằng cách chuyển đổi các chuỗi có độ dài khác nhau thành các giá trị băm có độ dài cố định, từ đó đơn giản hóa quá trình xử lý dữ liệu.

2.7.1.4 Ứng dụng vào chữ ký số (digital signatures)

Hàm băm kết hợp với mã hoá khoá công khai RSA đóng vai trò quan trọng trong việc tạo ra và xác thực chữ ký số Qua các kỹ thuật băm, thông điệp được chia nhỏ và sau đó được mã hoá bằng RSA để tạo ra một khối dữ liệu xác thực thông tin của chủ sở hữu Đây là ứng dụng quan trọng nhất của hàm băm mà bài đồ án này tập trung nghiên cứu.

Giới thiệu về chữ ký số

Từ xa xưa, ông cha ta đã sử dụng con dấu cá nhân và chữ ký tay cho các văn bản quan trọng như thánh chỉ, hiệp ước và cam kết Những chữ ký này không chỉ quyết định giá trị pháp lý của văn bản mà còn thể hiện trách nhiệm của các bên ký kết.

Trong thời đại số hiện nay, ngày càng nhiều doanh nghiệp áp dụng dịch vụ giao dịch điện tử, khiến việc thanh toán và xác thực trực tuyến trở nên thiết yếu Việc di chuyển hợp đồng và nhân sự để ký kết theo phương thức truyền thống không chỉ bất tiện mà còn tốn kém thời gian, công sức và nguồn lực Đặc biệt, đại dịch COVID-19 đã làm gia tăng khó khăn và rủi ro trong quy trình này Hơn nữa, sự phát triển của công nghệ hiện đại đã dẫn đến việc chữ ký tay dễ bị sao chép, như trường hợp học sinh giả mạo chữ ký phụ huynh để ký vào bản kiểm điểm.

Chính vì những bất cập trên, chữ ký điện tử ra đời, mở ra một kỷ nguyên mới về thời đại công nghệ chữ ký số.

Khái niệm chữ ký số

Vậy chữ ký số là gì?

Chữ ký số là một phần của chữ ký điện tử, được thể hiện dưới dạng mã hóa, nhằm xác thực tác giả và đảm bảo tính toàn vẹn của dữ liệu trong các giao dịch điện tử Nó được sử dụng để ký kết các văn bản, hóa đơn và tài liệu, giúp người nhận xác minh nguồn gốc và nội dung của thông tin.

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

Chữ ký số có các đặc tính nổi bật dưới đây:

Chữ ký số được tạo ra thông qua hệ thống mã hóa bất đối xứng và hàm băm, bao gồm hai loại khóa: khóa công khai (public key) dùng để xác minh tính xác thực của văn bản và chữ ký, và khóa bí mật (private key) chỉ được người gửi biết Quy trình xác thực chữ ký số phân tích và so sánh hai chuỗi mã hóa để đảm bảo rằng người gửi là chủ sở hữu hợp pháp của văn bản đã ký Mặc dù việc giả mạo chữ ký số vẫn có thể xảy ra, nhưng nếu được quản lý tốt, tỉ lệ giả mạo sẽ rất thấp.

Việc xác thực người gửi cực kỳ quan trọng trong cuộc sống, đặc biệt những giao dịch liên quan đến tiền và tài sản

Trong một giao dịch điện tử, A (người bán) gửi số tài khoản ngân hàng cho B (người mua) qua tin nhắn để B chuyển tiền Tuy nhiên, kẻ lừa đảo C đã ch intercept và sửa đổi số tài khoản của A thành số tài khoản của C, sau đó gửi lại tin nhắn cho B dưới danh nghĩa A Kết quả là B chuyển tiền vào tài khoản của C, minh họa cho hình thức tấn công "man-in-the-middle" nếu không xác thực kỹ lưỡng danh tính người gửi tin nhắn.

 Tính toàn vẹn và bảo mật

Khi A muốn gửi một thông điệp mật kèm chữ ký điện tử cho B, A sẽ mã hóa thông điệp bằng khóa công khai của B và sử dụng khóa cá nhân của mình để mã hóa chữ ký Sau đó, A gửi cả thông điệp và chữ ký đến B, người sẽ sử dụng khóa công khai của mình để giải mã thông điệp.

Để giải mã chữ ký, A sử dụng khóa cá nhân của mình nhằm giải mã thông điệp Văn bản được bảo vệ và xác thực qua nhiều lớp, giúp đảm bảo nội dung của văn bản ký không bị sửa đổi, từ đó tạo dựng niềm tin cho các bên tham gia giao dịch.

Việc tạo và kiểm chứng chữ ký số thường sử dụng hàm băm, đảm bảo rằng các mã hash được tạo ra là duy nhất cho từng giao dịch Điều này ngăn chặn việc tái sử dụng chữ ký số cho các mục đích khác, tăng cường tính bảo mật và độ tin cậy trong các giao dịch điện tử.

 Tính trách nhiệm và duy nhất

Chữ ký số chỉ có thể được tạo ra bởi người gửi, nhờ đó giảm thiểu khả năng bên giao dịch từ chối trách nhiệm về văn bản đã gửi Điều này bảo vệ quyền lợi của bên hợp tác còn lại và có thể được sử dụng làm chứng cứ trong trường hợp cần thiết để bên thứ ba giải quyết.

 Tiết kiệm thời gian, công sức

Chữ ký số thay thế cho việc ký tay thủ công, giúp giảm thiểu thời gian và chi phí hành chính Với chữ ký số, các bên giao dịch có thể ký kết nhanh chóng, chính xác và an toàn ở bất kỳ đâu, mà không cần chuẩn bị hồ sơ bản cứng hay sắp xếp nhân sự.

Chữ ký số được phân loại thành hai dạng, phù hợp với nhu cầu sử dụng của mọi đối tượng, từ nhân viên văn phòng đến cá nhân, từ công nhân đến doanh nhân.

USB Token chứa chữ ký số là giải pháp phổ biến cho các công ty văn phòng với lưu lượng vừa phải Thiết bị này không chỉ lưu trữ thông tin khách hàng mà còn bảo vệ khoá bí mật và chứng thư số của thuê bao Với khả năng lưu trữ lớn và tốc độ cao, USB Token đi kèm với mã pin duy nhất gồm 10 ký tự cố định, được tạo ra riêng cho mỗi doanh nghiệp, đảm bảo tính bảo mật và an toàn cho giao dịch điện tử.

Chữ ký số online, không cần USB token, sử dụng công nghệ đám mây để đơn giản hóa quá trình ký văn bản Giải pháp này giúp tiết kiệm chi phí và cho phép người dùng thực hiện ký mọi lúc, mọi nơi.

Quy trình tạo và xác thực chữ ký số

Chữ ký điện tử được phát triển dựa trên các thành tựu khoa học trong lĩnh vực mã hóa khóa công khai và hàm băm Trong chương này, chúng ta sẽ khám phá chi tiết về các phương pháp tạo ra và xác thực chữ ký số.

Quy trình gồm ba bước sau:

 Tạo chữ ký và ký vào thông điệp

Sử dụng thuật toán mã hóa khóa công khai RSA, chúng ta có thể khởi tạo một cặp khóa bao gồm khóa công khai và khóa bí mật Các thuật toán như chữ ký số ABA, chữ ký số Elgamal và chữ ký số RSA đều có thể được áp dụng trong việc tạo chữ ký số Trong bài nghiên cứu này, chúng tôi tập trung vào việc sử dụng thuật toán RSA để tạo và xác thực chữ ký số.

Tạo chữ ký và ký vào thông điệp

Để bắt đầu, chúng ta cần một tệp tin cần được ký xác nhận, như hóa đơn, hợp đồng hoặc các văn bản giao dịch, với các định dạng như *.doc, *.pdf, hoặc *.mp3 Trong nghiên cứu này, chúng ta sẽ thực hiện việc ký chữ ký số và xác thực trên tệp văn bản định dạng *.doc.

Sử dụng giải thuật hàm băm như MD5 và SHA để biến đổi thông điệp thành một message digest, trong đó MD5 tạo ra digest có chiều dài 128 bit, còn SHA cho ra digest dài 160 bit.

Sử dụng khóa private key của người gửi để mã hóa message digest, thường áp dụng thuật toán RSA, tạo ra chữ ký số cho thông điệp ban đầu.

Gộp chữ ký số vào thông điệp gốc giúp phát hiện mọi thay đổi trên thông điệp Việc này đảm bảo rằng người nhận có thể tin tưởng thông điệp xuất phát từ đúng người gửi, không phải từ nguồn khác.

Kiểm tra và xác thực chữ ký số

 Dùng 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ý số của thông điệp

 Dùng giải thuật (MD5 hoặc SHA) băm thông điệp nhận được

So sánh kết quả thu được ở bước 1 và bước 2 Nếu hai kết quả trùng khớp, chúng ta có thể kết luận rằng thông điệp không bị thay đổi trong quá trình truyền và xác nhận rằng thông điệp này thuộc về người gửi.

Hình 12.1 Quy trình tạo và xác thực chữ ký số

Chúng ta có một file văn bản *.doc cần được ký và chuyển giao qua cho bên đối tác

Chúng ta bắt đầu bằng cách sử dụng thuật toán RSA để tạo ra cặp khóa công khai và khóa bí mật Theo Ví dụ 1.7 trong mục 1.2.5.3 về mã hóa RSA, chúng ta đã tạo được hai cặp khóa bí mật (n, d) = (2059, 1307) và khóa công khai (n, e) = (2059, e).

Tạo chữ ký và ký

Chúng ta sẽ sử dụng hàm băm MD5 để băm file văn bản, từ đó tạo ra một mã hash code hệ thập lục phân dài 32 ký tự, được ký hiệu là m.

 Sau đó dùng khoá bí mật (2059, 1307) , tạo ra bản mã hoá c = 𝑚 1307 mod 2059 và gửi cho bên đối tác bản mã c đính kèm trong file *.doc

Giải mã và xác thực

 Đối tác sau khi nhận được file *.doc và bản mã c, họ thực hiện giảm mã c để tìm được mã hash code: m = 𝑐 3 mod 2059

 Song song đó đối tác thực hiện băm file *.doc ra và tạo được một mã hash code h

So sánh mã hash code h với m đã băm, nếu chúng trùng khớp, điều này chứng minh rằng file văn bản *.doc này được gửi bởi chính chủ sở hữu và thông điệp trong file không bị thay đổi.

Ví dụ trên cũng đã mô tả quy trình cơ bản được áp dụng trong việc xây dựng ứng dụng tạo và xác thực chữ ký số

MỘT SỐ QUY ĐỊNH, THÔNG TƯ VỀ CHỮ

Quy định về ký số, kiểm tra chữ ký số trên văn bản điện tử trong cơ quan nhà nước việt nam

TỬ TRONG CƠ QUAN NHÀ NƯỚC VIỆT NAM

Nghị Định Số 130/2018/NĐ-CP quy định chi tiết về chữ ký số và dịch vụ chứng thực chữ ký số, theo luật giao dịch điện tử Các quy định này nhằm đảm bảo tính hợp pháp và an toàn trong việc sử dụng chữ ký số trong các giao dịch điện tử.

Quy định về giá trị pháp lý của chữ ký số

Xác định giá trị pháp lý của chữ ký số là rất quan trọng để đảm bảo tính minh bạch, hợp pháp và an toàn trong các giao dịch điện tử, đồng thời giúp chống giả mạo chữ ký Các quy định liên quan đến giá trị pháp lý của chữ ký số được nêu rõ tại Điều 8 của Nghị Định 130/2018/NĐ-CP.

Để một văn bản dữ liệu được xem là hợp pháp, cần phải có chữ ký số tuân theo quy định pháp luật, cụ thể là Điều 9 của Nghị Định liên quan.

Để văn bản đáp ứng yêu cầu đóng dấu của cơ quan tổ chức, nó phải được ký bởi chữ ký của cơ quan tổ chức đảm bảo an toàn theo quy định pháp luật, cụ thể là Điều 9 của Nghị Định này.

Chữ ký số nước ngoài được cấp phép sử dụng tại Việt Nam sẽ có giá trị pháp lý và hiệu lực tương đương với chữ ký số do tổ chức cung cấp dịch vụ chứng thực chữ ký số công cộng của Việt Nam cấp.

Quy định về điều kiện tạo chữ ký số đảm bảo an toàn đối với các đơn

4.1.2 vị cung cấp Đối với các đơn vị cung cấp chữ ký số thì phải đáp ứng đầy đủ ba điều kiện tạo chữ ký số đảm bảo an toàn được quy định rõ tại Điều 9 của Nghị Định 130/2018/NĐ -

Chữ ký số cần được tạo trong thời gian hiệu lực của chứng thư số và phải được xác thực bằng khóa công khai được ghi trên chứng thư đó.

Chữ ký số cần được tạo ra bằng cách sử dụng khóa bí mật tương ứng với khóa công khai được ghi trên chứng thư số, do một trong bốn tổ chức được phép cấp.

+ Tổ chức cung cấp dịch vụ chứng thực chữ ký số quốc gia

+ Tổ chức cung cấp dịch vụ chứng thực chữ ký số chuyên dùng cho chính phủ

+ Tổ chức cung cấp dịch vụ chứng thực chữ ký số công cộng

Tổ chức cung cấp dịch vụ chứng thực chữ ký số chuyên dùng cho các cơ quan, tổ chức đã được cấp giấy chứng nhận đảm bảo đủ điều kiện an toàn cho chữ ký số chuyên dụng.

 Cuối cùng, đảm bảo chắc chắn rằng khóa bí mật chỉ thuộc sự kiểm soát của người ký tại thời điểm đó.

Chứng thư số, chữ ký số nước ngoài tại việt nam

Đối tượng sử dụng chứng thư số nước ngoài

4.2.1 Đối với điều kiện sử dụng chứng thư số nước ngoài tại Việt Nam đã được quy định tại Điều 43 của Nghị Định 130/2018/NĐ - CP như sau:

 Chứng thư số còn hiệu lực sử dụng

Chứng thư số được cấp phép bởi Bộ Thông tin và Truyền thông tại Việt Nam hoặc được chấp nhận trong giao dịch quốc tế Đối với việc sử dụng chứng thư số từ nước ngoài cho máy chủ và phần mềm, không yêu cầu giấy phép Các đối tượng sử dụng chứng thư số nước ngoài cần lưu ý quy định này.

4.2.2 Được quy định tại Điều 44 của bộ luật này:

 Tổ chức, cá nhân nước ngoài tại Việt Nam

Các tổ chức và cá nhân tại Việt Nam có nhu cầu thực hiện giao dịch điện tử với đối tác quốc tế, nhưng gặp khó khăn do chứng thư số từ các nhà cung cấp dịch vụ chứng thực chữ ký số trong nước chưa được công nhận ở nước ngoài.

Phạm vi hoạt động và thời hạn giấy phép sử dụng chứng thư số nước

Những quy định này được ghi rõ trong Điều 45 của bộ luật này như sau:

 Phạm vi hoạt động là các giao dịch điện tử của đối tượng sử dụng chứng thư số nước ngoài quy định tại Điều 44 Nghị định này

Thời hạn giấy phép sử dụng chứng thư số nước ngoài tại Việt Nam là 5 năm, nhưng không vượt quá thời gian hiệu lực của chứng thư số Để được cấp giấy phép sử dụng, cần đáp ứng các điều kiện cụ thể.

Những quy định này được ghi rõ trong Điều 46 của bộ luật này như sau: Đối với thuê bao sử dụng chứng thư số nước ngoài tại Việt Nam:

 Thuộc đối tượng quy định tại Điều 44 Nghị định này;

 Có một trong các văn bản sau đây để xác thực thông tin trên chứng thư số:

Để thành lập một doanh nghiệp, cần có giấy chứng nhận đăng ký doanh nghiệp, giấy chứng nhận đầu tư, hoặc quyết định thành lập, cùng với quyết định quy định chức năng, nhiệm vụ và quyền hạn của tổ chức Đối với cá nhân, cần xuất trình chứng minh nhân dân, căn cước công dân hoặc hộ chiếu.

Văn bản từ cơ quan có thẩm quyền cho phép tổ chức và cá nhân nước ngoài hoạt động hợp pháp tại Việt Nam liên quan đến việc sử dụng thuê bao của họ.

Để được ủy quyền sử dụng chứng thư số, cần có văn bản ủy quyền hợp pháp cho phép sử dụng chứng thư này Thông tin của thuê bao được cấp chứng thư số phải khớp với thông tin trong văn bản ủy quyền Điều này cũng áp dụng cho các tổ chức cung cấp dịch vụ chứng thực chữ ký số từ nước ngoài.

4.2.5 chứng thư số được công nhận tại Việt Nam

 Thành lập và hoạt động hợp pháp tại quốc gia mà tổ chức cung cấp dịch vụ chứng thực chữ ký số nước ngoài đăng ký hoạt động;

Để đảm bảo an toàn thông tin, các tổ chức cần tuân thủ các tiêu chuẩn bắt buộc về chữ ký số và dịch vụ chứng thực chữ ký số do Bộ Thông tin và Truyền thông ban hành, hoặc áp dụng các tiêu chuẩn quốc tế về chữ ký số được Bộ xác định có độ an toàn tương đương.

 Được doanh nghiệp kiểm toán chứng nhận hoạt động nghiệp vụ tuân thủ các tiêu chuẩn quốc tế có uy tín về dịch vụ chứng thực chữ ký số

XÂY DỰNG ỨNG DỤNG TẠO VÀ XÁC THỰC

Dựa trên kiến thức đã học và nghiên cứu, chúng em đã phát triển thành công một ứng dụng thực tiễn mang tên “RSA Digital Signature” để tạo và xác thực chữ ký số Ứng dụng này được lập trình bằng ngôn ngữ C# trên nền tảng Winform, sở hữu giao diện đồ hoạ thân thiện với người dùng Trong chương này, chúng ta sẽ khám phá chi tiết về ứng dụng này.

Giới thiệu về phần mềm

Phần mềm này được tạo ra để thực hiện các chức năng

 Thực hiện tạo khóa bí mật và khóa công khai

 Thực hiện tạo chữ ký số bằng giải thuật RSA

 Thực hiện giải mã để xác thực cho chữ ký được tạo bằng giải thuật RSA

Bao gồm 3 form chính: Started, Tạo chữ ký và Xác thực chữ ký

Khi khởi động ứng dụng, người dùng sẽ thấy form "Bắt đầu" với hai tùy chọn: "Tạo chữ ký" và "Xác thực chữ ký" Tùy thuộc vào lựa chọn của người dùng, các chức năng tương ứng sẽ được hiển thị trong form.

Hình 13.1 Giao diện started của phần mềm

Thực hiện tạo khóa bí mật và khóa công khai

Form Tạo chữ ký số giúp tạo ra khóa cho hệ mã hóa RSA, đồng thời sử dụng các khóa này trong quá trình tạo chữ ký số.

Phần mềm cho phép người dùng tạo và lưu trữ các khóa tại vị trí tùy chọn Để thực hiện điều này, nó sử dụng thư viện mã hóa System.Security.Cryptography trên nền tảng C#.

Phần mềm hỗ trợ tạo khóa với 4 độ dài khác nhau là 512 bit, 1024 bit, 2048 bit,

Khóa 4096 bit mang lại độ bảo mật cao hơn nhờ vào chiều dài lớn, tuy nhiên, thời gian tạo chữ ký sẽ kéo dài hơn do độ phức tạp của khóa.

Chương trình hỗ trợ nhiều độ dài khóa khác nhau, được lưu vào biến lengthKey tùy thuộc vào kích thước mà người dùng đã chọn Sau đó, kích thước khóa này sẽ được truyền vào đối tượng RSA.

Hình 15.3 Code truyền giá trị độ dài khoá vào đối tượng RSA

42 Ở đây chúng ta sẽ tạo khoá dựa trên độ dài khoá đã gán Câu lệnh để tạo cả 2 khoá trong đối tượng RSA là

Trong quy trình mã hoá RSA, khoá bí mật có giá trị option là “true” trong khi khoá công khai có giá trị option là “false” Thông thường, người gửi sử dụng khoá công khai của người nhận để mã hoá, và người nhận dùng khoá bí mật của mình để giải mã Tuy nhiên, trong ứng dụng RSA cho chữ ký số, người gửi sử dụng khoá bí mật của mình để mã hoá chữ ký số, và người nhận sẽ giải mã bằng khoá công khai của họ Do đó, chức năng của hai khoá sẽ đảo ngược so với quy trình RSA thông thường, với khoá bí mật có option là “false” và khoá công khai có option là “true”.

Chúng ta cần lưu trữ khóa đã tạo vào một tệp tin, cụ thể là một tệp XML Để thực hiện điều này, hãy gọi hàm ghi tệp với đường dẫn đến tệp XML và sử dụng hàm tạo khóa RSA đã đề cập.

Hình 16.4 Code tạo khoá công khai và bí mật

File.WriteAllText(): hàm ghi file trong winform pathKeyRSApublic: đường dẫn lưu file xml chứa khoá công khai pathKeyRSAPrivate: đường dẫn lưu file xml chứa khoá bí mật

RSA.ToXmlString(true) tạo ra khoá công khai và trả về giá trị khoá dưới định dạng XML, trong khi RSA.ToXmlString(false) tạo ra khoá bí mật và cũng trả về giá trị khoá ở dạng XML.

Sau khi tạo thì phần mềm sẽ xuất ra khóa dưới định dạng “.xml” và dữ liệu của khoá sẽ được xuất

Hình 17.5 Khóa bí mật và khoá công khai

Giá trị của khoá này sẽ được đọc và xuất ra màn hình ở textbox Publickey và PrivateKey để dễ dàng theo dõi.

Thực hiện tạo chữ ký số bằng giải thuật RSA

Chữ ký số được tạo ra thông qua quá trình mã hóa dữ liệu đầu vào thành chuỗi bit (chuỗi nhị phân) bằng cách sử dụng khóa bí mật đã được tạo ra trước đó.

Input data can be in any file format we wish to sign, including Word, PDF, or video files To upload the input file, simply click the Import button in the Input section.

Sau khi người dùng nhập file dữ liệu đầu vào, ô textbox Input sẽ hiển thị đường dẫn đến file đó Quy trình tạo chữ ký số bắt đầu bằng việc băm file input thông qua các hàm băm, trong đó chương trình sử dụng hàm băm SHA256 với độ dài 65 ký tự được hỗ trợ bởi thư viện C# Khi nút hash được nhấn, hàm băm SHA256 sẽ được gọi để thực hiện băm file input đã chỉ định.

Sau đó để tạo chữ ký số, nhấn vào button Create digital signature

Hình 18.6 Giao diện tạo chữ ký số

Chương trình sẽ thực thi hàm btnEncryptClick() để kiểm tra xem các file cần thiết đã đầy đủ hay chưa, đồng thời chuẩn bị các bước để thực hiện mã hóa.

RSA.FromXmlString(File.ReadAllText(this.pathKeysXMLPrivate));

Chức năng này gán khoá bí mật từ đường dẫn input đã tạo vào đối tượng RSA và sau đó gọi hàm RSA_Algorithm() để thực hiện quá trình mã hóa.

RSA_Algorithm(inputFileName, outputFileName, RSA.ExportParameters(false),true);

Trong đó inputFileName, outputFileName: là đường dẫn đến file dữ liệu đầu vào và ra

RSA.ExportParameters(false): là câu lệnh xuất ra khoá bí mật của đối tượng RSA để thực hiện mã hoá

Trong hàm RSA_Algorithm(), sau khi hoàn tất các bước chuẩn bị, dữ liệu chữ ký số sẽ được mã hóa bằng lệnh encryptedData = RSA.Encrypt(bin, false) và sau đó được ghi vào tệp output mà người dùng đã chỉ định.

Sau khi tạo thì chữ ký sẽ được lưu dưới định dạng “tên file được sử dụng để ký

Trong hệ thống, phần mở rộng “.lhde” được quy định bởi lập trình viên để phân biệt file chữ ký với các loại file khác Người sử dụng có quyền chỉ định vị trí lưu trữ cho chữ ký này.

File được dùng làm chữ ký :

Chương trình cung cấp tính năng nén file khóa công khai và file chữ ký vào một tệp duy nhất, giúp người gửi dễ dàng gửi đi Tệp nén “secret.zip” sẽ được tạo ra, chứa cả chữ ký và khóa công khai bên trong.

Hình 19.7 Tuỳ chọn nén file sau khi tạo thành công chữ ký

Chương trình sẽ yêu cầu chúng ta chọn vị trí lưu trữ file nén Sau khi quá trình nén hoàn tất, file sẽ có định dạng nhất định Chúng ta chỉ cần gửi file nén này cùng với file hợp đồng (input) đến đối tác.

Thực hiện giải mã để xác thực cho chữ ký được tạo bằng giải thuật RSA 45 KẾT LUẬN

Việc xác thực chữ ký được thực hiện thông qua việc giải mã file chữ ký bằng khóa công khai do người gửi cung cấp, nhằm phục hồi dữ liệu ban đầu dưới dạng chuỗi bit Để thực hiện quá trình này, mã lệnh sử dụng là: `encryptedData = RSA.Decrypt(bin, false);`.

“bin” là số bit có thể mã hóa đã được tính trong hàm RSA_Algorithm();

“false” ở đây nếu bạn muốn sử dụng đệm mã OAEP thì để là “true”

Sau khi giải mã chuỗi bit, chương trình sẽ so sánh với chuỗi bit của dữ liệu đã được ký Nếu hai chuỗi này giống nhau, chương trình xác nhận rằng file được ký không bị thay đổi và cho phép mở file Ngược lại, nếu chúng khác nhau, chương trình sẽ kết luận rằng file đã bị thay đổi và không cho phép mở file.

Chúng ta có 2 cách để nhập dữ liệu để xác thực:

 Add vào file nén zip nhận được từ bên gửi và file hợp đồng gốc (input)

 Add từng file chữ ký, khoá công khai và file hợp đồng gốc vào

Sau đó chúng ta ấn vào Verification, ứng dụng sẽ tự động kiểm tra và xác thực

Nếu chữ ký xác thực hợp lệ và dữ liệu không bị thay đổi, người dùng có thể mở file hợp đồng để ký và gửi lại cho đối tác Ngược lại, nếu chữ ký không hợp lệ, điều này cho thấy văn bản đã bị can thiệp, ứng dụng sẽ cảnh báo và không cho phép mở file hợp đồng.

Hình 20.8 Giao diện xác thực chữ ký số

 Nếu chữ ký xác thực đúng

Hình 21.9 Chữ ký giống với văn bản

 Nếu chữ ký được xác thực là sai

Hình 22.10 Chữ ký không giống với văn bản

Trong quá trình nghiên cứu thực hiện đồ án môn học “TÌM HIỂU VỀ CHỮ

Dưới sự hướng dẫn của cô Mạnh Thiên Lý, chúng em đã nghiên cứu và nắm vững khái niệm, quy trình tạo và xác thực chữ ký điện tử Chúng em đã phát triển thành công một ứng dụng đơn giản để áp dụng kiến thức này vào thực tiễn, mặc dù còn hạn chế do thời gian và nguồn kiến thức Ứng dụng của chúng em sử dụng các thư viện hàm băm và mã hóa RSA để thực hiện việc tạo và xác thực chữ ký số Nếu được cải tiến, chương trình có thể hoạt động tương tự như các phần mềm thương mại hiện nay Chúng em rất mong nhận được sự góp ý và hỗ trợ từ thầy cô và bạn bè để hoàn thiện đề tài này Xin chân thành cảm ơn.

Ngày đăng: 24/12/2021, 21:55

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Mô hình mã hoá dữ liệu cơ bản - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 1.1 Mô hình mã hoá dữ liệu cơ bản (Trang 12)
Hình 1.2  Mô hình về hệ mã hoá dòng Stream Cipher - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 1.2 Mô hình về hệ mã hoá dòng Stream Cipher (Trang 13)
Hình 2.3  Mô hình về hệ mã hoá khối Block Cipher - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 2.3 Mô hình về hệ mã hoá khối Block Cipher (Trang 14)
Hình 3.4   Bảng ví dụ sắp xếp thuật toán mã hoá thay thế - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 3.4 Bảng ví dụ sắp xếp thuật toán mã hoá thay thế (Trang 15)
Hình 4.5   Bảng mã dịch chuyển - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 4.5 Bảng mã dịch chuyển (Trang 17)
Hình 5.6   Cách hoạt động của playfair - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 5.6 Cách hoạt động của playfair (Trang 18)
Hình 6.7   Cách xếp ma trận khóa của playfair - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 6.7 Cách xếp ma trận khóa của playfair (Trang 19)
Hình 8.9   Quy trình mã hoá RSA - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 8.9 Quy trình mã hoá RSA (Trang 23)
Hình bên dưới mô tả chi tiếp quá trình này: - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình b ên dưới mô tả chi tiếp quá trình này: (Trang 27)
Hình 10.2 Ví dụ về hàm băm - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 10.2 Ví dụ về hàm băm (Trang 28)
Hình 11.3 Ví dụ về hàm băm MD5 bằng công cụ HashCalc - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 11.3 Ví dụ về hàm băm MD5 bằng công cụ HashCalc (Trang 29)
Hình 12.1 Quy trình tạo và xác thực chữ ký số - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 12.1 Quy trình tạo và xác thực chữ ký số (Trang 35)
Hình 13.1 Giao diện started của phần mềm. - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 13.1 Giao diện started của phần mềm (Trang 40)
Hình 14.2 Các độ dài khóa mà chương trình hỗ trợ. - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 14.2 Các độ dài khóa mà chương trình hỗ trợ (Trang 41)
Hình 15.3 Code truyền giá trị độ dài khoá vào đối tượng RSA - TÌM HIỂU về CHỮ ký điện tử và xây DỰNG ỨNG DỤNG tạo và xác THỰC CHỮ ký điện tử
Hình 15.3 Code truyền giá trị độ dài khoá vào đối tượng RSA (Trang 41)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w