1. Trang chủ
  2. » Luận Văn - Báo Cáo

Btl Môn An Toàn Bảo Mật Thông Tin.docx

56 21 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ử RSA và viết ứng dụng minh họa
Tác giả Phùng Văn Công, Nguyễn Hữu Đại, Trương Ngọc Đăng, Nguyễn Thành Đạt, Nguyễn Văn Đạt
Người hướng dẫn ThS. Trần Phương Nhung
Trường học Học viện Công nghiệp Hà Nội
Chuyên ngành An toàn và bảo mật thông tin
Thể loại Bài tập lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 56
Dung lượng 2,83 MB

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

Cấu trúc

  • Chương 1. Tổng quan (4)
    • 1.1 Tổng quan về an toàn và bảo mật thông tin (5)
    • 1.2 Sự cần thiết của An toàn và bảo mật thông tin (6)
    • 1.3 Mục đích của An toàn và bảo mật thông tin (7)
    • 1.4 Chữ kí số (8)
  • Chương 2. Kết quả nghiên cứu (11)
    • 2.1 Giới thiệu (11)
    • 2.2 Nội dung thuật toán (12)
    • 2.3 Thiết kế, cài đặt chương trình đề mô thuật toán (13)
      • 2.3.1 Giao diện chương trình đề mô (13)
      • 2.3.2 Cài đặt và triển khai (17)
    • 2.4 Thực hiện bài toán (24)
      • 2.4.1 Phân công công việc (24)
      • 2.4.2 Kiến trúc tổng quan về chữ kí số và chữ kí số RSA (Phùng Văn Công) (25)
      • 2.4.3 Giải thuật RSA và hàm băm mật mã MD5 (Nguyễn Hữu Đại) (31)
      • 2.4.4 Các điểm yếu của chữ kí số RSA (Trương Ngọc Đăng) (38)
      • 2.4.5 Các dạng tấn công (Nguyễn Thành Đạt) (42)
      • 2.4.6 Ứng dụng chữ kí số RSA (Nguyễn Văn Đạt) (43)
  • Chương 3. Phần kiến thức lĩnh hội và bài học kinh nghiệm (47)
    • 3.1 Nội dung đã thực hiện (47)
    • 3.2 Hướng phát triển (55)

Nội dung

Mẫu 1 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI Khoa Công Nghệ Thông Tin ~~~~~~*~~~~~~ BÀI TẬP LỚN Môn An toàn và bảo mật thông tin Đề tài 03 Tìm hiểu về chữ kí điện tử RSA và viết ứng dụng min[.]

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

Khoa Công Nghệ Thông Tin

Trang 2

Hà Nội – 2023

Lời Mở Đầu

Trong thời đại bùng nổ công nghệ thông tin như hiện nay, dữ liệu cá nhân trênkhông gian mạng trở thành một kho lưu trữ khổng lồ mà nếu chúng ta không có biệnpháp bảo vệ tương xứng, đúng cách thì sẽ tạo ra điều kiện thuận lợi để tội phạm haycác phần tử xấu lợi dụng thực hiện các hành vi vi phạm pháp luật tiềm ẩn nguy cơmất an ninh thông tin

Lợi dụng sự chủ quan, lơ là và đánh vào tâm lý “hám lời” của người dân, đềnghị cung cấp thông tin và sau đó chiếm đoạt dưới hình thức các chương trìnhkhuyến mãi, bốc thăm trúng thưởng, mua hàng online, mini game có thưởng…

Trong thực tế các hacker, các dạng virus luôn tấn công và là mối đe dọa của cácnguồn tài nguyên thông tin Những vấn đề đảm bảo an toàn thông tin trong các hệthống máy tính là rất quan trọng. 

Hiểu được điều đó, nhóm 3 chúng em đã thực hiện xây dựng chương trình chữ kýRSA Từ những kiến thức đã được học cùng với việc nghiên cứu các tài liệu trênInternet, và nhất là nhờ sự hướng dẫn, chỉ bảo tận tình của cô Trần Phương Nhung,nhóm chúng em đã hoàn thành đề tài này Trong quá trình hoàn thành đề tài, chúng

em còn gặp nhiều khó khăn, và sự hiểu biết của chúng em còn hạn hẹp nên kết quảvẫn còn nhiều thiếu sót. 

Kính mong cô nhận xét và đóng góp ý kiến để nhóm có thể hoàn thiện được bàitập này Sau đây, nhóm 3 chúng em xin cùng cô xem và đánh giá bài báo cáo này

Trang 3

MỤC LỤC

Chương 1 Tổng quan 4

1.1 Tổng quan về an toàn và bảo mật thông tin 5

1.2 Sự cần thiết của An toàn và bảo mật thông tin 6

1.3 Mục đích của An toàn và bảo mật thông tin 7

1.4 Chữ kí số 8

Chương 2 Kết quả nghiên cứu 11

2.1 Giới thiệu 11

2.2 Nội dung thuật toán 12

2.3 Thiết kế, cài đặt chương trình đề mô thuật toán 14

2.3.1 Giao diện chương trình đề mô 14

2.3.2 Cài đặt và triển khai 17

2.4 Thực hiện bài toán 24

2.4.1 Phân công công việc 24

2.4.2 Kiến trúc tổng quan về chữ kí số và chữ kí số RSA (Phùng Văn Công) 25

2.4.3 Giải thuật RSA và hàm băm mật mã MD5 (Nguyễn Hữu Đại) 31

2.4.4 Các điểm yếu của chữ kí số RSA (Trương Ngọc Đăng) 38

2.4.5 Các dạng tấn công (Nguyễn Thành Đạt) 42

2.4.6 Ứng dụng chữ kí số RSA (Nguyễn Văn Đạt) 43

Chương 3 Phần kiến thức lĩnh hội và bài học kinh nghiệm 47

3.1 Nội dung đã thực hiện 47

3.2 Hướng phát triển 54

Trang 4

Chương 1 Tổng quan

Ngày nay trong mọi hoạt động của con người thông tin đóng một vai tròquan trọng không thể thiếu Xã hội càng phát triển nhu cầu trao đổi thông tingiữa các thành phần trong xã hội ngày càng lớn Mạng máy tính ra đời đã manglại cho con người rất nhiều lợi ích trong việc trao đổi và xử lý thông tin một cáchnhanh chóng và chính xác

Chính từ những thuận lợi này đã đặt ra cho chúng ta một câu hỏi, liệuthông tin đi từ nơi gửi đến nơi nhận có đảm bảo tuyệt đối an toàn, ai có thể đảmbảm thông tin của ta không bị truy cập bất hợp pháp Thông tin được lưu giữ,truyền dẫn, cùng sử dụng trên mạng lưới thông tin công cộng có thể bị nghetrộm, chiếm đoạt, xuyên tạc hoặc phá huỷ dẫn đến sự tổn thất không thể lườngđược Đặc biệt là đối với những số liệu của hệ thống ngân hàng, hệ thống thươngmại, cơ quan quản lý của chính phủ hoặc thuộc lĩnh vực quân sự được lưu giữ vàtruyền dẫn trên mạng

Nếu như vì nhân tố an toàn mà thông tin không dám đưa lên mạng thì hiệusuất làm việc cũng như hiệu suất lợi dụng nguồn dữ liệu đều sẽ bị ảnh hưởng.Trước các yêu cầu cần thiết đó, việc mã hoá thông tin sẽ đảm bảo an toàn chothông tin tại nơi lưu trữ cũng như khi thông tin được truyền trên mạng

Trang 5

1.1 Tổng quan về an toàn và bảo mật thông tin

An toàn thông tin là các hoạt động bảo vệ tài sản thông tin và là một lĩnhvực rộng lớn Nó bao gồm cả những sản phẩm và những quy trình nhằm ngănchặn truy cập trái phép, hiệu chỉnh, xóa thông tin,…

Các phương thức tấn công thông qua mạng ngày càng tinh vi, phức tạp cóthể dẫn đến mất mát thông tin, thậm chí có thể làm sụp đổ hoàn toàn hệ thốngthông tin của tổ chức Vì vậy an toàn thông tin là nhiệm vụ quan trọng, nặng nề

và khó đoán trước đối với các hệ thống thông tin

An toàn thông tin liên quan đến hai khía cạnh đó là an toàn về mặt vật lý

Phương thức, thủ đoạn đánh cấp dữ liệu cá nhân:

- Sử dụng mã độc, phần mềm có tính năng gián điệp hay tấn công, xâmnhập hệ thống máy tính, làm gián đoạn, tổn hại tới tính bí mật, tính toànvẹn và sẵn sàng của máy tính người sử dụng để chiếm đoạt thông tin dữliệu cá nhân Chẳng hạn, vụ tin tặc (hacker) rao bán khối lượng dữ liệukhách hàng của các nhà mạng, điện lực, ngân hàng và doanh nghiệp ViệtNam trên 01 diễn đàn cho hacker là một vấn đề đáng báo động và tiềm ẩnnguy cơ bị các đối tượng xấu lợi dụng để lừa đảo chiếm đoạt tài sản kháchhàng

Trang 6

- Tấn công vào hệ thống lưu trữ dữ liệu cá nhân, thông tin khách hàng đểbán cho đối thủ của họ, ăn cắp mật khẩu của các tài khoản nhằm mục đíchbiển thủ tiền

1.2 Sự cần thiết của An toàn và bảo mật thông tin

Hệ thống thông tin là thành phần thiết yếu trong mọi cơ quan, tổ chức vàđem lại khả năng xử lý thông tin, là tài sản quan trọng nhưng hệ thống thông tincũng chứa rất nhiều điểm yếu và rủi do Do máy tính được phát triển với tốc độrất nhanh để đáp ứng nhiều yêu cầu của người dùng, các phiên bản được pháthành liên tục với các tính năng mới được thêm vào ngày càng nhiều, điều nàylàm cho các phần mềm không được kiểm tra kỹ trước khi phát hành và bên trongchúng chứa rất nhiều lỗ hổng có thể dễ dàng bị lợi dụng Thêm vào đó là việcphát triển của hệ thống mạng, cũng như sự phân tán của hệ thống thông tin, làmcho người dùng truy cập thông tin dễ dàng hơn và tin tặc cũng có nhiều mục tiêutấn công dễ dàng hơn

Việc bảo mật dữ liệu cá nhân là có ý nghĩa hết sức quan trọng bởi nếu dữliệu bị đánh cắp có thể gây ra những tổn thất tài chính nghiêm trọng, nguy cơ bịtống tiền, lừa đảo, chiếm đoạt tài sản, bôi nhọ, xâm phạm danh dự, nhân phẩm,xâm hại tình dục , gây hậu quả cả về vật chất và tinh thần, ảnh hưởng trực tiếpđến quyền và lợi ích hợp pháp của các cơ quan, tổ chức, doanh nghiệp và mỗi cánhân Vì vậy, trước hết là mỗi cá nhân cần thực hiện tốt bảo mật dữ liệu củamình để ngăn chặn hành vi trộm cắp dữ liệu, đảm bảo tính toàn vẹn của các

Trang 7

thông tin cá nhân; bảo vệ quyền riêng tư và tránh được những hệ lụy, rủi ro phátsinh khi bị lộ, lọt, đánh cắp dữ liệu cá nhân.

1.3

Mục đích của An toàn và bảo mật thông tin

+ Bảo vệ tài nguyên của hệ thống

Các hệ thống máy tính lưu giữ rất nhiều thông tin và tài nguyên cần được bảo

vệ Trong một tổ chức, những thông tin và tài nguyên này có thể là dữ liệu kếtoán, thông tin nguồn nhân lực, thông tin quản lý, bán hàng, nghiên cứu, sángchế, phân phối, thông tin về tổ chức và thông tin về các hệ thống nghiên cứu.Đối với rất nhiều tổ chức, toàn bộ dữ liệu quan trọng của họ thường được lưutrong một cơ sở dữ liệu và được quản lý và sử dụng bởi các chương trình phầnmềm

Các tấn công vào hệ thống có thể xuất phát từ những đối thủ của tổ chức hoặc cánhân do đó, các phương pháp để bảo đảm an toàn cho những thông tin này cóthể rất phức tạp và nhạy cảm Các tấn công có thể xuất phát từ nhiều nguồn khácnhau, cả từ bên trong và bên ngoài tổ chức Hậu quả mà những tấn công thànhcông để lại sẽ rất nghiêm trọng

+ Bảo đảm tính riêng tư.

Các hệ thống máy tính lưu giữ rất nhiều thông tin cá nhân cần được giữ bí mật.Những thông tin này bao gồm: Số thẻ bảo hiểm xã hội, số thẻ ngân hàng, số thẻtín dụng, thông tin về gia đình,

Tính riêng tư là yêu cầu rất quan trọng mà các ngân hàng, các công ty tín dụng,các công ty đầu tư và các hãng khác cần phải đảm bảo để gửi đi các tài liệuthông tin chi tiết về cách họ sử dụng và chia sẻ thông tin về khách hàng Cáchãng này có những quy định bắt buộc để bảo đảm những thông tin cá nhân được

bí mật và bắt buộc phải thực hiện những quy định đó để bảo đảm tính riêng tư

Trang 8

Hậu quả nghiêm trọng sẽ xảy ra nếu một kẻ giả mạo truy nhập được nhữngthông tin cá nhân.

=> Một trong những ứng dụng của an toàn thông tin là chữ ký số Với đặc điểm

là đơn giản cho người sử dụng mà vẫn đảm bảo được tính bảo mật, kỹ thuật sửdụng chữ ký số là một trong những kỹ thuật được sử dụng phổ biến, đa dạngtrong hầu hết các lĩnh vực, nhất là Tài chính, Ngân hang, Kế toán…Vì lý do đó,nhóm 3 chúng em đã nghiên cứu về Chữ kí điện tử RSA và những vấn đề có liênquan đồng thời có viết được các chương trình nhằm mục đích demo về nhữngvấn đề trên

Khóa công khai thường được phân phối thông qua chứng thực khóa công khai

Chữ

Trang 9

(Digital Signature) là một chuỗi dữ liệu liên kết với một thông điệp (message)

và thực thể tạo ra thông điệp

Giải thuật tạo ra chữ ký số (Digital Signature generation algorithm) là

một phương pháp sinh chữ ký số

Giải thuật kiểm tra chữ ký số (Digital Signature verification algorithm) là

một phương pháp xác minh tính xác thực của chữ ký số, có nghĩa là nó thực sựđược tạo ra bởi 1 bên chỉ định

Một hệ chữ ký số (Figital Signature Scheme) bao gồm giải thuật tạo chữ

số và giải thuật kiểm tra chữ kỹ số

- Quá trình tạo chữ ký số (Digital Signature signing process) bao gồm:

+ Giải thuật tạo chữ ký số

+ Phương pháp chuyển dữ liệu thông điệp thành dạng có thể kýđược

- Quá trình kiểm tra chữ ký số (Digital signature verification process) :

+ Giải thuật kiểm tra chữ ký số

+ Phương pháp khôi phục dữ liệu từ thông điệp

Hàm băm (Hash Funtion) là hàm toán học chuyển đổi thông điệp

(message) có độ dài bất kỳ (hữu hạn) thành một dãy bít có độ dài cố định (tùythuộc vào thuật toán băm) Dãy bít này được gọi là thông điệp rút gọn (messagedisgest) hay giá trị băm (hash value), đại diện cho thông điệp ban đầu

Ví dụ : Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau :Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thểđọc được Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã

mở sẵn (Khóa công khai) và giữ lại chìa khóa Bob nhận chiếc hộp, cho vào đómột tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ

Trang 10

cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bob gửi chiếc hộplại cho Alice Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư.Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìakhóa chính là khóa bí mật.

được- Quá trình ký (Bên gửi)

Tính toán chuỗi đại diện (message digest/ hash value) của thông điệp sử dụngmột giải thuật băm (Hashing algorithm)

Chuỗi đại diện được ký sử dụng khóa riêng (Priavte key) của người gửi và 1 giảithuật tạo chữ ký (Signature/ Encryption algorithm) Kết quả chữ ký số (Digitalsignature) của thông điệp hay còn gọi là chuỗi đại diện được mã hóa (Encrytedmessage digest)

Thông điệp ban đầu (message) được ghép với chữ ký số (Digital signature) tạothành thông điệp đã được ký (Signed message)

Thông điệp đã được ký (Signed message) được gửi cho người nhận

 Quá trình kiểm tra chữ kí (Bên nhận)

Tách chữ ký số và thông điệp gốc khỏi thông điệp đã ký để xử lý riêng;

Tính toán chuỗi đại diện MD1 (message digest) của thông điệp gốc sử dụng giảithuật băm (là giải thuật sử dụng trong quá trình ký)

Sử dụng khóa công khai (Public key) của người gửi để giải mã chữ ký số ->chuỗi đại diện thông điệp MD2

So sánh MD1 và MD2:

+Nếu MD1 = MD2 -> chữ ký kiểm tra thành công Thông điệp đảm bảotính toàn vẹn và thực sự xuất phát từ người gửi (do khóa công khai được chứngthực)

Trang 11

+Nếu MD1 <>MD2 -> chữ ký không hợp lệ Thông điệp có thể đã bị sửađổi hoặc không thực sự xuất phát từ người gửi.

2 Giải thuật RSA và hàm băm mật mã

MD5

Nắm được giải thuật RSA trong chữ ký điện tử RSA và hàm băm mật mã MD5

3 Các điểm yếu của chữ ký số RSA Tìm hiều được một vài điểm

yếu của chữ ký số RSA

4 Các dạng tấn công của chữ ký số RSA Hiểu hơn được về các phương

pháp tấn công đối với chữ ký

số RSA

5 Ứng dụng chữ ký và sử dụng giải thuật

RSA

Ứng dụng được chứ ký số RSA và viết được các chươngtrình demo

Nhằm minh họa phần nội dung kiến thức về chữ kí điện tử RSA, nhóm 3 đãphân công cho từng thành viên xây dựng các chương trình ứng dụng web và ứngdụng desktop trên nền các ngôn ngữ lập trình riêng biệt, cụ thể :

+ Phùng Văn Công - Ngôn ngữ lập trình C# (C Sharp)

+ Nguyễn Hữu Đại - Ngôn ngữ lập trình PHP

Trang 12

+ Trương Ngọc Đăng - Ngôn ngữ lập trình Java

+ Nguyễn Thành Đạt - Ngôn ngữ lập trình C++

+ Nguyễn Văn Đạt - Ngôn ngữ lập trình Python

2.2 Nội dung thuật toán

Giải thuật RSA

 Tạo khóa:

Giải thuật RSA có hai khóa:

Khóa công khai (Public key – Kpub ): được công bố rộng rãi cho mọi người và được dùng để thẩm định chữ ký số

Khóa bí mật (Private key – Kpr ): không được chia sẻ được chia cho mọi người

và được dùng để ký chữ ký số

 Các bước tạo khóa:

B1: Đầu vào là hai SNT p và q

Trang 13

Kpr = {D, N}

Hàm ký : M = sig(C) = CD mod N

Hàm kiểm tra: C = ME mod N

2.3 Thiết kế, cài đặt chương trình đề mô thuật toán

2.3.1 Giao diện chương trình đề mô

 Giao diện tạo khóa

Trang 14

 Giao diện ký văn bản

 Giao diện xác nhận chữ ký

Trang 15

 Quá trình tạo khóa

 Quá trình ký

Trang 16

 Quá trình xác thực chữ ký (tài liệu không có gì thay đổi)

 Quá trình xác thực chữ ký (tài liệu có thay đổi)

Trang 17

2.3.2 Cài đặt và triển khai

Giới thiệu cài đặt và chạy chương trình trên ngôn ngữ lập trình C#

Bước 1: Tải và cài đặt phần mềm viết chương trình Microsoft Visual Studio

 Sử dụng thư viện using System.Security.Cryptography;

 Sử dụng thư viện using System.IO;

 Cài COM Interop.Microsoft.Office.Interop.Word

Bước 2: Xây dựng các hàm:

- Hàm EuclideMoRong() sử dụng thuật toán Euclide mở rộng để tìm phần

tử nghịch đảo theo modulo:

      //Thuật toán Euclide mở rộng tìm pt nghịch đả o

        public int EuclideMoRong ( int a , int n // ả^-1 mod n

Trang 18

      }

      if ( ) return 1      // GCD(ả,n) # 1

      if ( >= 0 return y       //ả^-1 mod n = y mod n

      else return tmp ;     //ả^-1 mod n = -y mod n = y+n mod n

        }

 Hàm RSA_mod() : sử dụng thuật toán bình phương và nhân tính lũythừa theo modulo

        // Thuật toán bình phưởng và nhân

        public int RSA_mod ( int mx , int ex , int nx )

      RSA_soN RSA_soP RSA_soQ ;

      So_N Text = RSA_soN ToString ();

      So_N_copy Text RSA_soN ToString ();

      //Tính Phi(n)=(p-1)*(q-1)

      RSA_soPhi_n RSA_soP - 1 RSA_soQ - 1 );

      So_O_le Text = RSA_soPhi_n ToString ();

      //Tính e là một số2 ngâ8u nhiển có giá trị 0< e <phi(n) và

là số2 nguyển tố2 cùng nhảu với Phi(n)

      do

      {

Trang 19

      Random RSA_rd new Random ();

      RSA_soE RSA_rd Next ( , RSA_soPhi_n );

      }

      while ! nguyenToCungNhau ( RSA_soE , RSA_soPhi_n ));

      So_E Text = RSA_soE ToString ();

      //Tính d là nghịch đả o modulảr cu ả e

      RSA_soD EuclideMoRong ( RSA_soE , RSA_soPhi_n );

      So_D Text = RSA_soD ToString ();

        }

Tạo khoá tự động

// Tạo khoá tự động - ĐiểBu kiện

      if ( rb_tdRSA IsChecked == true && rb_tcRSA IsChecked == false )

      while RSA_soP == RSA_soQ || !

RSA_kiemTraNguyenTo ( RSA_soP ) || ! RSA_kiemTraNguyenTo ( RSA_soQ ));

      So_P Text RSA_soP ToString ();

      So_Q Text RSA_soQ ToString ();

      RSA_taoKhoa ();

      F_rsa_d_dau ;

      btn_TaoKhoa IsEnabled false ;

      rb_tcRSA IsEnabled = false ;

      rb_tdRSA IsEnabled = false ;

      }

Tạo khoá tuỳ chọn

if rb_tdRSA IsChecked == false && rb_tcRSA IsChecked == true )

   

if So_P Text == "" || So_Q Text == "" )

    MessageBox Show ( " PhaCi nhập đuC 2 sốG " , " Thống Báo " ,

MessageBoxButton OK, MessageBoxImage Error);

else

{

 try

 

  RSA_soP int Parse ( So_P Text);

  RSA_soQ int Parse ( So_Q Text);

 if ( RSA_soP == RSA_soQ )

 

Trang 20

      MessageBox Show ( Nhập 2 sốG nguyên tốG khác nhau " , Thống Báo " ,

MessageBoxButton OK, MessageBoxImage Error);

      MessageBox Show ( PhaCi nhập sốG nguyên  tốG [q] lớn hơn 1 " ,

" Thống Báo " MessageBoxButton OK, MessageBoxImage Error);

      So_P Text RSA_soP ToString ();

      So_Q Text = RSA_soQ ToString ();

      byte [] F_mh_temp1 = Encoding Unicode GetBytes ( ChuoiVao1 );

      string F_base64 = Convert ToBase64String ( F_mh_temp1 );       // Chuyể n xâu thành mã Unicode

      int [] F_mh_temp2 new int [ F_base64 Length];

      for int i = 0 F_base64 Length; i ++ )

      {

      F_mh_temp2[ i int )F_base64[ ];

      }

      //Mả ng ả chứả các kí tự đã mã hóả

      int [] F_mh_temp3 new int [ F_mh_temp2 Length];

      for int i = 0 F_mh_temp2 Length; i ++ )

      {

      // Xư lý bằng thuật toán bình phưởng và nhân

Trang 21

      F_mh_temp3[ i RSA_mod (F_mh_temp2[ i ], RSA_soD ,

      byte [] Fmh_data = Encoding Unicode GetBytes ( Fmh_str );

      string F_ChuoiVBkemChuky string Empty;

      F_ChuoiVBkemChuky = Convert ToBase64String ( Fmh_data );

      byte [] Fgm_temp1 Convert FromBase64String ( F_ChuoiVao2 );

//convert chuoi -> mảng byte

      string Fgm_giaima Encoding Unicode GetString ( Fgm_temp1 );

      int [] Fgm_temp2 = new int [ Fgm_giaima Length];

      for ( int i ; i < Fgm_giaima Length; ++ )

      {

      Fgm_temp2[ i int )Fgm_giaima[ ];

      }

      //Giả i mã

      int [] Fgm_temp3 = new int [ Fgm_temp2 Length];

      for ( int i ; i < Fgm_temp3 Length; i ++ )

      byte [] F_gm_data2 = Convert FromBase64String ( Fgm_str2 );

      string F_GM_ChuoiVBkemChuky string Empty;

      F_GM_ChuoiVBkemChuky

Encoding Unicode GetString ( F_gm_data2 );

      return F_GM_ChuoiVBkemChuky ;

        }

Trang 22

    MessageBox Show ( " Bạn chưa tạo chữ ký " Thống báo " ,

MessageBoxButton OK, MessageBoxImage Error);

}

else

{

byte mk = byte Parse ( 111 " );

if txt_vanBanKy Text == string Empty)

    MessageBox Show ( " Bạn chưa chọn file thực hiện ký! " Thống báo " ,

MessageBoxButton OK, MessageBoxImage Error);

        FileVBKy_temp1 md5 ComputeHash ( new

UTF8Encoding () GetBytes ( txt_vanBanKy Text));

    string hash = string Empty;

    for ( int i 0 FileVBKy_temp1 Length; i ++ )

    {

        hash += FileVBKy_temp1[ ] ToString ( x2 " );

    }

    txt_hamBam Text = hash ToString ();

    string FileVBKy = Convert ToBase64String ( FileVBKy_temp1 );

    txt_chuKy Text F_MaHoa_RSA ( FileVBKy )

    F_rsa_d_dau = 2

    MessageBox Show ( " Thực hiện ký thành cống ! " , Thống báo " ,

MessageBoxButton OK, MessageBoxImage Information);

    txt_hamBam IsEnabled txt_chuKy IsEnabled false ;

    btn_Ky IsEnabled btn_taiVanBan IsEnabled = false ;

Trang 23

if TextNoiDungVBCanKiemTra Text == string Empty)

    throw new Exception ( " Bạn chưa chọn Tài liệu kiêCm tra chữ ký " );

else if ( TextChuKiXacNhan Text == String Empty)

    throw new Exception ( " Bạn chưa taCi chữ ký lên " );

else if ( E_xacThuc Text == String Empty || N_xacThuc Text ==

    throw new Exception ( " E & N khống chính xác " );

else if ( TextChuKiXacNhan Text != txt_chuKy Text)

    throw new Exception ( " Chữ ký đã bị thay đốCi " );

Trang 24

    }

    string ChuoiVBdiKem = Convert ToBase64String ( FileVBKy_temp2 );

    string VBKemChuKyGM = F_GiaiMa_RSA ( TextChuKiXacNhan Text);

    int result ;

    result string Compare ( VBKemChuKyGM , ChuoiVBdiKem , true )

    if result == 0

    {

        MessageBox Show ( " Tài liệu khống bị thay đốCi! " Thống báo " ,

MessageBoxButton OK, MessageBoxImage Information);

    }

    else

    {

        MessageBox Show ( " Tài liệu đã bị thay đốCi! " , " Thống báo "

MessageBoxButton OK, MessageBoxImage Error);

    MessageBox Show ( " Chưa thực hiện ký và gưCi file ký " Thống báo " ,

MessageBoxButton OK, MessageBoxImage Error);

2.4 Thực hiện bài toán

2.4.1Phân công công việc

Phùng Văn Công Kiến trúc tổng quan về chữ kí số và chữ kí số

RSANguyễn Hữu Đại Giải thuật RSA và hàm băm mật mã MD5

Trương Ngọc Đăng Các điểm yếu của chữ kí số RSA

Nguyễn Thành Đạt Các dạng tấn công

Nguyễn Văn Đạt Ứng dụng chữ kí số RSA

Trang 25

2.4.2 Kiến trúc tổng quan về chữ kí số và chữ kí số RSA (Phùng Văn Công)

a Kiến trúc tổng quan về chữ kí số

Chữ kí số (Digital Signature) là một chuỗi dữ liệu liên kết với một thông

điệp (message) và thực thể tạo ra thông điệp

Giải thuật tạo ra chữ ký số (Digital Signature generation algorithm) là một

phương pháp sinh chữ ký số

Giải thuật kiểm tra chữ ký số (Digital Signature verification algorithm) là

một phương pháp xác minh tính xác thực của chữ ký số, có nghĩa là nóthực sự được tạo ra bởi 1 bên chỉ định

Một hệ chữ ký số (Figital Signature Scheme) bao gồm giải thuật tạo chữ số

và giải thuật kiểm tra chữ kỹ số

- Quá trình tạo chữ ký số (Digital Signature signing process) bao gồm:

+ Giải thuật tạo chữ ký số

+ Phương pháp chuyển dữ liệu thông điệp thành dạng có thể ký được

- Quá trình kiểm tra chữ ký số (Digital signature verification process) :

+ Giải thuật kiểm tra chữ ký số

+ Phương pháp khôi phục dữ liệu từ thông điệp

Hàm băm (Hash Funtion) là hàm toán học chuyển đổi thông điệp (message) có

độ dài bất kỳ (hữu hạn) thành một dãy bít có độ dài cố định (tùy thuộc vào thuậttoán băm) Dãy bít này được gọi là thông điệp rút gọn (message disgest) hay giátrị băm (hash value), đại diện cho thông điệp ban đầu

Ví dụ: Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau:Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể

Trang 26

đọc được Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã

mở sẵn (Khóa công khai) và giữ lại chìa khóa Bob nhận chiếc hộp, cho vào đómột tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉcần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bob gửi chiếc hộplại cho Alice Alice mở hộp với chiều khóa của mình và đọc thông tin trong thư.Trong ví dụ này chiếc hộp với khóa đóng vai tròn khóa công khai, chiếc chìakhóa chính là khóa bí mật Quá trình ký (Bên gửi)

Tính toán chuỗi đại diện (message digest/ hash value) của thông điệp sửdụng một giải thuật băm (Hashing algorithm)

Chuỗi đại diện được ký sử dụng khóa riêng (Priavte key) của người gửi và 1 giảithuật tạo chữ ký (Signature/ Encryption algorithm) Kết quả chữ ký số (Digitalsignature) của thông điệp hay còn gọi là chuỗi đại diện được mã hóa (Encrytedmessage digest)

Thông điệp ban đầu (message) được ghép với chữ ký số (Digital signature) tạothành thông điệp đã được ký (Signed message)

Thông điệp đã được ký (Signed message) được gửi cho người nhận

 Quá trình kiểm tra chữ kí (Bên nhận)

Tách chữ ký số và thông điệp gốc khỏi thông điệp đã ký để xử lý riêng;

Tính toán chuỗi đại diện MD1 (message digest) của thông điệp gốc sử dụng giảithuật băm (là giải thuật sử dụng trong quá trình ký)

Sử dụng khóa công khai (Public key) của người gửi để giải mã chữ ký số ->chuỗi đại diện thông điệp MD2

So sánh MD1 và MD2:

Trang 27

+Nếu MD1 = MD2 -> chữ ký kiểm tra thành công Thông điệp đảm bảotính toàn vẹn và thực sự xuất phát từ người gửi (do khóa công khai được chứngthực).

+Nếu MD1 <>MD2 -> chữ ký không hợp lệ Thông điệp có thể đã bị sửađổi hoặc không thực sự xuất phát từ người gửi

b Kiến trúc chữ kí số RSA

 Quá trình ký (Bên gửi)

Trang 28

Tính toán chuỗi đại diện (message digest/ hash value) của thông điệp sử dụngmột giải thuật băm (Hashing algorithm) MD5

Chuỗi đại diện được ký sử dụng khóa riêng (Priavte key) của người gửi vàgiải thuật tạo chữ ký (Signature/ Encryption algorithm) RSA Kết quả chữ ký số(Digital signature) của thông điệp hay còn gọi là chuỗi đại diện được mã hóa bởigiải thuật RSA (Encryted message digest)

Thông điệp ban đầu (message) được ghép với chữ ký số( Digital signature)tạo thành thông điệp đã được ký (Signed message)

Thông điệp đã được ký (Signed message) được gửi cho người nhận

 Quá trình kiểm tra chữ ký (Bên nhận)

Tách chữ ký số RSA và thông điệp gốc khỏi thông điệp đã ký để xử lý riêng;

Tính toán chuỗi đại diện MD1 (message digest) của thông điệp gốc sử dụng giải thuật băm (là giải thuật sử dụng trong quá trình ký là MD5)

Sử dụng khóa công khai (Public key) của người gửi để giải mã chữ ký số RSA-> chuỗi đại diện thông điệp MD2

Ngày đăng: 14/03/2023, 16:05

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

w