1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp An toàn thông tin: Nghiên cứu phương pháp phát hiện lỗ hổng bảo mật hợp đồng thông minh sử dụng cách tiếp cận học máy và biểu diễn đồ thị

90 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Phương Pháp Phát Hiện Lỗ Hổng Bảo Mật Hợp Đồng Thông Minh Sử Dụng Cách Tiếp Cận Học Máy Và Biểu Diễn Đồ Thị
Tác giả Trần Xuân Nam
Người hướng dẫn ThS. Trần Tuấn Dũng
Trường học Đại Học Quốc Gia Hồ Chí Minh
Chuyên ngành Ngành An Toàn Thông Tin
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2024
Thành phố TP.Hồ Chí Minh
Định dạng
Số trang 90
Dung lượng 27,94 MB

Nội dung

34 2.8 Các ứng dụng của việc sử dụng phương pháp phát hiện lỗ hổng bảo mật trong hợp đồng thông minh sử dụng các cách tiếp cận học máy và biểu diễn đồ thị ...- 35 CHƯƠNG 3.. Đầu tiên, vi

Trang 1

ĐẠI HỌC QUỐC GIA HO CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THONG TIN

KHOA MẠNG MAY TÍNH VÀ TRUYEN THONG

TRAN XUAN NAM - 20521637

A STUDY ON SMART CONTRACT VULNERABILITY

DETECTION USING MACHINE LEARNING AND GRAPH

REPRESENTATION APPROACH

CU NHAN NGANH AN TOAN THONG TIN

GIANG VIEN HUGNG DAN:

ThS Trần Tuấn Dũng

TP.Hồ Chí Minh - 2024

Trang 2

LỜI CẢM ƠN

Trong thời gian thực hiện nghiên cứu khóa luận tốt nghiệp, nhóm đã nhân

được nhiều sự giúp đỡ, đóng góp ý kiến và chỉ bảo nhiệt tình của thầy cô, bạn

bè Với sự giúp đỡ này đã giúp nhóm rất nhiều trong việc cũng cố kiến thức và giải đáp những thắc mắc còn tồn đọng.

Nhóm xin gửi lời cám ơn chân thành đến thầy Trần Tuấn Dũng giảng viên khoa Mang máy tính và truyền thông dữ liệu trường đại học Công Nghệ Thông Tin, người đã tận tình hướng dẫn, chỉ bảo nhóm trong suốt quá trình làm khóa luận tốt nghiệp vừa qua.

Với những kiến thức đã đạt được trong khóa luận này nhóm báo cáo có thể tự

tin hơn trên chặng đường tốt nghiệp sắp tới và trong cuộc sống sau này Nhóm xin được chúc thầy và các cán bộ giảng viên đang công tác tại trường thật nhiều sức khỏe và thành công trong cuộc sống.

Trần Xuân Nam

Trang 3

DANH MUC CAC BANG BIEU vii

CHƯƠNG 1 TONG QUAN DE TÀI 3

11 Giới thiéu vấn der gE 1é.” ^® 3

1.2 Các nghiên cứu liên quan So 4 1.3 Những thách thức Ặ Q.0 QC 5

1.4 Mục tiêu, đối tượng, và phạm vi nghiên cứu 6

1.41 Mục tiêu nghiên cỨu cố 6

1.4.2 Dối tượng nghiên cứu 6

143 Phạm vinghiéncttu co 6

1.4.4 Cấu trúc của khóa luận tốt nghiệp - 6

CHƯƠNG 2 CƠ SỞ LÝ THUYET 8

2.1 Các thành phần liên quan đến hợp đồng thông minh §

2.2 Các lỗ hồng phổ biến 9

2.3 Tree-sitter na 11

2.4 Cây cú pháp trừu tượng (AST) 13

2.41 Thành phần của AST 13 2.42 VíiduvềASlT Q2 14

2.4.3 Quá trình tạo AST Q2 15

244 UngdungctaAST 00.0.0 00004 16

2.4.5 AST trong phát hiện lỗ hổng bảo mật hợp đồng thông minh 16

Trang 4

2.5 Biểu diễn đồ thị 2 2Q Qua 17

2.5.1 Đồ thị va ứng dụng trong việc phân tích mã 17

2.5.2 Dồ thị dòng dữ liệu (DFG) 18

2.5.3 Đồ thị dòng dữ liệu quan trọng (CDFG) 18

2.5.4 Đồ thị có hướng (Directed Graph) 19

2.6 Machine Learning 00.0.0 00000 20 2.6.1 Khái nệm 0 0000.00 2 eee 20 2.6.2 Khanangtuhoc 2.0 0022 ee 21 2.6.3 Phân loại 0 00000000 eee ee 22 2.6.4 Cách thức hoạt d6ng 22

2.7 Học sâu (Deep Learning) - 0000005 23 2.7.1 Mot số thành phần chính của mang no-ron 24

2.7.2 Một số các khái nệm khác 25

2.7.3 Một số kiến trúc mạng nơ-ron pho biến trong lĩnh vực học SUA me ể v tan | / ee ol 2.7.4 Phương pháp hoc trong hoc sau 33

2.7.5 Các ham tính toán khoảng cách thường dting 34

2.8 Các ứng dụng của việc sử dụng phương pháp phát hiện lỗ hổng bảo mật trong hợp đồng thông minh sử dụng các cách tiếp cận học máy và biểu diễn đồ thị - 35

CHƯƠNG 3 TỔNG QUAN VỀ MÔ HÌNH 37 3.1 Dinh nghĩa van đề Q co 37 3.2 Tiền xử lí dữ liệu Q Q Q Q Q Q Q Q s 38 3.2.1 Đối với mô hình huấn luyện GraphCodeBễERT 38

3.2.2 Dối với mô hình huấn luyện GCN 45

3.3 Dưa dữ liệu đã xử lý vào mô hình huấn luyện 48

3.3.1 Mô hình huấn luyện GraphCodeBERT 49

3.3.2 Mô hình huấn luyện GCN 52

3.4 Phương phấp đánh giá 54

Trang 5

4.2.1 Xử lí dữ liệu cho mô hình huấn luyện GraphCodeBERT 59

4.2.2 Xử lí dữ liệu cho mô hình huấn luyện GCN 63 4.2.3 Dưa dữ liệu đã xử lí vào mô hình huấn luyện GraphCode-

5.2 Hướng cải thiện và phát triển 2 78

TÀI LIỆU THAM KHẢO 80

Trang 6

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

AI Artificial Intelligence AST Abstract Syntax Tree API Application Programming Interface CDFG Crucial Data Flow Graph

CNN Convolutional Neural Network CFG Control Flow Graph

DeFi Decentralized Finance DFG Data Flow Graph

DNN _ Deep Neural Network EOS Ethereum Operating System

FN False Negative

FP False Positive GAN — Generative Adversarial Network

GCN — Graph Convolutional Network

GNN Graph Neural Networks GRU Gated Recurrent Unit

IDE Integrated Development Environment LSTM Long Short-Term Memory

MSE Mean Squared Error

N Số lượng các chức năng tương đồng được xếp hang

NLP Natural Language Processing RNN Recurrent Neural Network

TP True Positive TMP Temporal Message Propagation Network

TN True Negative

Trang 7

DANH MỤC CÁC HÌNH VE

Hình 2.1 Ví dụ về lỗ hong Reentrancy 11

Hình 2.2 Ví dụ về một đoạn mã nguồn đơn giản 14

Hình 23 Cây cú pháp trừu tượng tương Ứng - 15

Hình 2.4 Sơ đồ tự học của Machine Learning 21

Hình 25 Mô hình mạng nơron 25

Hình 2.6 Ví dụ về một mô hình CNN để phân loại hình anh 31

Hình 27 Vi dụ về mô hình kết hợp CNN và RNN 33

Hình 3.1 Mô hình tổng quan - Kết hợp GraphCodeBERT va GCN trong phát hiện lỗ hong hợp đồng thông minh 38

Hình 3.2 Quy trình trích xuất luồng dữ liệu quan trọng từ mã nguồn 39 Hình 3.3 Quy trình của khi chuyển đổi mã nguồn thành AST với thu viện WA Siti‘ 6Ð ẻẻẽẻẽẹộ¬ Do 41

Hình 3.4 Quy trình chuyển đổi từ AST thành DFG 42

Hình 3.5 Thuật toán chuyển đổi từ DFG thành CDFG 44

Hình 3.6 Các giai đoạn tao và chuẩn hóa đồ thị trong phương pháp cua ching toi 2 NI | aaanaaAaa 45 Hình 37 Mô hình GraphCodeBồERT 49

Hình 3.8 Kiến trúc mô hình GraphCodeBERT của chúng toi 51

Hình 3.9 Sơ ddmotaGCN 0 00200200008 52 Hình 3.10 Kiến trúc mô hinh GCN 53

Hình 4.1 Hàm để xóa các comment không cần thiết 58

Hình 4.2 Kết quả sau khi xóa các comment 59

Hình 4.3 Chương trình để tạo một tệp JSONL chứa dữ liệu các hợp

Trang 8

Hình 4.4 Két quả của tệp JSONL sau khi được tạo 61

Hình 4.5 Két quả khi biên dich hợp đồng ví dụ từ hình 3.2 thành DFG 61 Hình 4.6 Doan mã để xác định các nút quan trong 62

Hình 4.7 Đoạn mã để loại bỏ các điểm độc lập không phụ thuộc vào nút quan tỌNE Q Q Q Q Q H H Q k V V 63 Hình 48 Kết quả khi rút gọn DFG thành CDFG 63

Hình 4.9 Một ví dụ về hợp đồng thông minh 64

Hình 4.10 Kết quả cạnh đặc trưng của hình 4.9 64

Hình 4.11 Kết quả cạnh nút đặc trưng của hình 49_ 64

Hình 4.12 Kết quả khi chuẩn hóa đồ thị biểu diễn của hợp đồng ví dụ hình 4.9 thành dang vecfOT Ặ Ặ 000000045 65 Hình 4.13 Lớp RobertaClassificationHead - đầu ra cho các tác vụ phân loại céu § GIA @ \À 66

Hình 4.14 Lớp Model - kiến trúc của mô hình GraphCodeBERT 66

Hình 4.15 Các thông số config của mô hình - 67

Hình 4.16 Lớp GraphConvolutionLayer - lõi của GCN và thực hiện các phép tích chập trên đồ thị 70

Hình 4.17 Lớp GƠN - mô hình mạng nơ-ron sử dụng để xử lý dữ liệu dạng đồ thị ca 71 Hình 4.18 Hàm huấn luyện mô hình GƠCN 72

Hình 4.19 Biểu đồ training loss của mô hình GraphCodeBERT với mỗi

epoch an iủú.a ee 74

Hình 4.20 Biểu đồ F1 score của mô hình GraphCodeBERT với mỗi steps 7ð

Trang 9

DANH MUC CAC BANG BIEU

Bang 3.1 Tom tắt các cạnh ngữ nghĩa Tat cả các cạnh được phân

loại thành 4 loại, bao gồm luồng điều khiển, luồng dữ liệu, chuyển

Bảng 4.1 Các chỉ số đánh giá của mô hình

Trang 10

-TÓM TẮT

Ngày nay, việc phát hiện 16 hong bảo mật trong mã nguồn của hợp đồng thông

minh đang ngày càng quan trọng hơn trong lĩnh vực công nghệ blockchain va

an ninh mạng Các hợp đồng thông minh, do đặc thù của chúng, yêu cầu mức

độ bảo mật cao và không thể dễ dàng sửa đổi sau khi được triển khai Vì vậy,việc phát hiện sớm các lỗ hổng trong mã nguồn là cực kỳ quan trọng để đảm

bảo tính toàn vẹn và an toàn của các giao dịch trên blockchain.

Đầu tiên, việc phát hiện lỗ hổng trong mã nguồn của hợp đồng thông minh

có thể giúp ngăn chặn các cuộc tấn công mạng và bảo vệ tài sản số Các lỗ hổngtrong hợp đồng thông minh có thể bị khai thác bởi các tin tặc để đánh cắp tài

sản hoặc gây ra những hậu quả nghiêm trọng khác Bằng cách phân tích mã

nguồn và phát hiện các lỗ hổng tiềm an, các nhà phát triển có thể sửa chữa

chúng trước khi triển khai hợp đồng lên blockchain

Tiếp đến, trong phát triển phần mềm, việc phát hiện lỗ hổng trong mã nguồn

của hợp đồng thông minh giúp đảm bảo chất lượng và độ tin cậy của phần mềm.

Các nhà phát triển có thể sử dụng các kỹ thuật phát hiện lỗ hổng để kiểm tra

mã nguồn, phát hiện các lỗi và tối ưu hóa mã, từ đó giảm thiểu rủi ro bảo mật

và tăng cường hiệu suất của hợp đồng thông minh.

Cuối cùng, trong nghiên cứu bảo mật, phát hiện lỗ hong trong mã nguồn của

hợp đồng thông minh giúp phát triển các biện pháp bảo vệ mới Bằng cách phân

tích các hợp đồng thông minh khác nhau và tim ra các lỗ hổng chung, các nhànghiên cứu có thể phát triển các phương pháp phát hiện và ngăn chặn các cuộc

tấn công tương tự trong tương lai.

Cùng với phương pháp phát hiện lỗ hổng thông thường, phương pháp pháthiện lỗ hong dựa trên hoc sâu cũng đang ngày càng phát triển và chứng minh sự

hiệu quả vượt trội so với các phương pháp truyền thống Các phương pháp phát

Trang 11

hiện 16 hong truyền thống thường dựa trên các kỹ thuật thống kê hoặc so sánh

ký tự Tuy nhiên, các kỹ thuật này có thể không hiệu quả trong trường hợp mã

nguồn được mã hóa hoặc biến đổi Trong những năm gần đây, các phương pháp

phát hiện lỗ hồng dựa trên học sâu đã được phát triển và cho thấy hiệu quả cao

hơn Các phương pháp này sử dụng các mô hình học sâu để học các đặc điểmcủa mã nguồn, từ đó có thể phát hiện các 16 hổng ngay cả khi mã nguồn được

mã hóa hoặc biến đổi

Trong khóa luận của mình, chúng tôi đã đề xuất hai phương pháp phát hiện lỗ

hổng bảo mật trong mã nguồn của hợp đồng thong minh là GraphCodeBERFT[S]

va Graph Convolutional Network (GCN)[11] Sau đó chúng tôi sử dụng phương

pháp Ensemble Learning để kết hợp kết quả từ hai mô hình trên và đưa ra kếtluận cuối cùng Phương pháp này có thể tận dụng sức mạnh của cả hai mô hình

để đạt được độ chính xác cao hơn trong việc phát hiện lỗ hổng Chúng tôi cũng

đã thực hiện các thực nghiệm để đánh giá và so sánh độ hiệu quả của các phương

pháp khi áp dụng vào mô hình của chúng tôi.

Trang 12

CHƯƠNG 1 TONG QUAN DE TÀI

Chương này giới thiệu về van đề chúng tôi sẽ nghiên cứu và các nghiên cứu

đã có trước đó Đồng thời chúng tôi trình bày phạm vi và cấu trúc của khóa

luận.

1.1 Giới thiệu vấn đề

Phát hiện lỗ hong trong mã nguồn của hợp đồng thong minh là một bài toán

quan trọng trong lĩnh vực blockchain và công nghệ hợp đồng thông minh Bài

toán này nhận đầu vào là mã nguồn của một hợp đồng thông minh và đưa ra

đầu ra là các lỗ hồng có thể tồn tại trong mã đó hoặc là đưa ra dự đoán hợp đồng

có bị lỗ hổng không Các lỗ hổng này có thể thuộc nhiều loại như Timestamp

Dependency, Reentrancy, Integer Overflow/Underflow,

Công việc này mặc dù có vẻ đơn giản nhưng lại được ứng dung thực tế rất nhiều và cũng quan trọng trong lĩnh vực blockchain Ví dụ, phát hiện các lỗ

hồng có thể giúp ngăn ngừa các cuộc tấn công và mất mát tài sản trong hợpđồng thông minh Ngoài ra, việc kiểm tra và phân tích mã nguồn cũng có thể

giúp cải thiện tính an toàn và độ tin cậy của các ứng dụng blockchain.

Tuy nhiên, đây là một lĩnh vực phức tạp và đầy thách thức Mã nguồn của hợp đồng thông minh thường phải đối mặt với các yếu tố như sự phức tạp của ngôn ngữ lập trình, tính chất đặc thù của các giao dịch và môi trường blockchain,

cũng như các tiêu chuẩn bảo mật khắt khe Việc phát hiện và giải quyết các lỗhồng đòi hỏi sự kết hợp giữa kiến thức về blockchain, lập trình và an ninh mạng

Trang 13

1.2 Các nghiên cứu liên quan

Trong kỷ nguyên công nghệ số hiện nay, hợp đồng thông minh đã trở thành

một phần thiết yếu của nền kinh tế kỹ thuật số Tuy nhiên, những lỗ hồng bảo

mật trong các hợp đồng này có thể gây ra nhiều rủi ro tiềm an, dẫn đến các van

đề nghiêm trọng như mất mát tài sản và lạm dụng thông tin cá nhân Để giảiquyết vấn đề này, việc phát triển các phương pháp tự động hóa hiệu quả hơn là

vô cùng cần thiết.

Kể từ khi học máy (Machine Learning) phát triển và ngày càng có nhiều

những nghiên cứu nhấm đến vào những năm gần đây, học máy và học sâu cũng

được áp dụng vào lĩnh vực phát hiện lỗ hong bảo mật của hợp đồng thông minh

và các giải pháp tiên tiến cho vấn đề này gần đây đều liên quan đến học máy.

Như Yuan Zhuang và các cộng sự[16] đã đề xuất sử dụng mạng nơ-ron đồ

thị (Graph Neural Networks - GNNs) để nâng cao độ chính xác trong phát hiện

lỗ hổng so với các phương pháp khác vào khoảng thời gian năm 2021 Cụ thể,phương pháp này xây dựng một đồ thị hợp đồng để biểu diễn cấu trúc cú pháp

và ngữ nghĩa trong hợp đồng thong minh Dé tăng cường sự quan trọng củacác nút chính, phương pháp này thiết kế một giai đoạn loại bỏ để chuẩn hóa

đồ thị Sau đó,mạng truyền thông tin thời gian (Temporal Message Propagation

Network - TMP) được đề xuất để học từ các đồ thị đã chuẩn hóa để phát hiện

lỗ hổng

Sau đó, Lejun Zhang va các cộng sự[15| cũng đề xuất là xây dựng một đồ

thị thông tin (information graph) để biểu diễn các mối quan hệ giữa các thành

phần trong hợp đồng thông minh Sau đó kết hợp nhiều mô hình khác nhau như Convolutional Neural Network(CNN), Recurrent Neural Network (RNN),

Transformer, để đưa ra phán đoán cuối cùng về lỗ hong bảo mat trong hợp

đồng thông minh Mô hình này vượt trội hơn hắn Yuan Zhuang do việc tích hợp

7 loại mô hình khác nhau.

Cuối cùng, vào năm 2023, Lei Zhang và các cộng su[9] đề xuất là xây dựng

Trang 14

mot m6 hinh phat hién 16 hổng dựa trên việc hợp nhất các đặc điểm cú pháp và

ngữ nghĩa Lei Zhang sử dụng cây cú pháp trừu tượng (Abstract Syntax Tree

-AST) và đồ thị luồng điều khiển (Control Flow Graph - CFG) để biểu diễn cú pháp và ngữ nghĩa của hợp đồng thong minh, sau đó hợp nhất các đặc điểm này

để phát hiện lỗ hổng

1.3 Những thách thức

Như đã trình bày, phát hiện được những lỗ hing tiềm tàng của một hợp đồng

thông minh không hề dễ dàng Thường những khó khăn đến từ những lí do sau:

e Sự đa dạng của ngôn ngữ viết nên hợp đồng: Hợp đồng thông minh thường

được viết bằng ngôn ngữ đặc thù như Solidity [3] (cho Ethereum) hoặc Vyper,

và ngôn ngữ này có cú pháp và cách hoạt động riêng Điều này làm cho việc

phân tích và tìm lỗ hồng trở nên phức tạp hơn so với phân tích mã nguồn

thông thường.

e Sự thay đổi của hợp đồng: Hợp đồng thông minh có thể được sửa đổi và

nâng cấp sau khi được triển khai Điều này đòi hỏi công cụ kiểm thử phải

theo kịp các thay đổi này và đảm bảo rằng các lỗ hổng không xuất hiện sau

khi hợp đồng đã được cập nhật.

e Do phức tạp của mạng lưới blockchain: Hợp đồng thông minh thường hoạt

động trong một mạng lưới blockchain phân tán, và việc tìm lỗ hong trongmôi trường phân tán này có thể phức tạp hơn so với môi trường truyềnthống Công cụ kiểm thử cần có khả năng xử lý các khía cạnh phân tán và

xác định các lỗi có liên quan.

e Phạm vi kiểm thử hạn chế: Do tính phức tạp của hợp đồng thông minh,

việc kiểm thử toàn diện có thể là không khả thi Công cụ kiểm thử tự độngchỉ có thể tìm ra các lỗi mà nó được lập trình để tìm kiếm, và có thể bỏqua những lỗ hổng khác

Trang 15

1.4 Mục tiêu, đối tượng, và phạm vi nghiên cứu

1.4.1 Mục tiêu nghiên cứu

Nghiên cứu phương pháp phát hiện lỗ hồng bảo mật hợp đồng thông minh

sử dụng cách tiếp cận học máy và biểu diễn đồ thị

1.4.2 Đối tượng nghiên cứu

Đối tượng nghiên cứu:

e Các thành phần cấu tạo nên hợp đồng thông minh

e Cách triển khai hợp đồng trên một Private chain

1.4.8 Pham vi nghién cứu,

Trích xuất các thuộc tính và chức năng ham của hợp đồng thông minh Thuc

hiện xây dựng mô hình phát hiện lỗ hổng bảo mật hợp đồng thông minh sử

dụng cách tiếp cận học máy và biểu diễn đồ thị và đánh giá khả năng phát hiện

lỗ hong bảo mật hợp đồng thông minh của phương pháp đã nghiên cứu

1.4.4 Cấu trúc của khóa luận tốt nghiệp

Chúng tôi trình bày nội dung của khóa luận theo cấu trúc như sau:

Trang 16

e Chương 1: Giới thiệu tổng quan về dé tài của khóa luận và những nghiên

cứu tương tự có liên quan.

e Chương 2: Trình bày cơ sở lý thuyết và những kiến thức liên quan phục vụ

cho đề tài.

e Chương 3: Trình bày phương pháp phát hiên lỗ hong bảo mật hợp đồng

thông minh mà chúng tôi đã nghiên cứu

e Chương 4: Trình bày các thí nghiệm và đánh giá.

e Chương 5: Kết luận và hướng phát triển của đề tài

Trang 17

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ THÀNH PHẦN

LIÊN QUAN

Trong phần này chúng tôi sẽ trình bày các cơ sở lý thuyết liên quan của

nghiên cứu: Bao gồm các thành phần liên quan của hợp đồng thong minh, biểu

diễn đồ thị, mô hình học máy và học sâu.

2.1 Các thành phần liên quan đến hợp đồng thông minh

Ngôn ngữ hợp đồng: Ñgôn ngữ hợp đồng là ngôn ngữ mà hợp đồng thông minh

được viết bằng Các ngôn ngữ phổ biến trong lĩnh vực này bao gồm Solidity (cho

Ethereum), Vyper, Serpent, NEO và nhiều ngôn ngữ khác Ngôn ngữ hợp đồng định nghĩa các quy tắc và điều khoản của hợp đồng thông minh.

Môi trường blockchain: Hợp đồng thông minh hoạt động trong một môi trường

blockchain phân tán Blockchain cung cấp môi trường để triển khai và thực

thi hợp đồng thông minh Một số môi trường blockchain phổ biến bao gồm

Ethereum, Bitcoin, NEO, EOS và nhiều mạng lưới blockchain khác.

Mã nguồn hợp đồng: Mã nguồn hợp đồng là mã máy tính chứa quy tắc và logic của hợp đồng thông minh Nó được viết bằng ngôn ngữ hợp đồng tương

ứng và thường được triển khai trên mạng lưới blockchain Mã nguồn hợp đồng

xác định hành vi và chức năng của hợp đồng thông minh

Giao thức thực thi: Giao thức thực thi là một tập hợp các quy tắc và thuật

toán được sử dụng để thực thi hợp đồng thong minh trên mạng lưới blockchain

Giao thức thực thi dam bao rằng các hành động trong hợp đồng được thực hiện

một cách đáng tin cậy và an toàn.

Giao dịch và sự kiện: Hợp đồng thông minh tương tác với các giao dịch va

sự kiện trong mạng lưới blockchain Giao dịch là các hoạt động như chuyển tiền

Trang 18

hoặc thay đổi trạng thái của hợp đồng thong minh, trong khi sự kiện là các

thông báo hoặc tín hiệu từ mạng lưới blockchain mà hợp đồng thông minh phan

ứng và thực hiện các hành động tương ứng.

Trong nghiên cứu này, chúng tôi chỉ chọn hợp đồng được viết bằng ngôn ngữ

Solidity và được triển khai trên mạng Ethereum Điều này có các lí đo sau đây:

e Độ phổ biến: Solidity là ngôn ngữ hợp đồng thông minh phổ biến nhất

cho mạng Ethereum và có cộng đồng lớn, đông đảo Việc chọn Solidity

đảm bảo rằng có nhiều tài liệu, ví dụ và công cụ hỗ trợ để nghiên cứu

va phát triển hợp đồng thông minh

Da dang dataset: Sự pho biến của Solidity din đến nguồn dữ liệu

phong phú, cho phép thu thập, phân tích và đạt được kết quả tích

cực.

Tính ứng dụng cao: Ethereum là một mạng lưới blockchain có hiệu

suất và tính mở rộng tương đối tốt, cho phép triển khai hợp đồng

thông minh với quy mô lớn và giao dịch nhanh chóng Việc nghiên

cứu và phát triển hợp đồng thông minh trên Ethereum có thé đáp

ứng được yêu cầu hiệu suất và tính mở rộng của các ứng dụng thực

tê œx

2.2 Các lỗ hồng phổ biến

Một số lỗ hồng tồn tại phổ biến hiện nay mà chúng tôi tìm hiểu trong quá

trình nghiên cứu:

e Suicidal: Hacker có thể tan dụng một giao diện không được bảo vệ để

phá hủy một hợp đồng bị lỗ hổng này Câu lệnh tiềm năng dễ bị tấncông liên quan đến lệnh selfdestruct Hacker có thể lựa chọn bất kỳ

hợp đồng nào được đặt trên blockchain.

Trang 19

e Call injection: Hacker gọi một hàm nhạy cảm, ví dụ như chuyển quyền

sở hữu, của một hợp đồng nạn nhân Các câu lệnh tiềm năng dễ bị tấn công bao gồm lệnh call, callcode và delegatecall.

e Chuyển giá trị tùy ý (ví dụ: Reentrancy) : Hacker chuyển đổi token

hoặc ether từ một hợp đồng nạn nhân; nếu việc chuyển khoản được

lặp lại, chúng tôi gọi đó là cuộc tấn công tái nhập Chức năng tiếp

thu lỗ hồng ở đây là cuộc gọi của call.value

e Integer overflow/underflow : Tran số hoặc tràn số thực cho một biến

số nguyên có độ dài cố định Các câu lệnh tiếp thu lỗ hổng là cáchướng dẫn add, sub và mul Nếu lỗ hổng nằm trong một chức năng

mà bất kỳ hợp đồng nào cũng có thể gọi, kẻ thù cũng có thể là bất kỳ

hợp đồng nào nằm trên blockchain, không có quyền truy cập vào các chức năng đặc quyền, vi dụ như chức năng có modifer onlyOwner Nếu

lỗ hồng nằm trong một chức năng mà chỉ các hợp đồng đặc biệt có

thể gọi, kẻ thù cũng là các hợp đồng đặc biệt đó nằm trên blockchain

Ví dụ, trong đoạn mã dưới, kẻ tấn công gọi hàm attack (dòng 23) trong hợp đồng Attack, điều này sẽ thực thi ham withdraw trong hợp đồng Reentrance tai dòng 24 Khi hợp đồng Reentrance thực thi hàm withdraw (dòng 3), nó sẽ sử

dụng một câu lệnh gọi để gửi ether đến hợp đồng Attack (dòng 6) Tuy nhiên,

trong ngôn ngữ Solidity, khi một tài khoản bên ngoài hoặc hợp đồng khác gửi ether đến một địa chỉ hợp đồng, hàm fallback của hợp đồng được gọi sẽ được

thực thi Do đó, vào thời điểm này, hợp đồng Attack phản hồi việc chuyển tiền

bằng hàm fallback của Attack (dòng 27) Hàm fallback của Attack gọi lại hàm

withdraw của Reentrance để rút ether một lần nữa (dòng 29) Do đó, hợp đồng

Attack sẽ tiếp tục rút tiền từ hợp đồng Reentrance cho đến khi hết gas và câu

lệnh trừ số lượng token được giữ bởi hợp đồng Attack chỉ được thực thi một lần

duy nhất.

Trang 20

| contract Reentrance{

2 mapping (address=>uint) public balance;

3 function withdraw(uint _amount) {

12 function() public payable{}

I§ contract Attack{

19 Reentrance public entrance;

20 constructor(address _target) public{

26 /fanname function is the fallback function

27 function() public payable{

28 // re-enter the Reentrance contract

29 entrance.withdraw(0.5 ether);

Hình 2.1: Ví dụ vé lỗ hong Reentrancy

2.3 Tree-sitter

Tree-sitter[1] là một công cụ hiện đại và có cách sử dung đa dạng để phân

tích cú pháp, được thiết kế để tạo ra các cây cú pháp trừu tượng (AST)[14] một

cách hiệu quả và chính xác Tree-sitter có thể được sử dụng cho nhiều ngôn ngữ

lập trình khác nhau và hỗ trợ nhiều tính năng tiên tiến.

Trang 21

Các đặc điềm chính của Tree-sitter:

e Hiệu suất cao: Tree-sitter được thiết kế để phân tích cú pháp nhanh và hiệu

quả, có khả năng xử lý mã nguồn lớn một cách nhanh chóng Nhờ sử dụng

các kỹ thuật tiên tiến, Tree-sitter giảm thiểu thời gian phan tích và tối ưu

hóa việc sử dụng tài nguyên hệ thống.

e Khả năng cập nhật động (Incremental parsing): Tree-sitter hỗ trợ cập nhật

động, cho phép tái phân tích chỉ các phần thay đổi của mã nguồn mà không

cần phân tích lại toàn bộ tệp Điều này rất hữu ích trong các ứng dụng biên tập mã nguồn và IDE, nơi mã nguồn thường xuyên được chỉnh sửa.

e Da ngôn ngữ: Tree-sitter có khả năng hỗ trợ nhiều ngôn ngữ lập trình khác

nhau thông qua việc sử dụng các ngữ pháp (grammars) cụ thể Các ngữ

pháp này được định nghĩa dưới dạng các tệp JSON hoặc JavaScript, giúp

dễ dang mở rộng và tùy chỉnh.

e Cấu trúc cây cú pháp rõ ràng và có thể truy vấn: Cây cú pháp được tạo ra

bởi Tree-sitter rất chỉ tiết và có thể được truy vấn dễ dàng Tree-sitter cungcấp API để truy vấn và duyệt cây cú pháp, cho phép người dùng trích xuấtthông tin cụ thể từ mã nguồn

e Tích hợp tốt với các công cụ và môi trường phát triển: Tree-sitter có thể

tích hợp dễ dàng với các môi trường phát triển tích hợp (IDE) và các công

cụ phân tích mã nguồn Nó được ứng dung rộng rãi trong các trình soạn

thảo mã như Visual Studio Code, Atom, và nhiều dự án mã nguồn mở khác.

Sử dụng Tree-sitter để phát hiện lỗ hổng bảo mật hợp đồng thông minh đóng

vai trò quan trọng nhờ các khả năng sau:

e Phân tích cú pháp hợp đồng thông minh: Tree-sitter có thể tạo ra AST từ

mã nguồn của hợp đồng thông minh, giúp phân tích cú pháp và logic của

Trang 22

hợp đồng Việc này giúp xác định các cấu trúc nguy hiểm và các hành vi

không an toàn trong mã nguồn.

e Phát hiện mẫu lỗ hồng: Sử dụng AST được tạo ra bởi Tree-sitter, các công

cụ phân tích có thể tìm kiếm các mẫu mã tương ứng với các lỗ hồng bảomật phổ biến Các mẫu này có thể bao gồm reentrancy, integer overflow,

race conditions, và các lỗ hồng logic khác.

e Tích hợp với học máy: AST từ Tree-sitter có thể được sử dụng làm đầu vào

cho các mô hình học máy, giúp cải thiện khả năng phát hiện 16 hong bằngcách nhận diện các mẫu phức tạp và ngữ cảnh cụ thể Các mô hình họcmáy có thể học từ dit liệu mã nguồn và phát hiện các lỗ hổng mới mà cácphương pháp phân tích tĩnh truyền thống có thể bỏ sót

2.4 Cây cú phấp trừu tượng (AST)

Cây cú pháp trừu tượng (Abstract Syntax Tree - AST) là một cấu trúc dữ

liệu dạng cây dùng để biểu diễn cú pháp của mã nguồn trong một ngôn ngữ lập

trình AST trừu tượng hóa mã nguồn bằng cách bỏ qua một số chi tiết không

cần thiết và chỉ tập trung vào cau trúc logic của chương trình Nó là một công

cụ quan trọng trong các trình biên dịch, phân tích mã nguồn, và trong việc phát

— Nút con (Child nodes): Đại diện cho các thành phần cấu trúc nhỏ hơn,

như câu lệnh, biểu thức, biến, hàm,

Trang 23

Hình 2.2: Ví dụ vé một đoạn mã nguồn đơn giản

AST tương ứng có thể được biểu diễn như sau:

Trang 24

Hành 2.3: Câu cú pháp trừu tượng tương ứng

2.4.8 Quá trình tạo AST

Phân tích từ vựng (Lexical Analysis): Chuyển đổi mã nguồn thành một chuỗi

các token Mỗi token đại diện cho một phần tử cơ bản của ngôn ngữ (chẳng hạn

như từ khóa, toán tử, biến, số) Phân tích cú pháp (Parsing): Sử dụng các token

để xây dựng AST Quá trình này bao gồm:

e Xây dựng nút gốc: Bat đầu từ nút gốc, đại diện cho toàn bộ chương trình.

e Thêm nút con: Mỗi token được xử lý để tạo ra các nút con, xây dựng cây

từ dưới lên.

Trang 25

2.4.4 Ứng dụng của AST

AST có nhiều ứng dụng đối với mã nguồn của hợp đồng thông minh, bao gồm

những ứng dụng sau:

e Phân tích mã nguồn: AST giúp phân tích cú pháp và logic của mã nguồn

mà không cần xử lý trực tiếp văn bản mã nguồn.

e Tối ưu hóa mã: Trình biên dịch sử dụng AST để áp dụng các bước tối ưu

hóa, như loại bỏ mã thừa, tối ưu hóa biểu thức,

e Phát hiện lỗ hong bảo mật: AST cho phép phát hiện các mẫu mã không an

toàn hoặc các hành vi bất thường trong mã nguồn.

e Chuyển đổi mã nguồn: AST có thể được sử dụng để chuyển đổi mã nguồn

từ ngôn ngữ này sang ngôn ngữ khác, hoặc để tao ra mã nguồn được tối wu

hóa.

2.4.5 AST trong phát hiện lỗ hổng bảo mật hợp đồng thông minh

Trong ngữ cảnh phát hiện lỗ hổng bảo mật hợp đồng thông minh, AST được

sử dụng để:

e Phân tích cú pháp và ngữ nghĩa: AST giúp xác định các hành vi và cấu

trúc cú pháp nguy hiểm trong hợp đồng thông minh

e Phát hiện mẫu lỗ hổng: Phân tích AST giúp nhận diện các lỗ hồng phổ biến

như reentrancy, tràn số nguyên, và race conditions một cách hiệu quả.

e Tích hợp với các kỹ thuật học máy: AST có thể được sử dụng làm đầu vào

cho các mô hình học máy, giúp tăng cường khả năng phát hiện lỗ hong bảo

mật thông minh.

Trang 26

AST là một công cụ mạnh mẽ và linh hoạt cho việc phân tích mã nguồn và

phát hiện lỗ hổng bảo mật trong các hợp đồng thông minh, đóng vai trò quan

trọng trong việc bảo dam an toàn và bảo mật cho các hệ thống blockchain.

2.5 Biểu diễn đồ thị

2.5.1 Đồ thi va ứng dựng trong tiệc phân tích mã

Đồ thị là một cấu trúc toán học gồm các đỉnh (vertices) và các cạnh (edges)

nối các đỉnh với nhau Trong lĩnh vực phân tích mã, đồ thị được sử dụng để biểu

diễn các mối quan hệ và luồng điều khiển trong chương trình Các đỉnh của đồthị thường biểu diễn các thực thể trong mã như biến, hàm, điều kiện, hay cácđiểm đánh dấu quan trọng trong chương trình Các cạnh của đồ thị biểu thị cácmối quan hệ giữa các thực thể này, có thể là luồng điều khiển, phụ thuộc dữ

liệu, hoặc các tương tác khác.

Ứng dụng của đồ thị trong phân tích mã:

e Biéu diễn cấu trúc chương trình: Đồ thị được sử dụng để hiển thị cấu trúc

của chương trình một cách trực quan Ví dụ, đồ thị luồng điều khiển (CFG)biểu diễn các khối mã và các đường dẫn điều khiển giữa chúng, giúp nhìn

nhận rõ ràng các luồng thực thi trong chương trình.

e Phân tích và đánh giá độ phức tạp của mã: Thông qua việc phân tích đồ

thị, ta có thể xác định mức độ phức tạp của chương trình Điều này bao

gồm việc đánh giá số lượng và kích thước của các khối mã, phân tích các điều kiện phân nhánh, cũng như sự phụ thuộc giữa các hàm và biến.

e Phát hiện lỗ hổng bảo mật: Đồ thị cũng hữu ích trong việc phát hiện và

phân tích các lỗ hổng bảo mật trong mã nguồn Ví dụ, nó có thể giúp xácđịnh các điểm yếu trong luồng điều khiển, các đường dẫn không an toàn,

hoặc việc sử dụng biến không an toàn.

Trang 27

e Tối ưu hóa mã: Bằng cách phan tích cấu trúc và luồng điều khiển của chương

trình, đồ thị có thể hỗ trợ việc tối ưu hóa mã, ví dụ như loại bỏ các đoạn

mã không cần thiết, tối ưu hóa các vòng lặp, hay cải thiện hiệu suất thực

thi chương trình.

2.5.2 Đồ thi dòng dữ liệu (DFG)

e Dinh nghĩa: Đồ thị dòng dit liệu (DEFG){[13] là một đồ thị có các nút biểu

thị các biến chương trình và các cạnh biểu thị các mối quan hệ phụ thuộc

giữa các biến này Các mối quan hệ này thường là các dòng dữ liệu, trong

đó giá trị của một biến được truyền từ một nút đến nút khác thông qua các

lệnh gán, phép toán, hoặc hàm gọi.

e Ứng dụng: DFG hữu ích trong phân tích lưu lượng thông tin trong chương

trình, giúp hiểu rõ các luồng dữ liệu và quan hệ giữa các biến N6 cung cấp một cách nhìn tổng quát về sự phụ thuộc dữ liệu trong mã nguồn, từ đó

giúp phân tích và tối ưu hóa mã.

⁄ ~ Ũ ~ «

e Ví dụ: Trong đoạn mã result = max_value - min_value;, DFG sẽ biéu

diễn mối quan hệ dòng dữ liệu giữa result, max_value, và min_value, chỉ ra rằng giá trị của result phụ thuộc vào giá trị của max_value và

min_value.

2.5.3 Đồ thị dòng dữ liệu quan trọng (CDFG)

e Dịnh nghĩa: Đồ thị dòng dữ liệu quan trọng (CDFG)[13] là một dạng đặc

biệt của DFG, tập trung vào các nút và các mối quan hệ dòng dữ liệu quan

trọng có thé gây ra các lỗ hổng bảo mật CDFG chứa thông tin quan trọngnhư các biến liên quan đến các lỗ hong bảo mật, ví dụ như call.valuetrong 16 hổng tái nhập

e Xác định các nút quan trọng: CDFG xác định các nút quan trọng bằng cách

lựa chọn các biến ở cùng một dòng với thông tin quan trọng và có mối quan

Trang 28

hệ dòng dữ liệu trực tiếp với một nút quan trọng khác Các nút quan trọng

này được coi là các điểm nóng có thể gây ra các lỗ hổng bảo mật

° Ứng dụng trong phát hiện lỗ hổng bảo mật: CDFG hỗ trợ trong việc phát

hiện và đánh giá các lỗ hong bảo mật bằng cách tập trung vào các đườngdẫn dữ liệu quan trọng và có thể dẫn đến các lỗ hổng Bằng cách phân tích

CDFG, người phân tích có thể nhận diện các điểm yếu tiềm năng và cải

thiện tính bảo mật của chương trình.

2.5.4 Đồ thị có hướng (Directed Graph)

Một đồ thị hướng (directed graph), hay còn gọi là đồ thị có hướng, là một cấu trúc dữ liệu toán học bao gồm tập hợp các đỉnh và tập hợp các cạnh, mỗi cạnh chỉ ra một hướng duy nhất từ một đỉnh nguồn đến một đỉnh đích Điều

này có nghĩa là các cạnh trong đồ thị hướng có thứ tự cụ thể, đi từ một đỉnh

(nguồn) và chỉ đến một đỉnh khác (đích).

Các thành phần chính của đồ thị hướng:

e Dỉnh (Vertices):

— Đồ thị hướng bao gồm một tập hợp các đỉnh, mỗi đỉnh đại diện cho

một thực thể hoặc một đối tượng

— Ví dụ, trong một đồ thị biểu diễn mối quan hệ giữa các thành phần

trong một chương trình, các đỉnh có thể biểu thị cho biến, hàm, lớp,

hoặc các thành phần khác của chương trình.

e Cạnh (Edges):

— Mỗi cạnh trong đồ thị hướng đi từ một đỉnh nguồn đến một đỉnh đích

và biểu thị một mối quan hệ hướng giữa chúng

— Các cạnh có thể có hướng duy nhất, nghĩa là từ một đỉnh A có thể có

cạnh chỉ đến một đỉnh B mà không có cạnh ngược lại từ B đến A.

Trang 29

e Hướng (Direction):

— Hướng của cạnh quyết định chiều di của dit liệu hoặc mối quan hệ giữa

các đỉnh.

— Ví dụ, trong một đồ thị biểu diễn luồng điều khiển của chương trình,

mỗi cạnh từ một khối lệnh đến khối lệnh tiếp theo chỉ ra thứ tự thực

hiện của các câu lệnh.

e Cấu trúc và ứng dụng:

— Đồ thị hướng được sử dụng rộng rãi trong nhiều lĩnh vực, bao gồm khoa

học máy tính, phân tích dữ liệu, công nghệ thông tin, mô hình hóa quá

trình, và nhiều lĩnh vực khác.

— Trong lĩnh vực phân tích chương trình, đồ thị hướng có thể giúp xác

định các luồng điều khiển, phân tích phụ thuộc dữ liệu, phát hiện lỗhồng bảo mật, và cải thiện hiệu suất chương trình

e Ví dụ đơn giản:

— Ví du, giả sử chúng ta có một đồ thị hướng biểu diễn các lớp và quan

hệ giữa chúng trong một ứng dụng Các đỉnh có thể biểu diễn các lớp(Class A, Class B, Class C), và các cạnh có thể biểu thị các mối quan

hệ giữa chúng (Class A kế thừa từ Class B, Class B sử dung Class C).

2.6 Machine Learning

2.6.1 Khai niém

Machine learning (học máy) là một lĩnh vực của trí tuệ nhân tao (Artificial

Intelligence - AT) tập trung vào việc phát triển các thuật toán và mô hình đểmáy tính có thể tự động học từ dữ liệu và cải thiện hiệu suất của mình theo thời

gian Trong machine learning, các thuật toán được áp dụng để phan tích và học

Trang 30

hỏi từ các mẫu dữ liệu, từ đó đưa ra các dự đoán hoặc quyết định dựa trên dữ

liệu mới mà chưa được lập trình cụ thể.

2.6.2 Kha năng tự học

Quá trình machine learning bắt đầu bằng việc xử lý dữ liệu đầu vào Dữ liệu

thô được lựa chọn và tiền xử lý để loại bỏ dữ liệu không cần thiết và sắp xếp

chúng thành nhóm có cấu trúc Các thuật toán machine learning sau đó được Ap

dụng để phân tích dữ liệu và tạo ra các phương án tối ưu Các phương án nàyđược đánh giá và kiểm nghiệm trong các điều kiện giả định để chọn ra phương

án cuối cùng phù hợp nhất với bài toán.

Sd, Learning "-: Deploy selected modelPre-processing

a Se 8-2 -@ „>8

Raw Data Structured data Candidate Model

Hình 2.4: Sơ đồ tự học của Machine Learning.

Quá trình này là 1 chuỗi khép kín, vận hành và chuyển hóa liên tục Quá

trình chi tiết bao gồm:

e Xử lý dữ liệu đầu vào: Dữ liệu thô được chọn lọc và tiền xử lý để loại

bỏ nhiễu và sắp xếp thành các nhóm có cấu trúc nhất định.

e Áp dụng thuật toán: Các thuật toán machine learning được sử dụng để

phân tích và học hỏi từ dữ liệu Các thuật toán này có thể là phân loại,học tăng cường, hoc không giám sát, hoặc kết hợp các phương pháp để datđược mục tiêu cụ thể

e Đánh giá và chọn lựa: Các phương án được đánh giá dựa trên hiệu suất

Trang 31

và độ chính xác để chọn ra phương án tối ưu nhất Các phương án này sau

đó được kiểm nghiệm và cải thiện liên tục để đáp ứng yêu cầu thực tế.

2.6.3 Phan loạt

Machine Learning được chia thành 3 phân loại chính như sau:

e Hoc máy có giám sát (Supervised Machine Learning): Sử dụng dữ

liệu được gán nhãn để huấn luyện và dự đoán Các thuật toán này học từ

các ví du đã được đánh giá và đưa ra dự đoán hoặc phân loại cho dt liệu

mới dựa trên mối quan hệ giữa đầu vào và đầu ra đã biết trước.

e Hoc máy không giám sát (Unsupervised Machine Learning): Sử

dụng dữ liệu không được gấn nhãn để tự động học hỏi và phân tích các

mẫu tự nhiên trong dữ liệu Các thuật toán này giúp khám phá các cấu

trúc an trong dữ liệu và có thể áp dụng trong việc gom cụm, phân tích

thành phần chính và giảm chiều dữ liệu.

e Học máy bán giám sát (Semi-supervised Machine Learning): Kết

hợp giữa học mấy có giấm sát va không giám sát Các thuật toán này sử

dụng một lượng lớn dé liệu không được gán nhãn và một số lượng nhỏ dữ

liệu được gán nhãn để cải thiện hiệu suất và tốc độ huấn luyện

Quá trình hoc máy không chỉ là công cu mạnh mẽ để giải quyết các bài toánphức tạp mà còn là một lĩnh vực nghiên cứu đang phát triển nhanh chóng, đónggóp quan trọng vào sự phát triển của trí tuệ nhân tạo và các ứng dụng công

nghệ hiện đại.

2.6.4 Cách thức hoạt động

Quy trình hoạt động của công nghệ học máy cung cấp cho chúng ta cái nhìn

tổng quát về cách máy tính học và làm việc Cụ thể, quá trình machine learning

bao gồm các bước sau:

Trang 32

Thu thập dữ liệu (Data collection): Day là bước đầu tiên và quan trọng

nhất trong quá trình học máy Để máy tính có thể học được, bạn cần thu thập

một bộ dữ liệu phù hợp Dữ liệu có thể được thu thập từ nhiều nguồn khácnhau, nhưng cần phải đảm bảo tính chính xác và đáng tin cậy từ nguồn gốc để

đạt được hiệu quả cao nhất.

Tiền xử lý (Preprocessing): Bước này dùng để chuẩn hóa và chuẩn bị dữ

liệu trước khi đưa vào huấn luyện mô hình Các hoạt động trong tiền xử lý bao

gồm loại bỏ dữ liệu nhiễu, chuẩn hóa dữ liệu, gán nhãn, mã hóa các đặc trưng,

trích xuất thông tin cần thiết và thu gọn dữ liệu sao cho vẫn đảm bảo chất lượng kết quả Bước này thường mất nhiều thời gian và chiếm tỷ lệ lớn trong quá trình thực hiện, đặc biệt là khi có nhiều dữ liệu phức tạp.

Huấn luyện mô hình (Training model): Sau khi đã tiền xử lý dữ liệu,bạn sẽ huấn luyện mô hình máy học trên bộ dữ liệu đã được chuẩn bị Quá trình

này bao gồm cung cấp dữ liệu đầu vào cho mô hình và cho phép nó học hỏi từ

các mẫu dữ liệu để tối ưu hóa và điều chỉnh các tham số

Đánh giá mô hình (Evaluating model): Sau khi đã huấn luyện mô hình,

bạn cần đánh giá hiệu suất của nó Độ chính xác của mô hình trên một tập dữ

liệu thử nghiệm được sử dụng để đánh giá Độ chính xác thường được xem là

tốt nếu vượt qua một ngưỡng nhất định, ví dụ như trên §0%.

Cải thiện (Improvement): Nếu mô hình không đạt được độ chính xác mong muốn, bạn cần tiếp tục cải thiện bằng cách đào tạo lại mô hình với các

thay đổi trong tiền xử lý hoặc thay đổi thuật toán Quá trình này lặp đi lặp lại

cho đến khi đạt được hiệu suất mong muốn.

2.7 Học sâu (Deep Learning)

Học sâu là một lĩnh vực của Trí tuệ nhân tao (Artificial Intelligence) tập

trung vào việc xây dựng và huấn luyện các mô hình máy học sâu để tự động học

từ dữ liệu cho trước Phương pháp này được lấy cảm hứng từ cách hoạt động

Trang 33

của não người, trong đó mạng nơ-ron sinh học trong não xử lý thông tin qua

việc kết nối các nút nơ-ron.

Học sâu tập trung vào việc xây dựng các mô hình máy tính có khả năng học

và hiểu được những dữ liệu phức tạp, từ đó có thể thực hiện dự đoán, phân loại

và giải quyết các bài toán khó khăn Công nghệ này có ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm nhận dạng hình ảnh và video, xử lý ngôn ngữ tự nhiên, nhận dạng giọng nói, phân tích dữ liệu y tế, xe tự hành và nhiều lĩnh vực khác.

2.7.1 Một số thành phần chính của mang no-ron

Mô hình Mạng Nơ-ron thông thường sẽ có thành phần cơ bản sau:

Lớp đầu vào (Input layer)

e Lớp đầu vào này nhận dữ liệu đầu vào và truyền chúng vào mạng

nơ-ron để xử lý

e Kích thước của lớp đầu vào phụ thuộc vào đặc điểm của dữ liệu và

mục tiêu của bài toán cần giải quyết.

Lớp an (Hidden layers)

e Lớp an là nơi xảy ra quá trình biến đổi dữ liệu va trích xuất đặc trưng.

e Mỗi lớp an sẽ có một số nút nơ-ron và các kết nối giữa chúng để truyền

thông tin qua mạng nơ-ron.

Lớp đầu ra (Output layer)

e Lớp này nhận thông tin từ các lớp an và đưa ra kết quả cuối cùng của

mô hình Hình 2.5

Trang 34

@ input Layer (ềHiddenLayer @ Output Layer

Hình 2.5: Mô hình mang no-ron

Ke

2.7.2 Một sô các khái niệm khác

Overfitting

Overfitting là hiện tượng trong mạng nơ-ron khi mô hình quá tinh chỉnh cho

tập dữ liệu huấn luyện cụ thể mà nó không mang tổng quát hóa tốt cho dữ liệumới mà không biết trước Mạng nơ-ron có thể học các mẫu và quy tắc phức tạp

trong tập dữ liệu huấn luyện, đến mức nó ghi nhớ cả các nhiễu và chi tiết không

cần thiết Điều này dẫn đến mô hình quá phức tạp và khả năng tổng quát hoá

kém.

Các dấu hiệu của overfitting trong mạng nơ-ron thường là việc đánh giá trên tập dữ liệu huấn luyện thì cho kết quả rất tốt, nhưng khi đánh giá trên một tập khác thì kết quả lại có sự khác biệt lớn.

Underfitting

Trang 35

Underfitting là hiện tượng trong mạng nơ-ron không được cung cấp đủ thông

tin và dữ liệu cho quá trình huấn luyện Trong trường hợp này, mang nơ-ron chưa

đủ khả năng học các mẫu phức tạp và quy tắc trong dit liệu huấn luyện.

Các dấu hiệu của underfitting trong mạng nơ-ron thường là hiệu suất thấp

trên cả tập dữ liệu dùng để huấn luyện và tập dữ liệu dùng để kiểm tra

Lan truyền thuận (forward propagation)

Lan truyền thuận là quá trình dữ liệu khi được đưa vào mô hình sẽ đi từ các

lớp đầu vào đến các lớp ẩn rồi đến lớp đầu ra Trong quá trình lan truyền thuận,

đầu vào của mỗi nơ-ron trong mạng được tính toán dựa trên các trọng số kết

nối và hàm kích hoạt tương ứng

Quá trình lan truyền thuận bắt đầu bằng việc gán giá trị đầu vào cho các nơ-ron trong lớp đầu vào Sau đó, thông qua các kết nối trọng số giữa các nơ-ron,

di liệu được truyền qua các lớp ẩn của mạng nơ-ron Mỗi nơ-ron trong mỗi lớp

tính toán giá trị đầu ra của nó dựa trên giá trị đầu vào và hàm kích hoạt của

nó Quá trình này lặp lại cho đến khi dữ liệu được truyền qua tất cả các lớp ẩn

và đạt được lớp đầu ra Trong quá trình lan truyền thuận, mạng no-ron tính toán giá trị đầu ra dự đoán cho mỗi mẫu dữ liệu đầu vào Quá trình này cho

phép mạng nơ-ron học và thực hiện các dự đoán dựa trên các trọng số được điều chỉnh trong quá trình huấn luyện.

Lan truyền ngược (back propagation)

Lan truyền ngược là một thuật toán sử dụng để tính toán đạo hàm của hàmmất mát theo các trọng số của mạng nơ-ron, từ đó điều chỉnh các trọng số để

tối ưu hóa mạng.

Quá trình lan truyền ngược bắt đầu từ việc tính toán đầu ra của mạng nơ-ron dựa trên dữ liệu huấn luyện và các trọng số hiện tại Sau đó, đạo hàm của hàm mat mát được tính toán đối với các trọng số của mạng Dao hàm này cho biết

mức độ ảnh hưởng của từng trọng số đến sự sai khác giữa kết quả dự đoán và

giá trị thực tế.

Trang 36

Tiếp theo, đạo ham được truyền ngược từ lớp đầu ra qua các lớp trước đó

của mạng Tại mỗi nơ-ron, đạo hàm được tính dựa trên đạo hàm của các nơ-ron

trong lớp tiếp theo và trọng số kết nối tương ứng Quá trình này tiếp tục cho đến khi đạo hàm được tính toán cho tất cả các nơ-ron trong mạng.

Sau khi đã tính toán được đạo hàm của hàm mat mát theo các trọng số, các trọng số được điều chỉnh sử dụng một thuật toán tối ưu hóa như gradient descent Thuật toán gradient descent sẽ cập nhật các trọng số theo hướng giảm đạo ham, từ đó làm giảm hàm mất mát và cải thiện hiệu suất của mạng.

Ham kích hoạt (Activation function)

Ham kích hoạt được áp dung cho mỗi nút nơ-ron trong các lớp an và lớp đầu

ra để tạo ra các đầu ra phi tuyến tính và đưa ra quyết định Chúng đóng vai

trò quan trong trong việc tạo ra độ linh hoạt và khả năng học của mạng nơ-ron.

Một số loại hàm kích hoạt là:

e Hàm Sigmoid: Hàm sigmoid ánh xạ một giá trị đầu vào vào khoảng

(0, 1) Tức là khi áp dụng hầm này cho một giá trị đầu vào, nó trả về một giá trị trong khoảng từ 0 đến 1.

e Hàm Tanh: Tương tự như hàm sigmoid, hàm tanh ánh xạ giá trị đầu

vào vào khoảng (-1, 1) N6 giúp tăng cường độ dốc của đầu ra so với

hàm sigmoid.

e Hàm ReLU (Rectified Linear Unit): Hàm này trả về giá trị đầu vào

nếu kết quả tính toán lớn hơn 0 và trả về 0 nếu nó nhỏ hơn hoặc bằng

0 Hàm này giúp mô hình học nhanh hơn và dễ dàng tính toán.

e Hàm Leaky ReLU: Tương tự như ReLU, hàm Leaky ReLU trả về giá

trị đầu vào nếu kết quả tính toán lớn hơn 0 và trả về một giá trị nhỏ

hơn 0 nhân với một hệ số nhỏ nếu nó nhỏ hơn hoặc bằng 0 Điều này

giúp khắc phục vấn đề "neuron chết" trong hàm ReLU.

e Hàm Softmax: Được sử dung trong lớp cuối cùng của mạng nơ-ron để

Trang 37

ánh xạ đầu ra thành một phân phối xác suất Hàm softmax tính toán

đầu ra sao cho tổng các giá trị đầu ra bằng 1, giúp giải quyết bài toán

phân loại da lớp.

Mỗi hàm kích hoạt có ưu điểm và đặc điểm riêng, và sự lựa chọn của hàm kích

hoạt phụ thuộc vào kiến trúc mạng đang sử dung, yêu cầu của bài toán, loại dữ

liệu,

Ham mat mát (loss function)

Hàm mat mát là một hàm số dùng dé đo lường sự khác nhau giữa kết quả

dự đoán của mô hình và kết quả thực tế của tập dữ liệu Hàm này có nhiệm vụ

đánh khả năng dự đoán của mô hình và từ đó cung cấp 1 phản hồi để thay đổi

các trọng số của mô hình

Thông thường trong huấn luyên, một trong các mục tiêu là tìm ra các tham

số của mô hình sao cho hàm mất mát đạt giá trị nhỏ nhất

Có nhiều loại hàm mất mát khác nhau, dưới đây là một số hàm mất mát phổ

biến:

e Hàm Cross-Entropy: Hàm này đo lường độ chính xác của dự đoán so với

nhãn thực tế và cố gắng tối thiểu hóa khoảng cách giữa chúng Thường

được sử dụng trong các bài toán phân loại.

e Hàm Mean Squared Error (MSE): Hàm nay do lường chênh lệch bình

phương giữa giá trị dự đoán và giá trị thực tế Mục tiêu là tối thiểu hóa sai

số trung bình Thường được sử dụng trong bài toán hồi quy.

e Hàm Binary Cross-Entropy: Dược sử dụng trong bài toán phân loại nhị

phân, hàm này đo lường chênh lệch giữa xác suất dự đoán và nhãn thực tế.

e Hàm Categorical Cross-Entropy: Được sử dụng trong bài toán phân loại đa

lớp, hàm này đo lường chênh lệch giữa phân phối xác suất dự đoán và nhãn

thực tế.

Trang 38

Việc lựa chọn hàm mất mát đóng vai trò quan trọng trong việc tối đa hiêu suất của mô hình.

Batch size và Epoch

Batch size là số lượng mẫu dữ liệu được truyền qua mạng nơ-ron trong mỗi lần cập nhật trọng số Thay vì truyền từng mẫu dữ liệu một, chúng ta chia dữ

liệu huấn luyện thành các batch có kích thước nhất định Batch size ảnh hưởng đến hiệu suất và tốc độ huấn luyện của mô hình.

e Batch size lớn: Nếu chon batch size lớn, mô hình sẽ được cập nhật trọng số

ít lần hơn trong mỗi epoch, giúp tăng tốc độ huấn luyện vì phần lớn thời gian chạy sẽ được dành cho việc tính toán và không cần truyền dữ liệu qua

mạng Tuy nhiên, đòi hỏi bộ nhớ lớn hơn và có thể không khả thi đối với

bộ nhớ hạn chế.

e Batch size nhỏ: Nếu chọn batch size nhỏ, mô hình sẽ được cập nhật trong

số nhiều lần hơn trong mỗi epoch, làm cho quá trình huấn luyện chậm hơn

vì cần truyền đữ liệu qua mạng cho mỗi lần cập nhật Tuy nhiên, batch size

nhỏ có thể giúp mô hình hội tụ tốt hơn và có khả năng tìm được điểm tối

ưu cục bộ tốt hơn.

Epoch là một vòng lặp hoàn chỉnh mà mô hình học được toàn bộ tập dữ liệu

huấn luyện đã chuẩn bị Số lượng epoch tức là số lần mà mô hình được huấn

luyện trên toàn bộ dữ liệu.

e Nếu chọn số lượng epoch nhỏ, thời gian huấn luyện sẽ it,có thể dẫn đến

underfitting, tức là mô hình không học được đủ thông tin từ dữ liệu

e Số lượng epoch lớn: Nếu chọn số lượng epoch lớn, mô hình sẽ được huấn

luyện trong một khoảng thời gian dài, có thể dẫn đến overfitting, tức là môhình hoc quá mức các đặc trưng của dữ liệu huấn luyện cụ thể, din đến

hiệu suất kém trên dữ liệu mới

Trang 39

Để dễ hình dung hơn về 2 tham số này, chúng tôi lấy một ví dụ như sau:

Giả sử chúng toi dang có một bữa ăn cơm Thay vi ăn một lần hết một chén

cơm, chúng tôi muốn ăn từng muỗng cơm cho đến khi hết chén đó, sau đó chứng

tôi chuyén sang chén cơm khác Trong quá trinh nay, các khái niệm sau được áp

dụng:

e Tap dataset: Tương ứng uới tổng lượng cơm trong toàn bộ bữa ăn.

e Batch size: Số lượng hat cơm trong mỗi muỗng cơm chúng tôi ăn mỗi lần.

Điều nay quuết định số lượng đữ liệu mà chúng tôi xử ly cùng một lúc trong quá trinh huấn luyện.

e Epoch: Số bát cơm chúng tôi ăn trong toàn bộ quá trình.

Ví dụ nay giúp hành dung vé cách batch size va epoch hoạt động trong quá trình huấn luyện mang no-ron Chứng tôi chia tập dataset thành các batch (muỗng

com) uới kích thước được định trước (chén cơm - batch size) Khi huấn luyện,

chúng tôi sẽ lặp lại quá trinh nay theo số lượng epoch, tức là ăn nhiều chén cơm

tương ứng uới sô lần lặp Mục tiêu là di qua toàn bộ tập dataset (hết chén cơm)

va cập nhật các tham số của mmô hành để tối ưu hóa

Ma trận nhầm lẫn (confusion matrix)

Dây là một công cụ quan trọng trong đánh giá hiệu suất của các mô hình học

máy và các bài toán phân loại No được sử dụng dé mô tả sự tương quan giữa

các dự đoán của mô hình và các nhãn thực tế của dữ liệu.

Confusion matrix có dạng một bảng vuông chứa các giá trị đại diện cho các

kết quả phân loại Bảng được chia thành các ô, trong đó hàng thể hiện nhãnthực tế và cột thể hiện nhãn dự đoán No giúp chúng ta có cái nhìn tổng quan về

khả năng phân loại của mô hình, từ đó tính toán các độ đo đánh giá hiệu suất

như accuracy, precision, recall, F1-score, và các độ đo khác Bằng cách phan tích

confusion matrix, ta có thể hiểu rõ hơn về các loại lỗi phân loại mà mô hình gặpphải và điều chỉnh mô hình để cải thiện độ chính xác

Trang 40

2.7.3 Một số kiến trúc mang nơ-ron phổ biến trong lĩnh uực học

sâu

Mạng nơ-ron Tích chập (Convolutional Neural Network - CNN)

e Kiến trúc CNN được sử dung chủ yếu trong xử lý ảnh.

e Bao gồm các lớp tích chập (convolutional) để trích xuất đặc trưng từ

ảnh và các lớp gộp (pooling layers) để giảm kích thước của đặc trưng

e Cuối cùng, các lớp kết nối đầy đủ (fully connected layers) được sử

convolution + max pooling

nonlinearity

convolution + pooling layers fully connected layers Nx binary classification

Hình 2.6: Vi dụ vé một mô hành CNN để phân loại hành ảnh

Mạng nơ-ron Hồi quy (Recurrent Neural Network - RNN)

e Kiến trúc RNN được sử dụng trong xử lý dữ liệu tuần tự như ngôn

ngữ tự nhiên và dữ liệu chuỗi thời gian.

e Có khả năng lưu trữ thông tin trạng thái trước đó và áp dụng lặp lại

cho di liệu mới.

e Mạng LSTM (Long Short-Term Memory) và GRU (Gated Recurrent

Unit) là các biến thé phổ biến của RNN giúp khắc phục van dé mất

thông tin dài hạn.

Ngày đăng: 23/12/2024, 23:53

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN