2019年密碼與安全新技術講座-課程總結報告

1、教師講座內容總結

講座1、Web安全與內容安全

在本次講座中,張健毅老師首先講述了信息技術的發展階段,接着講了信息化發展凸顯的信息安全問題,以後重點講解了Web應用安全,包括常見的Web漏洞,如SQL注入、XSS跨站腳本攻擊、CSRF跨站請求僞造等。另外,張老師還爲咱們介紹了隱私安全。前端

1. 信息技術的發展階段

通訊(電報/電話) -> 計算機 -> 網絡 -> 網絡化社會
信息安全的歷史從通訊開始。web

2. 信息化發展凸顯了信息安全問題

2010年6月 震網病毒(stuxnet病毒) -> 證實物理隔離也不必定安全
2015年9月 XcodeGhost -> 證實編譯層面也可能存在安全漏洞算法

網絡威脅驚人,天天超過億次GPT攻擊,攻擊方式:可探測 -> 可訪問 -> 可掌控sql

威脅方-防禦方的非對稱性:

  • 攻防技術非對稱
    大量自動化攻擊工具的出現,使得入侵網絡與信息系統的門檻降到極低。
  • 攻防成本非對稱
    攻防技術的非對稱帶來了攻防成本的非對稱。風險成本也極低。對於國家安全而言,攻防成本的非對稱性具備特殊的意義。
    僞基站短信照片案例層出不窮。
  • 攻防主體非對稱

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. 隱私安全

當前許多企業和公司會對用戶軌跡進行分析,致使用戶隱私安全受到威脅。瀏覽器

講座2、量子密碼

在本次講座中,孫瑩老師爲咱們系統地講解了量子密碼的研究背景、量子密碼的基本物理概念、量子密碼典型協議BB84量子密鑰分配協議、量子密碼四個基本步驟、量子密碼的研究現狀即實驗進展。緩存

1 量子密碼研究背景

傳統密碼

對稱密碼體制 公鑰密碼體制
優勢 加密速度快,適合批量加密數據 可解決密鑰分配、管理問題,可用於簽名
缺點 密鑰分配、密鑰管理、沒有簽名功能 加密速度慢

實際使用時,多用混合密碼體制:用公鑰密碼體制分發會話密鑰,用對稱密碼體制加密數據。

傳統密碼的挑戰

然而,這種傳統密碼受到了來自量子密碼的挑戰:基於大數分解的Shor算法和基於快速搜索的Grover算法可以迅速破解傳統密碼。

量子密碼

量子祕鑰分配(QKD)的特色:

  • 能夠檢測到潛在竊聽行爲。
  • 基於物理學原理,理論上可達到無條件安全。

也就是說,量子密碼可達到無條件安全的保密通訊。

2 基本物理概念

量子

微觀世界的某些物理量不能連續變化而只能取某些分立值,相鄰分立值的差稱爲該物理量的一個量子。

直觀理解:具備特殊性質的微觀粒子或光子。

量子態

  • 經典信息:比特0或1,可用高低電壓等表示。
  • 量子信息:量子比特(Qubit) |0> (水平方向) |1> (豎直方向)
  • 量子比特還能夠處在不一樣狀態的疊加態上。

量子態的可疊加性帶來一系列特殊性質

  • 量子計算的並行性:強大的計算能力
  • 不可克隆定理:未知量子態不可準確測量
  • 測不許原理:未知量子態不可準確測量
  • 對未知量子態的測量可能會改變量子態

量子比特的測量--力學量、測量基

  • 每一個力學量都對應一個厄米算符(矩陣)
  • 測量某個力學量時,測量結果爲此力學量對應厄米算符的本徵值(特徵值)
  • 測量後量子態塌縮到此本徵值對應的本徵態(特徵向量)

3. 四個基本步驟

  • 信息傳輸
  • 竊聽檢測
  • 糾錯
  • 保密加強

信息傳輸:一般用到兩種信道

量子信道
  • 傳輸量子載體,例如:光纖、自由空間等。
  • 容許竊聽者對傳輸的量子消息進行任意竊聽和篡改。
經典信道
  • 傳輸經典信息,例如:測量基、測量結果等。
  • 基本假設:竊聽者只能竊聽經典消息而不能篡改它們。

竊聽檢測

  • 通常手段:隨機選擇部份量子載體,比較初末狀態。
  • 對好的協議:竊聽必然干擾量子態,進而引入錯誤。
  • 一旦發現存在竊聽(錯誤率太高),則終止通訊,丟棄相關數據。
  • 由於傳輸的是密鑰(即隨機數),而不是祕密消息,所以能夠丟棄它們而不會所以泄露祕密。

糾錯和保密加強:解決噪聲問題

  • 理想狀況(無噪聲):有錯誤就認爲有竊聽
  • 實際狀況(有噪聲):噪聲也會帶來必定錯誤率
  • 對策:設定一個閾值,當錯誤率高於這個閾值時丟棄通訊數據,反之保留(即容許有必定的錯誤)
    • Alice和Bob的密鑰可能不徹底一致
    • Eve可能在噪聲掩飾下得到部分密鑰信息
  • 糾錯:糾正密鑰中的錯誤
  • 保密加強:經過壓縮密鑰長度,將Eve可能得到的部分密鑰信息壓縮至任意小,獲得安全的密鑰

講座3、人工智能與密碼分析設計

在本次講座中,金鑫老師主要分爲五個部分爲咱們詳細講述了人工智能與密碼分析設計的結合,包括技術背景、密碼分析與機器學習、深度學習簡介與現狀、深度學習與密碼分析、深度學習與密碼設計。

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.一、神經網絡的側信道攻擊
4.二、基於循環神經網絡的明文破譯
4.三、基於生成對抗網絡的口令破譯
4.四、基於深度神經網絡的密碼基元識別

5. 深度學習與密碼設計

目前密碼算法的設計還停留在人工設計階段,較爲耗時耗力,難以適應將來對密碼算法設計的需求,能不能讓機器自動設計密碼算法?

生成對抗網絡(Generative Adversarial Network, GAN)

生成式對抗網絡(GAN, Generative Adversarial Networks)是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的方法之一。模型經過框架中(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的互相博弈學習產生至關好的輸出。

密碼組件通過生成對抗網絡中的算法生成器,獲得設計出來的密碼算法,同時密碼破解器將對此密碼算法進行破解,算法生成器和密碼破解器就這樣在相互博弈中學習產生出好的算法和好的破解方法。

講座4、信息隱藏

在本次講座中,夏超老師爲咱們全方位講述了信息隱藏相關知識,其中重點講解了信息隱藏的重要技術--隱寫,包括隱寫技術、隱寫分類、隱寫分析等。

1. 從密碼到信息隱藏

  • 密碼主要解決了信息保密傳輸、數據來源認證與完整性認證等信息安全問題。
  • 保護保密通訊的數據--加密,但密碼方法不能解決如下兩方面問題:

    • 一、保密通訊的行爲隱蔽性問題
      保護保密通訊的事實--隱蔽通訊(隱寫)

    • 二、內容保護與內容認證問題
      密碼保護數據,可是內容≠數據,內容個別肆意傳播的問題要歸信息隱藏「管」。

密碼保護的是內容,而信息隱藏保護的是信息「傳輸」這個行爲。

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)
  • JPEG域自適應隱寫
    • UED(Uniform Embedding Distortion)
      • SC-UED(Single Coefficient UED)
      • JC-UED(Joint Coefficients UED)
    • J-UNIWARD(JPEG UNIversal WAvelet Relative Distortion)

7. 隱寫分析

  • 高維隱寫分析特徵
    高維隱寫分析特徵能夠儘量多地捕獲隱寫對圖像統計特性的影響。

  • 空域高維隱寫分析特徵:

    • JPEG圖像解壓到空域,以前的JPEG圖像隱寫分析特徵都是在DCT係數上提取的。由於空域提取的特徵對JPEG圖像自適應隱寫更爲敏感。

    • 利用了相位信息(JPEG phase),因此被稱爲JPEG-phase-aware特徵。

  • 選擇信道高維隱寫分析特徵

講座5、區塊鏈

在本次講座中,張健毅老師爲咱們講述了區塊鏈技術、比特幣、挖礦工做、共識機制、獎勵合做的制度設計、區塊鏈的將來等。

區塊鏈

什麼是比特幣

比特幣(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%攻擊

攻擊步驟:
  1. 將手中的BTC充值各大交易所,而後賣掉,提現;或者也能夠直接賣給某人或某一羣人;
  2. 運用手中的算力,從本身對外付款交易以前的區塊開始,忽略本身全部對外的付款交易,從新構造後面的區塊,利用算力優點與全網賽跑,當最終建立的區塊長度超過原主分支區塊,成爲新的主分支,至此,攻擊完成;
攻擊結果:

因爲撤銷了全部對外付款交易,等於收回來因此已賣掉的比特幣。

可行性評估:

如今比特幣全網算力差很少90T,並且還會快速增加,如今看來只有如今的幾大礦池聯合,才具備發動51%攻擊的實力,普通我的或機構實施此攻擊的可能性愈來愈小。

講座6、安全漏洞利用與挖掘

在本次講座中,王志強老師經過具體漏洞挖掘示例爲咱們詳細介紹了常見的漏洞挖掘技術以及漏洞挖掘技術的研究進展。

1.常見漏洞挖掘技術

1.1 手工測試

  • 定義:由測試人員手工分析和測試被測目標,發現漏洞的過程,是最原始的漏洞挖掘方法。【憑經驗依次檢驗每一個可能產生漏洞的脆弱點

  • 優勢:人-主觀能動性-顯而易見和複雜不易見
  • 缺點:人-無規律可循、不可大規模等

1.2 補丁比對

  • 定義:一種經過對比補丁之間的差別來挖掘漏洞的技術。
    • 文本(難定位,難出難理解)
    • 彙編指令(易理解,輸出範圍大,難定位)
    • 結構化(迅速直觀,流行)
  • 優勢:發現速度快
  • 缺點:已知漏洞
  • 常見工具:PatchDiff二、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,採用污點追蹤測試輸入中影響條件分支的字節,而後使用梯度降低的方式對變異後生成的路徑約束進行求解(目標函數不可導將有問題)

2、各小組講座內容總結

講座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結構


3、感想與體會

在這門課的六次教師講座+7個學生講座中,我學到了不一樣研究方向的密碼新技術,涉及面很廣,雖然有些東西並不能在課上徹底聽懂,可是經過課下的查找資料,閱讀相關研究方向的經典/最新論文,就基本能瞭解這個方向,受益良多。另外,本門課的論文閱讀復現部分,由於以前在實驗室作過深度學習相關的實驗,且本科的第三次教師講座中,金鑫老師也講的是人工智能與密碼的結合,因此咱們小組選擇了一篇關於遷移學習攻擊的18年論文。此次論文閱讀復現工做拓寬了我對深度學習安全性的認知,而且使個人英文論文閱讀理解能力、團隊合做能力、課堂演講能力獲得了很大的提高。整體來講,本門課不管是講座部分,仍是論文閱讀復現部分都對我幫助很大。

4、對本課程的建議和意見

  • 建議論文復現部分能夠更早一些開始,否則時間不夠。
  • 建議論文復現部分老師能夠給幾篇推薦的參考題目或方向,或由本課各個講座的授課老師推薦本講座研究方向的幾篇經典/最新論文。
相關文章
相關標籤/搜索