日系P2P原理探究(二) — Winny, 日本崛起

Posted by Mr. Friday

上一篇提了Winny的運作原理, 現在讓我們來了解一下Winny這套軟體的緣起吧.

Winny作者金子勇(Isamu Kaneko), 原是日本東京帝大(經網友雞屁更正: 東京大學)的資工所研究助理, 也曾在日本自動化能源研究機構(Japan Atomic Enerygy Reserch Institue)待過一陣子. 他最初在2ch是以匿名身分發表文章的. 由於2ch鄉民對匿名者都直接以文章編號稱呼之(有點類似Ptt上常講的五樓), 因此他的網路化名就變成47號.

在2002年Winny出現之前, 日本本地最流行的P2P軟體是WinMX. WinMX使用與Napster相當類似的網路架構(Opennap). 使用者先連到一個伺服器(日文術語叫”鯖”), 然後才能與在同一個鯖的使用者交換檔案. WinMX有一個特點, 就是每個人能控制要把檔案分享給誰, 因此如果你高興的話, 可以讓某個人插隊 : 讓他優先從你電腦上下載他要的檔案. 這個特性進而衍生出一種交換機制: 要下載時, 得先請問對方願不願意讓你下載, 而對方往往是先看幾眼你電腦裡有哪些東西, 如果有他感興趣的, 則兩方才會進行下載. 換言之, WinMX的運作方式就像是回到貨幣還沒出現的時代, 古早人所採取的”以物易物”. 為了搏取對方的好感, WinMX使用者常被教導要”懂禮貌”: 手上的檔案要多, 要先把自己手上的檔案整理得一清二楚, 讓對方看你檔案清單時能快速找到他要的東西, 說話要客氣, 網路連線速度要開高一點…等等.

雖然WinMX在2002當時在日本就已經相當流行, 但金子勇顯然對它相當反感. 他曾經說過, WinMX只能算是”交換”軟體, 而不能算是”分享”軟體. 因此在2002年中他獨立以c++程式語言, 撰寫了Winny這套軟體. 從名字就可以看出Winny跟WinMX的關係 : winny的”ny”正好就是”mx”的下一個字母, 代表Winny比WinMX還要先進.

Winny是從Freenet改寫而來, 因此許多特性還保留著, 包括了Freenet的

  • 匿名連線
  • 下載/檔案發佈機制
  • 無伺服器的搜尋方式

嚴格講起來上面這三點都是freenet特有的網路下載機制造成, 有興趣的人可以參考上一篇的說明. 但也由於freenet無伺服器的搜尋方式, 使用者只能搜尋身邊數位鄰居, 導致可能會找不到想要的檔案, 因此Winny乾脆發展出下面這套方法:

使用者加入Winny時可用一句話, 描述自己想抓哪一種類型的檔案, 接著在往後的日子中, 只要遇到跟你描述相當接近的使用者, 則你們之間成為鄰居的可能性就會越強. 這個描述字眼就叫做Cluster Word (直譯: 群組關鍵字?). 也就是說, 隨著時間的演變, Winny的網路大概會長這樣:

三個顏色底分別代表不同Cluster word的使用者們, 例如左上角可以想像成是使用”電影”作為關鍵字的群組, 右上角是”音樂”, 下方是”卡通影集”. 可以看到使用同一個Cluster word的使用者之間連結會比較緊密, 因此在群組內搜尋相關關鍵字時(例如下方的群組成員搜尋”柯南”), 找到檔案的機率會高得多.

根據奇想空間的整理, 在winny中這類Cluster word大概長得像這樣(節錄):

  • 動畫:「寿限無寿限無五劫の擦り切れ海砂利の水魚水行末雲来末風来末食う寝るところに住むところやぶら小路ぶら小路パイポパイポパイポのシューリンガン、シューリンガンのグーリンダイ、グーリンダイのポンポコピーのポンポコナーの長久命の長助」
  • 特撮:「【特撮】好物あんぱん【特撮】」
  • 動畫歌:「アニソン共有楽団」
  • Drama CD:「【Winny】サントラ・ドラマCD専用スレ【氷結野菜】」
  • 一般漫畫:「【漫画】強くて悪い砂漠のヤムチャ【(一般コミック)】」
  • 也就是說如果你主要想抓/分享的檔案是動畫的話, 麻煩把Cluster word設成上面那一長串…此外, 對於新加入winny的使用者, 總要提供一些”初始鄰居”給他們當作入門的起點. 這就是安裝啟動winny時要加入的”初始node” (node, 就是代表網路上的一台電腦與相對應的IP位置). 這些初始node的資料經過加密處理, 都長得像下面這個樣子:

    @c2f6a63ea966c63b5cd29fce831958735f89d02b
    @3b5aa583ff1d58b688288c7b6f096762eb
    @2af756689892191cf3700837fab48477bbe51f4a0dd4
    @31393900072e14fa66a62ed8eaafbd38dd1388e4a90d

    如果你覺得自己現在的鄰居素質不夠好, 搜尋不到自己想要的檔案, 可以定期增加幾個這樣的新node到自己的鄰居清單中, 或許可以有不同的收穫.

    還有, Winny也提供留言版功能. 一個使用者可以在自己電腦的winny留言板上寫下一些資訊, 可能是聊天訊息, 也可能是某些檔案的新增公告, 供有興趣的使用者觀看或留言.

    (Update : 感謝網友mousep補充, Winny還有三點從Freenet承襲而來的特性:

    1. Cache File, Winny會將檔案存在Cache file裡面, 即使還沒下載完也能開始幫助上載, 增加分享的速度
    2. Filter Keyword, Winny可以設定Filter keyword, 指定哪些檔案我不想幫助分享, 所以可以設定成不想幫忙分享盜版或違法檔案
    3. 分享者可以設定一組Key, 類似簽名, 除了分享者以外別人無法偽造, 藉此來分辨特定的分享者所放流的檔案, 大大減少拉到偽檔的可能

    )

    Winny推出後隨即受到日本大眾的歡迎, 在短短時間內立即榮登日本最受歡迎的P2P軟體寶座. 然而也因為如此, Winny開始也面對一些惡意網友的攻擊. 2003年八月, 一種名為Antinny的病毒開始出現在Winny的網路上. 這可能是我印象中第一隻專門攻擊特定P2P軟體的病毒. Antinny的攻擊內容大致如下 (from Wiki):

  • 把你沒打算公開的檔案發佈到winny網路上
  • 上傳怪怪圖片到相簿網頁上
  • 對保護版權的公司(如智慧財產局等等)網站進行DOS攻擊.
  • 第一點很像是前一陣子Foxy傳出的爭議. Foxy是因為預設分享資料夾全開, 導致一些軍方警方內部文件散佈在網上. Foxy資料外洩還可歸咎為使用者自己的不小心, 而Antinny則是惡意地把你的檔案公佈在Winny上. 又, 由於Winny有自動把檔案發佈給網友的特性, 導致檔案一旦公佈後就再難刪除. 這首先導致日本軍方自衛隊的機密資料嚴重外洩, 隨後全日本航空(All Nippon Airlines)也尷尬的宣布他們在日本29間機場的安全密碼已經散佈在winny上. 接下來, 最嚴重的外洩事件, 是有人發現日本岡山縣警局內部的偵查資料通通上了winny, 裡面有一千五百件還在偵訊中, 且怎樣都不應該公開的機密資料, 像是還在偵辦中的嫌犯姓名, 遭到性侵害的婦女受害者姓名…等等.

    原本只是單純的P2P的分享軟體, 經過Antinny的一攪和, 變成全國知名的危險軟體, 至此, 政府也不得不介入調查這套軟體了…Winny的後續發展會是如何?

    待續

    延伸閱讀:

    Winny on Wikipedia

    Winny與WinMX:日本兩大下載工具的異同

    Winny的特殊Cluster Word

    日系P2P原理探究(一) — Winny元祖: Freenet

    日系P2P原理探究(三) — 作者也下水, P2P分享軟體的原罪?

    喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!