2018-2019-2 20189206 《密碼與安全新技術專題》課程總結

20189206 2018-2019-2 《密碼與安全新技術專題》 課程總結

課程:《密碼與安全新技術專題》javascript

班級: 1892php

姓名: 王子榛html

學號:20189206前端

上課教師:王志強java


1.本學期講座的學習總結

第七次課 —— 各組論文學習

第一組:在10秒內找到未知的惡意:在Google-Play規模上大規模審查新的威脅

背景內容

Android設備已經成爲市場上的主流產品之一,也帶來了一個充滿活力的應用程序生態系統,經統計Android用戶已經安裝了數百萬個應用程序,這種開放的應用開發環境不只帶來了各式各樣的應用程序,一樣,Android惡意軟件也十分猖獗,常見的有假裝成一個有用的程序,一般經過從新打包合法的應用程序,肆虐,例如,攔截一我的的消息,偷竊,發送presmiumSMS消息等等。linux

爲了解決這種問題,論文針對應用程序審查,Google Play運營Bouncer,這是一種安全服務,能夠靜態掃描應用程序中的已知惡意代碼,而後在Google雲端的模擬環境中執行該操做,以檢測隱藏的惡意行爲。但現存問題是靜態方法不適用於新威脅,而動態問題能夠經過可以對測試環境進行指紋識別的應用程序來識別。程序員

實際上,絕大多數Android惡意軟件都是從新打包的應用程序,通過觀察結果也代表,惡意從新打包的應用程序是Android惡意軟件的支柱。論文提出了一種新穎、高度可擴展的審查機制,用於在一個市場或跨市場上檢測從新包裝的Android惡意軟件————MassVet,爲了檢查新的應用程序,MassVet針對整個市場對其進行了高效的DiffCom分析。web

檢測範圍

MassVet

MassVet首先處理全部的應用程序,包括用於查看結構的數據庫和用於數據庫的數據庫。兩個數據庫都通過排序以支持二進制搜索,並用於審覈提交到市場的新應用程序。考慮一個從新包裝的AngryBird。一旦上載到市場,它首先在預處理階段自動拆解成一個小型表示,從中能夠識別其接口結構和方法。它們的功能(用於視圖,用戶界面,小部件和事件的類型,以及方法,控制流程和代碼)經過計算映射到v核和m核分別是視圖和控制流的幾何中心。應用程序的v-cores首先用於經過二進制搜索查詢數據庫。一旦匹配知足,當存在具備相似的AngryBird用戶界面結構的另外一個應用程序時,將從新打包的應用程序與方法級別的市場上的應用程序進行比較以識別它們的差別。而後自動分析這些不一樣的方法(簡稱差別)以確保它們不是廣告庫而且確實是可疑的,若是是,則向市場報告。當沒有任何東西2時,MassVet繼續尋找方法數據庫中的AngryBird的m核心。若是找到了相似的方法,咱們的方法會嘗試確認包含方法的app確實與提交的AngryBird無關,而且它不是合法的代碼重用。在這種狀況下,MassVet報告認爲是使人感到滿意的。全部這些步驟都是徹底徹底自動化,無需人工干預。算法

v-core

特徵提取,將UI結構建模爲視圖,這個視圖是一個有向加權圖,包括應用程序中的全部視圖以及它們之間的導航關係。在這樣的圖上,每一個節點都是一個視圖,其活動小部件的數量做爲其權重,而且鏈接節點的網絡描述了由它們之間的關係。根據其類型的事件,邊緣能夠彼此區分,這樣的視圖能夠有效的描述具備至關複雜的UI結構的APP。sql

DiffCom分析

對於經過批量審查流程的應用程序,視圖分析首先肯定它是否與市場上已有的應用程序相關。 若是是這樣,將進一步比較這兩個應用程序,以肯定其惡意軟件分析的差別。 不然,將在方法級別針對整個市場檢查應用程序,以嘗試找到與其餘應用程序共享的程序組件。 進一步檢查差別和公共組件以刪除公共代碼重用(庫,示例代碼等)並收集其安全風險的證據。 這種「差別 - 共性」分析由DiffCom模塊執行。 咱們還提供了有效的代碼類似性分析器的實體,並討論了DiffCom的規避。

m-core的構建

爲了準備審查,首先經過市場上的全部應用程序,並將其分解爲方法。 刪除公共庫後,預處理模塊分析其代碼,計算各個方法(即mcores)的幾何中心,而後在將結果存儲到數據庫以前對它們進行排序。 在審覈過程當中,若是發現提交的應用程序與另外一個應用程序共享視圖圖形,則能夠經過比較其我的方法的mcores來快速識別它們的差別。 在適用於執行步驟的過程當中,它的方法用於在m-core數據庫上進行二進制搜索,該數據庫能夠快速發現現有應用程序中包含的那些數據庫。

系統建設

  • 系統引導和惡意軟件檢測

爲了引導咱們的系統,市場首先須要使用咱們的技術以高效的方式完成全部現有的應用程序。 這些應用程序的APK被反編譯成smali(使用工具baksmali)來提取他們的視圖和單個方法,它們分別進一步轉換爲v-cores和m-cores。 咱們使用NetworkX來處理圖形和找到循環。 而後在存儲到它們各自的數據庫以前對這些特徵(即核心)進行分類和索引。

  • 掃描惡意內容

一種簡單的方法是經過二分查找逐個檢查它們。 這將須要數千萬步驟進行比較和分析。論文使用了一種有效的替代方案:一種簡單的方法是經過二分查找逐個檢查它們。 這將須要數千萬步驟進行比較和分析。對m內核的檢查要簡單得多,不須要將一個應用程序與其餘應用程序進行比較。 這是由於咱們所關心的只是已經出如今個別等效組中的經常使用方法。 而後進一步分析這些方法以檢測可疑方法。

  • 雲支持

爲了支持對應用程序進行高性能審查,MassVet旨在在雲上運行。整個審查過程的工做流程被轉換爲這樣的拓撲:首先將提交的應用程序反彙編以提取視圖和方法,而後根據白名單檢查以刪除合法的庫和模板;而後,應用程序的v - 計算核心和m核心,並對v核心數據庫進行二元搜索;根據研究結果,首先運行差別分析,而後進行交叉分析。每一個操做都被分配到拓撲上的工做單元,而且與應用程序關聯的全部數據都在單個流中。 Storm引擎旨在支持同時處理多個流,這使市場可以有效地審查大量提交。


第二組論文:幽靈攻擊:利用預測執行

預測執行

預測執行就是一些具備預測執行能力的新型處理器,能夠預測即將執行的指令,採用預先計算的方法來加快整個處理流程,其設計理念就是加速大機率事件。(ps:在看深刻理解計算機系統的時候,書上就有講過,處理器會對判斷語句提早進行預測以提升運行速度,若是預測與實際結果不一樣,就拋棄前面預測執行的結果)

預測執行是高速處理器使用的一種技術,經過考慮可能的將來執行路徑並提早地執行其中的指令來提升性能。例如,當程序的控制流程取決於物理內存中未緩存的值時,可能須要幾百個時鐘週期才能知道該值。除了經過空閒浪費這些週期以外,過程還會控制控制流的方向,保存其寄存器狀態的檢查點而且繼續在推測的路徑上推測性地執行該程序。當值從存儲器中偶然到達時,處理器檢查最初猜想的正確性。若是猜想錯誤,則處理器將寄存器狀態恢復爲存儲的檢查點並丟棄(不正確的)預測執行,若是猜想是正確的,則該部分代碼已被執行過,不須要再次執行,所以帶來了顯著的性能增益。

幽靈攻擊

熔斷(Meltdown)和幽靈(Spectre)是CPU的兩組嚴重漏洞,Meltdown漏洞影響幾乎全部的Intel CPU和部分ARM CPU,而Spectre則影響全部的Intel CPU和AMD CPU。

條件分支錯誤預測

看以下一段代碼:

if (x < array1_size)
    y = array2[array1[x] * 256]

攻擊者首先選擇使條件成立的x調用相關代碼,訓練分支預測期判斷該判斷語句爲真,而後攻擊者設置x值在array1_size以外。

CPU在執行時,會猜想邊界檢查將爲真,推測性地使用這個惡意的x讀取array2的內容。讀取array2使用惡意x將數據加載到依賴於array1 [x]的地址的高速緩存中。當處理器意識到這個if爲假時,重現選擇執行路徑,但緩存狀態的變化不會被恢復,而且能夠被攻擊者檢測到以找到受害者的存儲器的一個字節。 經過使用不一樣的x值重複,能夠利用該構造來讀取受害者的存儲器。

  • 代碼執行過程

進入if判斷語句後,首先從高速緩存查詢有無array1_size的值,若是沒有則從低速存儲器查詢。按照咱們的設計,高速緩存一直被擦除因此沒有array1_size的值,總要去低速緩存查詢。查詢到後,該判斷爲真,因而前後從高速緩存查詢array1[x]和array2[array1[x]*256]的值,通常狀況下是不會有的,因而從低速緩存加載到高速緩存。

執行過幾回以後,if判斷連續爲真,在下一次須要從低速緩存加載array1_size時,爲了避免形成時鐘週期的浪費,CPU的預測執行開始工做,此時它有理由判斷if條件爲真,由於以前均爲真(根據以前的結果進行推測),因而直接執行if爲真的代碼,也就是說此時即使x的值越界了,咱們依然頗有可能在高速緩存中查詢到內存中array1[x]和array2[array1[x]*256]的值,當CPU發現預測錯誤時咱們已經獲得了須要的信息。

執行流程

預測執行在提升CPU運行效率的同時也帶來了安全隱患,它自己會致使CPU去執行程序本不應執行的代碼,再加之操做系統和處理器沒有對程序或者說低權限程序訪問內存地址的範圍做出很好的限制,高速緩存更是隻能共用,這就致使本不應執行的代碼執行後,還會把信息泄露給攻擊者。


第三組論文:你全部的GPS都屬於咱們:道路導航系統的隱形操控

論文探討了對道路導航系統隱身操縱攻擊的可行性,目標是觸發假轉向導航,引導受害者達到錯誤的目的地而不被察覺。其主要想法是略微改變GPS的位置,以便假冒的導航路線與實際道路的形狀相匹配並觸發實際可能的指示。論文首先經過實施便攜式GPS欺騙器並在真實汽車上進行測試來執行受控測量。而後論文設計一個搜索算法來實時計算GPS移位和受害者路線。

GPS攻擊步驟
  • GPS欺騙的兩個關鍵步驟
    • 接管步驟:攻擊者誘使受害者GPS接收器從合法信號遷移到欺騙信號(接管方式能夠強制或者平滑)
      • 強制接管,欺騙着只是以高功率發送錯誤信號,致使受害者失去對衛星的跟蹤並鎖定更強的欺騙信號
      • 平滑接管,接管開始於與原始信號同步的信號,而後逐漸超過原始信號以引發遷移
    • 攻擊者經過移動信號的到達時間或修改導航消息來操縱GPS接收器
GPS欺騙器

便攜式GPS欺騙器來執行受控實驗

四個組件:HackRF One-based前端,Raspberry Pi,便攜式電源和天線。總體機能夠放在一個小盒子裏如上圖所示。

GPS欺騙的可行性

爲了使攻擊更加隱蔽,關鍵是要找到一條模仿真實道路形狀的虛擬路線。這樣,導航指令能夠與物理世界保持一致。另外一個因素是導航系統一般會顯示第一人稱視角,司機沒有看到整個路線,而是關注當前路線和下一個轉彎,這樣會增長攻擊者成功的機會。

如上圖所示,在依靠GPS導航時,受害者正在從P到D,假設攻擊者接管受害者在A處的GPS接收器,攻擊者建立錯誤的GPS信號以將GPS位置設置爲附近的主機位置B,爲了對應錯誤的位置漂移,導航系統將從新計算B和D之間的新路線。在物理道路上,受害者在A開始按照錯誤導航,最終達到不一樣的地方C。根據攻擊目的,攻擊者能夠預先定義目標目的地C或者僅僅旨在轉移受害者來自原始目的地D。

遍歷並生成欺騙路線的僞代碼

真實駕駛測試

論文在兩種不一樣的路由上進行了測試:

A行→D表示原始路徑
藍線表明幽靈路線
黑線表明受害者
A是用戶的實際位置
B是對應的鬼位置
C是用戶的改道目的地
D是原來的目的地

在第一種狀況(圖6a),攻擊者設置鬼的位置到原來路線上的另外一個地點。測試代表,這確實能夠避免觸發「從新計算」語音提示。這條路線花了九分鐘,司機很成功。 徹底改道到預約地點,距原目的地2.1千米。

在第二種狀況下(圖6b),攻擊者將鬼位置設置在原始路由以外,這將觸發 一個「從新計算」語音提示。這一次,司機駕駛了五分鐘,並被轉向2.5千米之外。在這兩種狀況下,智能手機都被鎖定在欺騙信號上,而沒有掉一次。 假位置序列以10赫茲的更新頻率平穩地輸入手機。儘管在GoogleMaps中嵌入了標題和過濾器的潛在交叉,導航指示國家統計局被及時觸發。


第四組論文:With Great Training Comes Great Vulnerability: Practical Attacks against Transfer Learning

遷移學習

如今不少企業都在作深度學習,可是高質量模型的訓練須要很是大的標記數據集,好比在視覺領域ImageNet模型的訓練集包含了1400萬個標記圖像,可是小型公司沒有條件訓練這麼大的數據集或者沒法獲得這麼大的數據集。爲了解決上述問題,廣泛的解決方案就是遷移學習:一個小型公司借用大公司預訓練好的模型來完成本身的任務。咱們稱大公司的模型爲「教師模型「,小公司遷移教師模型並加入本身的小數據集進行訓練,獲得屬於本身的高質量模型」學生模型」。

遷移學習過程

學生模型經過複製教師模型的前N-1層來初始化,並增長了一層全鏈接用於分類,以後使用本身的數據集對學生模型進行訓練,訓練過程當中,前K層是被凍結的,即它們的權重是固定的,只有最後N-K層的權重纔會被更新。前K層之因此在訓練期間要被凍結,是由於這些層的輸出已經表明了學生任務中的有意義的特徵,學生模型能夠直接使用這些特徵,凍結它們能夠下降訓練成本和減小所需的訓練數據集。

遷移學習方法分類

根據訓練過程當中被凍結的層數k,能夠把遷移學習分爲如下3中方法:

  • 深層特徵提取器 學生任務與教師任務很是類似,須要訓練成本最小
  • 中層特徵提取器 容許更新更多層,有助於學生爲本身的任務進行更多的優化
  • 全模型微調 學生任務和教師任務存在顯著差別,全部層都須要微調
遷移學習方法安全性問題

但遷移學習並不十分安全,由於遷移學習缺少多樣性,用戶只能從不多的教師模型中進行選擇,同一個教師模型可能被不少個公司遷移,攻擊者若是知道了教師模型就能夠攻擊它的全部學生模型。

遷移學習的攻擊方法

現有的針對機器學習算法的對抗性攻擊主要有:白盒攻擊和黑盒攻擊

因爲當前模型的默認訪問方式是:教師模型被深度學習服務平臺公開;學生模型離線訓練且不公開。由於論文提出的攻擊方式是對教師模型白盒攻擊,對學生模型黑盒攻擊。攻擊者知道教師模型的內部結構以及全部權重,但不知道學生模型的全部權值和訓練數據集

本文中的攻擊方法:模擬神經元輸出

攻擊目標:把source圖貓誤識別爲target圖狗
攻擊思路:首先將target圖狗輸入到教師模型中,捕獲target圖在教師模型第K層的輸出向量。以後對source圖加入擾動,使得加過擾動的source圖(即對抗樣本)在輸入教師模型後,在第K層產生很是類似的輸出向量。因爲前饋網絡每一層只觀察它的前一層,因此若是咱們的對抗樣本在第K層的輸出向量能夠完美匹配到target圖的相應的輸出向量,那麼不管第K層以後的層的權值如何變化,它都會被誤分類到和target圖相同的標籤。

計算擾動

論文中求解一個有約束的最優化問題來計算擾動。

  • 目標:模擬隱藏層第K層的輸出向量。
  • 約束:擾動不易被人眼察覺。

DSSIM

攻擊方式:目標攻擊/非目標攻擊

目標攻擊:將source image x_s 誤分類成target s_t所屬標籤

非目標攻擊:將source image x_s誤分類成任意其餘的source image所屬標籤

影響攻擊效果的因素
  • 擾動預算P
    • P的選擇將會直接關係到攻擊的隱蔽性。P越小攻擊成功率越低
  • 距離度量方法
  • 遷移學習方法
防護方法

論文還提出了3種針對本文攻擊的防護方法,其中最可行的是修改學生模型,更新層權值,肯定一個新的局部最優值,在提供至關的或者更好的分類效果的前提下擴大它和教師模型之間的差別。這又是一個求解有約束的最優化問題,約束是對於每一個訓練集中的x,讓教師模型第K層的輸出向量和學生模型第K層的輸出向量之間的歐氏距離大於一個閾值,在這個前提下,讓預測結果和真實結果的交叉熵損失最小。


第五組論文:SafeInit: Comprehensive and Practical Mitigation of Uninitialized Read Vulnerabilities

背景知識

未初始化值的使用仍然是C / C ++代碼中的常見錯誤。這不只致使未定義的和一般不指望的行爲,並且還致使信息泄露和其餘安全漏洞。咱們都知道C/C++中的局部變量,在未初始化的狀況下,初值爲隨機值。

以C++中局部變量的初始化和未初始化爲例:

編譯器在編譯的時候針對這兩種狀況會產生兩種符號放在目標文件的符號表中,對於初始化的,叫強符號,未初始化的,叫弱符號。鏈接器在鏈接目標文件的時候,若是遇到兩個重名符號,會有如下處理規則:

  1. 若是有多個重名的強符號,則報錯。
  2. 若是有一個強符號,多個弱符號,則以強符號爲準。
  3. 若是沒有強符號,但有多個重名的弱符號,則任選一個弱符號。

LLVM框架

在理解LLVM時,咱們能夠認爲它包括了一個狹義的LLVM和一個廣義的LLVM。廣義的LLVM其實就是指整個LLVM編譯器架構,包括了前端、後端、優化器、衆多的庫函數以及不少的模塊;而狹義的LLVM其實就是聚焦於編譯器後端功能(代碼生成、代碼優化等)的一系列模塊和庫。

Clang是一個C++編寫、基於LLVM的C/C++/Objective-C/Objective-C++編譯器。Clang是一個高度模塊化開發的輕量級編譯器,它的編譯速度快、佔用內存小、很是方便進行二次開發。

上圖是LLVM和Clang的關係:Clang其實大體上能夠對應到編譯器的前端,主要處理一些和具體機器無關的針對語言的分析操做;編譯器的優化器部分和後端部分其實就是咱們以前談到的LLVM後端(狹義的LLVM);而總體的Compiler架構就是LLVM架構。

論文實現成果

因爲C/C++不會像C#或JAVA語言,確保變量的有限分配,要求在全部可能執行的路徑上對它們進行初始化。因此,C/C++代碼可能容易受到未初始化的攻擊讀取。同時C/C++編譯器能夠在利用讀取未初始化的內存是「未定義行爲」時引入新的漏洞。

在本文中,提出了一種全面而實用的解決方案,經過調整工具鏈(什麼是工具鏈)來確保全部棧和堆分配始終初始化,從而減輕通用程序中的這些錯誤。 SafeInit在編譯器級別實現。

本文實現了:

  • 提出了safeinit,一種基於編譯器的解決方案,結合強化分配器,確保堆和棧上的初始化來自動減輕未初始化值讀取。
  • 提出的優化能夠將解決方案的開銷降到最低水平(< 5%)並能夠在現代編譯器中實現
  • 基於clang和LLVM的SafeInit原型實現,並代表它能夠應用於大多數真實的C / C ++應用程序而無需任何額外的手動工做。
  • CPU-intensive 、 I/O intensive (server) applications 和 Linux kernel測試驗證了現實世界的漏洞確實被緩解
現存威脅
敏感數據泄露

因爲未初始化數據而致使信息泄露的最明顯危險是直接敏感數據的泄露。

  • 數據生命週期持續時間長於預期,可能會產生許多無心的數據副本。
  • 不是全部狀況下編譯器能夠提供memset優化調用,若是數據再也不有效而且所以在該點以後再也不使用,編譯器能夠經過調用memset來優化這些調用。可是若是以後的數據還有效,禁止編譯器優化的替代函數(例如memset_s和explicit_bzero)並非廣泛可用的。
  • 未初始化數據的使用受到不可信輸入的影響,必須考慮各類潛在的攻擊媒介,這種不一樣的攻擊面意味着應該認真對待全部未初始化的數據漏洞。
繞過安全防護

現代軟件防護依賴於敏感元數據的保密性,同時,未初始化的值提供了指針公開的豐富資源。

例如地址空間佈局隨機化之類的防護通常取決於指針的保密性,而且因爲一般僅僅隨機化一個及基地址來完成,所以攻擊者僅須要獲取單個指針以徹底抵消保護。這樣的指針能夠是代碼,堆棧或堆指針,而且這些指針一般存儲在棧和堆上,所以未初始化的值錯誤提供了阻止這種信息隱藏所需的指針公開的豐富源。

軟件開發

未初始化數據致使的其餘漏洞容許攻擊者直接劫持控制流。常見的軟件開發的錯誤是:沒法在遇到錯誤時在執行路徑上初始化變量或緩衝區。

檢測工具

有些工具試圖在開發過程當中檢測未初始化變量,而不是試圖減輕未初始化的值錯誤,容許它們由程序員手動校訂。有些工具試圖在開發過程當中檢測它們,而不是試圖減輕未初始化的值錯誤,容許它們由程序員手動校訂。更重要的是,編譯器警告和檢測工具只報告問題,而不是解決問題。 這可能會致使錯誤和危險的錯誤。

堆棧變量

函數堆棧幀:在堆棧中爲當前正在運行的函數分配的區域、傳入的參數。返回地址以及函數所用的內部存儲單元都存儲在堆棧幀中。

函數堆棧幀包含局部變量的副本,或具備被忽略的局部變量,同時還包含其餘局部變量和編譯器生成的臨時變量的溢出副本,以及函數參數,幀指針和返回地址。 鑑於堆棧內存的不斷重用,這些幀提供了豐富的敏感數據源。

現代編譯器使用複雜的算法進行寄存器和堆棧幀分配,這種方式減小了內存使用並改善了緩存局部性,但意味着即便在函數調用以前/以後清除寄存器和堆棧幀也不足以免全部潛在的未初始化變量。

未定義行爲

當C / C ++程序沒法遵循該語言強加的規則時,會發生未定義的行爲。在咱們討論的環境中,未定義行爲是指在代碼讀取未初始化的堆棧變量或者是未初始化的堆分配。

爲了實現最大數量的優化,特別是在可能從模板和宏擴展的代碼中,並最終被大部分丟棄爲沒法訪問,現代編譯器轉換利用了大規模的未定義的行爲。這樣的轉換能夠將未定義的值(以及所以也未初始化的值)解釋爲使得優化更方便的任何值,即便這使得程序邏輯不一致。

safeinit的工做方式

上圖是利用額外的編譯器傳遞,從而增長了必要的初始化

種簡單的初始化方法會致使過多的運行開銷,而咱們系統的一個重要元素是專門的強化分配器。 在許多狀況下,經過利用額外的信息並結合咱們的編譯器工具,能夠避免初始化問題。

能夠看到編譯器在得到C/C++文件後,編譯器前端將源文件轉換爲中間語言(IR),經過初始化、代碼優化結合現存編譯器的優化器,以後經過無效數據消除、強化分配器最後得到二進制文件。Safeinit在整個過程當中所添加的就是 初始化所有變量、優化以及強化分配器,來避免或緩解未初始化值。

環境未定義變量的幾種方式
  • 初始化
    • SafeInit在首次使用以前初始化全部局部變量,做爲新分配變量的做用域處理。SafeInit經過修改編譯器編譯代碼的中間表示(IR),在每一個變量進入做用域後進行初始化(例如內置memset)。
  • 強化分配器
    • SafeInit的強化分配器可確保在返回應用程序以前將全部新分配的內存清零。咱們經過修改現代高性能堆分配器tcmalloc來實現咱們的強化分配器。同時還修改了LLVM,以便在啓用SafeInit時未來自新分配的內存的讀取視爲返回零而不是undef。
  • 優化器
    • 目的:可在提升效率和非侵入性的同時提升SafeInit的性能。優化器的主要目標是更改現有編譯器中可用的其餘標準優化,以消除任何沒必要要的初始化。
    • 存儲下沉:存儲到本地的變量應儘量接近它的用途。

  • 無效存儲消除
    • 「無效存儲消除」(DSE)優化,它能夠刪除老是被另外一個存儲覆蓋而不被讀取的存儲。
      • 堆清除:全部堆分配都保證初始化爲零,若是有存儲到新分配堆內存中的零值都會被刪除
      • 非恆定長度存儲清除:爲了刪除動態堆棧分配和堆分配的沒必要要初始化
      • 交叉塊DSE:能夠跨多個基本塊執行無效存儲消除
      • 只寫緩衝區:經過指定該緩衝區只用來存儲而不是刪除,就能夠將該緩衝區刪除。
實施方法
  • 初始化
    • LLVM中的局部變量是使用alloca指令定義的; 咱們的pass經過在每條指令以後添加對LLVM memset內部的調用來執行初始化。能夠保證清除整個分配,並在適當的時候轉換爲存儲指令。
  • 強化分配器
    • 經過修改現代高性能堆分配器tcmalloc來實現咱們的強化分配器。 只需清除在分配器返回指針以前,全部其餘堆分配爲零。還修改了LLVM,以便在啓用SafeInit時未來自新分配的內存的讀取視爲返回零而不是undef。 如上所述,這對於避免未定義值的不可預測後果相當重要。
  • 優化
    • 經過添加一個新的內部函數「initialized」來實現初始化檢測優化,該函數具備與memset相同的存儲殺死反作用,可是被代碼生成忽略。 經過擴展諸如LLVM的循環習語檢測之類的組件來生成這種新的內在函數,其中沒法用memset替換代碼,咱們容許其餘現有的優化傳遞利用這些信息而無需單獨修改它們。
  • 無效存儲消除
    • 咱們經過擴展示有的LLVM代碼實現了上述其餘優化,儘量減小咱們的更改。 咱們對只寫緩衝區的實現使用了D18714中的補丁(自合併以來),它爲writeonly屬性添加了基本框架。
評估
  • SPEC CPU2006
    使用LTO和-O3在SPEC CPU2006中構建了全部C / C ++基準測試。 咱們使用參考數據集提供3次運行中值的開銷圖。

表I提供了每一個基準測試的allocas數量(表示局部變量的數量,偶爾的參數副本或動態分配)的詳細信息。 該表還提供了(剝離的)二進制大小; 在許多狀況下,初始化的影響對最終的二進制大小沒有任何影響,而且在最壞的狀況下它是最小的。#INITS是現有編譯器優化以後剩餘的大量初始化數量,而且咱們的優化器已經分別運行。

  • linux
    使用咱們的工具鏈構建了最新的LLVM Linux內核樹。 咱們定製了構建系統,以容許使用LTO,從新啓用內置clang函數,並修改gold連接器以解決咱們在符號排序時遇到的一些LTO代碼生成問題。

因爲Linux內核執行本身的內存管理,所以它不會與用戶空間強化分配器連接; 咱們的自動加固僅保護局部變量。

下表提供了使用內核微基準測試工具LMbench的典型系統調用的延遲和帶寬選擇。 咱們運行了每一個基準測試10次,每次運行的預熱時間很短,迭代次數不少(100次),並提供中位數結果。 TCP鏈接是localhost,其餘參數是默認LMbench腳本使用的參數。

  • 安全
    爲了驗證SafeInit是否按預期工做,不只考慮了各類現實漏洞,例以下表中的漏洞,還建立了一套單獨的測試用例。 咱們手動檢查了爲相關代碼生成的bitcode和機器代碼,並使用咱們上面描述的檢測系統運行咱們的測試套件。 咱們還用valgrind來驗證咱們的硬化; 例如,咱們確認當使用SafeInit強化OpenSSL 0.8.9a時,來自valgrind的全部未初始化的值警告都會消失。

結論

本文經過在clang/LLVM編譯器架構上,經過修改代碼,實現了safeinit原型,在編譯C/C++源代碼時,傳遞一個標記便可使用safeinit實現優化編譯,緩解未定義變量。使用了強化分配器的safeinit能夠進一步優化代碼的同時,保證全部須要初始化的變量進行初始化,刪除多餘初始化代碼進行優化,這樣既保證緩解了未定義變量漏洞的威脅,同時與其餘現有方法相比,提高了性能。


第六組論文:操縱機器學習:迴歸學習的中毒攻擊與對策

背景

在本文中,做者對線性迴歸模型進行了第一次中毒攻擊的系統研究及其對策。在中毒攻擊中,攻擊者故意影響訓練數據以操縱預測模型的結果。做者提出了一個專門爲線性迴歸設計的理論基礎優化框架,並展現了它在一系列數據集和模型上的有效性。隨着愈來愈多具備巨大社會影響的應用程序依賴於機器學習來實現自動化決策,已經出現了一些關於機器學習算法引入的潛在漏洞的擔心。複雜的攻擊者有強烈的動機來操縱機器學習算法生成的結果和模型來實現他們的目標。

在此考慮設置中毒攻擊,其中攻擊者在訓練過程當中注入少許損壞的點。此類中毒攻擊已經在蠕蟲簽名生成被實際證實,垃圾郵件過濾器,DoS攻擊檢測,PDF惡意軟件分類 ,手寫體數字識別 ,和情緒分析。

系統架構

上圖中,分爲三個階段

  • 理想世界
    • 學習過程包括執行數據清理和標準化的數據預處理階段,以後能夠表示訓練數據。
  • 測試階段
    • 模型在預處理後應用於新數據,並使用在訓練中學習的迴歸模型生成數值預測值。
  • 對抗性世界
    • 在中毒攻擊中,攻擊者在訓練迴歸模型以前將中毒點注入訓練集。
攻擊方法

因爲這些攻擊最初是在分類問題的背景下提出的,所以攻擊樣本的類標籤被任意初始化,而後在優化過程當中保持固定(回想一下ÿ是分類中的分類變量)。正如做者將在本工做的其他部分中展現的那樣,做者在此提出的對當前攻擊推導的重大改進是同時優化每一箇中毒點的響應變量及其特徵值。做者隨後重點介紹了在基於梯度的優化過程當中如何更新每一箇中毒樣本的一些理論看法。這將致使做者在Sect中提出更快的攻擊。它只利用數據的某些統計特性,而且只須要對目標模型進行最小的黑盒訪問。

基於優化的中毒攻擊

  • 梯度計算 具備線搜索的標準梯度算法
  • 目標函數 老是使用MSE做爲損失函數
  • 初始化策略 選擇初始集Dp中毒點做爲輸入
  • 基線攻擊 定義基線攻擊爲來自xiao等人的攻擊
  • 響應變量優化 響應變量採用連續值而不是分類值
  • 理論看法 關於Eqs的雙層優化的一些理論看法
防護方法

描述了針對中毒攻擊的現有防護建議,並解釋了爲何它們在訓練數據中的對抗性腐敗中可能無效。提出了一種名爲TRIM的新方法,專門用於加強針對一系列中毒攻擊的魯棒性。

  • 現有防護算法
    • 噪音迴歸
      • 這些方法背後的主要思想是識別和刪除數據集中的異常值
    • 對抗性攻擊
      • 對抗彈性迴歸算法一般在強有力的數據和噪聲分佈假設下提供保證

全部這些方法都具備可證實的魯棒性保證,但它們所依賴的假設在實踐中一般並不使人滿意。

TRIM算法

  • 修建損失函數 針對不一樣殘差子集計算的修建損失函數
  • 迭代估計迴歸參數 同時訓練每一個迭代中具備最低殘差的點的子集
  • 正則化線性迴歸 證實它們與一系列模型和真實世界數據集上的其餘防護相比的有效性
實驗評估

做者在四臺32核Intel(R)Xeon(R)CPU E5-2440 v2 @ 1.90GHz機器上進行了實驗。做者將基於優化的攻擊實現並行化,以利用多核功能。做者使用標準的交叉驗證方法將數據集分紅1/3用於訓練,1/3用於測試,1/3用於驗證,並將結果報告爲5次運行的平均值。做者使用兩個主要指標來評估做者的算法:MSE用於攻擊和防護的有效性,以及運行時間的成本。

  • 哪一種優化策略對於中毒迴歸最有效?

  • 優化和統計攻擊如何在有效性和性能方面進行比較?

  • 在實際應用中中毒的潛在危害是什麼?

  • 做者的攻擊的可轉移性屬性是什麼?

  • 防護算法評估

  • 防護結果
    • 做者發現之前的防護(RANSAC,Huber,Chen和RONI)對做者的中毒攻擊不起做用。
    • 做者提出的防護措施TRIM與現有的防護措施相比,效果很是好而且顯着改善了MSE。對於全部攻擊,模型和數據集,TRIM 的MSE在未中毒的模型MSE的1%之內。在某些狀況下,TRIM實現的MSE低於未中毒的模型(6.42%)
    • 做者測試的全部防護都運行得至關快。TRIM是最快的,在房價數據集上平均運行0.02秒。

第六組論文:Convolutional Neural Networks for Sentence Classification(卷積神經網絡用於句子分類)

背景

使用卷積神經網絡對句子進行分類的緣由:

  • 特徵提取的高效性
    • 神經網絡的出現不須要作大量的特徵工做,能夠直接把數據灌進去,讓神經網絡本身訓練,自我「修正」,可獲得一個較好的效果。
  • 數據格式的簡易性
    • 傳統機器學習分類問題中,,咱們「灌」進去的數據是不能直接灌進去的,須要對數據進行一些處理,譬如量綱的歸一化,格式的轉化等等,不過在神經網絡裏咱們不須要額外的對數據作過多的處理。
  • 參數數目的少許性
    • 對於一個基本的三層神經網絡來講(輸入-隱含-輸出),咱們只須要初始化時給每個神經元上隨機的賦予一個權重w和偏置項b,在訓練過程當中,這兩個參數會不斷的修正,調整到最優質,使模型的偏差最小。尤爲是在圖像領域,用傳統的神經網絡並不合適。
模型介紹

  • 輸入矩陣
    • 句子長度
    • 每一個字符的長度
  • 卷積過程
    • 文中使用了2種過濾器(卷積核),每種過濾器有三種高度(區域大小),即有6種卷積結構。每一個卷積核的大小爲filter_sizeembedding_size。
    • filter_size表明卷積核縱向上包含單詞個數。
    • embedding_size就是詞向量的維數。

  • 池化過程
    • 這篇文章使用MaxPooling的方法對Filter提取的特徵進行降維操做,造成最終的特徵。每一個卷積的結果將變爲一個特徵值,最終生成一個特徵向量。

  • 全鏈接層
    • 要處理的問題:正面評價和負面評價
    • 全鏈接層
      • 把權重矩陣與輸入向量相乘再加上偏置,實際上就是三層神經網絡的隱層到輸出層的映射。 y = w*z + b
    • 添加Dropout
      • 因爲實驗中所用的數據集相對較小,很容易就會發生過擬合現象,因此要引入Dropout來減小過擬合現象。
    • Softmax分類層
      • 能夠應用Softmax函數來將原始分數轉換爲歸一化機率,從而獲得機率最大的輸出,最終達到預測的目的。
數據集

文章中使用的數據集包括

  • MR:電影評論,每次評論一句話。分類包括檢測積極/消極的評論。
  • SST-1:Stanford Perfection Treebank是MR的擴展,但提供了train/dev/test分割和細粒度標籤(很是積極、積極、中立、消極、很是消極)。
  • SST-2:與SST-1相同,但刪除中立評論。•Subj:主觀性數據集,將句子分類爲主觀性或客觀性兩種。
  • TREC:數據集將問題分爲6種類型(是否涉及人員、位置、數字信息)。
  • CR:客戶對各類產品(相機、MP3等)的正面/負面評論。
  • MPQA:用於意見極性檢測。
實驗結論
model Variations

本文實現的CNN模型及其變體在不一樣的數據集上和前人方法的比較:

  • CNN-rand:全部的word vector都是隨機初始化的,同時當作訓練過程當中優化的參數;
  • CNN-static:全部的word vector直接使用無監督學習即Google的word2vector工具獲得的結果,而且是固定不變的;
  • CNN-non-static:全部的word vector直接使用無監督學習即Google的word2vector工具獲得的結果,可是會在訓練過程當中被微調;
  • CNN-multichannel:CNN-static和CNN-non-static的混合版本,即兩種類型的輸入。
結論
  • CNN-static優於CNN-rand,由於採用訓練好的word2vector向量利用了更大規模的文本信息,提升acc;
  • CNN-non-static優於CNN-static,由於BP算法微調參數使得word2vector更加貼近於某一個具體的任務,提升acc;
  • CNN-multichannel在小規模數據集上的表現優於CNN-single。它體現的是一種折中思想,即既不但願微調參數後的word2vector距離原始值太遠,但同時保留其必定的變化空間。

第一次課 —— web安全與信息安全

老師經過例子向咱們介紹了web安全的重要性,同時介紹了常見的web漏洞以及隱私安全。

信息化發展凸顯的信息安全問題

  • 攻防技術非對稱
    • 信息技術屬於高科技技術,但大量自動化攻擊工具的出現,使得入侵網絡與信息系統的門檻降到極低
    • 國內外「肉雞」的價格也不同,發達國家相比發展中國家,價格更高
  • 攻防成本非對稱
    • 攻防技術的非對稱帶來了攻防成本的非對稱
    • 風險成本低
      • 網絡攻擊有很好的隱藏性,易於掩飾隱藏身份和位置
    • 對國家安全而言,攻防成本的非對稱性具備特殊意義
  • 攻防主體非對稱
    • 弱小一方與超級大國之間的實力獲得了大大的彌補,我的擁有了挑戰弱勢羣體的機會

常見web漏洞

SQL注入

因爲程序中對用戶輸入檢查不嚴格,用戶能夠提交一段數 據庫查詢代碼,根據程序返回的結果,得到某些他想得知 的數據,這就是所謂的SQL Injection,即SQL注入。

  • 按提交字符類型可分爲: 數字型 字符型 搜索型
  • 按HTTP提交方式可分爲: GET、POST、Cookie javascript:alert(document.cookie="id="+escape("x"))
  • 按注入方式可分爲: 盲注 、 union注入、 報錯注入
  • 編碼問題:寬字節注入(構造[`])
XSS跨站腳本攻擊

惡意攻擊者往Web頁面裏插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的html代碼會被執行,從而達到惡意攻擊用戶的特殊目的。

XSS, 即爲(Cross Site Scripting), 中文名爲跨站腳本, 是發生在目標用戶的瀏覽器層面上的,當渲染DOM樹的過程成發生了不在預期內執行的JS代碼時,就發生了XSS攻擊。
跨站腳本的重點不在‘跨站’上,而在於‘腳本’上。大多數XSS攻擊的主要方式是嵌入一段遠程或者第三方域上的JS代碼。其實是在目標網站的做用域下執行了這段js代碼。

分類

  • 反射型XSS
  • 存儲型XSS
CSRF跨站請求僞造

CSRF(Cross-site request forgery)跨站請求僞造 。
攻擊者盜用了你的身份,以你的名義發送惡意請求。CSRF可以 作的事情包括:以你名義發送郵件,發消息,盜取你的帳號, 甚至於購買商品,虛擬貨幣轉帳......形成的問題包括:我的隱私 泄露以及財產安全。

驗證不充分之上傳漏洞
  • 客戶端檢測(javascript擴展名檢測)
    • 瀏覽器禁用JavaScript
  • 服務端檢測(MIME類型檢測)
    • 僞造Content-type: image/gif
  • 服務端檢測(文件頭檢測)
    • 僞造文件頭(GIF89a)
  • 服務端檢測(目錄路徑檢測)
    • %00截斷
  • 服務端檢測(文件擴展名檢測)
    • ①白名單 ②黑名單
解析漏洞

解析漏洞就是web容器將其餘格式的文件解析爲可執行腳本語言,攻擊者能夠利用這個特徵去執行一些攻擊行爲。

  • IIS 6.0解析漏洞
    • ①目錄解析 /test.asp/test.jpg
    • ②文件解析 /test.asp;1.jpg
  • IIS6.0 默認的可執行文件除了asp還包含這三種
    • ①/test.asa
    • ②/test.cer
    • ③/test.cdx
  • Apache解析漏洞
    Apache 是從右到左開始判斷解析,若是爲不可識別解析,就再往左判斷。
    • /test.php.xxx
    • /test.php.rar
  • Nginx解析漏洞
    • 影響版本:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37
    • /test.jpg/1.php
    • /test.jpg%00.php
第三方漏洞
Struts2遠程命令執行
弱口令

弱口令(weak password) 沒有嚴格和準確的定義,一般認爲容易被別人(他們有可能對你很瞭解)猜想到或被破解工具破解的口令均爲弱口令。
弱口令指的是僅包含簡單數字和字母的口令,例如「123」、 「abc」等,由於這樣的口令很容易被別人破解,從而使用戶的計 算機面臨風險,所以不推薦用戶使用。

社會工程學

機器學習與web漏洞

  • 魚叉
    • AI能夠經過從電子郵件中捕獲元數據來檢測網絡釣魚這些威脅,並不影響用戶隱私。
  • 水坑式攻擊
    • 機器學習能夠經過分析諸如路徑/目錄遍歷統計等數據來幫助機構對網絡應 用程序服務進行基準測試。隨着時間推移不斷學習的算法能夠識別出攻擊者或惡意網站和應用程序的常見互動。
  • 內網漫遊
    • 機器學習瞭解數據的語境,能夠動態地提供正常通訊數據的視圖。有了對典型通訊流的更好理解,算法能夠完成變化點檢測,以此監測潛在的威脅。
  • 隱蔽信道檢測
    • 機器學習技術能夠攝取並分析有關稀有領域的統計數據。有了這些信息,安全操做團隊能夠更輕鬆地讓雲端攻擊者現形。
  • 注入攻擊
    • 機構能夠使用機器學習算法來構建數據庫用戶組的統計概況。算法學習瞭解了這些組如何訪問企業中的各個應用程序,並學習發現這些訪問模式中出現的異常。
  • 網頁木馬
    • 攻擊者經過這些平臺來瞄準購物者的我的信息。機器學習算法能夠聚焦正常購物車行爲的統計,而後幫助識別出不該該以這種頻率發生的異常值或行爲。
  • 憑證盜竊
    • 網站和應用程序能夠跟蹤位置和登陸時間。機器學習技術能夠跟蹤這些模式以及包含這些模式的數據,以瞭解什麼樣的用戶行爲是正常的,哪些行爲則表明了可能有害的活動。

第二次課 —— 量子密碼

量子密碼簡介

  • 使用的密碼體制:
    • 用公鑰密碼體制分發會話祕鑰
    • 用對稱密碼體制加密數據
  • 量子密碼
    • Shor算法:大數分解算法
      • 多項式時間內解決大數分解難題
      • 受影響密碼體制:RSA等大多數公鑰密碼
    • qGrover算法:快速搜索算法
      • 能夠加速搜索密鑰
      • 受影響密碼體制:DES,AES等對稱密碼
  • 計算能力對比:
    • 經典方法:運算時間隨輸入長度指數增加
    • 量子方法:運算時間按多項式增加
  • 量子密碼

結合 量子祕鑰的不可竊聽性和一次一密的不可破譯性 實現 無條件安全的保密通訊。

量子密碼採用的典型協議和基本模型

BB84量子祕鑰分配協議

  • 量子通訊:採用BB84協議,傳送量子態光子(量子密鑰),運用一次一密的加密手段。爲了實現量子通訊,採用經典信道和量子信道同時使用的模式。
  • 經典信道:傳送同步信號、對照數據等。

  • 第一階段:量子通訊
    • Alice從四種偏振態中隨機選擇發送給Bob。

    • 接收者Bob接受信息發送方Alice傳輸的信息,並從兩組測量基中隨機選擇一個對接收到的光子的偏振態進行測量。

  • 第二階段:經典通訊
    • 接收者Bob發送信息給信息發送方Alice並告知他本身在哪些量子比特位上使用了哪個測量基。信息發送方Alice 在接收到Bob發送的消息以後,與本人發送時採用的基逐一比對並通知接收者Bob在哪些位置上選擇的基是正確的。

    • 信息發送方Alice和接收者Bob丟掉測量基選擇有分歧的部分並保存下來使用了同一測量基的粒子比特位,並從保存的信息中選取相同部分在經典信道中做對比。信道安全的狀況下信息發送方Alice和接收者Bob的數據應當是沒有分歧的。若存在竊聽,則Alice和Bob的數據會出現不一樣的部分。

    • 若是沒有竊聽,雙方將保留下來的剩餘的位做爲最終密鑰。
    • 假如Eve進行竊聽,根據物理學中的測不許原理等基本物理規律竊聽者的竊聽行爲確定會使Bob的QBER值發生變化,這時,通訊雙方經過誤碼率的分析就能發現竊聽者是否存在。


第三次課 —— 基於深度學習的密碼分析與設計

機器學習

機器學習(Machine Learning, ML)是一門多領域交叉學科,涉及機率論、統計學、逼近論、凸分析、算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,從新組織已有的知識結構使之不斷改善自身的性能。它是人工智能的核心,是使計算機具備智能的根本途徑,其應用遍佈人工智能的各個領域,它主要使用概括、綜合而不是演繹。機器學習的研究人員也是試圖從多個樣本與標籤配對來進行機器學習模型的求解(訓練)。

能夠看到,機器學習是利用樣本x,輸入函數中,獲得結果y,利用已有樣本x y訓練F(x) ,可以達到,輸入一個不包含在樣本集的x'能夠獲得正確的y',保證正確率可以保持在一個較高的水平,這就是我根據老師上的的理解,只是比較淺的理解,在之後的學習中繼續加深我對機器學習的理解。

機器學習與密碼分析

密碼分析與機器學習之間有自然的類似性,在密碼分析中,攻擊者試圖經過推算出密鑰來破解密碼系統。解密函數是從一個由密鑰索引的已知函數空間(解空間)求解出。攻擊者的目的是發現解密函數的精確解。若是攻擊者可以獲取多個獲取密文與明文配對來進行密碼分析,其與機器學習的概念類似:機器學習的研究人員也是試圖從多個樣本與標籤配對來進行機器學習模型的求解(訓練)。因此能夠將兩者進行結合,研究利用機器學習如何進行密碼分析。

深度學習

深度學習是機器學習中一種基於對數據進行表徵學習的方法。觀測值(例如一幅圖像)能夠使用多種方式來表示,如每一個像素強度值的向量,或者更抽象地表示成一系列邊、特定形狀的區域等。而使用某些特定的表示方法更容易從實例中學習任務(例如,人臉識別或面部表情識別)。深度學習的好處是用非監督式或半監督式的特徵學習和分層特徵提取高效算法來替代手工獲取特徵。

深度學習是屬於機器學習中的一個分支,度學習技術掀起了人工智能研究與應用的新一輪浪潮,深度學習技術在多個方面取得了較大突破,其在人工智能系統中所佔的比例日趨增大,已經應用於多項實際場景業務系統中。

  • 人工神經網絡
    • 人工神經網絡的內部是一個黑盒子,就像咱們人類的大腦同樣,咱們不知道它內部的分析過程,咱們不知道它是如何識別出人臉的,也不知道它是如何戰勝圍棋世界冠軍的。咱們只是爲它構造了一個軀殼而已。人工神經網絡是受到人類大腦結構的啓發而創造,下圖是一我的工神經網絡的構造圖。
    • x是神經元的輸入,w是對應的權重,影響着每一個輸入x的刺激強度,網絡的結構越複雜,也就是深度神經網絡,訓練深度神經網絡的過程就稱爲深度學習。

  • 深度神經網絡( DNN: Deep Neural Networks )也有許多類型,例如:
    • 卷積神經網絡( CNN: Convolutional Neural
      Networks)
    • 循環神經網絡( RNN: Recurrent Neural Networks)
    • 生成對抗網絡( GAN: Generative Adversarial Networks)

深度學習與密碼分析

深度學習與密碼分析能夠分爲如下四類:

  • 基於卷積神經網絡的側信道攻擊

  • 基於循環神經網絡的明文破譯

  • 基於生成對抗網絡的口令破解

    • 經過測試集訓練對抗網絡判別口令的正確與錯誤,能夠實現破解口令的功能。
    • 對抗網絡

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

  • 基於深度神經網絡的密碼基元識別

隨着加密算法的複雜性以及祕鑰長度的增長,明文破譯的難度也隨之增長,發展不如其餘方面那麼好,基於深度神經網絡的密碼基元能夠識別出加密所使用的的算法。

深度學習與密碼設計

密碼分析在深度學習領域的發展會隨着量子技術的出現而阻礙,因爲量子技術對於離散對數、整數分解的公鑰密碼體制將被快速攻破,意味着網絡信息系統再也不安全。「組件化可變密碼算法設計與安全性評估」,「密文可編程數據安全存儲與計算」,兩大問題是解決如今密碼技術收到威脅的方法。所以,設計更爲安全的密碼算法是現在更爲重要的課題。

對於新密碼算法的設計需求將與日俱增,但目前人工設計密碼算法耗時耗力,難以適應將來密碼算法設計的需求,咱們提出————讓機器自動設計密碼算法


第四次課 —— 信息隱藏

隱寫

  • LSB嵌入
    • 最簡單且最廣泛的隱寫算法,採用最低有效位嵌入的算法(The Least Significant Bit, LSB)
    • 基本步驟

      1 將原始載體圖像的空域像素值由十進制轉換成二進制;

      2 用二進制祕密信息中的每一比特信息替換與之相對應的載體數據的最低有效位;

    3 將獲得的含祕密信息的二進制數據轉換爲十進制像素值,從而得到含祕密信息的圖像。

  • 矩陣嵌入
    • 以最小的嵌入修改數目達到嵌入要傳遞消息的目的,可提升嵌入效率,即利用較少的嵌入修改嵌入一樣數量的祕密消息。

如上圖所示,矩陣嵌入是在LSB嵌入的基礎上對嵌入修改數目的減小,

  • 自適應隱寫

自適應隱寫的特色在於不考慮載體的圖像內容,同時在圖片中屬於隨機嵌入消息。

實現方法:嵌入失真函數+STCs編碼

根據構造的嵌入失真函數計算載體圖像中元素髮生更改所引發的失真,利用隱寫編碼控制密碼信息的嵌入位置,在最小化圖像整體嵌入失真的同時保證祕密信息的準確提取。

- 空域自適應隱寫
    - 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)

隱寫分析

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

  • 空域高維隱寫分析特徵
    • 34761維 SRM (殘差圖像+共生矩陣)
    • 12870維 PSRM (殘差投影+直方圖)
    • 8000維 DCTR
    • 12600維 PHARM
    • 17000維 GFR
隱寫選擇信道

選擇信道高維隱寫分析特徵,如下是其發展歷程:

  • tSRM 非全局提取特徵,從代價較小的像素上提取SRM特徵

  • maxSRM SRM在統計共生矩陣時,乘以該共生矩陣中對應像素的最大嵌入修改機率。
  • σSRM, σspamPSRM
    • 特徵是從殘差係數上提取的,嵌入修改機率是像素上的
    • 可是二者並不一一對應
    • 嵌入修改對殘差圖像係數的影響做爲累加值
  • SCA-DCTR, SCA-PHARM, SCA-GFR
    • DCT域的嵌入修改對濾波圖像的影響做爲累加值

人工智能在隱寫分析上的應用

  • Li Bin的「Auto-Encoder」
  • Qian系列:系統地提出了「GNCNN」
  • XuNet系列
  • NiJQ最新:YeNet,新結構
  • XuGuanShuo:Res on J-UNIWARD

第五次課 —— 區塊鏈

比特幣

比特幣的交易方式

每一位全部者(A)利用他的私鑰對前一次交易T1和下一位全部者(B)的公鑰(俗稱:地址)簽署一個隨機散列的數字簽名, A將此數據簽名製做爲交易單T2並將其(交易單T2)廣播全網,電子貨幣就發送給了下一位全部者。
【注意】前一次交易是指 這裏比特幣是如何到達如今這位用戶手中的,前一份表單。

特色:

  • 交易發起者的私鑰:只爲我的所知,他人無從知曉
  • 前一次交易:前一次交易說明了該次交易的貨幣的來源
  • 下一位全部者的公鑰:即交易接收方的地址,次數聽說明了當前交易的目標是誰
  • 數字簽名:發起方將前一次交易數據和接收方公鑰鏈接起來並對其求Hash值x,再利用本身的私鑰對x加密,獲得這份數字簽名

驗證交易:

  • 利用交易T2中交易的發起方A的公鑰對簽名進行解密,獲得整數x。
  • 將T1交易數據和B的公鑰鏈接起來,用一樣的Hash算法計算Hash值y。
  • 若x==y,說明:
    • 這筆交易確實是A本人發起的,由於只有A本人的私鑰才能夠生成此簽名(A同時也沒法否定本身曾簽署了此份交易)。
    • 交易的目的方確實是B。
    • 發起方確實是打算把交易T1中A得到的貨幣發送給B。

比特幣網絡中,數據以文件的形式被永久記錄,被稱之爲區塊(Block)。

區塊鏈

許多的區塊構成了區塊鏈,Block之間以雙向鏈表的方式連接起來,而且每一個Block都會保存其上一個Block的Hash值,只有一個Block沒有上一個節點,即創世Block。Block有不少份, 每一個Block只記錄比特幣全網10分鐘內的交易信息,每約10分鐘產生一個新的Block。產生Block的過程,也被稱爲「挖礦」。

區塊鏈的核心技術
  • 分佈式帳本
    • 交易記帳由分佈在不一樣地方的多個節點共同完成,並且每個節點都記錄的是完整的帳目,所以它們均可以參與監督交易合法性,同時也能夠共同爲其做證。
  • 非對稱加密和受權技術
    • 存儲在區塊鏈上的交易信息是公開的,可是帳戶身份信息是高度加密的,只有在數據擁有者受權的狀況下才能訪問到,從而保證了數據的安全和我的的隱私。
  • 共識機制
    • 全部記帳節點之間怎麼達成共識,去認定一個記錄的有效性,這既是認定的手段,也是防止篡改的手段。區塊鏈提出了四種不一樣的共識機制,適用於不一樣的應用場景,在效率和安全性之間取得平衡。
    • 區塊鏈的共識機制具有「少數服從多數」以及「人人平等」的特色
  • 智能合約
    • 智能合約是基於這些可信的不可篡改的數據,能夠自動化的執行一些預先定義好的規則和條款。以保險爲例,若是說每一個人的信息都是真實可信的,那就很容易的在一些標準化的保險產品中,去進行自動化的理賠。
工做量證實

工做量證實系統主要特徵是客戶端須要作必定難度的工做得出一個結果,驗證方卻很容易經過結果來檢查出客戶端是否是作了相應的工做。下圖表示的是工做量證實的流程:

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

第六次課 —— 漏洞挖掘與攻防技術

常見的安全漏洞及漏洞挖掘技術

  • 手工測試
    • 定義:由測試人員手工分析和測試被測目標,發現漏洞的過程,是最原始的漏洞挖掘方法。
  • 補丁對比
    • 定義:補丁比對技術主要用於黑客或競爭對手找出軟件發佈者已修正但未尚公開的漏洞,是黑客利用漏洞前常用的技術手段。
  • 程序分析 (包含靜態和動態程序分析)
    • 定義::是指在不運行計算機程序的條件下,經過詞法分析、語法分析、語義分析、控制流分析、污點分析等技術對程序代碼進行掃描,驗證代碼是否知足規範性、安全性等指標的一種代碼分析技術。
  • 二進制審覈
    • 定義:源代碼不可得,經過逆向獲取二進制代碼,在二進制代碼層次上進行安全評估
  • 模糊測試
    • 定義:經過向被測目標輸入大量的畸形數據並監測其異常來發現漏洞

程序分析

  • 基於靜態分析的漏洞挖掘技術
    • 數據流分析:Foritify SCA、Coverity Pervent、FindBugs等
    • 污點分析:Pixy、TAJ
    • 符號執行:Clang、KLEE
    • 模型檢測:BLAST、MAGIC、MOPS
  • 基於動態分析的漏洞挖掘技術
    • 插樁技術:插樁技術是指在保證被測程序邏輯完整性的基礎上在程序的關鍵位置插入一些「樁」,即加入一些測試代碼,而後執行插樁後的程序,經過「樁」的執行獲取程序的控制流和數據流信息進而分析程序的異常行爲
    • 工具:Android: Xposed

漏洞挖掘技術進展

從圖中能夠看到,主要應用場景在:二進制程序函數識別、函數類似性檢測、測試輸入生成、測試輸入篩選、路徑約束求解、漏洞程序篩選、源代碼漏洞點預測。

二進制程序函數識別

二進制程序函數識別是二進制分析的基礎,對於軟件漏洞分析與修復,甚至惡意軟件檢測、協議逆向等都相當重要。因爲二進制代碼缺乏高級語言程序中的信息,函數的識別每每比較困難,現有的反彙編分析工具具備識別正確率低的缺陷。

測試用例生成

在軟件漏洞挖掘中,構造代碼覆蓋率高或脆弱性導向型的測試輸入能提升漏洞挖掘的效率和針對性,利用機器學習知道生成更高質量的測試輸入樣本。Godefroid等首次把模糊測試中的高結構化樣本生成問題轉換成了NLP領域的文本生成問題。接下來不斷提出了深度神經網絡指導磨合測試輸入樣本。

路徑約束求解

模糊測試,特別是代碼覆蓋率指導的模糊測試,側重於篩選能夠覆蓋新路徑的樣本爲種子文件,但對種子文件變異時並無充分利用程序數據流等信息指導變異,這使得變異盲目低效,生成樣本冗餘。

具有路徑約束求解能力是符號執行比模糊測試等漏洞挖掘技術更先進的體現,也使得符號執行在理論上具有了系統性探索程序執行路徑的能力。

但約束求解也存在着路徑爆炸,效率較低等問題。Chen等提出了Angora,採用污點追蹤測試輸入中影響條件分支的字節,而後使用梯度降低的方式對變異後生成的路徑約束進行求解。


2.感想和體會

時間老是過得飛快,而本學期認真地說,這門課是讓我獲益最大的兩門課之一,特別是每一次的講座,不一樣的老師有本身不一樣的方向,邀請這些老師進行分享是一件很是有意義的事情,咱們不瞭解的能夠向老師請教,同時,也能夠經過老師的分享,學習和了解在這個方向如何有效學習、最新的研究都涉及哪些方面等等。

從這門課中,最令我受益不淺的應該是頂會論文的學習,以往可能更多會關注中文論文,以爲英文論文本身也看不懂;並且,也學會了如何查找某一領域內的頂會論文,從這些大神的論文中,學習到的更可能是邏輯思惟,寫論文的方式,層層遞進的寫做手法,可能有些內容或公式我看不太懂,可是有些研究成果然的十分新穎。

如今不少技術均可以和密碼學相結合,交叉學科纔是將來發展的方向,綜合應用本身所學知識,並不斷探索新的領域,這門課也是在幫咱們拓寬視野,拓寬思路,解決問題的方法並非單一的,更重要的是關注解決問題的過程,就像前面每次課的總結博客,尋找問題的答案並解決的過程是一個使人快樂的過程,總結出來本身的收穫才更有意義。

這門課不只僅是在和老師學習,同時也是在和同窗們學習,特別是頂會論文復現的時候,我十分佩服各組同窗的學習能力,能在短短几周內研究透頂會論文並復現,並且不少同窗的PPT作的十分有邏輯,也是我往後要增強的方面。

3.對本課程的建議和意見

  • 老師能夠在之後的課程中,提早建羣,和同窗溝通了解同窗們感興趣的方向,充分利用這種溝通機制,及時瞭解同窗們感興趣的方向。
  • 頂會論文的學習和復現,但願老師能夠早點佈置下來,這樣同窗們也有機會充分尋找到本身感興趣的論文,適合本身能力的論文等等。
  • 整體來講這門課程十分有意義,爲之後的學習和工做打下了良好的基礎,謝謝各位講座的老師,謝謝王老師,各位老師辛苦了!

致謝!(`・ω・´)ゞ(`・ω・´)ゞ

相關文章
相關標籤/搜索