文/陳佳音
人工智能有很多分支和學派,但就普通大眾來講,應該了解當前人工智能發展的三個基本概念,它們分別是人工智能的定義、機器學習理論和統計學習理論,下面將分別予以介紹:
(1)什么是人工智能?機器具有或展現了像人一樣的智慧,即為人工智能。人工智能的主要方向是機器學習。
(2)什么是機器學習?機器能夠像人一樣通過學習自動提升性能,即為機器學習。當前機器學習的主流是統計學習。
(3)什么是統計學習?機器利用統計學知識對海量數據(大數據)進行分析和挖掘(學習)進而不斷調整自身參數、提升自身性能的過程,即為統計學習。現在主要的工業智能應用都是基于統計學習理論的。
人工智能的實現大體包含四個主要步驟:數據采集、數據清洗或標記、數據分析、智能化決策。數據采集,是指通過物聯網等手段采集或抓取海量的數據過程;數據清洗或標記,是指對采集到的數據進行融合、去除冗余、結構化處理、標記等過程,其為后續的分析工作提供規范格式的輸入內容;數據分析,是指利用云計算集群、超級計算機等算力基礎,運行大數據相關軟件進行統計分析、分類、擬合、發現數據內聯關系的過程;智能化決策,是指在數據分析的基礎上根據現實狀況,調整參數、建立并改進決策模型、實現智能化控制的過程。數據分析和智能化決策兩個步驟連在一起即為前文所講的統計學習過程,或簡稱學習。
有很多數學上的方法都可以實現人工智能,而根據其學習機理及對輸入數據的要求,人工智能方法又可以分為有監督的學習、無監督的學習和半監督的學習。有監督的學習,或稱有指導的學習,是指在學習前先對輸入數據進行標記,人為的指出數據中的正例、反例或程度值,這樣會造成機器學習的過程中形成與標記數據相匹配的決策模型,從而實現在人類指導下的自動決策。無監督的學習,是指不事先對數據進行標記,而通過聚合度等方式由機器自主的對數據進行分析、分類的過程,該過程實現了無人指導的機器自主決策。半監督的學習,則是以上兩種思想的結合體。
有監督的學習,強調了人的引導性,對已知世界有的放矢,卻缺乏機器對未知世界的探索能力。無監督學習,強調了機器的自主性,可是由于技術能力的限制和數據的有限性,往往很難做出令人類滿意或者說符合現實情況的決策,因而應用的范圍十分有限,但無監督學習代表了機器能夠自主獲取并提煉知識的能力,即如同人類一樣的學習能力,是人工智能領域的終極目標。
常用的人工智能學習方法有很多,主要包括回歸分析、決策樹、神經元網絡、支持向量機、貝葉斯網絡等方式,下面對其中的主流方法做以介紹:
(1)回歸分析:回歸分析是最基本的統計分析方法,其基本思想是利用直線來模擬數據變化趨勢或對數據進行分類,又可以分為對連續數據擬合的線性回歸和對離散數據分類的邏輯回歸。股指變化趨勢線和摩爾定律曲線都是通過線性回歸對數據變化趨勢預測的經典案例。而圖1則利用一條直線分割了兩類數據點,是邏輯回歸的典型特征。
(2)決策樹:決策樹是利用信息特征的概率分布情況(信息熵)生成樹,并進行數據分類、決策的一種方法。比如銀行可以通過收集客戶個人經濟數據、生成決策樹并對其還貸能力進行人工智能判定,婚介網站也可以建立決策樹模型實現會員相親的自動匹配。

圖1:邏輯回歸圖示
(3)神經網絡:神經網絡是一種模擬人類腦神經的復雜網絡,理論上講,只要用于模擬的神經元個數足夠多,即可以完成對任何連續數據的曲線擬合或對任何離散數據的分類工作。神經網絡的著名案例是震驚世界的圍棋程序AlphaGo,其先后打敗韓國國手李世石和中國國手柯潔,AlphaGo在內部構建了基于深度學習理論的兩種多層神經網絡,分別是用于評估自身落子收益的價值網絡和用于推斷對手可能落子位置的決策網絡。
(4)集成學習:人工智能領域有一個著名定理—“沒有免費的午餐”,即指沒有任何一個算法能解決所有問題,而是應該根據不同的問題選擇不同的算法。因此,人們設計了集成學習系統,這種系統利用多個較弱的學習算法分別處理問題,然后再把多項弱結果擇優合成到為一個強結果,很顯然這樣做可以提高整體的學習能力。
(5)聚類分析:聚類分析是利用數據內部特征對其自動進行分類的一種無監督學習方法。以銀行“客戶分類”為例,其可以以客戶的年齡和收入為軸構建坐標系,再把相應的數據描繪到坐標平面上,最后根據坐標點的分布情況自動對客戶進行分類,每個類別內部的點要盡量的近,而類別之間的距離要盡量的遠。
廣義的逆向工程是指在不能獲得目標產品生產信息的情況下,對其成品進行分析,反推其設計原理的過程。軟件逆向,是指把逆向工程思想應用于軟件領域,針對特定軟件,以反匯編閱讀源碼的方式去推斷其加密參數、數據結構、體系結構和程序設計信息的過程。軟件逆向技術的目的是研究和學習先進的技術,本文余下部分所提到的逆向工程都是指軟件逆向。
逆向工程的主要分支包括密碼逆向、加密機制逆向和代碼逆向。密碼逆向是指通過密文或已知的部分明文反向推測密碼的過程,典型的例子是應用彩虹表推測密碼。加密機制逆向是指針對加密體系構建的漏洞進行推測和攻擊,曾經大行其道的蹭網器就是利用了這種方式。代碼逆向則利用了操作系統或編輯器的調試接口,通過可執行代碼反推源代碼的流程邏輯,如圖2所示。
逆向工程應用主要包括外掛編寫,加密體系破解和源代碼分析等。外掛,是網絡游戲中的附加軟件,其利用逆向工程中的注入、鉤取等手段把額外的代碼附著于游戲本體代碼之上,形成了額外的游戲功能;加密體系破解,則是指利用逆向工程手段繞過軟件本體原有的保護機制,達到免費使用未授權軟件的目的,即是盜版軟件;源代碼分析,是指利用逆向工程通過可執行代碼反推源代碼的工作原理、流程等相關內容,常被安全人員用于對病毒和木馬的分析,已達到防毒防馬的目的。
人工智能與逆向工程的結合研究可包含兩方面:從白客角度講,可以利用人工智能來防范逆向工程;從黑客角度講,可以利用人工智能來實現逆向工程。
無論哪一種形式的逆向工程,都會對程序的數據流進行嗅探、分析、測試和修改,這勢必會引起數據異常,少量的異常或者可以被視為正常情況,但大量的異常則必然呈現統計學特征。在這種情況下,安全人員就可以使用統計學習理論來提取特征、分析數據、進而實現對逆向工程的判定、識別和分類。其可應用于如下場景:
(1)智能識別外掛。外掛程序常常會修改主機內存或C/S通信中的敏感數據,這樣的修改具有一定的隱蔽性,很難從個例上判定其是否違規。但游戲設計人員可以利用人工智能方法在服務器端統計、分析客戶端發送過來的數據包異常,進而對客戶端是否使用外掛做出判定。

圖2:代碼逆向
(2)病毒木馬防護。木馬、病毒、勒索程序在入侵主機的過程中都會繞過已知防御體系,但其行為、數據結構、代碼架構、傳播方式等都有著類似的特征,因此安全人員可以利用人工智能技術對這些特征進行建模、分析和學習,進而達到識別未知的木馬、病毒和可疑進程的目的。
(3)網絡監控。在網絡上傳輸的所有媒體,本質上講都是某種特定結構的數據,因而監控人員可以將其抽象成特征矩陣,利用建模、統計、學習等人工智能方法對文字、視頻、音頻等媒體流進行分析、過濾、預警、監控等操作。
黑客可以利用人工智能技術對海量數據進行分析和處理,找到隱藏在其中的軟件漏洞、體系缺陷,從而進行攻擊和逆向,其可應用于如下場景:
(1)防御手段識別和繞過,黑客可以使用人工智能程序向對防御方發送請求,再對其返回數據進行統計、分析,進而識別防御方采用了哪些防御手段。在防御識別的基礎上,黑客還可以利用智能化技術繞過相應的防御手段,比如通過圖片識別技術繞過驗證碼等。
(2)密碼推測,加解密是一種非線性的一一映射過程,那么是否可以利用深度神經元網絡的過度學習方式或對抗網絡來模擬這個過程呢?谷歌公司近年在相關方向上進行探索和研究并取得了一定成果。
(3)智能代碼逆向,代碼逆向是通過機器碼、匯編碼、字節碼反推程序源碼、運行流程及數據結構的過程,在這一過程中,需要面對龐大的底端代碼并結合上下文進行分析和推理,這樣繁復的工作往往非人力能夠勝任。利用人工智能理論中的自然語言處理和文本理解技術,實現智能代碼逆向,將會極大的加快逆向分析的速度。
(4)智能隨機加密反監控。單一的加密體系很容易被針對或繞過,被監控方可以根據集成學習原理,隨機智能變換或組合加密算法、秘鑰生成策略、生成時間、秘鑰,達到躲避監控的目的。
(5)數據毒化。統計學習理論基于大數據分析,大量的假例必然影響分析的準確性。黑客可以利用人工智能自動產生海量與真實標記相反的反例數據,并釋放到網絡上,這樣做會達到往真實數據中“摻沙子”、甚至“下毒”的目的,影響敵方的大數據采集、分析,進而影響其的決策能力。
本文從人工智能和逆向工程兩方面入手,分析了二者各自的技術特點和主流應用,并對其結合前景進行了分析、研究并提出的相應看法。人工智能和逆向工程都是大有潛力的技術,學習并掌握相關技能對個人和國家的發展極為重要,每位國人都應調整好心態全力建設一個既安全又智能的新時代。