20189216 2018-2019-2 《密码与安全新技术专题》课程总结报告
課程學習內容總結
每次作業鏈接匯總
20189216 2018-2019-2 《密碼與安全新技術專題》第一次作業
20189216 2018-2019-2 《密碼與安全新技術專題》第二次作業
20189216 2018-2019-2 《密碼與安全新技術專題》第三次作業
20189216 2018-2019-2 《密碼與安全新技術專題》第四次作業
20189216 2018-2019-2 《密碼與安全新技術專題》第五次作業
20189216 2018-2019-2 《密碼與安全新技術專題》第六次作業
20189216 2018-2019-2 《密碼與安全新技術專題》第七次作業
每次講座內容總結
(1)講座的主題為網絡(Web)安全與與內容安全
張老師從Web應用安全和隱私安全兩個方面為我們帶來了一場精彩的講座。通過這次講座,我們知道常見的Web漏洞有如下幾個:
通過這次講座我們知道了什么是SQL注入漏洞、SQL注入分類以及如何判斷等等。
還學習到什么是XSS跨站腳本攻擊, XSS漏洞分為兩類:①反射型XSS ②存儲型XSS,認識到XSS的危害,了解持久型跨站腳本攻擊場景等等。
學習什么是CSRF跨站請求偽造漏洞,跨站請求偽造(CSRF)場景,如何上傳漏洞、解析漏洞,什么是弱口令等等。
在隱私安全部分介紹了用戶軌跡的危害以及機器學習的啟發。
(2)講座的主題是量子密碼
通過本次講座我們知道量子密碼與傳統的密碼系統不同,它依賴于物理學作為安全模式的關鍵方面而不是數學。實質上,量子密碼術是基于單個光子的應用和它們固有的量子屬性開發的不可破解的密碼系統,因為在不干擾系統的情況下無法測定該系統的量子狀態。理論上其他微粒也可以用,只是光子具有所有需要的品質,它們的行為相對較好理解,同時又是最有前途的高帶寬通訊介質光纖電纜的信息載體。量子密碼學的理論基礎是量子力學,不同于以往理論基礎是數學的密碼學。如果用量子密碼學傳遞數據,則此數據將不會被任意擷取或被插入另一段具有惡意的數據,數據流將可以安全地被編碼及譯碼。而編碼及譯碼的工具就是隨機的序列(bit-strings),也可以稱他為金鑰(Key)。當前,量子密碼研究的核心內容,就是如何利用量子技術在量子信道上安全可靠地分配金鑰。量子密碼通信現在是非常熱門的問題。當下,我國必須培養這方面的人才,與國外相比,技術不能落后,只有大力發展科學技術,才能在量子密碼通信的道路上越走越遠!
(3)講座主題是基于深度學習的密碼分析與設計
通過這次講座了解到密碼分析與機器學習、深度學習簡介與現狀、深度學習與密碼分析、深度學習與密碼設計。金鑫老師充滿活力的給我們帶來一個精彩的講座——基于深度學習的密碼分析與設計。我發現人工智能需要我們的知識儲備非常足,要有很好的數學基礎,密碼學基礎等等。本次講座使我對人工智能、機器學習和深度學習增加了系統性的認知,以及對深度學習的應用有了更為寬闊的了解。我發現自己對人工智能、深度學習有點感興趣,可是知識儲備遠遠不夠,希望后期自己能夠努力培養這方面的知識。
(4)講座的主題是信息隱藏
通過這次講座知道了信息隱藏是指將特定用途的消息隱蔽地藏于其他載體(Cover)中,使得它們難以被發現或者消除,通過可靠提取隱藏的信息,實現隱蔽通信、內容認證或內容保護功能 。信息隱藏主要包括水印、可視密碼、隱寫等。隨著多媒體技術在通信領域的廣泛應用和飛速發展,信息隱藏及隱寫分析技術成為信息安全領域的研究熱點。通過夏老師的這次課讓我對信息隱藏和隱寫分析技術等有了基礎的了解。最重要的一點是夏老師給我們提出的四點建議讓我感受頗深。首先我們要在平時學習專業課之余去看一些最新的頂會、期刊文章,增加自己的知識儲備。當然,要想看懂頂會期刊就必須擁有一定的英語水平。老師建議我們去抽時間學習英語,說好英語,寫好英語。作為一名計算機的學生,編程自然是少不了的。要想在科研工作上走的更遠,需要擁有良好的編程能力。老師告訴我們要利用好資源,GitHub上有很多優秀的代碼,很多牛人都值得我們去學習。最后一點就是不管干什么事都要放平心態,我認為老師說的非常對,我深有感觸。只有遇到問題遇到麻煩不慌不忙,平心靜氣,踏踏實實去盡自己最大的努力完成就可以了。心態是決定你能否成功的關鍵因素。
(5)講座的主題是區塊鏈
通過這次講座知道比特幣概念、比特幣交易的特點、比特幣的特點、區塊鏈技術以及區塊鏈技術雨未來。這次講座為我們詳細地講解了區塊鏈的產生和發展,由匿名作者中本聰發布的《比特幣:一種點對點的電子現金系統》白皮書,演化成為今天這個比特幣體系。這次講座讓我對比特幣、區塊鏈的歷史有了系統的了解,對于區塊鏈的技術也有了較為詳細的認識,明白了這個機制是怎么正常運作的。
(6)講座主題為漏洞挖掘及攻防技術。
通過這次講座,對漏洞挖掘有個基本的了解。我認為想提高漏洞挖掘能力的方法要做到細心、耐心、會看、會記、懂收集、勤動手、愛學習。 細心放在第一位,是因為細心真的是非常非常非常重要。耐心同細心一樣重要,可以說是一對cp。 會看,會記就是要多看多記,多看漏洞詳情,多看技術文章,漏洞詳情可以在烏云看,還有網上很多人分享的案例,主要是烏云。勤動手,當你看了大量漏洞,記了大量筆記,這個時候,我相信你最需要的,就是實戰,實戰是可以把所學所看融會貫通的最快方法,沒有之一,只有實戰可以鍛煉自己的挖洞能力,和效率。看到新的漏洞多去搭建環境復現,這也是對能力的一種提升。
自認為寫得最好一篇博客是?為什么?
20189216 2018-2019-2 《密碼與安全新技術專題》第二次作業
這篇博客的是關于量子密碼的。通過老師上課的內容來進行歸納總結,從研究背景、量子密碼基本物理概念、典型協議和基本模型三個方面。對上課中存在的疑問以及對有關知識點的理解不透徹課后查詢資料,如對薛定諤的貓的概念的理解、量子Grover算法等等。量子密碼學的理論基礎是量子力學,不同于以往理論基礎是數學的密碼學。如果用量子密碼學傳遞數據,則此數據將不會被任意擷取或被插入另一段具有惡意的數據,數據流將可以安全地被編碼及譯碼。而編碼及譯碼的工具就是隨機的序列(bit-strings),也可以稱他為金鑰(Key)。另外就量子密鑰分發這個方面查閱了頂會上的最新的論文,理解其最新研究現狀。
各組同學匯報總結
(1)Finding Unknown Malice in 10 Seconds: Mass Vetting for New Threats at the Google-Play Scale
應用程序市場的審查流程預計具有可擴展性和有效性。 然而,今天的審查機制很慢,并且不太能夠捕獲新的威脅。 文中研究發現通過利用構建和傳播Android惡意軟件的方式可以找到更強大的解決方案,這通常是通過重新打包具有類似惡意組件的合法應用程序。 結果,這種攻擊有效載荷通常從相同重新包裝起源的那些中脫穎而出并且也出現在不應該彼此相關的應用中。基于這一觀察,我們開發了一種名MassVet的新技術,用于大規模審查應用程序,而無需了解惡意軟件的外觀和行為方式。與通常使用重量級程序分析技術的現有檢測機制不同,文中的方法只是將提交的應用程序與已經在市場上的所有應用程序進行比較,重點關注那些共享類似UI結構(表示可能的重新打包關系)和共性的區別。在那些看似無關的人中。一旦公共庫和其他合法代碼重用被刪除,這種差異/通用程序組件就會變得非常可疑。在研究中,在一個有效的相似性比較算法之上構建了這個“DiffCom”分析,該算法將應用程序的UI結構或方法的控制流圖的顯著特征映射到一個快速比較的值。作者在流處理引擎上實施了MassVet,并評估了來自全球33個應用市場的近120萬個應用程序,即Google Play的規模。研究表明,該技術可以在10秒內以低錯誤檢測率審核應用程序。此外,它在檢測覆蓋率方面優于VirusTotal(NOD32,賽門鐵克,邁克菲等)的所有54臺掃描儀,捕獲了超過10萬個惡意應用程序,包括20多個可能的零日惡意軟件和數百萬次安裝的惡意軟件。仔細觀察這些應用程序可以發現有趣的新觀察結果:例如,谷歌的檢測策略和惡意軟件作者的對策導致某些Google Play應用程序的神秘消失和重新出現。
檢測思路如下:
核心技術結構:
MassVet結構
(2)Spectre Attacks: Exploiting Speculative Execution
通過他們的匯報知道什么是預測執行。簡單來說就是一些具有預測執行能力的新型處理器,可以估計即將進行的指令,采用預先計算的方法來加快整個處理過程。預測執行的設計理念是為了加速大概率事件。預測執行是高速處理器使用的一種技術,通過考慮可能的未來執行路徑并提前地執行其中的指令來提高性能。例如,當程序的控制流程取決于物理內存中未緩存的值時,可能需要幾百個時鐘周期才能知道該值。除了通過空閑浪費這些周期之外,過程還會控制控制流的方向,保存其寄存器狀態的檢查點并且繼續在推測的路徑上推測性地執行該程序。當值從存儲器中偶然到達時,處理器檢查最初猜測的正確性。如果猜測錯誤,則處理器將寄存器狀態恢復為存儲的檢查點并丟棄(不正確的)預測執行,如果猜測是正確的,則該部分代碼已被執行過,不需要再次執行,因此帶來了顯著的性能增益。可以發現,如果預測錯誤,即便程序真正執行到這里時錯誤結果被丟棄,但錯誤的結果還是短暫的出現在寄存器中,在被丟棄之前,這部分數據就很容易被泄露。
Spectre Attacks(幽靈攻擊)
現代處理器使用分支預測和推測執行來最大化性能。 例如,如果分支的目標取決于正在讀取的內存值,則CPU將嘗試獲取目標并嘗試提前執行。 當內存值最終到達時,CPU丟棄或提交推測計算。 推測邏輯在執行方式上是不忠實的,可以訪問受害者的內存和寄存器,并且可以執行具有可測量副作用的操作。
幽靈攻擊涉及誘使受害者以規范的方式執行在正確的程序執行期間不會發生的操作以及泄漏受害者的操作,可以通過側信道向外界提供的機密信息。幽靈攻擊結合了來自側信道攻擊,故障攻擊和回歸導向編程的方法,可以從受害者的內存中讀取任意任意位置的內容。 更廣泛地說,推測性執行實施違反了支持數字軟件安全機制的安全假設,包括操作系統進程分離,靜態分析,容器化,即時(JIT)編譯以及對緩存的定時/側通道攻擊的對策。 這些攻擊對實際系統構成嚴重威脅,因為在用于數百萬臺設備的英特爾,AMD和ARM的微處理器中發現了漏洞預測執行的功能。
幽靈攻擊就像字面所說的意思一樣,來無影去無蹤,當攻擊發生時受害者在毫無察覺的情況下就被CPU的預測執行功能“出賣”了。
攻擊過程及結果
攻擊流程圖如下:
獲取目標內存地址的技術本論文沒有介紹,個人以為可以堆內存地址進行監控,選擇頻繁被修改的地址。
攻擊示例程序中的受害代碼采用上面的例子,交替輸入有效和惡意的參數:
在通過直接讀取該處cache中的值確定攻擊是否命中,當讀取速度小于某個經驗值時,則認為該數據在高速緩存中,判斷為命中。當命中某個數值達到一定次數時判定命中結果:
相似的攻擊手段:meltdown
Meltdown是一種類似的微體系結構攻擊,它利用無序執行來泄漏目標的物理內存。 Meltdown在兩個主要方面與Spectre Attacks截然不同。 首先,與Spectre不同,Meltdown不使用分支預測來實現推測執行。 相反,它依賴于觀察,當一條指令導致一個軟中斷時,正在無序執行的指令中止。第二,Meltdown利用特定于英特爾處理器的特權升級漏洞,由此 推測執行的指令可以繞過內存保護。 結合這些問題,Meltdown從用戶空間訪問內核內存。 此訪問會導致軟中斷,但在發出軟中斷之前,訪問后面的代碼會通過緩存通道泄漏所訪問內存的內容。與Meltdown不同,Spectre攻擊適用于非Intel處理器,包括AMD和ARM處理器。 此外,KAISER補丁已被廣泛應用于對Meltdown攻擊的緩解,但不能防止幽靈攻擊。
(3)AllYourGPSAreBelongToUs: TowardsStealthyManipulationofRoadNavigationSystems
他們所選論文主要探討了對道路導航系統進行隱身操縱攻擊的可行性目標是觸發假轉向導航,引導受害者到達錯誤的目的地而不被察覺。其主要想法是略微改變GPS位置,以便假冒的導航路線與實際道路的形狀相匹配并觸發實際可能的指示。為了證明可行性,該論文首先通過實施便攜式GPS欺騙器并在真實汽車上進行測試來執行受控測量。然后,該論文設計一個搜索算法來實時計算GPS移位和受害者路線。該論文使用追蹤駕駛模擬(曼哈頓和波士頓的600輛出租車道路)進行廣泛的評估,然后通過真實駕駛測試(攻擊我們自己的車)來驗證完整的攻擊。最后,該研究組在美國和中國使用駕駛模擬器進行欺騙性用戶研究,結果顯示95%的參與者遵循導航沒有意識到這種攻擊就到了錯誤的目的地。論文提出了一種秘密操縱道路導航系統的攻擊方法。該算法利用了現實中出租車行駛軌跡,并對算法進行了廣泛的評估,實現了攻擊算法和一個低成本的便攜式GPS欺騙器.在道路上的實際測量和駕駛測試證實了攻擊的可行性,證明在道路行駛過程中人為的因素可以影響攻擊是否成功。這些結果表明,有些司機常見的駕駛習慣大概率會讓他們遭受到GPS欺騙攻擊,并對結果進行了分析和提出了相應的對策。
論文的研究思路
1、首先本文介紹了兩種攻擊GPS信號的方法強制接管和平滑接管。強制接管,欺騙者只是以高功率發送錯誤信號,導致受害者失去對衛星的跟蹤并鎖定更強的欺騙信號。平滑接管,接管開始于發送與原始信號同步的信號,然后逐漸超過原始信號以引起遷移。平滑接管隱秘性,強制接管會在接收到的信號強度中產生異常跳躍,平滑接管需要特殊的硬件來實時跟蹤并與受害者位置處的原始信號同步,價格更加昂貴。
2、接下來介紹了本文使用的便攜式的欺騙設備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移動電源作為整個系統的電源。所有組件都是現成的。總費用大約是223美元(175美元+ 35美元+ 10美元+ 3美元)。
3、接著分析了GPS欺騙的可行性:如果攻擊者隨機改變導航設備的GPS信息,則駕駛員可以容易地注意到路線信息與物理路況之間的不一致。例如,欺騙的GPS位置可以觸發導航系統指示“轉彎”,但是在實際道路上沒有辦法向左轉。為了讓駕駛員相信他在原始路線上駕駛。如何使攻擊更加隱蔽?關鍵是要找到一條模仿真實道路形狀的虛擬路線。在這樣,導航指令可以與物理世界保持一致。另一個影響因素是導航系統通常會顯示第一人稱視角。司機沒有看到整個路線,而是關注當前路線和下一個轉彎,這可能會增加攻擊者成功的機會。
4、攻擊的原理:
(1)受害者是紐約市的旅行者,他不熟悉該地區,因此依靠GPS應用程序進行導航。
(2)圖3a顯示受害者正在從新澤西州的漢密爾頓公園(P)開車到曼哈頓的帝國大廈(D)。
(3)假設攻擊者接管受害者在Lincoln Tun nel(A)出口處的GPS接收器,如圖3c所示。
(4)攻擊者創建錯誤的GPS信號以將GPS位置設置為附近的“主機”位置B.為了應對錯誤的位置漂移,導航系統將重新計算B和D之間的新路線。我們稱之為新的路線鬼魂路線。
(5)在物理道路上,受害者仍然在位置A并開始按照應用程序的逐向導航。同時,導航應用程序不斷接收欺騙的GPS信號。最終,受害者將最終到達不同的地方C.注意B與D的路線形狀類似于A與C的路線。
(6)也即是受害者的原始導航路線為P→D; 在位置A,欺騙者將GPS設置為幻影位置B,其迫使導航系統生成新的路線B→D。在逐向導航之后,受害者實際上在物理世界中從A行進到C。
5、攻擊的算法
(1)基本攻擊算法
如算法1所示,基本算法首先從距離綁定?的所有連接點中,從實際位置Loca中選擇一個鬼位置Loca。然后, 計算從鬼位置到目的地的鬼導航路由Γg=(SG1,Sg2,.,sgm)。為了找到更多的受害者路線盡可能,我們通過m深度寬度優先搜索從實際位置遍歷圖.我們在每一步都保持符合以下條件的候選路線:
- 轉向模式匹配:為了確保幽靈路由的導航指令可以應用于受害者路由,我們需要匹配兩條路由的轉彎模式:φ(svi,svi 1)和φ(Sgi), SGI 1)∈相同的機動指令類別。
- 分段長度匹配:給定一個速度刻度因子?速度,鬼魂的旅行距離應在(1±?)倍于受害者實際TRA的范圍內 每個節段上的距離一樣,這保證了在重影和受害者路由上的段長度是相似的。
(2)迭代攻擊算法
在基本攻擊中,攻擊者只將GPS位置從LOCA移動到LOCF。這里,我們提出了一種迭代攻擊,使攻擊者能夠在不同位置創建多個漂移, 受害者正在開車。通過迭代地應用基本攻擊算法,可以顯著提高攻擊性能,因為可以使用部分匹配的受害者-重影路由,在受害者移動時搜索新路線。如算法2所示,對于每次迭代,我們首先檢查攻擊目標是否已經實現。如果不是,我們在新幽靈r上創建另一個位置移位。 從前一次迭代中提取出分段,并應用基本的搜索算法。攻擊者的目標可能是“到達預先定義的目標”或“輸入錯誤的方式”,這有助于終止 早期搜索。
(4)With Great Training Comes Great Vulnerability: Practical Attacks against Transfer Learning
遷移學習
(1)遷移學習過程
學生模型通過復制教師模型的前N-1層來初始化,并增加了一層全連接層用于分類,之后使用自己的數據集對學生模型進行訓練,訓練過程中,前K層是被凍結的,即它們的權重是固定的,只有最后N-K層的權重才會被更新。前K層之所以在訓練期間要被凍結,是因為這些層的輸出已經代表了學生任務中的有意義的特征,學生模型可以直接使用這些特征,凍結它們可以降低訓練成本和減少所需的訓練數據集。
(2)遷移學習方法
根據訓練過程中被凍結的層數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,學生任務和教師任務存在顯著差異,所有層都需要微調
對遷移學習的攻擊
(1)對抗性攻擊
由于機器學習算法的輸入形式是一種數值型向量(numeric vectors),所以攻擊者就會通過設計一種有針對性的數值型向量從而讓機器學習模型做出誤判,這便被稱為對抗性攻擊。
和其他攻擊不同,對抗性攻擊主要發生在構造對抗性數據的時候,之后該對抗性數據就如正常數據一樣輸入機器學習模型并得到欺騙的識別結果。如給一個輸入圖像加入不易察覺的擾動,使模型將輸入圖像誤分類成其他類別。
對抗性攻擊可分為白盒攻擊和黑盒攻擊。
白盒攻擊:攻擊者能夠獲知分類器的內部體系結構及所有權重。它允許攻擊者對模型進行無限制的查詢,直至找到一個成功地對抗性樣本。這種攻擊常常在最小的擾動下獲得接近100%的成功,因為攻擊者可以訪問深度神經網絡的內部結構,所以他們可以找到誤分類所需的最小擾動量。然而白盒攻擊一般被認為是不切實際的,因為很少會有系統公開其模型的內部結構。
黑盒攻擊:攻擊者不知道受害者的內部結構,攻擊者要么嘗試反向工程DNN的決策邊界,建一個復制品用于生成對抗樣本,要么反復查詢生成中間對抗樣本并不斷迭代改進。黑盒攻擊容易被防御。
對抗樣本是對干凈圖像進行處理后的樣本,被故意擾亂(如加噪聲等)以達到迷惑或者愚弄機器學習技術的目的,包括深度神經網絡。
(2)本文攻擊模式
由于當前模型的默認訪問模式是:
- 教師模型被深度學習服務平臺公開。
- 學生模型離線訓練且不公開。
本文提出了一個新的針對遷移學習的對抗性攻擊,即對教師模型白盒攻擊,對學生模型黑盒攻擊。攻擊者知道教師模型的內部結構以及所有權重,但不知道學生模型的所有權值和訓練數據集。
(3)本文具體攻擊思路
攻擊目標:把source圖貓誤識別為target圖狗
本文的攻擊思路:首先將target圖狗輸入到教師模型中,捕獲target圖在教師模型第K層的輸出向量。之后對source圖加入擾動,使得加過擾動的source圖(即對抗樣本)在輸入教師模型后,在第K層產生非常相似的輸出向量。由于前饋網絡每一層只觀察它的前一層,所以如果我們的對抗樣本在第K層的輸出向量可以完美匹配到target圖的相應的輸出向量,那么無論第K層之后的層的權值如何變化,它都會被誤分類到和target圖相同的標簽。
(4)如何計算擾動
本文通過求解一個有約束的最優化問題來計算擾動。目標是是模擬隱藏層第K層的輸出向量,約束是擾動不易被人眼察覺。即在擾動程度perturb_magnitude小于一定約束值(擾動預算P)的前提下,最小化對抗樣本(擾動后的source image)第K層的輸出向量與target image 第K層的輸出向量的歐式距離。前人計算擾動程度都是使用Lp范數,但是它無法衡量人眼對于圖像失真程度的感知。所以本文使用DSSIM計算擾動程度,它是一種對圖像失真度的客觀測量指標。
DSSIM
(5) 目標攻擊/非目標攻擊
目標攻擊:將source image x_s 誤分類成target image s_t 所屬標簽
非目標攻擊:將source image x_s 誤分類成任意其他的source image 所屬標簽
非目標攻擊需要確定一個“方向”把source image推出它自己的決策邊界。但是要預測這個“方向“是非常難的,所以本文的解決方法是,把每個目標攻擊的攻擊目標都試一遍,然后選出與source image第K層輸出向量距離最小的類別作為目標。
(6)影響攻擊效果的因素
- 擾動預算P
擾動預算P的選擇直接關系到攻擊的隱蔽性。P越小攻擊成功率越低,通過使用DSSIM度量方法測量圖像失真,我們發現P=0.003是人臉圖像的一個安全閾值。其對應的L2范數值明顯小于前人的結果。 - 距離度量方法
距離度量方法也會影響攻擊效果,使用DSSIM產生的擾動不易察覺,使用L2的擾動更明顯。DSSIM能考慮到圖像的潛在結構,而L2平等對待每一個像素,并經常在臉部產生明顯的“紋身樣” 圖案。 - 遷移學習方法
遷移學習方法也非常影響攻擊效果,本文的攻擊對于Deep-layer Feature Extractor是非常有效的,但對于Full Model Fine-tuning無效。
(7)如何選擇攻擊層
攻擊者首先要判斷學生模型是否使用了Deep-layer Feature Extractor,因為它是最易被攻擊的方法。
如果學生模型的遷移學習方法是Deep-layer Feature Extractor ,攻擊者需要攻擊第N-1層以獲得最佳的攻擊性能;
如果學生模型的遷移學習方法不是Deep-layer Feature Extractor ,攻擊者可以嘗試通過迭代瞄準不同的層,從最深層開始,找到最優的攻擊層。
(8) 給定學生模型確定其教師模型
前面我們的誤分類攻擊是假設了攻擊者知道教師模型是哪個的,接下來我們放寬這個條件,考慮攻擊者不知道教師模型是哪個的情況。今天的深度學習服務(Google Cloud ML, Facebook PyTorch, Microsoft CNTK)會幫用戶從一系列教師模型中生成學生模型。這種情況下,攻擊者就得自己尋找他要攻擊的學生模型對應的教師模型。本文設計了一種指紋方法,只需要對學生模型進行少量圖像查詢就可以確定他的教師模型。
我們假設給定一個學生模型,攻擊者可以知道它的教師模型候選池,候選池中的一個教師模型生成了該學生模型。這個假設是現實的,因為對于常規的深度學習任務,目前只有少數幾個公開可用的高質量、預訓練過的模型。比如Google Cloud ML 給圖像分類任務提供的是Inception v3 , MobileNet及其變體作為教師模型。所以攻擊者只需要在這一組候選模型中識別。
如果基尼系數非常大,說明該學生模型對應的教師模型不在候選池中,或者該學生模型選擇的不是Deep-layer Feature Extractor的遷移學習方法。
應對本文攻擊的防御方法
論文還提出了3種針對本文攻擊的防御方法,其中最可行的是修改學生模型,更新層權值,確定一個新的局部最優值,在提供相當的或者更好的分類效果的前提下擴大它和教師模型之間的差異。這又是一個求解有約束的最優化問題,約束是對于每個訓練集中的x,讓教師模型第K層的輸出向量和學生模型第K層的輸出向量之間的歐氏距離大于一個閾值,在這個前提下,讓預測結果和真實結果的交叉熵損失最小。
(5)Safeinit: Comprehensive and Practical Mitigation of Uninitialized Read Vulnerabilities
safeinit
llvm/clang架構
LLVM包括了一個狹義的LLVM和一個廣義的LLVM。廣義的LLVM其實就是指整個LLVM編譯器架構,包括了前端、后端、優化器、眾多的庫函數以及很多的模塊;而狹義的LLVM其實就是聚焦于編譯器后端功能(代碼生成、代碼優化等)的一系列模塊和庫。Clang是一個C++編寫、基于LLVM的C/C++/Objective-C/Objective-C++編譯器。Clang是一個高度模塊化開發的輕量級編譯器,它的編譯速度快、占用內存小、非常方便進行二次開發。上圖是LLVM和Clang的關系:Clang其實大致上可以對應到編譯器的前端,主要處理一些和具體機器無關的針對語言的分析操作;編譯器的優化器部分和后端部分其實就是我們之前談到的LLVM后端(狹義的LLVM);而整體的Compiler架構就是LLVM架構。
safeinit架構
1)通過調整工具鏈來確保所有堆棧和堆分配始終初始化,從而減輕通用程序中的這些錯誤。 SafeInit在編譯器級別實現。
2)必須在編譯器本身內完成。 只需在編譯過程中傳遞額外的加固標記即可啟用SafeInit。
如圖編譯器在獲得C/C++文件后,編譯器前端將源文件轉換為中間語言(IR),通過初始化、代碼優化結合現存編譯器的優化器,之后通過無效數據消除、強化分配器最后獲得二進制文件。Safeinit在整個過程中所添加的就是 初始化全部變量、優化以及強化分配器,來避免或緩解未初始化值。最后,SafeInit優化器提供了非侵入式轉換和優化,它們與現有的編譯器優化(必要時自行修改)以及最終組件(現有“死存儲消除”優化的擴展)一起運行。這些構建在我們的初始化傳遞和分配器之上,執行更廣泛的刪除不必要的初始化代碼,證明我們的解決方案的運行時開銷可以最小化。
初始化:保證堆和棧內的局部變量全部初始化
SafeInit在首次使用之前初始化所有局部變量,將局部變量看做新分配的變量處理。SafeInit通過修改編譯器編譯代碼的中間表示(IR),在每個變量進入作用域后進行初始化(例如內置memset)。
強化分配器
1)SafeInit的強化分配器可確保在返回應用程序之前將所有新分配的內存清零。——敏感數據的保護
2)通過修改現代高性能堆分配器tcmalloc來實現我們的強化分配器。——提高性能
3)修改了LLVM,以便在啟用SafeInit時將來自新分配的內存的讀取視為返回零而不是undef。 ——初始化數據
優化器:可在提高效率和非侵入性的同時提高SafeInit的性能。優化器的主要目標是更改現有編譯器中可用的其他標準優化,以消除任何不必要的初始化。
1)存儲下沉:存儲到本地的變量應盡可能接近它的用途。
2)檢測初始化:檢測初始化數組(或部分數組)的典型代碼
字符串緩沖區
3)用于存儲C風格的以空字符結尾的字符串的緩沖區通常僅以“安全”方式使用,其中永遠不會使用超出空終止符的內存中的數據。傳遞給已知C庫字符串函數(例如strcpy和strlen)的緩沖區是“安全的”,優化器檢測到該緩沖區始終被初始化,可以刪除掉該緩沖區的初始化代碼。
無效存儲消除(DSE):可以刪除總是被另一個存儲覆蓋而不被讀取的存儲。
1)堆清除:所有堆分配都保證初始化為零,使用零存儲刪除堆內存
2)非恒定長度存儲清除:為了刪除動態堆棧分配和堆分配的不必要初始化
3)交叉塊DSE:可以跨多個基本塊執行無效存儲消除
4)只寫緩沖區:通過指定該緩沖區只用來存儲而不是刪除,就可以將該緩沖區刪除
評估
本測試的基線配置是clang/LLVM的未修改版本,以及tcmalloc未修改版本。
基準測試運行在(4核)Intel i7-3770上,內存為8GB,運行(64位)Ubuntu 14.04.1。 禁用CPU頻率縮放,并啟用超線程。
安全
開銷
(6)Manipulating Machine Learning: Poisoning Attacks and Countermeasures for Regression Learning
作者對線性回歸模型的中毒攻擊及其對策進行了第一次系統研究。作者提出了一個針對中毒攻擊和快速統計攻擊的新優化框架,該框架需要對培訓過程的了解很少。作者還采用原則性方法設計一種新的魯棒防御算法,該算法在很大程度上優于現有的穩健回歸方法。作者在醫療保健,貸款評估和房地產領域的幾個數據集上廣泛評估作者提出的攻擊和防御算法。作者在案例研究健康應用中證明了中毒攻擊的真實含義。作者終于相信,作者的工作將激發未來的研究,以開發更安全的中毒攻擊學習算法。
系統架構:
TRIM算法及成果:
相關數據:
(7)ConvolutionalNeuralNetworksforSentenceClassi?cation
論文報告了一系列的卷積神經網絡(CNN)的實驗,這些實驗是在預先訓練過的單詞向量的基礎上訓練的,用于句子級的分類任務。作者發現,一個簡單的CNN具有很少的超參數調整和靜態向量,在多個基準點上都能達到很好的效果。通過微調學習特定于任務的向量可以進一步提高性能。此外,作者還建議對體系結構進行簡單的修改,以允許使用特定于任務的向量和靜態向量。本文所討論的CNN模型改進了7項任務中的4項,包括情緒分析和問題分類。
模型介紹:
用一張釋義更明確的圖來講解該模型的結構:
感想和體會
自己的收獲
通過本學期對該課程的學習,讓我印象最深的就是王老師這種授課模式。總共八次課,前六次每次的專題都不一樣,由不同的老師來講解。然后讓我們自己去頂會找一篇論文來閱讀理解,最后兩次課由我們上臺匯報自己所學所看。因為準備跟著導師做的課題是密碼分析。在六次講座中,其中一個老師說的量子密碼,一個老師講的是基于深度學習的密碼分析與設計。我對這兩個專題講座很是感興趣。在之前,我對密碼分析的認識很片面,將密碼分析分為以下五種情形:
(1)惟密文攻擊(Ciphertext only)
對于這種形式的密碼分析,破譯者已知的東西只有兩樣:加密算法、待破譯的密文。
(2)已知明文攻擊(Known plaintext)
在已知明文攻擊中,破譯者已知的東西包括:加密算法和經密鑰加密形成的一個或多個明文—密文對,即知道一定數量的密文和對應的明文。
(3)選擇明文攻擊(Chosen plaintext)
選擇明文攻擊的破譯者除了知道加密算法外,他還可以選定明文消息,并可以知道對應的加密得到的密文,即知道選擇的明文和對應的密文。例如,公鑰密碼體制中,攻擊者可以利用公鑰加密他任意選定的明文,這種攻擊就是選擇明文攻擊。
(4) 選擇密文攻擊(Chosen ciphertext)
與選擇明文攻擊相對應,破譯者除了知道加密算法外,還包括他自己選定的密文和對應的、已解密的原文,即知道選擇的密文和對應的明文。
(5)選擇文本攻擊(Chosen text)
選擇文本攻擊是選擇明文攻擊與選擇密文攻擊的結合。破譯者已知的東西包括:加密算法、由密碼破譯者選擇的明文消息和它對應的密文,以及由密碼破譯者選擇的猜測性密文和它對應的已破譯的明文。
金鑫老師生動給我們上了一課,基于深度學習的密碼分析與設計。通過那次課發現自己要提高的東西太多,如英語水平,數學基礎,密碼學知識儲備,查閱文獻資料,搜索資料的能力。我想王老師最后兩次課讓我們自己去學習頂會論文,自己去理解論文,代碼復現,意圖就是為了我們提前做好準備,提前接觸頂會論文,對大牛發的論文,對自己感興趣的研究方向上有一定的認識,為我們研二做項目寫論文提前做準備,到那個時候不會無處下手。
自己需要改進的地方
課程的前半部分往往比較認真,隨著課程深入,其他課程的任務比較重,可能投入的認真程度有一定下降。就是認真努力地程度還有待提高,與自己的目標的還有很大的距離,不能把零碎的時間用來學習,學習的效率沒有達到理想的狀態。
對本課程的建議和意見
首先,老師這種教學方式很新穎,第一次一門課程由六個老師來講解。我認為這樣很好,六個老師有六個不同的上課風格,總有一款適合學生。我覺得老師每次讓我們就一個專題學習后寫一篇博客,這樣可以讓我們對專題知識點的總結,可以起到一定的記憶和回顧作用。但是我認為最好的作業應該由上課的老師來布置,比如有的知識就需要實踐跑代碼的等等。而且每次由不同的老師來布置,其風格和老師上課的風格必然是一致的,這樣會讓作業更加新穎,不會那么單調枯燥。另外我認為授課老師應該多加強與學生的互動。不同的學生的專業、興趣、愛好都是不一樣的。所以最后一次的論文理解與代碼復現我覺得范圍可以放的更大一點,可以由學生自己的研究方向來定,這樣應該會理解的更透徹一點,更明白一點。
轉載于:https://www.cnblogs.com/zhengli-5520/p/10993261.html
總結
以上是生活随笔為你收集整理的20189216 2018-2019-2 《密码与安全新技术专题》课程总结报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言的积木编程,c语言入门第3节,掌握
- 下一篇: ABAP 培训