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

Luận văn thạc sĩ Khoa học máy tính: Phương pháp tiếp cận bằng mô hình máy học để phát hiện lỗ hổng trong hợp đồng thông minh của Blockchain

77 0 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 đề Phương pháp tiếp cận bằng mô hình máy học để phát hiện lỗ hổng trong hợp đồng thông minh của Blockchain
Tác giả Bùi Tông Nha
Người hướng dẫn PGS.TS. Nguyễn Đình Thuân
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Khoa học Máy Tính
Thể loại Luận văn thạc sĩ
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 77
Dung lượng 26,4 MB

Nội dung

Trong luận văn này, tập trung vào việc phát hiện lỗi trong hợp đồng thông minh bằng cách sử dụng các mô hình máy học như K-Means, Autoencoder, Logistic Regression RF, Random Forest RF, S

Trang 1

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

BÙI TONG NHA.

PHƯƠNG PHÁP TIẾP CAN BANG MÔ HÌNH MAY HỌC

DE PHAT HIEN LO HỎNG TRONG

HỢP DONG THONG MINH CUA BLOCKCHAIN

LUAN VAN THAC SINgành: Khoa Học May Tính

Mã ngành: 8.48.01.01

TP HO CHÍ MINH - 2023

Trang 2

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

BÙI TONG NHA

PHƯƠNG PHÁP TIẾP CAN BANG MÔ HÌNH MAY HỌC DE PHÁT HIỆN LO HONG TRONG HỢP DONG THONG MINH

Trang 3

Lời đầu tiên, em xin gởi lời cảm ơn chân thành đến quý thầy cô trường Đại họcCông Nghệ Thông Tin đã tận tình day bao cho em nhiều kiến thức bé ích trong suốt

thời gian học tập tại trường, cũng như tạo điều kiện cho em thực hiện luận văn này

Kính chúc quý thầy cô luôn dồi dào sức khỏe và thành công trong cuộc sống

Đặc biệt, em xin bay tỏ lòng biết ơn chân thành, sâu sắc đến thay Nguyễn DinhThuan Thay đã tận tâm, nhiệt tình hướng dẫn và chỉ bảo cho em trong suốt quá trình

thực hiện luận văn Luận văn này sẽ rất khó hoàn thành nếu không có sự truyền đạt

kiến thức quý báu và sự hướng dẫn nhiệt tình của thầy

Xin cảm ơn tất cả bạn bè đã động viên, giúp đỡ và đóng góp nhiều ý kiến quý báu,

qua đó, giúp em hoàn thiện hơn luận văn này.

Em xin gửi lời cám ơn đến gia đình đã tạo mọi điều kiện thuận lợi về vật chất vàtỉnh thần, giúp em hoàn thành luận văn một cách tốt nhất

Và cuối cùng, em cũng không quên gửi lời cảm ơn đến tác giả của các báo cáonghiên cứu khoa học mà em đã tham khảo và tìm hiểu cho luận văn

Luận văn đã hoàn thành với một só kết quả nhất định, tuy nhiên vẫn không tránhkhỏi thiếu sót Kính mong sự đóng góp ý kiến từ quý thầy cô và các bạn

Một lần nữa, em xin chân thành cảm ơn!

TP HCM, ngày 20 tháng 07 năm 2023

Học viên

Bùi Tổng Nha

Trang 4

Tôi xin cam đoan:

1 Những nội dung trong luận văn nảy là do tôi thực hiện dưới sự hướng dẫn của

thầy PGS.TS Nguyễn Đình Thuân

2 Mọi tham khảo trong luận văn đều được trích dẫn rõ ràng tên công trình, tên

tác giả, thời gian công bố

Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, tôi xin chịu hoàn toàn trách

Trang 5

LỜI CAM ĐOAN.

hien 3

DANH MỤC CÁC KÝ HIỆU, THUẬT NGU VÀ CHỮ VIET TÁTT -¿©222czz+zz+ 6

DANH MỤC CAC BẢNG 2222222222222EE92222222221112212221111127122711121 2.21711112222111 crrrrr 7

DANH MỤC CÁC HÌNH VE, DO THỊ, -2222-222EEE22222EEE2111212222221112122272111222221111.cccrre §

600008 10

Chương 1 TONG QUAN

1.1 _ Tính cấp thiết của để tài :cccccc222222122112111111111.tE 11.11111111 xe 12

1.1.1 Giới thiệu tông quan luận văn ¿+ ¿+52 £+t+E+keEzErkerrkerkrrrkerkrrrre 12 1.1.2 Muc tiêu luận văn „ 13

1.1.3 Phạm vi và đối tượng nghiên cứu của luận văn ¿- c5 ++sexzxe+xexezxe+ 13

1.1.4 Bố cục của luận văn -¿+2+2++2CE+2+222112222211222111122711127111221112222112 E11 Le 14 1.2 Tổng quan về Blockchain và các lỗ hồng bảo mật của Blockchain -.- 15

1.2.1 Công nghệ Blockchain - c5 scccsseeeeeererrrrrrrrrrrrrrrrrre LỘ

1.2.2, Nền tảng Ethereum : 2522222 vvrrtrrrrrrrrirtirrrrtrrtrtrrtrrrrrrrrrrrree 16 1.2.3 Hợp đồng thông minh trong Blockchain : :-:ssccccceeeveeeeerrrrreerree T7 1.2.4, Các loại lỗ hông hợp đồng thông minh :-c:c-ccssereeerererrerrrrrrrrrres 18,

Chương 2 CÁC PHƯƠNG PHÁP VA MÔ HÌNH MAY HỌC PHÁT HIỆN LO HỎNG BAO MAT HỢP DONG THONG MINH co 222 2222222222211 ti ti 26

2.1 Các phương pháp phát hiện

2.2 Một số thuật toán máy học phô biến c::¿::2c¿¿222222222222EEEEEvvvvrrrrrrrrrrrirrirrrrr 26

2.2.1 Thuật toán K-Means - - 6 tt Y9 26 2.2.2 Thuật toán AutoEncoder

2.2.3, Thuật toán Logistic Regression (LR) sec thư y 31

Trang 6

2.2.6 Thuật toán Multilayer Perceptron (MLB)

2.2.7 Thuật toán Light Gradient Boosting Machine (Light MGB)

2.2.8 Thuật toán Extreme Gradient Boosting (XGBoots)

Chương 4 THUC HIEN MÔ HÌNH VA KET QUA THỰC NGHIỆM.

4.1 Tap dữ liệu sử dụng cho mô hình máy học không giám sát K-Means và AutoEncoder 53 4.1.1 Thue nghiệm mô hình K-Means we 54 4.1.2 Thue nghiệm mô hình AutoEncoder 35

4.1.3 Kết hợp thuật toán K-Means với AutoEncoder sử dung Ensemble Learning

42 Tap dữ liệu sử dụng cho mô hình máy học có giám sát Logistic Regression, XGBoost, SVM, Light GBM, MLP Classifer, Random Forest

4.2.1 Thực nghiệm mô hình Logistic Regression (LR)

4.2.2 Thực nghiệm mô hình Extreme Gradient Boosting @GBoots)

4.2.3 Thực nghiệm mô hình Support Vector Machine (SVM)

4.2.4 Thực nghiệm mô hình Light Gradient Boosting Machine (Light MGB)

4.2.5 Thực nghiệm mô hình Multilayer Perceptron (MLB)

Trang 7

4.2.7 Kết hợp thuật toán Logistic Regression, XGBoost, SVM, Light GBM, MLP

Classifer, Random Forest sử dụng Stacking Learning .-. ¿- ¿555 5++c5xccc>cc> 69

443 Kết chương

Chương 5 KET LUẬN VÀ HƯỚNG PHAT TRIEN -22:2-©222222z222222S22z+zet2vzvvrccer 71

.- 71 5.2 Hạn chế nghiên ctu ssssssssssssssessssssscceccecssesssssssnsnnsnnsssssssseeeeceeeeeessssnansnnnnnmnesseeeeeeee 71 5.3 Khuyến nghị và hướng phát triển tương la

DANH MỤC CÁC CONG BO KHOA HỌC CUA TÁC GIẢ -2-22222222zz++222E22zczerrr 73

IV 10810004.719)004/6h 74

Trang 8

: Extreme Gradient Boosting : Gradient-based One-Side Sampling

: Exclusive Feature Bundling : Gradient Boosting Decision Tree

: Artificial Neural Network : Ethereum Classic Code

: Ethereum Virtual Machine : Sum of Squared Distances

: Mean Squared Logarithmic Error

Trang 9

Bảng 4.10: Kết quả thực nghiệm mô hình XGBoost

Pseudocode thuật toán AutoEncOder ¿+ +22 + 2**+t+£eE+vexrexerrerrerree 29 Pseudocode thuật toán Logistic Regression -55ccccccscsccec-ccee 32 Pseudocode thuật toán Random TFOF€SI + 5+ S52 + ‡xsxexsxexexexexrxexrxe 33 Pseudocode thuật toán Multilayer Perceptron - 5+ -s++x+xsrcrxereree 38

Pseudocode thuật toán LightGBM . - S2 tk 4I Pseudocode thuật toán XGBOOSI Ác St SE net 43 Pseudocode thuật toán Stacking Ensemble Learning -: - 46 Pseudocode thuật toán SMOTE

Mô tả thuộc tính trong tập dữ liệu mô hình học không giám sát

Kết quả cụm huan luyện khi K = 5 Kết quả huấn luyện và thực nghiệm trên tập dit liệu với K = 5 5 Kết quả huấn luyện và thực nghiệm trên tập dữ liệu mô hình AutoEncoder 56

Số liệu đánh giá Ensemble Classification -cc¿¿2222222ccrrtttvrrxseecree 57

Tính năng của bộ dữ liệu 58

Mô hình Logistic Regression có các chỉ sô parameter tốt nhât 59 Kết quả thực nghiệm mô hình Logistic Regression -:-:ccccvvcccc: 60

Mô hình XGBoost có các chỉ số parameter tốt nhất - - OL

Bang 4.11: Mô hình SVM có các chỉ số parameter tốt nhất - : -. - Ø3 Bảng 4.12: Kết quả thực nghiệm mô hình SVM

Bang 4.13: Mô hình Light GBM có các chỉ số parameter tốt nhất OF Bảng 4.14: Kết quả thực nghiệm mô hình Light GBM

Bang 4.15: Mô hình MLP Classifier có các chỉ số parameter tốt nhất 66

Bang 4.16: Kết quả thực nghiệm mô hình MLP Classifier.

Bang 4.17: Mô hình Random Forest có các chỉ số parameter tốt nhắt - 68

Bang 4.18: Kết quả thực nghiệm mô hình Random Forest

Bảng 4.19: Kết quả so sánh mô hình đơn và mô hình Stacking

Trang 10

Hình 1.1: Cấu trúc Blockchain -2222222rtct 222 EEEtrrrirtrrrrrrriirrrirrrrrie 15

Hình 1.2: Hệ thống hợp đồng thông minh -:: £22222E2vvvvvvvvvvvvrrrrrrrrrrrrrree 17

Hình 1.3: Code mô phỏng lỗ hong Re-entrancy -:: 222zz22222222ccz+ttvzvsez 19

Hình 1.4: Code mô phỏng Delegatecall to insecure contaCfS - - 5+5 +szxex 20

Hình 2.1: Biểu đồ hiển thị cách ước tính điểm gap khúc ¿+22 28

Hình 2.2: Diagram của AutOEnCOET ¿5+ St 9 ềxvEE+kEEEkekErkekerkrkskerkrkrrrrkrkrre 30 Hình 2.3: Mô phỏng Logistic Regression ¿5-65 tk tư 31 Hình 2.4: Mô hình SVM.

Hình 2.5: Mẫu hình phẳng của quy tắc I

Hình 2.6: Mẫu hình phẳng của quy tắc 2 ccccccccsserrrrrrrrrrrrrrrrrrrrroo, 36

Hình 4.1: Biêu diễn biêu đô hình khuyu tay

Hình 4.2: Tỷ lệ phần trăm confusion matrix được huấn luyện và xác minh cho mô hình

Hình 4.4: Tổng thé đường cong (AUC) của đường cong đặc điểm hoạt động của đối tượng

(ROC) được phân loại mô hình ¿6 6111k 1 121 1211101011110 it 57

Hình 4.5: Tỷ lệ phần trăm confusion matrix và ROC được huấn luyện và xác minh cho các

mô hình Logistic Regression, ¿5:52 222 22x22 E32 21212 111 1.crree 60 Hình 4.6: Ty lệ phần trăm confusion matrix và ROC được thực nghiệm và xác minh cho các

60

Hình 4.7: Ty lệ phan trăm confusion matrix va ROC được huấn luyện và xác minh cho các

mô hình XGBoost.

mô hình Logistic Regression.

Hình 4.8: Tỷ lệ phần trăm confusion matrix và ROC được thực nghiệm và xác minh cho các

mô hình XGBoost

Trang 11

các mô hình SVM Ặ- S2 Hước

Hình 4.11: Tỷ lệ phần tram confusion matrix và ROC được huân luyện và xác minh cho các

mô hình Light GBM . - + 5+ S++x22+t#E#E22 22712 1212121711111111111 T11 re 65

Hình 4.12: Tý lệ phần trăm confusion matrix và ROC được thực nghiệm và xác minh cho

các mô hình Light GBM - ¿5+ +5 x+svrxsxeree

Hình 4.13: Ty lệ phan trăm confusion matrix và ROC được huấn luyện và xác minh cho các

mô hình MLP Classifier 66

các mô hình Random FOTeS( ¿- ¿2:52 S+‡+St2x#EEEtcxxttxekertrterrrrrerrrrrrrrrrrrrirrrrre 69

Trang 12

Trước khi Satoshi Nakamoto ra mắt Bitcoin vào năm 2009, tiền kỹ thuật số đãđược sử dụng một cách tập trung Nakamoto đã phát triển một hệ thống tiền điện tử

phi tập trung bằng cách sử dụng các tính năng mật mã một cách khéo léo Sau khi

Bitcoin trở nên phổ biến hơn, những người đam mê bắt đầu phát triển các loại tiền

điện tử khác Ethereum là một trong số đó và ngày nay là nền tảng Blockchain phổbiến thứ hai sau Bitcoin

Nền tảng Ethereum đã trở nên phô biến thông qua việc sử dụng các hợp đồng thông

minh, các chương trình máy tính chạy trên Blockchain Hợp đồng thông minh chứacác kịch bản được thực thi tự động, khi các điều khoản của hợp đồng được đáp ứng,

kích hoạt một số hành động hoặc kết quả nhất định Một khi được tải lên Blockchain,

chúng có cấu trúc không thé đảo ngược hoặc thay đổi

Vì bất cứ ai cũng có thể viết và tải lên các hợp đồng thông minh thông qua mạng

Ethereum, các lỗ hồng có thé xảy ra khi các lập trình viên nghiệp dư viết chúng Điềunày làm cho các hợp đồng thông minh dễ bị lợi dụng bởi những kẻ xấu Khi các tác

nhân độc hại tim thay backdoor trong mã, họ có thé lạm dụng hợp đồng thông minh

và tận dụng cơ hội này đề rút tiền của mọi người từ hợp đồng

Do đó, các lập trình viên hợp đồng thông minh và cộng đồng bảo mật Blockchain

bắt đầu tìm kiếm các giải pháp để ngăn chặn những khai thác này Vì hợp đồng thông

minh không thé thay đổi sau khi tải lên, lỗ hổng phải được giải quyết trước khi đưavào Blockchain Do đó, các câu lệnh dễ bị tạo thành lỗ hồng trong mã phải được kiểmtra can thận trong giai đoạn phát triển

Một số phương pháp nổi tiếng như kiểm thử phần mềm tự động (fuzzing) đã được

áp dụng cho các hợp đồng thông minh Các công cụ phân tích tĩnh và động đã đượcphát triển dé phát hiện hiệu quả các lỗ héng trong hợp đồng thông minh Tuy nhiên,

trong một số trường hợp, những công cụ này không cung cấp các kết quả chính xác

cao trong việc kiểm tra lỗi

Dé phát hiện các lỗi nguy hiểm va nâng cao độ chính xác mà không thé phát hiệnđược với công cụ, cần phải sử dụng các phương pháp nâng cao hơn, công nghệ máy

học đã được sử dụng dé phát hiện các lỗ hồng Hợp đồng thông minh cũng là một

Trang 13

lỗ hồng đã trở nên rất nồi bật trong lĩnh vực này.

Nhiều loại phương pháp máy học khác nhau, như K-Means, Autoencoder, Logistic

Regression (RF), Random Forest (RF), Support Vector machine (SVM), Multilayer perceptron (MLB), Light Gradient Boosting Machine (LGBM), Extreme Gradient

Boosting (XGBoost), đã được sử dụng dé quét các lỗ hồng trong mã hợp đồng thông

minh.

Trong luận văn này, tập trung vào việc phát hiện lỗi trong hợp đồng thông minh

bằng cách sử dụng các mô hình máy học như K-Means, Autoencoder, Logistic

Regression (RF), Random Forest (RF), Support Vector machine (SVM), Multilayer

perceptron (MLB), Light Gradient Boosting Machine (LGBM), Extreme Gradient

Boosting (XGBoost) Mục tiêu la nang cao độ chính xác và hiệu suất của việc phát

hiện lỗ hồng, giúp tăng cường bảo mật và đáng tin cậy của hệ thống Blockchain

Trang 14

phát hiện lỗ hồng bảo mật trong hợp đồng thông minh của Blockchain.

1.1 Tính cấp thiết của đề tài

1.1.1 Giới thiệu tổng quan luận văn

Ngày nay, tính bảo mật của mã hợp đồng thông minh đang gặp phải nhiều tháchthức do sự phức tạp của ngôn ngữ lập trình được sử dụng để tạo ra chương trình hợp

đồng thông minh Điều này làm cho việc đảm bảo tính bảo mật trở nên khó khăn Vấn

dé này đang trở thành một rủi ro nghiêm trọng và phổ biến đối với các hợp đồng

thông minh, bởi vì bất kỳ ai cũng có khả năng tham gia vào mạng Ethereum công

khai Hơn nữa, vì các hợp đồng thông minh thường quản lý một lượng lớn tài sản tài

chính, nên trở thành mục tiêu chính cho các cuộc tấn công mạng Khác với các chươngtrình thông thường, một khi các hợp đồng thông minh đã được triển khai, thì khôngthể thay đổi để cải thiện tính chống giả mạo Điều này tạo ra một rủi ro bảo mật

nghiêm trọng trong hệ thống

Dé kiểm tra lỗ hong của hợp đồng thông minh trong Ethereum, theo truyền thống,các nhà phát triển sẽ gửi mã của họ dé kiểm tra, quá trình này có thé mắt tới hai tuần

Dé tim ra bat kỳ lỗ hông bảo mật tiềm ẩn nào trong mã thông minh, một nhóm chuyên

gia cần tiến hành đánh giá thủ công Tuy nhiên, nhiều công cụ khác nhau đề xác định

lỗ hồng của hợp đồng thông minh, chẳng hạn như Mythril! và MAIAN), đã được pháttriển cho người dùng và nhà phát triển muốn kiểm tra và đánh giá tính bảo mật của

hợp đồng thông minh mà họ đang sử dụng hoặc xây dựng

Công nghệ mà các công cụ nay sử dụng dé quét các lỗ hong có thé rất khác nhau

Trong khi một số công cụ phụ thuộc vào phân tích tĩnh, ký hiệu hoặc động, tương

1 https://github.com/Consensys/mythril

? https://github.com/ivicanikolicsg/MAIAN

Trang 15

ứng Các loại lỗ hồng bao mật được hỗ trợ cho các công cụ này cũng có thé khác nhau

giữa mỗi loại công cụ Kha năng phát hiện lỗ hổng của các công cụ khác nhau, khácnhau từ công cụ này sang công cụ khác Ví dụ: một công cụ có thê phù hợp hơn để

xác định các loại lỗ hồng cụ thể như truy cập lại hoặc tràn so với một công cụ khác

Việc sử dụng nhiều kỹ thuật là cần thiết dé kiểm tra toàn bộ mã mặc dù những công

cụ này rất hữu ích trong việc phát hiện các lỗ hồng bảo mật ban đầu

1.1.2 Mục tiêu luận văn

Mục tiêu của luận văn là xây dựng một mô hình phát hiện lỗ hong trong hợp đồngthông minh bằng cách áp dụng các kỹ thuật máy học vào dữ liệu giao dịch trên

Blockchain Mô hình này được thiết kế dé tìm ra các lỗ hong có thé tổn tại trong hợp

đồng thông minh

Để đạt được mục tiêu thì cần nghiên cứu và tìm hiểu các mô hình phát hiện lỗ hồng

đang được sử dụng trong hợp đồng thông minh, cùng với các thuật toán tương quan

Sau đó, sẽ tiễn hành thử nghiệm mô hình trên bộ dữ liệu đã được huấn luyện dé đánhgiá hiệu suất và độ chính xác

Mục tiêu chỉ tiết của luận văn này là:

© Nghiên cứu cơ sở lý thuyết các tài liệu liên quan đến các mô hình máy học

nhận diện và phát hiện các lỗ hồng trong hợp đồng thông minh trên nền tảng

Blockchain.

e _ Nghiên cứu tập dữ liệu về giao dịch trên Ethereum Blockchain Xác định loại

dữ liệu trong tập dữ liệu để có thé ứng dụng vào bài toán phát hiện lỗ hổng

bảo mật trên hợp đồng thông minh

© _ Nghiên cứu các mô hình máy học dé ứng dụng vào bài toán, tìm hiểu và đưa

ra giải pháp state of the art nhất

¢ Trinh bày, đánh giá hiệu suất kết quả nghiên cứu mô hình trong việc phát hiện

các lỗ hồng trong hợp đồng thông minh của Blockchain

1.1.3 Phạm vi và đối tượng nghiên cứu của luận văn

Để đạt được các mục tiêu đặt ra, luận văn tiến hành thực hiện các nội dung sau:

e Tiền xử lý dữ liệu, kỹ thuật xử lý cân bằng dữ liệu sử dụng SMOTE, chia tập

dữ liệu huấn luyện và tập dữ liệu thử nghiệm

Trang 16

Khảo sát, nghiên cứu các kỹ thuật máy học được sử dụng để phân loại dữ liệu.Phân loại dữ liệu là an toàn hoặc không an toàn Các mô hình máy học nàyđược kết nối trực tiếp với Blockchain để giải quyết bài toán phát hiện các lỗhồng trong hợp đồng thông minh

Nghiên cứu phương pháp kết hợp là Stacking Learning, cụ thẻ là:

o Kết hợp mô hình học không giám sát: K-Means va Autoencoder

o Kết hợp mô hình học có giám sát: Logistic Regression, Random Forest,

Support Vector Machine, Multilayer perceptron, Light Gradient Boosting, Extreme Gradient Boosting.

Trinh bày các giải pháp máy học dé phát hiện các loại lỗ hồng khác nhau, giúp

giảm thời gian, công sức và tăng độ chính xác.

Ngôn ngữ lập trình Python, công cụ Colab của Google, các thư viện numpy, sklearn, seaborn, keras, pandas, matplotlib.

Bồ cục của luận văn

Bô cục của luận văn gôm các chương sau:

Chương 1 Tổng quan: Giới thiệu luận văn, lý do chọn luận văn, mục tiêu,phạm vi và nội dung thực hiện của luận văn.

Chương 2 Các phương pháp, mô hình phát hiện lỗ hồng: Trình bày cơ sở

lý thuyết, cách áp dụng các phương pháp, mô hình phát hiện lỗ hồng được áp

dụng trong luận văn.

Chương 3 Kiến trúc hệ thống mô hình máy học phát hiện lỗ hồng baomật hợp đồng thông minh: Trình bày về tập dữ liệu, xây dựng mô hình máy

học, kết hợp các mô hình máy học với nhau để đưa ra mô hình phát hiện lỗhồng bảo mật của hợp đồng thông minh

Chương 4 Thực hiện mô hình và kết quá thực nghiệm: Tiến hành thực

nghiệm các mô hình máy học đã được xây dựng, đưa ra đánh giá mô hình có

tốt không

Chương 5 Kết luận và hướng phát triển

Danh mục công bố khoa học của tác giả

Tài liệu tham khảo.

Trang 17

1.2 Tổng quan về Blockchain và các lỗ hổng bảo mật của Blockchain

1.2.1 Công nghệ Blockchain

Blockchain? là một số cái phân tán chứa tat cả các bản ghi giao dịch ké từ khi được

tồn tại Một bản sao của số cái này được giữ bởi những người tham gia trong các node

mạng Blockchain Điều này cho phép các bản ghi giao dịch trên các số cái này xác

minh lẫn nhau và đảm bao rằng tất cả các node có thé tin tưởng vào tính xác thực vàkhả năng xác minh của các bản ghi này Do đó, người tham gia mạng không cần bênthứ ba đáng tin cậy Công nghệ này cho phép người dùng thực hiện các giao dịch tiền

tệ ngang hàng Số cái chia sẻ được chia thành nhiều khối trong Blockchain Các khốiđược liên kết với nhau bằng cách sử dụng hàm băm mật mã và liên tục được thêm

vào mạng Blockchain [1] Mỗi khối chứa mã hash của khối trước đó đề có thể liên

két các khôi.

Header Header Header

Hash of Previous mm Hash of Previous Block Hash of Previous Block

Time Stamp Nonce Time Stamp Nonce Time Stamp Nonce

Merkle Root Merkle Root Merkle Root

Bay | Tay | [_—— xv—— |

Transaction Data Transaction Data Transaction Data

Block 0 Block 1 Block 2

Hình 1.1: Cấu trúc Blockchain.

Trong Bitcoin, khôi dau tiên được tạo ra bởi người sáng lập Bitcoin Satoshi Nakamoto

được gọi là khối Genesis Sáu khối liên tiếp được tạo ra mỗi giờ sau khi khối đầu tiênđược tạo ra Quá trình tạo khối được gọi là khai thác mỏ, được thực hiện bởi các thợ

mỏ và hoạt động thông qua cơ chế đồng thuận Cơ chế đồng thuận là một cơ chế xác

minh được sử dụng để cản trở việc tiêu thụ nhiều loại tiền điện tử và làm cho hệ thống

Blockchain bat khả xâm phạm Cơ chế đồng thuận dựa trên thuật toán Byzantine FaultTolerance, nói rằng hệ thống Blockchain có thé an toàn chống lại các cuộc tắn công

độc hại miễn là hau hết các node trung thực [2] Các cơ chế đồng thuận phổ biến nhất

Trang 18

là bằng chứng công việc Work (PoW)! và bằng chứng cổ phần

Proof-of-Stake (PoS)5.

Trong khi Proof-of-Work dựa trên sức mạnh CPU dành riêng cho thợ mỏ để giải

quyết các câu đồ băm, Proof-of-Stake dựa trên số lượng tiền mà thợ mỏ đặt cược vào

hệ thống Khai thác dựa trên PoW tốn nhiều thời gian và chỉ phí tính toán, và độ khóngày càng tăng sau mỗi 2,016 khối được tạo ra Bitcoin là hệ thống Blockchain đầu

tiên sử dụng thuật toán đồng thuận PoW

1.2.2 Nền tảng Ethereum

Ethereum là hệ thống Blockchain phổ biến thứ hai, được Vitalik Buterin ra mắt

vào năm 2014 và ra mắt vào năm 2015 Không giống như cấu trúc hoàn toàn không

có chủ của Bitcoin, Ethereum® được hỗ trợ bởi Ethereum Foundation, một tổ chức

phi lợi nhuận nhằm hỗ trợ và phát triển mạng lưới và hệ sinh thái BlockchainEthereum Ethereum đã sử dụng thuật toán đồng thuận Proof-of-Work (PoW) cho đến

tháng 9 năm 2022, sau đó chuyển sang Proof-of-Stake (PoS) khi ETH 2.0 được nângcấp Trong hệ thông PoS của Ethereum, các node có thể trở thành người xác nhận nếu

họ giữ một lượng Ether cụ thể trong tài khoản của họ Điều này cho phép họ đóng

góp và nhận phần thưởng cho mạng Ethereum PoS không yêu cầu công suất CPUhoặc tiêu thụ điện năng như PoW, làm cho tiết kiệm năng lượng hơn và có thể truy

cập bởi bất kỳ ai mà không cần mua và thiết lập phần cứng chuyên dụng như GPU

va ASIC Điều này làm cho việc phân cấp dé dàng hơn so với cấu trúc mạng

Blockchain Bitcoin Không giống như giới hạn hard-coded 21 triệu Bitcoin củaBitcoin, Ethereum cũng có nguồn cung không giới hạn Điều này làm cho Ether hơi

lạm phát so với Bitcoin Ngoài những khác biệt này, lợi thế chính của Ethereum so

với Bitcoin là vừa là một nền tảng tính toán vừa là một hệ thống tiền điện tử Ethereum

có ngôn ngữ lập trình Solidity, là Turing-complete và chạy trên máy ảo Ethereum

trên mạng Blockchain Ethereum Nhờ ngôn ngữ Solidity, người ta có thé chuyền tiềnkhông chỉ giữa các bên mà còn cả đữ liệu qua mạng Tính năng này khiến nhóm phát

triển Ethereum gọi là "máy tính của thế giới"

+ https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/

Š https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/

Š https://ethereum.org/en/foundation/

Trang 19

1.2.3 Hợp đồng thông minh trong Blockchain

Hợp đồng thông minh [3] là một loại hợp đồng ảo được hình thành từ các mã nhỏđược tải và chạy trên mạng Blockchain Có hai đặc điểm rõ ràng, đó là điều khoản

hoặc điều kiện và hành động hoặc kết quả Khi các điều kiện được đáp ứng, mã hợp

đồng thông minh được thực hiện tự động và đưa ra một số kết quả hoặc hoạt độngđược xác định trước [4] Ý tưởng về hợp đồng thông minh lần đầu tiên được đề xuất

bởi Nick Szabo vào năm 1996 Ông đề cập đến hợp đồng thông minh như là "một tậphợp các cam kết được chỉ định kỹ thuật số, bao gồm các thỏa thuận cho các bên để

thực hiện chúng" Đã không nhận được nhiều sự chú ý cho đến khi Satoshi Nakamoto

ra mắt Bitcoin vào năm 2009

Hinh 1.2: Hé thong hop đông thông minh.

hợp đồng thông minh bao gồm các bộ đếm, số dư tài khoản và lưu trữ dữ liệu Bộ

đếm là giá trị số nguyên được sử dụng đề xác minh các giao dịch, số dư tài khoản là

số tiền hợp đồng trong một thời gian nhất định và dữ liệu được lưu trữ là thông tin

mã hợp đồng Khi điều kiện hợp đồng thông minh giao dịch được kích hoạt bởi việctruyền hoặc dữ liệu từ mạng Blockchain, bytecode được thực hiện thông qua EVM

(Ethereum Virtual Machine) và số dư tài khoản của hợp đồng được cập nhật Mỗi lầnmột mã hợp đồng thông minh được thực hiện sẽ được thanh toán theo hệ thốngEthernet [5] Các khoản thanh toán này được gọi là GAS, số tiền GAS này đượcchuyên đến Người khai thác dé thúc day họ tiếp tục lưu trữ chuỗi khối Ethereum và

duy trì mạng lưới lưu trữ và duy trì Blockchain của Ethereum Một tính năng quan

trọng của hợp đồng thông minh là một khi chúng được tải lên Blockchain, thì không

thể thay đổi nguyên tắc hoạt động của Blockchain Mã hợp đồng thông minh là công

khai vì các giao dịch Blockchain, do đó bất cứ ai cũng có thể tải xuống các mã nàytrên thiết bị của người dùng và kiểm tra các chương trình giao dịch

Trang 20

Ngoài các trường hợp sử dụng hợp đồng thông minh đã đề cập ở trên, sau khi hợpđồng thông minh bắt đầu được sử dụng rộng rãi, có một lĩnh vực ứng dụng Blockchain

mới Một trong những điều quan trọng nhất là dApp’ DApp là một ứng dụng đượcviết bởi Solidity chạy trên mạng Blockchain Ethereum Trái ngược với các ứng dụngtruyền thống chạy trên một máy chủ duy nhất, dAap không có điểm lỗi duy nhất vì

back-end được duy trì thông qua Blockchain.

1.2.4 Các loại lỗ héng hợp đồng thông minh

e Re-Entrancy

Re-entrancy mô tả một tình huống khi một Contract A gọi Contract B,

và Contract B có thé gọi lại Contract A và thực thi lệnh gọi A một lần nữa

Cơ chế £a11back trong Solidity gây ra tình huống này Hàm £a11back sẽ được

thực thi khi các cuộc gọi từ các hợp đồng khác không tìm thấy một hàm tương ứng

Khi người gọi sử dụng hàm call mà không cung cấp bat kỳ chữ ký hàm nào, hàmfallback của hợp đồng đích sẽ được kích hoạt Hàm này có thể gọi lại hàm củangười gọi để tái nhập vào người gọi Cơ chế này có thể gây ra các chuyên giao Etherkhông mong muốn và không kiêm soát được trong một số trường hợp

Trong đoạn codeŠ sau đây (Hình 1.3), hàm call được sử dung dé gửi Ether

cho người gọi Ban đầu, kẻ tan công gọi hàm withdraw () trong Contract A đểyêu cầu rút một Ether Contract A sử dụng cali dé gửi Ether và không gắn kếtbat kỳ chữ ký hàm nào Hàm fallback của hợp đồng của kẻ tan công đáp ứng cuộcgọi này bằng cách gọi lại hàm withdraw của Contract A Cuộc gọi thứ hai được

coi là một cuộc gọi "lồng nhau" bên trong cuộc gọi rút tiền trước đó vì cuộc gọi trước

chưa kết thúc Đây là thời điểm mà một cuộc gọi đệ quy bắt đầu hình thành Thôngthường, người gọi sẽ nhận được một Ether và số dư của người gọi sẽ bị trừ đi khi thực

thi lệnh balances [msg.sender]-=_amount; Tuy nhiên, trong tình huống

tái nhập, lệnh này sẽ không bao giờ được thực thi vì hàm call ở phía trên dòng nay

sẽ dẫn đến việc gọi đệ quy hàm withdraw() cho đến khi tổng số dư củaContract A nhỏ hon một Ether hoặc giới han gas đã đạt đến

7 https://ethereum.org/en/developers/docs/dapps/

8 https://solidity-by-example.org/hacks/re-entrancy/

Trang 21

contract A {

mapping (address => uint) public balances;

function withdraw(uint _amount) public {

msg.sender.call{value: _anount}(**??);

balances[nsg.sender] -= _amount;

} }

Hình 1.3: Code mô phỏng lỗ hồng Re-entrancy

Biện pháp phòng tránh: Có ba kỹ thuật dé ngăn chặn re-entrancy Kỹ thuật đầu

tiên là hạn chế việc sử dụng ham call mỗi khi có thé Ham transfer có thé được

sử dụng để gửi Ether cho các tài khoản khác Hàm này chỉ gửi 2300 gas với cuộc gọi

bên ngoài, do đó Contract được gọi sẽ không có đủ gas dé re-entrancy vào hợpđồng gọi Kỹ thuật thứ hai là thêm một “lock", thường là một biến trạng thái chothấy trạng thái của các cuộc gọi bên ngoài và chỉ cho phép cuộc gọi bên ngoài nếu

trạng thái đúng Kỹ thuật thứ ba là thực hiện tất cả các thay đổi logic trước khi hàm

call được thực thi.

e Arithmetic Issues

Trong Solidity, kiều số nguyên có một phạm vi cu thể Trong các phép toán sốhọc trên biến, giá trị của chúng có thể vượt ra ngoài giới hạn trên hoặc dưới Trong

trường hợp này, giá trị sẽ wrap-around, tức là quay trở về phía bên kia của giới hạn

Ví dụ: nếu giá trị thực lớn hơn giới hạn trên, thì giá trị thực sẽ được trừ đi giới hạntrên dé trở thành giá trị thực tế Trong các phiên bản trước của Solidity, sự bat thường

này không kích hoạt bat kỳ cảnh báo nào Kẻ tan công có thé tăng hoặc giảm giá trị

số nguyên cụ thé dé lừa hợp đồng thông minh thực hiện hành vi không mong muốn

Solidity cũng không hỗ trợ các số thập phân Việc biểu diễn các số thực trong hợp

đồng thông minh phải được xử lý bằng các kiểu số nguyên Ví dụ: trong thiết kế củaERC20 (tiêu chuẩn mã thông báo), só thập phân được sử dụng dé biểu thị số chữ sốsau dau thập phân

Phép chia trong Solidity luôn làm tròn xuống, nghĩa là chỉ giữ lại phần số

nguyên gần nhất Mắt thông tin sau dau thập phân có thé gây ra van đề nghiêm trọngkhi cần độ chính xác cao hơn

Trang 22

Biện pháp phòng tránh: Do lỗ hồng số học nằm trong Solidity, nên việc sử đụngthư viện được kiểm tra, thiết kế tốt như SafeMath do Openzepplin° cung cấp thay vì

các phép tính số học tích hợp sẽ giảm thiểu rủi ro

¢ Delegatecall to Insecure Contracts

Delegatecall là một chức năng đặc biệt trong Solidity Giống như chức năng gọi

với một điểm khác biệt chính Delegatecall sử dụng lại các mã của hợp đồng được

gọi và thực thi chúng trong ngữ cảnh của người gọi Ví dụ: trong đoạn mã sau trong

(Hình 1.4), msg.sender, msg.data trong hợp đồng VulnerableContract sẽ là

địa chỉ và dữ liệu của người gọi và các biến trạng thái sẽ sử dụng hợp đồng của người

gọi Một khi hợp đồng InsecureContract được gọi thông qua Delegatecall, hàmdoSomething được thực thi trong ngữ cảnh của người gọi, trong đó chủ sở hữu biến

trạng thái của người gọi trong hợp đồng VulernableContract sẽ có một sửa đổi khôngmong muốn Khối VulnerableContract không cung cấp bat kỳ cách nào dé thay đổi

quyền sở hữu sau khi được xây dựng Tuy nhiên, khi kẻ tan công gọi hợp đồng này

tại một thời điểm thực thi nhất định, sẽ ủy quyền cuộc gọi InsecureContract trong đó

chủ sở hữu biến trạng thái được sửa đổi thành giá trị mới của msg sender, là địa

chỉ của kẻ tấn công Nói cách khác, delegatecall cung cấp cho các hợp đồng khác,

chẳng hạn như InsecureContract, quyền thay đồi các biến trạng thái, chang hạn nhưđịa chỉ chủ sở hữu chung Điều này là do ngữ cảnh bảo tồn hàm ủy nhiệm

— tes evermore “Openness

¢ = InsecureContact (_c);

©.đelegateca11 (abi encodeWithSignature(‘‘doSomething()’*));

a s public owner;

function doSomething() public {

owner = neg sender:

Lt

Hình 1.4: Code mô phỏng Delegatecall to insecure contracts.

Biện pháp phòng tránh: Vi delegatecall khai thác su thay đổi ngữ cảnh của hợpđồng thông minh, điều đầu tiên cần làm là kiểm tra ngữ cảnh có thé có của hợp đồng

' https://docs.openzeppelin.com/contracts/2.x/api/math

Trang 23

và thư viện gọi hoặc các hợp đồng khác Solidity cũng cung cấp từ khóa Thư viện để

hạn chế sắp xếp các vị trí biến trạng thái với các biến trạng thái của người gọi Thưviện Solidity không thé có biến trạng thái, vì vay sẽ không có chuyền đổi ngữ cảnh

và thay đổi trái phép các biến trạng thái của người gọi

e Selfdestruct

Lệnh Selfdestruct trong Solidity cho phép hợp đồng bị xóa khỏi

Blockchain Tuy nhiên, việc sử dụng lệnh này rất nguy hiểm vì nếu không cập nhậtđịa chỉ của hợp đồng mới, vẫn có thể có người gửi Ether đến hợp đồng đã bị xóa, dẫnđến mat mát Ether Hơn nữa, quá trình này yêu cầu gửi số Ether còn lại trong hợpđồng đến một địa chỉ được chỉ định

Kẻ tan công nguy hiểm có thé tận dụng hành vi này dé ép buộc gửi Ether cho

một số hợp đồng Số Ether trong hợp đồng nạn nhân có thẻ bị thay đổi bằng cách sửdụng lệnh force-send này, đặc biệt là khi số Ether này được sử dụng làm điều kiệncho một số hoạt động cụ thé

Biện pháp phòng tránh: Dé tránh tình huống Selfdestruct không mongmuốn, cần can trọng khi thực hiện cuộc gọi từ bên ngoài Trong quá trình chờ đợi,logic của hợp đồng nên không phụ thuộc vào giá trị của this balance, vì có thé

bị kẻ tấn công có tình thay đồi

se Randomness Generation

Trang 24

Randomness Generation là một van đề đối với nhiều ngôn ngữ lập trình Quá

trình tạo giả ngẫu nhiên tận dụng một số seeds bí mật nhất định đề đạt được mức độngẫu nhiên Tuy nhiên, seeds không thé được lưu trữ riêng trên chuỗi trong hợp đồng

thông minh trong Solidity vì mọi thứ trên chuỗi khối đều hiển thị cho những người

tham gia Thực tiễn hiện tại đang sử dụng thông tin liên quan đến khối nhưblock.timestamp hoặc block.hash Nếu timestamp hoặc hàm băm củakhối lịch sử được sử dụng, kẻ tấn công có thê sử dụng cùng một quy trình tạo số ngẫunhiên dé thu được kết quả tương tự vì khối lich sử không bao giờ thay đổi Nếu sử

dụng các khối trong tương lai, quy trình có thể dễ bị ảnh hưởng bởi những kẻ khaithác độc hại, những người có thể cố ý chọn các giao dịch và lệnh thực hiện của chúng

Biện pháp phòng tránh: Thông tin liên quan đến khối không nên được sử dụng

làm nguồn entropy cho tính ngẫu nhiên Nguồn phải nằm ngoài môi trường

blockchain.

¢ tx.origin

Tx origin là một biến toàn cục duy nhất trong Solidity Lưu trữ địa chỉ củangười gọi ban đầu của một giao dịch, không giống như msg sender, là người gọingay lập tức Do đó, tx origin luôn là địa chỉ của tài khoản bên ngoài Nếu biến

này được sử dụng làm tham số ủy quyền, danh tính của chủ sở hữu thực sự của hợp

đồng thông minh có thé bị khai thác Chang hạn, nếu yêu cầu (tx.origin ==owner), được gọi bởi hợp đồng của kẻ tấn công, được gọi bởi chủ sở hữu thực su,

kẻ tấn công có thể tiếp tục thực thi mã để tấn công

Biện pháp phòng tránh: Những kẻ tấn công có thể chạy mã dưới tên

tx.origin?® của người gọi, vì vậy đừng bao giờ sử dụng tx origin trong xác minh hoặc xác thực danh tính.

Trang 25

delegatecall(), staticcall() sẽ tìm cách khác khi gặp lỗi Thông

thường, khi tìm thấy một ngoại lệ, các giao dịch sẽ được reverted và gas bị tiêu thụ,

nhưng nếu các chức năng cấp thấp gặp lỗi (ví dụ: ngăn xếp cuộc gọi đã cạn kiệt),chúng sẽ trả về giá trị sai mà không có bắt kỳ ngoại lệ nào Bất kỳ giao dịch nào được

thực hiện trước các chức năng đó sẽ không được reverted và gas sẽ được sử dụng.

Nói cách khác, khi sử dụng các hàm cấp thấp, giá trị trả về sai cần được lưu ý và xử

ly đúng cách, nếu không, tính bảo mật của hợp đồng thông minh sẽ bị ảnh hưởng

Biện pháp phòng tránh: Theo đề xuất của Tài liệu Solidity'' , không nên sử dụng

các chức năng cấp thấp bat cứ khi nào có thé Chức năng chuyển có thé được sử dụng

để chuyền Ether sang các tài khoản khác Nếu phải sử dụng các hàm cấp thấp đó, tốthơn là kiểm tra mọi giá trị trả về của các hàm đó và xử lý các giá trị sai

e Timestamp Dependence

Blocks trong Ethereum được tạo ra trong quá trình khai thác, trong đó người

khai thác có một mức độ độc đoán nhất định để quyết định timestamp của toàn bộblocks Phạm vi thời gian trước đây là 900 giây, nhưng nó đã bị thu hẹp xuống còn

vài giây sau khi nâng cấp Tất cả các giao dịch được ghi trên block có cùng

timestamp Vì công cụ khai thác có thê quyết định timestamp cho các giao dich,

nên một số ứng dụng nhất định hoạt động chính xác dưới các ràng buộc về thời gian

sẽ dé bị các công cụ khai thác độc hại tan công Timestamp cũng được sử dụng làm

hạt giống khi tạo số ngẫu nhiên Những kẻ tấn công có thé thao ting timestamp

của một khối đề kích hoạt các hành vi dự kiến từ hợp đồng thông minh

Biện pháp phòng tránh: Sử dụng block.number là lựa chọn tốt hơn

block.timestamp Vì tốc độ tạo khối thường là 10 giây, nên sẽ có khoảng 60.480khối trong một tuần Bằng cách chỉ định số khối trong tương lai, ước tính thời gian đi

kèm với số khối trong tương lai này

e Transaction Order Dependence

Vi các giao dich thay đổi trang thái của thé giới từ trạng thái này sang trang thái

khác, trạng thái thế giới hoặc trạng thái của hợp đồng phụ thuộc vào thứ tự thực hiện

Trang 26

các giao dịch Người khai thác (miner) quyết định thứ tự thực hiện một cách tùy ý,

và tính không xác định của thứ tự thực hiện này làm cho việc dự đoán trạng thái trước

khi các giao dịch được gửi đi trở nên khó khăn Trong tình huống thực tế, khi một

giao dịch phụ thuộc vào trạng thái của hợp đồng, một thứ tự thực hiện khác có thể

gây ra những van dé nghiêm trong như mua hoặc bán các mặt hang với giá không

mong đợi [6].

Biện pháp phòng tránh: Lệnh giao dịch bị ảnh hưởng bởi các tài khoản trả giá

gas cao hơn hoặc những người khai thác quyết định lệnh Nếu giới hạn trên được đặt

cho giá gas, một phần giao dịch sẽ không bị khai thác bởi những kẻ tấn công sẵn sàng

trả giá gas cao hơn.

¢ Default Visibility

Solidity có các chỉ định khả năng hiền thị, công khai, riêng tư, bên ngoài và nội

bộ dé kiểm soát khả năng hiển thị của các chức năng và biến từ bên ngoài hợp đồng.Mặc định, khi không được chỉ định, công khai được sử dụng làm mức độ hiền thị.Nếu nhà phát triển không xác định rõ ràng chức năng chỉ được sử dụng bên trong làriêng tư, thì chức năng đó có thé được gọi từ bên ngoài hợp đồng, dẫn đến việc thực

thi không mong muốn

Biện pháp phòng tránh: Một thực hành tốt là luôn xác định rõ ràng các mức độhiển thị trong Solidity Hơn nữa, Solidity cũng cung cấp cảnh báo cho các chức năngkhông có mức độ hiển thị được xác định khi biên dịch, giúp nhà phát triển phát hiện

và sửa lỗi trong quá trình phát trién

e External Contract Referencing

Hợp đồng thông minh đôi khi cần sử dụng lại mã của các hợp đồng khác bằng

cách tham chiếu đến địa chi của chúng Ví dụ: một nhà phát trién có thé khởi tạo mộtthư viện bên ngoài trong hàm khởi tạo của hợp đồng của mình Địa chỉ của thư viện

sẽ được cung cấp trong quá trình triển khai Điều này có vẻ hợp pháp và an toàn khikiểm tra mã Tuy nhiên, nếu địa chỉ sai được cung cấp trong quá trình triển khai, lỗ

hồng bảo mật có thể xảy ra khi một hợp đồng độc hại (honey pot) có thé được gọi từ

địa chỉ không đúng.

Trang 27

Biện pháp phòng tránh: Một biện pháp phòng tránh có thể là mã hóa cứng cácđịa chỉ bên ngoài thành mã của hợp đồng nếu chúng được công khai hoặc sử dụng

các từ khóa mới để tạo hợp đồng thay vì nhập địa chỉ trong quá trình triển khai

e Short Address/Parameter Issues

Các tham số của chức năng trong hợp đồng thông minh được mã hóa trước khi

được truyền vào Tham số được mã hóa có độ dài là 32 byte, và EVM (Ethereum

Virtual Machine) sẽ ghép tat ca các tham số mã hóa lại với nhau và đệm 0 ở cuối nếucần Tuy nhiên, nếu tham số đầu tiên không đủ độ dài, ví dụ như chỉ 30 byte, điềunày sẽ gây ra dịch chuyền 2 byte sang trái sau phần đệm của EVM Những thay đổi

và phần đệm này có thể làm thay đổi giá trị của tham số thứ hai, điều này có thể gây

ra các van dé nghiêm trọng nếu tham sé thứ hai đại diện cho số lượng mã thông báo

hoặc Ether.

Biện pháp phòng tránh: Để giải quyết vấn đề này, trước tiên, các tham số gửiđến hợp đồng thông minh trên Ethereum phải được xác thực Day là một phươngpháp tốt nhất dé thực hiện cho các ứng dụng của bên thứ ba tương tác với hợp đồngthông minh Đối với các nhà phát triển hợp đồng thông minh, thứ tự của các tham số

là rất quan trọng, vì phần đệm chỉ xáy ra ở cuối khi các tham số được ghép nối

Trang 28

Chương 2

CÁC PHƯƠNG PHÁP VÀ MÔ HÌNH MÁY HỌC PHÁT HIỆN

LO HONG BẢO MAT HOP DONG THONG MINH

Máy học được áp dụng rộng rãi trong nhiều lĩnh vực Các mô hình máy học đượctập trung nghiên cứu và phát triển dé đáp ứng các yêu cầu phát hiện lỗ hồng bảo mậthợp đồng thông minh Chương này sẽ trình bày một số mô hình máy học K-Means,

Autoencoder, Random Forest, Logistic Regression, Support Vector Machine,

Multilayer perceptron, Light Gradient Boosting, Extreme Gradient Boosting.

2.1 Cac phuong phap phat hién

Trong luận văn này xem xét van dé lựa chọn các biến dự đoán trong bai toán phân

lớp Dựa trên các yếu tố thu thập được trong quá trình giao dịch Ethereum Blockchain

trong hợp đồng thông minh có an toàn hay không Phương pháp gồm các bước thuthập dữ liệu, tiền xử lý dữ liệu, phân tích dữ liệu, xây dựng mô hình bằng cách áp

dụng K-Means, Autoencoder, Random Forest, Logistic Regression, Support Vector

Machine, Multilayer perceptron, Light Gradient Boosting, Extreme Gradient

Boosting Đánh giá hiệu suất, độ chính xác của mô hình, so sánh các mô hình

2.2 Một số thuật toán máy học phổ biến

Máy học được chia thành một số nhánh chính: Supervised Learning (học có giámsát), Unsupervised Learning (học không có giám sát), ở giới hạn đồ án sử dụng các

thuật toán phổ biến học có giám sát và không giám sát nên luận văn tập trung giới

thiệu các thuật toán phổ biến liên quan tới luận văn, sau đây là các thuật toán phôbiến được sử dụng trong luận văn

2.2.1 Thuật toán K-Means

“Thuật toán k — means được sử dụng để mô hình hóa dữ liệu không có lớp đượcgắn nhãn Liên quan đến việc chia dit liệu thành K số nhóm con Các điểm dữ liệuđược phân loại thành từng nhóm dựa trên sự tương đồng Sự tương đồng được đobằng khoảng cách từ trọng tâm của cụm Đầu ra cuối cùng của thuật toán là mỗi điểm

đữ liệu được liên kết với cụm mà thuộc về và trọng tâm của cụm đó, có thể được sử

dụng để gắn nhãn dữ liệu mới trong cùng một cụm Trọng tâm của mỗi cụm đại điện

Trang 29

cho một tập hợp các tính năng có thể được sử dụng để xác định bản chất của các điểm

di liệu thuộc về cụm đó

1 Thuật toán k — means hoạt động thông qua một quy trình lặp bao gồm các

bước sau: Dựa trên số lượng cụm do người dùng xác định, trọng tâm được tạo

bằng cách đặt ước tính ban đầu hoặc bằng cách chọn ngẫu nhiên chúng từ cácđiểm dữ liệu Bước này được gọi là khởi tạo

2 Tat cả các điểm dữ liệu được gán cho cum gần nhất trong không gian dữ liệubang cách đo khoảng cách tương ứng của chúng từ tâm, được gọi là bước gan.Mục tiêu là giảm thiểu khoảng cách Euclide bình phương, có thé được xác định

theo công thức sau:

min dist (c,x)2 (2.1)

Trong đó: c đại diện cho một trọng tâm, x đại diện cho một điểm dữ liệu

và dist() là khoảng cách Euclide.

3 Trọng tâm được tính một lần nữa bằng cách tính trung bình của tất cả các điểmdit liệu thuộc về một nhóm Bước này được gọi là bước cập nhật

Lặp lại bước 2 và 3 trong quá trình lặp lại cho đến khi bạn đáp ứng các tiêu chuẩn.Tiêu chí này có thể như sau:

Số lượng cụm dữ liệu được chia thành được thiết lập bởi người dùng Do đó, điều

quan trọng là phải chọn đúng số lượng cụm

Một trong những chỉ số được sử dung dé đo lường hiệu suất của thuật toán k —means là khoảng cách trung bình của các điểm dữ liệu từ trung tâm của cụm màchúng thuộc về Tuy nhiên, phép đo này có thể phản tác dụng vì số lượng cụm càngcao, khoảng cách giữa các điểm dữ liệu và trung tâm của chúng càng nhỏ, Điều này

Trang 30

có thé dẫn đến số lượng phân cụm (K) khớp với số lượng điểm dữ liệu, do đó làm

suy yêu mục đích của thuật toán phân cụm

Dé tránh điều này, khoảng cách trung bình giữa các điểm dữ liệu và tâm của cụm

có thể được vẽ dựa trên số lượng cụm Số lượng cụm thích hợp tương ứng với điểm

phá vỡ của biểu đô, nơi tốc độ giảm thay đồi đáng kể Trong hình dưới đây, các vòngtròn chấm đại diện cho số cụm lý tưởng:

Hình 2.1: Biểu đô hiển thị cách ước tính điểm gdp khúc.

2.2.2 Thuật toán AutoEncoder

AutoEncoder học cách biéu diễn hoặc mã hóa bằng cách có gắng sao chép đầu vào

thành đầu ra tương ứng Tuy nhiên, việc sử dụng AutoEncoder không chỉ đơn giản làsao chép đầu vào sang đầu ra Nếu như vậy, Neural Network sẽ không tìm ra được

cấu trúc an trong phân phối đầu vào

AutoEncoder chuyển đổi phân phối đầu vào thành một vector tiềm năng thường

là một vector có kích thước nhỏ hơn Điều này gần giống với một cau trúc an thường

được gọi là biểu diễn tiềm năng hoặc mã hóa Quá trình này tạo thành phần mã hóa.Sau đó, vector tiềm năng được giải mã bởi bộ giải mã dé khôi phục lại đầu vào ban

Trang 31

Bảng 2.1: Pseudocode thuật toán AutoEncoder Thuật toán: AutoEncoder

10.

11.

# Xây dựng mô hình AutoEncoder với input_ dim là số chiêu cua dữ liệu

đâu vào và encoding_ dim là số chiều của không gian mã hóa function AutoEncoder (input đim, encoding_dim) :

# Phân mã hóa (Encoder)

encoder_ input=Input (shape=(input_dim, ) ) encoded=Dense (encoding_dim,activation='relu')

(encoder_input)

# Phân giải mã (Decoder)

decoded=Dense (input_dim, activation='sigmoid') (encoded)

# Xây dung mô hình AutoEncoder từ phan mã hóa và phan giải mã

autoencoder=Model (inputs=encoder_ input,

outputs=decoded) return autoencoder

# Huấn luyện mô hình AutoEncoder

autoencoder=AutoEncoder (input_dim, encoding_dim)

autoencoder.compile(optimizer='adam',

1oss='binary_crossentropy')

autoencoder.fit(x_train,x train,epochs=num epochs,

batch_size=batch_ size)

# Sử dụng mô hình để mã hóa và giải mã dit liệu

encoded_data = encoder.predict (x_test)

decoded_data = autoencoder.predict (x_test)

Đầu tiên, cần nhận ra rang AutoEncoder có hai toán tử đó là:

© Encoder: Điều này chuyền đổi đầu vào x thành vector tiềm năng chiều thấp,

z = f(x) Vì vecto tiềm năng là chiều thấp, bộ mã hóa là bắt buộc

¢ Decoder: Điều này cố gắng khôi phục đầu vào từ vector tiềm năng, g(z) =

Mặc dù vector tiềm năng có số chiều thấp, nó vẫn đủ lớn để cho phép bộ giải mã

khôi phục lại dé liệu đầu vào Mục tiêu của bộ giải mã là làm cho ¥ càng gan x càng

tốt Thông thường, cả bộ mã hóa và bộ giải mã đều sử dụng các hàm phi tuyến đểthực hiện việc này Số chiều của vector tiềm năng (được ký hiệu là z) đo lường số

Trang 32

lượng các đặc trưng đáng chú ý mà nó có thé đại điện cho Dé tăng hiệu quả và chỉ

tập trung vào những đặc trưng quan trọng nhất trong phân phối đầu vào, số chiều nàythường nhỏ hơn nhiều so với số chiều của đầu vào

AutoEncoder có xu hướng lưu giữ thông tin đầu vào khi kích thước của vectortiềm năng lớn hơn đáng kể so với đầu vào x

Chức năng hàm mắt mát thích hợp, £(z,), là thước đo mức độ khác nhau củainput x và output (tức là input được khôi phục) Sai số bình phương trung bình (MeanSquared Error MSE) là một ví dụ về hàm mất này, như được hiền thị trong phương

luyện Trong (Hình 2.2), ta có thể thay sự hoạt động của bộ mã hóa tự động Bộ ma

hóa như một chức năng nén đầu vào x thành một vector tiềm ẩn z có số chiều thấp.

Vector tiềm ấn này đại diện cho các đặc trưng quan trọng của phân phối đầu vào Bộ

giải mã sau đó có gắng khôi phục đầu vào ban đầu từ vector tiềm ân dưới dang x

Hình 2.2: Diagram của AutoEncoder.

Nếu coi đầu vào là một phân phối, thì có thé hiểu bộ mã hóa là bộ mã hóa của phân

phối, p(z|x) và bộ giải mã là bộ giải mã của phân phối, p(x|z) Hàm mat mát của bộ

mã hóa tự động được thể hiện như sau:

£ = -logp(x|z) (2.3)

Hàm mat mát đơn giản có nghĩa là muốn tối đa hóa cơ hội khôi phục phân phối

đầu vào dựa trên phân phối vector tiềm ẩn Nếu phân phối đầu ra của bộ giải mãđược giả định là Gaussian, thì hàm mắt mát sẽ chuyền thành sai số bình phương

trung bình (Mean Squared Error MSE).

m

m m

£ = —logp(x|z) = —log | yen %o7) = ~[ [eg eto) oH —%)? (2.4)

i=1 i=1 i=1

Trang 33

2.2.3 Thuật toán Logistic Regression (LR)

Thuật toán Logistic Regression là một phương pháp cô điền và phổ biến trong lĩnh

vực Machine Learning, thường được sử dụng để giải quyết các nhiệm vụ phân loại

Sử dụng hàm số logistic, log Ta và tổ hợp tuyến tính của x, để ước tính xác suất

giữa 0 va 1.

Khi xác suất đự đoán cao hơn ngưỡng quy định, một điểm dữ liệu sẽ được gán vào

lớp 1, ngược lại, nếu xác suất thấp hơn ngưỡng, điểm dữ liệu thuộc lớp 0

Pp

1.0

event predicted

non-event predicted

Trang 34

thành xác suất bằng cách sử dụng phép biến đồi logit Vì vậy, phương trình cần được

điều chỉnh để giải thích như sau:

PỢ =1) \_, (PY=D)_

(=D PO = 5) =in (o=0) = Bo + Bia ++ But 29)

P(y=1) ~a là vá H > và thé.

i được định nghĩa là xác suat, và vì thê:

Tường = xác suất = exp(Eo+fi#r+°"+fnxn) (2.10)

Nếu một trong những giá trị đặc điểm nay tăng lên 1, tỉ lệ của hai dự đoán sẽ như

sau:

h x

(o+axi+ :+j(xj+1)+ +nXn)

xác suaty,,, _ exp(foYỂ:*: J(x/+1) nến = exp(B(%/+1)= Bx) = exp) (2.11)

xác suất exp Bot Baxrte+Bixjt+Bnxn)

Do đó, việc tăng một tính năng lên một don vi sé nâng tỷ lệ chênh lệch lên một hệ

số expf, Vì mức rủi ro thấp, vì vậy Logistic Regression được chọn là phương pháp

phân tích lỗ hồng bảo mật trong giao dịch hợp đồng thông minh

Bảng 2.2: Pseudocode thuật toán Logistic Regression

Thuật toán: Logistic Regression

1 Ham 1ogistic (x) :

2 trả về 1 / (1 + exp(-x))

3 Thuật toán Logistic Regression:

4 Tnput: Dữ liệu huadn luyén (X, y), learning_rate,

num_iterations

5 Khởi tạo các trọng sé w và bias b ban đầu

6 Lap lại num iterations lần:

7 Tính toán đầu ra dự đoán:

Trang 35

2.2.4 Thuật toán Random Forest (RF)

Random Forest là một thuật toán tích hợp được sử dụng để dự đoán và phân loại

các mô hình Phương pháp này được tạo ra bởi Breiman và kết hợp sự kết hợp ngẫu

nhiên của các phương pháp và tính năng Bagging, nhằm tạo ra một tập hợp cây quyếtđịnh có độ lệch được kiểm soát bởi Amit và Geman Cây quyết định được tạo ra bằng

cách sử dụng một tập hợp các mẫu được huan luyện bằng phương pháp Bagging Mỗicây hoạt động như một bộ phân loại cơ bản để gán nhãn cho mục tiêu thông qua việc

biểu quyết đa số Kết quả từ các phiếu bầu được sử dụng dé phân loại các mẫu

Random Forest được xây dựng từ một tập hợp các cây quyết định độc lập, và thuật

toán này được huấn luyện bằng cách sử dụng phương pháp bagging hoặc bootstrap

Bagging là một phương pháp giúp giảm sai lệch trong dự đoán và cải thiện độ chính

xác của mô hình bằng cách sử dụng quá trình lặp để tạo ra nhiều tập con từ dữ liệu

ban đầu Thuật toán Random Forest xác định kết quả dự đoán dựa trên sự kết hợp của

dự đoán từ các cây quyết định khác nhau Khi có nhiều cây trong tập hợp, kết quả dự

đoán trở nên chính xác hơn Quá trình chi tiết có thể được mô tả như sau:

Bang 2.3: Pseudocode thuật toán Random Forest.

Thuật toán: Random Forest

1 procedure RANDOM FOREST

2 for 1 to T do

3 Gan n cho điểm D, với thay thé cho D

4 Xây dựng một cây quyết định/ hồi quy hoàn chỉnh

trên D

BUT: Mỗi phân đoạn chỉ xem xét k tính năng,

chọn các tính năng mới một cách ngẫu nhiên và chia đồng đều cho mỗi phân đoạn.

Bỏ bớt cây để giảm thiểu lỗi.

end for

Average tất cả các cây T thử nghiệm.

Các biến trong RF cung cấp độ chính xác Có thé dat được điều nay bang cách sử

dụng ước tính và xác thực out-of-bag bằng cách thực thi lại các biến đã chọn Ví dụ,

Trang 36

giả sử có M đầu vào Sau khi mỗi cây được hình thành, các biến được hoán vị tùy ý.

Khi kết thúc quá trình thực thi, phần lớn các lớp out — of — bag với biến h bị loại

bỏ và so sánh với lớp đã được gan nhãn dé đưa ra tỉ lệ lỗi Thể hiện ở phương trình:

Mỹ norm_fi;;

RE, = 22a me fiij

RF_fi; = Tầm quan trọng của tinh nang i được tinh từ tat cả các cây

(2.12)

norm_fiy = Tầm quan trong của tính năng được chuẩn hóa đối với i trong cây j

T = Tổng số cây

2.2.5 Thuật toán Support Vector Machine (SVM)

Thuật toán Support Vector Machine (SVM) là một phương pháp phân loại hiệu

quả, tim ra các siêu mặt phẳng phân biệt các giá trị quan sát thành các nhãn phân loại.Ban dau, SVM định vị mỗi thực thể trong không gian dữ liệu — dimension, trong

đó n là số các đặc điểm Tiếp theo, SVM vẽ một siêu phẳng tưởng tượng, phân tách

một nhãn lớp riêng biệt với các nhãn khác.

Support vector đề cập đến tọa độ của một instance nhất định Do đó, một support

vector machine là một cách hiệu quả dé tạo ra các ranh giới giữa các vector hỗ trợ

khác nhau trong không gian dữ liệu.

Đối với không gian dữ liệu hai chiều, siêu phẳng là các đường chia không gian dữliệu thành hai phan, moi phan đại diện cho một nhãn lớp.

Minh họa (hình 2.4) chỉ ra một ví dụ đơn giản của mô hình SVM Cả hai điểm dữ

liệu tam giác và đường tròn thé hiện các thực thé trong bộ dữ liệu đầu vào, và hình

dạng xác định nhãn phân loại mà mỗi thực thể thuộc về Một đường ngang biểu thị

Trang 37

một siêu phẳng phân cách rõ ràng các điểm dữ liệu, được xác định dựa trên vị trí của

các điểm dữ liệu trong không gian dữ liệu Đường này được sử dung dé phân loại các

dữ liệu vô hình, được thé hiện bằng một hình vuông Như vậy, các thực thé mới ở

bên trái đường được phân loại là hình tam giác và các thực thể ở bên phải được phânloại là hình tròn.

Mặc dù thuật toán có vẻ đơn giản, sự phức tạp của nó là rõ ràng trong cách thuật

toán vẽ siêu phẳng thích hợp Điều này là do mô hình được tóm tắt trong hàng trămquan sát với nhiều đặc điểm

Để chọn siêu phang phù hợp, thuật toán tuân theo các quy tắc sau, trong đó quytắc 1 quan trọng hơn quy tắc 2:

© Quy tắc 1: Siêu phẳng phải tối đa hóa việc phân loại chính xác các trường hợp

Về cơ bản, điều này có nghĩa là các hàng tốt nhất là tách các điểm dữ liệu thuộc

các nhãn khác nhau một cách hiệu quả trong khi giữ các điểm dữ liệu đó thuộc

cùng một loại nhãn lại với nhau.

Vi dụ, trong hình dưới đây, mặc dù cả hai hàng đều có thé tách hầu hết các trườnghợp thành các thẻ lớp chính xác, mô hình sẽ chọn hàng A làm hàng tách lớp tốt hơn

so với hàng B, vì hàng B không thé phân loại hai điểm dữ liệu:

Hình 2.5: Mẫu hình phẳng cua quy tắc 1.

© Quy tắc 2: Siêu phẳng phải tối đa hóa khoảng cách của nó đến điểm dữ liệu gầnnhất của một trong hai nhãn lớp, còn được gọi là cạnh Quy tắc này giúp mô

hình trở nên mạnh mẽ hơn, có nghĩa là mô hình có thể tổng quát hóa dữ liệu đầuvào, do đó xử lý dữ liệu vô hình một cách hiệu quả Quy tắc này đặc biệt quan

trong trong việc ngăn chặn các instance mới bị đánh dấu sai

Trang 38

Vi dụ, bạn có thé kết luận rằng cả hai mặt phẳng siêu phẳng đều phù hợp với quy tắc

1 Tuy nhiên, bạn chọn đường A vì đường A tối đa hóa khoảng cách của nó đến điểm

dữ liệu gần nhất của hai lớp so với khoảng cách của đường B đến điểm dữ liệu gần

nhât của nó:

FEATURE 2.

FEATURE+.

Hình 2.6: Mẫu hình phẳng của quy tắc 2.

Theo mặc định, thuật toán SVM sử dụng các hàm tuyến tính dé phân chia các điểm

dữ liệu được nhập vào Tuy nhiên, cấu hình này có thé được sửa đổi bằng cách thay

đổi kiểu hạt nhân của thuật toán Ví dụ, hãy xem xét hình ảnh dưới đây:

FEATURE 2.

FEATURE4.

Hình 2.7: Quan sát mẫu.

Để tách các quan sát này, mô hình phải vẽ một vòng tròn hoặc hình dạng tương tự

khác Thuật toán này giải quyết vấn đề này bằng cách sử dụng hạt nhân (một hàm

toán học), có thể giới thiệu các tính năng bổ sung cho tập dữ liệu dé thay đổi phân

phối các điểm dữ liệu thành dạng cho phép các đường phân tách chúng Có một sốhạt nhân có sẵn cho việc này và một nên được chọn bằng cách thử và lặp đi lặp lại để

bạn có thé tìm thấy những người phân loại tốt nhất dữ liệu có sẵn

Ngày đăng: 08/11/2024, 17:23

w