2013-12-15 75 views
3

我在想,基本上我們有所有的元素來創建一個開放源代碼軟件的Bittorrent Sync替代方案,除了通過祕密的鏈接機制...(我會使用Sparkleshare然後實現一個像連接機制一樣的btsync密碼,一個「新的」Git連接協議或localhost ssh連接上的路徑,最後一個提供的優點是隻需通過共享一個祕密就可以訪問您的計算機,這使得隧道操作更容易......)BitTorrent同步祕密如何工作?

那麼如何工作,和/或你將如何實現一個類似的系統(因爲btsync是封閉的軟件)?

(如果你讀了這一點,覺得實現這個,先走了,想法是免費的)

+1

你的問題是模糊的。你想知道BitTorrent Sync的工作原理嗎?這個「祕密」是如何工作的?如何實現開源替代方案? – Jakob

+0

祕密是如何工作的,其餘的是上下文。 – LaPingvino

回答

10

由於stated by BitTorrent(見the user guide),祕密的20個字節以上的隨機產生的密鑰。簡單的概率定律使其幾乎無法猜測。有四種祕密:

  • (主)爲讀/寫訪問祕密
  • 只讀祕密
  • 一次性祕密(包括完全訪問和只讀)
  • 祕密與用於只讀加密訪問加密的同伴支持

據我理解(並且其中有人試圖在2013年七月到反向工程的BitTorrent同步協議在this thread說明),後者三種SECR ets可以來自主祕密。特別是,這包括用於加密文件以在對等體之間傳輸的密鑰。對於對等方發現,祕密是散列的,所以散列可以用來找到具有匹配祕密的同伴而不得不公開祕密。

在進一步逆向工程BitTorrent Sync之前,請記住,該軟件是封閉源代碼,並且包含從bittorrent.com自動更新的例程。這意味着公司可能會改變實施細節(並安裝任意後門)。除非打開完整的客戶端源代碼,否則沒有人能保證沒有將主密鑰發送給NSA的隱藏方法。

+0

我不需要完整的逆向工程。主要原因是能夠建立一個類似的,不一定相同的系統來促進特別的連接,例如ad-hoc git push and pull。 – LaPingvino

3

有關不同類型祕密一些細節:

  • 一個讀寫祕密( 「主祕密」),目前開始「A」,是33個字符長。
  • A 只讀祕密以「B」開頭,長度爲33個字符。
  • 一次性祕密(完全或只讀),24小時內有效,開始於「C」和長33個字符。
  • 讀寫祕密與加密支撐始於「d」和長33個字符。在這篇文章中,你不能從程序中生成其中的一個,但是當你生成一個新的祕密時,你可以將第一個字符從「A」改變爲「D」。舊版本的btsync不會接受這些祕密。
  • 一個只讀以每股支持加密祕密開始的「E」和長59個字符。
  • A 只讀加密祕密(即機器可以下載和共享文件但不解密它們,因此它可以種子但不能讀取它們)以「F」開頭。它是隻讀的祕密,但第一個字符從「E」變爲「F」並截斷爲33個字符。

(來源:http://forum.bittorrent.com/topic/25823-generate-encrypted-read-only-secret-without-api-key/