Thursday, December 31, 2009

もしもスクウェア・エニックスがスーパーマリオを作ったら

這是最近在日本網路上流傳的コピペ,我覺得很傳神地描寫了現在的SQUARENIX,譯之。

---

20xx年 どういうわけかスクウェア版のマリオが開発される事になった
20xx年,因為種種理由,新版瑪莉歐遊戲變成由SQUARE ENIX製作。

A 「えーと。いまさら説明するまでもないと思いますが、マリオの簡単なストーリーをお話します。えー……平和なキノコ王国がカメ一族に侵略され……」
A 「雖然應該沒有人不知道,我還是先來說一下瑪莉歐的故事背景。……和平的蘑菇王國遭到烏龜一族的侵略……」

野村 「うーん。Aちゃんさあ。キノコ王国じゃ余りに平凡じゃない?」
野村 「唔……小A啊,蘑菇王國聽起來會不會太平凡了點?」

A 「はい?」
A 「嗯?」

野村 「サンクチュリアス・オヴ・マッシュルムスでどう?」
野村 「改成『SANCTUARY OF MUSHROOM』如何?」

鳥山 「ですね」
鳥山 「就是啊」

野村 「それとカメ一族だけど、僕の解釈だとあれはカメじゃないんだよね」
野村 「還有那個烏龜族,以我的詮釋來說,那個並不是龜殼」

A 「は?」
A 「啥?」

野村 「あれは『殻』なんだよね。自分の殻」
野村 「那個是『殼』啊。自己的殼」

鳥山 「 『殻を背負いし者ども』ね」
鳥山 「也就是『殼的背負者』」

野村 「それと僕の解釈では、あれは侵略じゃないくて『再配置』って呼びたいな。それとね……」
野村 「另外在我看來,那不是侵略,而應該稱為『再配置』。還有就是說……」


一時間後
一小時後


A 「……かりそめの平和に酔いしれる『サンクチュリアス・オヴ・マッシュルムス』は『殻を背負いし者ども』により再配置の危機に瀕していた。しかし、むしろこれを進化の過程と歓迎するものもいた」
A 「……也就是說,沉醉於虛假和平中的『SANCTUARY OF MUSHROOM』王國,面臨了由『殼的背負者』進行『再配置』的危機。但從別的角度來看,這反而應當被視為一種令人欣喜的進化過程」

---

翻譯有稍微加料。

Sunday, December 27, 2009

如何保護自己的作業系統不被惡意軟體感染

有時候我會訝異於有這麼多人苦於電腦病毒與木馬(以下通稱惡意軟體),就我看來這種問題解法很清楚,只要遵守一定原則,電腦基本上是安全的,現在在等飛機,就來寫寫。

首先我們先來想像一個電腦使用情景

「消費者買來電腦之後,啟動電源後立即可以作業。他只負責用,不用管任何作業系統或軟體的更新。他可以安全地安裝他從任何來源取得的程式,作業系統會發現他安裝的程式的安全問題並自動解決。」

聽起來很簡單也很美好,可惜這是不可能的。問題在哪裡?問題在於電腦不會自動保持安全,你要付出代價來換取安全。甚麼樣的代價?

一種可能的代價是將電腦的能力設下重重限制,並放棄對作業系統的主控權,藉此換取安全,如很多的手機作業系統及Chrome OS,但這樣的作業系統幾乎甚麼都不能作。

另一種可能就是要時間,使用者要花時間來管理系統,確保作業系統及自己資料的安全,這是大多數人需要面對的情況,因為他們需要的是一台功能完整的電腦。我今天來討論在這種情況下,要依循甚麼樣的原則來管理系統。

首先是使用設計上比較安全的作業系統。一般認為世界上最安全的作業系統,是Unix like作業系統,如果會用且沒有相容性的顧慮的話,就該使用這種作業系統。接下來的選擇,是Windows系列。首先是Windows Vista,再來是Windows 7,接著是Windows XP。其他的Windows都不該使用,如果要用的話,要確定他與外界隔離。

選擇一個安全的作業系統,事情就解決了一半。但很多時候作業系統自己不能選擇。而且無論用甚麼作業系統,都一定要保持系統在最新狀態,否則被攻破只是時間問題。

基本上作業系統會出修補,代表那裏有個已知的漏洞,這漏洞既然為人所知,就可以用來寫病毒/木馬,防毒軟體只是無謂爭扎,因為作業系統知道的資訊與擁有的權限永遠高於防毒軟體,若留漏洞在作業系統上,時間一長,被入侵的機率會接近百分之百。

接下來的問題是要保持安全的使用者權限管理。如果是Unix like系統,只要確定root密碼安全就沒有問題,以下是寫給Windows使用者的。

Windows使用者要知道一件事,任何一個程式在作業系統中做任何動作都要權限,我們可以粗略的把它分為兩種,一是使用者權限,一是系統權限。程式有使用者權限,代表可以設定桌布、在你的資料夾中存檔,修改屬於你的檔案。有系統權限,代表它可以安裝程式到Windows資料夾、改寫系統檔案與註冊表、做所有電腦會做的事。

「做所有電腦會做的事」就代表這個程式可以殺掉電腦裡所有的檔案、把你電腦裡的資訊都傳給別人、幫忙攻擊美國國防部、做所有你不希望它做的事。換句話說,病毒/木馬需要系統權限來進行它的工作。

我再講一次,病毒/木馬需要系統權限來進行它的工作。

所有的病毒/木馬要攻擊你的電腦,第一個目標就是拿到系統權限。一旦有了系統權限,它可以開始複製自己,嵌在系統的各個角落,操縱你的防毒軟體,需要上工時執行自己,讓你的電腦成為廣大殭屍網路的一員。

明確區分程式該有的權限,可以讓你的系統安全百倍,Unix like系統之所以先天遠較Windows系統安全,就是因為他一開始就是個多人多工的作業系統,所以從一開始權限就嚴格區分每個人(程式)可以做的事與不能做的事。

如果你容許任何人安裝程式,那系統就不可能是安全的。安裝程式這個動作只應該由有安全概念的管理員,在意識到自己在幹甚麼的情況進行。這是你要確保系統安全必須付出的代價。

即使你覺得再怎麼麻煩,Windows使用者都應該保持使用者權限管理(UAC)開啟,並且避免使用XP,這個簡單的動作可以幫你擋下地球上一半以上的惡意軟體。為甚麼呢?事情是這樣的:

在XP下面的程式,比方說你從網路上下載的小程式,點兩下開啟時是以使用者權限開啟的,然而當程式作者(或是惡意軟體作者)覺得有必要時,他可以自由地提升至系統權限以修改或添加檔案到你的系統中。這些動作是在背後進行的,使用者不會知道,而此時系統已經被感染了。

看懂了嗎?許多的惡意軟體是由使用者自己授權裝進系統的。這不是微軟作業系統寫的爛不爛的問題,這是使用者的問題,當使用者執意要執行不安全的程式時,用任何作業系統都一樣危險。作業系統原則上不會知道那是惡意軟體,這其中沒有魔法,用防毒軟體在這一層過濾是最差最爛的解法。

Windows有了UAC之後,事情其實只有一個小變化:當程式要求提升至系統權限時,Windows要跳出一個視窗告訴你這件事,如果你不認為一個網路上下載的小遊戲應該擁有修改你的系統並把你所有資料洩漏出去的能力,這時候就按取消,Windows會拒絕他的要求。

一般來說,一個程式呼叫越多次UAC,他就越不安全。即使不是惡意軟體,也代表他是寫得很爛的軟體。程式應該只在安裝時,或是做一些真正需要系統權限的動作(比方說讓防毒軟體掃描你的作業系統)才應該要跳出UAC。

總而言之,每當使用者同意UAC時,他就賦予了該程式完全的能力來傷害自己,除非你很確定該程式是安全的,否則按同意前要先想想。

另外要注意的是,Windows Vista的UAC沒有問題,但Windows 7的預設UAC非常的不安全(因為微軟知道大家討厭UAC,所以做了「改良」),如果你在乎安全性,應該要去控制台裡面把UAC設定調到最高。如果還怕有人腦殘亂點,最好去改註冊表,要求UAC要輸入管理員密碼。

下一個原則是要使用來源可靠的程式。即使拿不到系統權限,你開的任何一個程式都還有使用者權限,因此他能做一般使用者能做的所有事。例如砍掉你的檔案,能把你的資料傳出去。他雖然不能修改系統,但仍然能給你巨大損失,因此開任何一個程式都有風險。

使用者該做的事是確保軟體是安全的。如果可以的話,電腦中程式的數量應該越少越好,每多一個程式都是多一分風險。避免盜版軟體,現在有許多惡意軟體是嵌在盜版軟體中放出來的。下載軟體要找原裝的,也就是開發者的網站下載(通常也就是google第一條連結),不要用來路不明的載點,裡面可能被加了料。

如果非要使用一些可能不安全的軟體,可以使用sandbox來避免這些軟體攻擊。所謂使用sandbox,就是用一個隔離的系統來測試與使用部分軟體。現在有許多免費的虛擬機器可以使用,使用者可以在裡面安裝作業系統,然後把有問題的軟體及可能有問題的軟體放在裡面跑。

最後一點是使用防毒軟體。如果前面的原則都能做到的話,你的電腦應該不太可能被惡意軟體侵入。還是不放心的話可以裝個防毒軟體。不過如果做不到的話,裝防毒軟體只是延遲出問題的時間,還可能讓你電腦用的很不快樂。

把前面重點歸納起來

1. 維持系統安全,要付出代價
2. 要使用安全的作業系統
3. 要保持系統及軟體在最新狀態
4. 要有嚴格的權限管理,若使用Windows的話,啟用UAC
5. 只由有知識的人安裝軟體
6. 使用來源可靠的程式,防程式如同防賊
7. 任何一個程式若拿到使用者權限(通常代表你點了他兩下),就可以做所有一般使用者可以做的事,例如砍掉所有屬於你的檔案
8. 任何一個程式若拿到系統權限(通常代表你用Windows XP或你UAC放行),就可以做所有電腦能做的事,例如在系統中嵌入木馬定時回報
9. 使用sandbox來測試或使用可能出問題的程式
10. 使用防毒軟體

今天上課上到這裡。