Professional Documents
Culture Documents
LỜI CẢM ƠN
Lời đầu tiên, chúng em xin chân thành gửi lời chúc sức khỏe và lời cảm ơn sâu
sắc đến với trường Đại học TÔN ĐỨC THẮNG. Chúng em rất lấy làm vui mừng khi
nhà trường đã thêm bộ môn “Nhập môn bảo mật thông tin” vào chương trình giảng
dạy. Đặc biệt hơn hết, chúng em rất lấy lòng biết ơn giảng viên bộ môn đã giảng dạy
hết tâm huyết của mình cho chúng em, là Giảng viên Hồ Thị Thanh Tuyến, người đã
giảng dạy cho chúng em rất nhiều điều hay, truyền đạt những kiến thức siêu bổ ích
không chỉ nằm trong phạm vi bài học mà còn cả trong thực tế. Điều đó đã giúp chúng
em rất nhiều trong công tác hoàn thành bài “báo cáo cuối kỳ”.
Bộ môn “Nhập môn bảo mật thông tin” là môn học rất thú vị, vô cùng bổ ích
và có tính thực tế cao. Cung cấp kiến thức gắn với nhu cầu thực tiễn của sinh viên. Mặc
dù chúng em đã cố gắng, cẩn thận và tỉ mỉ hết mức để hoàn thành bài báo cáo cuối kỳ,
nhưng điều đó cũng không thể tránh khỏi những thiếu sót còn tồn tại trong bài, kính
mong quý thầy xem xét và góp ý để bài báo cáo được hoàn thiện hơn và chúng em
cũng sẽ có kinh nghiệm hơn trong tương lai để tránh những sai sót không đáng có.
Tôi xin cam đoan đây là sản phẩm đồ án của riêng chúng tôi và được sự hướng
dẫn của GV. Hồ Thị Thanh Tuyến. Các nội dung nghiên cứu, kết quả trong đề tài này
là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây. Những số liệu trong
các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu
thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo.
Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệu
của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc.
Nếu phát hiện có bất kỳ sự gian lận nào chúng tôi xin hoàn toàn chịu trách
nhiệm về nội dung đồ án của mình. Trường đại học Tôn Đức Thắng không liên quan
đến những vi phạm tác quyền, bản quyền do chúng tôi gây ra trong quá trình thực hiện
(nếu có).
TP. Hồ Chí Minh, ngày 03 tháng 05 năm 2022
Tác giả
(ký tên và ghi rõ họ tên)
Đỗ Nguyên Khôi
Lê Triệu Vỷ
iii
MỤC LỤC
LỜI CẢM ƠN...................................................................................................................i
PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN..........................................iii
MỤC LỤC........................................................................................................................1
CHƯƠNG 1 – TỔNG QUAN VỀ MÃ HOÁ BẤT ĐỐI XỨNG....................................3
CHƯƠNG 2 – CÁC LOẠI MÃ HOÁ BẤT ĐỐI XỨNG................................................3
2.1. RSA............................................................................................................3
2.1.1. Quá trình tạo khoá bảo mật..............................................................6
2.1.1.1. Tạo public key...................................................................7
2.1.1.2. Tạo private key..................................................................7
2.1.2. Quá trình mã hoá và giải mã............................................................8
2.1.2.1. Quá trình mã hóa................................................................8
2.1.2.2. Quá trình giải mã...............................................................9
2.1.2.3. Ví dụ..................................................................................9
2.1.3. Ưu và nhược điểm của RSA..........................................................10
2.2. DSA..............................................................................................................11
2.2.1. Quá trình tạo khoá của DSA..........................................................11
2.2.1.1. Quá trình tạo private key.................................................12
2.2.1.2. Quá trình tạo public key...................................................12
2.2.2. Quá trình tạo và xác nhận chữ ký của DSA...................................13
2.2.2.1. Quá trình tạo chữ ký........................................................13
2.2.2.2. Quá trình xác nhận chữ ký...............................................14
2.2.3. Ưu và nhược điểm của DSA..........................................................15
2.3. ECDSA - Chữ ký số dựa trên đường cong Elliptic......................................15
2.3.1. Các phép toán trên đường cong Elliptic.........................................16
2.3.1.1. Phép cộng.........................................................................16
2.3.1.2. Phép nhân.........................................................................17
2
RSA là một sản phẩm nghiên cứu với sự hợp lực của 3 nhà khoa học lớn là Adi
Shamir, Len Adleman và Ron Rivest và được công bố lần đầu vào năm 1977 tại Học
viện MIT. Cái tên RSA được lấy từ những chữ cái đầu tiên của 3 nhà khoa học tạo ra
nó gồm có Adi Shamir, Len Adleman và Ron Rivest.
Adi Shamir
5
Len Adleman
Ron Rivest
RSA là một thuật toán hay còn được gọi là hệ mã hóa đối xứng có phạm vi ứng
dụng rộng rãi và phổ biến. Người ta thường sử dụng RSA ở công tác mã hóa hay thiết
6
lập chữ ký điện tử với vai trò là mã hóa khóa công khai. Bất kỳ ai cũng có thể sử dụng
khóa công khai để mã hóa được dữ liệu muốn gửi đi nhưng để giải mã được chúng cần
phải có sự hỗ trợ của khóa bí mật.
2.1.1. Quá trình tạo khoá bảo mật
Khóa của RSA được sinh như sau:
Chọn 2 số nguyên tố p và q. Tính n = pq. Sau này, n sẽ được dùng làm module
cho cả public key và private key.
Tính một số giả nguyên tố bằng phi hàm Carmichael như sau:
λ(n) = BCNN(λ(p), λ(q)) = BCNN (p − 1, q − 1). Giá trị này sẽ được giữ bí
mật.
Chọn một số tự nhiên e trong khoảng (1, λ(n)) sao cho:
ƯCLN (e, λ(n)) = 1, tức là e và λ(n) cùng là nguyên tố và e nằm trong khoảng
giá trị từ 1 đến giá trị của λ (n). Tính toán d sao cho d ≡ 1/e (mod λ(n)) hay viết dễ hiểu
hơn thì de ≡ 1 (mod λ(n)). Số d được gọi là số nghịch đảo modulo của e (theo
modulo mod λ(n)). Public key sẽ là bộ số (n, e), và private key sẽ là bộ số (n, d). Chúng
ta cần giữ private key thật cẩn thận cũng như các số nguyên tố p và q. Bởi từ đây,
chính chúng ta hoặc những người khác có thể tính được giá trị của các khóa khác dễ
dàng.
Ngoài ra, chúng ta có thể tính số giả nguyên tố bằng phi hàm Euler φ(n) = (p −
1)(q − 1) và dùng φ(n) như λ(n). Vì φ(n) là bội của λ(n) nên các số d thỏa mãn de ≡ 1
(mod φ(n)) cũng sẽ thỏa mãn d ≡ 1/e (mod λ(n)).
Tạo số nguyên tố (n = p x q)
Để đảm bảo tính bảo mật cho các khóa, các số nguyên tố trong RSA buộc phải
rất lớn và cách xa nhau (các số càng nhỏ và gần nhau sẽ dễ bị bẻ khóa).
Ví dụ kiểm tra tính nguyên tố cho các số nguyên tố mà chúng ta đã sử dụng 907
và 773:
n=pxq
7
vì p = 907 và q = 773
nên:
n = 907 x 773
n = 701111
Phi hàm Carmichael
Một khi đã có n, chúng ta sẽ sử dụng hàm phi Carmichael để tính λ(n):
λ(n) = lcm (p − 1, q − 1)
Trong đó:
λ(n) là ký hiệu của hàm phi Carmichael
lcm là lowest common multiple (bội số chung nhỏ nhất p và q)
2.1.1.1. Tạo public key
Trong RSA, public key được tạo thành từ số nguyên tố e và module n. Trong đó,
e là giá trị bất kì trong phạm vi từ 1 đến giá trị của λ (n). Vì public key được chia sẻ
một cách công khai, nên việc chọn ngẫu nhiên một số e sẽ không ảnh hưởng đến quá
trình tạo khóa.
Dữ liệu được mã hóa cuối cùng được gọi là ciphertext (c). Chúng ta lấy nó từ
plaintext message (m). Mã hóa tin nhắn public key bằng cách áp dụng công thức sau:
Trong đó:
• m là message ban đầu
• e, n là public key
• c là dữ liệu đã được mã hoá
9
Trong đó:
• d là private key thường là một số rất lớn, tích của 2 số nguyên tố, và được
giữ an toàn tuyệt đối
Từ m có thể lấy lại được bản tin bằng cách đảo ngược padding.
2.1.2.3. Ví dụ
Chúng ta có:
• Khóa công khai là (e, n) = (71.1073) (= khóa mã hóa)
• Khóa riêng là (d, n) = (1079.1073) (= khóa giải mã)
Mã hóa tin nhắn “Xin chào":
Lấy Mã ASCII của mỗi chữ cái và đặt chúng cạnh nhau ta được m =
7269767679
Phải cắt tin nhắn thành các khối chứa ít chữ số hơn n (n có 4 chữ số) vì vậy ta
cắt tin nhắn thành từng khối có 3 chữ số: 726 976 767 900
Sau đó, mã hóa từng khối:
• 72671 mod 1073 = 436
• 97671 mod 1073 = 822
• 76771 mod 1073 = 825
• 90071 mod 1073 = 552
Tin nhắn được mã hóa là 436 822 825 552.
Giải mã:
10
Nhược điểm:
Tốc độ mã hoá chậm hơn nhiều so với mã hoá DES, do vậy trong một vài
trường hợp để tăng tốc độ, người mã hoá sẽ mã hoá tài liệu bằng một phương
pháp mã hoá khác nhưng khoá sẽ được mã hoá bằng RSA.
Nếu người dùng chưa có kênh an toàn để chia sẻ khóa thì khả năng bị tấn
công man in the middle attack (kẻ tấn công lợi dụng quá trình trao đổi khoá
công khai để đánh tráo khóa công khai. Sau khi đã giả mạo được khóa công
11
khai, kẻ tấn công đứng ở giữa 2 bên để nhận các gói tin, giải mã rồi lại mã
hóa với khóa đúng và gửi đến nơi nhận để tránh bị phát hiện.)
Không dùng cho truyền dữ liệu vì tốc độ mã hóa chậm.
2.2. DSA
DSA (Thuật toán chữ ký số) là thuật toán kết hợp các đặc tính đại số của các bài
toán logarit rời rạc và lũy thừa mô-đun để tạo ra chữ ký điện tử cho các ứng dụng khác
nhau. Nó được đề xuất vào năm 1991 bởi NIST (Viện Tiêu chuẩn và Công nghệ Quốc
gia) và được thông qua làm Tiêu chuẩn xử lý thông tin liên bang vào năm 1994.
Trong khi hầu hết các thuật toán tạo chữ ký kỹ thuật số hiện nay đều tuân theo
kỹ thuật điển hình, đó là ký thông báo tóm tắt (băm thông điệp thực tế gửi đi) với khóa
cá nhân được xem là nguồn để tạo dấu vân tay kỹ thuật số, thì DSA tạo ra hai chữ ký
bằng cách kết hợp hai chức năng ký và xác minh phức tạp và duy nhất.
Vậy nên, thuật toán DSA không đơn giản chỉ sử dụng các khóa private và khóa
public khi bắt đầu và kết thúc giao tiếp.
2.2.1. Quá trình tạo khoá của DSA
Việc tạo khóa DSA gồm hai bước:
Chọn các tham số (p, q, g) có thể chia sẻ giữa những người khác nhau trong
cùng hệ thống:
Chọn một hàm băm mã hóa H.
Hiện nay, có nhiều loại hàm băm khác nhau và mang ưu nhược
điểm riêng. Thông dụng nhất phải kể đến hàm SHA-256 là tùy
chọn phổ biến nhất để đáp ứng các yêu cầu bảo mật hiện đại
Chọn kích thước khóa L.
Tham số L được xem là thước đo chính quyết định sức mạnh mã hóa của khóa
với các chuẩn sau:
DSS: L là bội số của 64 và 512 ≤ L ≤1024.
FIPS 186-2: L là 1024.
12
Ví dụ với cặp khóa public được cho sẵn là (p, q, g, y) = (11, 5, 9, 4) và khóa
riêng x = 2, thông điệp m “Hôm nay trời nóng”, H(m) = 10.
14
Cho k = 3
r = (93 mod 11) mod 5 = (729 mod 11) mod 5 = 3 mod 5 = 3
s = 3-1(10 + 2*4) mod 5 = 3-1(16) mod 5 = 2(16) mod 5 = 32 mod 5 = 2
Chữ ký số bao gồm (r, s) = (3, 2). Người gửi truyền chữ ký số đến người nhận
cùng với tin nhắn của họ, “Hôm nay trời nóng”. Họ cũng sẽ chia sẻ các giá trị (p, q, g,
y) với người nhận.
2.2.2.2. Quá trình xác nhận chữ ký
Khi người nhận nhận được chữ ký điện tử bên cạnh tin nhắn, bước đầu tiên là
tìm hàm băm của tin nhắn mà họ nhận được. Ví dụ, H(M) là 10. Sau đó họ có thể xác
minh tính toàn vẹn và tính xác thực của tin nhắn bằng quá trình tính toán sau:
w = s-1 mod q
u1= [H(M) w] mod q
u2= (r * w) mod q
v = [(gu1 yu2) mod p] mod q
Nếu v = r thì chữ ký được xác minh.
Thuật toán này được sử dụng để tạo chữ ký số (digital signature) cho dữ liệu
giúp ta có thể xác minh tính xác thực của dữ liệu mà không ảnh hưởng đến độ bảo mật
của nó. Ta có thể so sánh chữ ký số này với chữ ký ngoài đời thực ở tính áp dụng của
nó, nhưng khác biệt ở chỗ ta có thể giả mạo chữ ký giấy của người khác mà không bị
phát hiện nhưng ECDSA signature thì hoàn toàn không hoặc rất khó.
Ta có một phương trình toán học thể hiện đường cong Elliptic trên đồ thị
như sau:
Chọn một điểm G bất kì nằm trên đường cong trên đồ thị và coi đó là
điểm gốc - Điểm này thường là một điểm cố định trong một lần triển
khai. Theo tiêu chuẩn secp256k1, Bitcoin và Ethereum thường sử dụng
một trong các điểm G được quy định dưới đây
Public key QA có mối quan hệ mật thiết với private key dA và chỉ được tính từ
một chiều tức từ dA tới QA và không thể tính ngược lại. Đó là lí do ta chỉ có thể chia sẻ
public key cho mọi người mà không sợ họ tìm được private key.
Sau đó ta thu được giá trị của điểm x cũng chính là giá trị tham số r cần tìm
(Nếu r = 0 thì ta tính lại từ đầu), tham số r cần có ít nhất 250 bit để đảm bảo được tính
bảo mật.
Để tìm s bước đầu tiên ta cần làm đó là băm dữ liệu cần ký bằng hàm hash
(trong Ethereum sử dụng hàm hash là Keccak256) để tạo ra tham số z. Sau đó ta tính
tham số s theo công thức:
Tiếng Anh
28. Anderson J.E. (1985), The Relative Inefficiency of Quota, The Cheese Case,
American Economic Review, 75(1), pp. 178-90.
29. Borkakati R. P.,Virmani S. S. (1997), Genetics of thermosensitive genic
male sterility in Rice, Euphytica 88, pp. 1-7.
30. Boulding K.E. (1955), Economics Analysis, Hamish Hamilton, London.
31. Burton G. W. (1988), “Cytoplasmic male-sterility in pearl millet (penni-
setum glaucum L.)”, Agronomic Journal 50, pp. 230-231.
32. Central Statistical Oraganisation (1995), Statistical Year Book, Beijing.
33. FAO (1971), Agricultural Commodity Projections (1970-1980), Vol. II.
Rome.
25
PHỤ LỤC
Phần này bao gồm những nội dung cần thiết nhằm minh họa hoặc hỗ trợ cho nội
dung luận văn như số liệu, biểu mẫu, tranh ảnh. . . . nếu sử dụng những câu trả lời cho
một bảng câu hỏi thì bảng câu hỏi mẫu này phải được đưa vào phần Phụ lục ở dạng
nguyên bản đã dùng để điều tra, thăm dò ý kiến; không được tóm tắt hoặc sửa đổi.
Các tính toán mẫu trình bày tóm tắt trong các biểu mẫu cũng cần nêu trong Phụ lục của
luận văn. Phụ lục không được dày hơn phần chính của luận văn