<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Rex&#039;s blah blah blah</title>
	<atom:link href="http://people.debian.org.tw/~chihchun/feed/" rel="self" type="application/rss+xml" />
	<link>http://people.debian.org.tw/~chihchun</link>
	<description></description>
	<lastBuildDate>Tue, 23 Feb 2010 09:45:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/tw/</creativeCommons:license>		<item>
		<title>CertAlert 與 CA Untrustworthy</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/22/certalert-and-ca-untrustworthy/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/22/certalert-and-ca-untrustworthy/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 12:00:49 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[cnnic]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1857</guid>
		<description><![CDATA[二月初發表了在 Linux 上移除 CNNIC 憑證一文後，受到相當多的文章引用與關注。
原文中，提到移除高風險憑證的作法，但其實我相信很多人弄不懂不同平台的作法，也不清楚所謂 NSS 的機制，沒有清除系統憑證，只是試圖移掉 Firefox 中的驗證。所以很多使用者不知道自己是否真的移除，或是以為移除，重新開啟 Firefox 後，因為 NSS 的設計，憑證又自動建入資料庫中。
依照目前的討論 (#542689, #476766)，Mozilla 應該採無罪推論原則。也就是說雖然 CNNIC 的風評不佳，但在它實際作惡前，我們理因相信它無罪。雖然有一些技術上的提議，希望可以降低憑證管理的問題跟風險，但是這些功能恐怕需要點時間才會實踐。
所以，短時間內，使用者還是得自己做一些設定來自保。但是前文步驟又十分繁雜，我們需要給使用者一個比較簡單的操作措施。
在香港朋友 Benlau、小兔黑黑 的倡議與支持下，我們寫了一個小 Firefox 附加元件，稱為 Cert Alert，這個元件的功能是「自動提醒」使用者，網頁中使用了特定 SSL Root CA 的內容。

這個附加元件採 MPL 1.1 授權釋出。你可以於 Firefox 附加元件網站下載安裝。開發者可於 Github 取得完整程式碼或提供建議。
另外一個值得推薦的是 timdream 所開發的 CA Untrustworthy。這個附加元件的功用是每次開啟 Firefox 時，自動移除或關閉高風險憑證。如此，若瀏覽使用高風險憑證網站時，Firefox 就會提醒你這是未受信任網站，你可以依照 Firefox 的憑證驗證機制來允許或關閉網頁。所以你就不用擔心，是否因為沒有完成移除系統憑證而造成安全問題啦。Tim 的 CA Untrustworthy 亦擺於 Github.
銘謝: Littlebtc 提醒 CertAlert 0.0.4 版前之 MITM [...]]]></description>
			<content:encoded><![CDATA[<p>二月初發表了<a href="http://people.debian.org.tw/~chihchun/2010/02/02/remove-cnnic-cert-on-linux/">在 Linux 上移除 CNNIC 憑證</a>一文後，受到相當多的文章引用與關注。</p>
<p>原文中，提到移除高風險憑證的作法，但其實我相信很多人弄不懂不同平台的作法，也不清楚所謂 <a href="http://www.mozilla.org/projects/security/pki/nss/">NSS</a> 的機制，沒有清除系統憑證，只是試圖移掉 Firefox 中的驗證。所以很多使用者不知道自己是否真的移除，或是以為移除，重新開啟 Firefox 後，因為 NSS 的設計，憑證又自動建入資料庫中。</p>
<p>依照目前的討論 (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=542689">#542689</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=476766">#476766</a>)，Mozilla 應該採<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=476766#c44">無罪</a><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=476766#c51">推論原則</a>。也就是說雖然 CNNIC 的風評不佳，但在它實際作惡前，我們理因相信它無罪。雖然有一些技術上的<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=542689#c94">提議</a>，希望可以降低憑證管理的問題跟風險，但是這些功能恐怕需要點時間才會實踐。</p>
<p>所以，短時間內，使用者還是得自己做一些設定來自保。但是前文<a href="http://people.debian.org.tw/~chihchun/2010/02/02/remove-cnnic-cert-on-linux/">步驟</a>又十分繁雜，我們需要給使用者一個比較簡單的操作措施。</p>
<p>在香港朋友 <a href="http://benlaux.blogspot.com/">Benlau</a>、<a href="http://littleblackrabit.mysinablog.com/">小兔黑黑</a> 的<a href="http://www.plurk.com/p/3p4dfr">倡議與支持</a>下，我們寫了一個小 Firefox 附加元件，稱為 <a href="https://addons.mozilla.org/zh-TW/firefox/addon/83154">Cert Alert</a>，這個元件的功能是「自動提醒」使用者，網頁中使用了特定 SSL Root CA 的內容。</p>
<p><a href="http://people.debian.org.tw/~chihchun/wp-content/uploads/2010/02/certalert.png"><img class="aligncenter size-medium wp-image-1862" title="certalert" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2010/02/certalert-300x278.png" alt="" width="300" height="278" /></a></p>
<p>這個附加元件採 MPL 1.1 授權釋出。你可以於 <a href="https://addons.mozilla.org/zh-TW/firefox/addon/83154">Firefox 附加元件網站</a>下載安裝。開發者可於 <a href="http://github.com/chihchun/certalert">Github</a> 取得完整程式碼或提供建議。</p>
<p>另外一個值得推薦的是 <a href="http://blog.timc.idv.tw/">timdream</a> 所開發的 <a href="https://addons.mozilla.org/zh-TW/firefox/addon/83152">CA Untrustworthy</a>。這個附加元件的功用是每次開啟 Firefox 時，自動移除或關閉高風險憑證。如此，若瀏覽使用高風險憑證網站時，Firefox 就會提醒你這是未受信任網站，你可以依照 Firefox 的憑證驗證機制來允許或關閉網頁。所以你就不用擔心，是否因為沒有完成移除系統憑證而造成安全問題啦。Tim 的 CA Untrustworthy 亦擺於 <a href="http://github.com/timdream/cacertblock">Github</a>.</p>
<p>銘謝: <a href="http://blog.littleb.tc/">Littlebtc</a> 提醒 CertAlert 0.0.4 版前之 <a href="http://twitter.com/littlebtc/status/8917363337">MITM 問題</a>。<br />
備註: 中國朋友亦開發一 <a href="http://code.google.com/p/nocnnic/">NoCNNIC</a> 工具，可移除 Windows 平台的 NSS database 中 CNNIC 憑證。惟只支持 Windows 平台，且必須手動執行才可移除。僅供參考。</p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1857&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/22/certalert-and-ca-untrustworthy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>現在是哪一週？</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/09/what-week-it-is/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/09/what-week-it-is/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 12:00:47 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[lifehacking]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1851</guid>
		<description><![CDATA[為了某些專案的進度追蹤，改成逐周方式確認。在溝通過程中，發現週數老是對不上，原來大家的週數計算方式都不太一樣。我的紙本行事曆跟電腦行事曆也不太一樣。
原來，計算一週之始有好幾種方法，例如

1/1 日開始一定算第一周。
不管 1/1，從一年的第一個星期天開始算第一周。
不管 1/1，從一年的第一個星期一開始算第一周。

像是波斯灣阿拉伯國家是週六開始算第一周，巴基斯坦跟愛沙尼亞是把 1/7 當作一年開始來計算。即便是上述的幾種方式，在同一個國家內也有不同的偏好阿。像我的行事曆就是 1/1 開始當作第一周，而我的電腦則是把週日開始算為第一周。兩個相較起來就差了一週。
在 Linux 上，其實 en_US 跟 zh_TW 兩種不同的語系設定，開始週數是不同的。en_US 使用的是 1/1 開始那周算第一周，而 zh_TW 則是設定成第一個週一是第一周。用 ncal 看起來像是這樣
$ LC_TIME=en_US.UTF8 ncal -w  1 2009
    January 2009
Mo     5 12 19 26
Tu     6 13 20 27
We     7 14 21 [...]]]></description>
			<content:encoded><![CDATA[<p>為了某些專案的進度追蹤，改成逐周方式確認。在溝通過程中，發現週數老是對不上，原來大家的週數計算方式都不太一樣。我的紙本行事曆跟電腦行事曆也不太一樣。</p>
<p>原來，計算一週之始有<a href="http://en.wikipedia.org/wiki/Seven-day_week#Week_numbering">好幾種方法</a>，例如</p>
<ul>
<li>1/1 日開始一定算第一周。</li>
<li>不管 1/1，從一年的第一個星期天開始算第一周。</li>
<li>不管 1/1，從一年的第一個星期一開始算第一周。</li>
</ul>
<p>像是<a href="http://zh.wikipedia.org/zh-tw/%E6%B3%A2%E6%96%AF%E7%81%A3%E9%98%BF%E6%8B%89%E4%BC%AF%E5%9C%8B%E5%AE%B6">波斯灣阿拉伯國家</a>是週六開始算第一周，巴基斯坦跟<a href="http://zh.wikipedia.org/zh-tw/%E7%88%B1%E6%B2%99%E5%B0%BC%E4%BA%9A">愛沙尼亞</a>是把 1/7 當作一年開始來計算。即便是上述的幾種方式，在同一個國家內也有不同的偏好阿。像我的行事曆就是 1/1 開始當作第一周，而我的電腦則是把週日開始算為第一周。兩個相較起來就差了一週。</p>
<p>在 Linux 上，其實 en_US 跟 zh_TW 兩種不同的語系設定，開始週數是不同的。en_US 使用的是 1/1 開始那周算第一周，而 zh_TW 則是設定成第一個週一是第一周。用 ncal 看起來像是這樣</p>
<pre class="code">$ LC_TIME=en_US.UTF8 ncal -w  1 2009
    January 2009
Mo     5 12 19 26
Tu     6 13 20 27
We     7 14 21 28
Th  1  8 15 22 29
Fr  2  9 16 23 30
Sa  3 10 17 24 31
Su  4 11 18 25
    1  2  3  4  5</pre>
<pre class="code">$ LC_TIME=zh_TW.UTF8 ncal -w  1 2009
    一月 2009
一     5 12 19 26
二     6 13 20 27
三     7 14 21 28
四  1  8 15 22 29
五  2  9 16 23 30
六  3 10 17 24 31
日  4 11 18 25
   52  1  2  3  4</pre>
<p>上述的算法，時常造成同一周被定義兩次，他可能是去年的 53 周，又是今年的第 1 周。這樣很容易造成困擾。</p>
<p>為了避免這種糾紛產生，其實有一份 ISO 8601 定義了<a href="http://en.wikipedia.org/wiki/ISO_8601#Week_dates">週數的算法</a>。ISO 8601 除了制定時間字串的格式之外，也定義了<a href="http://en.wikipedia.org/wiki/ISO_week_date">週數的計算方式</a>。規則稍微複雜一點，但是是為了避免一個周被計算兩次。</p>
<p>ISO 8601 的計算方式是</p>
<ul>
<li>包含第一個週四的算第一周。</li>
<li>包含 1/4 的那一週。</li>
<li>第一週超過四天以上。</li>
<li>12/29 後的第一個週一。</li>
</ul>
<p>詳細算法請見 <a href="http://en.wikipedia.org/wiki/ISO_week_date">ISO Week Date</a>。你在 Linux 上，可以用 date 指令查到以下依照週一、週日、ISO 算法的週數</p>
<pre class="code">
$ date +"Sunday %U Monday %W ISO %V" -d '2010-01-01'
Sunday 00 Monday 00 ISO 53
$ date +"Sunday %U Monday %W ISO %V" -d '2010-01-03'
Sunday 01 Monday 00 ISO 53
$ date +"Sunday %U Monday %W ISO %V" -d '2010-01-04'
Sunday 01 Monday 01 ISO 01
</pre>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1851&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/09/what-week-it-is/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在 Google Groups/GMail 找交叉引用連結</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/07/cross-referencing-with-gmail/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/07/cross-referencing-with-gmail/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 12:00:46 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[tips google]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1840</guid>
		<description><![CDATA[很多時候，我們常常在 Google Groups、線上論壇或 Gmail 引用另外一封電子郵件的發言作 Cross-referencing，為了讓後來才參與討論的人快速的找到相關的背景資料。
但是很多時候，要求人家去爬文其實是很難實踐的，因為論壇流量極大，即便告知了標題、作者，很多時候可能還是要翻找很久。另外一個問題是，如果你想引用特定 E-Mail, 只能要別人回去翻閱你以前寄出的信件，這樣對方很難找到原始引據信件。即便你想讓人參閱，你也無法把特定的信變成 hyperlink，公開在網路上讓人點閱。
其實，根據 RFC2392 的定義，每一封電子郵件標頭裡，都藏有一個單一的 Message-ID。每一封信都有，而一些線上郵件軟體如 Gmail，支援搜尋 Message ID，你可以把 Message ID 輸入搜尋欄位，就可以快速找到原始的討論串。在應用上，你也可以代入搜尋網址，如 Gmail 則為
https://mail.google.com/mail/?shva=1#search/[MessageID]
只要給對方這樣的網址，他就可以找到原始的郵件。無論是藏在那一個目錄/標籤中。新式的電子郵件軟體，也可以讓你跨目錄的搜尋 Message Id，有了參照，要找到原始郵件應該比透過標題找來的快。
另外一個在網路上嘴砲溝通時常用的功能，是引用開放論壇的存檔。若你打開郵件翻閱 Header 的話，會看到一些隱藏的資訊。以 Google Groups 為例子，你會看到 X-Thread-Url, X-Message-Url 等。這兩個網址，就是線上網頁版本的存檔。你可利用這兩筆資訊提供給其他人作為引據連結。
其他的一些郵遞論壇工具，也有自己的 Archive URL，不妨開啟來翻閱。現雖有 RFC5064 之定義，但是大家似乎還是各作各的。
Happy Flame War!
這是一篇 Tips.
]]></description>
			<content:encoded><![CDATA[<p>很多時候，我們常常在 Google Groups、線上論壇或 Gmail 引用另外一封電子郵件的發言作 <a href="http://en.wikipedia.org/wiki/Cross-reference">Cross-referencing</a>，為了讓後來才參與討論的人快速的找到相關的背景資料。</p>
<p>但是很多時候，要求人家去爬文其實是很難實踐的，因為論壇流量極大，即便告知了標題、作者，很多時候可能還是要翻找很久。另外一個問題是，如果你想引用特定 E-Mail, 只能要別人回去翻閱你以前寄出的信件，這樣對方很難找到原始引據信件。即便你想讓人參閱，你也無法把特定的信變成 hyperlink，公開在網路上讓人點閱。</p>
<p>其實，根據 <a href="http://www.ietf.org/rfc/rfc2392.txt">RFC2392</a> 的定義，每一封電子郵件標頭裡，都藏有一個單一的 <a href="http://people.debian.org.tw/~chihchun/wp-admin/post-new.php">Message-ID</a>。每一封信都有，而一些線上郵件軟體如 Gmail，支援搜尋 Message ID，你可以把 Message ID 輸入搜尋欄位，就可以快速找到原始的討論串。在應用上，你也可以代入搜尋網址，如 Gmail 則為</p>
<pre class="code">https://mail.google.com/mail/?shva=1#search/[MessageID]</pre>
<p>只要給對方這樣的網址，他就可以找到原始的郵件。無論是藏在那一個目錄/標籤中。新式的電子郵件軟體，也可以讓你跨目錄的搜尋 Message Id，有了參照，要找到原始郵件應該比透過標題找來的快。</p>
<p>另外一個在網路上<del>嘴砲</del>溝通時常用的功能，是引用開放論壇的存檔。若你打開郵件翻閱 Header 的話，會看到一些隱藏的資訊。以 Google Groups 為例子，你會看到 X-Thread-Url, X-Message-Url 等。這兩個網址，就是線上網頁版本的存檔。你可利用這兩筆資訊提供給其他人作為引據連結。</p>
<p>其他的一些郵遞論壇工具，也有自己的 Archive URL，不妨開啟來翻閱。現雖有 <a href="http://www.ietf.org/rfc/rfc5064.txt">RFC5064</a> 之定義，但是大家似乎還是各作各的。<img src='http://people.debian.org.tw/~chihchun/wp-includes/images/smilies/yahoo_question.gif' alt='&#58;&#45;&#47;' class='wp-smiley' width='18' height='18' title='&#58;&#45;&#47;' /></p>
<p><del datetime="2010-02-06T09:38:49+00:00">Happy Flame War!</del></p>
<p>這是一篇 <a href="http://people.debian.org.tw/~chihchun/tag/tips/">Tips</a>.</p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1840&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/07/cross-referencing-with-gmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thinkpad 小紅點設定</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/06/config-trackpoing-on-linux/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/06/config-trackpoing-on-linux/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 12:00:11 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[thinkpad]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[trackpoint]]></category>
		<category><![CDATA[udev]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1781</guid>
		<description><![CDATA[Thinkpad 的小紅點在 Linux 上似乎一直沒有完善圖形化介面的設定工具。若要設定的話，常得參考一些指令設定。
驅動程式預設的速度、靈敏度都太低，推一陣子手指就累了，也無法按著中鍵移動小紅點來捲動視窗。不甚好用，稍做一些設定的筆記，作為未來參考。
在 GNU/Linux Debian/Ubuntu 上有數種機制可以更改小紅點設定，若是新手使用，大概會被 sysfs, udev, hal, DeviceKit, pm-utils, xorg.conf, xinput 等術語搞得一頭霧水。你若不想弄懂這些難解術語，也不想更改 xorg.conf，最快的作法是以 sudo 在虛擬終端機執行以下指令
#!/bin/sh
# 游標速度，可調整數值。大為快，小為幔
echo -n 120 &#62; /sys/devices/platform/i8042/serio1/speed
# 靈敏度，最高應為 255
echo -n 250 &#62; /sys/devices/platform/i8042/serio1/sensitivity
# 按小紅點為選取，1 為啟用，0 為關閉。
echo -n 0 &#62; /sys/devices/platform/i8042/serio1/press_to_select

xinput list-props '"TPPS/2 IBM TrackPoint"'
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation' 8 1
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation [...]]]></description>
			<content:encoded><![CDATA[<p>Thinkpad 的小紅點在 Linux 上似乎一直沒有完善圖形化介面的設定工具。若要設定的話，常得參考一些<a href="http://www.thinkwiki.org/wiki/How_to_configure_the_TrackPoint">指令設定</a>。</p>
<p>驅動程式預設的速度、靈敏度都太低，推一陣子手指就累了，也無法按著中鍵移動小紅點來<abbr title="scrolling">捲動</abbr>視窗。不甚好用，稍做一些設定的筆記，作為未來參考。</p>
<p>在 GNU/Linux Debian/Ubuntu 上有數種機制可以更改小紅點設定，若是新手使用，大概會被 sysfs, <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html">udev</a>, <a href="http://www.freedesktop.org/wiki/Software/hal">hal</a>, <a href="http://www.freedesktop.org/wiki/Software/DeviceKit">DeviceKit</a>, <a href="http://pm-utils.freedesktop.org/wiki/">pm-utils</a>, xorg.conf, <a href="http://www.x.org/wiki/XInputSpec">xinput</a> 等術語搞得一頭霧水。你若不想弄懂這些難解術語，也不想更改 xorg.conf，最快的作法是以 sudo 在虛擬終端機執行以下指令</p>
<pre class="code">#!/bin/sh
# 游標速度，可調整數值。大為快，小為幔
echo -n 120 &gt; /sys/devices/platform/i8042/serio1/speed
# 靈敏度，最高應為 255
echo -n 250 &gt; /sys/devices/platform/i8042/serio1/sensitivity
# 按小紅點為選取，1 為啟用，0 為關閉。
echo -n 0 &gt; /sys/devices/platform/i8042/serio1/press_to_select

xinput list-props '"TPPS/2 IBM TrackPoint"'
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation' 8 1
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation Button' 8 2
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation X Axis" 8 6 7
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation Y Axis" 8 4 5
xinput set-int-prop '"TPPS/2 IBM TrackPoint"' "Evdev Wheel Emulation Axes" 8 6 7 4 5
xinput list-props '"TPPS/2 IBM TrackPoint"'</pre>
<p>這些指令可以幫你把 TrackPoint 的速度、靈敏度調高，並驅動中鍵模擬滾輪功能。頭三行 echo 指令需以 root 權限執行，你可自行調整偏好的數值。後面幾行 xinput 指令，必須在 X 視窗下執行。(意即，你不能拿到 console 下面來跑)</p>
<p>這些指令每次重開機或休眠後都需重新執行一次。你若嫌麻煩，目前最簡易的設定機制應該是寫成 udev rules，作法以 root 執行指令如下</p>
<pre class="code"># cat &gt; /etc/udev/rules.d/90-trackpoint.rules &lt;&lt;EOF
# SUBSYSTEM=="serio", DRIVERS=="psmouse", ATTR{press_to_select}="0", ATTR{sensitivity}="250", ATTR{speed}="120"
DEVPATH=="/devices/platform/i8042/serio1", ATTR{press_to_select}="0", ATTR{sensitivity}="250", ATTR{speed}="120"

ACTION!="add|change", GOTO="xorg_trackpoint_end"
KERNEL!="event*", GOTO="xorg_trackpoint_end"

ENV{ID_PATH}!="platform-i8042-serio-1", GOTO="xorg_trackpoint_end"

ENV{x11_options.EmulateWheel}="1"
ENV{x11_options.EmulateWheelButton}="2"
ENV{x11_options.XAxisMapping}="6 7"
ENV{x11_options.Emulate3Buttons}="0"

LABEL="xorg_trackpoint_end"
EOF</pre>
<p>這段程式碼，參考 <a href="http://www.thinkwiki.org/wiki/How_to_configure_the_TrackPoint#udev">ThinkWiki 網站</a>。<em>理論上</em>，會在你開機以及重休眠模式啟動時，自動套用小紅點速度設定與模擬滾輪設定。</p>
<p>實際上，因為一個已知的 <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=549379">#549379 udev/kernel</a> 問題，滑鼠的速度設定無法自動套用。暫時可以先用前段的 echo/sysfs 方式解決。</p>
<p>這是一篇 <a href="http://people.debian.org.tw/~chihchun/tag/tips/">Tip</a>.</p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1781&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/06/config-trackpoing-on-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Browser Exploitation Framework</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/05/browser-exploitation-framework/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/05/browser-exploitation-framework/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 12:00:34 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1804</guid>
		<description><![CDATA[先前提到關於 Firefox 瀏覽器的擴展套件安全問題，你或者認為這種系統入侵方式很少見，畢竟可以被破解的瀏覽器為少數。事實上，已經有些工具可以拿來養木馬，像是 BindShell 開發的 BeEF  (Browser Exploitation Framework)。
BeEF 整合 Metasploit 等知識庫與工具來查找各種瀏覽器的漏洞，只要你將代碼塞到受害者可能讀取的網頁，就可以即時看到對方瀏覽器版本，以及可能的入侵方法，甚至可以利用 BeEF 線上即時送出一些指令，直接侵入對方主機。
]]></description>
			<content:encoded><![CDATA[<p>先前提到關於 <a href="http://people.debian.org.tw/%7Echihchun/2010/01/07/security-mechanism-of-firefox-extension/">Firefox 瀏覽器的擴展套件安全問題</a>，你或者認為這種系統入侵方式很少見，畢竟可以被破解的瀏覽器為少數。事實上，已經有些工具可以拿來養木馬，像是 <a href="http://www.bindshell.net/tools/beef">BindShell</a> 開發的 <a href="http://www.bindshell.net/tools/beef">BeEF</a>  (Browser Exploitation Framework)。</p>
<p>BeEF 整合 <a href="http://www.metasploit.com/">Metasploit</a> 等知識庫與工具來查找各種瀏覽器的漏洞，只要你將代碼塞到受害者可能讀取的網頁，就可以即時看到對方瀏覽器版本，以及可能的入侵方法，甚至可以利用 BeEF 線上即時送出一些指令，直接侵入對方主機。<img src='http://people.debian.org.tw/~chihchun/wp-includes/images/smilies/yahoo_wink.gif' alt='&#59;&#45;&#41;' class='wp-smiley' width='18' height='18' title='&#59;&#45;&#41;' /></p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1804&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/05/browser-exploitation-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux 上試用 TECOM WiMAX 網路卡</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/04/gct-tecom-violated-gpl/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/04/gct-tecom-violated-gpl/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 12:00:35 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[beceem]]></category>
		<category><![CDATA[gct]]></category>
		<category><![CDATA[madwimax]]></category>
		<category><![CDATA[runcom]]></category>
		<category><![CDATA[sequans]]></category>
		<category><![CDATA[tecom]]></category>
		<category><![CDATA[vmax]]></category>
		<category><![CDATA[wimax]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1798</guid>
		<description><![CDATA[上個月 (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) 為 [...]]]></description>
			<content:encoded><![CDATA[<p>上個月 (2010/01) <a href="http://www.vmax.net.tw/">VMAX/崴邁司</a> 在台北開台期間，舉辦了一場<a href="http://news.vmax.net.tw/event/index.html">體驗活動</a>。雖然興致勃勃的去申請了，不過顯然重度使用者不在 VMAX 的規劃範圍之內，因此我並沒有被選到試用。幾位朋友倒是幸運的取得試用資格。</p>
<p>目前 VMAX 提供的 <a href="http://www.vmax.net.tw/driver/index.do">USB WiMAX 網路卡</a>是 TECOM 的 <a href="http://wimaxtaipei.tw/products_profile.php?id=198">WM5123M-2G5</a>. 網頁上註明只支援 Windows 作業系統。基於好奇的心理，也跟朋友借了網路卡來玩一個禮拜，在北市的古亭、公館一帶試用，上下傳速度都還不錯。</p>
<p>不過自己比較感興趣的是否有 Linux 的驅動程式。稍早的測試是在 Linux 上，透過 VirtualBox 跑 Windows 來連線。實際上並未能在 Linux 上直接使用該網路卡連線。</p>
<p>查了一下知道這款設備使用 GCT 的解決方案，應該是 <a href="http://www.gctsemi.com/products/wimax-GDM7205.htm">GDM7205</a>，日本的 MODACOM 也利用此晶片開發了 UD01SS/UD03SS/MW-U2510/BDSS01 等產品。其中 <a href="http://www.uqwimax.jp/service/product/UD01SS.html">UD01SS</a> 也是日本 <a href="http://www.uqwimax.jp/">UQ WiMAX</a> 搭售的產品之一，在 UQ WiMAX 的<a href="http://www.uqwimax.jp/service/product/UD01SS.html">產品網頁</a>上，其實也提供 Mac OS 的驅動程式。所以你若使用 Mac OS, 或許可以在此找到可用的驅動程式。</p>
<p>根據我的紀錄，UD01SS 使用的 USB 產品編碼 (vendor id, product id) 為 1076:7f40 或 1076:7f00. 如果開發商/製造商連編碼都懶的改的話，八成驅動程式也可共用。<img src='http://people.debian.org.tw/~chihchun/wp-includes/images/smilies/yahoo_wink.gif' alt='&#59;&#45;&#41;' class='wp-smiley' width='18' height='18' title='&#59;&#45;&#41;' /> 只是 Connection Manager 不知道能不能讓你認證/連上不同的 ISP 就是。</p>
<p>至於 Linux 下的使用，經過測試已經可以利用 usb_modswitch 來<a href="http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?t=256&amp;postdays=0&amp;postorder=asc&amp;start=0">將初始的 ZeroCD (含有 Windows 驅動程式) 模式改為 Network 模式</a>。不過仍缺了連線用得工具與相關的 userland 程式，所以暫時間還是無法使用。</p>
<p>目前開放原碼的 WiMAX 支援，只有 Intel 釋出的 <a href="http://www.linuxwimax.org/">Linux WiMAX Software Stack</a>。其中最重要的用以認證的 Supplicant 暫時還無法是開放原碼。因此若要讓開源社群使用，必要得有 Supplicant 的支援才行。</p>
<p>另外一點，現有 WiMAX 晶片供應商如 Beceem, GCT, Sequans, Runcom 等，據聞所使用的 Driver Software Stack 都大不相同。因此恐怕未來若要整合不同的網路卡驅動程式，會有陣過渡期。</p>
<p>目前社群中，除了 Intel 的驅動程式外。另外一個相對開放原碼的是 Samsung 所製造的網路卡，已有一針對 Samsung 網卡所反組譯的 <a href="http://code.google.com/p/madwimax/">madWiMAX</a> 軟體計畫。</p>
<h1>GCT/TECOM 疑似違反 GPL 授權</h1>
<p>另外在追查可能的驅動程式資訊時，macpaul 告知他發現 Winodws 安裝目錄中，包含了一個神秘的 Image 檔案。疑似包含 Linux 核心與相關程式，在驅動時傳到網卡上執行。</p>
<p>手癢稍微追蹤了一下，發現內部的確包含了一組 linux kernel 與一組 cramfs 的 rootfs. 再往裡面翻進去發現 busybox 與一應為處理 <a href="http://en.wikipedia.org/wiki/OMA_Device_Management">OMA-DM</a> 功能的私有軟體。</p>
<p>根據 VMAX 發給消費者的資料中，並沒有任何書面資料或電子檔說明內含 GPL 原始碼一事。相關發現已經先行發至 <a href="http://www.gpl-violations.org/">gpl-violations.org</a> 的 <a href="http://lists.gpl-violations.org/pipermail/legal/2010-January/001789.html">legal 郵遞論壇</a>。目前對此事件暫無進一步計畫。</p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1798&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/04/gct-tecom-violated-gpl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java JVM 的 Dual Stack/IPv6 連線問題</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/03/connectivity-issue-of-java-with-ipv6/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/03/connectivity-issue-of-java-with-ipv6/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 12:00:07 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1794</guid>
		<description><![CDATA[大約從 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 網路，可於終端機下使用此指令判斷
$ [...]]]></description>
			<content:encoded><![CDATA[<p>大約從 J2SE 1.4/1.6 開始，Sun 所釋出的 Java runtime 開始支援 IPv6 連線功能。一般的 Linux 的<abbr title="distribution">套件系統</abbr> 也開始支援 IPv6，許多系統預設是同時開啟 IPv4/IPv6 或稱為 <a href="http://en.wikipedia.org/wiki/IPv6#Dual_IP_stack_implementation">Dual Stack</a> 網路功能。</p>
<p>基本上，鼓勵各種軟體開始移植到 IPv6 網路上是一件好事。Java runtime 若在 dual-stack 的機器上，預設走 IPv6 位址，因為 IPv6 位址可同時走 IPv4/IPv6 網路。不過問題在於，若一般的 GNU/Linux Debian, Ubuntu 系統，預設會啟動 IPv6 介面，無論你所在網路是否有 IPv6 路由。</p>
<p>於是，你若在 Linux 上使用一些 Java 寫成的網路軟體，如 JDownloader 等，很有可能發生軟體運作後，卻什麽地方都連不上的症狀。解決辦法一是關閉 IPv6 網路功能，一則是利用 JRE 的參數，改為預設使用 IPv4 網路。</p>
<h2>檢查 IPv6 是否驅動</h2>
<p>首先，你若想確認是否開啟了 IPv6 網路，可於終端機下使用此指令判斷</p>
<pre class="code">$ ip addr|grep inet6</pre>
<p>若出現了 inet6 之位址，即為開啟了 IPv6 網路。</p>
<p>你若想快速的關閉 IPv6 功能，可以利用 root 執行 ip 指令，直接刪除 inet6 位址</p>
<pre class="code">/sbin/ip addr del &lt;ipv6address&gt;/&lt;prefixlength&gt; dev ethX</pre>
<h2>舊版核心</h2>
<p>在舊版核心，IPv6 功能是以模組方式存在，妳可以透過更改 modprobe (module-init-tools) 的設定，讓系統不載入對應驅動程式。關閉的方式<a href="http://www.debian-administration.org/article/Disabling_IPv6_under_a_2.6_kernel">很簡單</a>，請修改 /etc/modprobe.d/ 之設定，如以 root 執行以下指令</p>
<pre class="code"># cat &gt; /etc/modprobe.d/00local.conf &lt;&lt;EOF
alias net-pf-10 off
alias ipv6 off
EOF</pre>
<p>更改之後，重新開機即可關閉 IPv6 功能。</p>
<h2>新版核心</h2>
<p>在新版的 Debian/Ubuntu 中使用 2.6 核心，因為內建 IPv6 驅動程式, 你得利用開機參數 (cmdline) 關閉之。作法是修改 /etc/default/grub 檔案，更改 GRUB_CMDLINE_LINUX_DEFAULT 一行，加入 <em>ipv6.disable=1</em>，如</p>
<pre class="code">GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet"</pre>
<p>修改完畢後，請用 root 執行 <em>update-grub</em> 後，重新開機。</p>
<h2>JRE 參數</h2>
<p>另外一項作法是更改 JRE 參數，你若知道啟動該軟體的 shell script 位於何處，可新增<a href="http://java.sun.com/j2se/1.5.0/docs/guide/net/ipv6_guide/index.html#ipv6-networking">一參數</a>如下</p>
<pre class="code">$ java -Djava.net.preferIPv4Stack=true Main</pre>
<p>這樣就可以要求 JVM 預設使用 IPv4 stack.</p>
<p>這是一篇 <a href="http://people.debian.org.tw/~chihchun/tag/tips/">Tips</a>.</p>
<p><em>修訂紀錄 (20100207): 補充利用 iproute 關閉 ipv6 方法，說明新舊版核心處理方式。</em></p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1794&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/03/connectivity-issue-of-java-with-ipv6/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>在 Linux 上移除 CNNIC 憑證</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/02/remove-cnnic-cert-on-linux/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/02/remove-cnnic-cert-on-linux/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 12:30:33 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[cnnic]]></category>
		<category><![CDATA[firefox]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1811</guid>
		<description><![CDATA[一月底開始，一些朋友開始討論 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 [...]]]></description>
			<content:encoded><![CDATA[<p>一月底開始，一些朋友開始討論 Firefox 3.6 中，將置入 CNNIC 的 CA 憑證。這件事情是去年年底，CNNIC 對 Firefox 申報納入 CNNIC 的憑證 (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=476766#c14">#476766</a>)，目前已於 3.6 版中內建 CNNIC 憑證。</p>
<p>目前此事已經在 Mozilla Security Policy <a href="http://groups.google.com/group/mozilla.dev.security.policy/browse_thread/thread/17be3bd7e0b33e8c/d69aea4eb35c5ee3">mailing list 公開討論</a>，在華人網路社群也引起一陣騷動。像是 AutoProxy 等社群都提出 <a href="http://autoproxy.org/zh-CN/node/66">CNNIC CA：最最最嚴重安全警告！</a>。在原提案 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=476766#c33">#476766</a> 中亦有人整理了一些客觀事實。</p>
<p>不過根據我主觀的看法，奉勸所有人盡快移除 CNNIC 相關的 CA 憑證！CNNIC 就是<a href="http://zh.wikipedia.org/zh-tw/%E4%B8%AD%E5%9C%8B%E4%BA%92%E8%81%AF%E7%B6%B2%E7%B5%A1%E4%BF%A1%E6%81%AF%E4%B8%AD%E5%BF%83">中國網際網路絡信息中心</a>，是一個中國的非營利組織，提供中國網際網路的網域名稱、網段管理。</p>
<p>CA 憑證對於瀏覽器使用者而言，可以用來辨識特定網域是否為合法組織，部份瀏覽器功能甚至依據有否憑證，對網頁開啟進階存取權限。前提是 CA 維持善良管理人義務，嚴格管理所核發的憑證、簽章。</p>
<p>CNNIC 過去最大的爭議即是曾經發布過<a href="http://zh.wikipedia.org/wiki/%E4%B8%AD%E6%96%87%E4%B8%8A%E7%B6%B2%E5%AE%98%E6%96%B9%E7%89%88%E8%BB%9F%E9%AB%94">中文上網官方版軟體</a>，名為提供中文網址導引服務，實質則包含<a href="http://zh.wikipedia.org/zh-tw/%E6%B5%81%E6%B0%93%E8%BB%9F%E4%BB%B6">流氓軟體</a>的功能，主要功能是一般輔助上網軟體，但核心卻用 rootkit 技術讓你<a href="http://changyang319.pixnet.net/blog/post/4720671">無法刪除</a>，與木馬/病毒程式一般。雖說這只是一項前科，但是中國政府持續拿著民族主義、國家安全為藉口，實施數種網路管制，甚至滲透國外企業、政府網路，根本是合法的網路流氓。而 CNNIC 背後支持的政府組織是<a href="http://www.miit.gov.cn/">中華人民共和國工業和信息化部</a>、<a href="http://www.cas.cn/">中國科學院</a>、<a href="http://www.cnic.cn/">中國科學院計算機網絡信息中心</a> 等中國政府組織。很難說，哪一天 CNNIC 不會被控制作為攻擊工具之一。</p>
<p>除了 CNNIC 自行發布的 CA Cert Root 外，其實 CNNIC 也已經取得 <a href="http://www.entrust.net/">Entrust.net</a> 所發布的次級憑證。<strong>建議所有台灣政府單位，一律移除 CNNIC 相關憑證。</strong></p>
<p>若你覺得此事關係重大，可以以投票方式附議 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=542689"> Bug 542689</a> &#8211;  Please Remove &#8220;CNNIC ROOT&#8221; root certificate from NSS，提高該問題的被重視程度。</p>
<h1>跳板風險</h1>
<p>其實 Mozilla 先前也曾經遭遇過亂搞的安全憑證公司。原則上，任何人要申請特定網域的簽章，必須提供書面資料，證明你是該網域的擁有者。因為 SSL 憑證一個主要功能是防止釣魚網站欺騙一般消費者，若使用假冒的憑證，使用者很容易就發現網址異常。</p>
<p>若安全憑證公司絲毫不做基本的驗證，任何人都可以申請想仿冒的網域，然後以中間人攻擊 (<a href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM</a>) 詐騙你交出個人資料。想像，你收到一封 PCHOME 的廣告，連到一個假的網站，這個網站提供了完美的 SSL 憑證，瀏覽器沒有提示你任何異常，除非你刻意去點選確認簽章，否則很自然就會上當。</p>
<p>Mozilla 的事件起因，是有人<a href="http://groups.google.com/group/mozilla.dev.tech.crypto/browse_thread/thread/cc23f76706b963bf#">回報</a>一安全憑證公司透過廣告郵件推銷新的服務。但這個憑證公司的服務卻允許你隨意購買任一網址的簽章，於是你可以購買並假冒任何網站。Eddy Nigg 寫了一份詳盡的<a href="https://blog.startcom.org/?p=145">說明</a>，當時並做了一個驗證概念的 Mozilla.com 憑證。在事情曝光後，Mozilla 已<a href="http://groups.google.com/group/mozilla.dev.tech.crypto/browse_thread/thread/9c0cc829204487bf">撤除這組組憑證</a>了。</p>
<h1>移除 CA 憑證</h1>
<p>驗證方法是開啟 CNNIC 的<a href="https://tns-fsverify.cnnic.cn/">網址衛士</a> (使用 Entrust.net) 或 CNNIC 的 <a href="https://www.enum.cn/cn/">ENUM 試驗平台</a> (使用 CNNIC Root Cert)。若你的瀏覽器絲毫不給警告的就讓你存取，你的系統即已安裝 CNNIC 憑證。</p>
<p><em>2010-02-23 更新請使用  <a rel="bookmark" href="../../%7Echihchun/2010/02/22/certalert-and-ca-untrustworthy/">CertAlert 與 CA Untrustworthy</a> 等工具來移除或警示可疑憑證。</em><!-- end header --><a rel="bookmark" href="../../%7Echihchun/2010/02/22/certalert-and-ca-untrustworthy/"><br />
</a></p>
<p>在 GNU/Linux Debian, Ubuntu 上，系統保持一份共用的 CA <abbr title="certificates">憑證</abbr>，許多網頁工具如 Firefox, curl, wget, Chrome 均共用同一組設定。因此最簡便的方法便是關閉系統上有問題的憑證。</p>
<p>作法是以 root 在終端機內重新設定以下指令</p>
<pre class="code"># dpkg-reconfigure ca-certificates</pre>
<p><a href="http://people.debian.org.tw/~chihchun/wp-content/uploads/2010/02/ca-certificates.png"><img class="aligncenter size-medium wp-image-1817" title="dpkg-reconfigure ca-certificates" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2010/02/ca-certificates-300x175.png" alt="" width="300" height="175" /></a></p>
<p>找到 mozilla/Entrust.net_Secure_Server_CA.crt 一列，反選取之，選擇確認即可。或者直接編輯 /etc/ca-certificates.conf，一樣找到此行後，於該行開頭加入驚嘆號 (!)，然後重新以 root 執行一次 update-ca-certificates.</p>
<p>另外，你也得到瀏覽器手動刪除原已匯入之憑證。注意，若該筆憑證下方有多筆簽章，你必須刪除全部簽章。見圖</p>
<p><a href="http://people.debian.org.tw/~chihchun/wp-content/uploads/2010/02/Screenshot-Certificate-Manager.png"><img class="aligncenter size-medium wp-image-1818" title="Screenshot-Certificate Manager" src="http://people.debian.org.tw/~chihchun/wp-content/uploads/2010/02/Screenshot-Certificate-Manager-300x206.png" alt="" width="300" height="206" /></a></p>
<p>按下 Delete, 重新啟動 Firefox，如此即可移除相關的 CA 憑證，其他瀏覽器需比照辦理。你若使用其他作業系統，請參考 Felix Yan 所整理之 <a title="Permanent Link to CNNIC，我不信任你！——從「受信任的根證書」裡趕走CNNIC" rel="bookmark" href="http://felixcat.net/2010/01/throw-out-cnnic/">從「受信任的根證書」裡趕走CNNIC</a>。</p>
<p><em>以下補充說明 (20100203): </em></p>
<p>許多網友認為，即使系統有此憑證，也不至於影響系統。</p>
<p>事實是，若有此憑證，你將被剝奪警覺的能力，像是痛得知覺消失一樣。當攻擊事件發生時，唯一可以主動提示你的 SSL 機制也可能失效。在中國網路長城的「內部網路」，網址被攔截、轉換是很平常的事件，即使你在網外，也可能在<a href="http://blog.net-hack.com/2009/03/www.html">網站轉址攻擊事件</a>或<a href="http://armorize-cht.blogspot.com/2009/03/blog-post.html">大規模網頁綁架轉址</a>發生時，變成受害者。</p>
<p>除了網址之外，這份憑證也可用於不同的連線服務加密認證。我並不想因為系統上存有一份無須有的 SSL 憑證，造成我日常認為經加密而安全的 SMTP/IMAP/IM 「可能」偷偷地遭到攔截、擷取資料。而我卻一無所知。</p>
<p><em>更新 </em><em>(2010-02-23)</em></p>
<p><em>請使用  <a rel="bookmark" href="../../%7Echihchun/2010/02/22/certalert-and-ca-untrustworthy/">CertAlert 與 CA Untrustworthy</a> 等工具來移除或警示可疑憑證。</em><!-- end header --><a rel="bookmark" href="../../%7Echihchun/2010/02/22/certalert-and-ca-untrustworthy/"><br />
</a></p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1811&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/02/remove-cnnic-cert-on-linux/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>git archive 與 log 小技巧</title>
		<link>http://people.debian.org.tw/~chihchun/2010/02/01/git-archive-and-log/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/02/01/git-archive-and-log/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 12:00:34 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1775</guid>
		<description><![CDATA[時常，你得將手上的軟體原始碼壓起來釋出給第三方使用、測試。特別是你希望提供 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 --pretty=format:"%h" -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 [...]]]></description>
			<content:encoded><![CDATA[<p>時常，你得將手上的軟體原始碼壓起來釋出給第三方使用、測試。特別是你希望提供 daily basics/ revision basics 讓使用者取得最新版軟體的時候。</p>
<p>由於最近都已經只用 git，依據我自己的習慣，希望能夠在檔名中使用<abbr title="abbreviated commit hash">簡碼版次</abbr>，以便未來能夠追蹤出該版次的問題。稍微<a href="http://www.plurk.com/p/3fcfl0">問了一下友人</a>與查了一下文件，取得 abbreviated commit hash 的作法如下</p>
<p><code>git log --pretty=format:"%h" -1</code></p>
<p>若你想將整份程式碼壓縮起來，可以使用</p>
<p><code>git archive --format zip -o filename.zip HEAD</code></p>
<p>倘若想加上日期作為檔名，請使用</p>
<p><code>git archive --format zip -o $(git log --pretty=format:"%h" -1).zip HEAD</code></p>
<p>若常常使用這個指令，有兩種作法，一是<a href="http://git.wiki.kernel.org/index.php/Aliases#Advanced">設定為 git alias</a>. 另一則是利用 git 的 commands (verbs) 命名機制，在你的<abbr title="PATH for shell">執行路徑</abbr> 下，寫入一檔案名稱如 git-zip。並將上述指令加入檔案中，未來就可以使用 git zip 來產生最新版壓縮檔。</p>
<p>作法如<br />
<code>$ cat > ~/bin/git-zip<br />
#!/bin/sh<br />
git archive --format zip -o $(git log --pretty=format:"%h" -1).zip HEAD<br />
$ chmod u+x ~/bin/git-zip<br />
$ cd git-repository<br />
$ git zip<br />
</code></p>
<p>另外，為了容易辨識版次，你也可以利用 <a href="http://progit.org/book/ch7-2.html">gitattributes</a> 在程式碼中加入 ident ($Id$) 作為標示。操作可參考 <a href="http://kalug.linux.org.tw/~lloyd/">Lloyd Huang</a> 所寫之 <a href="http://kalug.linux.org.tw/~lloyd/bblog/archives/2009/12/24/[tip]_git_ident_and_export-subst_howto/">Howto</a>.</p>
<p>這是一篇 <a href="http://people.debian.org.tw/~chihchun/tag/tips/">Tip</a>.﻿</p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1775&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/02/01/git-archive-and-log/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox Extension 的安全問題</title>
		<link>http://people.debian.org.tw/~chihchun/2010/01/07/security-mechanism-of-firefox-extension/</link>
		<comments>http://people.debian.org.tw/~chihchun/2010/01/07/security-mechanism-of-firefox-extension/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 00:00:09 +0000</pubDate>
		<dc:creator>Rex Tsai</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://people.debian.org.tw/~chihchun/?p=1768</guid>
		<description><![CDATA[若 Firefox 開發延伸套件時，應該會知道 Firefox 對於外掛並沒有安全防護機制的，只要你能裝進系統，大約就可以使用所有的元件或存取系統資源。延伸套件被視為可信賴的軟體，開發者應負起各延伸套件的安全性。
對此，Firefox 在 Java Script 開發環境的安全設計主要分為賦權與未賦權的兩種安全模式。賦權的環境中，軟體可以存取所有的 XPCOM，沒有任何限制，於是它可以讀取或修改使用者的歷史紀錄、Cookie 等，甚至存取所有系統檔案。而 non-privileged 則僅提供限制嚴格的 HTML DOM API 權限，Script 的存取也依照其網址與網域名稱給予嚴格限制，避免 XSS 或本地檔案讀取等安全問題發生。
無論是外部的網頁，或者是 XUL 軟體，都是使用 XML/HTML/Java Script/CSS 來撰寫，因此概念上都是由 Window 載入 XML 文件，並透過 Java Script 來存取 DOM API。
開發延伸套件時，凡是在 XUL Overlays 或 XPCOM Components 中的程式碼，都是給予完全的存取權限。而從外部網頁載入的內容，應該給於其未賦權的權限。這種安全模式的設計，乃是防止網頁上的程式可以任意存取系統資源，是一道安全保護牆。
由於 Mozilla 社群並未對安全模式定義名詞，這裡暫區分稱呼如下兩種安全模式

Web content document (non-privileged)


Chrome document (privileged)

各個程式的安全模式可依照該載入網址作區別，例如 chrome:// 有完全權限、http://example.com 則可存取 example.com、file:/// 則可存取本地檔案。
你也可在利用 PrivilegeManager  詢問使用者後存取 XPCOM [...]]]></description>
			<content:encoded><![CDATA[<p>若 Firefox 開<a href="https://developer.mozilla.org/En/Firefox_addons_developer_guide">發延伸套件</a>時，應該會知道 Firefox 對於<abbr title="Add-on">外掛</abbr>並沒有安全防護機制的，只要你能裝進系統，大約就可以使用所有的元件或存取系統資源。延伸套件被視為可信賴的軟體，開發者應負起各延伸套件的安全性。</p>
<p>對此，Firefox 在 Java Script 開發環境的安全設計主要分為<abbr title="privileged">賦權</abbr>與<abbr title="non-privileged">未賦權</abbr>的兩種<abbr title="Security Zone">安全模式</abbr>。賦權的環境中，軟體可以存取所有的 XPCOM，沒有任何限制，於是它可以讀取或修改使用者的歷史紀錄、Cookie 等，甚至存取所有系統檔案。而 non-privileged 則僅提供限制嚴格的 HTML DOM API 權限，Script 的存取也依照其<abbr title="url">網址</abbr>與<abbr title="domain name">網域名稱</abbr>給予嚴格限制，避免 <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">XSS</a> 或本地檔案讀取等安全問題發生。</p>
<p>無論是外部的網頁，或者是 XUL 軟體，都是使用 XML/HTML/Java Script/CSS 來撰寫，因此概念上都是由 Window 載入 XML 文件，並透過 Java Script 來存取 DOM API。</p>
<p>開發延伸套件時，凡是在 <a href="https://developer.mozilla.org/En/XUL">XUL</a> <a href="https://developer.mozilla.org/en/XUL_Overlays">Overlays</a> 或 XPCOM Components 中的程式碼，都是給予完全的存取權限。而從外部網頁載入的內容，應該給於其<abbr title="non-privileged">未賦權</abbr>的權限。這種安全模式的設計，乃是防止網頁上的程式可以任意存取系統資源，是一道安全保護牆。</p>
<p>由於 Mozilla 社群並未對安全模式定義名詞，這裡暫區分稱呼如下兩種安全模式</p>
<ul>
<li>Web content document (non-privileged)</li>
</ul>
<ul>
<li>Chrome document (privileged)</li>
</ul>
<p>各個程式的安全模式可依照該載入網址作區別，例如 chrome:// 有完全權限、http://example.com 則可存取 example.com、file:/// 則可存取本地檔案。</p>
<p>你也可在利用 PrivilegeManager  詢問使用者後存取 XPCOM 或者讓 XMLHttpRequest 跨網域存取。除了預設依照網址判斷外，開發者可以設計不同的內容使用安全模式，開發者可以決定直接載入網路資料後在 Chrome Document 中執行，或者利用 <a href="https://developer.mozilla.org/En/Displaying_web_content_in_an_extension_without_security_issues#Displaying_untrusted_data_as_content">type=&#8221;content&#8221;</a> 之方式使其載為 web content document.</p>
<p>但是剪下貼上是一個開發者都會犯的錯誤，最常見的錯誤之一就是直接把外面抓回來的資料，用 innerHTML 直接塞進 chrome document 中。有時候資料中會含有一些 java script，雖然 &lt;script /&gt; 中的語法不會被執行，但是 &lt;img onerror=&#8221;alert(&#8216;xss&#8217;)&#8221;&gt; 這種程式碼還是會被觸發，外部資料中夾帶程式碼的狀況還是相當多，因此凡是處理外部連結都要小心。</p>
<p><a href="http://security-assessment.com/">Security Assessment</a> 的<a href="http://malerisch.net/"> Roberto Suggi Liverani</a> 與 Nick Freeman 在上個月初於印度舉辦的 <a href="http://www.net-security.org/secworld.php?id=8514">SecurityByte &amp; OWASP AppSec Conference</a> 中，與今年年中的 <a href="https://www.defcon.org/html/defcon-17/dc-17-index.html">DefCon 17</a>，發表了幾個 Mozilla 上的<abbr title="Zero-day vulnerabilities">零時差漏洞</abbr>。根據他們的文章與簡報，最常見的就是如 RSS Feeds 中的 &lt;description&gt; 的程式碼會被觸發執行、或者像是 FireFTP 1.1.4 以下的版本，會執行伺服器上的歡迎頁面。或者是熱門的 ScribeFire 3.4.3 以下版本，會以 chrome document 執行 &lt;img onLoad=&#8221;alert(&#8216;xss&#8217;)&#8221;&gt;。</p>
<p>避免這些錯誤的方法之一是盡量使用  <a href="https://developer.mozilla.org/En/Displaying_web_content_in_an_extension_without_security_issues#Safe_HTML.c2.a0manipulation_functions">DOM manipulation methods</a> 來塞入內容。在 <a href="https://developer.mozilla.org/en/Security_best_practices_in_extensions">Security best practices in extensions</a> 一文中，講解了數個開發安全延伸套件的方法與注意事項，像是無論如何得執行他人的 Script，那就用 <a href="https://developer.mozilla.org/en/Security_best_practices_in_extensions#evalInSandbox">evalInSandbox</a> 來執行。</p>
<p>另外你若得在兩種安全模式間互傳資料，正確的作法應該是盡量<a href="https://developer.mozilla.org/en/Code_snippets/Interaction_between_privileged_and_non-privileged_pages">利用 DOM Event</a>.</p>
<img src="http://people.debian.org.tw/~chihchun/?ak_action=api_record_view&id=1768&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://people.debian.org.tw/~chihchun/2010/01/07/security-mechanism-of-firefox-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
