2019年密码与安全新技术讲座-课程总结报告
一、教師講座內容總結
講座一、Web安全與內容安全
在本次講座中,張健毅老師首先講述了信息技術的發展階段,接著講了信息化發展凸顯的信息安全問題,之后重點講解了Web應用安全,包括常見的Web漏洞,如SQL注入、XSS跨站腳本攻擊、CSRF跨站請求偽造等。另外,張老師還為我們介紹了隱私安全。
1. 信息技術的發展階段
通信(電報/電話) -> 計算機 -> 網絡 -> 網絡化社會
信息安全的歷史從通信開始。
2. 信息化發展凸顯了信息安全問題
2010年6月 震網病毒(stuxnet病毒) -> 證明物理隔離也不一定安全
2015年9月 XcodeGhost -> 證明編譯層面也可能存在安全漏洞
網絡威脅驚人,每天超過億次GPT攻擊,攻擊方式:可探測 -> 可訪問 -> 可掌控
威脅方-防護方的非對稱性:
- 攻防技術非對稱
大量自動化攻擊工具的出現,使得入侵網絡與信息系統的門檻降到極低。 - 攻防成本非對稱
攻防技術的非對稱帶來了攻防成本的非對稱。風險成本也極低。對于國家安全而言,攻防成本的非對稱性具有特殊的意義。
偽基站短信照片案例層出不窮。 - 攻防主體非對稱
3. Web應用安全
常見的Web漏洞:
| SQL注入 | 高危 |
| 跨站腳本攻擊漏洞 | 高危 |
| Cookie欺騙 | 高危 |
| CSRF(跨站請求偽造) | 中危 |
| Web信息泄露 | 中危 |
| 權限問題 | 中危 |
| 邏輯漏洞 | 中危 |
| 第三方程序漏洞 | 高危 |
| Web服務器解析漏洞 | 高危 |
| 弱口令 | 高危 |
| SSRF | 中危 |
3.1 SQL注入
SQL注入本質是由于輸入檢查不充分,導致SQL語句將用戶提交的非法數據當作語句的一部分來執行。攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務器執行惡意的SQL命令。 攻擊者通過在應用程序預先定義好的SQL語句結尾加上額外的SQL語句元素,欺騙數據庫服務器執行非授權的查詢,篡改命令。
- 按提交字符類型可分為:數字型、字符型、搜索型。
- 按HTTP提交方式可分為:GET、POST、Cookie。
- 按注入方式可分為:盲注、union注入、報錯注入。
3.2 XSS跨站腳本攻擊
當用戶訪問網頁時, 攻擊代碼在用戶的瀏覽器上被執行, 就形成了一次XSS跨站腳本攻擊。根據XSS漏洞的原理可以將XSS跨站攻擊劃分成反射性XSS和存儲型XSS。對于反射性XSS, 攻擊者需要欺騙用戶點擊一個惡意URL才能攻擊成功。存儲型XSS的危害相對來說更大一些, 攻擊者提交的惡意代碼, 會被Web服務器端接收并存儲, 訪問該網頁的用戶, 他們的瀏覽器會執行這段惡意代碼。
3.3 CSRF跨站請求偽造
攻擊者使用被攻擊者的身份,以其名義發送惡意請求,會造成個人隱私泄露以及財產安全。
4. 隱私安全
當前許多企業和公司會對用戶軌跡進行分析,導致用戶隱私安全受到威脅。
講座二、量子密碼
在本次講座中,孫瑩老師為我們系統地講解了量子密碼的研究背景、量子密碼的基本物理概念、量子密碼典型協議BB84量子密鑰分配協議、量子密碼四個基本步驟、量子密碼的研究現狀即實驗進展。
1 量子密碼研究背景
傳統密碼
| 優點 | 加密速度快,適合批量加密數據 | 可解決密鑰分配、管理問題,可用于簽名 |
| 缺點 | 密鑰分配、密鑰管理、沒有簽名功能 | 加密速度慢 |
實際使用時,多用混合密碼體制:用公鑰密碼體制分發會話密鑰,用對稱密碼體制加密數據。
傳統密碼的挑戰
然而,這種傳統密碼受到了來自量子密碼的挑戰:基于大數分解的Shor算法和基于快速搜索的Grover算法能夠迅速破解傳統密碼。
量子密碼
量子秘鑰分配(QKD)的特點:
- 可以檢測到潛在竊聽行為。
- 基于物理學原理,理論上可達到無條件安全。
也就是說,量子密碼可達到無條件安全的保密通信。
2 基本物理概念
量子
微觀世界的某些物理量不能連續變化而只能取某些分立值,相鄰分立值的差稱為該物理量的一個量子。
直觀理解:具有特殊性質的微觀粒子或光子。
量子態
- 經典信息:比特0或1,可用高低電壓等表示。
- 量子信息:量子比特(Qubit) |0> (水平方向) |1> (豎直方向)
- 量子比特還可以處在不同狀態的疊加態上。
量子態的可疊加性帶來一系列特殊性質
- 量子計算的并行性:強大的計算能力
- 不可克隆定理:未知量子態不可準確測量
- 測不準原理:未知量子態不可準確測量
- 對未知量子態的測量可能會改變量子態
量子比特的測量--力學量、測量基
- 每個力學量都對應一個厄米算符(矩陣)
- 測量某個力學量時,測量結果為此力學量對應厄米算符的本征值(特征值)
- 測量后量子態塌縮到此本征值對應的本征態(特征向量)
3. 四個基本步驟
- 信息傳輸
- 竊聽檢測
- 糾錯
- 保密增強
信息傳輸:通常用到兩種信道
量子信道
- 傳輸量子載體,例如:光纖、自由空間等。
- 允許竊聽者對傳輸的量子消息進行任意竊聽和篡改。
經典信道
- 傳輸經典信息,例如:測量基、測量結果等。
- 基本假設:竊聽者只能竊聽經典消息而不能篡改它們。
竊聽檢測
- 一般手段:隨機選擇部分量子載體,比較初末狀態。
- 對好的協議:竊聽必然干擾量子態,進而引入錯誤。
- 一旦發現存在竊聽(錯誤率過高),則終止通信,丟棄相關數據。
- 因為傳輸的是密鑰(即隨機數),而不是秘密消息,因此可以丟棄它們而不會因此泄露秘密。
糾錯和保密增強:解決噪聲問題
- 理想情況(無噪聲):有錯誤就認為有竊聽
- 實際情況(有噪聲):噪聲也會帶來一定錯誤率
- 對策:設定一個閾值,當錯誤率高于這個閾值時丟棄通信數據,反之保留(即允許有一定的錯誤)
- Alice和Bob的密鑰可能不完全一致
- Eve可能在噪聲掩飾下獲得部分密鑰信息
- Alice和Bob的密鑰可能不完全一致
- 糾錯:糾正密鑰中的錯誤
- 保密增強:通過壓縮密鑰長度,將Eve可能獲得的部分密鑰信息壓縮至任意小,得到安全的密鑰
講座三、人工智能與密碼分析設計
在本次講座中,金鑫老師主要分為五個部分為我們詳細講述了人工智能與密碼分析設計的結合,包括技術背景、密碼分析與機器學習、深度學習簡介與現狀、深度學習與密碼分析、深度學習與密碼設計。
1. 技術背景
AI+Security=AISec
用AI和ML解決安全問題(讓安全更智能):
計算機取證、垃圾郵件檢測、身份驗證、網絡釣魚檢測與預防、僵尸網絡監測、入侵檢測和響應、異常行為檢測、惡意軟件標識、數據匿名/反匿名、社會網絡安全、大數據安全分析等。用安全性解決A問題(讓AI更安全):
分布式安全推理與決策、安全的多方計算和加密方法、隱私保護數據挖掘、差異隱私、驗證碼的設計與分析、人工智能信任和聲譽方法、通過智能探測進行漏洞測試、生成訓練和測試集的技術和方法等。
2. 密碼分析與機器學習
密碼分析與機器學習之間有天然的相似性:
x -> F(x) -> y對于機器學習:
x為輸入樣本,F(x)為機器學習的模型(可以理解為一個函數),y為輸出,如果是分類,則y是分類標簽,如果是回歸,則y是真實值向量。
對于密碼分析:
x為輸入的明文,F(x)為密鑰(可以理解為一個函數),y為加密后得到的密文。
從研究趨勢來看,越來越多的密碼分析方法開始使用機器學習結束,例如破解DES的遺傳算法、用于側信道分析的支持向量機算法等。
3. 深度學習簡介與現狀
人工智能(AI)/機器學習(ML)/深度學習(DL)
人工智能分為很多分支,機器學習只是人工智能的其中一個分支,而深度學習是機器學習的一個分支。這三者之間是包含關系。
深度學習簡介
近幾年,深度學習技術掀起了人工智能研究與應用的新一輪浪潮,深度學習技術在多個方面取得了較大突破,其在人工智能系統中所占的比例日趨增大,已經應用于多項實際場景業務系統中。深度學習技術涌現出大量性能優秀的深度神經網絡(DNN),例如卷積神經網絡(CNN)、循環神經網絡(RNN)、生成對抗網絡(GAN)等,在大樹分析、圖像識別、機器翻譯、視頻監控中取得了較大進步。
4. 深度學習與密碼分析
4.1、神經網絡的側信道攻擊
4.2、基于循環神經網絡的明文破譯
4.3、基于生成對抗網絡的口令破譯
4.4、基于深度神經網絡的密碼基元識別
5. 深度學習與密碼設計
目前密碼算法的設計還停留在人工設計階段,較為耗時耗力,難以適應未來對密碼算法設計的需求,能不能讓機器自動設計密碼算法?
生成對抗網絡(Generative Adversarial Network, GAN)
生成式對抗網絡(GAN, Generative Adversarial Networks)是一種深度學習模型,是近年來復雜分布上無監督學習最具前景的方法之一。模型通過框架中(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的互相博弈學習產生相當好的輸出。
密碼組件經過生成對抗網絡中的算法生成器,得到設計出來的密碼算法,同時密碼破解器將對此密碼算法進行破解,算法生成器和密碼破解器就這樣在相互博弈中學習產生出好的算法和好的破解方法。
講座四、信息隱藏
在本次講座中,夏超老師為我們全方位講述了信息隱藏相關知識,其中重點講解了信息隱藏的重要技術--隱寫,包括隱寫技術、隱寫分類、隱寫分析等。
1. 從密碼到信息隱藏
- 密碼主要解決了信息保密傳輸、數據來源認證與完整性認證等信息安全問題。
保護保密通信的數據--加密,但密碼方法不能解決以下兩方面問題:
1、保密通信的行為隱蔽性問題
保護保密通信的事實--隱蔽通信(隱寫)2、內容保護與內容認證問題
密碼保護數據,但是內容≠數據,內容個別肆意傳播的問題要歸信息隱藏“管”。
密碼保護的是內容,而信息隱藏保護的是信息“傳輸”這個行為。
2. 信息隱藏
信息隱藏是指將特定用途的信息隱蔽地藏于其他載體(Cover)中,使得它們難以被發現或者消除,通過可靠提取隱藏的信息,實現隱蔽通信、內容認證或內容保護功能。
信息隱藏主要包括水印、可視密碼、隱寫等。
信息隱藏--魯棒水印(Robust Watermaking)
魯棒水印是重要的數字產權管理與安全標識技術之一,指將與數字媒體版權或者購買者有關的信息嵌入數字媒體中,使攻擊者難以在載體不遭到顯著破壞情況下消除水印,而授權者可以通過檢測水印實現對安全所有者或者內容購買者等信息的認定。
信息隱藏--可視密碼(Visual Cryptography)
可視密碼技術使Naor和Shamir于1994年首次提出的,其主要特點是恢復秘密圖像時不需要任何復雜的密碼學計算,而是以人的視覺即可將秘密圖像辨別出來。其做法是產生n張不具有任何意義的膠片,任取其中t張膠片疊合在一起即可還原出隱藏在其中的秘密信息。
信息隱藏--隱寫(Steganography)
- 隱寫是基于信息隱藏的隱蔽通信或者隱蔽存儲方法,將秘密信息難以感知地隱藏在內容可公開的載體中,保護保密通信或者保密存儲這些行為事實。
- 稱隱寫后的載體為隱寫媒體Stego。
3. 隱寫技術
隱寫技術可被恐怖組織和非法團體等用于傳遞信息,從事分裂國家主權、破壞社會穩定等非法活動。
- 為了有效遏制隱寫的惡意使用,隱寫分析已受到國內外學術界的廣泛關注和高度重視,被諸多國家安全軍事部門應用于實戰之中。
- 隱寫分析是隱寫的反向技術,主要用于檢測媒體文件是否含有隱藏的信息,可用于對隱寫媒體文件進行預警、阻斷。
隱寫分析對抗隱寫的主要手段:發現與識別隱寫對各類特征的擾動。
- 有效提取隱寫分析特征。發現與提取對隱寫敏感的特征。
- 有效構造隱寫特征識別系統。構造與訓練能有效識別隱寫分析特征的系統。
- 有效獲得先驗知識。先驗知識是指分析者知道的有關隱寫者所采用的算法和參數等信息,它能幫助分析者更好地提取隱寫分析特征并構造特征識別系統。
- 有效提取隱寫分析特征。發現與提取對隱寫敏感的特征。
4. 隱寫分類
- 文本
- 輕微改變字符間距
- 不可見字符
- (Office, PDF, HTML)的格式信息
- 輕微改變字符間距
- 音頻
- MP3
- AMR
- 視頻
- 運動向量
- 變換系數
- 幀內/間預測模式、量化參數、熵編碼
- 運動向量
- 圖像
- 空域圖像
- JPEG圖像
- 空域圖像
5. 隱寫
LSB嵌入
最簡單且最普遍的隱寫算法就是最低有效位嵌入算法(The Least Significant Bit, LSB)
矩陣嵌入(改得少)
以最小的嵌入修改數目達到嵌入要傳遞信息的目的,可提高嵌入效率,即利用較少的嵌入修改嵌入同樣數量的秘密信息。
對于2bit的信息,LSB需要平均改動1個像素,矩陣嵌入只需平均改動3/4個像素。
自適應隱寫(改的好)
非自適應隱寫(Non-adaptive Steganography)
非自適應隱寫不考慮載體的圖像內容,隨機嵌入信息。
“嵌入失真函數+STCs編碼”(Syndrome-Trellis Codes)
根據構造的嵌入失真函數計算載體圖像中元素發生更改所引起的失真,利用隱寫編碼控制秘密信息的嵌入位置,在最小化圖像總體嵌入失真的同時保證秘密信息的準確提取。
HUGO(Highly Undetectable steGO)是第一個基于“嵌入失真函數+STCs編碼”的自適應隱寫算法,應用于BOSS(Break our Steganographic System)隱寫分析競賽。
自適應隱寫
- 空域自適應隱寫
- WOW(Wavelet Obtained Weights)
- S-UNIWARD(Spatial UNIversal WAvelet Relative Distortion)
- HILL(HIgh-pass, Low-pass, and Low-pass)
- WOW(Wavelet Obtained Weights)
- JPEG域自適應隱寫
- UED(Uniform Embedding Distortion)
- SC-UED(Single Coefficient UED)
- JC-UED(Joint Coefficients UED)
- J-UNIWARD(JPEG UNIversal WAvelet Relative Distortion)
- UED(Uniform Embedding Distortion)
7. 隱寫分析
高維隱寫分析特征
高維隱寫分析特征可以盡可能多地捕獲隱寫對圖像統計特性的影響。空域高維隱寫分析特征:
JPEG圖像解壓到空域,之前的JPEG圖像隱寫分析特征都是在DCT系數上提取的。因為空域提取的特征對JPEG圖像自適應隱寫更為敏感。
利用了相位信息(JPEG phase),所以被稱為JPEG-phase-aware特征。
選擇信道高維隱寫分析特征
講座五、區塊鏈
在本次講座中,張健毅老師為我們講述了區塊鏈技術、比特幣、挖礦工作、共識機制、獎勵合作的制度設計、區塊鏈的未來等。
區塊鏈
什么是比特幣
比特幣(Bitcoin),是一種由開源的P2P軟件產生的電子幣,數字幣,是一種網絡虛擬資產。比特幣基于一套密碼編碼、通過復雜算法產生,這一規則不受任何個人或組織干擾,去中心化;任何人都可以下載并運行比特幣客戶端而參與制造比特幣;比特幣利用電子簽名的方式來實現流通,通過P2P分布式網絡來核查重復消費。每一塊比特幣的產生、消費都會通過P2P分布式網絡記錄并告知全網,不存在偽造的可能。
比特幣的特點
- 數字貨幣。
- 不依托于任何國家或組織而利用計算機技術獨立發行。
- 通過P2P分布式技術實現,無中心點。
- 所有人均可自由的參與。
- 總量有限,不可再生。
- 本身機制開源,可以被山寨。
比特幣交易
每一位所有者(A)利用他的私鑰對前一次交易T1和下一位所有者(B)的公鑰(俗稱:地址)簽署一個隨機散列的數字簽名,A將此數據簽名制作為交易單T2并將其(交易單T2)廣播全網,電子貨幣就發送給了下一位所有者。
其中:
1.交易發起者的私鑰:私鑰為個人所知,他人無從知曉。
2.前一次交易:前一次交易數據說明了該次交易的貨幣的來源(這部分貨幣是怎么到當前發起人這里來的)。
3.下一位所有者的公鑰:即交易接收方的地址,此數據說明了當前交易的目標是誰。
4.數字簽名:發起方將前一次交易數據和接收方公鑰連接起來并對其求Hash值x,再利用自己的私鑰對x加密,便得到了這份數字簽名。
Block
- 比特幣網絡中,數據以文件的形式被永久記錄,稱之為區塊(Block)。
- 記錄交易單的數據單元叫做Block,一個Block上會記錄很多交易單。
- Block有很多份,每個Block只記錄比特幣全網10分鐘內的交易信息,每約10分鐘產生一個新的Block。
- 每個新的Block含有的一定數額的比特幣歸創建者所有,此規則稱為“激勵”。
比特幣雖然是電子貨幣,但比特幣系統中并沒有特定的數據結構用來單純代表貨幣。本質上,比特幣的存在是通過交易單來提現。通俗的來講,現實生活中我們有實在的紙張來代表我們的貨幣(比如面值10塊的RMB紙張代表著10塊錢RMB),當我們去銀行核對財務時銀行也提供對賬單來表示我們的貨幣去留。比特幣的提現依托于交易單,交易單類似于銀行的對賬單,其通過記錄貨幣的去留來證明你有多少貨幣,而不是提供給你具體的貨幣單元。
挖礦工作
生產Block的過程,被形象的稱為“挖礦”,生產工也被稱為“礦工”。
挖礦過程實際上就是反復去嘗試尋找一個隨機數(又稱“幸運數”),使得將最后一個Block的hash值、當前世界中尚未被加入到任何Block的交易單、隨機數三部分組織起來送入SHA256算法計算出散列值X(256位),如果X滿足一定條件(比如前20位均為0),那么該節點初步獲得創建Block的權利。
工作量證明難度系數
對于每個Block存在一個難度系數,此系數可以轉換為一個256位的整數,挖礦計算出的Hash值X必須小于該整數,此條件作為尋找隨機數的附加條件。
當某時刻網絡檢測到新Block的產生速度不符合約10分鐘一個時,將調解該系數(加大或者縮小),從而使下一個Block的產生速度符合預期。
每當節點(礦工)計算出了一個符合條件的隨機數時,它僅僅獲得了創建臨時Block的權利,它立即將相關數據打包好作為一個臨時Block并廣播全網。
每10分鐘內全網不止一個節點能計算出幸運數字,即十分鐘內會有多個節點在網絡中廣播它們各自打包好的臨時Block(都是合法的)。通過誰先計算出誰后計算出來決定接受誰的臨時Block轉正顯然很難做到,因為所有節點的時間不可能嚴格一致(而且可以任意被調節),而且網絡傳輸有快有慢。
Block鏈分支
某一節點若收到多個針對同一前續Block的后續臨時Block,則該節點會在本地Block鏈上建立分支,多個臨時Block對應多個分支。
從block hash算法我們知道,合理的block并不是唯一的,同一高度存在多個block的可能性。那么,當同一個高度出現多個時,主鏈即出現分叉(Fork)。遇到分叉時,網絡會根據下列原則選舉出Best Chain:
- 不同高度的分支,總是接受最高(即最長)的那條分支
- 相同高度的,接受難度最大的
- 高度相同且難度一致的,接受時間最早的
- 若所有均相同,則按照從網絡接受的順序
- 等待Block Chain高度增一,則重新選擇Best Chain
分支博弈
我們假設所有的節點都是理性的,追求收益最大化;都是不誠實的,且不惜任何手段獲取利益;所有節點均獨自挖礦不理會其他節點,并將所得收益放入自己口袋,現象就是一個節點挖一個分支。由于機器的配置總是有差別的,那么算力最強的節點挖得的分支必然是最長的,如果一個節點的分支不是最長的,意味其收益存在不被認可的風險(即零收益)。為了降低、逃避此風險,一些節點肯定會聯合起來一起挖某個分支,試圖成為最長的分支或保持最長分支優勢。
一旦出現有少量的節點聯合,那么其他節點必然會效仿,否則他們收益為零的風險會更大。于是,分支迅速合并匯集,所有節點都會選擇算力更強的分支,只有這樣才能保持收益風險最小。最終,只會存在一個這樣的分支,就是主干分支(Best/Main Chain)。
對于不誠實節點來說,結局是無奈的:能且只能加入主干挖礦。不加入即意味被拋棄,零收益;加入就是老實干活,按占比分成。
區塊鏈技術
點對點對等網絡
- 網格網絡
- 權限對等、數據公開
- 數據分布式、高冗余存儲
共識機制
- 工作量證明(PoW)
- 權益證明(PoS)
- 基于信任的Quorum
PoS是PoW的一種升級共識機制,根據每個節點所占代幣的比例和時間,等比例的降低挖礦難度,從而加快找隨機數的速度。在一定程度上縮短了共識達成的時間,但還是需要挖礦,本質上沒有解決商業應用的痛點。
共識機制防止了“雙重支付”
- 信息復制的零邊際成本vs價值的唯一不可復制性
- 信息互聯網->價值互聯網
數據可驗證
- PKI公鑰體系
- 數字簽名提供密碼學證據
- 零知識證明
- 數字簽名提供密碼學證據
- 不可變數據
- 只可添加,不可編輯
- 不可變數據+時間戳,為互聯網加上了時間軸
- 只可添加,不可編輯
獎勵合作的制度設計
- 非合作博弈--不基于信任,無外部強制力
- 合作是一種演化穩定策略,合作達到納什均衡
- 51%攻擊問題
51%攻擊
攻擊步驟:
攻擊結果:
由于撤銷了所有對外付款交易,等于收回來所以已賣掉的比特幣。
可行性評估:
現在比特幣全網算力差不多90T,而且還會快速增長,現在看來只有現在的幾大礦池聯合,才具有發動51%攻擊的實力,普通個人或機構實施此攻擊的可能性越來越小。
講座六、安全漏洞利用與挖掘
在本次講座中,王志強老師通過具體漏洞挖掘示例為我們詳細介紹了常見的漏洞挖掘技術以及漏洞挖掘技術的研究進展。
1.常見漏洞挖掘技術
1.1 手工測試
定義:由測試人員手工分析和測試被測目標,發現漏洞的過程,是最原始的漏洞挖掘方法。【憑經驗依次檢驗每個可能產生漏洞的脆弱點】
- 優點:人-主觀能動性-顯而易見和復雜不易見
缺點:人-無規律可循、不可大規模等
1.2 補丁比對
- 定義:一種通過對比補丁之間的差異來挖掘漏洞的技術。
- 文本(難定位,難出難理解)
- 匯編指令(易理解,輸出范圍大,難定位)
- 結構化(迅速直觀,流行)
- 文本(難定位,難出難理解)
- 優點:發現速度快
- 缺點:已知漏洞
- 常見工具:PatchDiff2、bindiff
1.3 程序分析
程序分析包括靜態和動態
靜態程序分析
- 定義:是指在不運行計算機程序的條件下,通過詞法分析、語法分析、語義分析、控制流分析、污點分析等技術對程序代碼進行掃描,驗證代碼是否滿足規范性、安全性等指標的一種代碼分析技術。
- 優點:覆蓋率100%,自動化程度高
- 缺點:漏報和誤報(RICE,程序分析問題不可判定)
動態程序分析
- 定義:在運行計算機程序的條件下,驗證代碼是否滿足規范性、安全性等指標的一種代碼分析技術。
- 一般通過插樁技術分析程序的異常行為。
插樁技術是指在保證被測程序邏輯完整性的基礎上在程序的關鍵位置插入一些“樁”,即加入一些測試代碼,然后執行插樁后的程序,通過“樁”的執行獲取程序的控制流和數據流信息,進而分析程序的異常行為。
- 優點:自動化程度高、覆蓋率較高
- 缺點:漏報和誤報(RICE,程序分析問題不可判定)、冗余代碼?時間開銷 ↑
1.4 二進制審核
定義:源代碼不可得,通過逆向獲取二進制代碼,在二進制代碼層次上進行安全評估
- 優點:缺點: 同靜態審核
- 逆向導致信息丟失,理解困難,甚至引入邏輯錯誤。
二進制及編輯工具:IDA Pro、Ollydbg、UltraEdit、Hex Workshop以及WinHex
1.5 模糊測試
- 定義:通過向被測目標輸入大量的畸形數據并監測其異常來發現漏洞
關鍵:測試用例構造,自動化
- 優點:無須源碼、誤報低、自動化程度高
- 缺點:覆蓋率低
工具:Peach、Sulley、Autodafe、SPIKE等
2.漏洞挖掘技術研究進展
2.1 二進制程序函數識別
二進制程序函數識別是二進制分析的基礎,對于軟件漏洞分析與修復,甚至惡意軟件檢測、協議逆向等都至關重要。由于二進制代碼缺少高級語言程序中的信息,函數的識別往往比較困難,現有的反匯編分析工具具有識別正確率低的缺陷。
Shin等用循環神經網絡算法(RNN)改進了ByteWeight方案的性能,在模型訓練時間上有了數量級上的提升,并取得了更高的準確率。
2.2 測試用例生成
- 在軟件漏洞挖掘中,構造代碼覆蓋率高或脆弱性導向型的測試輸入能提高漏洞挖掘的效率和針對性。
- 機器學習→指導生成更高質量的測試輸入樣本
- Godefroid等首次把模糊測試中的高結構化樣本生成問題轉換成了NLP領域的文本生成問題,采用了Char-RNN(recurrentneural network)模型實現對PDF文件格式中的obj語法的學習,并用訓練好的模型生成具有多樣性的obj對象和PDF文件。
2.3 路徑約束求解
- 模糊測試,特別是代碼覆蓋率制導的模糊測試(如AFL),側重于篩選可以覆蓋新路徑的樣本為種子文件,但對種子文件變異時并沒有充分利用程序數據流等信息指導變異,這使得變異盲目低效,生成樣本冗余。
- 具備路徑約束求解能力是符號執行比模糊測試等漏洞挖掘技術更先進的體現,也使得符號執行在理論上具備了系統性探索程序執行路徑的能力。
- 約束求解→問題:路徑爆炸,效率較低
- Chen等提出了Angora,采用污點追蹤測試輸入中影響條件分支的字節,然后使用梯度下降的方式對變異后生成的路徑約束進行求解(目標函數不可導將有問題)
二、各小組講座內容總結
講座1 在10秒內找到未知的惡意:在Google-Play規模上大規模審查新的威脅
本文開發了一種名為MassVet的新技術,用于大規模審查應用程序,而無需了解惡意軟件的外觀和行為方式。與通常使用重量級程序分析技術的現有檢測機制不同,文中所用的方法只是將提交的應用程序與已經在市場上的所有應用程序進行比較,重點關注那些共享類似UI結構(表示可能的重新打包關系)和共性的區別。一旦公共庫和其他合法代碼重用被刪除,這種差異/通用程序組件就會變得非常可疑。研究中,本文在一個有效的相似性比較算法之上構建了這個“DiffCom”分析,該算法將應用程序的UI結構或方法的控制流圖的顯著特征映射到一個快速比較的值。在流處理引擎上實施了MassVet,并評估了來自全球33個應用市場的近120萬個應用程序,即Google Play的規模。最后研究表明,該技術可以在10秒內以低錯誤檢測率審核應用程序。此外,它在檢測覆蓋率方面優于VirusTotal(NOD32,賽門鐵克,邁克菲等)的所有54臺掃描儀,捕獲了超過10萬個惡意應用程序,包括20多個可能的零日惡意軟件和數百萬次安裝的惡意軟件。仔細觀察這些應用程序可以發現有趣的新觀察結果:例如,谷歌的檢測策略和惡意軟件作者的對策導致某些Google Play應用程序的神秘消失和重新出現。
本文的檢測思路:
MassVet結構:
講座2 幽靈攻擊:利用預測執行
幽靈攻擊主要利用了CPU的預測執行機制。
預測執行機制
通常,處理器不知道程序的未來指令流。例如,當無序執行執行條件分支指令時,會發生這種情況,該條件分支指令的方向取決于其執行尚未完成的先前指令。在這種情況下,處理器可以保存包含其當前寄存器狀態的檢查點,對程序將遵循的路徑進行預測,并沿路徑推測性地執行指令。如果預測結果是正確的,則不需要檢查點,并且在程序執行順序中退出指令。否則,當處理器確定它遵循錯誤的路徑時,它通過從檢查點重新加載其狀態并沿著正確的路徑繼續執行來放棄沿路徑的所有待處理指令。執行放棄指令,以便程序執行路徑外的指令所做的更改不會對程序可見。因此,推測執行維護程序的邏輯狀態,就好像執行遵循正確的路徑一樣。
幽靈攻擊
幽靈攻擊涉及誘使受害者推測性地執行在正確的程序執行期間不會發生的操作,并且通過旁路分支將受害者的機密信息泄露給攻擊者。論文中的幽靈攻擊結合了側信道攻擊,故障攻擊和面向返回編程的方法,可以從受害者的進程中讀取任意內存。更廣泛地說,論文說明了推測性執行實施違反了許多軟件安全機制所依據的安全假設,包括操作系統進程分離,靜態分析,容器化,即時(JIT)編譯以及緩存時序/側通道的對策攻擊。由于在數十億設備中使用的Intel,AMD和ARM微處理器中存在易受攻擊的推測執行能力,這些攻擊對實際系統構成嚴重威脅。
欺騙推測分支訓練器
下面這段代碼中,攻擊者首先使用有效的x調用相關代碼,訓練分支預測器判斷該if為真。 然后,攻擊者設置x值在array1_size之外。 CPU推測邊界檢查將為真,推測性地使用這個惡意x讀取array2 [array1 [x] * 256]。 讀取array2使用惡意x將數據加載到依賴于array1 [x]的地址的高速緩存中。當處理器發現這個if判斷應該為假時,重新選擇執行路徑,但緩存狀態的變化不會被恢復,并且可以被攻擊者檢測到,從而找到受害者的存儲器的一個字節。
運行結果
講座3 您所有的GPS都屬于我們:對道路導航系統的秘密操作
這篇論文主要探討了對道路導航系統進行隱身操縱攻擊的可行性目標是觸發假轉向導航,引導受害者到達錯誤的目的地而不被察覺。其主要想法是略微改變GPS位置,以便假冒的導航路線與實際道路的形狀相匹配并觸發實際可能的指示。為了證明可行性,該論文首先通過實施便攜式GPS欺騙器并在真實汽車上進行測試來執行受控測量。然后,該論文設計一個搜索算法來實時計算GPS移位和受害者路線。該論文使用追蹤駕駛模擬(曼哈頓和波士頓的600輛出租車道路)進行廣泛的評估,然后通過真實駕駛測試(攻擊我們自己的車)來驗證完整的攻擊。最后,該研究組在美國和中國使用駕駛模擬器進行欺騙性用戶研究,結果顯示95%的參與者遵循導航沒有意識到這種攻擊就到了錯誤的目的地。
本篇論文共做出三點貢獻:
- 提出了一種秘密操縱道路導航系統的攻擊方法。該算法利用了現實中出租車行駛軌跡,并對算法進行了廣泛的評估。
- 我們實現了攻擊算法和一個低成本的便攜式GPS欺騙器.在道路上的實際測量和駕駛測試證實了攻擊的可行性。
- 我們進行了一項用戶調查研究,以證明在道路行駛過程中人為的因素可以影響攻擊是否成功。這些結果表明,有些司機常見的駕駛習慣大概率會讓他們遭受到GPS欺騙攻擊,并對結果進行了分析和提出了相應的對策。
講座4 偉大的訓練帶來巨大的弱點:針對轉移學習的實際攻擊(本組)
這篇論文講的主要講的是對遷移學習的攻擊及相應的防御。
遷移學習
遷移學習過程
學生模型通過復制教師模型的前N-1層來初始化,并增加了一層全連接層用于分類,之后使用自己的數據集對學生模型進行訓練,訓練過程中,前K層是被凍結的,即它們的權重是固定的,只有最后N-K層的權重才會被更新。前K層之所以在訓練期間要被凍結,是因為這些層的輸出已經代表了學生任務中的有意義的特征,學生模型可以直接使用這些特征,凍結它們可以降低訓練成本和減少所需的訓練數據集。
遷移學習方法
根據訓練過程中被凍結的層數K,可以把遷移學習分為以下3種方法:深層特征提取器(Deep-layer Feature Extractor)、中層特征提取器(Mid-layer Feature Extractor)、全模型微調(Full Model Fine-tuning)。
- Deep-layer Feature Extractor:K=N-1,學生任務與教師任務非常相似,需要的訓練成本最小
- Mid-layer Feature Extractor:K<N-1,允許更新更多的層,有助于學生為自己的任務進行更多的優化
- Full Model Fine-tuning:K=0,學生任務和教師任務存在顯著差異,所有層都需要微調
本文的攻擊
本文攻擊模式
由于當前模型的默認訪問模式是:
- 教師模型被深度學習服務平臺公開。
- 學生模型離線訓練且不公開。
本文提出了一個新的針對遷移學習的對抗性攻擊,即對教師模型白盒攻擊,對學生模型黑盒攻擊。攻擊者知道教師模型的內部結構以及所有權重,但不知道學生模型的所有權值和訓練數據集。
本文具體攻擊思路
攻擊目標:把source圖貓誤識別為target圖狗
本文的攻擊思路:首先將target圖狗輸入到教師模型中,捕獲target圖在教師模型第K層的輸出向量。之后對source圖加入擾動,使得加過擾動的source圖(即對抗樣本)在輸入教師模型后,在第K層產生非常相似的輸出向量。由于前饋網絡每一層只觀察它的前一層,所以如果我們的對抗樣本在第K層的輸出向量可以完美匹配到target圖的相應的輸出向量,那么無論第K層之后的層的權值如何變化,它都會被誤分類到和target圖相同的標簽。
如何計算擾動
本文通過求解一個有約束的最優化問題來計算擾動。目標是是模擬隱藏層第K層的輸出向量,約束是擾動不易被人眼察覺。即在擾動程度perturb_magnitude小于一定約束值(擾動預算P)的前提下,最小化對抗樣本(擾動后的source image)第K層的輸出向量與target image 第K層的輸出向量的歐式距離。前人計算擾動程度都是使用Lp范數,但是它無法衡量人眼對于圖像失真程度的感知。所以本文使用DSSIM計算擾動程度,它是一種對圖像失真度的客觀測量指標。
目標/非目標攻擊
目標攻擊:將source image x_s 誤分類成target image s_t 所屬標簽
非目標攻擊:將source image x_s 誤分類成任意其他的source image 所屬標簽
非目標攻擊需要確定一個“方向”把source image推出它自己的決策邊界。但是要預測這個“方向“是非常難的,所以本文的解決方法是,把每個目標攻擊的攻擊目標都試一遍,然后選出與source image第K層輸出向量距離最小的類別作為目標。
防御
論文還提出了3種針對本文攻擊的防御方法,其中最可行的是修改學生模型,更新層權值,確定一個新的局部最優值,在提供相當的或者更好的分類效果的前提下擴大它和教師模型之間的差異。這又是一個求解有約束的最優化問題,約束是對于每個訓練集中的x,讓教師模型第K層的輸出向量和學生模型第K層的輸出向量之間的歐氏距離大于一個閾值,在這個前提下,讓預測結果和真實結果的交叉熵損失最小。
復現結果
下圖為65張人臉分類任務的攻擊結果:
上下分別是:
對31號進行目標攻擊,誤分類為2號,攻擊成功;
對64號進行目標攻擊,誤分類為46號,攻擊失敗;
左圖為source image,中圖為加過擾動的對抗樣本,右圖為其要誤分類成的target image。
講座5 Safeinit:全面而實用的未初始化讀取漏洞緩解
一些概念
- 未初始化漏洞:未初始化值的使用仍然是C / C ++代碼中的常見錯誤。這不僅導致未定義的和通常不期望的行為,而且還導致信息泄露和其他安全漏洞。
未定義行為:簡單地說,未定義行為是指C語言標準未做規定的行為。編譯器可能不會報錯,但是這些行為編譯器會自行處理,所以不同的編譯器會出現不同的結果,什么都有可能發生,這是一個極大的隱患,所以我們應該盡量避免這種情況的發生。 - 未定義行為:簡單地說,未定義行為是指C語言標準未做規定的行為。編譯器可能不會報錯,但是這些行為編譯器會自行處理,所以不同的編譯器會出現不同的結果,什么都有可能發生,這是一個極大的隱患,所以我們應該盡量避免這種情況的發生。
本文貢獻
- 提出了SafeInit,一種基于編譯器的解決方案。
- 通過確保棧和堆上的初始化來自動減輕未初始化的值讀取。
- 提出的優化可以將解決方案的開銷降低到最低水平(<5%),并且可以直接在現代編譯器中實現基于clang和LLVM的SafeInit原型實現,并表明它可以應用于大多數真實的C / C++應用程序而無需任何額外的手動工作。
- 評估我們在CPU-intensiv占用CPU資源的操作、IO-intensive占用I/O設備的操作以及Linux內核方面的工作,并驗證是否成功地減輕了現存的漏洞。
Safeint
llvm/clang架構
LVM包括了一個狹義的LLVM和一個廣義的LLVM。廣義的LLVM其實就是指整個LLVM編譯器架構,包括了前端、后端、優化器、眾多的庫函數以及很多的模塊;而狹義的LLVM其實就是聚焦于編譯器后端功能(代碼生成、代碼優化等)的一系列模塊和庫。Clang是一個C++編寫、基于LLVM的C/C++/Objective-C/Objective-C++編譯器。Clang是一個高度模塊化開發的輕量級編譯器,它的編譯速度快、占用內存小、非常方便進行二次開發。
Safeinit架構
編譯器在獲得C/C++文件后,編譯器前端將源文件轉換為中間語言(IR),通過初始化、代碼優化結合現存編譯器的優化器,之后通過無效數據消除、強化分配器最后獲得二進制文件。Safeinit在整個過程中所添加的就是 初始化全部變量、優化以及強化分配器,來避免或緩解未初始化值。最后,SafeInit優化器提供了非侵入式轉換和優化,它們與現有的編譯器優化(必要時自行修改)以及最終組件(現有“死存儲消除”優化的擴展)一起運行。
講座6 操縱機器學習:回歸學習的中毒攻擊與對策
本文貢獻
- 對線性回歸模型的中毒攻擊及其對策進行了第一次系統研究。
- 提出了一個針對中毒攻擊和快速統計攻擊的新優化框架,該框架需要對培訓過程的了解很少。
- 采用原則性方法設計一種新的魯棒防御算法,該算法在很大程度上優于現有的穩健回歸方法。
- 在醫療保健,貸款評估和房地產領域的幾個數據集上廣泛評估作者提出的攻擊和防御算法。
- 在案例研究健康應用中證明了中毒攻擊的真實含義。
系統架構
- 理想世界:學習過程包括執行數據清理和標準化的數據預處理階段,之后可以表示訓練數據;
- 測試階段:模型在預處理后應用于新數據,并使用在訓練中學習的回歸模型生成數值預測值;
- 對抗性世界:在中毒攻擊中,攻擊者在訓練回歸模型之前將中毒點注入訓練集。
Trim算法及成果
講座7 卷積神經網絡用于句子分類
用卷積神經網絡分類句子的優勢
- 特征提取的高效性
機器學習首先需要選取好特征,每一個特征即為一個維度,特征數目過少,我們可能無法精確的分類出來,即我們所說的欠擬合;如果特征數目過多,可能會導致我們在分類過程中過于注重某個特征導致分類錯誤,即過擬合。這樣就需要我們在特征工程上花費很多時間和精力,才能使模型訓練得到一個好的效果。然而神經網絡的出現使我們不需要做大量的特征工程,譬如提前設計好特征的內容或者說特征的數量等等,我們可以直接把數據灌進去,讓它自己訓練,自我“修正”,即可得到一個較好的效果。 - 數據格式的簡易性
在一個傳統的機器學習分類問題中,我們“灌”進去的數據是不能直接灌進去的,需要對數據進行一些處理,譬如量綱的歸一化,格式的轉化等等,不過在神經網絡里我們不需要額外的對數據做過多的處理。 - 參數數目的少量性
在面對一個分類問題時,如果用SVM來做,我們需要調整的參數包括核函數,懲罰因子,松弛變量等等,不同的參數組合對于模型的效果也不一樣,想要迅速而又準確的調到最適合模型的參數需要對背后理論知識的深入了解(當然,如果全部都試一遍也是可以的,但是花的時間可能會更多)。對于一個基本的三層神經網絡來說(輸入-隱含-輸出),我們只需要初始化時給每一個神經元上隨機的賦予一個權重w和偏置項b,在訓練過程中,這兩個參數會不斷的修正,調整到最優質,使模型的誤差最小。所以從這個角度來看,我們對于調參的背后理論知識并不需要過于精通(只不過做多了之后可能會有一些經驗,在初始值時賦予的值更科學,收斂的更快罷了)。
本文CNN結構
三、感想與體會
在這門課的六次教師講座+7個學生講座中,我學到了不同研究方向的密碼新技術,涉及面很廣,雖然有些東西并不能在課上完全聽懂,但是通過課下的查找資料,閱讀相關研究方向的經典/最新論文,就基本能了解這個方向,受益良多。另外,本門課的論文閱讀復現部分,因為之前在實驗室做過深度學習相關的實驗,且本科的第三次教師講座中,金鑫老師也講的是人工智能與密碼的結合,所以我們小組選擇了一篇關于遷移學習攻擊的18年論文。這次論文閱讀復現工作拓寬了我對深度學習安全性的認知,并且使我的英文論文閱讀理解能力、團隊合作能力、課堂演講能力得到了很大的提升。總體來說,本門課不論是講座部分,還是論文閱讀復現部分都對我幫助很大。
四、對本課程的建議和意見
- 建議論文復現部分可以更早一些開始,不然時間不夠。
- 建議論文復現部分老師可以給幾篇推薦的參考題目或方向,或由本課各個講座的授課老師推薦本講座研究方向的幾篇經典/最新論文。
轉載于:https://www.cnblogs.com/PNIDEMOOO/p/11032688.html
總結
以上是生活随笔為你收集整理的2019年密码与安全新技术讲座-课程总结报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【antd-design-vue】a-t
- 下一篇: matlab 图像 局部极值,[转载]m