上個月 (2010/01) VMAX/崴邁司 在台北開台期間,舉辦了一場體驗活動。雖然興致勃勃的去申請了,不過顯然重度使用者不在 VMAX 的規劃範圍之內,因此我並沒有被選到試用。幾位朋友倒是幸運的取得試用資格。

目前 VMAX 提供的 USB WiMAX 網路卡是 TECOM 的 WM5123M-2G5. 網頁上註明只支援 Windows 作業系統。基於好奇的心理,也跟朋友借了網路卡來玩一個禮拜,在北市的古亭、公館一帶試用,上下傳速度都還不錯。

不過自己比較感興趣的是否有 Linux 的驅動程式。稍早的測試是在 Linux 上,透過 VirtualBox 跑 Windows 來連線。實際上並未能在 Linux 上直接使用該網路卡連線。

查了一下知道這款設備使用 GCT 的解決方案,應該是 GDM7205,日本的 MODACOM 也利用此晶片開發了 UD01SS/UD03SS/MW-U2510/BDSS01 等產品。其中 UD01SS 也是日本 UQ WiMAX 搭售的產品之一,在 UQ WiMAX 的產品網頁上,其實也提供 Mac OS 的驅動程式。所以你若使用 Mac OS, 或許可以在此找到可用的驅動程式。

根據我的紀錄,UD01SS 使用的 USB 產品編碼 (vendor id, product id) 為 1076:7f40 或 1076:7f00. 如果開發商/製造商連編碼都懶的改的話,八成驅動程式也可共用。;-) 只是 Connection Manager 不知道能不能讓你認證/連上不同的 ISP 就是。

至於 Linux 下的使用,經過測試已經可以利用 usb_modswitch 來將初始的 ZeroCD (含有 Windows 驅動程式) 模式改為 Network 模式。不過仍缺了連線用得工具與相關的 userland 程式,所以暫時間還是無法使用。

目前開放原碼的 WiMAX 支援,只有 Intel 釋出的 Linux WiMAX Software Stack。其中最重要的用以認證的 Supplicant 暫時還無法是開放原碼。因此若要讓開源社群使用,必要得有 Supplicant 的支援才行。

另外一點,現有 WiMAX 晶片供應商如 Beceem, GCT, Sequans, Runcom 等,據聞所使用的 Driver Software Stack 都大不相同。因此恐怕未來若要整合不同的網路卡驅動程式,會有陣過渡期。

目前社群中,除了 Intel 的驅動程式外。另外一個相對開放原碼的是 Samsung 所製造的網路卡,已有一針對 Samsung 網卡所反組譯的 madWiMAX 軟體計畫。

GCT/TECOM 疑似違反 GPL 授權

另外在追查可能的驅動程式資訊時,macpaul 告知他發現 Winodws 安裝目錄中,包含了一個神秘的 Image 檔案。疑似包含 Linux 核心與相關程式,在驅動時傳到網卡上執行。

手癢稍微追蹤了一下,發現內部的確包含了一組 linux kernel 與一組 cramfs 的 rootfs. 再往裡面翻進去發現 busybox 與一應為處理 OMA-DM 功能的私有軟體。

根據 VMAX 發給消費者的資料中,並沒有任何書面資料或電子檔說明內含 GPL 原始碼一事。相關發現已經先行發至 gpl-violations.orglegal 郵遞論壇。目前對此事件暫無進一步計畫。

大約從 J2SE 1.4/1.6 開始,Sun 所釋出的 Java runtime 開始支援 IPv6 連線功能。一般的 Linux 的套件系統 也開始支援 IPv6,許多系統預設是同時開啟 IPv4/IPv6 或稱為 Dual Stack 網路功能。

基本上,鼓勵各種軟體開始移植到 IPv6 網路上是一件好事。Java runtime 若在 dual-stack 的機器上,預設走 IPv6 位址,因為 IPv6 位址可同時走 IPv4/IPv6 網路。不過問題在於,若一般的 GNU/Linux Debian, Ubuntu 系統,預設會啟動 IPv6 介面,無論你所在網路是否有 IPv6 路由。

於是,你若在 Linux 上使用一些 Java 寫成的網路軟體,如 JDownloader 等,很有可能發生軟體運作後,卻什麽地方都連不上的症狀。解決辦法一是關閉 IPv6 網路功能,一則是利用 JRE 的參數,改為預設使用 IPv4 網路。

檢查 IPv6 是否驅動

首先,你若想確認是否開啟了 IPv6 網路,可於終端機下使用此指令判斷

$ ip addr|grep inet6

若出現了 inet6 之位址,即為開啟了 IPv6 網路。

你若想快速的關閉 IPv6 功能,可以利用 root 執行 ip 指令,直接刪除 inet6 位址

/sbin/ip addr del <ipv6address>/<prefixlength> dev ethX

舊版核心

在舊版核心,IPv6 功能是以模組方式存在,妳可以透過更改 modprobe (module-init-tools) 的設定,讓系統不載入對應驅動程式。關閉的方式很簡單,請修改 /etc/modprobe.d/ 之設定,如以 root 執行以下指令

# cat > /etc/modprobe.d/00local.conf <<EOF
alias net-pf-10 off
alias ipv6 off
EOF

更改之後,重新開機即可關閉 IPv6 功能。

新版核心

在新版的 Debian/Ubuntu 中使用 2.6 核心,因為內建 IPv6 驅動程式, 你得利用開機參數 (cmdline) 關閉之。作法是修改 /etc/default/grub 檔案,更改 GRUB_CMDLINE_LINUX_DEFAULT 一行,加入 ipv6.disable=1,如

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet"

修改完畢後,請用 root 執行 update-grub 後,重新開機。

JRE 參數

另外一項作法是更改 JRE 參數,你若知道啟動該軟體的 shell script 位於何處,可新增一參數如下

$ java -Djava.net.preferIPv4Stack=true Main

這樣就可以要求 JVM 預設使用 IPv4 stack.

這是一篇 Tips.

修訂紀錄 (20100207): 補充利用 iproute 關閉 ipv6 方法,說明新舊版核心處理方式。

一月底開始,一些朋友開始討論 Firefox 3.6 中,將置入 CNNIC 的 CA 憑證。這件事情是去年年底,CNNIC 對 Firefox 申報納入 CNNIC 的憑證 (#476766),目前已於 3.6 版中內建 CNNIC 憑證。

目前此事已經在 Mozilla Security Policy mailing list 公開討論,在華人網路社群也引起一陣騷動。像是 AutoProxy 等社群都提出 CNNIC CA:最最最嚴重安全警告!。在原提案 #476766 中亦有人整理了一些客觀事實。

不過根據我主觀的看法,奉勸所有人盡快移除 CNNIC 相關的 CA 憑證!CNNIC 就是中國網際網路絡信息中心,是一個中國的非營利組織,提供中國網際網路的網域名稱、網段管理。

CA 憑證對於瀏覽器使用者而言,可以用來辨識特定網域是否為合法組織,部份瀏覽器功能甚至依據有否憑證,對網頁開啟進階存取權限。前提是 CA 維持善良管理人義務,嚴格管理所核發的憑證、簽章。

CNNIC 過去最大的爭議即是曾經發布過中文上網官方版軟體,名為提供中文網址導引服務,實質則包含流氓軟體的功能,主要功能是一般輔助上網軟體,但核心卻用 rootkit 技術讓你無法刪除,與木馬/病毒程式一般。雖說這只是一項前科,但是中國政府持續拿著民族主義、國家安全為藉口,實施數種網路管制,甚至滲透國外企業、政府網路,根本是合法的網路流氓。而 CNNIC 背後支持的政府組織是中華人民共和國工業和信息化部中國科學院中國科學院計算機網絡信息中心 等中國政府組織。很難說,哪一天 CNNIC 不會被控制作為攻擊工具之一。

除了 CNNIC 自行發布的 CA Cert Root 外,其實 CNNIC 也已經取得 Entrust.net 所發布的次級憑證。建議所有台灣政府單位,一律移除 CNNIC 相關憑證。

若你覺得此事關係重大,可以以投票方式附議 Bug 542689 – Please Remove “CNNIC ROOT” root certificate from NSS,提高該問題的被重視程度。

跳板風險

其實 Mozilla 先前也曾經遭遇過亂搞的安全憑證公司。原則上,任何人要申請特定網域的簽章,必須提供書面資料,證明你是該網域的擁有者。因為 SSL 憑證一個主要功能是防止釣魚網站欺騙一般消費者,若使用假冒的憑證,使用者很容易就發現網址異常。

若安全憑證公司絲毫不做基本的驗證,任何人都可以申請想仿冒的網域,然後以中間人攻擊 (MITM) 詐騙你交出個人資料。想像,你收到一封 PCHOME 的廣告,連到一個假的網站,這個網站提供了完美的 SSL 憑證,瀏覽器沒有提示你任何異常,除非你刻意去點選確認簽章,否則很自然就會上當。

Mozilla 的事件起因,是有人回報一安全憑證公司透過廣告郵件推銷新的服務。但這個憑證公司的服務卻允許你隨意購買任一網址的簽章,於是你可以購買並假冒任何網站。Eddy Nigg 寫了一份詳盡的說明,當時並做了一個驗證概念的 Mozilla.com 憑證。在事情曝光後,Mozilla 已撤除這組組憑證了。

移除 CA 憑證

驗證方法是開啟 CNNIC 的網址衛士 (使用 Entrust.net) 或 CNNIC 的 ENUM 試驗平台 (使用 CNNIC Root Cert)。若你的瀏覽器絲毫不給警告的就讓你存取,你的系統即已安裝 CNNIC 憑證。

2010-02-23 更新請使用  CertAlert 與 CA Untrustworthy 等工具來移除或警示可疑憑證。

在 GNU/Linux Debian, Ubuntu 上,系統保持一份共用的 CA 憑證,許多網頁工具如 Firefox, curl, wget, Chrome 均共用同一組設定。因此最簡便的方法便是關閉系統上有問題的憑證。

作法是以 root 在終端機內重新設定以下指令

# dpkg-reconfigure ca-certificates

找到 mozilla/Entrust.net_Secure_Server_CA.crt 一列,反選取之,選擇確認即可。或者直接編輯 /etc/ca-certificates.conf,一樣找到此行後,於該行開頭加入驚嘆號 (!),然後重新以 root 執行一次 update-ca-certificates.

另外,你也得到瀏覽器手動刪除原已匯入之憑證。注意,若該筆憑證下方有多筆簽章,你必須刪除全部簽章。見圖

按下 Delete, 重新啟動 Firefox,如此即可移除相關的 CA 憑證,其他瀏覽器需比照辦理。你若使用其他作業系統,請參考 Felix Yan 所整理之 從「受信任的根證書」裡趕走CNNIC

以下補充說明 (20100203):

許多網友認為,即使系統有此憑證,也不至於影響系統。

事實是,若有此憑證,你將被剝奪警覺的能力,像是痛得知覺消失一樣。當攻擊事件發生時,唯一可以主動提示你的 SSL 機制也可能失效。在中國網路長城的「內部網路」,網址被攔截、轉換是很平常的事件,即使你在網外,也可能在網站轉址攻擊事件大規模網頁綁架轉址發生時,變成受害者。

除了網址之外,這份憑證也可用於不同的連線服務加密認證。我並不想因為系統上存有一份無須有的 SSL 憑證,造成我日常認為經加密而安全的 SMTP/IMAP/IM 「可能」偷偷地遭到攔截、擷取資料。而我卻一無所知。

更新 (2010-02-23)

請使用  CertAlert 與 CA Untrustworthy 等工具來移除或警示可疑憑證。

時常,你得將手上的軟體原始碼壓起來釋出給第三方使用、測試。特別是你希望提供 daily basics/ revision basics 讓使用者取得最新版軟體的時候。

由於最近都已經只用 git,依據我自己的習慣,希望能夠在檔名中使用簡碼版次,以便未來能夠追蹤出該版次的問題。稍微問了一下友人與查了一下文件,取得 abbreviated commit hash 的作法如下

git log --pretty=format:"%h" -1

若你想將整份程式碼壓縮起來,可以使用

git archive --format zip -o filename.zip HEAD

倘若想加上日期作為檔名,請使用

git archive --format zip -o $(git log --date=short --pretty=format:"%ad" -1).zip HEAD

若常常使用這個指令,有兩種作法,一是設定為 git alias. 另一則是利用 git 的 commands (verbs) 命名機制,在你的執行路徑 下,寫入一檔案名稱如 git-zip。並將上述指令加入檔案中,未來就可以使用 git zip 來產生最新版壓縮檔。

作法如
$ cat > ~/bin/git-zip
#!/bin/sh
git archive --format zip -o $(git log --pretty=format:"%h" -1).zip HEAD
$ chmod u+x ~/bin/git-zip
$ cd git-repository
$ git zip

另外,為了容易辨識版次,你也可以利用 gitattributes 在程式碼中加入 ident ($Id$) 作為標示。操作可參考 Lloyd Huang 所寫之 Howto.

這是一篇 Tip.

剛讀到這篇 Component Directory Lockdown 新聞時,乍看標題誤以為 Firefox 3.6 中所有的 XPCOM components 都將被閹掉、無法使用了。認真讀了火狐人肉盾牌 (Human Shield) Johnathan Nightingale公告、以及 Vladimir Vukićević詳盡說明,知道關掉的是官方自動載入 Firefox 安裝目錄下的 components 目錄。

其實是為了一些惡搞軟體所下的限制,特別是在 Windows 平台上。許多 Windows 使用者都會安裝一些防毒軟體、輔助工具等等,許多 Windows 上的工具軟體常便宜行事,會偷偷在 Firefox/components 目錄下塞入自己的 XPCOM 元件,藉此置入功能到 Firefox 中。在 Firefox 的設計中,這些 XPCOM 元件都會依照其宣告被自動載入、執行。

問題在於不少軟體的作法都是射後不理,軟體公司常常依照特定版本的 Firefox 開發其 XPCOM 元件,安裝時強制安裝該元件檔案到 Firefox 的 components 目錄,然後就不管了。隨著時間演進,使用者可能會升級 Firefox,結果這些非官方的 XPCOM 元件未被升級,造成相容性問題而使整個瀏覽器當掉。

XPCOM 是設計來接取一些基本的系統資源、或與其他函式庫介接,若是 API 版本不合,不小心會造成當機、安全漏洞或系統損毀。特別是 XPCOM 不同於 Extension,在瀏覽器一執行時就會載入,也不作版本驗證。對於使用者而言,也無法像擴充套件一樣,透過設定介面關掉或移除有問題的外掛。於是使用者很容易就怪罪這個瀏覽器不穩定。

於是,在 Firefox 3.6 中,將只載入寫在 components.list 的官方元件。一般開發者若想使用 XPCOM 元件,應該使用包裝成 extension 的形式,讓系統自動安裝,詳細的技術細節請參考 Mozilla 開發網站

拜讀 David RichardsGnome Boston Summit 2008User Experience Hackfest 所發表的簡報,這份簡報分享了在 Florida 的 Largo 市政府 佈署了五百多台 Debian, Gnome 為基礎的 Thin Clients, 作為政府員工的工作環境。這個系統大約有七百位使用者,平均上線約 300 人。

簡報中概要描述了一些架構與技術細節,像是 Thin Clients 的基礎建設是以 NoMachine 為基礎等,詳情請參考其簡報。論述中提到政府部門的需求,以及從數百名使用者中所習得的關於可用性的經驗。私認為相當值得參考,許多開發者認為簡易方便的功能,對於一般使用者 (average user) 而言可能毫無頭緒。

這裡僅節錄我認為特別有趣的事項,這些是對這群使用者而言可行的軟體設計。

  • 設計一 MIME Helper Bars (Intermediate MIME bar),因為使用者常不知該將檔案置於何處,或是該如何開啟、列印、儲存到桌面或文件夾或編輯。於是 Helper bar 的功能是幫使用者決定預設存在哪裡,或直接列印或寄出郵件,而不需要先開啟 OpenOffice, Evolution 再開啟檔案。
  • 立方體多重視窗。使用者往往不知道該怎麼利用預設的 workspaces 設計,反而透過立體視覺作桌面切換,可以看到自己的軟體視窗浮在不同的桌面上,相較直覺。
  • 單層軟體選單。樹狀選單基本上是行不通的,使用者找不到得點選超過兩次的項目。
  • 透明視窗,讓使用者看到全部的視窗。
  • 詢問對話框 (dialog)。許多軟體設計,會用對話框詢問使用者問題,像是「你是否要寄出此郵件?」等,但這種對話框是浮動的。也就是若你同時開了許多軟體,對話框很容易就被其他視窗蓋住,按掉對話框前原本郵件編輯器就無法使用,這點十分令人困惑。比較好的設計是點選編輯器時,應優先叫出蓋在上面的對話框,或改以其他對話框設計,如嵌入原編輯器中。
  • 以電子郵件寄出功能。這是最常用得功能,可是卻藏在選單或只是一個小按鈕。
  • 自動轉檔後用電子郵件寄出。雖用 OO.o 但是有時寄出文件仍需 PDF or Microsoft Office Word 格式。使用者毫無轉檔頭緒,另存新檔、開啟 Evolution、丟進檔案或用 File Chooser 選、送出,程序太多了。
  • 檔案管理員軟體太複雜了,以檔案系統為導向的設計常困擾使用者。所有的檔案選擇介面應該一致,不要限制「選擇檔案」、「開啟檔案」等,例如你用 OpenOffice 想開啟一 odt, 但使用者選擇一 mp3 檔案,那就開啟 MP3 Player. 應該要有最常用目錄與檔案功能,而且發現常用目錄,應該自動提醒使用者是否要建立捷徑。也應該有最近開啟檔案。
  • 使用者分不清 Keyring 是甚麼。

一些其他的回應與想法已被收錄於 Feedback And Ideas Discussed During City of Largo PresentationQuick Features 一頁。