課程:《密碼與安全新技術專題》javascript
班級: 1892php
姓名: 王子榛html
學號:20189206前端
上課教師:王志強java
Android設備已經成爲市場上的主流產品之一,也帶來了一個充滿活力的應用程序生態系統,經統計Android用戶已經安裝了數百萬個應用程序,這種開放的應用開發環境不只帶來了各式各樣的應用程序,一樣,Android惡意軟件也十分猖獗,常見的有假裝成一個有用的程序,一般經過從新打包合法的應用程序,肆虐,例如,攔截一我的的消息,偷竊,發送presmiumSMS消息等等。linux
爲了解決這種問題,論文針對應用程序審查,Google Play運營Bouncer,這是一種安全服務,能夠靜態掃描應用程序中的已知惡意代碼,而後在Google雲端的模擬環境中執行該操做,以檢測隱藏的惡意行爲。但現存問題是靜態方法不適用於新威脅,而動態問題能夠經過可以對測試環境進行指紋識別的應用程序來識別。程序員
實際上,絕大多數Android惡意軟件都是從新打包的應用程序,通過觀察結果也代表,惡意從新打包的應用程序是Android惡意軟件的支柱。論文提出了一種新穎、高度可擴展的審查機制,用於在一個市場或跨市場上檢測從新包裝的Android惡意軟件————MassVet,爲了檢查新的應用程序,MassVet針對整個市場對其進行了高效的DiffCom分析。web
MassVet首先處理全部的應用程序,包括用於查看結構的數據庫和用於數據庫的數據庫。兩個數據庫都通過排序以支持二進制搜索,並用於審覈提交到市場的新應用程序。考慮一個從新包裝的AngryBird。一旦上載到市場,它首先在預處理階段自動拆解成一個小型表示,從中能夠識別其接口結構和方法。它們的功能(用於視圖,用戶界面,小部件和事件的類型,以及方法,控制流程和代碼)經過計算映射到v核和m核分別是視圖和控制流的幾何中心。應用程序的v-cores首先用於經過二進制搜索查詢數據庫。一旦匹配知足,當存在具備相似的AngryBird用戶界面結構的另外一個應用程序時,將從新打包的應用程序與方法級別的市場上的應用程序進行比較以識別它們的差別。而後自動分析這些不一樣的方法(簡稱差別)以確保它們不是廣告庫而且確實是可疑的,若是是,則向市場報告。當沒有任何東西2時,MassVet繼續尋找方法數據庫中的AngryBird的m核心。若是找到了相似的方法,咱們的方法會嘗試確認包含方法的app確實與提交的AngryBird無關,而且它不是合法的代碼重用。在這種狀況下,MassVet報告認爲是使人感到滿意的。全部這些步驟都是徹底徹底自動化,無需人工干預。算法
特徵提取,將UI結構建模爲視圖,這個視圖是一個有向加權圖,包括應用程序中的全部視圖以及它們之間的導航關係。在這樣的圖上,每一個節點都是一個視圖,其活動小部件的數量做爲其權重,而且鏈接節點的網絡描述了由它們之間的關係。根據其類型的事件,邊緣能夠彼此區分,這樣的視圖能夠有效的描述具備至關複雜的UI結構的APP。sql
對於經過批量審查流程的應用程序,視圖分析首先肯定它是否與市場上已有的應用程序相關。 若是是這樣,將進一步比較這兩個應用程序,以肯定其惡意軟件分析的差別。 不然,將在方法級別針對整個市場檢查應用程序,以嘗試找到與其餘應用程序共享的程序組件。 進一步檢查差別和公共組件以刪除公共代碼重用(庫,示例代碼等)並收集其安全風險的證據。 這種「差別 - 共性」分析由DiffCom模塊執行。 咱們還提供了有效的代碼類似性分析器的實體,並討論了DiffCom的規避。
爲了準備審查,首先經過市場上的全部應用程序,並將其分解爲方法。 刪除公共庫後,預處理模塊分析其代碼,計算各個方法(即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欺騙器來執行受控實驗
四個組件:HackRF One-based前端,Raspberry Pi,便攜式電源和天線。總體機能夠放在一個小盒子裏如上圖所示。
爲了使攻擊更加隱蔽,關鍵是要找到一條模仿真實道路形狀的虛擬路線。這樣,導航指令能夠與物理世界保持一致。另外一個因素是導航系統一般會顯示第一人稱視角,司機沒有看到整個路線,而是關注當前路線和下一個轉彎,這樣會增長攻擊者成功的機會。
如上圖所示,在依靠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中嵌入了標題和過濾器的潛在交叉,導航指示國家統計局被及時觸發。
如今不少企業都在作深度學習,可是高質量模型的訓練須要很是大的標記數據集,好比在視覺領域ImageNet模型的訓練集包含了1400萬個標記圖像,可是小型公司沒有條件訓練這麼大的數據集或者沒法獲得這麼大的數據集。爲了解決上述問題,廣泛的解決方案就是遷移學習:一個小型公司借用大公司預訓練好的模型來完成本身的任務。咱們稱大公司的模型爲「教師模型「,小公司遷移教師模型並加入本身的小數據集進行訓練,獲得屬於本身的高質量模型」學生模型」。
學生模型經過複製教師模型的前N-1層來初始化,並增長了一層全鏈接用於分類,以後使用本身的數據集對學生模型進行訓練,訓練過程當中,前K層是被凍結的,即它們的權重是固定的,只有最後N-K層的權重纔會被更新。前K層之因此在訓練期間要被凍結,是由於這些層的輸出已經表明了學生任務中的有意義的特徵,學生模型能夠直接使用這些特徵,凍結它們能夠下降訓練成本和減小所需的訓練數據集。
根據訓練過程當中被凍結的層數k,能夠把遷移學習分爲如下3中方法:
但遷移學習並不十分安全,由於遷移學習缺少多樣性,用戶只能從不多的教師模型中進行選擇,同一個教師模型可能被不少個公司遷移,攻擊者若是知道了教師模型就能夠攻擊它的全部學生模型。
現有的針對機器學習算法的對抗性攻擊主要有:白盒攻擊和黑盒攻擊
因爲當前模型的默認訪問方式是:教師模型被深度學習服務平臺公開;學生模型離線訓練且不公開。由於論文提出的攻擊方式是對教師模型白盒攻擊,對學生模型黑盒攻擊。攻擊者知道教師模型的內部結構以及全部權重,但不知道學生模型的全部權值和訓練數據集
本文中的攻擊方法:模擬神經元輸出
攻擊目標:把source圖貓誤識別爲target圖狗
攻擊思路:首先將target圖狗輸入到教師模型中,捕獲target圖在教師模型第K層的輸出向量。以後對source圖加入擾動,使得加過擾動的source圖(即對抗樣本)在輸入教師模型後,在第K層產生很是類似的輸出向量。因爲前饋網絡每一層只觀察它的前一層,因此若是咱們的對抗樣本在第K層的輸出向量能夠完美匹配到target圖的相應的輸出向量,那麼不管第K層以後的層的權值如何變化,它都會被誤分類到和target圖相同的標籤。
論文中求解一個有約束的最優化問題來計算擾動。
目標攻擊:將source image x_s 誤分類成target s_t所屬標籤
非目標攻擊:將source image x_s誤分類成任意其餘的source image所屬標籤
論文還提出了3種針對本文攻擊的防護方法,其中最可行的是修改學生模型,更新層權值,肯定一個新的局部最優值,在提供至關的或者更好的分類效果的前提下擴大它和教師模型之間的差別。這又是一個求解有約束的最優化問題,約束是對於每一個訓練集中的x,讓教師模型第K層的輸出向量和學生模型第K層的輸出向量之間的歐氏距離大於一個閾值,在這個前提下,讓預測結果和真實結果的交叉熵損失最小。
未初始化值的使用仍然是C / C ++代碼中的常見錯誤。這不只致使未定義的和一般不指望的行爲,並且還致使信息泄露和其餘安全漏洞。咱們都知道C/C++中的局部變量,在未初始化的狀況下,初值爲隨機值。
以C++中局部變量的初始化和未初始化爲例:
編譯器在編譯的時候針對這兩種狀況會產生兩種符號放在目標文件的符號表中,對於初始化的,叫強符號,未初始化的,叫弱符號。鏈接器在鏈接目標文件的時候,若是遇到兩個重名符號,會有如下處理規則:
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在編譯器級別實現。
本文實現了:
因爲未初始化數據而致使信息泄露的最明顯危險是直接敏感數據的泄露。
現代軟件防護依賴於敏感元數據的保密性,同時,未初始化的值提供了指針公開的豐富資源。
例如地址空間佈局隨機化之類的防護通常取決於指針的保密性,而且因爲一般僅僅隨機化一個及基地址來完成,所以攻擊者僅須要獲取單個指針以徹底抵消保護。這樣的指針能夠是代碼,堆棧或堆指針,而且這些指針一般存儲在棧和堆上,所以未初始化的值錯誤提供了阻止這種信息隱藏所需的指針公開的豐富源。
未初始化數據致使的其餘漏洞容許攻擊者直接劫持控制流。常見的軟件開發的錯誤是:沒法在遇到錯誤時在執行路徑上初始化變量或緩衝區。
有些工具試圖在開發過程當中檢測未初始化變量,而不是試圖減輕未初始化的值錯誤,容許它們由程序員手動校訂。有些工具試圖在開發過程當中檢測它們,而不是試圖減輕未初始化的值錯誤,容許它們由程序員手動校訂。更重要的是,編譯器警告和檢測工具只報告問題,而不是解決問題。 這可能會致使錯誤和危險的錯誤。
函數堆棧幀:在堆棧中爲當前正在運行的函數分配的區域、傳入的參數。返回地址以及函數所用的內部存儲單元都存儲在堆棧幀中。
函數堆棧幀包含局部變量的副本,或具備被忽略的局部變量,同時還包含其餘局部變量和編譯器生成的臨時變量的溢出副本,以及函數參數,幀指針和返回地址。 鑑於堆棧內存的不斷重用,這些幀提供了豐富的敏感數據源。
現代編譯器使用複雜的算法進行寄存器和堆棧幀分配,這種方式減小了內存使用並改善了緩存局部性,但意味着即便在函數調用以前/以後清除寄存器和堆棧幀也不足以免全部潛在的未初始化變量。
當C / C ++程序沒法遵循該語言強加的規則時,會發生未定義的行爲。在咱們討論的環境中,未定義行爲是指在代碼讀取未初始化的堆棧變量或者是未初始化的堆分配。
爲了實現最大數量的優化,特別是在可能從模板和宏擴展的代碼中,並最終被大部分丟棄爲沒法訪問,現代編譯器轉換利用了大規模的未定義的行爲。這樣的轉換能夠將未定義的值(以及所以也未初始化的值)解釋爲使得優化更方便的任何值,即便這使得程序邏輯不一致。
上圖是利用額外的編譯器傳遞,從而增長了必要的初始化
種簡單的初始化方法會致使過多的運行開銷,而咱們系統的一個重要元素是專門的強化分配器。 在許多狀況下,經過利用額外的信息並結合咱們的編譯器工具,能夠避免初始化問題。
能夠看到編譯器在得到C/C++文件後,編譯器前端將源文件轉換爲中間語言(IR),經過初始化、代碼優化結合現存編譯器的優化器,以後經過無效數據消除、強化分配器最後得到二進制文件。Safeinit在整個過程當中所添加的就是 初始化所有變量、優化以及強化分配器,來避免或緩解未初始化值。
表I提供了每一個基準測試的allocas數量(表示局部變量的數量,偶爾的參數副本或動態分配)的詳細信息。 該表還提供了(剝離的)二進制大小; 在許多狀況下,初始化的影響對最終的二進制大小沒有任何影響,而且在最壞的狀況下它是最小的。#INITS是現有編譯器優化以後剩餘的大量初始化數量,而且咱們的優化器已經分別運行。
因爲Linux內核執行本身的內存管理,所以它不會與用戶空間強化分配器連接; 咱們的自動加固僅保護局部變量。
下表提供了使用內核微基準測試工具LMbench的典型系統調用的延遲和帶寬選擇。 咱們運行了每一個基準測試10次,每次運行的預熱時間很短,迭代次數不少(100次),並提供中位數結果。 TCP鏈接是localhost,其餘參數是默認LMbench腳本使用的參數。
本文經過在clang/LLVM編譯器架構上,經過修改代碼,實現了safeinit原型,在編譯C/C++源代碼時,傳遞一個標記便可使用safeinit實現優化編譯,緩解未定義變量。使用了強化分配器的safeinit能夠進一步優化代碼的同時,保證全部須要初始化的變量進行初始化,刪除多餘初始化代碼進行優化,這樣既保證緩解了未定義變量漏洞的威脅,同時與其餘現有方法相比,提高了性能。
在本文中,做者對線性迴歸模型進行了第一次中毒攻擊的系統研究及其對策。在中毒攻擊中,攻擊者故意影響訓練數據以操縱預測模型的結果。做者提出了一個專門爲線性迴歸設計的理論基礎優化框架,並展現了它在一系列數據集和模型上的有效性。隨着愈來愈多具備巨大社會影響的應用程序依賴於機器學習來實現自動化決策,已經出現了一些關於機器學習算法引入的潛在漏洞的擔心。複雜的攻擊者有強烈的動機來操縱機器學習算法生成的結果和模型來實現他們的目標。
在此考慮設置中毒攻擊,其中攻擊者在訓練過程當中注入少許損壞的點。此類中毒攻擊已經在蠕蟲簽名生成被實際證實,垃圾郵件過濾器,DoS攻擊檢測,PDF惡意軟件分類 ,手寫體數字識別 ,和情緒分析。
上圖中,分爲三個階段
因爲這些攻擊最初是在分類問題的背景下提出的,所以攻擊樣本的類標籤被任意初始化,而後在優化過程當中保持固定(回想一下ÿ是分類中的分類變量)。正如做者將在本工做的其他部分中展現的那樣,做者在此提出的對當前攻擊推導的重大改進是同時優化每一箇中毒點的響應變量及其特徵值。做者隨後重點介紹了在基於梯度的優化過程當中如何更新每一箇中毒樣本的一些理論看法。這將致使做者在Sect中提出更快的攻擊。它只利用數據的某些統計特性,而且只須要對目標模型進行最小的黑盒訪問。
描述了針對中毒攻擊的現有防護建議,並解釋了爲何它們在訓練數據中的對抗性腐敗中可能無效。提出了一種名爲TRIM的新方法,專門用於加強針對一系列中毒攻擊的魯棒性。
全部這些方法都具備可證實的魯棒性保證,但它們所依賴的假設在實踐中一般並不使人滿意。
做者在四臺32核Intel(R)Xeon(R)CPU E5-2440 v2 @ 1.90GHz機器上進行了實驗。做者將基於優化的攻擊實現並行化,以利用多核功能。做者使用標準的交叉驗證方法將數據集分紅1/3用於訓練,1/3用於測試,1/3用於驗證,並將結果報告爲5次運行的平均值。做者使用兩個主要指標來評估做者的算法:MSE用於攻擊和防護的有效性,以及運行時間的成本。
哪一種優化策略對於中毒迴歸最有效?
優化和統計攻擊如何在有效性和性能方面進行比較?
在實際應用中中毒的潛在危害是什麼?
做者的攻擊的可轉移性屬性是什麼?
防護算法評估
使用卷積神經網絡對句子進行分類的緣由:
文章中使用的數據集包括
本文實現的CNN模型及其變體在不一樣的數據集上和前人方法的比較:
老師經過例子向咱們介紹了web安全的重要性,同時介紹了常見的web漏洞以及隱私安全。
因爲程序中對用戶輸入檢查不嚴格,用戶能夠提交一段數 據庫查詢代碼,根據程序返回的結果,得到某些他想得知 的數據,這就是所謂的SQL Injection,即SQL注入。
惡意攻擊者往Web頁面裏插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的html代碼會被執行,從而達到惡意攻擊用戶的特殊目的。
XSS, 即爲(Cross Site Scripting), 中文名爲跨站腳本, 是發生在目標用戶的瀏覽器層面上的,當渲染DOM樹的過程成發生了不在預期內執行的JS代碼時,就發生了XSS攻擊。
跨站腳本的重點不在‘跨站’上,而在於‘腳本’上。大多數XSS攻擊的主要方式是嵌入一段遠程或者第三方域上的JS代碼。其實是在目標網站的做用域下執行了這段js代碼。
分類
CSRF(Cross-site request forgery)跨站請求僞造 。
攻擊者盜用了你的身份,以你的名義發送惡意請求。CSRF可以 作的事情包括:以你名義發送郵件,發消息,盜取你的帳號, 甚至於購買商品,虛擬貨幣轉帳......形成的問題包括:我的隱私 泄露以及財產安全。
解析漏洞就是web容器將其餘格式的文件解析爲可執行腳本語言,攻擊者能夠利用這個特徵去執行一些攻擊行爲。
弱口令(weak password) 沒有嚴格和準確的定義,一般認爲容易被別人(他們有可能對你很瞭解)猜想到或被破解工具破解的口令均爲弱口令。
弱口令指的是僅包含簡單數字和字母的口令,例如「123」、 「abc」等,由於這樣的口令很容易被別人破解,從而使用戶的計 算機面臨風險,所以不推薦用戶使用。
結合 量子祕鑰的不可竊聽性和一次一密的不可破譯性 實現 無條件安全的保密通訊。
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',保證正確率可以保持在一個較高的水平,這就是我根據老師上的的理解,只是比較淺的理解,在之後的學習中繼續加深我對機器學習的理解。
密碼分析與機器學習之間有自然的類似性,在密碼分析中,攻擊者試圖經過推算出密鑰來破解密碼系統。解密函數是從一個由密鑰索引的已知函數空間(解空間)求解出。攻擊者的目的是發現解密函數的精確解。若是攻擊者可以獲取多個獲取密文與明文配對來進行密碼分析,其與機器學習的概念類似:機器學習的研究人員也是試圖從多個樣本與標籤配對來進行機器學習模型的求解(訓練)。因此能夠將兩者進行結合,研究利用機器學習如何進行密碼分析。
深度學習是機器學習中一種基於對數據進行表徵學習的方法。觀測值(例如一幅圖像)能夠使用多種方式來表示,如每一個像素強度值的向量,或者更抽象地表示成一系列邊、特定形狀的區域等。而使用某些特定的表示方法更容易從實例中學習任務(例如,人臉識別或面部表情識別)。深度學習的好處是用非監督式或半監督式的特徵學習和分層特徵提取高效算法來替代手工獲取特徵。
深度學習是屬於機器學習中的一個分支,度學習技術掀起了人工智能研究與應用的新一輪浪潮,深度學習技術在多個方面取得了較大突破,其在人工智能系統中所佔的比例日趨增大,已經應用於多項實際場景業務系統中。
深度學習與密碼分析能夠分爲如下四類:
基於生成對抗網絡的口令破解
對抗網絡
生成式對抗網絡(GAN, Generative Adversarial Networks )是一種深度學習模型,是近年來複雜分佈上無監督學習最具前景的方法之一。模型經過框架中(至少)兩個模塊:生成模型(Generative Model)和判別模型(Discriminative Model)的互相博弈學習產生至關好的輸出。
基於深度神經網絡的密碼基元識別
隨着加密算法的複雜性以及祕鑰長度的增長,明文破譯的難度也隨之增長,發展不如其餘方面那麼好,基於深度神經網絡的密碼基元能夠識別出加密所使用的的算法。
密碼分析在深度學習領域的發展會隨着量子技術的出現而阻礙,因爲量子技術對於離散對數、整數分解的公鑰密碼體制將被快速攻破,意味着網絡信息系統再也不安全。「組件化可變密碼算法設計與安全性評估」,「密文可編程數據安全存儲與計算」,兩大問題是解決如今密碼技術收到威脅的方法。所以,設計更爲安全的密碼算法是現在更爲重要的課題。
對於新密碼算法的設計需求將與日俱增,但目前人工設計密碼算法耗時耗力,難以適應將來密碼算法設計的需求,咱們提出————讓機器自動設計密碼算法
基本步驟
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)
選擇信道高維隱寫分析特徵,如下是其發展歷程:
每一位全部者(A)利用他的私鑰對前一次交易T1和下一位全部者(B)的公鑰(俗稱:地址)簽署一個隨機散列的數字簽名, A將此數據簽名製做爲交易單T2並將其(交易單T2)廣播全網,電子貨幣就發送給了下一位全部者。
【注意】前一次交易是指 這裏比特幣是如何到達如今這位用戶手中的,前一份表單。
特色:
驗證交易:
比特幣網絡中,數據以文件的形式被永久記錄,被稱之爲區塊(Block)。
許多的區塊構成了區塊鏈,Block之間以雙向鏈表的方式連接起來,而且每一個Block都會保存其上一個Block的Hash值,只有一個Block沒有上一個節點,即創世Block。Block有不少份, 每一個Block只記錄比特幣全網10分鐘內的交易信息,每約10分鐘產生一個新的Block。產生Block的過程,也被稱爲「挖礦」。
工做量證實系統主要特徵是客戶端須要作必定難度的工做得出一個結果,驗證方卻很容易經過結果來檢查出客戶端是否是作了相應的工做。下圖表示的是工做量證實的流程:
從圖中能夠看到,主要應用場景在:二進制程序函數識別、函數類似性檢測、測試輸入生成、測試輸入篩選、路徑約束求解、漏洞程序篩選、源代碼漏洞點預測。
二進制程序函數識別是二進制分析的基礎,對於軟件漏洞分析與修復,甚至惡意軟件檢測、協議逆向等都相當重要。因爲二進制代碼缺乏高級語言程序中的信息,函數的識別每每比較困難,現有的反彙編分析工具具備識別正確率低的缺陷。
在軟件漏洞挖掘中,構造代碼覆蓋率高或脆弱性導向型的測試輸入能提升漏洞挖掘的效率和針對性,利用機器學習知道生成更高質量的測試輸入樣本。Godefroid等首次把模糊測試中的高結構化樣本生成問題轉換成了NLP領域的文本生成問題。接下來不斷提出了深度神經網絡指導磨合測試輸入樣本。
模糊測試,特別是代碼覆蓋率指導的模糊測試,側重於篩選能夠覆蓋新路徑的樣本爲種子文件,但對種子文件變異時並無充分利用程序數據流等信息指導變異,這使得變異盲目低效,生成樣本冗餘。
具有路徑約束求解能力是符號執行比模糊測試等漏洞挖掘技術更先進的體現,也使得符號執行在理論上具有了系統性探索程序執行路徑的能力。
但約束求解也存在着路徑爆炸,效率較低等問題。Chen等提出了Angora,採用污點追蹤測試輸入中影響條件分支的字節,而後使用梯度降低的方式對變異後生成的路徑約束進行求解。
時間老是過得飛快,而本學期認真地說,這門課是讓我獲益最大的兩門課之一,特別是每一次的講座,不一樣的老師有本身不一樣的方向,邀請這些老師進行分享是一件很是有意義的事情,咱們不瞭解的能夠向老師請教,同時,也能夠經過老師的分享,學習和了解在這個方向如何有效學習、最新的研究都涉及哪些方面等等。
從這門課中,最令我受益不淺的應該是頂會論文的學習,以往可能更多會關注中文論文,以爲英文論文本身也看不懂;並且,也學會了如何查找某一領域內的頂會論文,從這些大神的論文中,學習到的更可能是邏輯思惟,寫論文的方式,層層遞進的寫做手法,可能有些內容或公式我看不太懂,可是有些研究成果然的十分新穎。
如今不少技術均可以和密碼學相結合,交叉學科纔是將來發展的方向,綜合應用本身所學知識,並不斷探索新的領域,這門課也是在幫咱們拓寬視野,拓寬思路,解決問題的方法並非單一的,更重要的是關注解決問題的過程,就像前面每次課的總結博客,尋找問題的答案並解決的過程是一個使人快樂的過程,總結出來本身的收穫才更有意義。
這門課不只僅是在和老師學習,同時也是在和同窗們學習,特別是頂會論文復現的時候,我十分佩服各組同窗的學習能力,能在短短几周內研究透頂會論文並復現,並且不少同窗的PPT作的十分有邏輯,也是我往後要增強的方面。
致謝!(`・ω・´)ゞ(`・ω・´)ゞ