Professional Documents
Culture Documents
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
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
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
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
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
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
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.
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:
- Từ m có thể lấy lại được bản tin bằng cách đảo ngược padding
16
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
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:
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
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.
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.
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.
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.
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.
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.
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ố.
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.
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.
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.
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
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.
- 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
- 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ử.
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
Để 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
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
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
Từ khóa bí mật này , khởi tạo khóa công khai bằng thuật toán RSA :
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
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