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 1TRƯỜ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 2TRƯỜ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 3Lờ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 4Tô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 5LỜ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 62.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 74.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 9Bả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 10Hì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 11cá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 12Trướ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 13lỗ 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 14phá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 16Khả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 171.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 18là 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 191.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 20Ngoà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 21contract 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 22Biệ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 23và 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 24Randomness 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 25delegatecall(), 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 26cá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 27Biệ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 28Chươ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 29cho 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 30có 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 31Bả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 32lượ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 332.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 34thà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 352.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 36giả 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 37mộ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 38Vi 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