Tải bản đầy đủ (.docx) (40 trang)

Báo cáo và Demo Chương trình BTL An toàn bảo mật mã hóa và giải mã ElGamal

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.36 MB, 40 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
-----🙞🙞🙞🙞🙞-----

BÁO CÁO THỰC NGHIỆM
Học phần: An toàn và bảo mật thơng tin
Chủ đề : Xây dựng chương trình mã hóa và giải mã ElGamal
Giáo viên:

Ths. Phạm Văn Hiệp

Lớp:

20222IT6001012

Nhóm:

Nhóm 8

Thành viên

Ngơ Kim Đơng – 2020604782
Hồng Đức Hiếu – 2020607919
Dương Thế Đồn – 2020603456
Đằng Anh Quân – 2021606314

Hà Nội, Năm 2023


LỜI CẢM ƠN
Báo cáo bài tập lớn với đề tài “Xây dựng chương trình mã hóa và


giải mã ElGamal ” là kết quả của q trình cố gắng khơng ngừng của cả
nhóm, động viên khích lệ, giúp đỡ của giảng viên Phạm Văn Hiệp. Qua trang
viết này chúng em xin gửi lời cảm ơn tới những người đã giúp đỡ chúng em
trong thời gian học tập - nghiên cứu vừa qua.
Chúng em xin tỏ lịng kính trọng và biết ơn sâu sắc đối với thầy Phạm
Văn Hiệp đã trực tiếp tận tình hướng dẫn cũng như cung cấp tài liệu thông tin
khoa học cần thiết cho bài tập này của chúng em.
Cuối cùng chúng em kính chúc thầy dồi dào sức khỏe và thành cơng trong sự
nghiệp cao q.

Nhóm 8 thực hiện

2


MỤC LỤC

Lời nói đầu...............................................................................................................5
CHƯƠNG 1: TỔNG QUAN...................................................................................6
1.1 Tổng quan về An tồn bảo mật thơng tin.............................................6
1.2 Lý do chọn đề tài....................................................................................6
1.3 Nội dung nghiên cứu..............................................................................7
1.4 Các kiến thức cần có...............................................................................8
CHƯƠNG 2: KẾT QUẢ NGHIÊN CỨU..............................................................9
2.1. Nghiên cứu, tìm hiểu hệ mã khóa cơng khai.......................................9
2.1.1 Khái niệm:.........................................................................................9
2.1.2 Cách hoạt động:................................................................................9
2.1.3 Các thuật tốn:..................................................................................9
2.1.4 Ứng dụng:..........................................................................................9
2.2. Nghiên cứu tìm hiểu về mật mã ElGamal.........................................10

2.2.1. Giới thiệu chung về hệ mã ElGamal............................................10
2.2.2. Mã hóa và giải mã ElGamal.........................................................10
2.2.3. Độ an tồn.......................................................................................12
2.2.4. Ưu và nhược điểm của hệ mã ElGamal.......................................12
2.3. Nội dung thuật toán.............................................................................13
2.4. Thiết kế chương trình, cài đặt thuật tốn.........................................15
2.4.1. Ngơn ngữ C++................................................................................15
2.4.2 Ngôn Ngữ C#...................................................................................26
CHƯƠNG 3: KẾT LUẬN VÀ BÀI HỌC KINH NGHIỆM..............................38
3.1. Kiến thức kỹ năng đã học được trong quá trình thực hiện đề tài...38
3.2. Bài học kinh nghiệm............................................................................39
3.3. Đề xuất về tính khả thi của chủ đề nghiên cứu, những thuận lợi,
khó khăn......................................................................................................39

3


Lời nói đầu
Trước đây khi cơng nghệ máy tính chưa phát triển, khi nói đến vấn đề
an tồn bảo mật thông tin, chúng ta thường hay nghĩ đến các phương pháp
nhằm đảm bảo cho thông tin được trao đổi hay cất giữ một cách an tồn và bí
mật, chẳng hạn như các phương pháp: đóng dấu và ký niêm phong một bức
thư để biết rằng lá thư có được chuyển ngun vẹn đến người nhận hay
khơng, dùng mật mã hố thơng điệp để chi có người gửi và người nhận hiểu
được thông điệp, lưu giữ tài liệu trong các két sắt có khố tại nơi được bảo vệ
nghiêm ngặt.
Ngày nay với sự phát triển của khoa học công nghệ, đặc biệt là sự phát
triển của Internet, việc sử dụng máy tính và điện thoại cá nhân trở nên rộng
rãi, dẫn dắt đến càng nhiều thông tin được lưu trữ trên máy tính và gửi đi trên
mạng Internet. Do đó nhu cầu về an tồn và bảo mật thơng tin trên máy tính

càng nhiều và việc sử dụng mật mã mã hoá càng được phổ biến. 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ác nguồn tài
nguyên thông tin. Những vấn đề đảm bảo an tồ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 chúng em đã thực hiện xây dựng chương
trình mã hóa và giải mã ElGamal. 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ên Internet, và nhất là nhờ sự hướng dẫn, chỉ
bảo tận tình của thầy Phạm Văn Hiệp, nhóm chúng em đã hồn thành đề tài
này. Trong q trình hồ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 thầy nhận xét và đóng góp ý kiến để nhóm chúng em có thẻ
hồn thiện bài tập lớn này.
Chúng em xin chân thành cảm ơn!

4


CHƯƠNG 1: TỔNG QUAN
1.1 Tổng quan về An toàn bảo mật thơng tin
An tồn thơng tin là bảo vệ các đặc tính riêng tư (confidentialy),
tồn vẹn (intergrity) và khả dụng (availabity) của thơng tin.
● C: (Confidentialy) bảo vệ tính riêng tư của dữ liệu thông qua các
cơ chế chứng thực và mã hóa, ngăn ngừa những người khơng hợp
lệ sẽ khơng được đọc những thơng tin. Giống như các bì thư khi
phát lương thưởng được dán chữ Confidentialy, chúng ta có thể
hình dung trong mơi trường cơng nghệ thơng tin là một người chưa
đăng nhập vào Domain sẽ không được truy cập những dữ liệu chỉ
chia sẻ cho các Domain User.
● I: (Intergrity) bảo vệ tính tồn vẹn của dữ liệu thơng qua các thuật
tốn RSA, SHA, MD5 ... ngăn ngừa attacker thay đổi các thông tin

nhạy cảm trong quá trình truyền.
● A: (Available) bảo đảm dữ liệu ln ở trong trạng thái sẵn sằng
đáp ứng nhu cầu của người dùng.
● Non-Repudiation: Tính khơng thể chối bỏ, nghĩa là dữ liệu người
nào gửi đi thì họ phải có trách nhiệm với các thơng tin của mình
thơng qua các xác nhận nguồn gốc như chữ kí điện tử.
Để đảm bảo việc truyền tin an tồn và kiểm tra tính tồn vẹn của thơng tin,
người ta thường mã hóa thơng tin trước khi truyền đi bằng các một sổ các hệ
mật như DES, Triple DES (3DES), RC4, AES, RSA, Rabin, Diffle-Hellman,
Elgamal,...
Qua dự án lần này nhóm sinh viên chúng em đã đi sâu tìm hiểu về xây dựng
và phát triển mã hóa giải mã Elgamal , nắm được những kiến thức cơ bản
trong phương pháp mã hóa và giải mã cũng như là các thuật tốn cần thiết
bằng các ngơn ngữ như: Java, Python,..
1.2 Lý do chọn đề tài
Trước đây khi công nghệ máy tính chưa phát triển, khi nói đến vấn đề an toàn
bảo
5


mật thông tin, chúng ta thường hay nghĩ đến các biện pháp nhằm đảm bảo cho
thông tin được trao đổi hay cất giữ một cách an tồn và bí mật, chẳng hạn là
các biện pháp như:
Đóng dấu và ký niêm phong một bức thư để biết rằng lá thư có được chuyển
nguyên vẹn đến người nhận hay không, dùng mật mã mã hóa thơng điệp để
chỉ có người gửi và người nhận hiểu được thông điệp, lưu giữ tài liệu trong
các két sắt có khóa tại nơi được bảo vệ nghiêm ngặt.
Ngày nay với sự phát triển của khoa học công nghệ, đặc biệt là sự phát triển
của Internet, việc sử dụng máy tính và điện thoại cá nhân càng trở lên rộng
rãi, dẫn đến càng nhiều thông tin được lưu trữ trên máy tính và gửi đi trên

mạng Internet. Do đó nhu cầu về an tồn và bảo mật thơng tin trên máy tính
càng nhiều và việc sử dụng mật mã mã hóa càng được phổ biến. Do đó hiện
nay có rất nhiều kiểu mã hóa hiện đại và phức tạp ngày càng được sinh ra và
phát triển hơn.
Chính vì lý do đó và dựa trên các kiến thức đã học. Nhóm em đã chọn đề tài:
“Xây dựng chương trình mã hóa và giải mã ElGamal ” cho bài thi kết thúc
học phần An tồn và bảo mật thơng tin.
1.3 Nội dung nghiên cứu
● Tìm hiểu chung về hệ mã hóa cơng khai
- Khái niệm
- Cách hoạt động
- Các thuật tốn
- Ứng dụng
● Nghiên cứu tìm hiểu về mật mã ElGamal
- Giới thiệu chung về hệ mã ElGamal
- Mã hóa và giải mã ElGamal
- Độ an tồn
- Ưu và nhược điểm của hệ mã ElGamal
● Áp dụng thực hiện xây dựng chương trình với các ngơn ngữ C#, C+
+…

6


1.4 Các kiến thức cần có
🙞 Các kiến thức về thuật toán, định lý:
o Nắm rõ các kiến thức cơ bản về ElGamal
o Nghiên cứu nội dung các thuật toán ( Kiểm tra số nguyên tố,
Euclid tìm ước chung lớn nhất, Bình phương và nhân,…)
🙞 Các kiến thức ngơn ngữ lập trình:

+ C#
+ C++

7


CHƯƠNG 2: KẾT QUẢ NGHIÊN CỨU
2.1. Nghiên cứu, tìm hiểu hệ mã khóa cơng khai
2.1.1 Khái niệm:
- Hệ mã khóa cơng khai, hay cịn được gọi là mã khóa cơng khai, là
một hệ thống mã hóa sử dụng cặp khóa gồm khóa cơng khai và khóa bí
mật. Hệ thống này được phát triển để giải quyết các vấn đề liên quan
đến việc trao đổi thơng tin an tồn trên mạng không đáng tin cậy.
2.1.2 Cách hoạt động:
- Trong hệ mã khóa cơng khai, mỗi người dùng đều có một cặp khóa
gồm khóa cơng khai (public key) và khóa bí mật (private key). Khóa
cơng khai được chia sẻ cơng khai, trong khi khóa bí mật được giữ bí
mật.
- Khi một người dùng muốn gửi thông điệp cho người nhận, người gửi
sẽ sử dụng khóa cơng khai của người nhận để mã hóa thơng điệp. Chỉ
có khóa bí mật tương ứng với khóa cơng khai đó mới có thể giải mã
thơng điệp. Điều này đảm bảo rằng chỉ người nhận thực sự có khóa bí
mật mới có thể đọc được nội dung.
2.1.3 Các thuật tốn:
- Hệ mã khóa cơng khai được xây dựng trên các thuật tốn mã hóa
mạnh như RSA, Diffie-Hellman, ElGamal, và ECC (Elliptic Curve
Cryptography). Các thuật toán này dựa trên tính tốn học phức tạp như
phân tích ngun tố, tính tốn trên đường cong elliptic, hay bài tốn rời
rạc.
2.1.4 Ứng dụng:

- Một trong những ứng dụng quan trọng của hệ mã khóa cơng khai là
trao đổi khóa bí mật an tồn. Thơng qua việc sử dụng mã khóa cơng
khai, người dùng có thể trao đổi khóa bí mật mà không cần giao tiếp
trực tiếp với nhau. Điều này hữu ích trong việc thiết lập kênh liên lạc
an toàn trên mạng.
8


- Hệ mã khóa cơng khai cũng được sử dụng rộng rãi trong các ứng
dụng bảo mật như chứng thực, ký số, và mã hóa thơng tin. Nó cung cấp
một cơ chế bảo mật mạnh mẽ và đáng tin cậy cho việc truyền tải thông
tin trên mạng công cộng.
2.2. Nghiên cứu tìm hiểu về mật mã ElGamal.
2.2.1. Giới thiệu chung về hệ mã ElGamal
Hệ mã ElGamal là một hệ mã khóa cơng khai được đặt theo tên của nhà
tốn học người Mỹ Taher Elgamal. Hệ mã này được sử dụng để mã hóa và
giải mã các thơng điệp bằng cách sử dụng một cặp khóa - khóa cơng khai và
khóa bí mật.
Khóa cơng khai được sử dụng để mã hóa thơng điệp, trong khi khóa bí
mật được sử dụng để giải mã thông điệp. Hệ mã ElGamal cũng được sử dụng
để tạo chữ ký điện tử, cho phép người dùng xác minh tính tồn vẹn và nguồn
gốc của thơng điệp.
Hệ mã ElGamal dựa trên việc tính tốn một phần tử ngun thủy trong
một nhóm số học modulo lớn. Q trình mã hóa và giải mã thơng điệp của hệ
mã ElGamal rất phức tạp, nhưng nó có tính tốn ngẫu nhiên giúp tăng tính
bảo mật của thơng điệp.
Hệ mã ElGamal được coi là một trong những hệ mã khóa cơng khai an
tồn và hiệu quả, và nó đã được sử dụng trong nhiều ứng dụng bảo mật, bao
gồm giao tiếp mật, chữ ký điện tử và trao đổi khóa.
2.2.2. Mã hóa và giải mã ElGamal

⮚ Q trình mã hố và giải mã

9


Hình 1.2: Sơ đồ q trình mã hố và giải mã hệ mã Elgamal
- Bước 1: Tạo khóa
o Cho p là một số nguyên tố sao cho bài toán logarit rời rạc trong Z p là
khó giải.
o Chọn phần tử nguyên thủy α ∈ Zp*.
o Chọn a ∈ {2, 3…, p-2} là khóa bí mật (Khóa người nhận, giải mã)
o Tính β = αa mod p.
Khi đó: Kpub = (p, α, β) gọi là khóa cơng khai, và Kpri = (a) là khóa bí
mật.
- Bước 2: Mã hóa
o Chọn 1 số ngẫu nhiên bí mật k ∈ Zp-1, (k ∈ Zp-1 = {2…, p-2}).
o Định nghĩa: 𝑒𝐾𝑝ub(𝑥, 𝑘) = (𝑦1, 𝑦2) với 𝑦1 = 𝛼𝑘 𝑚𝑜𝑑 𝑝 và 𝑦2 = 𝑥𝛽𝑘 𝑚𝑜𝑑
𝑝.
- Bước 3: Giải mã
o Với y1, y2 ∈ Zp* ta xác định: 𝑑𝐾𝑝rivate(𝑦1 , 𝑦2) = 𝑦2(𝑦1𝑎 ) −1 𝑚𝑜𝑑 p.
⮚ Bài toán logarithm rời rạc:
10


● Logarithm rời rạc là sự kết nối của phép tính logarithm trên trường số
thực vào các nhóm hữu hạn. Ta nhắc lại rằng với hai số thực x, y và cơ
số a > 0, a # 0, nếu ax – y = 0 được gọi là logarithm cơ số a của y
ký hiệu: x = logay
● Logarithm rời rạc là bài tốn khó (chưa biết thuật tốn hiệu quả nào).
Trong khi bài toán ngược luỹ thừa rời rạc lại khơng khó (có thể sử dụng

thuật tốn bình phương và nhân)
2.2.3. Độ an toàn
● Hệ mã Elgamal dựa trên bài tốn logarithm rời rạc. Tính an tồn của nó
tùy thuộc vào độ phức tạp của bài toán logarithm.
● Trong bài toán về hệ mã Elgamal:
o p là số nguyên tố, alpha là phần tử nguyên thuỷ của Z*p
o Bài toán logarithm rời rạc có thể được phát biểu như sau: Tìm
một số mũ a duy nhất (1 < x < p – 1) sao cho beta = alpha a mod
p, với y thuộc Z*p cho trước.
o Bài tốn có thể giải được bởi phương pháp vét cạn (tức là duyệt
tất cả phần tử a) để tìm a thoả mãn. Khi đó độ phức tạp là sẽ là
O(p). Vấn đề đặt ra là nêu p lớn, rất lớn thì để thực hiện phương
pháp này cần thời gian rất lớn -> không khả thi.
● Đánh giá độ an toàn của hệ mã Elgamal:
o Hệ mã Elgamal áp dụng bài toán logarithm rời rạc, chính vì vậy
độ an tồn của hệ mã Elgamal là rất lớn vì bài tốn logarith rời
rạc chưa có phương pháp hiệu quả để giải.
o Với một số nguyên tố p đủ lớn thì thuật tốn Elgamal khơng có
phương pháp thám mã hiệu quả.

2.2.4. Ưu và nhược điểm của hệ mã ElGamal
🙞 Ưu điểm:
● Tính bảo mật cao: Hệ mã ElGamal có tính bảo mật cao, đặc biệt là
trong việc chống lại các cuộc tấn cơng bằng phân tích số học.

11


● Khơng cần sử dụng tính chất ngun tố: Khác với hệ mã RSA, hệ
mã ElGamal không cần sử dụng tính chất nguyên tố của số nguyên

tố lớn để đảm bảo tính bảo mật, giúp giảm độ phức tạp tính toán.
● Khả năng ký và xác thực chữ ký điện tử: Hệ mã ElGamal cũng cung
cấp khả năng ký và xác thực chữ ký điện tử, giúp đảm bảo tính tồn
vẹn của thơng tin.
🙞 Nhược điểm:
● Tốc độ mã hóa và giải mã chậm: Hệ mã ElGamal có tốc độ mã hóa
và giải mã chậm hơn so với một số hệ mã khóa cơng khai khác như
RSA, đặc biệt là khi sử dụng đường cong Elliptic Curve.
● Địi hỏi kích thước khóa lớn hơn: Hệ mã ElGamal địi hỏi kích
thước khóa lớn hơn so với hệ mã khóa cơng khai khác để đảm bảo
tính bảo mật.
● Khó khăn trong việc triển khai: Hệ mã ElGamal có độ phức tạp
trong việc triển khai và tích hợp vào các ứng dụng bảo mật.
2.3. Nội dung thuật toán.
2.3.1. Kiểm tra số nguyên tố
- Bước 1: Kiểm tra xem số đó có nhỏ hơn 2 hay khơng, nếu phải thì nó
khơng phải là số nguyên tố.
- Bước 2: Tìm căn bậc hai của số đó và làm trịn lên đến số ngun gần
nhất. Chẳng hạn nếu số đó là 17 thì căn bậc hai của nó là 4.12, lấy số
nguyên là 5.
- Bước 3: Kiểm tra xem số đó có chia hết cho các số từ 2 đến căn bậc hai
của số đó khơng. Nếu có, thì nó khơng phải là số ngun tố.
- Bước 4: Nếu khơng có số nào từ 2 đến căn bậc hai của số đó chia hết
cho nó, thì nó là số ngun tố.
Ví dụ: Để kiểm tra số 17 có phải là số ngun tố khơng?
● 17 > 2, qua bước 1.
● Căn bậc hai của 17 là 4.12, lấy số nguyên là 4, qua bước 2.
● Kiểm tra xem 17 có chia hết cho các số từ 2 đến 5 không. Nếu 17
không chia hết cho số nào, qua bước 3, ngược lại thì 17 khơng phải
là số nguyên tố.

12


● Vậy 17 là số nguyên tố, qua bước 4.
2.3.2. Thuật tốn Euclid tìm ước chung lớn nhất
Thuật tốn Euclid tìm ước chung lớn nhất của hai số ngun
khơng âm GCD(a, b)
o Nếu a = 0 thì GCD(a, b) = b return b
o Nếu b = 0 thì GCD(a, b) = a return a
o Nếu a # 0, b # 0. Giả sử A > B:
▪ Viết a dưới dạng: a = q * b + r
▪ Theo thuật toán Euclid ta có:
GCD(a, b) = GCD(b, r) = GCD(b, a mod b)

2.3.3. Thuật tốn bình phương và nhân tính x^n mod m
- Giải thuật đệ quy: để tính luỹ thừa tự nhiên bậc n của x như sau:
o Với n = 0 thì x^n = 1
Với n > 0 ta có cơng thức bình phương và nhân
2

f ( n )={( x k ) khi n chẵn ( x k )∗x khi n lẻ

Như vậy phép tính x^n được quy về một số phép tính bình
phương và nhân.
- Giải thuật khơng đệ quy:
o Nhận xét: trong giải thuật đệ quy, có xét tính chẵn lẻ của n
và liên tục chia n cho 2, lấy phần nguyên đến khi n = 0.
Thực chất q trình này chính là tìm các bit của n hay chính
là thực hiện chuyển đổi n sang số nhị phân sau đó tính luỹ
thừa theo quy tắc bình phương và nhân.

13


2.4. Thiết kế chương trình, cài đặt thuật tốn.
2.4.1. Ngơn ngữ C++
2.4.1.1 Giới thiệu ngơn ngữ C++
Ngơn ngữ lập trình C++ là một ngơn ngữ lập trình hướng đối tượng(OOP –
Object-oriented programming) được phát triển bởi Bjarne Stroustrup. C++ là
ngôn ngữ lập trình được phát triển trên nên tảng của ngơn ngữ lập trình C. Do
đó, C++ có song song cả 2 phong cách(style) lập trình hướng cấu trúc giống C
và có thêm phong cách hướng đối tượng. Trong nhiều trường hợp, C++ sử
dụng kết hợp cả 2 style trên. Do đó, nó được xem là một ngơn ngữ “lai
tạo”.Ngơn ngữ C++ là một ngơn ngữ lập trình cấp trung. Bởi vì nó có các tính
chất của cả ngơn ngữ lập trình bậc thấp(Pascal, C…) và ngơn ngữ lập trình
bậc cao(C#, Java, Python…).
Ngơn ngữ lập trình C++ có đi mở rộng là .cpp
2.4.1.2 Hướng dẫn cài đặt và chạy chương trình
● Đối với C++ : Dùng phần mềm Qt để chạy chương trình
Bước 1:Trước tiên chúng ta cài đặt Qt cho máy:
/>
14


Bước 2: Sau khi download về xong. Bạn hãy click đúp chuột vào file setup
vừa download về để chạy qt.
Bước 3: Đây chính là giao diện cũng như một vài option để các bạn có thể lựa
chọn trước khi cài đặt.
Lưu ý : Bạn cần có tài khoản để đăng nhập Qt

Bước 4: Sau khi đăng nhập ,bạn chọn như hình bên dưới

15


Bước 5: Chọn vị trí thư mục mà Qt sẽ được cài đặt

Bước 6: Sau khi chọn xong, cài đặt các phiên bản cần cho chương trình

16


Bước 7: Q trình cài đặt có thể diễn ra hơi lâu .Bạn cần phải đợi một vài
phút

17


Chạy chương trình demo

:

Bước 1: Chọn thư mục demo sau khi giải nén

Bước 2: Nhấn “Run” để chạy chương trình

Bước 3: Đây là giao diện chương trình

18


Thực hiện tạo khóa :

Cách 1: Kích vào “Tự động”, chương trình sẽ tự động sinh ra kết quả số
x ,alpha , p, d,k
Cách 2: Nhập từ bàn phím:
● Nhập thông số nguyên tố p , số x , số alpha, số d, số k để thực hiện quá
trình ký số.
● Ở đây thực hiện bắt lỗi nhập liệu :
✔ Chưa nhập đủ thông tin
✔ Kiểm tra số p đã là số nguyên tố chưa. Hiển thị thông báo p khơng
phải số ngun tố.
Hình ảnh minh họa về một số lỗi nhập liệu:
● Lỗi không nhập số P

19


● Lỗi nhập số P không là số nguyên tố

● Lỗi không nhập số x

20



×