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

XÂY DỰNG CHƯƠNG TRÌNH MÃ HÓA VÀ GIẢI MÃ ELGAMAL an toàn bảo mật

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.71 MB, 55 trang )

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

BÁO CÁO BÀI TẬP LỚN
AN TỒN VÀ BẢO MẬT THƠNG TIN

XÂY DỰNG CHƯƠNG TRÌNH MÃ HĨA
VÀ GIẢI MÃ ELGAMAL
GVHD:
Nhóm - Lớp:
Thành viên:

TS. Nguyễn Bá Nghiễn
14 - 20222IT6001013
Nguyễn Tử Nghĩa
Trần Đại Nghĩa
Nguyễn Thiện Đức Anh
Nguyễn Tiến Đạt

Hà Nội, năm 2023


2

MỤC LỤC
MỤC LỤC..............................................................................................................2
LỜI MỞ ĐẦU........................................................................................................4
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI.............................................................5
1.1 Giới thiệu về hệ mật mã...............................................................................5
1.2 Khóa.............................................................................................................6


1.2.1 Độ dài khóa............................................................................................6
1.2.2 Quản lý khóa cơng khai.........................................................................7
1.2.3 Chứng nhận khố cơng khai..................................................................7
1.2.4 Quản lý khóa phân phối.........................................................................8
1.3 Hệ mật mã cơng khai....................................................................................8
1.4 Thám mã......................................................................................................9
1.5 Giới thiệu chung về hệ mật mã Elgamal....................................................11
1.6 Ưu và nhược điểm của hệ mật mã Elgamal...............................................11
1.7.1 Ưu điểm...............................................................................................11
1.7.2 Nhược điểm.........................................................................................11
1.7. Tính an tồn của hệ mật mã ElGamal......................................................11
CHƯƠNG 2. KẾT QUẢ NGHIÊN CỨU............................................................13
2.1 Giới thiệu....................................................................................................13
2.2 Nội dung thuật tốn....................................................................................13
2.3 Thiết kế, cài đặt chương trình đề mơ thuật tốn.........................................16


3

Giao diện chương trình demo.......................................................................16
2.4.Cài đặt và triển khai....................................................................................19
2.4.1 Giới thiệu công cụ...............................................................................19
2.4.2 Hướng dẫn cài đặt và chạy chương trình demo đã cài đặt...................22
2.5.Thực hiện bài tốn......................................................................................36
2.5.1 Trần Đại Nghĩa – Ngôn ngữ Java........................................................36
2.5.2 Nguyễn Tử Nghĩa – Ngôn ngữ C#......................................................38
2.5.3 Nguyễn Thiện Đức Anh -Ngôn ngữ python........................................41
2.5.4 Nguyễn Tiến Đạt - Ngôn ngữ C++.....................................................47
CHƯƠNG 3: KIẾN THỨC LĨNH HỘI VÀ BÀI HỌC KINH NGHIỆM...........50
3.1 Nội dung đã thực hiện...............................................................................50

3.2 Hướng phát triển.........................................................................................51
KẾT LUẬN..........................................................................................................53
TÀI LIỆU THAM KHẢO....................................................................................54


4

LỜI MỞ ĐẦU
Ngay từ thuở sơ khai của lịch sử, vấn đề bảo mật và mã hóa thơng tin đã tồn
tại và được nghiên cứu suốt chiều dài văn minh nhân loại. Từ xa xưa, trước cả sự
tồn tại của những khái niệm về máy tính sơ khai nhất, con người đã sáng tạo ra
các hệ mật mã cổ điển với bút và giấy, thậm chí là hỗ trợ từ những dụng cụ cơ
khí đơn giản.
Vào đầu thế kỷ 20, sự xuất hiện của các cơ cấu cơ khí và điện cơ, chẳng hạn
như máy Enigma, đã cung cấp những cơ chế phức tạp và hiệu quả hơn cho việc
mật mã hóa. Sự ra đời và phát triển mạnh mẽ của ngành điện tử và máy tính,
cũng như vai trị ngày càng quan trọng của chúng trong đời sống cũng như nền
văn minh làm bùng nổ tầm quan trọng của việc bảo mật và mã hóa thơng tin, nhờ
đó tạo điều kiện để mật mã học có một bước nhảy vọt lớn. Nhờ sự trợ giúp của
máy tính, rất nhiều hệ mật mã hiện đại đã ra đời dựa trên cơ sở đại số Modulo và
các thuật toán logarit rời rạc, đều là những hệ mật mã có tính bảo mật cao vượt
trội. Một trong số các hệ mật mã hiện đại phổ biến nhất vẫn được sử dụng cho
đến ngày hơm nay chính là hệ mã hóa Elgamal.
Dựa trên sự hướng dẫn của giảng viên – TS. Nguyễn Bá Nghiễn, các thành
viên trong nhóm đã tiến hành tìm hiểu về các thuật tốn mã hóa và giải mã
Elgamal. Bên cạnh đó nhóm chúng em đã tiến hành xây dựng các chương trình
demo hệ mã hóa Elgamal bằng nhiều ngơn ngữ khác nhau. Trong suốt q trình
hồn thiện bài tập lớn, nhóm chúng em đã cố gắng tuy nhiên khơng thể tránh
khỏi sai sót nên chúng em rất mong nhận được sự góp ý từ phía thầy để bài tập
lớn của nhóm được hồn thiện hơn.


Chúng em xin chân thành cảm ơn!


5

CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về hệ mật mã
Để đảm bảo việc truyền tin an toà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, ... Một hệ thống mật mã là một hệ bao gồm 5 thành phần (P, C, K, E,
D) thỏa mãn các tính chất:
 P (Plaintext) là tập hợp hữu hạn các bản rõ có thể (hay cịn gọi là khơng
gian bản rõ).
 C (Ciphertext) là tập hợp hữu hạn các bản mã có thể (hay cịn gọi là khơng
gian bản mã).
 K (Key) là tập hợp các bản khóa có thể (hay cịn gọi là khơng gian khóa).
 E (Encryption) là tập hợp các quy tắc mã hóa có thể (hay cịn gọi là khơng
gian các hàm mã hóa).
 D (Decryption) là tập hợp các quy tắc giải mã có thể (hay cịn gọi là khơng
gian các hàm giải mã)
Q trình mã hóa được tiến hành bằng cách áp dụng hàm tóan học E lên
thơng tin P để trở thành thơng tin đã mã hóa C.
Quá trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C
để được thông tin đã giải mã.


6


Q trình mã hóa và giải mã.
1.2 Khóa
1.2.1 Độ dài khóa
Độ an tồn của thuật tốn mã hố cổ điển phụ thuộc vào hai điều đó là độ
dài của thuật toán và độ dài của khoá. Nhưng độ dài của khoá dễ bị lộ hơn. Giả
sử rằng độ dài của thuật tốn là lý tưởng, khó khăn lớn lao này có thể đạt được
trong thực hành. Hồn tồn có nghĩa là khơng có cách nào bẻ gãy được hệ thống
mã hoá trừ khi cố gắng thử với mỗi khoá. Nếu khố dài 8 bits thì có 2 8 = 256
khố có thể. Nếu khố dài 56 bits, thì có 256 khố có thể. Giả sử rằng siêu máy
tính có thể thực hiện 1 triệu phép tính một giây, nó cũng sẽ cần tới 2000 năm để
tìm ra khố thích hợp. Nếu khố dài 64 bits, thì với máy tính tương tự cũng cần
tới xấp xỉ 600,000 năm để tìm ra khố trong số 2

64

khố có thể. Nếu khố dài

128 bits, nó cần tới 1025 năm , trong khi vũ trụ của chúng ta chỉ tồn tại cỡ 1010
năm. Như vậy với 1025 năm có thể là đủ dài. Trước khi bạn gửi đi phát minh hệ
mã hoá với 8 Kbyte độ dài khoá, bạn nên nhớ rằng một nửa khác cũng khơng
kém phần quan trọng đó là thuật tốn phải an tồn nghĩa là khơng có cách nào bẻ
gãy trừ khi tìm được khóa thích hợp. Điều này khơng dễ dàng nhìn thấy được, hệ
thống mã hố nó như một nghệ thuật huyền ảo. Một điểm quan trọng khác là độ
an tồn của hệ thống mã hố nên phụ thuộc vào khố, khơng nên phụ thuộc vào


7

chi tiết của thuật toán. Nếu độ dài của hệ thống mã hoá mới tin rằng trong thực tế
kẻ tấn công không thể biết nội dung bên trong của thuật tốn. Nếu bạn tin rằng

giữ bí mật nội dung của thuật tốn, tận dụng độ an tồn của hệ thống hơn là phân
tích những lý thuyết sở hữu chung thì bạn đã nhầm. Và thật ngây thơ hơn khi
nghĩ rằng một ai đó khơng thể gỡ tung mã nguồn của bạn hoặc đảo ngược lại
thuật toán.
Giả sử rằng một vài kẻ thám mã có thể biết hết tất cả chi tiết về thuật tốn
của bạn. Giả sử rằng họ có rất nhiều bản mã, như họ mong muốn. Giả sử họ có
một khối lượng bản rõ tấn cơng với rất nhiều dữ liệu cần thiết. Thậm chí giả sử
rằng họ có thể lựa chọn bản rõ tấn cơng. Nếu như hệ thống mã hố của có thể
dư thừa độ an tồn trong tất cả mọi mặt, thì bạn đã có đủ độ an tồn bạn cần.
1.2.2 Quản lý khóa cơng khai
Trong thực tế, quản lý khóa là vấn đề khó nhất của an tồn hệ mã hóa. Để
thực hiện thiết kế an tồn thuật tốn mã hóa là một việc là không phải dễ dàng
nhưng để tạo và lưu trữ khóa bí mật là một điều khó hơn. Kẻ thám mã thường
tấn cơng cả hai hệ mã hóa đối xứng và cơng khai qua hệ quản lý khóa của chúng.
Đối với hệ mã hóa cơng khai việc quản lý khóa dễ hơn đối với hệ mã hóa đối
xứng, nhưng nó có vấn đề riêng duy nhất mỗi người chỉ có một khóa cơng khai,
bất kể số người ở trên mạng là bao nhiêu.
1.2.3 Chứng nhận khố cơng khai
Chứng nhận khố cơng khai là xác định khố thuộc về một ai đó, được quản
lý bởi một người đáng tin cậy. Chứng nhận để sử dụng vào việc cản trở sự cố
gắng thay thế một khố này bằng một khố khác.
Nó lưu trữ thông tin về Bob như tên, địa chỉ... và nó được viết bởi ai đó mà
Eva tin tưởng, người đó thường gọi là CA (certifying authority). Bằng cách xác


8

nhận cả khố và thơng tin về Bob. CA xác nhận thơng tin về Bob là đúng và
khố cơng khai thuộc quyền sở hữu của Bob. Eva kiểm tra lại các dấu hiệu và
sau đó cơ ấy có thể sử dụng khố cơng khai, sự an tồn cho Bob và khơng một ai

khác biết.
1.2.4 Quản lý khóa phân phối
Trong một vài trường hợp, trung tâm quản lý khố có thể khơng làm việc.
Có lẽ khơng có một CA (certifying authority) nào mà Eva và Bob tin tưởng. Có
lẽ họ chỉ tin tưởng bạn bè thân thiết hoặc họ không tin tưởng bất cứ ai. Quản lý
khoá phân phối, sử dụng trong những chương trình miền cơng khai, giải quyết
vấn đề này với người giới thiệu (introducers). Người giới thiệu là một trong
những người dùng khác của hệ thống anh ta là người nhận ra khố cơng khai của
bạn anh ta.
1.3. Các hệ mật mã
Hệ mật mã gồm 2 loại:
 Hệ mật mã đối xứng (hay còn gọi là hệ mật mã khóa bí mật): là những hệ
mật dùng chung một khóa cả trong q trình mã hóa và giải mã thơng tin.
Do đó khóa phải được giữ bí mật tuyệt đối. Một số thuật tốn nổi tiếng
trong mã hóa đối xứng là: DES, Triple DES(3DES), RC4, AES, ...
 Hệ mật mã bất đối xứng (hay còn gọi là mật mã khóa cơng khai): Các hệ
mật này dùng một khóa để mã hóa sau đó dùng một khóa khác để giải mã,
nghĩa là khóa để mã hóa và khóa để giải mã là khác nhau.
Các khóa này tạo nên từng cặp chuyển đổi ngược nhau và khơng có khóa
nào có thể suy được ra khóa cịn lại. Khóa dùng để mã hóa có thể cơng khai
nhưng khóa dùng để giải mã thì giữ bí mật. Do đó trong thuật tốn này có hai
loại khóa: khóa dùng để mã hóa được gọi là khóa cơng khai-Public Key cịn


9

khóa để giải mã được gọi là khóa bí mật Private Key. Một số thuật tốn mã hóa
cơng khai nổi tiếng: DiffleHellman, Elgamal, RSA, Rabin...

1.3 Hệ mật mã công khai

Hệ mật mã công khai là bước tiến lớn của ngành mật mã. Hệ mật mã ra đời
đã phá bỏ tư duy cũ về mật mã, đồng thời có nhiều ứng dụng to lớn như: phân
phối khóa, chữ ký số v.v... Mặc dù giải quyết được điểm yếu logic của hệ mật
mã khóa đối xứng nhưng hệ mật mã khóa cơng khai (bất đối xứng) đồng thời
biến điểm mạnh của hệ mật mã khóa bí mật thành điểm yếu của mình. Hệ khóa
cơng khai tính tốn chậm do liên tục xử lý các số lớn (ở RSA là tính tốn với số
ngun tố lớn). Để đảm bảo tính an tồn của hệ mật mã RSA. Một quy luật tự
nhiên là yếu ở đâu thì ta khắc phục ở đó. Để giảm thời gian tính tốn của hệ mật
mã khóa cơng khai, ta đang cổ gắng thực hiện Giảm độ dài khóa đồng thời vẫn
giữ được tính an tịan của hệ mật mã. Đây chính là xu thế của mật mã học hiện
nay.
Xuất phát từ mong muốn tìm hiểu, tạo nên một chương trình demo mã hóa
và giải mã thơng tin và lợi ích mà việc mã hóa mang lại như trên cùng với u
cầu bài tập lớn của mơn an tồn và bảo mật thơng tin nên nhóm 14 chúng em đã
lựa chọn tìm hiểu về hệ mã hóa cơng khai (hệ mật mã bất đối xứng) RSA với
mục đích hiểu rõ phương pháp, cách thức thực hiện mã hóa, giải mã và các thuật
tốn dùng để mã hóa và giải mã thơng tin. Qua đó ta có thể thấy được tầm quan
trọng của hệ mã hóa cơng khai RSA đối với việc truyền tin an tồn và kiểm tra
tính tồn vẹn của thông tin.
1.4 Thám mã


10

Mục tiêu của thám mã (phá mã) là tìm những điểm yếu hoặc khơng an tồn
trong phương thức mật mã hóa. Thám mã có thể được thực hiện bởi những kẻ
tấn công ác ý, nhằm làm hỏng hệ thống; hoặc bởi những người thiết kế ra hệ
thống với ý định đánh giá độ an tồn của hệ thống.
Có rất nhiều loại hình tấn cơng thám mã, và chúng có thể được phân loại
theo nhiều cách khác nhau. Một trong những đặc điểm liên quan là những người

tấn cơng có thể biết và làm những gì để hiểu được thơng tin bí mật. Ví dụ, những
người thám mã chỉ truy cập được bản mã hay khơng? Hay anh ta có biết hay
đốn được một phần nào đó của bản rõ? Hoặc thậm chí: Anh ta có chọn lựa các
bản rõ ngẫu nhiên để mật mã hóa? Các kịch bản này tương ứng với tấn công bản
mã, tấn công biết bản rõ và tấn công chọn lựa bản rõ.
Trong khi công việc thám mã thuần túy sử dụng các điểm yếu trong các
thuật tốn mật mã hóa, những cuộc tấn cơng khác lại dựa trên sự thi hành, được
biết đến như là các tấn công kênh bên. Nếu người thám mã biết lượng thời gian
mà thuật tốn cần để mã hóa một lượng bản rõ nào đó, anh ta có thể sử dụng
phương thức tấn công thời gian để phá mật mã. Người tấn cơng cũng có thể
nghiên cứu các mẫu và độ dài của thông điệp để rút ra các thông tin hữu ích cho
việc phá mã, điều này được biết đến như là thám mã lưu thông.
Nếu như hệ thống mật mã sử dụng khóa xuất phát từ mật khẩu, chúng
có nguy cơ bị tấn cơng kiểu duyệt tồn bộ (brute force), vì kích thước
khơng đủ lớn cũng như thiếu tính ngẫu nhiên của các mật khẩu. Đây là điểm yếu
chung trong các hệ thống mật mã. Đối với các ứng dụng mạng, giao thức thỏa
thuận khóa chứng thực mật khẩu có thể giảm đi một số các giới hạn của các mật
khẩu. Đối với các ứng dụng độc lập, hoặc là các biện pháp an toàn để lưu trữ các
dữ liệu chứa mật khẩu và/hoặc các cụm từ kiểm sốt truy cập thơng thường được
gợi ý nên sử dụng.


11

Thám mã tuyến tính và Thám mã vi phân là các phương pháp chung cho
mật mã hóa khóa đối xứng. Khi mật mã hóa dựa vào các vấn đề tốn học như độ
khó NP, giống như trong trường hợp của thuật tốn khóa bất đối xứng, các
thuật tốn như phân tích ra thừa số ngun tố trở thành cơng cụ tiềm năng cho
thám mã.
Có 6 phương pháp chung để phân tích tấn cơng (Chỉ có bản mã; Biết bản

rõ; Lựa chọn bản rõ; Mô phỏng lựa chọn bản rõ; Lựa chọn bản mã; Lựa chọn
khóa). Mỗi phương pháp trong số chúng giả sử rằng kẻ thám mã hồn tồn có
hiểu biết về thuật toán mã hoá được sử dụng.

1.5 Giới thiệu chung về hệ mật mã Elgamal


Hệ elgamal là 1 hệ mật mã cơng khai.



Hệ elgamal dựa trên bài tốn logarit 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 logarit.
Hệ Elgamal là 1 biến thể của sơ đồ phân phối khóa Diffie – Hellman, được

Tiến sĩ Taher Elgamal đưa ra năm 1985.


So với RSA, hệ Elgamal khơng có nhiều rắc rối về vấn đề bản quyền sử
dụng.

1.6 Ưu và nhược điểm của hệ mật mã Elgamal
1.7.1 Ưu điểm
 Độ phức tạp của bài tốn logirit lớn nên độ an tồn cao.
 Bản mã phụ thuộc vào bản rõ x và giá trị ngẫu nhiên nên từ 1 bản tõ ta có
nhiều bản mã khác nhau.


12


1.7.2 Nhược điểm
 Tốc độ chậm (do phải xử lý số nguyên lớn).
 Dung lượng bộ nhớ dành cho việc lưu trữ khóa cũng lớn.
1.7. Tính an tồn của hệ mật mã ElGamal
Giả sử C có được bản mã, để giải mã được thì C phải đối mặt với bài tốn
sau:
C phải tìm số a sao cho h ≡ g a (mod p) để có thể dùng phương pháp giải mã
như B đã làm; Hoặc C phải tìm số b sao cho y1 ≡ g b (mod p) để có thể tính trực
tiếp hb và từ đó tìm được r.
Cả hai cách tiếp cận nói trên đều địi hỏi C phải giải bài toán logarithm rời
rạc, là một bài toán khó, do đó ElGamal là hệ mã khóa tương đối an toàn.


13

CHƯƠNG 2. KẾT QUẢ NGHIÊN CỨU
2.1 Giới thiệu
- Tên đề tài nghiên cứu: Xây dựng chương trình mã hóa và giải mã Elgamal.
- Các bước thực hiện triển khai đề tài bao gồm:
 Nghiên cứu nội dung các thuật toán.
 Thiết kế và cài đặt chương trình demo thuật tốn
- Hình thức sản phẩm: Sản phẩm ứng dụng.
- Kết quả đạt được : Cài đặt thành cơng chương trình xây dựng mã hóa và giải
mã Elgamal.
2.2 Nội dung thuật tốn
2.2.1. Thuật toán Euclid mở rộng
- Bổ đề bezout: cho 2 số nguyên r0, r1, tồn tại 2 số nguyên khác s và t sao cho :
s.r0+t.r1 = gcd(r0,r1) khi đó t = r1-1 theo mod r0.
- Thuật toán Euclid mở rộng tìm phần tử nghịch đỏa cho 2 số nguyên r 0 , r1. Tìm
r-1 theo mod r0.

 Dùng thuật toán Euclid mở rộng để tim các số nguyên s và t sao cho
s.r0+t.r1 = gcd(r0,r1) = d. (nếu d > 1 thì r-1 mod r0 tồn tại. ngược lại d = 1 tồn
tại)
Để tìm được s , t ta dùng công thức như sau:
s0 = 1

t0 = 0

s1 = 0

t1 = 1

si = s(i – 2) – q(i-1)*s(i-1)

ti = t(i-2) – q(i-1)*t(i-1)


14

Trong đó ta có : với i = 0,1,2,3…
ri = qi+1 * ri+1+ri+2
Thuật toán dừng lại khi phần dư ri+2 = 0.
2.2.2.Thuật tốn bình phương và nhân
- Là thuật tốn nhằm giúp tính nhanh lũy thừa tự nhiên của một số thực hoặc
ngun.
- Mơ tả bải tốn tính lũy thừa
 Phép nâng lên lũy thừa tự nhiên bậc n của số x ( x được gọi là cơ số) được
định nghĩa từ hệ thức sau.
xn = x*x*x*….*xn


với n lớn số phép nhân

- Cơng thức đệ quy: để tính lũy thừa tự nhiên bậc n của x ta thực hiện như sau:
1, Với n = 0 thì xn = 1
2,với n > 0 ta có cơng thức bình phương và nhân
F(n) = (xk)2 khi n = 2k
(xk)2*x khi n = 2k+1
Như vậy phép tính xn được quy về 1 phép bình phương và nhân
Trong giải thuật đệ quy ta xét tính chẵn lẻ của n( liên tục chia n cho 2 nếu
dư 0 là chẵn, dư 1 là lẻ) và liên tục chia n cho 2 lấy phần nguyên cho đế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 ra số nhị phân sau đó tính lũy thừa theo quy tắc bình phương và
nhân.
Để tính xn mod m. Biểu diễn n dưới dạng nhị phân, n = bkbk-1…..Trong đó bi
thuộc {0,1} 0 <= i <= k.


15

2.2.3.Kiểm tra số nguyên tố
Đối với thuật toán mật mã, nó là cần thiết để chọn một hoặc nhiều số nguyên tố
lớn một cách ngẫu nhiên. Vì vậy, chúng ta cần đối mặt với một vấn đề về xác
định một con số lớn có là số ngun tố hay khơng.Trong phần này, ta trình bày
một thuật tốn rất được quan tâm và phổ biến, có thể thấy rằng thuật tốn này
mang lại một số nhất thiết là một số nguyên tố.
2.2.4 Các Bước thực hiện Thuật tốn
Bước 1: Tạo khóa
 Cho p là một số nguyên tố sao cho bài tốn logarit rời rạc trong Z p là khó
giải.
 Chọn phần tử nguyên thủy α ∈ Zp*.

 Chọn a ∈ {2, 3…, p-2} là khóa bí mật thứ nhất (Khóa người nhận, giải
mã)
 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: Xây dựng hàm mã hóa dữ liệu
 Chọn 1 số ngẫu nhiên bí mật k ∈ Zp-1, Ta xác định: k ∈ Zp-1 = {0, 1…,
p-2}.
 Định nghĩa: 𝑒𝐾𝑝(𝑥, 𝑘) = (𝑦1, 𝑦2) với 𝑦1 = 𝛼𝑘 𝑚𝑜𝑑 𝑝 và 𝑦2 = 𝑥𝛽𝑘 𝑚𝑜𝑑 𝑝.
Bước 3: Giải mã
 Với y1, y2 ∈ Zp* ta xác định: 𝑑𝐾𝑝(𝑦1 , 𝑦2) = 𝑦2(𝑦1𝑎 ) −1 𝑚𝑜𝑑 p.
A (gửi)

B (nhận)

Choose private key KpriA=αA Compute KpubA=αaA

Choose private key

mod p = bA

KpriB=αB


16

bB<==B KpubB= αaB mod p = bB
kAB = bBaA = αaA*aB mod p

A==> bA


y = x*kAB mod p

kAB = bAaB = αaB*aA mod
p
A==>y
x = y*kAB-1 mod p

2.3 Thiết kế, cài đặt chương trình đề mơ thuật tốn
Giao diện chương trình demo
* Giao diện đề mô với ngôn ngữ Java

* Giao diện đề mô với ngôn ngữ C#


17

* Giao diện đề mô với ngôn ngữ Python


18

* Giao diện đề mô với ngôn ngữ C++


19

2.4.Cài đặt và triển khai
2.4.1 Giới thiệu công cụ
* NetBeans IDE

NetBeans IDE là một cơng cụ hỗ trợ lập trình viết mã code miễn phí, được
sử dụng chủ yếu cho các lập trình viên phát triển Java.Cơng cụ này có thể hoạt
động tốt với rất nhiều nền tảng hệ điều hành khác nhau như Linux, Windows,
MacOS.
Là một mã nguồn mở cung cấp các tính năng cần thiết nhất nhằm tạo ra
các ứng dụng web, thiết bị di động, desktop. Giao diện dễ sử dụng với người lập
trình. Có đầy đủ các thư viện của ngôn ngữ Java giúp người lập trình sử dụng
các API một cách dễ dàng. Ngồi ra NetBean cịn hỗ trợ người lập trình dễ dàng
thiết kế giao diện với thư viện Java application.
Ưu điểm của công cụ NetBean:
 Nền tảng đa: có thể chạy trên cả Windows và Linux điều hành.
 Không bị hạn chế về các nhà cung cấp công cụ, bao gồm tất cả các nhà
cung cấp phần mềm độc lập (ISV).
 Hỗ trợ sử dụng nhiều cơng cụ lập tình.
 Tạo lợi ích cho tích hợp các mạch cơng cụ bên trong và xuyên qua nhiều
loại nội dung và các nhà cung cấp công cụ khác nhau.
 Tải nhanh hơn sử dụng SWT/Jface.
Nhược điểm của công cụ NetBean
 Phần cứng và máy bộ nhớ cài đặt khá phức tạp.
 Phần mềm có dung lượng khá nặng.
* Visual Studio


20

Microsoft Visual Studio là một mơi trường tích hợp (IDE) từ Microsoft.
Microsoft Visual Studio cịn được gọi là "Trình soạn thảo mã nhiều người sử
dụng nhất thế giới ", được dùng để lập trình C++ và C# là chính. Nó được sử
dụng để phát triển chương trình máy tính cho Microsoft Windows, cũng như các
trang web, các ứng dụng web và các dịch vụ web.

Từ khi ra đời đến nay, Visual Studio đã có rất nhiều các phiên bản sử dụng
khác nhau. Điều đó, giúp cho người dùng có thể lựa chọn được phiên bản tương
thích với dịng máy của mình cũng như cấu hình sử dụng phù hợp nhất.
Ưu điểm của Visual :
 Visual Studio hỗ trợ lập trình trên nhiều ngôn ngữ như: C/C++, C#, F#,
Visual Basic, HTML, CSS, JavaScript.
 Là một công cụ hỗ trợ việc Debug một cách dễ dàng và mạnh mẽ như:
Break Point, xem giá trị của biến trong quá trình chạy, hỗ trợ debug từng
câu lệnh.
 Giao diện Visual Studio rất dễ sử dụng đối với người mới bắt đầu lập
trình.
 Visual Studio hỗ trợ phát triển các ứng dụng: desktop MFC, Windows
Form, Universal App, ứng dụng mobile Windows Phone 8/8.1, Windows
10…
 Visual Studio hỗ trợ xây dựng ứng dụng một cách chuyên nghiệp bằng các
công cụ kéo thả.
 Visual Studio được đông đảo lập trình viên trên thế giới sử dụng.
Nhược điểm của Visual :
 Tuy có giao diện đẹp, nhưng khá khó sử dụng cho người mới học lập
trình. Vì khá nhiều bước thiết lập và cài đặt.
 Vì Visual Studio là một IDE nặng nên cần sử dụng nhiều tài nguyên để
khởi động và vận hành.



×