2012年3月18日 星期日

RetroShare: 完全保護隱私的社交圈; 建立你的 PGP 金鑰

RetroShare 手動與朋友交換金鑰 厭倦了臉書侵犯你的隱私嗎? 用 RetroShare 建立一個完全私密的社交圈吧! 使用這個社交圈, 不需要將個人隱私資料放到任何大公司的伺服器上 (例如 facebook.com) 所以也不會有廣告、 不會有第三者窺視蒐集你使用習慣。 你可以跟你信任的朋友私密交談、 私下交流分享任何圖/文/影/音檔案 (例如不想放到 flickr 或無名的私人家庭相片或生活錄影檔)。 在這過程當中, 你也會順便建立自己的 PGP 金鑰, 方便以後 (1) 陌生人可以透過公開管道 (例如在你的部落格上) 傳機密文字/檔案給你, 只有你解得開 (2) 你可以對特定檔案 (例如一張相片) 簽章, 證明這個檔案才是出自你手。

RetroShare 有點像 MSN 或河道不公開的噗浪; 最大的差別是: 它比兩者都更安全、 更私密。 它完全採用 P2P (點對點) 的設計, 不需要仰仗一個 「知道你和朋友秘密的第三方伺服器」。 (撇開底層網路不談 -- 反正它們看到的是加密過後的封包。) 當然, 注重隱私的人面對任何陌生軟體一定要問: 這個軟體會不會像 MS Windows 或其他某些封閉原始碼軟體一樣, 偷偷蒐集我的隱私? 因為 RetroShare 是自由軟體 -- 它的原始碼攤在陽光下讓你或你所信任的資訊高手檢驗, 所以你可以 100% 相信它不會這麼做。

RetroShare 有 Ubuntu 版、 Windows 版、 Mac OSX 版。 下載頁面有解釋如何將 RetroShare 所提供的套件庫 (repository) 加入你的 ubuntu 套件庫清單。 我在 SimplyMepis 底下則是單獨下載一個 Debian 版的 .deb 檔。 試著直接手動安裝: dpkg -i RetroShare_0.5.2a.4550_debian_i386.deb 然後根據錯誤訊息補安裝欠缺的相依套件: apt-get install gnome-keyring 之後再下 apt-get -f install 最後再重下一次 dpkg -i RetroShare... 就安裝完成了。

修正 RetroShare 選單上指令的大小寫問題 裝好之後, RetroShare 會出現在主選單的 「網際網路」 下面。 不過有個小 bug: 直接點選無法執行, 要開命令列視窗下指令: RetroShare。 因為選單裡的命令打錯了。 請在螢幕左下角的 「應用程式選單」 上按右鍵, 叫出 「選單編輯器」, 找到 RetroShare, 把 「指令」 的 /usr/bin/retroshare 改成 /usr/bin/RetroShare。

RetroShare 建立個人資料 第一次執行 RetroShare 時, 需要建立專屬於你的一組 PGP 金鑰 (公鑰+私鑰)。 這組 PGP 金鑰不只 RetroShare 在用, 其他很多場合及 [跟資訊安全相關的] 應用軟體也會用到, 所以建議用心輸入以下資料。 (這種透明化、 模組化的作風, 跟 見不得人、 履被破解、 互不相容的 DRM 演算法 很不一樣吧?) Name 跟 Email 兩欄會跟你的 PGP 金鑰綁在一起; 而 Password 則是用來打開錢包取得自己私鑰的密碼。 所以建議:

  1. Name 請填入你的中英文姓名、 外號 (啊, 我忘記填 「資訊人權貴」 orz 抓頭髮) 別人搜尋你時, 會用的名字。
  2. Email 請填入你平常 公開 使用的帳號。
  3. Password 請不要用一個隨便想的密碼, 而是一個深植你心, 久久不忘、 但別人很難猜到的字串。 可以內含英文大小寫字母、 數字、 標點符號、 空格。 這樣, 就算別人取得你的私鑰檔案也無法盜用你的身份。 詳見 What is a passphrase?

至於 Location, 它跟你的金鑰沒有直接關係, 只是 RetroShare 用來區分你從哪一部機器登入用的資訊而已; 就用你這部機器的名稱就可以了。

繼續看 RetroShare 之前, 幾個關於 PGP 金鑰的提醒:

  1. [重要: 請將 ~/.gnupg/ 子目錄整個備份起來, 複製好幾份。 這個目錄裡面的檔案若遺失, 你的這個金錀就作廢了。] (Q: Windows 底下是放在哪個資料夾啊?)
  2. 我還把我的公鑰上傳到 MIT 的 PGP key server 讓全世界 (提醒: 有可能包含發垃圾信的討厭鬼...) 知道。 當然, 如果你比較低調, 可以省略這一步。
  3. PGP 的概念, 請見下列文章: 白話 「非對稱式加密/解密」 Asymmetric Cryptography PGP 能做些甚麼? [捍衛隱私]PGP 如何運作?

在 Linux 上第一次執行 RetroShare, 完成 location 設定之後會 crash。 重新再執行一次就 ok 了。 然後呢, 就要開始交朋友了。 請見本文最上方的圖: 按一下左上角人形的 「Add a friend wizard」。 再下來... 我現在沒有朋友, 所以玩不下去了 orz。 根據 How to Get Retroshare Started 這篇, 兩人交換金鑰並互相簽章之後, 才可開始傳檔案給彼此。 此外, 兩人之中至少有一人必須要有固定 IP, 才能連線。 那麼當兩人都使用虛擬 IP (躲在 NAT 後面) 時, 該怎麼辦呢? 這篇 說: 可以用 netcat 跟 ncat 連線 (該作者有實驗過); 這篇 提出另一種可能性。 (只是假說)

所以呢, 接下來想邀請朋友們一起來玩玩看。 如果您關心上網權、 隱私、 消費者自主權等等 資訊科技相關人權議題 [例如經常轉我的噗或用 g+ 等等社交媒體推我的文章 :-) ], 請 e-mail 或私噗 與我聯絡、 交換金鑰、 連通 RetroShare 帳號。 這是我的金鑰; 也歡迎大家在這裡留下你的金鑰 (建議留下您在 MIT key server 的網址) 跟網友分享。 一旦有機會跟網友連線, 後續的使用心得我會繼續在這裡更新。 但是如果我沒有回應你 (尤其是沒有印象的網友), 請原諒我, 因為我的 注意力瀕臨破產 orz。

RetroShare 指定本機名稱

補充提醒: 如果你想在另一部機器上使用, 請在第一次執行 RetroShare 之前, 先將 ~/.gnupg 和 ~/.retroshare/ 複製過去就定位, 不然它會幫你重建一個新的帳號, 你會有兩組 PGP 金鑰, 然後就很頭昏。 至於如果你不滿意先前所取的機器名稱, 可以把 ~/.retroshare/ 裡面的東西刪掉, 重新再跑一次 RetroShare, 它會為你重建機器資料。 (偉大的開發者, 請賜給我編輯機器名稱的功能...)

雖然我是在這篇文章: Anonymous, Decentralized and Uncensored File-Sharing is Booming 上面看到 RetroShare 的, 但我寫這篇的目的並不是要鼓勵大家分享熱門影片或音樂 (事實上 RetroShare 也並不適合; tribler 還比較像) 而是要闡述一個論點: 在網路時代, 智慧財產權/網路控管 vs 人權/隱私, 兩組概念是格格不入, 無法同時並存的。 關於這點, 改天再另寫一篇貼到ㄓ疑的部落格上。

2 則留言:

  1. 關於兩方都在NAT後的連線方式,有一種方法叫做虛擬區網
    藉由一個公共的server,交換想加入虛擬區網的不特定數量電腦的連線資訊,建立一個虛擬出來的區域網路
    在Windows上知名的是Hamachi

    個人使用與推薦n2n,他是Open source與跨平台的軟體:
    http://www.ntop.org/products/n2n/

    官方有提供一個擁有Public IP的公共server供使用,或者也可以直接使用此軟體中的server mode自己建立一個server

    回覆刪除
  2. 最近我閱讀一些 decentralized 網路 (中文不知道怎麼翻, 可能叫 "去中心化") 的資料, 提供參考.
    如果沒有參考價值請貴哥直接把我這篇留言刪掉.

    * zeronet : 類似 freenet 的網路, 採用 去中心化 方式存資料. zeronet裡面可以瀏覽 (或架設自己的) 個人部落格, 留言板, 論壇, 各種網站. 特點是所有網站資料資料都是儲存在每個使用者的裝置上, 而不是特定的伺服器上, 他們宣稱沒有辦法可以關閉任何網站因為每個網站的副本都會被分散到各地 (所有曾經瀏覽過該網站的使用者都會保留這些網站的副本, 他們扮演瀏覽者的角色同時也扮演供應者的角色) 而不是存放在單一裝置上. 然而每個人的 ID 卻沒辦法偽造, 就跟比特幣的交易歷史一樣是大家共同認證的沒辦法偽造.

    * maidsafe : 計畫似乎剛起步. 類似 zeronet 和 比特幣 的概念, 但是對象換成是檔案. 以往雲端硬碟是把使用者資料存放在個企業的某伺服器裡面, 然而 maidsafe 是把檔案加密後分散到各個用戶裝置上存放, 當需要時在叫回來. "雲" 的意義已經完全不一樣了. 使用者可以從提供存放別人資料的行為下獲得獎勵, 這樣才會有動機讓大家幫別人存放資料.

    * Ring.cx : 類似貴哥介紹的 RetroShare 的即時通訊軟體 (instance messaging). 採用 去中心化 端對端加密, 沒有經過伺服器 (是否是 0 server 我不清楚). 我已經用我的電腦和 android 手機測試通訊沒問題. 採 GPL 3 授權. (背後公司的多項產品都是 GPL 授權.)

    以上 zeronet 和 Ring 都是強調去中心化還有匿名隱私的重要, 每個使用者的身份還有資料不受到任何單位控管, 證明 ID 唯一的方式是透過存放在該使用者裝置上的 "私鑰之類的檔案" (不知道有沒有錯), 如果搞丟了, 該身份就不可能還原.
    在 zeronet 和 maidsafe 自己的檔案丟失了無所謂, 因為其他使用者都會保留副本 (至少短期之內是如此), 只要 "私鑰檔案" 還在就可以證明相同身份然後取回檔案.
    如果如果把把 "私鑰檔案" 複製到其他裝置, 也可以在其他裝置使用該身份. 基本上一個人的身份是用該 "私鑰檔案" 證明的.

    回覆刪除

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。