2011年5月27日星期五

在 Internet 上隱匿行蹤!

(一) - 引子

和一般人想像相反的是,網路從來就不是匿名的:我們在網路上的一舉一動其實都是被監視著。就如 網路真的是匿名的嗎? 上所寫的,不管您喜歡上什麼網站、喜歡看那一類的新聞、在拍賣網站裡觀看了哪些商品、在哪些討論區留下了什麼留言... 其實都是被記錄著。而這絕不是什麼令人愉快的事。

雖 然說『白天不做虧心事,半夜不怕鬼敲門』,況且我們這種小人物或許也沒啥必要過度保護自己的穩私。但話雖這麼說,並不表示別人就因而有任何權利來窺探我們 的一切;就像我們不會想讓別人偷看我們的日記,即使裡面所寫的東西其實也沒啥了不起。人們應該有免於恐懼的自由,但在 Internet 上,這種自由似乎被剝奪了...

因此,類似 Tor 的私密軟體就應運而生了。

(二) - Tor 簡介

所謂的 Onion Routing,指的是聯合世界各地的 Tor Server 所組成的一個虛擬網路。這個虛擬網路的主要目的就是提供一個隱密、安全、易於使用但卻又難以追蹤或反制的匿名網路,以有效保障人們在 Internet 上的私密性。

Tor 是一個藉由連上 Onion Routing 來存取 Internet 以隱匿您的真實 IP 的 Socks 4/4a/5 代理伺服器。利用 Tor,您可以放心得在 Internet 上傳送接收各式各樣的資訊而不必擔心會留下任何腳印 - 所被記錄的 IP 其實是 Onion Routing 的,而想從 Onion Routing 追查您的真實 IP 可以說是難如登天的事。

另外,Tor 和 Onion Routing 之間的連線是有經過 3~4 層加密的,所以若有網路管理者想利用 Sniffer 等手段來得知 Tor 的連線對象或內容也是幾乎是不可能的事。

除此之外,若有人想藉由架設 Tor Server 來取得 Tor 的連線對象或內容也是可以說是徒勞無功的事。Tor 在連線時會使用 2 至 3 個跳板及 1 個出口點。這 2 至 3 個跳板間只能知道這些網路封包的上一站及下一站,它們無從得知資料的終點及內容。而出口點的確可以取得資料的內容及其終點,但它卻無法知道資料的起點。除此之外,Tor 每條連線的跳板及出口點都是隨機選取的,且即使是同一連線也是約每 10 分鐘就會更換其跳板及出口點,如此可以確保送出資料者的真實身份永難得知。

由上可知,在 Tor 的連線過程中,就像是在剝洋蔥般,必須一層一層得解開才能得到真正的連線內容;但由於 Onion Routing 裡採用了層層加密、多重代理、隨機更換等機制,讓目的網站即使得到了真正的連線內容卻還是難以得知傳送資料者的真實身份。而這也是 Onion Routing 這個名字的由來。

同時,為了確保 Tor 在任何嚴苛的環境下還是能正常運作,Tor 還可以將應用程式的連線包起來,然後再藉由像是 80、443 等最常使用的連接埠和 Onion Routing 連線,最後由 Onion Routing 的出口點來代為轉發。如此不但可以確保網路管理者無法藉由通訊埠來判斷 Tor 的通訊類型,也難以藉由關閉通訊埠來阻斷使用者的連線,也無法限制使用者僅能連上哪些站台,甚至想用種種手段來限制 Tor 的使用也非易事。Tor 可以穿過大部份限制嚴苛的防火牆。

利用 Tor,您可以確保您在 Internet 上的匿名性。您可以自由自在的在 Internet 裡徜徉而不必擔心有任何人在暗地裡記錄著一切。這種自由原是我們早該擁有的,但遲至今日我們在 Internet 上似乎連如此卑微的要求都無法享有。個人並不認為這種情況是我們該忍受的事。

極重要:Tor 的主要功能是確保您的匿名性,而不是確保資料的安全性。所以如果您很在意資料是否會被竊取,請使用 SSLSSHTLS或是 GPG 之類的加密技術搭配 Tor 使用。若您使用明碼通訊,在 Tor 的出口站台將可以輕易得竊取您的通訊資料。
話雖如此,誰也不敢保証利用 Tor 上 Internet 是 100% 安全無虞的。如果 Tor 的使用者所要面對的要脅對象是國家機構的話,那麼即使是使用 Tor 真能保護我們多少呢?把身家性命全賭在 Tor 身上對 Tor 而言實在太過沈重了。而在一些國家機構眼裡,使用 Tor 上 Internet 便是包藏禍心的証據,那麼使用 Tor 反而會惹禍上身也說不定。而這是那些身處不自由國家的人們在使用 Tor 時所該慎重考量的。

(三) - 在 Debian GNU/Linux 上安裝 Tor

要在 Debian GNU/Linux 上安裝 Tor 只要一行指令即可:

apt-get install tor

在安裝好 Tor 後,Tor 會在開機時自動啟動並監聽 9050 這個 Port。您可以查看 /var/log/tor/notices.log 來確認 Tor 是否正確啟動了。之後其它能夠支援 Socks 4/4a/5 代理伺服器的網路應用程式就可以直接連上 9050 埠來確保您在 Internet 上的隱匿性了。

註:Tor 的主要功能是確保您的匿名性,而不是確保資料的安全性。所以如果您很在意資料是否會被竊取,請使用 SSL 搭配 Tor 使用。

但由於 Socks 4/5 在進行 DNS 查詢時先天上就有著潛在的安全問題,建議能儘量以 Socks 4a 和 Tor 連線。倘若應用程式並不支援 Socks 4a,建議能讓 Tor 和 Privoxy 搭配使用,以避免產生無謂的安全問題。

以下是以 Socks 5 和 Tor 連線時,Tor 會在 Log 裡寫入的警告訊息:

[warn] fetch_from_buf_socks(): Your application (using socks5 on port 80) is giving Tor only an IP address. Applications that do DNS resolves themselves may leak information. Consider using Socks4A (e.g. via privoxy or socat) instead. For more information, please see
http://wiki.noreply.org/noreply/TheOnionRouter/TorFAQ#SOCKSAndDNS.

而有關如何讓 Tor 和 Privoxy 搭配使用,我們會在日後再專文介紹。

另外,雖然 Tor 可以確保您的 IP 資訊不會被輕易得由 IP 封包中取得,但還是可能藉由 JavaJavascriptMacromedia Flash、MicromediaShockwaveQuickTimeRealAudioActiveXVBScript 等等技術繞過 Tor 的保護而直接利用網頁元件取得您所使用的 IP。建議您在使用瀏覽器時能關閉 Cookie 及以上元件並搭配 Privoxy 使用,以避免您在無意間洩漏您的真實 IP 了。在 IceWeasel (Firefox) 裡,您可以安裝一些擴充套件來方便得管理或阻擋這些網頁元件,我們會在日後再專文介紹。

對此有些人可能會認為 Tor 的設計是不是有什麼不夠完善的地方。但 Tor 的功用本來就是只著重於隱藏 IP 封包中的啟始 IP 資訊,而阻擋惡意網頁元件的工作則交由其它程式(如 Provixy 或 IceWeasel)來處理,以避免重覆發明輪子。個人認為這是極恰當的作法。


(四) - 在 Microsoft Windows 上安裝 Tor

您可以到 Tor 的官方網頁上下載 Tor & Privoxy & Vidalia bundle(Tor & Privoxy & Vidalia 整合工具包),它包含了:

  • Tor:Tor 本身(含 Tor Server)

  • Privoxy:一個可和 Tor 搭配使用的 HTTP 代理伺服器。下文中會介紹。

  • Vidalia:一個 Tor 的圖形介面設定工具

在安裝完成後,Vidalia 會在開機時載入但預設上不會自行啟動 Tor。您可以在【系統工具列】上看到一個圖示,並在上面按滑鼠右鍵選取【Start】來啟動 Tor:

或者是選取【Configure】,然後在 □ Start Tor when Vidalia starts 前打勾,並按下【Save】按鈕,那麼下次開機時 Tor 就會自動啟動了:

預設上,Tor & Privoxy & Vidalia 整合工具包 裡的 Tor 已設定為和 Privoxy 搭配使用,所以建議您儘量藉由 Privoxy(而不是直接透過 Tor)和 Internet 連線

還有一個名為 TorPark綠色軟體則 是將 Firefox + Tor + Privoxy 整合在一起,並且不用安裝就能使用。您可以把 TorPark 放在隨身碟裡然後在有必要時直接執行,就可以透過 Tor 連上 Internet 了。但在 TorPark 裡的 Firefox 的版本更新速度較慢,如果 Firefox 有任何安全上的更新時,TorPark 往往會跟不上更新進度,而這可能會產生安全上的疑慮。這是 TorPark 在使用上要注意的一個問題。

另外一些使用 Tor 來上 Internet 時的一些注意事項,我們日後將會提到。

(五) - 讓 Privoxy 和 Tor 搭配使用

Privoxy 是一個 HTTP 代理伺服器,常常用來和 Tor 搭配使用。它主要的功能是過濾網頁的內容,像是管理 Cookie、阻擋圖片、移除廣告視窗、進行存取控制等等,以阻擋一些不受歡迎的元件,讓人們在 Internet 上的私密性能得到更進一步的保障。

註:
Privoxy 並不支援 FTP Proxy,所以您無法使用 Privoxy 連上 FTP Server。請替而使用 3proxy 這套軟體和 Tor 搭配使用。
由於 Tor 僅支援 Socks 4/4a/5,但 Socks 4/5 在進行 DNS 查詢時先天上就有著潛在的安全問題,可是又不是所有應用程式都能支援 Socks 4a,所以如果想要經由 Tor 和 Internet 連線時,建議您務必搭配 Privoxy 使用,將能有效避免 DNS Leaks 的問題。

安裝 Privoxy:

在 Debian GNU/Linux 上安裝 Privoxy 只要一行指令即可:
apt-get install privoxy
在安裝好 Privoxy 後,Privoxy 會啟動並監聽 8118 埠。您可以用 netstat 指令或查看 /var/log/privoxy/logfile 來確認 Privoxy 是否正確啟動了。

讓應用程式和 Privoxy 搭配使用:

和 Tor 類似的,Privoxy 所提供的功能是 HTTP 代理伺服器。所以您只要設定好應用程式的 Proxy 資訊即可讓應用程式和 Privoxy 搭配使用了。

在設定好使用 Provixy 後,您可以使用您慣用的瀏覽器連上 http://config.privoxy.org/,如果它出現了類似以下的資訊:
This is Privoxy 3.0.6 on localhost.localdomain (127.0.0.1), port 8118, enabled
就表示您的瀏覽器已是透過 Privoxy 進行連線了。

另外,如果您打算全程使用 Privoxy 來進行防護,建議您能先清空您瀏覽器所有的暫存檔;如果您使用 Privoxy 來管理您的 Cookie,那麼請記得也要清掉 Cookie 資訊。

而 Privoxy 在運作過程中會在 /var/log/privoxy/logfile 中留下一些記錄。您可以查看這個檔案來確認您的 Privoxy 是否已正確運行。如果您不希望留下任何記錄,請修改 /etc/privoxy/config 並把以下三行註解起來:

logfile logfile
jarfile jarfile
debug 1 # show each GET/POST/CONNECT request

並重新啟動您的 Privoxy。

讓 Privoxy 和 Tor 搭配使用:

在 Debian GNU/Linux 裡,Privoxy 是個獨立運作的 HTTP Proxy,也就是說 Privoxy 預設上並沒有設定為和 Tor 搭配使用。若您想讓 Privoxy 搭配 Tor 運作,請在 /etc/privoxy/config 裡加入一行:
forward-socks4a / localhost:9050 .
然後重新啟動 Privoxy,Privoxy 就會將連線轉發給 Tor 處理,那麼日後您在連線上 Internet 後就會同時擁有 Privoxy 和 Tor 雙重保障了。

您可以連上 http://whoami.luna.com.tw/ 來確認您的 IP 是不是您用來上線的 IP。如果不是,那麼您應該已是使用 Privoxy + Tor 上 Internet 的了。

參考資訊:

Privoxy 3.0.6 User Manual


(六) - 讓 Tor 和 Proxy Server 搭配使用

如果您的網路環境被嚴格限定必須藉由像是 Squid 之類的 Proxy Server 才能連上網路,請在 /etc/tor/torrc 中設定如下:

ReachableDirAddresses *:80
ReachableDirAddresses *:443
ReachableORAddresses *:80
ReachableORAddresses *:443
HttpProxy 192.168.1.254:3128
HttpProxyAuthenticator user:passwd
HttpsProxy 192.168.1.254:
3128
HttpsProxyAuthenticator user:passwd
KeepalivePeriod 30

其中的 192.168.1.254 為您的 Proxy Server 的 IP,而 3128 則是它的連接埠;userpasswd 則是您的 Proxy 的帳號密碼。這樣一來,Tor 將會試著只用80/443 這兩個 Port 出去。

警告:
當 Tor/Privoxy 和 Squid 搭配使用時可能會引發嚴重的安全問題,請參考:Warning: Squid Proxy Causes Unavoidable DNS Leaks!。但還好的是,Firefox 1.5+ 都能避過這個問題,所以您還是可以放心得使用 Firefox 透過 Privoxy 連上 Internet。
另外,如果您是 Squid 的管理者的話,請設定您的 /etc/squid/squid.conf 如下:
forwarded_for off

將能更近一步阻止 Squid 將使用者所使用的 IP 資料洩露出去。

如果您網路環境所使用的 Proxy Server 是 Microsoft ISA Server 的話,您可能還得藉助 ntlmaps 這個 NTLM Authorization Proxy Server 才能讓 Tor 順利通過 Microsoft ISA Server。

當然了,如果您的 Proxy Server 的設定極為嚴苛的話,也許 Tor 根本闖不過去也說不定。


(七) - Tor + IceWeasel (一) 避免 DNS Leaks

雖然使用 Tor 可以有效得隱匿我們在 Internet 上的行蹤,但像是 JavaJavascriptMacromedia Flash、MicromediaShockwaveQuickTimeRealAudioActiveXVBScript 等等的網頁元件,以及 Cookie網頁歷史記錄暫存檔... 等等存放在本機的資料,都有潛在的危險性可能會洩漏使用者的私人資訊。

IceWeasel (Firefox) 裡,有不少的設定技巧及擴充套件可用來搭配 Tor 使用,或減少這些危險的網頁元件所帶來的安全問題。例:

避免 DNS Leaks:

在您連上 http://www.debian.org 時,您其實是和 194.109.137.218 這台主機連線。而負責把 www.debian.org 這個名稱轉換成 194.109.137.218 的就是 DNS 的工作。

所謂的 DNS Leaks 攻擊,就是進行 DNS 連線的監聽,從而推敲出您想要存取的網站,並進而採取偽騙、干擾、阻斷連線等種種手段,來讓使用者無法順利連線甚至是連線到偽造的主機去。

所以在進行 DNS 查詢時,也應該要經由 Tor 連線方是較為保險的作法。但是由於 Tor 所使用的 Socks 4/5 允許應用程式自行進行 DNS 解析,亦即它不會透過 Tor 來進行 DNS 查詢,這當然會成為安全上的隱憂。為了避免這個問題,請務必使用搭配了 Privoxy 的 Tor 連上 Internet 方為上策。

若您不想讓 Tor 在運作時還得搭配 Privoxy,請在 IceWeasel 的 about:config 裡,把 network.proxy.socks_remote_dns 的值設定為 true,將能有效避免 DNS Leaks 這個問題:
也就是說,如果您不喜歡 Privoxy 的話,在設定了 network.proxy.socks_remote_dns 之後,您就可以把 Privoxy 關掉了。但這個方法僅限於 IceWeasel 就是了,別的應用程式還是得搭配 Privoxy 使用才行。
(八) - Tor + IceWeasel (二) 方便得切換至 Tor/Privoxy

由於 Onion Routing 是由世界各地的志願者無償提供機器及頻寬架設的 Tor Server 所組成的,再加上僧多粥少,所以在使用 Tor 時一般頻寬都不高。因此,大部份的人只會在連上部份網站時才會切換至 Tor。以下提供了一些可以在一般連線和使用 Tor 間快速切換的方法:

Torbutton

Torbutton 是一個可以用來快速切換至 Tor 的擴充套件。它的工作原理是直接指定 IceWeasel (Firefox) 的 Proxy 資訊。在安裝完成後,您可以在 IceWeasel 的狀態列上看到它的蹤影:

您可以藉由滑鼠點擊來直接 啟用 或 關閉 Tor。以下是它的設定畫面,基本上維持其預設值即可:

SwitchProxy Tool

SwitchProxy Tool 可以用來在多個 Proxy 中方便切換。如果您在上網時有需要在多個 Proxy 中隨時切換時,您可以安裝這個功能比 Torbutton 更為強大的擴充套件。在安裝完成後,就可以在 IceWeasel 的狀態列上看到它的蹤影,您可以利用滑鼠點擊直接在多個 Proxy 中切換,例如:


您可以按下【Manage Proxies】來新增 Proxy。例如,Privoxy 可設定如下:

FoxyProxy:

對於部份的使用者而言,他們可能會希望部份的網站能永遠使用 Tor 上線,其它的則使用一般連線,而不必費心得手動切換 Proxy 設定。FoxyProxy 這個擴充套件可以輕易得達到這個功能。

在安裝完 FoxyProxy 後,您可以在 IceWeasel 的狀態列上看到它的蹤影:

您可以利用滑鼠點擊以進行 Foxy Proxy 的設定:

FoxyProxy 在設定時極為繁複,請掌握以下技巧:
  • FoxyProxy 可以使用 萬用字元正規表示式 來設定 URL。比如說,http://luna.com.tw* 就表示以 http://luna.com.tw 開頭網域裡的所有網頁,但因此就不會包括 http://tetralet.luna.com.tw。

  • FoxyProxy 在比較時使用了 白名單黑名單。白名單表示可以套用此規則,而黑名單則表示不可套用此規則。比如您將*luna.com.tw* 加入了 Tor 的黑名單,那麼您將無法使用 Tor 來連上 luna.com.tw 這個網域裡的任何網頁。

  • FoxyProxy 在決定某個 URL 該使用哪個 Proxy 時,是由上而下一個一個比對的。所以 Default 這項規則要放在最下方免得在其下的規格都失效了。(而事實上,Default 的確只能放在最後一條。)

  • 您也可以在使用過程中,手動將 Tor/Privoxy 設定成預設的連線,功能類似於 SwitchProxy Tool。

  • 進一步資訊請參考 FoxyProxy Quick StartFoxyProxy FAQ

在設定完成後,您可以藉由檢查 FoxyProxy 的 Log 來確認您的設定是否正確。例:

不過使用 FoxyProxy 有個風險,即一個頁面裡有時並不是所有元件都來自同一個網域,(像是本 Blog 的圖片都是放在 Hinet 站上的),那麼使用 FoxyProxy 來載入頁面時,將無法保証所有的連線都是經由 Tor,而這將造成安全上的嚴重問題。若您無法承擔這個風險,請將 Privoxy 設定為預設的連線,或乾脆全程使用 Privoxy 來進行連線。

另外,FoxyProxy 似乎有一個 Bug,就是您在 Default 裡設定了 HTTP 使用 Proxy 的話,它會假定包括 HTTPS 及 FTP 都是使用同一個 Proxy - 而這可能會反而讓使用者無法用 Default 的設定連上 HTTPS 或 FTP 網頁。
(九) - Tor + IceWeasel (三) 阻擋網頁裡的不良元件

NoScrip

NoScript 可以用來阻擋在 Internet 上像是 JavaScript、Java Applet、Macromedia Flash 之類常見的元件。在安裝完成後,就可以在 IceWeasel(Firefox) 的狀態列上看到它的蹤影。以下為其設定畫面:

而被阻擋的元件將以以下圖示取代:

而您也可以方便得暫時允許執行某個站台上的 JavaSctipt。例:

因為很多 IE/Firefox 的安全問題都是出在 JavaScript 上,所以不管您有沒有使用 Tor 都建議您安裝此套件。

Adblock Plus

Adblock Plus 是一個功能強大且易於設定、可以用來阻擋一些不受歡迎的網路元件的 IceWeasel 擴充套件。詳細說明請參考:Firefox 的擴充套件 - Adblock Plus

Flashblock

Flashblock 是一個用來方便得阻擋 Micromedia Flash 元件的 IceWeasel 擴充套件。其詳細說明請參考:Firefox 的擴充套件 - FlashBlock

但如果您安裝了 NoScript 擴充元件,網頁上的 JavaScript 元件將會失效,同時也會使得 Flashblock 擴充套件失去作用。所以您可能會考慮直接用 NoScript 來取代 Flashblock。

但如果您設定在某些網頁上不要啟用 NoScript,此時 Flashblock 還是可以發揮作用。所以同時安裝 NoScript 及 Flashblock 其實也是無傷大雅的...

Stop Autoplay

Stop Autoplay 是個有趣的擴充套件,它原本的功能是讓一些網頁裡的背景音樂或是內嵌影片不會自動播放,取而代之的是顯示如下的一個播放按鈕:

而只有當使用者按下那個播放按鈕,它才會開啟載入這些音樂或影片。但後來 Stop Autoplay 被設計成只有使用者按下那個播放按鈕後,IceWeasel 才會開始下載這些音樂或影片。所以 Stop Autoplay 也可以用來阻擋一些網頁裡的不良元件。

不過它也可以設定成乾脆完全無法載入這些背景音樂:


如果您覺得 Adblock Plus 功能設定過於繁複,Stop Autoplay 將會是極佳的替代品。但 Stop Autoplay 只能用來阻擋音樂和影片,所以 Adblock Plus 還是有著其不可取代的優勢。
(十) - Tor + IceWeasel (四) 管理 Cookie

有很多網頁會讓使用者進行個人喜好設定,以便讓網頁可以針對個人的喜好而顯現出不同的面貌。而這些被收集的資訊多以 Cookie 的方式存放在您的本機硬碟裡。比如說,像是 gmail 之類的 Webmail 系統就必須啟用 Cookie 否則大多都無法正常存取。

由此可知,Cookie 多是用來儲存密碼或是設定存取權限,也因此在個人的使用經驗裡,大多數的網頁裡的 Cookie 都可以放心關閉,以避免無意間讓 Cookie 洩露了您的私密資料。

IceWeasel (Firefox) 裡,有不少的套件可以用來方便得管理您的 Cookie。比如說:

Rmove Cookie(s) for Site:

Remove Cookie(s) for Site 擴充元件是一個可以用來方便得直接移除某個網頁裡的 Cookie。在安裝完成後,只要在 IceWeasel 裡按下滑鼠右鍵就可以看到它的蹤影了:

而您只要按下【Remove Cookie(s) for Site】就可以輕易得移除該網頁裡的 Cookie 了。

CookieSafe:

您還可以用 CookieSafe 這個擴充元件來方便得管理您的 Cookie。為了確保 CookieSafe 能正確運作,請先到 IceWeasel 的偏好設定裡,取消□ 允許網站設定 Cookie,並清除所有的 Cookie


然後在 CookieSafe 安裝完成後,按下 CookieSafe 在 IceWeasel 狀態列上的圖示,並設定【Deny cookie globally】(預設上關閉所有的 Cookie)

您還可以在 CookieSafe 的設定裡,取消 □ Ignore subdomains ,以便進行更精確的控制:

之後,您再針對您能絕對信任的網站,開放它們能使用 Cookie:

這樣就能進一步確保某些不懷好意的站台會不會利用 Cookie 來保存或洩露您的私密資訊了。
(十一) - Tor + IceWeasel (五) 清除暫存資料

為了確保 IceWeasel (Firefox) 在和 Internet 連線的過程中所存放在硬碟裡的暫存資料不會洩漏使用者的私人資訊,也許您覺得有必要讓 IceWeasel 在關閉時順便將您所留下的腳印清除掉。

而 IceWeasel 本身就有提供這個功能了,方法是到 IceWeasel 的【編輯】【偏好設定】【個人隱私】,在 □ 結束 Iceweasel 時清除個人資料 前打勾。除此之外,您還可以設定要清除的是哪些資料:


另外,您還可以取消 □ 清除隱私資料時詢問我,免得每次關閉時 IceWeasel 都要問一次。由上可知,IceWeasel 不管在功能上及擴充性上都是您我上 Internet 時的最佳伙伴,看來是毋庸置疑的了。

(十二) Tor 的 Hidden Service

由於 Onion Routing 是個完全匿名的網路,所以有人就想把 Web 網站架在 Onion Routing 裡,以便讓人們可以放心得在 Onion Routing 裡直接匿名存取,並可以避免洩露伺服器真正的 IP。這就是 Tor 所提供的 Hidden Service。像是著名的 irc.freenode.net 站台就有提供 Hidden Service,它的位址是mejokbp2brhw4omd.onion。而另一個常被提到的 Hidden Service 的站台就是 Hidden Wiki,網址是 http://6sxoyfb3h2nvok2d.onion/,但使用的人目前並不多。

另外,Hidden Service 也可以用來做為某些站台的中繼站,比如說替 Google 架設 Hidden Service 以便讓那些無法存取 Google 的人們能透過 Tor 直接存取 Google。

FoxyProxy + Hidden Service

由於 Hidden Service 僅能經由 Onion Routing 存取,所以如果您使用的是 IceWeasel (Firefox) ,建議您安裝在前文中介紹的 FoxyProxy 擴允套件,並設定如下:

如此就會讓 IceWeasel 自動經由 Tor 來和所有的 .onion 網址連線,那麼就能不必費心去時時手動切換 IceWeasel 的 Proxy 設定了。

用 irssi + tsocks 透過 Tor 上 irc.freenode.net

如果您用 torify (一個 Tor 附的 tsocks 前端程式) + irssi 透過 Tor 上 irc.freenode.net 時,您會得到一個警告:
*** Banned: Tor freenode is hidden-service-only (mejokbp2brhw4omd.onion) - seefreenode.net/irc_servers.shtml. (2006/12/20 08.25)
請換用 Hidden Service 連上 freenode?好吧,讓我們依其指示換用 mejokbp2brhw4omd.onion 吧:
22:56 -!- Irssi: Looking up mejokbp2brhw4omd.onion
22:56 -!- Irssi: Unable to connect server mejokbp2brhw4omd.onion port 6667 [未知的名稱或服務]
DNS 無法解析?那這下子怎麼辨?

解決方案是在 /etc/tor/torrc 中設定如下:
mapaddress 10.40.40.40 mejokbp2brhw4omd.onion

並重新啟動 tor,然後您就可以用 irssi 直接連上 10.40.40.40 來存取 mejokbp2brhw4omd.onion 了。且此時是直接用指定 ip 連上 Onion Routing 的,在此情況下可以不必擔心是否會發生 DNS Leaks 的問題。

用 irssi + socat 透過 Tor 上 irc.freenode.net

在上例中是用 torify + irssi 連上 irc.freenode.net 的,由於 irc.freenode.net 有提供 Hidden Service,所以並不會發生 DNS Leaks 問題。但如果您要連上的是其它不提供 Hidden Service 的伺服器時,使用 torify 就不是什麼好主意了。

解決方案之下是換用 socat。socat 是一個連線轉發程式,它可以將任何連線以另外一種型式轉發出去。使用方式如下:
socat TCP4-LISTEN:6777,fork SOCKS4A:localhost:mejokbp2brhw4omd.onion:6667,socksport=9050 &
這樣它就會監聽本機的 6777 埠,並會將傳入的連線以 SOCKS4A 方式轉發給 localhost 9050 埠處理,並指定連線目的為mejokbp2brhw4omd.onion6667 埠。

那麼,您就可以用以下指令和 irc.freenode.net 的 Hidden Service 連線了:
irssi -c 127.0.0.1 -p 6777 -n Tetralet
而 Debian 官方就有提供 socat 套件,直接用 apt-get/aptitude 安裝即可。
(十三) - 藉由 Tor 上 MSN 及其它網路服務

也許有人對於 Tor 所提供的匿名性不以為然。但請您先上各大查查什麼是 MSN Sniffer,再懷著新的恐懼回來本主題吧!

雖然 Tor 根本不是用來秘密通訊之用的,但利用 Tor,您可以輕易得把大多數的網路程式,像是 GAIMMSN MessengerYahoo MessengerirssiwgetIcedove (Thunderbird) 等等直接轉換為銳不可當的秘密通訊軟體 - 至少資訊在流出您的區域網路之前,它都是加了密的,而那些不懷好意的網路管理者若想得知您的通訊內容可能得費上極大功夫最後卻還是一無所獲。

但這些資料在流出 Tor 的出口點(exit node)後將會還原為原始資料,且往往是明文資訊。因此,若您很在意資料是否會被竊取,請務必搭配 SSL 使用,或是搭配 Hidden Service,如果該伺服器有提供的話。

而這些網路程式若要搭配 Tor,方法都如出一轍:

  • 若該網路程式支援 HTTP Proxy,則將其 HTTP Proxy 指定為 127.0.0.1:8118 即可。該程式就會藉由 Privoxy 連線。

  • 若該網路程式支援 Socks 4A Proxy,則將其 Socks 4A Proxy 指定為 127.0.0.1:9050 即可。該程式就會藉由 Tor 連線,且能避免 DNS Leaks 問題。

  • 若將要連上的伺服器提供 Hidden Service,則直接使用 tsockstorify (一個 Tor 附的 tsocks 前端程式) 連線即可。

  • 若該網路程式既不支援 HTTP Proxy、也不支援 Socks 4/4A/5,解決方案是搭配 socat 使用。
MSN Messenger 為例:

而在 Gaim 裡,設定方法也是類似:

另外,在 GAIM 裡,您只能透過 SOCKS 5 來連上 IRC 頻道。但根據目前手上資料及實地測試指出,使用 GAIM 透 Tor 上 IRC 並不會發生 DNS Leaks 的問題。請放心使用。

除此之外,您可以參考以下資訊來取得如何讓其它程式搭配 Tor 使用:

TheOnionRouter/TorifyHOWTO
由於該站資料極為豐富,在此就略過不多加介紹了。

(十四) - 架設 Tor Server(事前準備篇)

要在 Debian 上架設 Tor Server 並非難事。但由於 Tor 的 Debian Package Maintainer 因種種原因建議不要讓 Tor 搭配 Debian Etch 發行,所以現在 Tor 一直都只存在於 Sid 中。而這是很煩人的事,因為沒有幾個 Debian User 會用 Debian Sid 甚至是用 Debian testing 來架設 Server。

如果您不在乎,那麼就讓我們來試著架設 Tor Server 吧!

將 Swap 加密

在 GNU/Linux 裡,若記憶體不敷使用時,常常會借助 Swap 來模擬成記憶體。但如果電腦關機了,Swap 裡的資訊將不會被清除掉,而這將產生極嚴重的安全問題。

解決方案之一是將 Swap 以隨機產生的密鍵加密,等到關機了,這個隨機產生的密鍵也將跟著消失。如此可以確保 Swap 裡的資訊永難被人解讀。

要將 Swap 加密,首先請安裝 cryptsetup 套件:
aptitude install cryptsetup
接下來修改 /etc/crypttab 如下:(其中的 /dev/hda7 為您的 Swap 分割區)
#
swap /dev/hda7 /dev/urandom swap

並修改 /etc/fstab 中的 swap 那一行如下:
#
/dev/mapper/swap none swap sw 0 0

接下來重開機。您會注意到開機時會出現類似以下的資訊:
Jan 14 20:59:52 gateway kernel: Adding 1839400k swap on /dev/mapper/swap. Priority:-1 extents:1 across:1839400k
/proc/swaps 的內容將會包含以下資訊:
# cat /proc/swaps
Filename Type Size Used Priority
/dev/mapper/swap partition 1839400 0 -1

然後執行 dmsetup table 指令,應該會有類似以下的資訊輸出:
swap: 0 3678822 crypt aes-cbc-plain b2ac397c804bf82c555b7100567dc171abaab01c3b11d3d31acdac1aad54db8c 0 3:7 0
就表示您的 Swap 已成功得加密了。

讓 /tmp 使用 tmpfs

一般而言,若將記憶體模擬成磁碟並拿來做為 /tmp 的話將會有效加快一些應用程式的執行速度。而相同的,有些暫放在 /tmp 下的資料如果在關機後被人拿去解讀的話也會產生安全上的問題。所以若能將 /tmp 放在記憶體裡,不但能增進系統的速度,在關機後 /tmp 裡的資料也將跟著消失,這將是一舉兩得的做法。

在 Debian GNU/Linux 裡,預設上就會把記憶體拿來模擬成磁碟了,也就是您在 df 指令裡所看到的 /dev/shm。由於系統記憶體十分寶貴,所以 /dev/shm 會動態調整其大小,但您還是可以修改 /etc/default/tmpfs 來指定其限額,例:

# SHM_SIZE sets the maximum size (in bytes) that the /dev/shm tmpfs can use.
# If this is not set then the size defaults to the value of TMPFS_SIZE
# if that is set; otherwise to the kernel's default.
#
# The size will be rounded down to a multiple of the page size, 4096 bytes.

SHM_SIZE=200m

然後請再修改 /etc/fstab 讓 /tmp 在開機時能掛在 /dev/shm 上,例:
#
tmpfs /tmp tmpfs size=100m,mode=1777 0 0
設定完成後,重新開機您就會發現 /tmp 己經掛在 tmpfs 上了:
~# df
檔案系統 1K-區段 已用 可用 已用% 掛載點
tmpfs 102400 0 102400 0% /tmp

時間同步

建議您能安裝 ntpdate 套件來讓您的機器在開機時會自動對時。您也可以在任何時候以 root 身份使用以下指令來進行對時:
ntpdate stdtime.sinica.edu.tw

能正確解析 DNS

為了讓您的 Tor Sever 能替使用者進行 DNS 解析,請確認這台機器本身的 DNS 設定無誤。一般而言,使用 Hinet 的 DNS Server 是個不錯的主意。請修改 /etc/resolv.conf 如下:
nameserver 168.95.192.1
然後用 host 指令來確認您的機器是否能正確進行 DNS 解析。例:
# host www.google.com.tw
www.google.com.tw is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 66.249.89.104
www.l.google.com has address 66.249.89.99
www.google.com.tw is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.google.com.tw is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.

而 host 指令包含於 bind9-host 套件之中。請用 apt-get/aptitude 指令安裝即可。

虛擬主機技術

如果您擔心使用 Tor Server 會發生什麼安全上的問題,建議您能使用 chroot、VServer 或 Xen 等虛擬主機來執行 Tor Server。

而使用 chroot 來架設 Tor 的詳細步驟請參考:

TheOnionRouter/TorInChroot


(十五) - 架設 Tor Server!

要在 GNU/Linux 上架設 Tor Server 絕非難事 - 您只要修改 Tor 的設定檔、並設定好防火牆讓 Tor 能夠連線,然後重新啟動 Tor 即可。

但當 Tor 使用者利用 Tor 上 Internet 時,所被記錄的 IP 其實是用來當作出口點(exit node)的 Tor Server 的。這將可能會替 Tor Server 的架設者帶來不必要的麻煩。如果您想架設 Tor Server,建議您先閱讀以下資訊:

Legal FAQ for Tor Server Operators

而或者,您可以指定您的 Tor Server 只願當中繼點而不要做出口點。

編輯 /etc/tor/torrc

Tor Server 的設定檔為 /etc/tor/torrc。您可以修改它讓 Tor Server 能符合您的需求。例:

指定您的 Server 的基本資料

## Required: A unique handle for this server
# 指定 Server 的暱稱
Nickname Luna

## The IP or fqdn for this server. Leave commented out and Tor will guess.
#Address noname.example.com
# 指定 Server 的完整網域名稱
Address tor.luna.com.tw

## Contact info that will be published in the directory, so we can
## contact you if you need to upgrade or if something goes wrong.
## This is optional but recommended.
## You might also include your PGP or GPG fingerprint if you have one:
#ContactInfo 1234D/FFFFFFFF Random Person

# 指定該 Server 的聯絡人
ContactInfo Tetralet

指定所監聽的 Port

Tor 會監聽兩個 Port:

  • ORPort:Tor Server 用的連接埠

  • DirPort:Tor Directory Server 用的連接埠(非必要)

一般而言我們會建議將 ORPort 及 DirPort 設定為 80/443,以便能讓那些位於管制嚴密的防火牆內部的使用者還是可以利用這兩個最常用的連接埠和 Onion Routing 連線。但在 GNU/Linux 上,多半不會以 root 來執行 Tor Server,(例如在 Debian 上就是以debian-tor 這個帳號來啟動 Tor 的),所以在此情況下 Tor Server 是無法 bind 在 80/443 埠上的。取而代之的,您可以公告您的 Tor Server 正在監聽 80/443 埠,但還是指定 Tor Server 監聽任意 1024 以上的連接埠,然後用 iptables 來進行轉埠:

## Required: what port to advertise for tor connections
# 公告正在監聽的 Port
ORPort 9001
## If you want to listen on a port other than the one advertised
## in ORPort (e.g. to advertise 443 but bind to 9090), uncomment
## the line below. You'll need to do ipchains or other port forwarding
## yourself to make this work.
# 指定真正在監聽的 Port。(非必要)
# 如果您的機器沒有執行 HTTPS Server,
# 您可以公告您用的是 443 Port,
# 並用 iptables 將
443 連線轉至這個 Port 上。
# ORPort 443
# ORListenAddress 0.0.0.0:9001

## Uncomment this to mirror the directory for others. Please do
## if you have enough bandwidth: see the bottom of
## http://wiki.noreply.org/noreply/TheOnionRouter/TorFAQ#LimitBandwidth
# 公告您要做為 Dirtory Server,以及監聽的 Port(非必要)
DirPort 9030 # what port to advertise for directory connections
## If you want to listen on a port other than the one advertised
## in DirPort (e.g. to advertise 80 but bind 9091), uncomment the line
## below. You'll need to do ipchains or other port forwarding yourself
## to make this work.
# 指定真正在監聽的 Port。(非必要)
# 如果您的機器沒有執行 HTTPS Server,
# 您可以公告您用的是 80 Port,
# 並用 iptables 將 80
連線轉至這個 Port 上。
# DirPort 80
# DirListenAddress 0.0.0.0:9030

設定 exit policy(出口政策)

就如前言所說,當使用者利用 Tor 上 Internet 時,所被記錄的 IP 其實是用來當作出口點(exit node)Tor Server 的。而這的確會讓人不太舒服。您可以指定您只願當中繼點而不要做出口點:
## A comma-separated list of exit policies. They're considered first
## to last, and the first match wins. If you want to _replace_
## the default exit policy, end this with either a reject *:* or an
## accept *:*. Otherwise, you're _augmenting_ (prepending to) the
## default exit policy. Leave commented to just use the default, which is
## available in the man page or at http://tor.eff.org/documentation.html
##
## Look at http://tor.eff.org/faq-abuse.html#TypicalAbuses
## for issues you might encounter if you use the default exit policy.
##
## If certain IPs and ports are blocked externally, e.g. by your firewall,
## you should update your exit policy to reflect this -- otherwise Tor
## users will be told that those destinations are down.
##
#ExitPolicy accept *:6660-6667,reject *:* # allow irc ports but no more
#ExitPolicy accept *:119 # accept nntp as well as default exit policy
ExitPolicy reject *:* # middleman only -- no exits allowed

若您不在乎惹上什麼麻煩,您可以將您的 Tor Server 設定為出口點。其建議設定如下:
# ExitPolicy reject 0.0.0.0/8 # Reject non-routable IP's requests
# ExitPolicy reject 169.254.0.0/16 # Reject non-routable IP's requests
# ExitPolicy reject 127.0.0.0/8 # Reject non-routable IP's requests
# ExitPolicy reject 192.168.0.0/16 # Reject non-routable IP's requests
# ExitPolicy reject 10.0.0.0/8 # Reject non-routable IP's requests
# ExitPolicy reject 172.16.0.0/12 # Reject non-routable IP's requests
# ExitPolicy reject *:25 # Reject SMTP for anti-spam purposes
# ExitPolicy reject *:119 # Reject NNTP (News Network Transfer Protocol)
# ExitPolicy reject *:135-139 # Reject NetBIOS (File sharing for older versions of windows)
# ExitPolicy reject *:445 # Reject Microsoft-DS (a.k.a NetBIOS for newer NT versions)
# ExitPolicy reject *:1214 # Reject Kazaa
# ExitPolicy reject *:4661-4666 # Reject eDonkey network
# ExitPolicy reject *:6346-6429 # Reject Gnutella networks
# ExitPolicy reject *:6699 # Reject Napster
# ExitPolicy reject *:6881-6999 # Reject (Dark Star) deltasource & Bittorent network
# ExitPolicy accept *:* # Accept the rest of 65535 possible ports

ExitPolicy
reject 0.0.0.0/8,reject 169.254.0.0/16,reject 127.0.0.0/8,reject 192.168.0.0/16,reject 10.0.0.0/8,reject 172.16.0.0/12,reject *:25,reject *:119,reject *:135-139,reject *:445,reject *:1214,reject *:4661-4666,reject *:6346-6429,reject *:6699,reject *:6881-6999,accept *:*
而在您的 Tor Server 啟動之後,您的 Server 的資料將會出現在 Vidalia 的伺服器列表裡:

而同時,您的資料將會出現在 /var/lib/tor/cached-routers 裡。另外,/var/lib/tor/keys/secret_id_key 為您的身份密鑰,如果您的 Tor Server 在日後進行軟體昇級或是移機時將會用得著,請妥善保存並注意不要輕易洩露給任何人。

限定頻寬:

由於我們很可能無法讓所有的頻寬都給 Tor Server 使用,所以您可能會希望進行頻寬的控管:
## BandwidthRate is the maximum long-term bandwidth allowed (bytes per second).
# 平均頻寬
BandwidthRate 20 KB


## BandwidthBurst is a pool of bytes used to fulfill requests during short
## periods of traffic above BandwidthRate but still keeps the average over a
## long period to BandwidthRate. A low Rate but a high Burst enforces a
## long-term average while still allowing more traffic during peak times if
## the average hasn't been reached lately.
# 瞬間最高可用頻寬
BandwidthBurst 30 KB

設定 iptables 規則

在設定好 /etc/tor/torrc 後,您可能要更改您的防火牆的設定,讓 Tor Server 可以對外通連。例如:
ServerIP=11.22.33.44

iptables -A INPUT -i eth1 -p tcp -d $ServerIP --dport 9001 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -d
$ServerIP --dport 9030 -j ACCEPT
如果您公告了您所使用的是 80 和 443 Port,並想用 iptables 來進行轉 Port,您可以替而設定如下:
ServerIP=11.22.33.44

iptables -t nat -A PREROUTING -i eth1 -p tcp -d
$ServerIP --dport 443 -j REDIRECT --to-ports 9001
iptables -t nat -A PREROUTING -i eth1 -p tcp -d
$ServerIP --dport 80 -j REDIRECT --to-ports 9030
iptables -A INPUT -i eth1 -p tcp -d
$ServerIP --dport 9001 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp -d
$ServerIP --dport 9030 -j ACCEPT
而如何設定良好的 iptables 規則不在本文的範圍之內,在此就略過不介紹了。

啟動 Tor Server

請下達:
/etc/init.d/tor restart
就可以以新的設定重新啟動 Tor Server 了。請觀察 /var/log/tor/log 裡的內容是否有類似以下的訊息:
# 找到 Tor 的識別碼
Jan 14 23:46:44.164 [notice] Your Tor server's identity key fingerprint is 'Lunar 257E 615A D357 019C B4FC 471A 7C04 4A7D 31DF 9E14'

# 自我測試所設定的 Tor Directory Server 的 Port 是否可以通連
Jan 14 23:46:56.129 [notice] router_dirport_found_reachable(): Self-testing indicates your DirPort is reachable from the outside. Excellent.

# 自我測試所設定的 Tor Server 的 Port 是否可以通連
Jan 14 23:47:28.256 [notice] router_orport_found_reachable(): Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
如果有,就大功告成了。您的 Tor Server 會在極短的時間內成為 Onion Routing 的一員,然後位於世界各地的 Tor 使用者就會藉由您的機器進行匿名通訊了。

在 Tor Server 上線後,您會發現您的 Tor Server 會異常忙碌,因為現今上線中的 Tor Server 約只有 1,000 台,但使用者卻至少有數萬甚至數十萬以上,如此僧多粥少的狀況使得每台 Tor Server 其頻寬往往都是滿載。但由於在台灣的網路環境裡,ADSL 的上傳頻寬實在低得可憐,所以只能說各盡其力了。

參考資訊:

Configuring a Tor server

Configuring Hidden Services for Tor

How to Run a Secure Tor Server


(十六) - Tor 的爭議

很多人不喜歡 Tor,因為 Tor 的匿名性讓他們十分介意;他們不喜歡和透明人打交道。

但這種說法於情於理其實是站不太住腳的。在 Internet 上的網站多是允許匿名存取的,那麼是不是使用 Tor 來連線其實是無關緊要的。而一些網站需要有正確的帳號密碼才能存取,那麼只要對方能提供正確的帳號密碼,那麼就算它是使用 Tor 連上來的又如何?

並 且,除了 Tor 之外,想用難以追查的 IP 來上網也不是什麼難事。像是去網咖上網、利用圖書館的公共電腦上網、到有提供 Wireless 的營業場所上網、使用 ISP 的 Proxy 上網、甚至去弄個偽造的身份或是搞台無辜的電腦或網路設備當跳板,都能夠有效達到隱匿 IP 的效果。

如果說,您擔心 Tor 成為 Internet 上的犯罪工具,那麼其實 Internet 上犯罪手法多的是,封鎖 Tor 對於遏阻犯罪並無多大效益。就像詐騙集團常利用電話來進行詐騙,那麼禁止使用電話就能遏阻詐騙集團繼續犯罪了嗎?Tor 是個保障你我在 Internet 上能免於恐懼的私密軟體,我們不該只因為部份人士拿 Tor 來做壞事就全盤否定 Tor 的價值。

並且,現今 Internet 上的 IP 假冒手法層出不窮,光憑 IP 記錄是難以作為呈堂証供的。對於電信警察而言,藉由種種方式來刺探出對方的真實身份應該算是本職學能之一吧?如果電信警察只因對方使用的是難以追查的 IP 所以案子就辨不下去,或者天真得以為只憑幾次的 IP 記錄就已經正確無誤得掌握對方身分,那麼個人認為,與其依賴這樣的警察,不如還是用 Tor 想辨法自保方為上策。

但如果您還是認為,只有那些心懷不軌的人們才會使用 Tor、才會想隱匿自己的 IP,那麼,您可以試著用像是 Ethereal (Free Software) 之類的 Sniffer 軟體來截取您的 MSN、HTTP、POP3、SMTP、IRC 及 FTP 封包,然後您或許就能了解到人們在 Internet 上可以說真的沒有任何隱私可言的。

也許您還是會認為:這和我何干?只要行得正、坐得直、對得起天地良心,那麼帝力於我有何哉?但或許我們該讀讀以下 Pastor Martin Niemöller 的著名詩句:

They came first for the Communists, and I didn't speak up because I wasn't a Communist.
起初,他們追殺共產主義者,我沒有說話,因為我不是共產主義者;

Then they came for the Jews, and I didn't speak up because I wasn't a Jew.
接著,他們追殺猶太人,我沒有說話,因為我不是猶太人;

Then they came for the trade unionists, and I didn't speak up because I wasn't a trade unionist.
後來,他們追殺工會成員,我沒有說話,因為我不是工會成員;

Then they came for the Catholics, and I didn't speak up because I was a Protestant.
此後,他們追殺天主教徒,我沒有說話,因為我不是新教教徒;

Then they came for me, and by that time no one was left to speak up.
最後,他們奔我而來,卻再也沒有人站起來為我說話了。

今天,他們要求我們放棄匿名通訊。接下來,他們會要求所有的 Blog 都得具名登記。不久之後,他們會要求郵件審查合法化。然後,像是 SSL、SSH、GPG 等加密通信也會被禁止。終有一天,我們會發現我們放棄了所有,卻怎麼也換不到我們想要的美麗世界。

(十七) - 封鎖 Tor!

就如前言所說的,個人並不認為封鎖 Tor 是個好主意。但以技術上而言,如果身為網路管理者的您若想封鎖 Tor 其實並非難事。

首先,Tor 為了避免連上假冒的 Onion Routing,所以有數台用來提供 Tor Server 完整列表的 Tor Directory Server 其 IP指紋碼 等資訊是寫死在程式碼裡的。封鎖這幾台 Tor Directory Server 就能夠有效阻止 Tor Client 連上 Onion Routing 了。

註:
Tor Client 在成功和 Onion Routing 連線後,會同時得到一份上線中的 Tor Directory Server 列表,此後即使無法和那幾台 Tor Directory Server 連線,Tor Client 還是可以根據這份列表試圖連上 Onion Routing。所以封鎖這幾台 Tor Directory Server 未必能有效阻止 Tor Client 上線。

另外,Tor Client 只會試著使用少數幾個 Port 和 Onion Routing 連線。封鎖這幾個 Port 也能有效阻止 Tor Client 和 Onion Routing 連線。

而每台 Tor Client 都能向 Tor Directory Server 取得即時的 Tor Server 的完整列表,所以任何人也都可以用相同手法取得這份即時的完整列表,進而加以封鎖、干擾或阻斷。您可以據此時時修正防火牆規則,以阻止使用者連上 Onion Routing 或是阻止 Tor 使用者和您的站台連線,甚至採取更近一步的攻防手段。

另外也有站台根據這份即時 Tor Server 完整列表建立 DNS 反向查詢資訊,並提供一些 PHP 語法來判斷對方是不是使用 Tor 連線的。當然,除非您很信任這些站台所提供的資訊,否則個人並不建議您採用這種作法。

而 Tor 官方網站也提供了一個小小的 Script 可用來取出 Tor Server 的完整列表,但所採用的方法都極為類似,在此就不再多加說明了。

另外,某些專制政府阻擋 Tor 的做法則是在國內外撒下大量的假 Tor Server,若 Tor 使用者以這些 Server 做為出口點(exit node)的話(而出口點是 Tor 在連線的過程中隨機選取的),這些 Tor Server 將會以最高標準檢查其通訊內容,必要時會阻斷 Tor 的連線。所以若您連上了 Onion Routing 但似乎網頁怎麼等都出不來時,請重新連線即可。

所以說其實 Onion Routing 並沒有想像中堅不可摧,而有不少人可是急著要把 Tor 的火給滅了呢!

(十八) - 您該信任 Google 嗎?

Google 一向對於開放原始碼社群頗為友善,像是 Google 常常直接資助或參與某些開放原始碼計劃,而不是像某些公司喜歡自己重新開發。一些著名專案,像是 ApacheLinux KernelMySQLFirefoxOpenSSH 等等,都可以看到 Google 的身影。另外,Google 的伺服器叢集據說全都是由 GNU/Linux 架構而成的。而一些應用程式,像是 Google Picasa 2,Google 在買下後不久也釋出了 Linux 版本,雖然是用 WINE 模擬的。

所以開放原始碼社群對於 Google 頗有好感。也因此,像是 UTFG (Use the Fucking Google) 這種社群常用語的出現也不會太令人意外了。

Google 還有一個有趣的『Don't Be Evil』的信條。Google 將秉持著人類的良知行事,絕不會一切都以商業目的為唯一考量。比如說,之前 美施壓取搜尋資料 Google 拒配合 事件就把 Google 在人們心中的形象推向了新高峰。Google 可以說是 Internet 世界裡一股無可抵禦的清新力量。

但美麗的事物是不會長久的,Google 幻夢終究還是有破滅的一天:

Google 的中國政策

為了打入中國市場,Google 決定完全配合中國政府的資訊管制政策,此後身在對岸的人們別想從 Google 中國 得到任何中國政府不喜歡的資訊了。雖然 Google 講得好聽:『我們只是遵從當地政府指示,過濾了一些對當地人們身心有害的資訊』,但這只是展現了 Google 也很會硬拗的一面罷了。

讓全人類 15% 的人無法接收到任何資訊,還是讓 0.1% 的『有害』資訊被過濾掉?很明顯 Google 寧願選後者。但我想就算是 Google 也不好意思說這是在實踐它那個『Don't Be Evil』信條吧?

比如說,當對岸的人們在 Google 中國 上搜尋『中華民國』、『天安門事件』卻一無所獲時,那麼您怎麼知道您用其它關鍵字查詢 Google 的結果是不是有被動過什麼手腳?我們還能再相信 Google 的查詢結果嗎?

在商言商,為了市場佔有率 Google 的作法其實也是情有可原。只是之前硬頸的 Google 到哪裡去了?大聲喊出的『Don't Be Evil』難道只是好聽的廣告詞?今天 Google 願意配合進行資訊管制,日後難保 Google 不會提供 GMail/GTalk 的使用者資料來做為呈堂証供。反正 Google 會讓步也不是啥新鮮事了。

Google 逼得對岸的人們不得不用 Tor 之類的私密軟體來連上 Google。Google 那個『Don't Be Evil』信條就像寫在沙灘上的字,一個小浪就可以抹拭得乾乾淨淨了。

Google 在收集您的資訊!

為了能讓 Google 的搜索引擎結果更加精確,Google 會收集人們在底在 Google 上搜尋了什麼等等相關資訊,並同時會把這些資訊放在本機的 Cookie 裡。個人認為,Google 想收集這些資訊乃是必要之惡,我們實在沒必要為此而過度反應。只是個人還是把 Google 的 Cookie 關閉了,這對 Google 的功能完全沒有任何影響。

不久之前 Google 推出了 1G 空間 GMail 服務。Google 的目的昭然若揭:Google 就是想利用 Gmail 來收集使用者的資料。當然了,藉由使用者郵件往來的內容來分析歸納人們的喜好、行為、思想、習慣... 等等資訊,並據此改善 Google 的搜索引擎,這或許是無可厚非的;只是從此之後,您在 Google 面前就完全沒有秘密可言了。不過反正願者上鉤,若您不喜歡,不要使用 Gmail 即可。

註:
您可以利用 GPG 技術來確保您的重要信件內容絕對無法被人窺探。有機會筆者將會再專文介紹。這也是個人並不反對使用 GMail 的原因之一。

還有,有在用 GMail 的人都知道,Google 會將您的搜尋過的關鍵字記錄在 GMail 裡。您在 Google 上的一舉一動其實並不是被匿名記錄的,而這的確讓人不太舒服。不過您可以拒絕使用 Web 版的 GMail 並關閉 Google 的 Cookie 來避過這個問題。

後來 Google 又推出了 Google Talk 服務。個人認為這又是 Google 另一個收集資訊的好管道。反正大家 IRC、 MSN Messenger 或 Yahoo Messenger 用那麼久了,再多一個 Google Talk 也是無妨。且如果 Google 能推出功能比 MSN Messenger/Yahoo Messenger/Skype 更為強大的 Linux 版 Google Talk,那其實個人是很樂觀其成的。

不過現實歸現實,其實 Google Talk (Win32) 的功能還是很陽春,而 Linux 版的則根本沒看到任何蹤影。Google 是世上前十大科技公司?不禁令人懷疑...

註:
Google Talk 使用的乃是開放的 XMPP Protocol。預設上它會使用 TLS 技術加密,所以 Google Talk 比起 MSN Messenger/Yahoo Messenger 是安全多了。
Google 竭盡所能得在收集人們在 Internet 上的一舉一動,而人們願意接受的原因之一是人們總相信 Google(似乎)不是家邪惡的公司,Google 絕不會背棄它『Don't Be Evil』的信條。一想到我們的隱私權竟然是建立在這種脆如薄冰的信賴基礎上,不禁讓人覺得人們是不是過於天真善良了?

Google 也是一種資訊管制?

眾所皆知,Google 是目前市佔率最高的搜尋引擎。所以說,如果有什麼資料是 Google 沒有收集到的,那麼跟它們根本不存在 Internet 上是一樣的。那麼,如果 Google 刻意排除或扭曲某些資訊,那麼這是不是一種新的『焚書坑儒』手段呢?

比如說,在 Google 上個人只會看中文、英文和一點點日文網頁。相信世界上其它的人情況也是類似。若單以全世界的文件數量來評比的話,英文將成為 Google 上被點閱數次最多的語言,而其它的語言的網頁恐將從 Google 上淘汰!

而另外一個例子是 Google Maps 日前將台灣標註為『Taiwan, Province of China』。這種嚴重的誤謬雖經網友大力抗爭但 Google 在修正後不久又把原文放回去了。

還有曾發生過 Google 刻意提高自己產品在 Google 中的排名順序,或是被控告說刻意降低對手在 Google 的排名順序。雖然 Google 要怎麼判斷哪個網站該排在前面我們外人的確是無權置喙,不過對照 Google 的『Don't Be Evil』信條,Google 是在自毀長城嗎?

雖到後來,Google 對於網頁排名已改由儘量以當地語言為優先;Google Maps 上的台灣標註也修正了;那些插隊的 Google 產品也回歸為其應有的排名順序。但是這些事件正在警示我們:Google 是 Internet 的資訊管制者。如果有一天 Google 違背了它那著名的『Don't Be Evil』信條,而人們卻毫無知覺,這不是件很可怕的事嗎?但很不幸的,這種事正在發生中...

個人認為,Google 已失去它原本的堅持。什麼 Internet 烏托邦都只是人們對 Google 太過一廂情願的想法罷了。商業公司畢竟還是商業公司,我們是否該把一切期望都寄托在一家商業公司上?這的確值得我們深思。

(完) - 就算世界可能因而毀滅,妳還是要尋求真正的歷史本文嗎?

若說現今的政治人物真有什麼共同的願望,我猜應該會是『如何長久保有政權』吧?

或許有人會認為,在現今的文明社會裡,『勤政愛民、努力為人們謀福利』才是長保政權的唯一法則。但這種天真的想法其實是行不通的-『誰能掌握輿論, 誰就能掌握政權』,想辨法迎合人民的喜好、吸引眾人的眼光、激發大眾的情感、並進一步產生仇恨紛爭和對立,以製造對自己有利的潮流才是掌握輿論的最有效手 段。默默得為人民辛苦打拼做事是不會獲得視聽大眾的青睞的!

如果這樣還不夠,就再想辨法進行造神運動、思想拑制、資訊控管。就算是天大的謊言,說上 1000 遍就會變成真理。如果人們就這樣懞懂無知、思想潔淨、只會隨著在位者高喊『有夢最美、希望相隨』,管理起來就比較容易了,不是嗎?

而至於那些不一樣的聲音,最好是能消失在虛無中-人們的世界就是由眼耳鼻舌身意所構成的,如果反動的思想從沒有被任何人聽到過,那麼和它們根本不存 在是沒有分別的。比如說,在 Internet 上如果有什麼資料無法在 Google 或 Yahoo 找到,那麼和它們根本不存在於 Internet 上是一樣的。所以,管制好 Google 和 Yahoo 之類的搜索引擎就成了拑制 Internet 資訊的最佳手段。而事實上某些國家就真的這麼做了。

在《百年孤寂》裡,有一段說到當時的政府為了鎮壓罷工而展開了大屠殺。但因為滅跡工作做得太完善了,導致沒有人相信曾發生過這種事。『…但 在往後的幾十年裡,席根鐸不斷得告訴後代人,說他親身經歷過這件事,這是千真萬確的暴政,他要永遠為歷史作証。他代表人類的良知、勇氣和正義。然而,到他 老死,他的呼聲是那麼微弱,有誰相信他為歷史作證的話呢?(《百年孤寂》的魔幻人生/代譯序 楊耐冬)

也許您對這種小說情節嗤之以鼻。但事實上,像是中國大陸著名的『The Great Firewall of China』,所進行的就是 Internet 上的思想審查;而台灣前後任執政黨掌控人民思想的功力也不遑多讓。更糟的是,隨著民智已開,當權者資訊管制的手法也就更加縝密隱晦更加難以察覺,甚至只能以『嘆為觀止』來形容。

比如說,之前我們陳水扁總統身陷『國務機要費』風暴時,陳總統捏造出了「南線專案」企圖脫罪,而《自由時報》則活靈活現得配合報導「甲君」如何和總統府幕僚在 北一女校門口「一手交錢一手交貨」,但事後都被檢察官拆穿全是瞎掰的。但您可以猜到的,有個立場超然『新聞公害防治基金會』評論說《自由時報》是 2006 年最少報導烏龍新聞的媒體;同時『世新大學』發表民調顯示《自由時報》是 2006 年公認最公正客觀的媒體。更有趣的是,長久以來,《自由時報》的閱報率可是大幅領先各大報,果然現實永遠比小說更驚奇!

而 Google 也自甘做為中國政府的打手。Google 配合中國政府進行嚴苛的資訊控管,對岸的人們在 Google 中國 上是再也搜尋不到像是『中華民國』、『天安門事件』、『同性戀』、『啤酒』這類對身心有害的資訊了,看來用 Google 長大的小孩是不會變壞的。只是對照 Google 的『Don't Be Evil』的信條,這一切荒謬到讓人不禁啞然失笑。

另外,美國政府在 911 事件發生後,也在極短時間通過了備受爭議的《愛國者法案》。根據 該法案,執法單位可以在沒有法庭授權的情況下,逕行搜查、竊聽、跟監、拘留,或調閱公民的資料紀錄。後來雖遭遇極大反對聲浪,甚至連紐約市,也就是 911 事件的發生地,也認為《愛國者法案》賦與了執法單位過多的調查權,反而嚴重侵犯到人們的隱私權。但在 2005 年,《愛國者法案》其中的 14 條臨時條款還是經過表決成為永久性條款。

Yahoo曾被指 控因提供電子郵件的資料給中國官方而導致中國新聞記者師濤被判 10 年徒刑。Microsoft 也曾把某個『不討人喜歡』的記者的 blog 從 MSN Spaces 下架。『The Great Firewall of China』則是 Cisco 公司的傑作。至於 Google、Yahoo、MSN 配合中國官方進行資訊控管等等早就不是新聞了。這類事件都顯示了當權者無所不用其極得從歷史、宗教、教育、新聞、娛樂、輿論、藝術、視聽媒體等等進行全方位的思想教育和資訊控管,而各大國際級企 業則是爭相配合,並大言不慚得宣稱:『這是合理的決定』。

但最令人憂心的,並不是當權者巧妙得利用所有的行政資源和社會輿論來試圖鞏固政權,而是多數人的沈默。我們未曾對此表示過任何意見,彷彿討論這些事會弄髒我們的嘴。我們在變相得鼓勵著當權者放手去做」。於是,根本沒有任何毀滅性武器 的伊拉克就這樣亡國了;Google 仍是華爾街最閃亮的一顆星;而發生在國內種種令人拍案驚奇的政府決策我想就不必在此再特別強調了。

1984一書中,George Orwell 就曾如此預言反動者的末路:『思想犯罪並不會帶來死亡;思想犯罪本身就是死亡』。這種死亡並不是肉體上的死亡,而是這些反動思想將被當權者利用種種手段抹 拭得乾乾淨淨,沒有人會認同他們,沒有人會記得他們。於是,在動畫《One Piece》裡,秉持著歷史學家的良知、躲躲藏藏了 20 年只為找出真正的歷史本文的 ニコ·ロビン 成了人們口中的『惡魔之女』,人人得而誅之;而歷史上也不乏這類的殉道者。伽利略 (Galileo Galilei) 因為支持地動說被當時的宗教法庭判決終生監禁(也就是無期徒刑),而當時他已是年近 70 的老年人了。

在此情況下,就算那些具有真知 灼見的人們不停得大聲疾呼又如何?就算 Tor 能穿越過任何的 Internet 連線管制又如何?真相還是逐漸消失在虛無中,而人們將永難擺脫被奴役的命運。

謹以此文向 George Orwell 致敬!




1 条评论: