You are on page 1of 63

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG


KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP QUÁ TRÌNH MÔN


BLOCKCHAIN VÀ CÔNG NGHỆ SỔ CÁI PHÂN TÁN

CRYPTOGRAPHY AND TECHNICAL


FOUNDATIONS

Người hướng dẫn: Ths PHẠM THÁI KỲ TRUNG


Người thực hiện: LÊ MINH KHÔI – 52000774
LÂM MINH TRUNG – 52000817
ĐẶNG VĂN VIỆT – 52000821
Lớp : 20050301
Khoá : 24

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023


TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP QUÁ TRÌNH MÔN


BLOCKCHAIN VÀ CÔNG NGHỆ SỔ CÁI PHÂN TÁN

CRYPTOGRAPHY AND TECHNICAL


FOUNDATIONS

Người hướng dẫn: Ths PHẠM THÁI KỲ TRUNG


Người thực hiện: LÊ MINH KHÔI – 52000774
LÂM MINH TRUNG – 52000817
ĐẶNG VĂN VIỆT – 52000821
Lớp : 20050301
Khoá : 24

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023


i

LỜI CẢM ƠN
Lời đầu tiên chúng em xin gửi lời cảm ơn chân thành tới giảng viên Phạm Thái
Kì Trung đã giúp đỡ sinh viên trong kì học vừa qua. Thời gian học vừa rồi chúng em
đã biết thêm rất nhiều kiến thức về tiền điện tử nó vận hành thế nào, qua đó sẽ học hỏi
được kinh nghiệp của những điều đã tiếp thu và vận dụng chúng vào thực tế sau này.
Bài báo cáo được chúng em thực hiện trong vòng 1 tuần. Chúng em đã tìm hiểu
về tập các kiếm thức blockchain và sổ cái. Báo cáo chúng em còn nhiều thiếu sót và
mong nhận được sự chỉ dạy của thầy để rút kinh nghiệm và học hỏi từ đó.
ii

ĐỒ ÁN ĐƯỢC HOÀN THÀNH


TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

Tôi xin cam đoan đây là sản phẩm đồ án của chúng tôi và được sự hướng dẫn
của giảng viên Phạm Thái Kì Trung; 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 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 tôi gây ra trong quá trình thực hiện (nếu có).
TP. Hồ Chí Minh, ngày 27 tháng 10 năm 2023.
Tác giả
(ký tên và ghi rõ họ tên)

Lê Minh Khôi

Đặng Văn Việt

Lâm Minh Trung


iii

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN


Phần xác nhận của GV hướng dẫn
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________

Tp. Hồ Chí Minh, ngày tháng năm


(kí và ghi họ tên)

Phần đánh giá của GV chấm bài


_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________
_________________________________________________________

Tp. Hồ Chí Minh, ngày tháng năm


(kí và ghi họ tên)
iv

TÓM TẮT

Bài báo cáo này tập trung tìm hiểu về các thuật toán mã hóa trong blockchain,
một phần quan trọng của công nghệ blockchain. Bài báo cáo gồm 6 nội dung về 6 thuật
toán mã hóa, lịch sử hình thành, tầm quan trong của chúng trong thời đại hiện nay và
bên cạnh đó là các bước thực hiện như thế nào.
1

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
TÓM TẮT.......................................................................................................................iv
MỤC LỤC........................................................................................................................1
DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ..................................................4
CHƯƠNG 1 – GIỚI THIỆU............................................................................................5
1.1 Đặt vấn đề..................................................................................................5
1.2 Mục tiêu và ý nghĩa của báo cáo................................................................5
CHƯƠNG 2 – NỘI DUNG..............................................................................................6
2.1 Mật mã học................................................................................................6
2.1.1 Khái niệm..........................................................................................6
2.1.2 Mật mã đối xứng...............................................................................7
2.1.2.1 Stream ciphers.....................................................................8
2.1.2.2 Block ciphers......................................................................9
2.1.3 Mật mã bất đối xứng.......................................................................10
2.2 Các thuật toán liên quan đến mã hóa.......................................................12
2.2.1 Thuật toán RSA............................................................................12
2.2.1.1 Lịch sử phát triển (1).........................................................12
2.2.1.2 Định nghĩa thuật toán (2)..................................................13
2.2.1.3 Nguyên tắc hoạt động.......................................................15
2.2.1.4 Tầm quan trọng của thuật toán (3)....................................17
2.2.1.5 Ứng dụng (4).....................................................................18
2.2.2 Thuật toán Triple DES (3DES)....................................................19
2.2.2.1 Lịch sử phát triển..............................................................19
2.2.2.2 Định nghĩa thuật toán (5)..................................................19
2.2.2.3 Nguyên tắc hoạt động.......................................................22
2

2.2.2.4 Tầm quan trọng của thuật toán.........................................24


2.2.2.5 Tầm quan trọng của thuật toán.........................................25
2.2.3 Thuật toán AES...............................................................................25
2.2.3.1 Lịch sử phát triển..............................................................25
2.2.3.2 Định nghĩa thuật toán........................................................26
2.2.3.3 Tầm quan trọng của thuật toán.........................................26
2.2.3.4 Nguyên tắc hoạt động.......................................................27
2.2.3.5 Ứng dụng..........................................................................28
2.2.4 Thuật toán blowfish........................................................................29
2.2.4.1 Lịch sử phát triển..............................................................29
2.2.4.2 Định nghĩa thuật toán........................................................30
2.2.4.3 Tầm quan trọng của thuật toán.........................................30
2.2.4.4 Nguyên tắc hoạt động.......................................................30
2.2.4.5 Ứng dụng..........................................................................31
2.2.5 Thuật toán SHA..............................................................................31
2.2.5.1 Lịch sử phát triển..............................................................31
2.2.5.2 Định nghĩa thuật toán........................................................32
2.2.5.3 Tầm quan trọng của thuật toán.........................................33
2.2.5.4 Nguyên tắc hoạt động.......................................................34
2.2.5.5 Ứng dụng..........................................................................35
2.2.6 Thuật toán ECC...............................................................................36
2.2.6.1 Lịch sử phát triển..............................................................36
2.2.6.2 Định nghĩa thuật toán........................................................38
2.2.6.3 Tầm quan trọng của thuật toán.........................................38
2.2.6.4 Nguyên tắc hoạt động.......................................................40
2.2.6.5 Ứng dụng..........................................................................41
2.3 Công nghệ chữ ký số. (6) (7)...................................................................42
3

2.3.1 Định nghĩa.......................................................................................42


2.3.2 Đặc điểm.........................................................................................43
2.3.3 Công dụng.......................................................................................44
2.3.4 Cách tạo ra chữ ký số......................................................................44
CHƯƠNG 3 – NGHIÊN CỨU THỰC NGHIỆM.........................................................46
3.1 Mật mã đối xứng......................................................................................46
3.1.1 Triple DES (3DES).......................................................................46
3.1.2 AES...............................................................................................47
3.1.3 Blowfish.......................................................................................48
3.2 Mật mã bất đối xứng................................................................................49
3.3 Xác thực chữ ký điện từ với Elliptic Curve (ECDSA)............................51
CHƯƠNG 4: KẾT LUẬN.............................................................................................53
4

DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ


DANH MỤC HÌNH
Hình 2. 1 Cơ chế hoạt động của RSA............................................................................17
Hình 2. 2 Công nghệ chữ ký số......................................................................................19
DANH MỤC BẢNG

Bảng 2. 1 Bảng thiết lập số vòng cần thiết cho độ rộng của khóa.................................27
5

CHƯƠNG 1 – GIỚI THIỆU


1.1 Đặt vấn đề.
Kể từ khi xuất hiện vào năm 2009, công nghệ blockchain đã làm thay đổi cách
chúng ta hiểu về quá trình giao dịch và lưu trữ dữ liệu trực tuyến. Được tạo ra bởi một
người (hoặc nhóm người) ẩn danh dưới bí danh Satoshi Nakamoto, blockchain là một
hệ thống phân tán dùng để ghi lại các giao dịch một cách an toàn và không thể sửa đổi.
Điều này đã thúc đẩy sự phát triển của nhiều ứng dụng mới trong các lĩnh vực như tài
chính, y tế, chuỗi cung ứng, và nhiều lĩnh vực khác.
1.2 Mục tiêu và ý nghĩa của báo cáo
Trong bối cảnh đầy thách thức và cơ hội này, nghiên cứu này tập trung vào việc
nghiên cứu và thảo luận về các kỹ thuật mã hóa trong blockchain. Mã hóa là một yếu tố
cốt lõi trong bảo mật của blockchain, đóng vai trò quan trọng trong việc bảo vệ tính
toàn vẹn của dữ liệu và đảm bảo tính riêng tư của người dùng.
Mục tiêu của bài báo cáo này là:
- Hiểu rõ các nguyên tắc cơ bản của mã hóa trong blockchain.
- Xem xét các phương pháp mã hóa phổ biến được sử dụng trong blockchain.
- Đánh giá tầm quan trọng của mã hóa đối với tính bảo mật của blockchain và các
ứng dụng của nó.
6

CHƯƠNG 2 – NỘI DUNG


2.1 Mật mã học.
2.1.1 Khái niệm
Mật mã học (Cryptography) là một ngành khoa học nghiên cứu về mã hóa và
giải mã thông tin. Mã hóa là quá trình biến thông tin thành dạng không thể đọc được
trừ khi có khóa giải mã phù hợp. Giải mã là quá trình biến thông tin đã được mã hóa
thành dạng có thể đọc được.
Mật mã học có 5 thuộc tính bao gồm:
a) Tính bảo mật: Người sở hữu hoặc các thực thể sở hữu dữ liệu thông tin này ;
b) Tính toàn vẹn: Thông tin , dữ liệu chỉ được sửa đổi do thực thể sở hữu có
quyền truy cập.
c) Tính xác thực: Thuộc tính này cung cấp sự đảm bảo về danh tính của thực
thế (người gửi , người nhận) và tính hợp lệ của văn bản mã hóa , dữ liệu. Có
2 loại xác thực như sau :

Xác thực thực thể Xác thực nguồn gốc của dữ liệu
(Entity authentication) (Data origin authentication)

- Xác thực thực thể dùng để kiểm tra sự - Phương pháp này dùng để kiểm tra nguồn
hiện diện của thực thể trong một phiên gốc của dữ liệu là hợp lệ.
giao dịch. - Xác thực nguồn gốc dữ liệu ngụ ý tính
- Thông thường, người dùng cần tài toàn vẹn của dữ liệu vì nếu nguồn được
khoản bao gồm tên và mật khẩu để truy chứng thực thì dữ liệu không được thay đổi.
cập vào hệ thống được gọi là 1 nhân tố - Các thuật toán thường được sử dụng :
xác thực (single factor authentication). Message Authentication Codes (MACs),
- Cần phải có nhân tố thêm vào để đảm chữ ký điện tử.
bảo tính bảo mật của hệ thống.
7

d) Tính không chối bỏ:


Tính không chối bỏ là sự đảm bảo rằng một thực thể không thể từ chối một cam
kết hoặc hành động trước đó bằng cách cung cấp bằng chứng không thể giả mạo. Đây
là một dịch vụ bảo mật cung cấp bằng chứng không thể giả mạo cho thấy một hành
động cụ thể đã xảy ra.
Đây là một thuộc tính cần thiết đối với các tình huống có thể tranh chấp trong
đó một thực thể đã từ chối các hành động được thực hiện. Ví dụ như đặt hàng trên hệ
thống thương mại điện tử.
e) Tính trách nhiệm
Thuộc tính này đảm bảo rằng các hành động gây ảnh hưởng đến bảo mật của hệ
thống đều có thể tìm được các thực thể gây ra hành động này. Thuộc tính này thường
được cung cấp bởi các bảng logging và cơ chế kiểm toán (audit mechanisms).
2.1.2 Mật mã đối xứng.
Mật mã đối xứng là loại mật mã mà khóa được dùng để mã hóa và giải mã là
như nhau , phương pháp mã hóa này còn được biết đến mật mã chia sẻ khóa mã hóa
(shared key cryptography). Khóa mã hóa cần phải được chấp thuận giữa người gửi và
người nhận trong quá trình trao đổi dữ liệu , do đó phương pháp này còn có thêm tên
gọi khác là mật mã khóa bí mật (secret key cryptography)
8

Có 2 loại mã hóa đối xứng: stream ciphers và block ciphers. Thuật toán Data
Encryption Standard (DES) và Advanced Encryption Standard (AES) thường được sử
dụng trong block ciphers, thuật toán RC4 và A5 thường được sử dụng trong stream
ciphers.
2.1.2.1 Stream ciphers.
Stream ciphers là một thuật toán mã hóa , nó hoạt động dựa trên việc tạo ra một
luồng bit ngẫu nhiên (key stream) và áp dụng lên dữ liệu đầu vào (plain text) để tạo ra
dữ liệu mã hóa.
Có 2 loại stream ciphers: đồng bộ (synchronous) và không đồng
bộ(asynchronous). Trong đó, synchronous stream ciphers có key stream hoàn toàn độc
lập, đối với asynchronous stream ciphers có key stream phụ thuộc vào dữ liệu mã hóa.
Trong thuật toán này , mã hóa và giải mã là 2 hàm số như nhau vì chúng là phép
cộng modulo 2 ( tổng của phép chia 2 lấy dư) hoặc phép toán logic XOR. Các khóa
trong thuật toán này được bảo mật và lấy ngẫu nhiên từ key stream.
9
10

2.1.2.2 Block ciphers.


Block ciphers là thuật toán mã hóa hoạt động bằng cách phân rã dữ liệu thô
thành các khối có độ dài nhất định và áp dụng quá trình mã hóa theo từng khối. Thuật
toán này được thiết kế dựa trên kiến trúc Feistel Cipher. Các thuật toán block ciphers
hiện nay như AES được thiết kế bằng cách sử dụng bằng phép chuyển vị và hoán vị
còn được gọi là substitution-permutation network (SPN).
Mật mã Fiestel dựa trên mạng Fiested, là cấu trúc được phát triển bởi Horst
Feistel. Cấu trúc này dựa trên ý tưởng kết hợp nhiều vòng hoạt động lặp đi lặp lại để
đạt được các thuộc tính mật mã mong muốn được gọi là sự nhầm lẫn và phổ biến.
Mạng Feistel hoạt động bằng cách chia dữ liệu thành hai khối (trái và phải) và xử lý
các khối này thông qua các hàm vòng có khóa.
Sự nhầm lẫn làm cho mối quan hệ giữa văn bản được mã hóa và văn bản gốc trở
nên phức tạp. Điều này đạt được bằng cách thay thế trong thực tế. Ví dụ: 'A' trong văn
bản thuần túy được thay thế bằng 'X' trong văn bản được mã hóa. Trong các thuật toán
mã hóa hiện đại, việc thay thế được thực hiện bằng cách sử dụng các bảng tra cứu gọi
là hộp S (S-boxes). Thuộc tính khuếch tán trải văn bản thuần túy một cách thống kê
trên dữ liệu được mã hóa, đảm bảo rằng ngay cả khi một bit bị thay đổi trong văn bản
đầu vào, nó sẽ dẫn đến thay đổi ít nhất một nửa (trung bình) số bit trong văn bản mật
mã. Cần có sự nhầm lẫn khiến việc tìm kiếm khóa mã hóa trở nên rất khó khăn ngay cả
khi nhiều cặp dữ liệu được mã hóa và giải mã được tạo bằng cùng một khóa. Trong
thực tế, điều này đạt được bằng cách chuyển vị hoặc hoán vị.
11

Một số chế độ hoạt động của block ciphers :


- Chế độ Electronic Codebook (ECB)
- Chế độ Cipher Block Chaining (CBC)
- Chế độ Ciphertext Feedback (CFB)
- Chế độ Output Feedback (OFB)
- Chế độ Counter (CTR)
2.1.3 Mật mã bất đối xứng.
Mật mã bất đối xứng đề cập đến một loại mật mã trong đó khóa được sử dụng
để mã hóa dữ liệu khác với khóa được sử dụng để giải mã dữ liệu. Còn được gọi là mật
mã khóa công khai, nó sử dụng khóa chung (public key) và khóa riêng (private key) để
mã hóa và giải mã dữ liệu tương ứng. Nhiều thuật toán mật mã bất đối xứng khác nhau
đang được sử dụng hiện nay như : RSA, DSA và El-Gammal.
Sơ đồ dưới giải thích cách người gửi mã hóa dữ liệu bằng khóa chung của người
nhận và sau đó được truyền qua mạng tới người nhận. Khi đến được người nhận, nó có
thể được giải mã bằng khóa riêng của người nhận. Bằng cách này, khóa riêng vẫn ở
phía người nhận và không cần chia sẻ khóa để thực hiện mã hóa và giải mã :
12

Một sơ đồ khác cho thấy cách mật mã khóa công khai có thể được sử dụng để
xác minh tính toàn vẹn của tin nhắn mà người nhận nhận được. Trong mô hình này,
người gửi ký dữ liệu bằng khóa riêng của họ và truyền thông báo đến người nhận. Khi
tin nhắn được nhận từ phía người nhận, nó có thể được xác minh tính toàn vẹn bằng
khóa chung của người gửi:

Các cơ chế bảo mật được cung cấp bởi hệ thống mật mã khóa công khai bao
gồm thiết lập khóa, chữ ký số, nhận dạng, mã hóa và giải mã.
Cơ chế thiết lập khóa liên quan đến việc thiết kế các giao thức cho phép thiết lập
khóa trên một kênh không an toàn. Dịch vụ chống chối bỏ, một đặc tính rất được mong
13

muốn trong nhiều trường hợp, có thể được cung cấp bằng chữ ký số. Đôi khi, điều
quan trọng là không chỉ xác thực người dùng mà còn xác định thực thể liên quan đến
giao dịch; Điều này cũng có thể đạt được bằng cách kết hợp chữ ký số và các giao thức
phản hồi thách thức. Cuối cùng, cơ chế mã hóa để cung cấp tính bảo mật cũng có thể
được thực hiện bằng cách sử dụng các hệ thống mật mã khóa công khai, chẳng hạn như
RSA, ECC hoặc El-Gammal.
Thuật toán khóa công khai tính toán chậm hơn so với thuật toán khóa đối xứng.
Do đó, chúng không được sử dụng phổ biến trong việc mã hóa các tệp lớn hoặc dữ liệu
thực tế cần mã hóa. Chúng thường được sử dụng để trao đổi khóa lấy thuật toán đối
xứng và khi khóa được thiết lập an toàn, thuật toán khóa đối xứng có thể được sử dụng
để mã hóa dữ liệu.
2.2 Các thuật toán liên quan đến mã hóa
2.2.1 Thuật toán RSA
2.2.1.1 Lịch sử phát triển (1)
Thuật toán RSA, được đặt theo tên của ba tác giả là Ronald Rivest, Adi Shamir
và Leonard Adleman, được mô tả lần đầu vào năm 1977 tại Học viện Công nghệ
Massachusetts (MIT) ở Hoa Kỳ. Tuy nhiên, trước đó, vào năm 1973, Clifford Cocks,
một nhà toán học người Anh làm việc tại GCHQ, đã đề xuất một thuật toán tương tự.
Tuy thuật toán của Cocks không được công bố rộng rãi và thử nghiệm, nhưng nó đã
đóng góp cho sự phát triển của RSA.
Thuật toán RSA gắn liền với việc sử dụng một bộ hai khóa, gồm khóa công khai
và khóa riêng tư. Khóa công khai được chia sẻ với mọi người, trong khi khóa riêng tư
được giữ bí mật chỉ cho người sở hữu. Khóa công khai được sử dụng để mã hóa thông
tin và khóa riêng tư được sử dụng để giải mã thông tin đã được mã hóa.
Sau khi công bố, thuật toán RSA đã thu hút sự quan tâm và sự chú ý lớn từ cộng
đồng mật mã học. Nó đã được chứng minh là an toàn và khả thi trong việc bảo vệ
14

thông tin quan trọng. RSA đã trở thành một trong những thuật toán mã hóa khóa công
khai phổ biến nhất và được sử dụng rộng rãi trong nhiều ứng dụng thực tế.
Vào năm 1983, MIT đã đăng ký bằng sáng chế thuật toán RSA tại Hoa Kỳ (số
đăng ký 4.405.829). Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký
bảo hộ, sự bảo hộ này ít có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu công trình của
Clifford Cocks đã được công bố trước đó, thì việc đăng ký bằng sáng chế RSA có thể
không thực hiện được.

2.2.1.2 Định nghĩa thuật toán (2)


RSA là một thuật toán mã hóa bất đối xứng, RSA cho phép mã hóa và giải mã
các thông điệp bằng cách sử dụng hai khóa khác nhau: một khóa công khai và một
khóa bí mật.
 Khóa công khai có thể được chia sẻ với bất kỳ ai
 Khóa bí mật chỉ được giữ riêng tư bởi người sở hữu.
 RSA dựa trên tính chất toán học của số nguyên tố lớn và hàm số Euler.
 Cách tạo khóa
Để tạo khóa RSA, chúng ta cần tìm được những bộ 3 e, d và n là số tự nhiên sao cho:

Cần bảo mật cho d sao cho dù biết e, n hay thậm chí cả m cũng không thể tìm ra d
được.
Cụ thể, khóa được sinh như sau:
1) Chọn hai số nguyên tố p và q.
2) Tính n = p * q. Khi đó, n sẽ được dùng làm modulus cho public key và private
key.
3) 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).
15

4) Chọn một số tự nhiên e trong khoảng (1, λ(n)) e thỏa mãn điều kiện ƯCLN(e,
λ(n)) = 1, hay chính là e và λ(n) nguyên tố cùng nhau.
5) Tính toán số d với điều kiện là d ≡ 1/e (mod λ(n)) hay de ≡ 1 (mod λ(n)). Từ đó,
số d được gọi là nghịch đảo modulo của e (theo modulo mod λ(n)).
6) Khóa công khai sẽ là bộ số (n, e), và khóa bí mật sẽ là bộ số (n, d).

 Lưu ý:
Thường chọn e tương đối nhỏ vì nó giúp việc mã hóa và giải mã nhanh hơn. Giá
trị thường dùng nhất là e = 65537. Bên cạnh đó, có thể tính số giả nguyên tố
bằng phi hàm Euler φ(n) = (p − 1)(q − 1) và coi nó như λ(n).
Vì φ(n) là bội của λ(n) nên d cần thỏa mãn điều kiện de ≡ 1 (mod φ(n)) cvà d ≡
1/e (mod λ(n)).
 Mã hóa và giải khóa cho hệ mã hóa RSA
 Đây là bước mã hóa với Khóa công khai (n, e) và giải mã với khóa bí mật (n,
d).
- Nếu có bản rõ M, cần chuyển nó thành số tự nhiên m trong khoảng (0, n) với
điều kiện m, n cùng là nguyên tố. Việc này thường được thực hiện bằng cách
thêm kỹ thuật padding. Tiếp đến là mã hóa m thành c theo công thức:

- Sau đó giá trị c sẽ chuyển cho người nhận.


- Ở phía người nhận, c được giải mã để lấy được m theo công thức:

- Từ m có thể lấy lại được bản tin bằng cách đảo ngược padding
16

2.2.1.3 Nguyên tắc hoạt động.


 Tạo khóa
 Chọn hai số nguyên tố p và q:
p = 61
q = 53
 Tính n = p * q:
n = 61 * 53 = 3233
 Tính số giả nguyên tố bằng phi hàm Carmichael:
λ(n) = BCNN(p - 1, q - 1) = BCNN(60, 52) = 780
 Chọn một số tự nhiên e trong khoảng (1, λ(n)) thỏa mãn ƯCLN(e, λ(n)) = 1:
Chúng ta có thể chọn e = 17
 Tính số d sao cho d ≡ 1/e (mod λ(n)) hay de ≡ 1 (mod λ(n)):
Ta cần tìm d sao cho (17 * d) ≡ 1 (mod 780)
Dùng thuật toán Euclid mở rộng hoặc phương pháp thử và sai, ta tìm được d = 413
Ta tính ra được 2 khóa như sau:
Khóa công khai (public key): (n, e) = (3233, 17)
Khóa bí mật (private key): (n, d) = (3233, 413)
 Mã hóa
 Giả sử chúng ta có các thông số sau:
Khóa công khai: (n, e) = (3233, 17)
Khóa bí mật: (n, d) = (3233, 413)
 Giả sử chúng ta muốn mã hóa một thông điệp M thành một số tự nhiên m, sau
đó chuyển nó thành c để gửi cho người nhận.
o Chọn một thông điệp M: M = "HELLO"
o Chuyển M thành một số tự nhiên m: M được chuyển thành một số tự
nhiên m bằng cách sử dụng kỹ thuật padding hoặc mã hóa ký tự thành số.
17

Trong ví dụ này, giả sử rằng M đã được chuyển thành số tự nhiên m


trước đó.
o Mã hóa m thành c: Sử dụng công thức: c ≡ m^e (mod n). Áp dụng vào ví
dụ này: m = 1234 (số tự nhiên tượng trưng cho M), c = (1234^17) mod
3233 = 855
o Số c được gửi cho người nhận.

 Giải mã:
Người nhận nhận được số c từ người gửi và muốn giải mã để lấy lại thông điệp
ban đầu M.
 Nhận số c: c = 855
 Giải mã c thành m: Sử dụng công thức: c^d ≡ m (mod n)
Áp dụng vào ví dụ này:
 c = 855
 m = (855^413) mod 3233 = 1234
 Số m được chuyển thành thông điệp ban đầu M bằng cách đảo ngược quá
trình padding hoặc chuyển từ số thành ký tự.
Thông điệp "HELLO" đã được mã hóa thành số c là 855 và sau đó được giải mã trở lại
thành thông điệp ban đầu "HELLO" bằng cách sử dụng khóa bí mật (3233, 413) trong
thuật toán RSA.
18

Hình 2. 1 Cơ chế hoạt động của RSA.


(Nguồn: https://bkhost.vn/blog/rsa/)
2.2.1.4 Tầm quan trọng của thuật toán (3)
Mật mã RSA được biết đến với tính bảo mật cao bởi sử dụng các số nguyên tố
lớn, và trong một số trường hợp, các con số liên quan có thể trở nên phức tạp. Việc
nhân hai số nguyên tố là dễ dàng, nhưng việc tìm ra các số nguyên tố ban đầu thông
qua tổng hoặc thừa số lại trở nên không khả thi, đòi hỏi nhiều thời gian thậm chí đối
với các máy tính hiện đại.
Quá trình tạo khóa công khai và khóa bí mật là phần phức tạp nhất trong mật mã
RSA. Hai số nguyên tố lớn p và q được tạo ngẫu nhiên bằng cách sử dụng thuật toán
Rabin-Miller (một thuật toán xác suất để kiểm tra số nguyên tố). Sử dụng hai số
nguyên tố này, ta tính mô đun n = p * q. Giá trị của n được sử dụng cho cả khóa công
khai và khóa bí mật, và độ dài của n được đo bằng bit, còn được gọi là độ dài của khóa.
Khóa công khai bao gồm mô đun n và số mũ công khai e. Thông thường, giá trị
của e được chọn nhỏ để thực hiện quá trình giải mã nhanh chóng. Giá trị phổ biến cho
e là 65537, và không cần phải giữ bí mật vì khóa công khai được chia sẻ với mọi
người. Khóa bí mật bao gồm mô đun n và số mũ riêng d, được tính toán bằng thuật
toán mở rộng Euclide. Thuật toán này tìm phép nhân nghịch đảo của e theo modulo n,
để tạo ra khóa bí mật.
19

2.2.1.5 Ứng dụng (4)


Một trong những ứng dụng quan trọng của RSA là việc sử dụng chữ ký số. Chữ
ký số được coi là một dạng chữ ký điện tử và được sử dụng để xác thực dữ liệu. Nó
đóng vai trò quan trọng trong việc chứng thực và đảm bảo tính toàn vẹn của thông tin.
Quá trình tạo chữ ký số RSA bao gồm sử dụng khóa bí mật để tạo ra chữ ký và
khóa công khai để xác thực chữ ký đó. Khóa bí mật chỉ được biết đến bởi người sở hữu
và không thể bị chối cãi rằng chữ ký không phải do họ tạo ra. Ngược lại, người nhận sử
dụng khóa công khai để xác thực chữ ký và đảm bảo rằng dữ liệu không bị thay đổi và
được gửi bởi người đã tạo chữ ký.
Việc mã hóa toàn bộ dữ liệu để tạo chữ ký số RSA có thể tốn nhiều thời gian.
Tuy nhiên, việc sử dụng hàm băm (hash function) giúp giảm độ dài dữ liệu cần mã hóa,
mà vẫn đảm bảo tính toàn vẹn của dữ liệu. Hàm băm là một loại hàm một chiều, khó
khôi phục lại dữ liệu gốc từ giá trị băm. Điều này giúp tăng hiệu suất và bảo mật của
quá trình tạo chữ ký số RSA.
Chữ ký số RSA có giá trị và ý nghĩa lớn hơn so với chữ ký tay. Mặc dù việc xử
lý và mã hóa chữ ký số này tương đối phức tạp, nhưng nó đem lại độ an toàn cao và
khó để tiết lộ thông tin. Trong các giao dịch điện tử, việc sử dụng chữ ký số RSA giúp
xác định rõ vai trò của người gửi và người nhận, và khó để bất kỳ bên nào từ chối trách
nhiệm của mình. Điều này mang lại sự tin tưởng về giá trị pháp lý của chữ ký số RSA.
20

Hình 2. 2 Công nghệ chữ ký số.


(Nguồn: https://muaban.net/blog/rsa-118289/)
2.2.2 Thuật toán Triple DES (3DES)
2.2.2.1 Lịch sử phát triển
Ban đầu, thuật toán DES (Data Encryption Standard) tiền thân của nó là Lucifer,
được phát triển bởi IBM và chính phủ Mỹ vào những năm 1970. DES là một thuật toán
mã hóa dữ liệu khối được sử dụng rộng rãi và được chọn làm chuẩn mã hóa dữ liệu của
Mỹ. Tuy nhiên, sau một thời gian, kích thước chìa khóa 56 bit của DES trở nên không
đủ an toàn đối với một số tấn công mã hóa tiên tiến.
Để cải thiện sự bảo mật của DES, thuật toán 3DES được đề xuất. 3DES sử dụng
cùng cấu trúc mã hóa DES, nhưng thực hiện nhiều vòng mã hóa DES liên tiếp trên
cùng một khối dữ liệu. Điều này đảm bảo tính bảo mật cao hơn và khả năng chống lại
các tấn công.
2.2.2.2 Định nghĩa thuật toán (5)
Thuật toán 3DES sử dụng ba chìa khóa DES độc lập với kích thước 64bit mỗi
chìa khóa. Toàn bộ chiều dài khóa là 192 bit. Trong quá trình mã hóa, dữ liệu được mã
hóa bằng cách áp dụng ba vòng mã hóa DES lần lượt với ba chìa khóa khác nhau. Quá
21

trình này tạo ra một mô hình mã hóa đa lớp, cung cấp tính bảo mật mạnh hơn so với
DES thông thường.
Thuật toán 3DES sử dụng một nhóm khóa bao gồm 03 khóa DES là K1, K2 và
K3, mỗi khóa có giá trị 56 bít. Thuật toán mã hóa thực hiện như sau:

Quá trình mã hóa


Bản mã= EK3(DK2(EK1(Bản rõ)))
Trước tiên, thực hiện mã hóa DES với khóa K1, tiếp tục giải mã DES với khóa
K2 và cuối cùng mã hóa DES với khóa K3 (E – Encryption: quá trình mã hóa; D -
Decryption: quá trình giải mã; Bản rõ: Dữ liệu đầu vào của phép mã hóa hoặc dữ liệu
đầu ra của phép giải mã; Bản mã: Dữ liệu đầu ra của phép mã hóa hoặc dữ liệu đầu vào
của phép giải mã).
22

Quá trình giải mã


Bản rõ = DK1(EK2(DK3(Bản mã))
Quá trình giải mã với việc giải mã với khóa K3, sau đó mã hóa với khóa K2, và
cuối cùng giải mã với khóa K1..
3DES mã hóa một khối dữ liệu có giá trị 64 bít (bản rõ) thành một khối dữ liệu
mới có giá trị 64 bít (bản mã). Các tiêu chuẩn chỉ ra phương thức lựa chọn nhóm khóa
(K1, K2, K3) như sau:
Lựa chọn 1: K1, K2, K3 là các khóa độc lập
Lựa chọn 2: K1, K2 là hai khóa độc lập và K3 = K1
Lựa chọn 3: K1=K2=K3
Lựa chọn 1 là phương thức mã hóa mạnh nhất với 168 bít khóa độc lập
(168=3x56). Lựa chọn 2 ít bảo mật hơn với 112 bít khóa ( 2x56=112 bít) và lựa chọn 3
chỉ tương đương với việc mã hóa DES 1 lần với 56 bít khóa. Mỗi khóa DES thông
thường được lưu trữ và truyền đi trong 8 byte, vì vậy một nhóm khóa yêu cầu 8 hoặc
16, 24 byte cho việc lưu trữ khóa.
23

2.2.2.3 Nguyên tắc hoạt động


Giả sử chúng ta có một khối dữ liệu đầu vào (bản rõ) và khóa có giá trị là:
- Bản rõ (plaintext): 0x0123456789ABCDEF (16 byte)
Các khóa sau:
- K1: 0xAABBCCDDEEFF0011
- K2: 0x1122334455667788
- K3: 0x8899AABBCCDDEEFF
 Mã hóa
Quá trình mã hóa 3DES sẽ được thực hiện theo công thức:
Bản mã = EK3(DK2(EK1(Bản rõ))).
Bước 1: Mã hóa DES với khóa K1:
Bản mã tạm thời = EK1(Bản rõ)
Bản mã tạm thời = DES_encrypt(K1, Bản rõ)
=> Bản mã tạm thời: 0x6D251E6944B051E0

Bước 2: Giải mã DES với khóa K2:


Bản mã tạm thời = DK2(Bản mã tạm thời)
Bản mã tạm thời = DES_decrypt(K2, Bản mã tạm thời)
=> Bản mã tạm thời: 0x4EE901E5C2D8CA3D

Bước 3: Mã hóa DES với khóa K3:


Bản mã = EK3(Bản mã tạm thời)
Bản mã = DES_encrypt(K3, Bản mã tạm thời)
=> Bản mã: 0xB5AED20077BDD6AA
24

Giải mã:
Bước 1: Giải mã DES với khóa K3:
Bản rõ tạm thời = DK3(Bản mã)
Bản rõ tạm thời = DES_decrypt(K3, Bản mã)
=> Bản rõ tạm thời: 0x4EE901E5C2D8CA3D

Bước 2: Mã hóa DES với khóa K2:


Bản rõ tạm thời = EK2(Bản rõ tạm thời)
Bản rõ tạm thời = DES_encrypt(K2, Bản rõ tạm thời)
=> Bản rõ tạm thời: 0x6D251E6944B051E0
25

Bước 3: Giải mã DES với khóa K1:


Bản rõ = DK1(Bản rõ tạm thời)
Bản rõ = DES_decrypt(K1, Bản rõ tạm thời)
=> Bản rõ: 0x0123456789ABCDEF

2.2.2.4 Tầm quan trọng của thuật toán


Bảo mật cao: 3DES sử dụng ba vòng mã hóa DES tuần tự, giúp tăng cường bảo
mật. Khi sử dụng lựa chọn 1, với 168 bit khóa, thuật toán cung cấp mức bảo mật mạnh
hơn rất nhiều so với DES gốc (56 bit). Nó đã được sử dụng trong nhiều ứng dụng bảo
mật nhạy cảm.
Tương thích ngược với DES: 3DES có khả năng tương thích ngược với DES,
điều này có nghĩa là nó có thể làm việc với hệ thống sử dụng DES truyền thống mà
26

không cần sửa đổi quá trình mã hóa và giải mã. Điều này rất hữu ích trong việc nâng
cấp từ DES sang 3DES mà không làm gián đoạn hoạt động của các hệ thống hiện có.
Độ tin cậy và kiểm soát lỗi: 3DES có khả năng chống lại nhiều cuộc tấn công
mã hóa phổ biến như tấn công brute-force và tấn công theo lời tuyên bố đã biết. Nó
cũng cung cấp khả năng phát hiện lỗi trong quá trình truyền thông tin, nhờ việc sử
dụng cơ chế kiểm soát lỗi và chống lại việc thay đổi dữ liệu.
Khả năng mở rộng: 3DES có thể được mở rộng để sử dụng khóa dài hơn, tăng
cường mức độ bảo mật. Ví dụ, thuật toán 3DES-EDE2 sử dụng 112 bit cho mỗi khóa
DES, tạo ra tổng cộng 168 bit khóa.
2.2.2.5 Tầm quan trọng của thuật toán.
3DES được sử dụng trong nhiều ứng dụng quan trọng như ngân hàng và thanh
toán điện tử, bảo mật dữ liệu trên mạng, bảo mật thông tin trong các ứng dụng di động,
bảo vệ thông tin cá nhân và dữ liệu y tế, và bảo mật trong hệ thống quản lý cơ sở dữ
liệu. Nó đóng vai trò quan trọng trong việc đảm bảo tính bảo mật và bảo vệ thông tin
trong các lĩnh vực nhạy cảm.
2.2.3 Thuật toán AES
2.2.3.1 Lịch sử phát triển
Advanced Encryption Standard (AES) hay còn được gọi là tiêu chuẩn mã hóa
nâng cao theo phương pháp mật mã khối. Với ưu thế bảo mật cao nó đã được chính
phủ Hoa Kỳ lựa chọn để bảo vệ dữ liệu, thông tin cho các tổ chức, doanh nghiệp mà
người dùng.
Các tác vụ của AES được thực hiện ở cả phần cứng và phần mềm trên nhiều
thiết bị để mã hóa dữ liệu nhạy cảm. Sự có mặt của nó đã góp phần bảo đảm an toàn
cho máy tính của chính phủ, an ninh mạng và tạo một rào chắn vững chắc để bảo vệ dữ
liệu.
Năm 1997 AES lầm đầu tiên được công bố bởi Viện Tiêu chuẩn và Công nghệ
Quốc gia (NIST). Tại thời điểm đó Tiêu chuẩn mã hóa dữ liệu DES xuất hiện những lỗ
27

hổng vì thế AES được nghiên cứu và phát triển để thay thế cho nó. NIST đã rất tự tin
khi tuyên bố rằng AES chính là giải pháp tốt nhất để bảo vệ thông tin nhạy cảm cho
chính phủ trong thế kỷ XXI. Đặc biệt so với các tiêu chuẩn khác thì AES có khả năng
thực hiện tác vụ trong môi trường hạn chế như thẻ thông minh.
2.2.3.2 Định nghĩa thuật toán
a) Định nghĩa.
AES là thuật toán mã hóa đối xứng (Symmetric encryption) sử dụng cùng một
khóa (key) cho quá trình mã hóa và giải mã, phương thức này còn được gọi là
single-key encryption.
AES gồm ba mật mã khối AES-128, AES-192, AES-256 tương ứng với độ dài
của khóa là 128, 192, 256-bit. Hơn nữa, có các vòng mã hóa khác nhau cho mỗi kích
thước khóa.
Mặc dù có ba mật mã khối, mỗi một trong số chúng mã hóa và giải mã dữ liệu ở
các bit 128 khối bằng cách sử dụng các độ dài khóa khác nhau (tức là 128, 192 và 256,
như được chỉ định ở trên). Vì vậy, có thể an toàn khi nói rằng mặc dù độ dài của các
khóa có thể khác nhau, nhưng kích thước khối luôn giống nhau (128-bit hoặc 16 byte).
b) AES-128 so với AES-256
Kích thước càng lớn thì cần nhiều tài nguyên hơn, do đó việc sử dụng AES-256
kém hơn so với AES-128.
Ví dụ: Việc sử dụng mã hóa AES-256 trên điện thoại di động có thể tiêu hao pin
nhanh hơn so với việc sử dụng mã hóa AES-128.
Tuy nhiên các khóa AES-256 khó bị tấn công hơn so với các khóa AES-128,
đồng thời cũng như sự phát triển về công nghệ đã nâng cao về sức mạnh tính toán, tăng
tuổi thọ pin nên việc sử dụng khóa mã hóa AES-256 càng trở nên phổ biến.

2.2.3.3 Tầm quan trọng của thuật toán


28

Thực tế là các phương pháp mã hóa được AES thực thi nhanh chóng và dễ hiểu
khiến AES trở thành một lựa chọn phổ biến trong nhiều lĩnh vực khác nhau. AES
không chỉ nhanh và an toàn mà còn dễ triển khai , điều này càng làm tăng thêm tính
phổ biến bẩm sinh của nó.
AES đủ linh hoạt để cho phép bạn kết hợp nó với một số giao thức bảo mật khác
như TKIP, WPA2, WEP, nhưng cũng có các loại mã hóa khác, chẳng hạn như SSL.
Một số ưu điểm chính của AES :
- Hỗ trợ cho việc triển khai ở phần cứng và phần mềm.
- Dễ dàng triển khai bất kể điểm đến (phần cứng triển khai dễ hơn phần mềm).
- Dễ dàng kết hợp với các giao thức bảo mật khác.
- Độ phổ biến cao được sử dụng trong : VPN , trình quản lý mật khẩu , mạng Wi-
Fi , Ứng dụng liên lạc , Thư viện ngôn ngữ lập trình , … , chính phủ Hoa Kỳ đã
xác định thuật toán này như một tiêu chuẩn.

2.2.3.4 Nguyên tắc hoạt động


Trong quá trình xử lý thuật toán AES, một mảng 4 x 4 byte được biết là trạng
thái (state) được sửa đổi bằng nhiều vòng (rounds). Mã hóa đầy đủ cần 10 đến 14
vòng tùy thuộc vào kích thước của khóa.

Độ rộng của khóa Số vòng cần thiết

128-bit 10 vòng

192-bit 12 vòng

256-bit 14 vòng

Bảng 2. 1 Bảng thiết lập số vòng cần thiết cho độ rộng của khóa.
29

Sau khi khởi tạo trạng thái cùng với đầu vào (input) đưa vào quá trình mã hóa ,
4 bước sẽ được thực hiện bao gồm: AddRoundKey , SubBytes , ShiftRows,
MixColumns:
- Bước AddRoundKey: mảng trạng thái được thực hiện phép XOR với một
khóa con (subkey) từ khóa chính.
- Bước SubBytes: thay thế các bytes trong mảng trạng thái dựa trên một bảng
S-box.
- Bước ShiftRows: dịch chuyển từng hàng ngoại trừ hàng đầu tiên trong mảng
trạng thái sang trái theo cách tuần hoàn và tăng dần
- Bước MixColumns: Tất cả các byte được xáo trộn theo kiểu tuyến tính theo
cột.

2.2.3.5 Ứng dụng


VPN: Cách thức hoạt động của VPN xoay quanh việc định tuyến lại lưu lượng
truy cập của bạn, nhưng không phải trước khi mã hóa nó để người khác không thể thấy
nó trong trường hợp họ đang theo dõi kết nối của bạn. Hơn thế nữa, lưu lượng truy cập
cần được giải mã tại điểm thoát của nó, điều này liên quan đến nhu cầu về tiêu chuẩn
30

mã hóa. AES-256 được sử dụng theo mặc định bởi một số nhà cung cấp VPN, bao gồm
NordVPN, Surfshark và ExpressVPN.
Trình quản lý mật khẩu: Trình quản lý mật khẩu hoạt động bằng cách cho phép
bạn đặt tất cả mật khẩu của mình vào chúng và bảo vệ chúng bằng một mật khẩu duy
nhất thông qua phương tiện mã hóa. Nhiều giải pháp phần mềm quản lý mật khẩu khác
nhau trên thị trường đã chọn AES làm tiêu chuẩn mã hóa hoạt động của họ, vì nó dễ
thực hiện, nhanh chóng và an toàn.
Mạng Wi-Fi: Nếu không có mã hóa lưu lượng, những kẻ tấn công có thể chỉ
ngồi bên ngoài mạng không dây của bạn, nắm bắt các gói tin không được mã hóa bằng
bộ điều hợp WiFi thích hợp và theo dõi toàn bộ nơi ở trực tuyến của bạn mà không cần
quan tâm. Rất may, mã hóa AES, thường cùng với các tiêu chuẩn bảo mật bổ sung
(WPA2 là phổ biến nhất vào thời điểm hiện tại) có thể ngăn điều đó xảy ra.
Thư viện ngôn ngữ lập trình: Nếu bạn là một lập trình viên, bạn có thể nên biết
rằng các thư viện của một số ngôn ngữ lập trình nhất định, bao gồm nhưng không giới
hạn ở C++, Java và Python, sử dụng mã hóa AES để giúp bạn bảo vệ dữ liệu và dự án
của mình khỏi bị truy cập trái phép.

2.2.4 Thuật toán blowfish


2.2.4.1 Lịch sử phát triển
Thuật toán Blowfish được Bruce Schneier thiết kế vào năm 1993. Blowfish là
một thuật toán mã hóa khối đối xứng, có nghĩa là nó sử dụng một khóa bí mật để mã
hóa và giải mã dữ liệu.
Schneier bắt đầu phát triển Blowfish sau khi ông thất vọng với các thuật toán
mã hóa hiện có, chẳng hạn như DES và Triple DES. DES là một thuật toán mã hóa cũ,
có thể bị bẻ khóa bằng các phương pháp tấn công hiện tại. Triple DES là một phiên bản
an toàn hơn của DES, nhưng nó vẫn có thể bị bẻ khóa bằng các phương pháp tấn công
tiên tiến.
31

Blowfish được thiết kế để giải quyết những vấn đề này. Blowfish có độ an toàn
cao hơn DES và Triple DES, và nó cũng nhanh hơn nhiều.
Blowfish được phát hành miễn phí cho sử dụng thương mại và phi thương mại.
Điều này đã giúp nó trở nên phổ biến, và nó được sử dụng trong nhiều ứng dụng, chẳng
hạn như mã hóa dữ liệu, bảo vệ dữ liệu lưu trữ và bảo vệ dữ liệu truyền tải.

2.2.4.2 Định nghĩa thuật toán


Thuật toán Blowfish là một thuật toán mã hóa khối đối xứng . Blowfish là một
thuật toán mã hóa mạnh mẽ và an toàn, được sử dụng trong nhiều ứng dụng, chẳng hạn
như mã hóa dữ liệu, bảo vệ dữ liệu lưu trữ và bảo vệ dữ liệu truyền tải.
Blowfish sử dụng một khóa bí mật để mã hóa dữ liệu thành một định dạng
không thể đọc được. Để giải mã dữ liệu đã mã hóa, cần phải sử dụng cùng một khóa bí
mật.
Blowfish có độ an toàn cao, được chứng minh là không thể bẻ khóa bằng các
phương pháp tấn công hiện tại. Blowfish được sử dụng bởi nhiều tổ chức và chính phủ
trên thế giới để bảo vệ dữ liệu nhạy cảm.

2.2.4.3 Tầm quan trọng của thuật toán


An toàn: Blowfish được chứng minh là an toàn trước các phương pháp tấn công
hiện tại. Điều này có nghĩa là dữ liệu được mã hóa bằng Blowfish sẽ rất khó bị bẻ
khóa.
Tốc độ: Blowfish là một thuật toán mã hóa nhanh. Điều này có nghĩa là nó có
thể được sử dụng để mã hóa và giải mã dữ liệu một cách hiệu quả.
Tính linh hoạt: Blowfish có thể được sử dụng trong nhiều ứng dụng khác nhau.
Điều này làm cho nó trở thành một lựa chọn tốt cho các ứng dụng yêu cầu độ bảo mật
cao.
32

2.2.4.4 Nguyên tắc hoạt động


Blowfish hoạt động bằng cách sử dụng một vòng lặp mã hóa để thực hiện quá
trình mã hóa. Vòng lặp mã hóa bao gồm các bước sau:
1) SubBytes: Bước này sử dụng một bảng thay thế để thay thế mỗi byte của dữ
liệu bằng một byte mới được chọn ngẫu nhiên. Điều này làm cho dữ liệu khó
đoán hơn.
2) ShiftRows: Bước này di chuyển các hàng của dữ liệu theo một khoảng nhất
định. Điều này làm cho dữ liệu khó đoán hơn.
3) MixColumns: Bước này trộn các cột của dữ liệu bằng cách sử dụng một
phép toán đại số. Điều này làm cho dữ liệu khó đoán hơn.
4) AddRoundKey: Bước này thêm khóa bí mật vào dữ liệu đã mã hóa. Điều này
làm cho dữ liệu khó đoán hơn.
2.2.4.5 Ứng dụng
Một số ứng dụng của thuật toán Blowfish bao gồm:
Mã hóa dữ liệu: Blowfish được sử dụng để mã hóa dữ liệu lưu trữ trên máy tính,
điện thoại thông minh và các thiết bị khác.
Bảo vệ dữ liệu truyền tải: Blowfish được sử dụng để bảo vệ dữ liệu được truyền
qua Internet, chẳng hạn như dữ liệu ngân hàng và dữ liệu y tế.
Bảo vệ dữ liệu lưu trữ đám mây: Blowfish được sử dụng để bảo vệ dữ liệu được
lưu trữ trên các dịch vụ lưu trữ đám mây, chẳng hạn như Amazon S3 và Microsoft
Azure.
2.2.5 Thuật toán SHA
2.2.5.1 Lịch sử phát triển
Thuật toán SHA (Secure Hash Algorithm) có một lịch sử phát triển dài và có
liên quan đến Cơ quan An ninh Quốc gia Hoa Kỳ (NSA). Dưới đây là một số điểm
quan trọng trong lịch sử phát triển của thuật toán SHA:
33

SHA-0: SHA-0 là phiên bản đầu tiên của thuật toán SHA, được phát triển vào
những năm 1993 bởi NSA và Đại học Stanford. Tuy nhiên, nó sớm bị phát hiện có các
lỗ hổng bảo mật và sau đó bị thay thế bởi SHA-1.
SHA-1: SHA-1 (Secure Hash Algorithm 1) đã trở thành một trong những thuật
toán hash phổ biến nhất trong thập kỷ 2000. Nó được sử dụng rộng rãi trong nhiều ứng
dụng bảo mật, chẳng hạn như chữ ký số và xác thực dữ liệu. Tuy nhiên, sau nhiều năm
nghiên cứu, các lỗ hổng bảo mật trong SHA-1 đã được tìm thấy, và nó đã bị thay thế
bởi các phiên bản mạnh hơn như SHA-256 và SHA-3.
SHA-2: SHA-2 là một tập hợp các thuật toán hash có độ dài khác nhau, bao
gồm SHA-224, SHA-256, SHA-384 và SHA-512. Chúng được giới thiệu bởi NSA vào
năm 2001 và được coi là bền vững hơn và an toàn hơn so với SHA-1. SHA-2 được sử
dụng rộng rãi trong các ứng dụng bảo mật và mã hóa dữ liệu.
SHA-3: SHA-3 là một phiên bản mới của thuật toán SHA, được chọn qua một
quá trình cạnh tranh. Nó đã được công bố vào năm 2015 và được coi là một sự thay thế
cho SHA-2. SHA-3 dựa trên một cơ chế hoàn toàn khác với SHA-2 và được thiết kế để
cung cấp một lớp bảo mật bổ sung trong trường hợp các lỗ hổng không mong muốn
trong SHA-2.
Cơ quan An ninh Quốc gia Hoa Kỳ (NSA) đã đóng một vai trò quan trọng trong
việc phát triển và tiêu chuẩn hóa các phiên bản của thuật toán SHA. Các phiên bản
SHA đã trải qua sự thay đổi và cải tiến liên tục để đảm bảo tính an toàn và độ tin cậy
trong việc bảo vệ thông tin và dữ liệu.

2.2.5.2 Định nghĩa thuật toán


34

Dùng để tạo ra một giá trị băm (hash value) từ dữ liệu đầu vào. Giá trị băm này
thường được sử dụng để đại diện cho dữ liệu gốc mà không tiết lộ thông tin gốc.
35

Thuật toán SHA hoạt động bằng cách chuyển đổi dữ liệu đầu vào thành một
chuỗi ký tự có độ dài cố định, gọi là giá trị băm. Quá trình này bao gồm:
1) Chia dữ liệu đầu vào thành các khối có độ dài cố định.
2) Sử dụng các phép biến đổi và tính toán để xử lý từng khối dữ liệu.
3) Kết hợp kết quả từ các khối để tạo ra giá trị băm cuối cùng.

Kết quả cuối cùng là một chuỗi số học có độ dài cố định, và thậm chí một sự
thay đổi nhỏ trong dữ liệu đầu vào sẽ tạo ra một giá trị băm hoàn toàn khác biệt. Điều
này làm cho thuật toán SHA hữu ích trong việc kiểm tra tính toàn vẹn của dữ liệu và
trong các ứng dụng bảo mật như xác thực và chữ ký số.

2.2.5.3 Tầm quan trọng của thuật toán


Thuật toán SHA (Secure Hash Algorithm) đóng một vai trò quan trọng trong
bảo mật thông tin vì nó cung cấp nhiều lợi ích quan trọng trong việc bảo vệ và xác thực
dữ liệu. Dưới đây là tầm quan trọng của thuật toán SHA và lý do tại sao nó được sử
dụng rộng rãi:
- Bảo mật Dữ liệu: Thuật toán SHA tạo ra giá trị băm từ dữ liệu đầu vào, và
giá trị băm này có độ dài cố định, không thay đổi dù dữ liệu đầu vào có bao
nhiêu lớn. Điều này giúp bảo mật dữ liệu bằng cách che giấu thông tin gốc,
đặc biệt khi lưu trữ mật khẩu và thông tin nhạy cảm.
- Xác thực Dữ liệu: SHA cho phép xác thực tính toàn vẹn của dữ liệu. Bằng
cách so sánh giá trị băm của dữ liệu ban đầu với giá trị băm của dữ liệu sau
khi truyền đi hoặc lưu trữ, người dùng có thể kiểm tra xem dữ liệu đã bị thay
đổi hay không.
- Chữ ký Số: Trong các giao dịch điện tử và trong việc xác thực danh tính,
SHA được sử dụng để tạo chữ ký số. Giá trị băm của một tài liệu được mã
36

hóa bằng khóa riêng tư của người gửi, và người nhận có thể xác minh chữ ký
này bằng cách sử dụng khóa công khai của người gửi.
- Bảo mật Mạng: Trong việc bảo mật mạng, SHA thường được sử dụng để bảo
vệ thông tin trên mạng. Ví dụ, khi bạn truy cập một trang web bảo mật (sử
dụng HTTPS), SHA thường được sử dụng để tạo mã băm cho chứng chỉ số
để xác minh tính toàn vẹn của chứng chỉ và đảm bảo rằng trang web không
bị thay đổi giữa server và máy tính của bạn.
- Bảo mật mật khẩu: SHA thường được sử dụng để lưu trữ mật khẩu của
người dùng. Thay vì lưu trực tiếp mật khẩu, hệ thống lưu giá trị băm của mật
khẩu, điều này làm cho mật khẩu trở nên an toàn hơn đối với tấn công và
việc rò rỉ dữ liệu.

2.2.5.4 Nguyên tắc hoạt động


Thuật toán SHA (Secure Hash Algorithm) chuyển đổi dữ liệu đầu vào thành một
giá trị băm (hash) thông qua một quá trình tính toán phức tạp. Quá trình mã hóa diễn ra
như sau:
1) Chuẩn bị dữ liệu đầu vào: Dữ liệu đầu vào, chẳng hạn như một chuỗi ký
tự, được chia thành các khối cố định (ví dụ: 512-bit cho SHA-512).
2) Khởi tạo giá trị ban đầu (IV - Initial Value): Mỗi phiên bản của SHA có
một giá trị ban đầu cụ thể (IV), một chuỗi số học cố định.
3) Xử lý dữ liệu theo khối: Dữ liệu đầu vào được chia thành các khối, sau
đó mỗi khối được xử lý tuần tự. Mỗi khối được trải qua một loạt các phép
biến đổi và tính toán phức tạp.
4) Kết hợp các kết quả từ các khối dữ liệu: Kết quả từ mỗi khối dữ liệu
được kết hợp với kết quả trước đó bằng cách sử dụng các phép toán logic
và bitwise.
37

5) Kết quả là giá trị băm: Kết quả cuối cùng sau quá trình xử lý là một chuỗi
số học có độ dài cố định, chính là giá trị băm của dữ liệu đầu vào.
Giá trị băm của thuật toán SHA có tính chất độc đáo vì những thay đổi nhỏ
trong dữ liệu đầu vào sẽ dẫn đến sự thay đổi lớn trong giá trị băm. Điều này có nguồn
gốc từ tính chất của hàm băm (hash function) trong thuật toán SHA:
- Phép biến đổi phức tạp: Quá trình xử lý dữ liệu đầu vào thông qua nhiều phép
biến đổi và tính toán phức tạp, bao gồm phép toán bitwise và logic. Những thay
đổi nhỏ trong dữ liệu đầu vào dẫn đến các thay đổi lớn trong quá trình này.
- Kích thước đầu ra cố định: Giá trị băm có một kích thước đầu ra cố định, do đó
bất kỳ dữ liệu đầu vào nào cũng sẽ được ánh xạ thành một chuỗi số học có độ
dài nhất định.
- Khả năng chống va chạm (collision-resistant): Thuật toán SHA được thiết kế để
đảm bảo rằng việc tìm ra hai dữ liệu đầu vào khác nhau nhưng có cùng giá trị
băm là một nhiệm vụ vô cùng khó khăn, điều này đảm bảo tính chất độc đáo của
giá trị băm.

2.2.5.5 Ứng dụng


Bảo mật Mật khẩu (Password Security): SHA thường được sử dụng để lưu trữ
mật khẩu của người dùng. Thay vì lưu trực tiếp mật khẩu, hệ thống lưu giá trị băm của
mật khẩu. Điều này làm cho mật khẩu trở nên an toàn hơn đối với tấn công và việc rò rỉ
dữ liệu. Khi người dùng đăng nhập, hệ thống tạo giá trị băm từ mật khẩu nhập vào và
so sánh với giá trị băm lưu trữ.
Xác thực Dữ liệu (Data Integrity): SHA được sử dụng để kiểm tra tính toàn vẹn
của dữ liệu. Khi dữ liệu được truyền đi hoặc lưu trữ, một giá trị băm được tính toán và
gửi cùng với dữ liệu. Người nhận sau đó tính giá trị băm từ dữ liệu và so sánh với giá
trị băm gửi kèm để kiểm tra xem dữ liệu có bị thay đổi hay không.
38

Chữ ký Số (Digital Signatures): Trong các giao dịch điện tử và xác thực danh
tính, SHA được sử dụng để tạo chữ ký số. Giá trị băm của một tài liệu được mã hóa
bằng khóa riêng tư của người gửi. Người nhận sau đó sử dụng khóa công khai của
người gửi để xác minh tính toàn vẹn của tài liệu và nguồn gốc của chữ ký.
Bảo mật Mạng (Network Security): Trong bảo mật mạng, SHA thường được sử
dụng để bảo vệ thông tin trên mạng. Ví dụ, khi bạn truy cập một trang web bảo mật (sử
dụng HTTPS), SHA thường được sử dụng để tạo mã băm cho chứng chỉ số để xác
minh tính toàn vẹn của chứng chỉ và đảm bảo rằng trang web không bị thay đổi giữa
server và máy tính của bạn.
Bảo mật Dữ liệu (Data Security): SHA được sử dụng để bảo vệ dữ liệu nhạy
cảm, chẳng hạn như tài liệu quan trọng hoặc thông tin cá nhân. Dữ liệu có thể được mã
hóa và sau đó tạo giá trị băm để kiểm tra xem dữ liệu đã bị thay đổi khi giải mã hay
chưa.
Bảo mật Tập tin (File Integrity): SHA được sử dụng để kiểm tra tính toàn vẹn
của tập tin. Một giá trị băm của tập tin ban đầu được tính toán và sau đó so sánh với giá
trị băm khi tập tin được truy cập. Nếu chúng không khớp, điều này có thể chỉ ra rằng
tập tin đã bị sửa đổi hoặc hỏng.
Quản lý Mã Điều Khiển Phiên (Session Control Management): SHA có thể
được sử dụng trong việc tạo mã điều khiển phiên để đảm bảo tính toàn vẹn và an toàn
của phiên làm việc giữa máy chủ và máy khách.
Tóm lại, SHA chơi một vai trò quan trọng trong việc bảo vệ thông tin, kiểm tra
tính toàn vẹn của dữ liệu và xác thực danh tính trong nhiều khía cạnh của thế giới kỹ
thuật số, từ bảo mật mật khẩu đến bảo mật mạng và các ứng dụng khác.

2.2.6 Thuật toán ECC


2.2.6.1 Lịch sử phát triển
39

Những ý tưởng đầu tiên về ECC (1980s): ECC bắt đầu với những ý tưởng đầu
tiên vào cuối những năm 1980, khi các nhà toán học nhận ra rằng đường cong elip có
những tính chất đặc biệt có thể được áp dụng trong bảo mật. Tuy nhiên, vào thời điểm
đó, ECC chưa được phát triển rộng rãi.
Sự phát triển của ECC (1990s): Trong những năm 1990, ECC bắt đầu thu hút sự
chú ý từ cộng đồng bảo mật và được nghiên cứu sâu rộng hơn. Thuật toán ECC được
hiện đại hóa và cải thiện để trở thành một phương pháp mã hóa và xác thực hiệu quả.
Sự phát triển nhanh chóng của công nghệ và sự gia tăng của các ứng dụng trực tuyến
đòi hỏi các phương pháp bảo mật mạnh mẽ và hiệu quả.

Sự công nhận rộng rãi (2000s): ECC trở nên phổ biến hơn trong những năm
2000 và được sử dụng trong nhiều lĩnh vực bảo mật, bao gồm mạng, giao dịch điện tử,
và thiết bị di động. Sự nhận ra rằng ECC có khả năng cung cấp cùng mức bảo mật như
các phương pháp truyền thống (chẳng hạn RSA) nhưng với độ dài khóa ngắn hơn là
một trong những yếu tố thúc đẩy sự phát triển và sử dụng của ECC.
Tiêu chuẩn hóa (2010s): ECC đã trở thành một tiêu chuẩn trong nhiều giao thức
bảo mật và ứng dụng. Ví dụ, ECC được sử dụng trong giao thức SSL/TLS để bảo vệ
truyền thông an toàn qua Internet. Nó cũng được tích hợp vào các tiêu chuẩn mã hóa và
xác thực khác như PGP (Pretty Good Privacy) và SSH (Secure Shell).
Mã nguồn mở và thư viện ECC (hiện đại): ECC có sẵn trong nhiều thư viện mã
nguồn mở và framework bảo mật. Điều này đã giúp đẩy mạnh việc triển khai ECC
trong các ứng dụng và hệ thống. ECC cũng được sử dụng rộng rãi trong blockchain và
tiền điện tử, ví dụ, Bitcoin sử dụng ECC để ký số các giao dịch.
Nhờ vào hiệu suất và khả năng bảo mật cao, ECC đã trở thành một trong những
công nghệ mã hóa và xác thực quan trọng trong thế kỷ 21 và đang tiếp tục được phát
triển và sử dụng rộng rãi trong nhiều lĩnh vực.
40

2.2.6.2 Định nghĩa thuật toán

Thuật toán ECC (Elliptic Curve Cryptography) là một phương pháp mã hóa và
xác thực dựa trên đường cong elliptic. Nó hoạt động bằng cách sử dụng các điểm trên
đường cong để thực hiện các phép toán và tạo ra các khóa mã hóa.

2.2.6.3 Tầm quan trọng của thuật toán


Thuật toán ECC (Elliptic Curve Cryptography) đóng một vai trò quan trọng
trong lĩnh vực bảo mật thông tin và được sử dụng rộng rãi vì các lý do sau:
- Khả năng bảo mật mạnh: ECC cung cấp mức độ bảo mật tương tự hoặc cao
hơn so với các phương pháp mã hóa truyền thống như RSA, nhưng với độ
dài khóa ngắn hơn. Điều này giúp giảm tải cho các hệ thống và thiết bị có tài
nguyên hạn chế.
- Hiệu suất cao: ECC hoạt động nhanh hơn so với nhiều thuật toán khác, đặc
biệt là trong các ứng dụng yêu cầu tính toán nhanh và hiệu suất cao như trên
các thiết bị di động và trong môi trường mạng.
- Kích thước khóa nhỏ: Khóa trong ECC ngắn hơn so với các phương pháp mã
hóa truyền thống như RSA. Điều này làm cho việc trao đổi khóa và lưu trữ
khóa dễ dàng hơn.
41

- Sử dụng trong các tiêu chuẩn bảo mật: ECC đã được tích hợp vào nhiều tiêu
chuẩn bảo mật quốc tế, bao gồm SSL/TLS (Secure Sockets Layer/Transport
Layer Security) sử dụng trong giao tiếp an toàn qua Internet, PGP (Pretty
Good Privacy) cho email an toàn, và SSH (Secure Shell) cho truy cập an
toàn vào máy chủ từ xa.
- Phù hợp cho IoT: Với sự gia tăng của IoT, ECC trở nên phù hợp hơn vì khả
năng mã hóa mạnh mẽ trong một khóa ngắn, dễ dàng tích hợp vào các thiết
bị có tài nguyên hạn chế.
- Tiết kiệm tài nguyên và năng lượng: Trong các thiết bị di động và IoT, việc
sử dụng ECC giúp tiết kiệm tài nguyên máy tính và năng lượng do độ dài
khóa ngắn và hiệu suất cao.
- Bảo mật trong không gian số hóa: Với sự gia tăng của số hóa hóa thông tin
cá nhân và tài sản, ECC giúp bảo vệ dữ liệu trực tuyến và thông tin cá nhân
khỏi sự xâm nhập và lộ ra ngoài.
Tóm lại, ECC có tính chất bảo mật mạnh, hiệu suất cao và độ lý tưởng cho các
ứng dụng có tài nguyên hạn chế, làm cho nó trở thành một công cụ quan trọng trong
việc bảo vệ thông tin và xác thực trong thế giới số hóa ngày nay.
42

2.2.6.4 Nguyên tắc hoạt động

Dưới đây là một sơ lược về cách ECC hoạt động:


1) Chọn đường cong elip: Đầu tiên, bạn phải chọn một đường cong elip
thích hợp. Đây là một đường cong toán học với các tính chất đặc biệt.
2) Chọn một điểm gốc (base point): Một điểm gốc trên đường cong elip
được chọn làm điểm tham chiếu.
3) Tạo khóa công khai và khóa riêng tư: ECC sử dụng cặp khóa, bao gồm
khóa công khai và khóa riêng tư. Khóa công khai có thể được chia sẻ mà
không gây nguy cơ bảo mật, trong khi khóa riêng tư phải được bảo mật.
Khóa công khai được tạo bằng cách nhân điểm gốc với một số nguyên
ngẫu nhiên, trong khi khóa riêng tư được tạo bằng cách nhân khóa công
khai với một số khác.
4) Mã hóa và giải mã: ECC được sử dụng để mã hóa thông tin hoặc ký số
thông tin. Điều này thường liên quan đến việc thực hiện phép toán trên
đường cong elip. Để giải mã, bạn cần sử dụng khóa riêng tư tương ứng
với khóa công khai được sử dụng để mã hóa.
5) Xác thực và chữ ký số: ECC cũng được sử dụng để xác thực tính toàn
vẹn của dữ liệu và tạo chữ ký số. Xác thực sử dụng khóa công khai để
kiểm tra dữ liệu có bị thay đổi hay không. Chữ ký số được tạo bằng cách
ký số thông tin với khóa riêng tư.
Thuật toán ECC được chọn vì nó cung cấp mức bảo mật cao với độ dài khóa
ngắn hơn so với một số phương pháp khác như RSA. Điều này làm cho nó phù hợp cho
các ứng dụng có hạn chế về tài nguyên như thiết bị di động và IoT (Internet of Things).
43

2.2.6.5 Ứng dụng


Elliptic Curve Cryptography (ECC) có nhiều ứng dụng quan trọng trong lĩnh
vực bảo mật và xác thực thông tin. Dưới đây là một số ứng dụng quan trọng của ECC:
- SSL/TLS: ECC được sử dụng trong giao thức SSL/TLS để bảo vệ truyền
thông an toàn qua Internet, chẳng hạn như trang web bảo mật, email bảo mật
và các dịch vụ trực tuyến khác. Sử dụng ECC giúp tăng hiệu suất và bảo mật
trong quá trình thiết lập kết nối an toàn.
- PGP và S/MIME: ECC được sử dụng trong các tiêu chuẩn mã hóa email như
PGP (Pretty Good Privacy) và S/MIME (Secure/Multipurpose Internet Mail
Extensions) để bảo vệ email và thông tin cá nhân trên email.
- SSH: Trong giao thức Secure Shell (SSH) dùng cho truy cập an toàn vào
máy chủ từ xa, ECC được sử dụng để thiết lập kết nối an toàn và xác minh
danh tính người dùng.
- Chữ ký số: ECC được sử dụng để tạo chữ ký số trong các ứng dụng như xác
minh danh tính trong giao dịch điện tử và vận chuyển tài liệu quan trọng.
- Blockchain và tiền điện tử: ECC đóng vai trò quan trọng trong công nghệ
blockchain và tiền điện tử. Ví dụ, Bitcoin sử dụng ECC để tạo và kiểm tra
chữ ký số trong quá trình giao dịch, đảm bảo tính toàn vẹn và an toàn của hệ
thống.

- Bảo mật IoT: Với sự gia tăng của IoT (Internet of Things), ECC trở thành
một phương pháp bảo mật hiệu quả trong các thiết bị kết nối mạng, bao gồm
các cảm biến thông minh, máy tính trong ô tô, và các thiết bị nhúng khác.
- Xác thực trong trình duyệt web: ECC được sử dụng để xác thực danh tính
các trang web bảo mật thông qua chứng chỉ số. Điều này đảm bảo rằng bạn
kết nối đúng trang web và không gặp nguy cơ bị giả mạo.
44

- Bảo mật dữ liệu cá nhân: ECC cung cấp cơ hội bảo mật dữ liệu cá nhân
trong các ứng dụng và dịch vụ trực tuyến, đặc biệt là trong việc lưu trữ và
truyền tải thông tin cá nhân.
- Bảo mật mạng không dây: ECC cũng được sử dụng để bảo mật mạng không
dây, chẳng hạn như mạng Wi-Fi an toàn.
Tóm lại, ECC đóng vai trò quan trọng trong việc bảo vệ thông tin và xác thực
danh tính trong nhiều lĩnh vực của thế giới kỹ thuật số, từ truyền thông an toàn qua
Internet đến IoT và tiền điện tử.

2.3 Công nghệ chữ ký số. (6) (7)


2.3.1 Định nghĩa
Chữ ký số là một dạng chữ ký điện tử được tạo ra bằng sự biến đổi một thông
điệp dữ liệu sử dụng hệ thống mật mã không đối xứng, theo đó, người có được thông
điệp dữ liệu ban đầu và khóa công khai của người ký có thể xác định được chính xác:
Việc biến đổi nêu trên được tạo ra bằng đúng khóa bí mật tương ứng với khóa công
khai trong cùng một cặp khóa; Sự toàn vẹn nội dung của thông điệp dữ liệu kể từ khi
thực hiện việc biến đổi nêu trên.
Chữ ký này có thể thay thế hoàn toàn chữ ký thường bằng tay và được được
pháp luật thừa nhận về mặt pháp lý khi thực hiện giao dịch trên môi trường điện tử.
45

2.3.2 Đặc điểm


Các đặc điểm nổi bật của chữ ký số:
- Tính xác thực: Thông qua chứng thư số của cá nhân, tổ chức, doanh nghiệp,
chữ ký số có thể giúp xác thực danh tính chủ nhân của chữ ký số.
- Tính bảo mật: Chữ ký số có tính bảo mật gần như tuyệt đối và thông tin
không dễ bị đánh cắp bởi các hacker. Vì chữ ký số có tới 2 lớp mã khóa bảo
mật đó là khóa bí mật và khóa công khai.
- Tính toàn vẹn: Văn bản/tài liệu có chữ ký số chỉ có thể được mở bởi duy
nhất một người đó là người nhận văn bản/tài liệu đó. Vì vậy, trong môi
trường giao dịch điện tử, mọi thông tin của tài liệu/văn bản đều được đảm
bảo toàn vẹn một cách tuyệt đối.
- Tính chống chối bỏ: Khi các văn bản/tài liệu/hợp đồng đã có chữ ký số thì
chữ ký số này không thể thay thế cũng không thể xóa bỏ.
Các loại chữ ký số đang được sử dụng hiện nay.
- Chữ ký số USB Token: là loại chữ ký số sử dụng chiếc USB ký số để tích
hợp phần mềm. Đây được xem là chữ ký số được sử dụng phổ biến nhất hiện
nay.
- Chữ ký số HSM (viết tắt của từ Hardware Security Module) là loại chữ ký số
sử dụng thiết bị HSM để lưu trữ cặp khóa và chứng thư số. Loại chữ ký này
sẽ được cài đặt cho các ứng dụng chữ ký số với yêu cầu tốc độ cao, đáp ứng
việc xác thực và mã hóa ngay lập tức.
- Chữ ký số Smart Card là loại chữ số khác biệt hoàn toàn với USB Token và
HSM bởi nó được tích hợp trên sim điện thoại. Nhờ đó, người dùng có thể
nhanh chóng và dễ dàng thực hiện ký số ngay trên điện thoại di động của
mình mọi lúc mọi nơi.
- Chữ ký số từ xa (tiếng Anh là Remote Signature) là loại chữ ký số được sử
dụng trên nền tảng công nghệ điện toán đám mây. Với chữ ký số này, người
46

dùng có thể thực hiện ký số mọi lúc mọi nơi, như trên điện thoại, laptop,
máy tính bảng,...
2.3.3 Công dụng
Chữ ký số có rất nhiều công dụng hữu ích như sau:
- Thay thế cho chữ ký tay trong các giao dịch thương mại điện tử trên môi trường
số, giúp hoạt động giao dịch có thể diễn ra nhanh chóng và tiết kiệm thời gian;
- Với các cá nhân, chữ ký số có giá trị pháp lý tương đương chữ ký tay;
- Với các tổ chức, doanh nghiệp, chữ ký số có giá trị tương đương con dấu và chữ
ký của người đại diện pháp luật;
- Chữ ký số giúp bạn ký trong các giao dịch thư điện tử, ký vào mail để xác nhận
người gửi thư cho khách hàng;
- Chữ ký số có thể giúp bạn đầu tư chứng khoán trực tiếp, mua hàng, thanh toán
và chuyển tiền trực tiếp một cách bảo mật, an toàn;
- Không cần phải in ấn các tờ kê khai hay đến cơ quan thuế để giải quyết khi thực
hiện kê khai thuế trực tuyến hoặc thông quan trực tuyến;
- Đóng bảo hiểm;
- Ký hợp đồng điện tới với khách hàng trực tuyến thông qua hợp đồng điện tử;
- Có thể sử dụng chữ ký số với các ứng dụng quản lý của doanh nghiệp với mức
độ tin cậy, bảo mật và tính xác thực cao.
2.3.4 Cách tạo ra chữ ký số.
Bước 1: Từ văn bản cần ký, người ký sử dụng một phần mềm ký (thường sử
dụng phần mềm chạy thuật toán RSA hoặc SHA1) để tính toán tạo ra giá trị hash(giá trị
hash là 1 dãy những ký tự 0/1 và là duy nhất, bất kỳ thay đổi nào trong dữ liệu ngay cả
thay đổi một ký tự cũng sẽ dẫn đến giá trị hash khác). Sau đó, mã hóa giá trị hash này
bằng khóa riêng của người ký (private key). Khóa này tạo thành chữ ký số. Nhiều chữ
ký và định dạng chữ ký có thể được đính kèm vào một văn bản/tin nhắn, mỗi chữ ký
tham chiếu đến các phần khác nhau
47

Bước 2: Người gửi truyền chữ ký số kèm với với giá trị hash
Bước 3: Người nhận giải mã chữ ký số bằng khóa công khai (public key) của
người gửi để tạo lại giá trị hash.
Bước 4: Người nhận xác minh giá trị hash tìm được ở bước 3 với giá trị hash tạo
ra ở bước 1 xem hai giá trị này có giống nhau không. Nếu hàm hash được giải mã(ở
bước 3) khớp với hàm hash được tính toán(ở bước 1) thì chứng tỏ dữ liệu không thay
đổi kể từ lần được ký. Nếu hai hàm hash không khớp, dữ liệu đã bị giả mạo và bị xâm
phạm. Hoặc chữ ký được tạo bằng private key không tương ứng với public key do
người ký cung cấp.
48

CHƯƠNG 3 – NGHIÊN CỨU THỰC NGHIỆM


Code demo sử dụng thư viện openssl trên môi trường ubuntu 22.4.3
3.1 Mật mã đối xứng
3.1.1 Triple DES (3DES)
Nội dung của văn bản thô :

Để thực hiện mã hóa đối xứng thì ta cần khóa mã hóa , sử dụng openssl và thuật
toán base64 cho việc tạo khóa đặt là key.txt :

Ta thực hiện việc mã hóa văn bản message.txt cùng với khóa mã hóa key.txt , sử
dụng thuật toán 3DES với mode CBC với 100 vòng lặp thuật toán , đặt là message.bin :
49

Để giải mã văn bản mã hóa message.bin , ta làm như sau :

3.1.2 AES
Nội dung của văn bản thô :

Việc mã hóa văn bản trên bằng 3DES cũng được áp dụng cho văn bản này , tuy
nhiên openssl cung cấp việc mã hóa trên bằng khóa mã hóa dưới dạng mật khẩu (không
cần định dạng file), mật khẩu ở đây được đặt là : 123bon5 , mã hóa sử dụng thuật toán
AES-256 mode CBC như sau :
50

Quá trình giải mã như sau :

3.1.3 Blowfish
Quá trình mã hóa và giải mã của thuật toán này giống với 2 thuật toán trên , tuy
nhiên cần lưu ý rằng đối với các version của openssl 3.0.0 trở lên thì các thuật toán như
blowfish không còn được thông dụng và được đưa vào openssl legacy , do đó cần phải
thêm câu lệnh -provider legacy -provider default để sử dụng thuật toán này :
51

3.2 Mật mã bất đối xứng


Đối với mật mã bất đối xứng thì việc mã hóa và giải mã cần phải có khóa công
khai và khóa bí mật. Openssl cung cấp các phương thức cho việc tạo khóa công khai và
khóa bí mật.
Sau đây sử dụng thuật toán RSA với độ dài 1024 bits để tạo khóa bí mật :
52

Từ khóa bí mật này , khởi tạo khóa công khai bằng thuật toán RSA :

Mã hóa văn bản thô bằng khóa công khai :

Giải mã văn bản mã hóa bằng khóa bí mật :


53

3.3Xác thực chữ ký điện từ với Elliptic Curve (ECDSA)


Khởi tạo khóa bí mật sử dụng ECC :

Khởi tạo khóa công khai dựa trên khóa bí mật :

Tạo chữ ký với SHA256 cùng với khóa bí mật cho file signature.txt :
54

Xác thực file signature.txt bằng khóa công khai ,file signature.bin, SHA256 :
55

CHƯƠNG 4: KẾT LUẬN


Mật mã thông tin nắm vai trò quan trọng đối với nhiều lĩnh vực khác nhau: tài
chính, y tế, chính phủ, doanh nghiệp
Mật mã thông tin gồm 3 loại chính : mật mã đối xứng , mật mã bất đối xứng ,
hàm băm trong đó:
- Mật mã đối xứng: sử dụng 1 khóa duy nhất cho việc mã hóa và giải mã.
- Mật mã bất đối xứng: sử dụng khóa công khai và khóa bí mật cho mã hóa và
giải mã.
- Hàm băm: sử dụng thuật toán như SHA để tạo giá trị băm từ dữ liệu đầu vào.
Chữ ký điện tử có thể được sử dụng để xác minh tính xác thực của người ký,
tính toàn vẹn của thông điệp dữ liệu và sự chấp thuận của người ký đối với nội dung
thông điệp dữ liệu.
OpenSSL là một thư viện mã nguồn mở và miễn phí cung cấp một bộ công cụ
mạnh mẽ để thực hiện các giao thức bảo mật khác nhau.
56

TÀI LIỆU THAM KHẢO

Tiếng Việt
1. TEAM, WIKI TIẾNG VIỆT. RSA (mã hóa). WIKI TIẾNG VIỆT. [Online]
10 27, 2023. https://www.duhoctrungquoc.vn/wiki/vi/RSA_(m%C3%A3_h
%C3%B3a).
2. TENTEN. Chữ ký số RSA là gì? Giải thích thuật ngữ RSA dễ hiểu nhất.
TENTEN. [Online] GMO, 03 14, 2022. [Cited: 10 27, 2023.]
https://tenten.vn/tin-tuc/chu-ky-so-rsa/. 1.
3. bkhost. RSA là gì? Cơ chế hoạt động và ứng dụng của thuật toán RSA.
bkhost. [Online] CÔNG TY CỔ PHẦN GIẢI PHÁP MẠNG TRỰC TUYẾN VIỆT
NAM, 08 29, 2022. [Cited: 10 27, 2023.] https://bkhost.vn/blog/rsa/. 1.
4. muabán.net. Hệ mã hóa RSA là gì? Cách thức hoạt động của RSA.
muabán.net. [Online] CÔNG TY CỔ PHẦN MUA BÁN, 05 11, 2022. [Cited: 10 27,
2023.] https://muaban.net/blog/rsa-118289/. 1.
5. MÃ, CỤC QUẢN LÝ MẬT MÃ DÂN SỰ VÀ KIỂM ĐỊNH SẢN PHẨM
MẬT. Giới thiệu về thuật toán DES, 3DES và khuyến nghị khi sử dụng trong các sản
phẩm mật mã dân sự. CỤC QUẢN LÝ MẬT MÃ DÂN SỰ VÀ KIỂM ĐỊNH SẢN PHẨM
MẬT MÃ. [Online] 10 11, 2021. [Cited: 10 27, 2023.] https://nacis.gov.vn/nghien-cuu-
trao-doi/-/view-content/265342/gioi-thieu-ve-thuat-toan-des-3des-va-khuyen-nghi-khi-
su-dung-trong-cac-san-pham-mat-ma-dan-su. 1.
6. VNPT. Chữ ký số là gì? 5 điều cơ bản nhất định phải biết. https://vnpt.com.
[Online] VNPT, 01 03, 2023. [Cited: 10 27, 2023.]
https://vnpt.com.vn/doanh-nghiep/tu-van/chu-ky-so-la-gi.html. 1.
7. Easyinvoice. Chữ ký số là gì? Chữ ký số dùng để làm gì?
https://easyinvoice.vn/. [Online] Easyinvoice, 11 30, 2020. [Cited: 10 27, 2023.]
https://easyinvoice.vn/chu-ky-so-la-gi-chu-ky-so-dung-de-lam-gi/. 1.
57

Tiếng Anh

You might also like