張夢楠,吳禮發(fā)
(南京郵電大學 網絡空間安全學院,江蘇 南京 210023)
比特幣交易采用匿名制,用戶參與交易的賬號不需要與其真實身份進行關聯,而是由保證比特幣所有權的電子簽名中的公鑰經過一系列加密運算產生的哈希值(被稱為“地址”)來代表。一個賬戶可以擁有多個比特幣地址,用戶使用這些地址進行比特幣交易。因此即使每筆交易信息都會被公開記錄于比特幣區(qū)塊鏈上,也無法確認每筆交易背后用戶的真實身份和這筆交易的真實用途。這種匿名性雖然很好地保障了比特幣用戶的隱私,但也帶來了很多問題,特別是將比特幣用于非法活動的支付工具,如恐怖融資、盜竊、詐騙和勒索。
比特幣異常交易是指勒索詐騙、黑客攻擊、混幣服務、暗網交易等非法活動中出現的不太正?;虿惶赡艿谋忍貛沤灰譡1],異常地址則是完成這些異常交易的相關地址。近年來,已有不少學者提出了各種比特幣異常交易和異常地址識別方法,如基于啟發(fā)式的地址聚類算法[2-4]、基于無監(jiān)督學習的聚類算法[5-8]和基于有監(jiān)督學習的分類算法[9-11]?;趩l(fā)式的地址聚類算法,雖然能在一定程度上通過啟發(fā)條件快速識別哪些地址屬于同一用戶,但判斷該地址是否異常還存在一定限制,且過度依賴人工參與、缺乏靈活性。傳統基于無監(jiān)督的地址聚類方法,由于沒有充分利用比特幣交易信息,導致較高的誤報率與漏報率,且對特征中的噪聲較為敏感?;谟斜O(jiān)督的異常地址識別方法由于交易信息單一,不能全面和準確地反映地址間的關系,異常地址識別率較低。
針對以上問題,該文提出了一種基于比特幣交易網絡的特征提取方法,構建了基于交易網絡特征的異常地址識別模型TNF-AARM(Abnormal Address Recognition Model based on Transaction Network Features),該模型將交易數據映射成為網絡結構,實現地址與地址之間的關聯。在特征構造方面,提出了一種基于改進的PageRank節(jié)點重要性特征構造方法,然后利用復雜網絡相關算法提取其他網絡地址特征,最后結合集成學習算法構建分類器,進而對異常地址進行識別。最終模型F1分數為0.94,AUC值為0.95。
近幾年來,很多研究人員對比特幣異常交易地址識別方法進行了研究。
在無監(jiān)督學習方面,毛洪亮等人[2]提出一種基于啟發(fā)式條件的聚類方法,能夠對匿名比特幣地址進行相關性聚類,從而發(fā)現被同一用戶團體控制的地址群。Bartoletti等人[3]利用多輸入啟發(fā)式方法進行聚類,設計出一套描述龐氏騙局的包含標簽地址的公開數據集,通過分類方法比對,最后驗證隨機森林是檢測異常地址的最佳分類器。來自浙江大學的吳磊等人[3]收集并分析了四種有代表性的比特幣混合服務商的大量交易數據,提出了一個識別混幣服務地址的通用抽象模型,利用一種啟發(fā)式方法在實驗數據集中找到了92%以上的混幣服務交易地址。Patil[5]和Zambre[6]基于數據挖掘的方法,使用無監(jiān)督技術K-means來檢測比特幣中的欺詐行為。2014年,Spagnuolo等人[7]提出了一個模塊化框架BitIodine,以半自動方式標記用戶的身份和行為信息,并應用于調查CryptoLocker勒索軟件,準確量化了支付的贖金數量以及有關受害者的地址信息。Hirshman等人[8]試圖探索比特幣交易系統中的洗錢和混幣服務,并且追溯出混幣服務的輸入端。論文首先把比特幣地址中屬于同一用戶的地址聚合起來,然后使用K-means方法將用戶聚集到具有相似特性的組中,最終發(fā)現各聚類中心中存在一定的異常交易行為。
在有監(jiān)督學習方面,Lee等人[9]根據交易特征檢測比特幣交易中的非法交易地址,以暗網絲綢之路地址為比特幣的交易標準進行手動分類,然后用隨機森林和人工神經網絡算法對90多萬條交易數據進行模型訓練,其中隨機森林模型的F1指標高達0.98。Toyoda[10]通過交易模式提出了一種新的提取高收益投資計劃(High Yield Investment Program,HYIP)檢測特征的方案,分析了1 500個相關比特幣地址,根據交易頻率和比特幣位數及其流量等交易特征,利用有監(jiān)督的機器學習分類器方法進行識別,同時對比了是否使用地址聚類方法驗證了模型分類的有效性。Lin等人[11]將Toyoda提到的特征作為基線特征,加入生命周期、交易時間等額外統計特征,將地址或實體的交易發(fā)生時間表征為離散隨機變量,用這些特征或特征組合使用邏輯回歸、支持向量機、XGBoost等方法訓練了8個分類器,其中LightGBM獲得87%的準確率,顯著提高了比特幣地址分類的性能。2021年,國內學者俞莎莎等人[12]提出交易非法性程度概念——交易不可信度,并提出算法對其進行量化并融合到現有模型,提高了檢測精度和召回率。鄭子彬等人[13]使用手動檢查樣本和XGBoost基于從智能合約的用戶賬戶提取的賬戶特征和代碼特征建立回歸樹模型,最后預測出了以太坊上運行的超過400個龐氏騙局的智能合約地址。周健等人[14]提出了基于機器學習的欺詐賬戶地址的檢測及特征分析模型,同時引入解釋機器學習模型輸出(SHapley Additive exPlanations,SHAP)值對數據特征進行分析。
文中方法的主要思想是將比特幣地址的交易關系抽象為一張龐大的網絡,利用研究復雜網絡的方法提取交易網絡特征構造融合交易特征,再結合機器學習技術訓練模型進行異常地址識別。這些網絡信息的加入實現了地址的從單點到網絡、從微觀到宏觀的信息擴充,提升了對比特幣地址認知的全面性。
該文首先對比特幣交易數據集和標簽數據集進行預處理,提取原生地址特征,再提取節(jié)點和邊的信息建立比特幣交易網絡;接著提取研究復雜網絡的常用指標作為新的網絡特征,將地址的原生特征和網絡特征作為新的融合交易特征,結合集成算法建立TNF-AARM模型。整體識別技術路線如圖1所示。
圖1 比特幣異常地址識別技術路線
比特幣交易是指資金從某些比特幣地址轉移至另一些比特幣地址的過程[15],每筆交易都由交易輸入和交易輸出組成,交易輸入指明了比特幣資金的來源和交易簽名,交易輸出指明了比特幣交易的金額和資金的去向地址,并被比特幣資金新擁有者的密鑰鎖定。比特幣區(qū)塊鏈上每個區(qū)塊的第一筆交易由挖礦產生,這筆交易稱為幣基交易(Coin-Base Transaction),也成為“創(chuàng)幣交易”,其挖礦腳本無對應地址即無輸入地址,只有輸出腳本對應一個交易地址,這個地址就是礦工用來收取獎勵的地址。從每個區(qū)塊的第二筆交易開始,輸入腳本和輸出腳本分別對應了一個獨立的地址,這類既有輸入地址又有輸出地址的交易被稱為普通交易。每筆交易按其雙方比特幣地址的數量可以分為一對一、一對多、多對一、多對多等交易形式圖。
一個典型的網絡是由許多節(jié)點與連接兩個節(jié)點之間的一些邊組成的,其中節(jié)點用來代表真實系統中不同的個體,而邊則用來表示個體之間的關系[16]。一個具體的網絡可抽象為一個由點集V和邊集E組成的圖G=(V,E)。將比特幣交易中的每個比特幣地址作為節(jié)點,交易金額的流向作為邊,就可以建立比特幣交易網絡[17]。
比特幣區(qū)塊鏈中有若干交易單,交易網絡中的節(jié)點是交易雙方的地址,邊代表了比特幣在不同地址之間的流動方向,因此分析交易網絡就可以分析參與交易的用戶之間的地址使用情況[18]。根據交易單中表示的地址關系建立比特幣交易網絡,輸入地址集中每個地址與輸出地址集中每個地址均建立一條邊,可以組成有向網絡。
對于度分布,該文計算了比特幣地址交易額度分布和交易頻率度分布。如圖2和圖3所示,比特幣網絡中各節(jié)點之間存在不均勻分布,整體呈現冪律分布,更類似無標度模型,而非小世界網絡或者隨機圖。網絡中少數節(jié)點擁有極其多的鏈接,而大多數節(jié)點只有很少量的連接。
圖2 交易額度分析
圖3 交易頻率分布
由此可以看出在區(qū)塊鏈網絡中,大多數節(jié)點只有極少數量和極小金額的交易。根據以上分析,交易金額數量大的但交易數量小的節(jié)點是關注的重點,這是因為暗網交易往往會涉及大金額交易;同時,交易數量大且交易金額等額的節(jié)點也是關注的重點,因為很多暗網交易有時不是一筆完成,而是通過大量等額的小交易來分批進行。所以異常交易地址會呈現兩個特點:一是該地址輸入或輸出金額很大;二是該地址的輸入輸出交易數量多且金額相等,這為后續(xù)檢測算法提供了依據。
比特幣交易完整信息包含每筆交易的txid、hash、vin、vout等字段信息,首先根據這些信息解析出輸入、輸出地址以及每筆交易的金額再結合映射表,去除多余數據;接著提取交易地址的特征,包括該地址分別作為輸入、輸出地址的交易數量、交易金額等用于訓練機器學習模型的關鍵特征。因為異常地址可能表現出一些共同特征,例如高輸入頻率、一筆交易中有多個相同的輸出等,故從交易數據中提取出了12個特征,詳細特征集名稱及其描述如表1所示。
表1 原生地址特征集
在網絡科學研究中,最受關注的研究指標一般是節(jié)點的度、平均路徑長度、聚類系數和度分布[19]。對于區(qū)塊鏈網絡,由于匿名性的限制,難以將大量未標注的具體賬戶地址與現實相關聯。但同樣的,由于交易的公開透明,復雜網絡的多種指標分析并沒有受到干擾[20]。
比特幣網絡中交易特征是指區(qū)塊鏈交易網絡中各種統計和聚類分析等指標,如節(jié)點數、邊數、度、度分布、聚類系數等[21]。此外,該文在此基礎上還增加了改進的PageRank值、節(jié)點的接近中心性、緊密中心性、核心度、約束值等新指標。
2.2.1 基于改進PageRank的節(jié)點重要性特征構造
PageRank算法是用于搜索引擎中網頁排序的經典算法[20],用來衡量一個頁面的重要程度。該算法認為如果一個頁面P的前置頁面越多,代表P重要程度越高,且P的前置頁面的重要程度越高,該算法的模型可以表示為:
(1)
式中:PR(x)為網頁x的PR值;PR(Yi)為鏈接到網頁x的網頁的值;Cout(Yi)為網頁Yi的出鏈數量;α為阻尼系數,表示在任意時刻,用戶到達某頁面后并繼續(xù)向后瀏覽的概率。
該文借鑒PageRank算法將網頁鏈接價值概念作為重要性排名因素的思想,將其引入復雜網絡節(jié)點的重要性評估并將其作為新的交易網絡特征。
根據2.1小節(jié)的分析,比特幣交易網絡中異常地址的交易額度和頻率存在一定規(guī)律,故在PageRank基礎上引入交易額度和頻率相關性,重新計算節(jié)點的PR值作為新的交易網絡特征加入訓練。設地址i的節(jié)點度為Fi,交易額度為Ti,則二者的皮爾遜相關系數RFT為:
RFT=
(2)
設節(jié)點度的權值為WF,則交易額度的權值為WT=WF·RFT,研究地址i對其他地址的影響程度時,設地址m的全部交易數為Fm,與地址i有交易往來的交易數為Fmi,則地址i與其它地址的皮爾遜相關系數Rmit為:
Rmit=
(3)
地址m與地址i有交易往來是的權值為Wmit=WT·Rmit,地址i對地址m的影響程度即INFim=Wmit+WF,故地址i的總影響程度即為INFi=INFim1+INFim2+…+INFimn,將INFim類比到不同地址之間即可得到初步的轉移矩陣mij。在此基礎上,該文將比特幣交易地址在一個交易網絡中的綜合影響程度做如下定義:
W(i)=Indgree(i)·α+Outdgree(i)·β+
Active(i)·γ
(4)
其中,α+β+γ=1,α、β、γ為權值;Active(i)表示該地址的活躍度,即:
(5)
其中,i表示相關的交易數,N表示該地址的存活時間。則得到最終的加權概率轉移矩陣為:
Mij=W(i)·mij
(6)
通過公式進行馬爾可夫迭代收斂得到最終的PR值:
(7)
2.2.2 其他網絡特征提取
度中心性(Degree Centrality)是網絡分析中刻畫節(jié)點中心性的最直接度量指標。在比特幣交易網絡中,一個地址的節(jié)點度中心性越高就意味著與其產生交易關聯的地址越多,該節(jié)點在網絡中就越重要。計算公式如下:
(8)
其中,ki表示現有的與節(jié)點相連的邊的數量,N-1表示節(jié)點i與其他節(jié)點都相連的邊的數量。
介數中心性(Betweenness Centrality)是通過經過某個節(jié)點的最短路徑的數目來刻畫節(jié)點重要性的指標,在比特幣網絡中,介數中心性越高的節(jié)點地址在資金流轉中所起的作用越大。
(9)
其中,σst(vi)表示從節(jié)點s到節(jié)點t的最短路徑的總數量,σst表示這些最短路徑中經過的路徑的數量。
緊密度中心性(Closeness Centrality)表示一個節(jié)點到網絡內其他所有節(jié)點的平均距離,一個具有較高緊密度中心性的比特幣地址比其他地址更重要。
(10)
根據上述對比特幣網絡的分析,將分析復雜網絡的常用指標作為新的特征并加入特征集,如表2所示。
表2 交易網絡特征集
3.1.1 數據來源
該文使用比特幣公開交易數據進行實驗研究。該數據集(http://xblock.pro/#/search?types=datasets)由伊諾瓦大學公布,從比特幣客戶端bitcore進行節(jié)點同步并獲取,記錄了截至2020年2月的比特幣交易數據。為了方便使用,該文已經將比特幣地址映射為地址ID。數據集分為以下6張表。
(1)表bitcoin_blockhash,記錄了區(qū)塊鏈中約20萬區(qū)塊的枚舉,以blockID為索引,記錄了區(qū)塊哈希、創(chuàng)建時間和交易數量等信息,數據維度為(277 443,4);
(2)表bitcoin_txhash,記錄了此數據集中使用的交易ID和區(qū)塊鏈中使用的交易哈希,數據維度為(30 048 983,2);
(3)表bitcoin_addresses,記錄了字符串表示的比特幣地址和此數據集中使用的地址ID,數據維度為(24 618 959,2);
(4)表bitcoin_tx,記錄了所有交易的枚舉,以交易ID為索引記錄了每筆交易的輸出、輸出交易數等信息,數據維度為(30 048 983,2);
(5)表bitcoin_txin,記錄了所有類型為輸入交易的交易信息,以交易ID為索引,記錄了發(fā)送地址和金額信息,數據維度為(65 714 232,3);
(6)表bitcoin_txout,記錄了所有類型為輸出交易的交易信息,以交易ID為索引,記錄了接收地址和金額信息,數據維度為(73 738 345,3)。
標簽數據地址來自論壇網站Wallet Explorer(https://www.walletexplorer.com/),該網站對比特幣地址做了分類,例如交易所、礦池、賭博和暗網。使用Python3的Beautiful Soup庫開發(fā)了一個網絡爬蟲獲取該網站下暗網SilkRoad截至2020年的交易哈希值列表。該列表包含約5萬條非法交易的地址哈希值。該文根據收集到的標簽地址數據,借鑒文獻[9]的方式對數據集進行手動標注,其中屬于暗網類別下的比特幣地址標記為非法(1),其他標記為合法(0)。
3.1.2 數據及配置
盡管收集到的非法交易地址非常有限,僅有5萬條,相比于200萬的數據總量呈現數據不平衡現象,但這也符合現實場景中合法交易多于非法交易的情況。在樣本不平衡的建模任務中,其實更關注的是少數類別的分類正確情況,這就導致了實際的建模目標和模型本身的優(yōu)化目標不一致,因此若直接將不平衡的數據應用在樣本不平衡較為敏感的模型上,例如邏輯回歸模型就會側重于識別合法交易而未能更好地識別非法交易節(jié)點。在實驗中,為避免數據不平衡現象造成的影響,考慮對樣本量偏大的數據進行隨機下采樣,僅隨機選取數據集的一部分,最終以10∶1比例選取合法交易和非法交易數據組成實驗所用數據集。具體數據分割見圖4。
圖4 數據集分割示意圖
圖5 準確率對比
圖6 AUC值對比
圖7 F1分數對比
3.1.3 模型評價指標
在分類任務中,最常用的評價指標是準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1分數(F1-score)和AUC值,其詳細定義如下:
(11)
(12)
(13)
(14)
(15)
其中,m、TP(true positive)、FP(false positive)、TN(true negative)和FN(false negative)分別表示樣本總數、真正例數、假正例數、真反例數和假反例數。ROC曲線是以FP為橫坐標,TP為縱坐標繪制出來的曲線,AUC值表示ROC曲線下面積和,xi、yi分別表示ROC曲線上的橫縱坐標值。
3.2.1 數據準備
為驗證文中方法的優(yōu)越性,將根據文獻[9]使用的特征提取方法建立基模型,旨在排除表現不佳的分類器對實驗結果的影響,為后續(xù)模型算法選擇做準備以及作為文中改進方法的對照組。數據準備包括以下幾個部分:
(1)劃分訓練集和測試集。由于使用隨機下采樣的方法在數據層面排除了樣本不平衡對分類的影響,故直接采用隨機劃分訓練集和測試集的方法,利用Python3中sklearn包中的train_test_split函數得到比例7∶3的訓練集和測試集數據,通過設置參數random_state增加參與訓練的數據的隨機性,對數據集共進行10輪訓練。
(2)特征標準化。為避免某一個取值范圍特別大的特征對距離或梯度計算造成影響,需要對數據進行標準化,將數據按均值中心化再按標準差縮放,從而加快求解速度和提升模型精度。調用sklearn中的preprocessing.StandardScaler模塊標準化特征矩陣。
3.2.2 訓練模型
對上述處理好的數據,分別使用單分類器算法LR、SVM和集成分類器算法RFC、GBDT、XGBoost(簡稱XGB)建立分類模型,模型用于測試集數據,得到非法地址的分類精確率、召回率、F1分數等10輪訓練后的平均值結果。
依據第2節(jié)所述,首先提取節(jié)點和邊的信息。在所研究的數據集中,首先連接表bitcoin_txin和表bitcoin_txout,找出所有交易對應地址的輸入和輸出關系,然后生成一張記錄源節(jié)點地址哈希值和目標節(jié)點地址哈希值的邊表,存儲為CSV格式,該表記錄了每筆交易的輸入和輸出地址ID,表的維度為(1 048 575,2)。根據此地址關系數據集,調用python3中的igraph包建立有向圖,根據圖節(jié)點的屬性提取各網絡指標作為新的特征集。將數據集隨機分成10組建立模型并應用到測試集,10組數據集的訓練結果均值見表3。
表3 訓練結果
根據文獻[9]方法的實驗結果來看,類似于RFC、GBDT、XGB這樣的集成算法相比LR、SVM這樣的單分類器在各個指標上表現較好,特別是XGB表現最佳。因為強分類器本身就是由若干個弱分類器通過一定的組合策略產生,故強分類器在評價結果上通常是要優(yōu)于弱分類器的。同時還可以觀察到,即使是XGB這樣的強分類器在準確率、F1分數和AUC值都沒有達到0.9,說明現有特征無法提供更多的信息,模型精度有待提升,需要進一步對輸入特征進行處理和優(yōu)化。
從文中方法的實驗結果可以看出,除去LR模型,其他各分類器精度都得到了一定提升,強分類器的相關評價分數都達到了0.9左右,其中XGB分類器表現最佳,在準確率、精確率和AUC值上都達到了0.95。LR模型精度下降的原因可能是新數據集非線性可分,同時這里兩者準確率上升而召回率下降,表示模型傾向于將節(jié)點分為非法類,產生了過擬合現象,說明對于線性模型來說,網絡信息的加入不僅不能提高分類效果,反而容易被當成噪聲進行學習。XGB這樣的Boosting算法將分類器通過數據的訓練不斷迭代優(yōu)化,有序地逐漸提升分類效果,而像RFC是通過交叉驗證獨立、平行的提升其效果。實驗中XGB對該文所用數據集的效果最好。
將基于文獻[9]方法建立的集成算法模型與基于文中方法建立的集成算法模型按照不同的評價標準進行對比,如圖 5至圖8所示。
圖8 精確率對比
可以很明顯地看到:一方面,對比文獻[9]中的地址特征提取方法,該文所使用的方法對大多數不同的分類器在各個指標上都有所提升。在召回率指標上有下降趨勢,由3.1.3小節(jié)準確率和召回率的計算公式可知,二者存在負相關關系,但從作為調和二者的F1分數的對比來看,整體結果上文中方法還是優(yōu)于文獻[9]的方法。另一方面,從實驗結果可以看到,在這幾個強分類器中,XGB算法表現最佳,得到了最高的F1分數和AUC值。
綜上所述,文獻[9]中使用的特征提取方法,在集成算法模型上表現不錯,但文中使用的基于交易網絡特征的分類方法,在弱分類器和強分類器上都有較好的表現。而文中基于建立比特幣網絡,借鑒研究復雜網絡的方法提取出一些例如介數中心性、pagerank等作為輸入特征,對于模型來說可以明顯增加地址與地址之間關系的信息,在此基礎上應用集成算法可以有效地提高分類效果。
基于比特幣區(qū)塊鏈上交易數據,結合復雜網絡的拓撲性質和比特幣交易的特點,建立比特幣交易網絡,提取網絡特征加入地址特征集,構建了TNF-AARM異常地址識別模型。通過與相關文獻進行對比表明,該方法獲得了更好的分類效果,對于不同的算法模型在精確度、F1分數和AUC值上均有所提升。事實上,雖然構建交易網絡增強了比特幣地址特征,但沒有考慮比特幣實時的交易數據和其他公鏈和幣種的交易數據,加入更多數據是否可以獲得更為精準的檢測模型,仍然需要繼續(xù)探究。同時,所采用的有監(jiān)督學習方法依賴于有標簽數據,識別范圍較為局限。對跨鏈、跨幣種異常交易檢測、細粒度的異常交易行為檢測將是下一步的研究重點。