Android 與 iPhone 的安全性 PK

6月 30th, 2010 由 Nica Leave a reply »

譯者:Nica < nicaliu at gmail dot com >

.
Android 與 iPhone 作業系統 (iOS) 間的爭戰已有一段時間。本文主要是指出它們哪一個擁有較好的安全性模組,能保護它們的使用者。會想寫下來,是因為近來我身邊有相當多的討論聲浪:關於這兩個平台哪個比較安全,而我也會把重點一直放在這上面,反複檢視它們,未來亦將在此更新安全性內容。
聲明與宣告:
A. 因我並非安全性研究人員,也不是專家,所以不保證這篇文章絕對正確,但我對這個領域有興趣,而且從事不同架構與作業系統開發人員一職至今已有段時間,特別是在作業系統/驅動程式這個層級上,以及行動裝置的領域。所以,我其實”也許”在一些觀點上是對的。
B.我本身是 android 使用者,但不是狂熱份子。只要發現了什麼對我來說會更好的,我會很樂意隨時轉換陣營。所有的平台皆有其優缺點,而我使用 android 只是因為『對我而言』它的優點比缺點多了那麼些。
好,下面就是用來指出我想比較的各項目表格,可說明在該項上何者勝出。先別急著跟我說可是…如何如何,看完表格,我會解釋這些觀點。
.
Android iPhone
發佈媒體安全性
核准程序 NA NA
(網路)釣魚 Lose Win
本機安全性
許可權 Win Lose
環境/Sandbox Tie Tie
開放與閉鎖 Slight Win Lose
應用開發模組 Slight Win Lose
損害控制 Tie Tie
摘要 ? ?
1. 發佈媒體安全性:Apple 診斷每個放在 app store 上的應用軟體,但 Google 的 Market Place 則是無限制的。這對你的安全性指標有什麼影響?
a.核准程序:最神奇的說法就是:app store 的核準程序,將能讓你遠離惡意軟體。『並不是!』,Apple 的應用程式核准程序並未明確規定這個,一般來說它只是檢查這個應用程式作的事,是否和它所號稱可以作到的行為一樣而已。它們不會檢查應用程式的原始程式碼,迄今也只能幫你作二進制碼程式的靜態分析 (喔,他們作的不過是把所有成堆的應用一把抓,套上它們的私有api – 這可以輕鬆用很簡單的工具就找出來,如此而已)。所以,真的想寫個惡意軟體的人,事實上可以輕輕鬆鬆地在應用程式被核准之後,把惡意程式碼放進去執行。觸發的方式可以是某個時間,或甚至遠端透過 web 完成。應用軟體可以有加過密的資料流,或需要透過網路下載新的部份程式碼區段才能執行。因此我們可以保守地說:核准程序對你而言是一個無保確保事物安全性的動作。
結論:無人得勝
b.(網路)釣魚:這一點 Apple store 就保護得到了:有人在應用程式的宣告裡,說此程式是來自某個人,但實際上卻不是他時…例如:某人可以作好一個應用程式,然後宣稱是來自於 “Bank of America”。這事發生在 apple 身上,我 99.99% 認為它不會通過篩選,但若發生在 Android 的話,其實不必花太多腦筋就可以讓應用程式直達賣場。不久後的未來 google 可能會發現這件事,進而改善它,但此時此刻,只要有一個人處於這樣的危險狀態下,就高於它會發生於 iPhone 裡的機率了。
結論:iPhone 獲勝
.
2.本機安全性:待應用程式裝在手機裡後,作業系統本身的安全性又該怎麼辦? 這是個很重要的問題,因為:一、我意識到這件事時,Apple 的應用程式篩選程序仍不夠健全到可以抓到惡意軟體。二、人們其實可以很容易就規避官方發送媒體的機制。Android 允許很多手機自其它來源安裝應用程式,只要啟動某個選項就行,而且有極為多數的人皆已破解它們的 iPhone,取得並使用這樣的功能。
a.許可權:Android 裡,應用程式會在被允許安裝之前,清楚聲明它在手機會作的存取與使用的功能/資料,而使用者必須明確同意給予這些權限 – 無論這些要被安裝的應用程式是從哪來、怎麼來的。所以這一點在從你的 SD 卡上安裝應用,甚或已 root 你的手機,一樣適用。iPhone 上就沒有這樣約束應用程式的機制。所有的應用程式都一樣,而且可以無礙存取絕大部份的資源,使用者無須知曉。所以當你只是想裝個遊戲在 android 上玩,應用程式卻要求網路連結功能或要存取你的聯絡人資訊時,你會立刻產生懷疑,但在 iPhone 上你不會知道這些事。
結論:Android 勝。
b.環境:兩種平台上,應用程式皆是帶著單一 uuid 執行於它們自有的 sandboxes 下。
結論:平手。
.
3.開放與閉鎖:大部份 Android 碼皆為開發源碼,反觀 iOS,只有 darwin kernel 與一些像 webkit 的東西是開放源碼的。這個本身來說無法保證 Android 的安全,但它的程式碼確實得到更多人的檢視,包括開放源碼社群,以及許多看中 Android 商機的其它大型企業,此舉令其找到並修正更多臭蟲與小漏洞 – 勝於 iPhone 所能作的。
結論:Android 小勝。
.
4.應用開發模組:大部份給 Android 的應用都是用 java 寫,而給 iPhone 則是用 C/Objective-C。雖然我本身有很長一段時間喜歡用 C (主要是用 C/CPP 寫程式),但它用的其實是一種很不寬容(unforgiving) 的語法,比起 java,你必須更小心地撰寫它,且它被有心人拿來利用的機會也很大,例如透過緩衝區溢載。(有趣的是,所有的 iPhone 作業系統破解,都是利用這樣的手法,而且多半當天或隔天就破解)
結論:Android 小勝
.
5.損害控制:如果應用程式真的拿到你手機平台上的所有的東西,然開開始散布了怎麼辦? 這兩種平台都提供Google/Apple 層面的殺除開關,可以遠端搖控方式,移除手機裡此類惡意程式。【譯者註:Android 上可使用 Lookout 軟體來作】
結論:平手。
.
總結:好,並未出現真正的贏家。Apple 在保護你免於網路釣魚威脅上作得不錯 (不過若你破解並使用替代軟體安裝應用程式,這個優勢就會消失),而 Android 則擁有最實際的本機安全性系統 (但它也是有缺點:使用者並非都能瞭解為什麼應用程式需要用到某個關鍵性的權限,卻還是會安裝它)。所以,選一個吧,然後讓我知道你為何選它,如果上述觀點有不對的地方或疏漏也請讓我知道。
.

Advertisement

6 篇回應

  • At 2010.07.01 10:24, Sophia said:

    寫的真好

    • At 2010.07.01 10:38, Nica said:

      我也覺得這個作者寫的算蠻公平的 ~~~

      • At 2010.08.12 20:53, Calvin said:

        Nica 現在研究這麼深入啊

        • At 2010.08.12 22:17, Nica said:

          我是譯者,不是作者啦

          • At 2011.11.12 23:50, 養羊 said:

            “and have been made available day 0/day 1 mostly”
            指的是通常都被在推出當天或隔天就破解了= =+

            • At 2011.11.13 00:04, Nica said:

              謝謝指導
              馬上更正

            (Required)
            (Required, will not be published)