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

課程:《密碼與安全新技術專題》
班級: 1892班
姓名: 李煬
學號:20189215
上課教師:謝四江
必修/選修: 選修javascript

PART1 教師講座

1.web安全和內容安全

博客連接:http://www.javashuo.com/article/p-kahbukuf-kh.html
本次講座主要學習了網絡安全以及網絡內容安全相關的知識,介紹了web安全和內容的含義,以及背景、發展示狀等。咱們瞭解到常見的web漏洞,好比SQL注入、XSS跨站腳本攻擊、CSRF跨站請求僞造、驗證不充分之上傳漏洞、弱口令、社會工程學等等。也介紹了在生活中一些隱私泄露的案例。最後介紹了機器學習在網絡安全方面的應用,機器學習有助於解決釣魚攻擊,水坑式攻擊,內網漫遊,隱蔽信道檢測,注入攻擊,網頁木馬,釣魚網站URL識別等網絡安全問題。
sql注入的一個小實驗:javascript:alert(document.cookie="id="+escape("x"))
document.cookie:表示當前瀏覽器中的cookie變量
alert():表示彈出一個對話框,在該對話框中單擊「肯定」按鈕確認信息。
escape():該函數用於對字符串進行編碼。
html

2.量子密碼基礎知識與研究進展

博客連接:http://www.javashuo.com/article/p-brldenou-kk.html
本次講座從薛定諤的貓講起,爲咱們介紹了量子密碼的基礎知識與研究進展。前端

  • 薛定諤的貓」是薛定諤提出的一個想象實驗,根據量子力學的思想,獲得與傳統物理學相違背的結論,貓不多是既生又死的狀態(對應量子的衰變和不衰變能夠疊加)。

    本次的講座上我主要學習到了量子的概念、量子態的表示、量子態的疊加、BB84量子密鑰分配協議等知識。
  • 量子態:量子比特(Qubit) |0> (水平方向) |1> (豎直方向)
    量子比特還能夠處在不一樣狀態的疊加態上。

  • |0>,|1>相互正交, |+>,|->相互正交
  • 量子態的可疊加性帶來一系列特殊性質
    • 量子計算的並行性:強大的計算能力
    • 不可克隆定理:未知量子態不可克隆
    • 測不許原理:未知量子態不可準確測量
    • 對未知量子態的測量可能會改變量子態
      跟測量儀器有關,測量時量子會發生坍塌,根據選擇的測量儀器(或者說選擇的測量基)不一樣變爲不一樣的狀態。
  • 量子密碼的四個基本步驟
    • 信息傳輸:一般同時用到量子信道和經典信道。量子信道傳輸量子載體(量子信道容許竊聽者對傳輸的量子消息進行任意竊聽和篡改),經典信道傳輸經典消息。
    • 竊聽檢測:通常隨機選擇部份量子載體,比較初末狀態;對比較的協議來講,竊聽必然干擾量子態,進而引入錯誤,一旦發現存在竊聽(錯誤率太高),則終止通訊,丟棄相關數據。由於傳輸的是密鑰(即隨機數),而不是祕密消息,所以能夠丟棄它們而不會所以泄露祕密。
    • 糾錯:糾正密鑰中的錯誤,因爲接收方隨機選擇測量基,會出現雙方不匹配的狀況。
    • 保密加強:經過壓縮密鑰長度,將Eve(竊聽者)可能得到的部分密鑰信息壓縮至任意小,獲得安全的密鑰。

3.人工智能在密碼分析設計上的應用/基於深度學習的密碼分析與設計

博客連接:http://www.javashuo.com/article/p-hkrfjawp-km.html
本次講座主要介紹了機器學習、深度學習方面的基礎知識以及與密碼設計、密碼分析相關的研究熱點。分爲如下幾個方面來介紹:密碼分析與機器學習、深度學習簡介與現狀、深度學習與密碼分析、深度學習與密碼設計。java

  • 密碼分析與機器學習之間有自然的類似性
    在密碼分析中,攻擊者試圖經過推算出密鑰來破解密碼系統。解密函數是從一個由密鑰索引的已知函數空間(解空間)求解出。攻擊者的目的是發現解密函數的精確解。若是攻擊者可以獲取多個獲取密文與明文配對來進行密碼分析,其與機器學習的概念類似:機器學習的研究人員也是試圖從多個樣本與標籤配對來進行機器學習模型的求解(訓練)。
  • 深度學習:深度學習是人工智能領域中,機器學習的一個分支,可是使用較普遍,研究與應用更多。
  • 深度學習與密碼分析
    • 基於卷積神經網絡的側信道攻擊
    • 基於循環神經網絡的明文破譯
    • 基於生層對抗網絡的口令破解
    • 基於深度神經網絡的密碼基元識別
  • 深度學習與密碼設計
    量子計算技術快速發展對密碼技術產生極大的威脅和挑戰,一旦實用化量子計算出現,將致使基於離散對數、整數分解的公鑰密碼體制直接被快速攻破,意味着當前所使用的網絡信息系統再也不安全。所以,將來對於新密碼算法的設計需求將與日劇增,然而目前密碼算法的設計還停留在人工設計階段,較爲耗時耗力,難以適應將來對密碼算法設計的需求。能夠利用深度學習,讓機器自動設計密碼算法。
  • 總結
    本次講座給我打開了機器學習的大門,讓我接觸到了一種全新的解決問題的辦法。以密碼分析和設計來講,要設計和攻破一個密碼對人類來講是很困難的,可是採用生成對抗網絡這種方式,可讓兩個模型互相訓練,互相學習直到得出想要的結果,中間的過程均可以省略掉,設置好參數,最後拿到結果便可。人工智能是目前計算機技術發展的一個方向,並且與大數據時代的契合度也至關高,將來或許會出現更多更好的方法和模型。

4.信息隱藏

博客連接:http://www.javashuo.com/article/p-ksetfixc-km.html
本次講座主要介紹信息隱藏技術的原理、分類、隱寫等,介紹了圖像隱寫的一些實際應用,讓我發覺了圖片隱寫更大的做用。git

  • 信息隱藏是指將特定用途的消息隱蔽地藏於其餘載體中,使得它們難以被發現或者消除,經過可靠提取隱藏的信息,實現隱蔽通訊、內容認證或內容保護功能。主要包括水印可視密碼隱寫等。
    • 魯棒水印(Robust Watermaking)是指將與數字媒體版權或者購買者有關的信息嵌入數字媒體中,使攻擊者難以在載體不遭到顯著破壞狀況下消除水印,而受權者能夠經過檢測水印實現對版權全部者或者內容購買者等表示信息的認定。
    • 可視密碼(Visual Cryptography)的主要特色是恢復祕密圖像時不須要任何複雜的密碼學計算,而是以人的視覺便可將密碼圖像辨別出來。其作法是產生n張不具備任何意義的膠片,任取其中t張膠片疊合在一塊兒便可還原出隱藏在其中的祕密信息。
    • 隱寫(Steganography)是基於信息隱藏的隱蔽通訊或者隱蔽存儲方法,將祕密消息難以感知地隱藏在內容可公開的載體中,保護保密通訊或者保密存儲這些行爲事實。稱隱寫後的載體爲隱寫媒體Stego。
  • 隱寫
    • LSB嵌入。The Least Sifnificant Bit,最低有效位嵌入算法。
    • 矩陣嵌入。以最小的嵌入修改樹木達到嵌入要傳遞消息的目的,能夠提升嵌入效率,即利用較少的嵌入修改獲得要嵌入一樣數量的祕密消息。
    • 自適應隱寫。「嵌入失真函數+STCs編碼」(Syndrome-Trellis Codes),根據構造的嵌入失真函數計算載體圖像中元素髮生更改所引發的失真,利用隱寫編碼控制祕密信息的嵌入位置,在最小化圖像整體嵌入失真的同時保證祕密信息的準確提取。包括空域自適應隱寫、JPEG域自適應隱寫。
  • 隱寫分析
    • 高維隱寫分析特徵。能夠儘量多地捕獲隱寫對圖像統計特性的影響。
    • 空域高維隱寫分析特徵。
    • 選擇信道高維隱寫分析特徵。包括tSRM、maxSRM、σSRM、σspamPSRM、SCA-DCTR、SCA-PHARM、SCA-GFR等。
  • 隱寫能夠與卷積神經網絡CNN相結合。
  • 總結
    本次講座我學習到了不少關於信息隱藏的知識,瞭解到信息隱藏與密碼學、加密的關係,信息隱藏也是保證信息安全傳輸的重要方式。講座使我發覺圖片隱寫巨大的潛力與廣闊的實際應用空間,令我受益不淺。

5.區塊鏈技術

博客連接:http://www.javashuo.com/article/p-qybxelqq-kn.html
本次講座接介紹了區塊鏈和比特幣技術,讓咱們學到了一些比較新的東西,對於區塊鏈和比特幣有了比較全面的瞭解,搞清楚了基本原理,主要分爲區塊鏈、區塊鏈技術、區塊鏈與將來三個方面。github

  • 比特幣交易
    • 交易單:交易單記錄一筆交易的具體信息,好比付款人(交易發起方的公鑰)、收款人(交易接收方的公鑰)、付款金額(上一筆交易信息)、付款人簽名(加密後的Hash值)等。
    • 如何交易:每一位全部者(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上會記錄不少交易單。
    • 區塊的「面容」以下圖,全部區塊以雙向鏈表的方式連接起來,且每一個Block都會保存其上一個Block的Hash值,就變成了區塊鏈。
    • 第一個Block沒有上一節點,稱爲創世Block。
    • Block有不少份,每一個Block只記錄比特幣全網10分鐘內的交易信息,每約10分鐘產生一個新的Block。
  • 挖礦
    • 生產Block的過程,被形象的稱爲「挖礦」,生產工也被稱爲「礦工」。
    • 一個Block被建立後,這個Block裏初始就有錢(歸建立這個Block者全部,此規則稱爲「激勵」)
      • 第0個 – 第21萬個Block,每一個Block裏有50個比特幣
      • 第21萬-第42萬個Block,每一個Block裏有25個比特幣(2016年)
      • 依次遞減,最後比特幣全網中只會有2100萬個比特幣
      • 最後比特幣的實際可用個數應少於2100W,由於會有部分幣隨着擁有者的密鑰丟失而永遠的沒法流通(儘管記錄這些幣的交易單還在,但誰也沒法使用它)
    • 挖礦過程實際上就是反覆去嘗試尋找一個隨機數(又稱「幸運數」),使得將最後一個Block的hash值、當前世界中還沒有被加入到任何Block的交易單、隨機數三部分組織起來送入SHA256算法計算出散列值X(256位),若是X知足必定條件(好比前20位均爲0),那麼該節點初步得到建立Block的權利。
  • 總結
    在此次講座以前,我對於區塊鏈和比特幣知識略有耳聞,有一個大概的概念,知道挖礦是計算一個數值,但沒有深刻、全面地瞭解這個方面。此次講座爲咱們詳細地講解了區塊鏈的產生和發展,由匿名做者中本聰發佈的《比特幣:一種點對點的電子現金系統》白皮書,演化成爲今天這個比特幣體系,雖然在我國比特幣交易是明令禁止的,但技術是無罪的。講座讓我對區塊鏈的知識有了全面的瞭解,對系統總體的運行方式和流程有了認識,這一技術還在不斷地發展、擴充中,目前來看它的設計是「精妙絕倫的」,但它的機制合理性、系統安全性、系統穩定性等還須要更長時間的驗證。

6.漏洞挖掘及攻防技術

博客連接:http://www.javashuo.com/article/p-zyvprmbg-kn.html
本次講座從安全漏洞介紹、漏洞挖掘技術、漏洞挖掘技術研究進展、漏洞挖掘示例4個方面介紹了漏洞挖掘技術及攻防技術,並經過具體案例的展現讓咱們很直觀地感覺到了對漏洞的攻擊。web

  • 安全漏洞:指信息系統在設計、實現或者運行管理過程當中存在的缺陷或不足,從而使攻擊者可以在未受權的狀況下利用這些缺陷破壞系統的安全策略。
  • 常見漏洞挖掘技術以下:算法

    手工測試
    補丁比對
    程序分析
    二進制審覈
    模糊測試sql

  • 漏洞挖掘技術進展方向向着AI、機器學習、深度學習發展。
    1. 二進制程序函數識別
      二進制程序函數識別是二進制分析的基礎,對於軟件漏洞分析與修復,甚至惡意軟件檢測、協議逆向等都相當重要。因爲二進制代碼缺乏高級語言程序中的信息,函數的識別每每比較困難,現有的反彙編分析工具具備識別正確率低的缺陷。
      • 使用循環神經網絡算法RNN進行二進制程序函數識別的模型訓練。
    2. 函數類似性檢測
    3. 測試用例生成
      • 在軟件漏洞挖掘中,構造代碼覆蓋率高或脆弱性導向型的測試輸入能提升漏洞挖掘的效率和針對性。
      • 可使用機器學習來指導生成更高質量的測試輸入樣本
    4. 測試用例帥選
    5. 路徑約束求解。
  • 循環神經網絡RNN
    • RNN之因此稱爲循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式爲網絡會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點再也不無鏈接而是有鏈接的,而且隱藏層的輸入不只包括輸入層的輸出還包括上一時刻隱藏層的輸出。
    • RNN結構圖
    • RNN的實質:上一個時刻的網絡狀態信息將會做用於下一個時刻的網絡狀態。RNN網絡還可以以時間序列展開成以下形式:
  • 總結
    此次講座爲咱們介紹了漏洞挖掘技術,對於漏洞挖掘我一直都比較有興趣,可是一直感受沒有入門,此次講座讓我對漏洞挖掘的技術和發展方向都有了不少的瞭解。安卓平臺的Xposed框架我以前也有用過,但應該是系統版本的緣由,基本上模塊都用不了,漏洞挖掘自己也是一項比較有趣味性的工做,之後能夠往這個方向靠近一點。編程

PART2 同窗報告

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

這篇論文開發了一種名爲MassVet的新技術,用於大規模審查應用程序,而無需瞭解惡意軟件的外觀和行爲方式。與一般使用重量級程序分析技術的現有檢測機制不一樣,文中所用的方法只是將提交的應用程序與已經在市場上的全部應用程序進行比較,重點關注那些共享相似UI結構(表示可能的從新打包關係)和共性的區別。一旦公共庫和其餘合法代碼重用被刪除,這種差別/通用程序組件就會變得很是可疑。研究中,本文在一個有效的類似性比較算法之上構建了這個「DiffCom」分析,該算法將應用程序的UI結構或方法的控制流圖的顯著特徵映射到一個快速比較的值。在流處理引擎上實施了MassVet,並評估了來自全球33個應用市場的近120萬個應用程序,即Google Play的規模。最後研究代表,該技術能夠在10秒內以低錯誤檢測率審覈應用程序。此外,它在檢測覆蓋率方面優於VirusTotal(NOD32,賽門鐵克,邁克菲等)的全部54臺掃描儀,捕獲了超過10萬個惡意應用程序,包括20多個可能的零日惡意軟件和數百萬次安裝的惡意軟件。仔細觀察這些應用程序能夠發現有趣的新觀察結果:例如,谷歌的檢測策略和惡意軟件做者的對策致使某些Google Play應用程序的神祕消失和從新出現。
MassVet的結構以下圖:

2.幽靈攻擊:利用預測執行

博客連接:http://www.javashuo.com/article/p-ohktxwss-ko.html

  • 幽靈攻擊利用了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欺騙攻擊,並對結果進行了分析和提出了相應的對策。
  • 便攜式的欺騙設備HarkrfOne
    由四個組件組成,分別是HackRFOne-based前端,Raspberry Pi,便攜式電源和天線。總體器件能夠放在一個小盒子裏,將其鏈接到頻率範圍在700 MHz至2700 MHz之間的天線,覆蓋民用GPS頻段L1(1575.42兆赫),Raspberry Pi 能夠用做中央服務器,它運行支持SSH的Raspbian Jessie操做系統和LAMP堆棧服務器。GPS衛星信號由一個名爲的開源軟件生成在Raspberry Pi上運行的無線攻擊發射盒(WALB)。 Raspberry Pi具備蜂窩網絡鏈接,並支持經過SSH進行遠程訪問(Se-並支持經過SSH(Se-cure Shell)。經過控制Raspberry Pi,能夠手動或使用腳原本獲取實時GPS位置信息。使用10000 mAh移動電源做爲整個系統的電源。
  • 攻擊原理
  • 如上圖,基本算法首先從距離綁定Ω的全部鏈接點中,從實際位置Loca中選擇一個ghost位置Loca。而後,計算從ghost位置到目的地的鬼導航路由Γg=(SG1,Sg2,.,sgm)。爲了找到更多的受害者路線儘量,咱們經過m深度寬度優先搜索從實際位置遍歷圖。咱們在每一步都保持符合如下條件的候選路線:
    • 轉向模式匹配:爲了確保ghost路由的導航指令能夠應用於受害者路由,咱們須要匹配兩條路由的轉彎模式:φ(svi,svi 1)和φ(Sgi), SGI 1)∈相同的機動指令類別。
    • 分段長度匹配:給定一個速度刻度因子Ω速度,ghost的旅行距離應在(1±Ω)倍於受害者實際TRA的範圍內 每一個節段上的距離同樣,這保證了在重影和受害者路由上的段長度是類似的。
  • 攻擊演示

    受害者是紐約市的旅行者,他不熟悉該地區,所以依靠GPS應用程序進行導航。圖3a顯示受害者正在重新澤西州的漢密爾頓公園(P)開車到曼哈頓的帝國大廈(D)。假設攻擊者接管受害者在Lincoln Tun nel(A)出口處的GPS接收器,如圖3c所示。攻擊者建立錯誤的GPS信號以將GPS位置設置爲附近的「主機」位置B.爲了應對錯誤的位置漂移,導航系統將從新計算B和D之間的新路線。咱們稱之爲新的路線ghost路線。在物理道路上,受害者仍然在位置A並開始按照應用程序的逐嚮導航。同時,導航應用程序不斷接收欺騙的GPS信號。最終,受害者將最終到達不一樣的地方C。注意B→D的形狀路線相似於A→C路線。根據攻擊的目的,攻擊者能夠預先定義目標目的地C或者僅僅旨在轉移受害者來自原始目的地D。圖3:攻擊示例:受害者的原始導航路線爲P→D; 在位置A,欺騙者將GPS設置爲ghost位置B,其迫使導航系統生成新的路線B→D。在逐嚮導航以後,受害者實際上在物理世界中從A行進到C。

4.偉大的訓練帶來巨大的弱點:針對轉移學習的實際攻擊

  • 遷移學習:一個小型公司借用大公司預訓練好的模型來完成本身的任務。咱們稱大公司的模型爲「教師模型「,小公司遷移教師模型並加入本身的小數據集進行訓練,獲得屬於本身的高質量模型」學生模型」。
  • 攻擊思路:把source圖貓誤識別爲target圖狗
    首先將target圖狗輸入到教師模型中,捕獲target圖在教師模型第K層的輸出向量。以後對source圖加入擾動,使得加過擾動的source圖(即對抗樣本)在輸入教師模型後,在第K層產生很是類似的輸出向量。因爲前饋網絡每一層只觀察它的前一層,因此若是咱們的對抗樣本在第K層的輸出向量能夠完美匹配到target圖的相應的輸出向量,那麼不管第K層以後的層的權值如何變化,它都會被誤分類到和target圖相同的標籤。
  • 復現結果
    左圖爲source image,中圖爲加過擾動的對抗樣本,右圖爲其要誤分類成的target image。

5.Safeinit:全面而實用的未初始化讀取漏洞緩解

  • 未初始化漏洞:未初始化值的使用仍然是C / C ++代碼中的常見錯誤。這不只致使未定義的和一般不指望的行爲,並且還致使信息泄露和其餘安全漏洞。
  • 未定義行爲:簡單地說,未定義行爲是指C語言標準未作規定的行爲。編譯器可能不會報錯,可是這些行爲編譯器會自行處理,因此不一樣的編譯器會出現不一樣的結果,什麼都有可能發生,這是一個極大的隱患,因此咱們應該儘可能避免這種狀況的發生。
  • 文章貢獻
    • 提出了SafeInit,一種基於編譯器的解決方案。
    • 經過確保棧和堆上的初始化來自動減輕未初始化的值讀取。
    • 提出的優化能夠將解決方案的開銷下降到最低水平(<5%),而且能夠直接在現代編譯器中實現基於clang和LLVM的SafeInit原型實現,並代表它能夠應用於大多數真實的C / C++應用程序而無需任何額外的手動工做。
    • 評估咱們在CPU-intensiv佔用CPU資源的操做、IO-intensive佔用I/O設備的操做以及Linux內核方面的工做,並驗證是否成功地減輕了現存的漏洞。
  • safeinit
    • llvm/clang架構:LVM包括了一個狹義的LLVM和一個廣義的LLVM。廣義的LLVM其實就是指整個LLVM編譯器架構,包括了前端、後端、優化器、衆多的庫函數以及不少的模塊;而狹義的LLVM其實就是聚焦於編譯器後端功能(代碼生成、代碼優化等)的一系列模塊和庫。Clang是一個C++編寫、基於LLVM的C/C++/Objective-C/Objective-C++編譯器。Clang是一個高度模塊化開發的輕量級編譯器,它的編譯速度快、佔用內存小、很是方便進行二次開發。
    • safeinit架構:編譯器在得到C/C++文件後,編譯器前端將源文件轉換爲中間語言(IR),經過初始化、代碼優化結合現存編譯器的優化器,以後經過無效數據消除、強化分配器最後得到二進制文件。Safeinit在整個過程當中所添加的就是 初始化所有變量、優化以及強化分配器,來避免或緩解未初始化值。最後,SafeInit優化器提供了非侵入式轉換和優化,它們與現有的編譯器優化(必要時自行修改)以及最終組件(現有「死存儲消除」優化的擴展)一塊兒運行。
  • 實驗結果的評估
    下表提供了每一個基準測試的allocas數量(表示局部變量的數量,偶爾的參數副本或動態分配)的詳細信息。 該表還提供了(剝離的)二進制大小; 在許多狀況下,初始化的影響對最終的二進制大小沒有任何影響,而且在最壞的狀況下它是最小的。#INITS是現有編譯器優化以後剩餘的大量初始化數量,而且咱們的優化器已經分別運行。

6.操縱機器學習:迴歸學習的中毒攻擊與對策

  • 論文貢獻
    • 對線性迴歸模型的中毒攻擊及其對策進行了第一次系統研究
    • 提出了一個針對中毒攻擊和快速統計攻擊的新優化框架
    • 採用原則性方法設計一種新的魯棒防護算法,該算法在很大程度上優於現有的穩健迴歸方法
  • 系統架構
    • 理想世界:學習過程包括執行數據清理和標準化的數據預處理階段,以後能夠表示訓練數據;
    • 測試階段:模型在預處理後應用於新數據,並使用在訓練中學習的迴歸模型生成數值預測值;
    • 對抗性世界:在中毒攻擊中,攻擊者在訓練迴歸模型以前將中毒點注入訓練集。
  • TRIM算法
  • 實現結果
    • 對三個數據集進行嶺迴歸攻擊的MSE,論文提出的新優化(OptP)和統計(StatP)攻擊比基線更有效。OptP是根據表I的最佳最佳優化攻擊。
    • 在三個數據集上攻擊LASSO的MSE,發現StatP和OptP可以很是有效地毒害數據集,因爲基線(bgd)。OptP是根據表I的最佳優化攻擊。

7.卷積神經網絡用於句子分類

  • 這篇論文主要研究用於句子分類的卷積神經網絡(CNN)的實驗,這些實驗是在預先訓練過的單詞向量的基礎上訓練的。一個簡單的CNN具備不多的超參數調整和靜態向量,在多個基準點上都能達到很好的效果。經過微調學習特定於任務的向量能夠進一步提升性能。
  • 模型介紹
    • 輸入矩陣
      CNN輸入矩陣的大小取決於兩個因素:A.句子長度(包含的單詞的個數)B.每一個字符的長度。假設輸入X包含m個單詞,而每一個單詞的字嵌入(Word Embedding)長度爲d,那麼此時的輸入就是md的二維向量。對於I like this movie very much!來講,當字嵌入長度設爲5時,輸入即爲75的二維向量。
    • 卷積過程

      假設輸入X包含m個單詞,而每一個單詞的字嵌入(Word Embedding)長度爲d,那麼此時的輸入就是md的二維向量。對於I like this movie very much!來講,當字嵌入長度設爲5時,輸入即爲75的二維向量。
      A.filter_size表明卷積核縱向上包含單詞個數,即認爲相鄰幾個詞之間有詞序關係,代碼裏使用的是[3,4,5]。
      B.embedding_size就是詞向量的維數。每一個卷積覈計算完成以後咱們就獲得了1個列向量,表明着該卷積核從句子中提取出來的特徵。有多少卷積核就能提取出多少種特徵。
    • 池化過程
      這篇文章使用MaxPooling的方法對Filter提取的特徵進行降維操做,造成最終的特徵。每一個卷積的結果將變爲一個特徵值,最終生成一個特徵向量。
  • 實驗結論
    • CNN-rand:全部的word vector都是隨機初始化的,同時當作訓練過程當中優化的參數;
    • CNN-static:全部的word vector直接使用無監督學習即Google的word2vector工具獲得的結果,而且是固定不變的;
    • CNN-non-static:全部的word vector直接使用無監督學習即Google的word2vector工具獲得的結果,可是會在訓練過程當中被微調;
    • CNN-multichannel:CNN-static和CNN-non-static的混合版本,即兩種類型的輸入。

PART3 感想和體會

《密碼與安全新技術專題》這門課程讓我接觸到更多的新技術,極大地開拓了個人視野,讓我接觸到更多的技術和研究方向。從密碼的角度出發,接觸新的技術,讓我看到了多種技術的結合使用,學科交叉與融合,在這以前不多可以想到能夠把兩個東西進行結合。每位老師上課都很用心,給咱們展開一個完整的世界,同窗們的論文研究也取得了很好的效果。對一篇論文的研究把課程由廣度引向深度,讓咱們在得到更多視角的同時,可以深刻理解。夏超老師給咱們的四點建議也很是重要:看好論文(最新的頂會、頂刊)、學好英語(寫做、據說都用得着)、練好編程(工做、科研、github)和放好心態(運氣也是成功的一個因素)。總之,從這門課程中我獲益匪淺。

PART4 對本課程的建議和意見

  1. 老師能夠給你們一些查找論文的渠道
  2. 同窗找論文研究的時候要趁早,否則時間容易不夠(ˉ▽ˉ;)
  3. 課程上能夠多一些實際的演示
相關文章
相關標籤/搜索