You are on page 1of 11

12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

Họ và tên: Phùng Thị Thu An


Lớp: K64A2 Toán Tin
MSV: 19000241

Bài tiểu luận cuối kỳ môn: Mật mã và An toàn Dữ


liệu
Chủ đề: Ứng dụng của chữ ký số, hàm băm, cây Merkle trong
Blockchain.

1. Giới thiệu chung vấn đề:

1.1. Blockchain là gì:


Mô tả đơn giản về blockchain là mọi thông tin được lưu trữ và truyền tải một cách minh bạch, toàn vẹn, không
thể nào thay đổi hay gian lận được trong một cuốn sổ cái công cộng. Đây là một công nghệ quan trọng trong
Society 5.0, giúp cải thiện được rất nhiều những mặt hạn chế của cách lưu trữ và trao đổi thông tin truyền thống.
Bởi lý do này, mà blockchain ngày càng được ứng dụng rộng rãi trong nhiều lĩnh vực: kinh tế tài chính, giáo dục,
nông nghiệp, công nghiệp, lĩnh vực giải trí, y tế hay giáo dục….

Về mặt kỹ thuật, Blockchain là một database phân tán (phi tập trung) mà trong đó các dữ liệu được lưu trữ dưới
dạng các blocks. Body của một block mang theo các transactions (giao dịch) trên dữ liệu. Block được kết nối với
nhau theo dạng linked list (danh sách liên kết) dưới dạng mã hóa. Mã hóa của một block bao gồm cả địa chỉ của
block trước và body của chính nó nên khi một block được add vào, nó không thể thay đổi cũng như tái sắp xếp.

Ý tưởng đằng sau công nghệ blockchain được mô tả từ năm 1991, khi các nhà nghiên cứu Stuart Haber và W.
Scott Stornetta giới thiệu một giải pháp thực tế về mặt tính toán để đánh dấu thời gian các văn bản số, để chúng
không bị đề lùi ngày về trước hoặc can thiệp vào. Nhưng phải đến những năm gần đây, Blockchain mới thực sự
phổ biến và được nhiều người nhắc đến ở Việt Nam.

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 1/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

Mỗi block trong Blockchain bao gồm các thành phần sau:

Index (Block #): Thứ tự của block (block gốc có thứ tự 0)


Hash: Giá trị băm của block
Previous Hash: Giá trị băm của block trước
Timestamp: Thời gian tạo của block
Data: Thông tin lưu trữ trong block
Nonce: Giá trị biến thiên để tìm ra giá trị băm thỏa mãn yêu cầu của mỗi Blockchain.

Giá trị băm (Hash) sẽ băm toàn bộ các thông tin cần thiết như timestamp, previous hash, index, data, nonce.

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 2/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

1.2. Nền tảng kỹ thuật trong Blockchain:


Công nghệ Blockchain được phát triển dựa trên nhiều nền tảng kỹ thuật, trong đó có hàm băm, chữ ký số và cây
Merkle.

1.2.1. Hàm băm:


Hàm băm H là hàm ánh xạ đầu vào x có độ dài bit tùy ý tới đầu ra H (x) có độ dài n bit cố định và đảm
bảo hàm H dễ dàng tính toán ra H (x) .
Một hàm băm mật mã sử dụng trong Blockchain thì phải đảm bảo thêm 3 tính chất là:

1. Tính kháng tiền ảnh (tính một chiều): cho trước giá trị băm y, về mặt tính toán, không thể tìm ngược ra giá
trị x sao cho: H (x) = y.
2. Tính kháng va chạm yếu: cho trước đầu vào x và hàm băm H , về mặt tính toán, không thể tìm được giá trị
x ≠ x nào sao cho: H (x ) = H (x) .
′ ′

3. Tính kháng va chạm mạnh: về mặt tính toán không thể nào tìm được cặp (x, x ′ ) nào sao cho:
H (x) = H (x ) và x ≠ x .
′ ′

Ngoài ra còn có tính chất pseudorandom (giả ngẫu nhiên): với hai đầu vào x 1 , x 2 chỉ khác nhau 1 bit thì đầu ra
H (x 1 ), H (x 2 ) không có sự tương quan với nhau.

Một số hàm băm phổ biến: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3... Theo như các nhà toán
học thì hàm băm SHA-256 (hiện đang được sử dụng nhiều trong Blockchain) có thể bị phá giải trong vài
năm nữa bởi vì sự phát triển của siêu máy tính lượng tử.
Các hàm băm thường được dùng kết hợp với các lược đồ chữ kí số để đảm bảo tính xác thực và toàn vẹn
dữ liệu.
Một lớp các hàm băm riêng được gọi là mã xác thực thông điệp (MAC) cho phép xác thực thông điệp bằng
các kĩ thuật mã đối xứng.

1.2.2. Lược đồ chữ ký số:


Về mặt công nghệ, chữ ký số là một thông điệp dữ liệu đã được mã hóa gắn kèm theo một thông điệp dữ
liệu khác nhằm xác thực người gửi thông điệp đó.
Quá trình ký và xác nhận chữ ký như sau:

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 3/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 4/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

Hai user là A và B muốn giao dịch với nhau, mỗi người sẽ có hai khóa là khóa công khai và khóa bí mật được
tạo sau thuật toán sinh khóa.

1. Người gửi A sử dụng khóa công khai của người nhận B để mã hóa thông điệp.
2. A dùng một hàm băm để băm thông điệp vừa mã hóa thành một giá trị hash.
3. A tiếp tục mã hoá giá trị hash vừa tính bằng khóa bí mật của A để tạo thành một chữ ký số.
4. A gắn kèm chữ ký số này với bản mã thông điệp sau bước 1 và gửi đi.
5. Thông điệp mà A gửi sẽ được truyền đến mining pool và sau đó được miner xác thực xem chữ ký số đó có
phải là của người A không bằng cách sử dụng khóa công khai của người A. Nếu đúng là người A thực hiện
thì miner mới ghi giao dịch vào trong sổ cái blockchain.
6. Sau đó, người nhận B sẽ dùng khóa bí mật của mình để giải mã thông điệp trong giao dịch lưu trong sổ cái
và đó trùng khớp với thông điệp gốc mà người A muốn gửi.

Ngoài ra, chữ ký số có thể được gắn thêm một nhãn thời gian: sau một thời gian nhất định quy định bởi nhãn
đó, chữ ký gốc sẽ không còn hiệu lực, đồng thời nhãn thời gian cũng là công cụ để xác định thời điểm ký.

Các loại chữ ký số phổ biến: RSA-PSS, DSA, ECDSA, Schnorr,...

1.2.3. Cây Merkle:


Khái niệm về cây Merkle được đặt ra vào đầu những năm 80 bởi Ralph Merkle – một nhà khoa học máy
tính nổi tiếng với công trình nghiên cứu về công nghệ mật mã khóa công khai.
Vào năm 1992, các cây Merkle đã được tích hợp vào thiết kế dùng để mã hóa dữ liệu blockchain một cách
hiệu quả và an toàn do cấu trúc của nó cung cấp một bản ghi dễ dàng truy cập về các giao dịch trong một
block.

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 5/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

Hình trên là ví dụ nhỏ minh họa cách thức hoạt động của cây Merkle trong một block:

Khối N có 4 giao dịch lần lượt là: T 1, T 2, T 3, T 4 truyền qua hàm H ash(x) được các giá trị băm tương ứng
H 1, H 2, H 3, H 4 .

Các giá trị băm là lá được ghép cặp từ trái qua phải H 1 với H 2, H 3 với H 4 và cho ra hai giá trị băm là
H 12 = H ash(H 1 + H 2) và H 34 = H ash(H 3 + H 4) .

Tiếp tụp ghép cặp từng tầng như vậy đến khi tạo được nút gốc của cây Merkle là:
H 1234 = H ash(H 12 + H 34)

Nói một cách khái quát: một cây Merkle được tạo ra bằng cách chia dữ liệu thành nhiều phần và là lá của
cây, sau đó được băm (hash) nhiều lần để tạo thành Merkle Root. Tiếp đó, người dùng có thể xác minh một
cách hiệu quả xem có vấn đề gì xảy ra với một phần dữ liệu hay không.

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 6/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

2. Tìm hiểu về cây Merkle ứng dụng trong Blockchain:


Nhắc lại từ mục 1.2.3, cây Merkle là một cấu trúc dữ liệu toán học được tạo thành từ các hàm băm (hash) của
nhiều block dữ liệu khác nhau, nó tóm tắt tất cả các giao dịch trong một block, từ đó cây Merkle cho phép xác
minh nội dung nhanh chóng và an toàn trên các bộ dữ liệu lớn và xác minh tính nhất quán của dữ liệu. Phần
Merkle Root sẽ được lưu trong Header Info cuả mỗi block.

Vây tại sao cấu trúc cây Merkle lại được sử dụng trong Blockchain mà không phải là một loại cấu trúc dữ liệu
khác?

2.1. Vai trò của cây Merkle:


Cây Merkle đóng vai trò đáng kể trong tiền mã hóa nói riêng và Blockchain nói chung. Hãy thử tưởng tượng khi
cây Merkle không được dùng trong Bitcoin thì mọi node trên mạng sẽ phải giữ lại một bản sao hoàn chỉnh của
mọi giao dịch Bitcoin từng được thực hiện. Khi đó khối lượng thông tin thực sự khổng lồ. Node sẽ cần so sánh
từng dòng mục nhập để đảm bảo các bản ghi của chính nó và các bản ghi mạng khớp chính xác.

Mọi yêu cầu xác minh trên Bitcoin sẽ yêu cầu các gói thông tin siêu khổng lồ vì để xác thực dữ liệu, chúng ta
cần phải có chính dữ liệu đó. Máy tính được sử dụng để xác thực sẽ cần tiêu tốn nhiều năng lượng xử lý để so
sánh các sổ cái nhằm đảm bảo rằng không có thay đổi nào. Nếu có bất kỳ sự khác biệt nào giữa các sổ cái, nó
có thể ảnh hưởng đến tính bảo mật của mạng.

Cây Merkle giải quyết vấn đề này. Họ băm các bản ghi trong sổ cái, giúp tách biệt hiệu quả bằng chứng dữ liệu
khỏi chính dữ liệu. Việc chứng minh một giao dịch hợp lệ chỉ liên quan đến việc gửi một lượng nhỏ thông tin qua
mạng. Ngoài ra, nó cho phép bạn chứng minh rằng cả hai phiên bản của sổ cái đều giống nhau về sức mạnh
tính toán và băng thông mạng.

Sau Bitcoin, các đồng tiền mã hóa lần lượt được ra đời với cấu trúc phức tạp hơn ý tưởng ban đầu về cây
Merkle. Chẳng hạn như Ethereum, Ethereum sử dụng một phiên bản phức tạp hơn là cây Merkle Patricia. Cấu
trúc này có sự kết hợp của 3 cây Merkle riêng biệt sử dụng cho 3 đối tượng khác nhau trong các nền tảng
Ethereum.

stateRoot: đại diện cho trạng thái của khối, cập nhật theo thời gian thực.
ReceiptsRoot: chứa các biên lai giao dịch trong khối
Transaction Root: chưa toàn bộ các giao dịch.

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 7/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 8/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

2.2. Lợi ích của cây Merkle:


Merkle Trees có 4 lợi ích:

1. Xác thực tính toàn vẹn của dữ liệu: chứng minh cả tính toàn vẹn và tính hợp lệ của dữ liệu.
2. Tốn ít dung lượng lưu trữ: So với các cấu trúc dữ liệu khác, cấu trúc Merkle Tree chiếm rất ít dung lượng
lưu trữ.
3. Dữ liệu được sắp xếp và cấu trúc để xác minh dễ dàng: Cây Merkle có thể được chia thành các phần dữ
liệu nhỏ để xác minh. Quá trình ghép nối các giá trị hash này được lặp lại cho đến khi tạo ra giá trị hash
cuối cùng. Giá trị hash cuối cùng cung cấp một bản tóm tắt về tất cả các giao dịch có trong block.
4. Xác minh thanh toán đơn giản hóa (SPV) - một cách xác minh giao dịch trong một khối mà không cần tải
xuống toàn bộ khối nên nhanh chóng và đơn giản.

Điều cần thiết đối với công nghệ Blockchain là một log có thể được chứng minh là hoàn chỉnh và nhất quán. Cây
Merkle giúp xác thực rằng các phiên bản sau của log bao gồm mọi thứ từ phiên bản cũ hơn. Cây Merkle cũng
đảm bảo rằng tất cả dữ liệu được ghi lại và trình bày theo thứ tự thời gian. Việc chứng minh rằng log nhất quán
có thể khó khăn, vì nó yêu cầu chứng minh rằng không có hồ sơ nào trước đó bị thay đổi, thêm vào hoặc giả
mạo. Ngoài ra, cũng cần phải chỉ ra rằng log chưa bao giờ được phân nhánh hoặc phân nhánh.

Cây Merkle mang lại lợi ích cho cả user và miner trên chuỗi khối. User có thể xác minh các phần riêng lẻ của
khối và cũng có thể kiểm tra các giao dịch bằng cách sử dụng hàm băm từ các nhánh khác của Cây Merkle.
Miner có thể tính toán giá trị băm dần dần khi họ nhận được giao dịch từ các đồng nghiệp của mình.

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 9/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

3. Ứng dụng của Blockchain:


Từ trước tới nay vấn đề xác thực bản quyền tác giả luôn là vấn đề nhức nhối trong xã hội. Một sản phẩm có thể
dễ dàng bị sao chép, ăn cắp một cách dễ dàng trên internet bằng việc chụp màn hình hoặc copy & paste và các
nhà sưu tầm có thể bị lừa khi mua phải sản phẩm giả mạo.

Để giải quyết cho thực trạng này thì ứng dụng sử dụng Non-fungible token (NFT) trong blockchain để xây dựng
nên những sản phẩm không thể bị sao chép, độc nhất và có chữ ký xác thực của chính chủ tác giả trên sản
phẩm.

NFT là một tài sản ảo đại diện cho các sản phẩm trong thế giới thực như nghệ thuật, âm nhạc, vật phẩm game,
và video. NFT được mua bán trực tuyến dưới hình thức thanh toán bằng tiền mã hóa (cryptocurrency).

Mỗi NFT có một chữ ký kỹ thuật số do đó NFT không thể thay thế được (non-fungible), nghĩa là không thể trao
đổi một NFT với một NFT khác.Người mua cũng có được quyền sở hữu độc quyền. Mỗi NFT chỉ có thể có một
chủ sở hữu tại một thời điểm. Nhờ có dữ liệu độc nhất vô nhị, NFT dễ dàng xác minh quyền sở hữu và chuyển
giao các token giữa các chủ sở hữu. Chủ sở hữu hay nhà sáng lập cũng có thể lưu trữ các thông tin cụ thể dưới
dạng các NFT.

Mặc dù chỉ mới xuất hiện hồi năm 2014, NFTs hiện đang được nhiều người biết đến bởi chúng đang ngày một
trở thành cách phổ biến để mua bán các tác phẩm nghệ thuật số. Ngày càng nhiều cá nhân và công ty đang bắt
đầu khởi nghiệp bằng cách bán những NFT tự tạo ra.

Vậy nếu muốn sở hữu một NFT thì phải chuẩn bị gì?
Trước hết, chúng ta cần có một ví điện tử cho phép lưu trữ
NFT, tiền mã hóa và một chút tiền mã hóa (tùy theo loại tiền mà người bán yêu cầu). Hiện nay, chúng ta có thể
mua tiền mã hóa bằng thẻ tín dụng trên các nền tảng như Coinbase, Kraken, eToro và thậm chí cả PayPal và
Robinhood. Sau đó, chúng ta sẽ có thể chuyển tiền mã hóa từ sàn giao dịch đó sang ví điện tử của mình.

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 10/11


12/24/22, 6:23 PM TLCK MMVATDL_Phùng Thị Thu An_19000241

4. Kết luận:
Với những tiềm năng hiện tại, công nghệ Blockchain đang dần trở thành xu hướng công nghệ và thay đổi kinh tế
và xã hội trong tương lai. Và việc đào tạo các Blockchain engineer đang là xu hướng và cũng dần trở nên cần
thiết trong các trường đào tạo về công nghệ thông tin. Vì vậy, ngay khi định hướng hiện tại của bản thân không
theo hướng Blockchain, những kiến thức cơ bản về lĩnh vực này là không thừa và cần được nắm rõ.

Công nghệ cây Merkle rất hữu ích trong các ứng dụng khoa học máy tính đặc biệt trong lĩnh vực blockchain vì
trong các hệ thống phân tán, cây Merkle cho phép dễ dàng xác minh thông tin mà không làm ngập mạng lưới
với dữ liệu không cần thiết. Có thể nói nếu không có cây Merkle thì Bitcoin hay các đồng tiền mã hóa khác khó
mà có thể tiện ích được như bây giờ. Tuy ý tưởng cây Merkle đã có từ rất lâu nhưng việc nó vẫn được sử dụng
trong một công nghệ mới như thế này cũng đã khẳng định được tầm quan trọng và những bước tiến trong công
nghệ mà nó tạo ra. Do vậy, để phát triển thêm về công nghệ Blockchain thì những kỹ sư lập trình cần có hiểu
biết về cấu trúc cây Merkle.

Được tham gia khóa học ở VIASM là một vinh dự và cũng là một trải nghiệm đầy thú vị của không chỉ em mà
còn nhiều bạn khác. Các bài giảng rất thú vị và bổ ích đến từ các diễn giả là các chuyên gia trong lĩnh vực
Blockchain trong và ngoài nước. Ngoài ra, các chủ đề của các diễn giả cũng rất đa dạng, đến từ nhiều góc nhìn:
góc nhìn từ tin học, toán học, kinh tế, ...

Trong các chuỗi bài giảng, có một bài giảng về ứng dụng của Blockchain trong quản lý chứng chỉ đào tạo của
một lab trong nước. Theo em nhớ thì họ có dự định xa hơn đó là muốn hợp tác cùng Bộ Giáo dục và Đào tạo
Việt Nam. Giáo sư David Trần cho rằng điều khiến việc này khó thực hiện được đó chính là tiền mã hóa không
được coi là tài sản theo Bộ luật Dân sự năm 2015 và cũng không được coi là hàng hóa theo quy định của pháp
luật thương mại. Việc một tổ chức cấp Trung ương sử dụng hay trao đổi một sản phẩm chưa được pháp luật
công nhận là không thể xảy ra. Để tiền mã hóa có thể được pháp luật công nhận nói riêng và blockchain có thể
phát triển mạnh hơn ở Việt Nam trong tương lai nói chung thì cần những bước tiến xa hơn về bảo mật, khắc
phục những nhược điểm còn tồn đọng và đẩy mạnh phát triển thêm các ứng dụng trong đời sống của
Blockchain.

Nguồn tài liệu tham khảo:

Chuỗi bài giảng của cô Trần Thị Hồng: https://www.youtube.com/playlist?


list=PLEurop7OzR9UzxNmATZnLTQDzgRUToJsV (https://www.youtube.com/playlist?
list=PLEurop7OzR9UzxNmATZnLTQDzgRUToJsV)
https://selfkey.org/what-is-a-merkle-tree-and-how-does-it-affect-blockchain-technology/
(https://selfkey.org/what-is-a-merkle-tree-and-how-does-it-affect-blockchain-technology/)
https://www.forbes.com/advisor/investing/cryptocurrency/nft-non-fungible-token/
(https://www.forbes.com/advisor/investing/cryptocurrency/nft-non-fungible-token/)

localhost:8888/nbconvert/html/TLCK MMVATDL_Phùng Thị Thu An_19000241.ipynb?download=false 11/11

You might also like