Saturday, December 5, 2009, 12:03 am
微軟為了解決長久以來困擾 Windows 用戶的保安問題,在 Vista 裏加入了所謂的 UAC – User Account Control。簡單來說,程式如果要用到系統管理員才能用到的 API,例如更改系統設定,安裝程式,系統維護,設定防火牆等等,都必須經過 UAC 向使用者取得確認,那就是在螢幕上顯示詢問,「你要讓這程式更改系統設定嗎?拒絕還是接受」使用者要按「接受」才能讓程式繼續執行。
但是,由於牽涉過多 API,程式的流程裏就可能要用上十多次 UAC,反而麻煩了使用者。隔壁的蘋果也不忘在廣告挖苦對方一番,在廣告中 PC 連跟 Mac 說句話也得要身旁的保鏢批准。雖然現實沒麻煩到這個程度,但也夠擾人了。雖然微軟在 SP1 及後來推出的 Windows 7 大量減少詢問出現的次數,不過有時會因 API 的問題令某些程式不能執行。
其實,root cause 不是微軟 NT 架構不夠安全,而是其使用者和程式開發人員的不配合。Windows 曾經有兩大品種,其一是繼承 Windows 3.1 血統的 9x 系列,另一邊則是來自 Windows NT 4 的 NT 核心。9x 系列至末代 Me 都沒有多用戶的概念,作業系統僅設計讓同一人執行,程式亦 assume 執行者擁有更改電腦任何設定的權利。所以當微軟準備將兩系整合成家用商用皆宜的 XP,便曾考慮過將預設帳戶預訂為沒管理員權限的普通使用者。奈何很多來自 9x 系統那邊的程式都因為 API 大受限制停止運作,所以方案就此作罷。
在平衡兼容性和保安問題兩大因素,才出現了 UAC 這四不像。對比 *NIX 的 sudo,UAC 是跟軟件兼容妥協下的產物。UAC 除了影響正常操作外,也對保安沒甚麼助益。用戶遇著上千百萬個詢問視窗,難免養成一種不管內容是甚麼都按 “Yes”,”Allow” 的反射行為,不論是菜鳥還是資深用家也是如此。有些用戶嫌麻煩更索性關掉。即使 Vista SP1/Win7 已大大減少這類視窗出現次數,但這亦無補於事。
要改變這個死局,微軟不是跑去改善 UAC 的 User Experience,而是應該協助使用者洗脫惡習,戒除凡事每每用 admin 權限的習慣。既然也著手增強保安加入了 UAC 這擾人之物,何不徹底改革,將 admin right 改成如非必要不能動的帳戶?
我媽的電腦便是如此。她也是染上了「按 Yes/Allow/Next 準沒錯」的普通用戶,也許由於這樣她以前的電腦積滿了不少不明來歷的怪軟件。為她安裝新電腦我便做了個小實驗,將她要用的軟件裝好,再將她的帳戶降格為普通用戶。這樣我至少不用再為奇怪的軟件煩惱,她要安裝真的有用的軟件,也只要我幫她 Run as Admin – 也就是 Windows 的 sudo,就能解決。
顯然把 OS X/Linux 的一套學習過來套用明明就沒問題,但箇中有甚麼原因令視窗出現了 UAC,則不得而知。
Thursday, May 15, 2008, 12:09 pm
本來昨天就打算說一下的了,無奈網頁寄存的資料庫好像有點問題,一整天都發不了文章。
言歸正傳。Linux 系統尤以安全見稱,但是昨天從 Debian Linux 團隊中傳出一個駭人聽聞的消息。兩年前由於一些人為的錯誤,用於產生密匙(Private Key) 的亂數產生器不小心被移除了。
很簡略的解釋一下。在現代加密技術裡,混亂性是決定加密資料的安全性的一項重要因素。就好像銀行會要求客戶的帳戶密碼非常難猜,最好跟自己沒有關係,以免被不法之徒撞破。電腦加密原理都差不多,不過製作密碼則交由電腦程式去負責。在使用者要求產生密匙(一串長到你不會記得住的數字)的時候,程式會使用亂數產生器弄一個隨機數。以後要加密文件的時候,電腦便會將這串數字和要加密的文件丟到演算法裡面,結果便是加密了的文件。
這一次的問題,就是最近有人發現這個亂數產生器在兩年前不小心被除掉。換而言之,有心人都可以很容易「猜」到這兩年來由 Debian OpenSSL 程式庫亂數產生器系統所產生的密碼,包括 SSL 證書,SSH 鑰匙等等。
令人震驚的是,負責程式碼維護的工作者居然可以這樣的不小心,而且這問題居然可以一直存在兩年而沒有被察覺。有人半開玩笑的質問那傢伙是不是來自微軟的間諜,此外這事更引發一場「開源是否真的安全」的討論。
如果你像我一樣曾經使用 Debian/Ubuntu 產生密匙用作無密碼自動登入,也許是時候重新整理一下那堆密匙了。
Wednesday, February 6, 2008, 1:10 am
要在網絡上做一些可能會被抓的行為,不論是被警察還是秘密邪惡組織也好,請先隱藏好你的 IP。例如用公用代理伺服器呀,洋蔥路由器 等等。
硬碟裏有重要,見光即死的檔案,請使用加密軟件,以免外洩。我推薦 TrueCrypt 。TrueCrypt 還提供偽裝空間功能,即使被對方嚴刑拷打迫出密碼,也可以以假密碼混過去。
只光顧一個你信任的電腦維修服務供應商。電腦離開自己身邊之前,請好好檢查和處理電腦上的個人資料。
Friday, December 14, 2007, 11:26 pm
也不是這幾天的新聞,OpenID Foundation 終於正式公佈 OpenID 2.0 的規格,也已有一系列的程式庫跟 OpenID 服務供應商宣佈支援新規格,包括比較流行的 JanRain PHP Library 和 MyOpenID 。
在普通用家角度來說,這更新有甚麼意義呢?OpenID Foundation還同時公佈了交換個人資料的協定規格 ,除了可以讓服務提供的第三方向 OpenID 提供者要求更多樣化的使用者資訊,更可以將用戶儲存於服務商的資訊回傳到 OpenID 提供者。比方說,只要在以 OpenID 登記過的相片網站設定好頭像,這頭像設定也會隨著你的 OpenID 四處走。用戶也可以在 OpenID 提供者直接修改資料,讓所有網站一同更新。
另一方面,變動也便利開發者不少。首先協定將資料由 GET 改以 POST 傳送,令傳送資料的大小不再受限制。加密和公開鑰匙交換的演算法也增加了,狀況允許下可以提供用戶更安全的保障。新規格也支援 Yadis 指定 OpenID 的供應商通訊端,是除 HTML 以外的選擇。
順帶一提,如果 OpenID 供應商支援 OpenID 2.0,大家又使用網址委任(好像我就是使用 MyOpenID 為供應商,但以自己的網誌地址當 OpenID) 的話,記緊要在首頁加上兩個新的 tag ,讓第三方能識別你的 OpenID 支援 2.0 的通訊協定。
延伸閱讀:
OpenID 2.0…Final(ly)!
淺談 OpenID
Wednesday, November 21, 2007, 10:16 pm
自從 AOL 把免費防毒服務的供應商由 Kaspersky 轉為 McAfee 以後,應該也會有很多人跟我一樣把 AVS 這種便宜高質素的東西移除,另覓免費的防毒吧?我卻又沒想過買一套回來,從不法途徑拿一套風險又太大,畢竟這是保衛家園的看門犬,絕對馬虎不得。
最後選了 AntiVir 的免費版本,希望效果會比 AVG 來得好吧。
不過用了 AntiVir 有點不習慣,因為它不時彈出完全版的推銷廣告視窗,有一次還把我從 Team Fortress 2 的全螢幕趕了出來。更新視窗也是彈出式的,用字還引起了我對垃圾電郵的聯想…
Tuesday, April 17, 2007, 1:20 am
wpopenid+ 原是由 wpopenid 分支出來的插件,同樣讓 WordPress 支援以 OpenID 留言,以及將帳戶連結至現有 OpenID。不過,wopenid+ 比 wopenid 優勝的地方,除了除掉幾隻蟲以外,還加入了不少新功能。例如讓留言的網址欄跟 OpenID 結合啦,顯示留言用家的全名(不是只是 OpenID URL),可以在 OpenID 伺服器支援 SREG 的情況下使用留言者提供的電郵等等。
原本真的有點技巧想寫一下的,不過在上一篇文章寫了以後才發現 wpopenid+ 的作者在 svn 發佈了新版,加入了不用為留言者開設帳戶的功能(以往來留言的插件便會自動產生一個新帳戶,他們也可以直接走進去瀏覽 dashboard,感覺怪怪的),所以再也不用繁複的修改步驟啦。
Saturday, April 14, 2007, 4:57 pm
約略說一下。
OpenID 是一套開放的分散式認證系統。傳統中央化的驗證系統,使用者的資料,例如用戶名稱,密碼等等也是存放到跟應用程式同一個地方,用戶如果要到另一個網站登入,便必須再註冊另一個帳戶,非常不方便。現在互聯網大部份網站便是如此。
於是有人想到了單次登入(Single Sign-On, SSO) 這個構思。最普及的單次登入系統非微軟的 Passport (Windows Live ID) 莫屬。只需要一組帳戶,登入後即可使用所有微軟的服務,好像 Spaces,Messenger,Mail 等等。Yahoo! 跟 Google 也有類似系統,不過這些現成系統的缺點還是他們之間不能共通:你不可以拿 Google 的帳戶登入 Yahoo! 的服務。同樣,登入了 Yahoo! 網站到 Microsoft 的網站還得要輸入 Live ID 這邊的帳戶名稱及密碼,還是夠麻煩的。
所以才會有 OpenID 的出現。OpenID 的儲存帳戶的地方(身份伺服器)是分散的:在這個系統裏,每個人也可以有自己的伺服器儲存自己的用戶資料,不再只限於服務提供者。一個 OpenID 帳戶的擁有人如果要登入某個支援 OpenID 的網站,步驟如以下這樣:(我們把 A 當成服務提供者,B 是認證伺服器,C 則是帳戶擁有者)
C 要登入網站 A,提供了一個由 C 自己擁有(或由 B 提供) 的 URL 給 A。
A 透過那條 URL 提供的資料找到 B。這時候 A 會把用戶 C 轉址到 B 的登入頁面。
C 輸入了自己的個人密碼給 B。確認正確無誤,B 把驗證資料傳回 A,C 也會被導回至網站 A。
這時候 A 會再跟 B 核對剛才傳過來的驗證資料。
如無大礙,C 便算是成功登入,這時候也許 A 會再跟 C 提供更多註冊資料。
這種做法好處在於:
使用者不用再到處註冊帳戶或登入,一個 URL,世界通行。
使用者可以完全控制自己的個人資料,第三者網站(網站 A) 絕不可能得到使用者的密碼。使用者也可以限制第三者網站可以獲得哪些個人資訊。
打擊冒名留言。在社交網絡上,很多時候使用者(特別是知名的)也會被破壞份子冒名惡意中傷。如果網站留言系統使用了 OpenID,由於每位使用者也會有自己獨一無二的 URL 識別,分辨冒名者和正牌貨變得容易許多。
不過 OpenID 並不是解決所有帳戶問題的靈丹妙藥。例如它不能防止廣告機器人註冊帳戶(雖然暫時還沒看見有這樣的 Robot),也不可以制止使用者使用多個帳戶自問自答(OpenID 是設計成大家可以擁有多個帳戶的)。因為 OpenID 是方便和保障使用者的工具,網站運作者必需透過其他方法保護自己的網站免受侵害。
另外,有些人擔心 OpenID 會成為網絡釣魚者的天堂。只要惡意網站在要求 OpenID 登入時將使用者重導至一個偽造的身份伺服器,向使用者要求帳戶名稱及密碼,即可登入該帳戶擁有的全部服務。不過這個問題基本上跟現時網絡上出現的偽造網站的方法同出一徹,只要使用者細心留意導向的身份伺服器網址是否正確,即可避免帳戶被盜取的問題。(切記:網站絕不會 向你同時索取 OpenID URL 跟密碼。在同一頁面請你打 URL 和密碼的,一定是釣魚網站)
OpenID 自推出以來即獲得不少業界支持,表態支持的有 AOL,VeriSign,Microsoft,Zoomr以及 LiveJournal。其中 AOL,Zoomr 及 LJ 均接受以 OpenID 開設新帳戶,Microsoft 則計劃將 OpenID 與其 CardSpace 技術融合(會不會是 EEE 呢?)。WordPress.com 也提供 OpenID 身份伺服器,可是留言不支援 OpenID 卻真的叫人摸不著頭腦。
怎樣擁有自己的 OpenID?方法有很多,不過簡單來說是這樣:
到其中一個 OpenID 供應商 申請一個 OpenID,或自己架一個 OpenID 伺服器 。(我是自己架一個的)
將以下兩句加到你的個人網址首頁的 HTML <head> 部份:
這兩句的內容因人而異,不過大部份供應商也會在你申請後告訴你。openid.delegate href URL 即是 OpenID 供應商提供給你的網址,openid.server 的 URL 可以到那個 URL,找一下源碼再複製過來 。只要設定好以後,你便可以使用自己的個人網址為帳戶名稱。我的 OpenID URL 便是 mk.netgenes.org。
下一篇說說 WordPress 支援 OpenID 的方法和技巧。
延伸閱讀: