標籤:
事件
事件引爆於9月18日烏雲網公布的一則分析報告:“XCode編譯器裡有鬼 – XCodeGhost樣本分析”,這份純粹的技術分析報告引發中國iOS生態鏈的眾多開發人員的關注。 引起關注的人們對App Store上進行了篩查,結果令人震驚,至少有數十款流行的應用受到感染,其中包括了、網易雲音樂、網易公開課、我叫MT、同花順、南京銀行、南方航空、中信銀行行動卡空間、名片全能王、憤怒的小鳥2等等知名應用,被感染的使用者估計超過1億。
具體的說,這些APP使用了非蘋果官方的,來自網盤等第三方下載平台,存在安全問題的Xcode開發環境。用這個XCode把應用來源程式編譯成可執行檔APP時,APP會被自動添加病毒模組。使用者從App Store下載安裝這樣的APP,手機就會中毒,病毒會偷偷地向作者的伺服器上傳軟體包名、應用程式名稱、系統版本、語言、國家等資訊。幸運的是,此次事件未給公眾造成重大損失,還沒用危及隱私或者帳號密碼等敏感資訊。然而,從技術層面看,這完全是病毒作者的“手下留情”,只要插入的病毒代碼更惡毒一些,他就會獲得超過1億個“肉雞”。
這一事件提示我們,使用數位簽章或者散列(也稱雜湊Hash、摘要Digest)等加密機制,鑒別網上軟體的來源是多麼的重要。
散列值
散列函數(或散列演算法,Hash Function)是從任何長度資料建立小的數字“指紋”的方法。散列將資料打亂混合計算,得到一個稱為散列值的結果。散列值看起來通常是一個短的隨機字母和數字組成的字串。用作校正目的的散列函數是一個“單向”操作:對於給定的散列值,沒有實用的方法可以計算出一個原始輸入,也就是說很難偽造。被廣泛使用的這類散列函數包括MD5,SHA-1,SHA-256等。許多軟體在官網下載頁面上提供了散列值。軟體下載完成後,使用散列工具計算下載到的檔案的散列值,與官網上的散列值(1所示)比對後即可確認所下載的軟體與官網發布的是否完全一致。
圖1 Ubuntu官網給出的安裝光碟片映像散列值
檢驗散列的工具和方法
雖然Windows系統內部廣泛使用MD5、SHA1等常用散列演算法,但是系統並沒有提供一個計算MD5的程式或者命令。網路上有大量的計算散列的軟體可供下載,可以在搜尋引擎上搜尋並參考口碑選擇一個。使用openssl命令計算SHA1散列值的如下。
圖 2 使用openssl命令計算散列值
Linux內建有md5sum, sha1sum這兩個命令。在終端中運行md5sum <filename>,或者sha1sum <filename> 即可得到相應的散列值。
數位簽章
數位簽章就是附加在資料單元上的一些資料,或是對資料單元所作的密碼變換。這種資料或變換允許資料單元的接收者用以確認資料單元的來源和資料單元的完整性並保護資料,防止被人(例如接收者)進行偽造。
數位簽章(Digital Signature)技術是不對稱式加密演算法的典型應用。數位簽章的應用過程是,資料來源發送方使用自己的私密金鑰對資料校正和或其他與資料內容有關的變數進行加密處理,完成對資料的合法“簽名”,資料接收方則利用對方的公開金鑰來解讀收到的“數位簽章”,並將解讀結果用於對資料完整性的檢驗,以確認簽名的合法性。
數位簽章的驗證
Windows環境下,經過了數位簽章的軟體很容易驗證其來源和潔淨性。在檔案屬性對話方塊的“數位簽章”頁中,點擊“詳細資料”,即可檢驗軟體的數位簽章。是對從網盤上下載的android-studio-bundle-135.1740770-windows.exe的數位簽章驗證的結果。
圖2 有效軟體數位簽章
如果軟體被篡改,或者認證被篡改,都會導致簽名的驗證呈現無效的狀態。是使用Hex編輯器人為修改Adobe Reader安裝包之後,檢測數位簽章無效的。
圖3 無效的數位簽章示範
小結
牆的存在,外部官網的可達性和速度是一個難以繞過得現實問題。牆內通過第三方下載平台擷取Android Studio、XCode等開發工具,仍然將是很多人的首選。XCodeGhost事件提醒我們,從第三方渠道下載任何軟體安裝包之後,一定不要忽略檢驗數位簽章,或者比對官網版本的散列值;無法通過驗證的,必須果斷拒之門外。其次,這一事件也與盜版的“黑蘋果”有一定關係,“免費下載”的盜版軟體決不是免費的!
從XCodeGhost事件看軟體來源鑒別的重要性