Pages

Monday, 30 September 2019

搭建tor 中的.onion 網站


首先再次聲明”.onion”的域名[1],跟我們腦袋中的DNS不一樣它沒有一個IP對照表,所以不會洩漏hidden server的主機位置,至於怎麼生成一個網址我就姑且當作RSA private key算出public key 然後經過已經過時的sha1[2]算一下雜湊值,再用base 32[3]重新編一次得到我們超級醜的.onion域名,範例”http://oxoujukneztb6wxg.onion”,base32當中應該沒有大寫有沒有奇怪的符號。
.onion網站的搭建不需要以公有IP的方是搭建 .onion的網站不需要在防火牆新增port規則
那如何搭建一個.onion網站呢,首先你在你自己的電腦中搭建一個網站,最簡單的去XAMPP[5]下載一個,搓一下很快。好了我們有個網站了,接下來去Tor project下載是windows 的話選windows”Expert Bundle”[4],不要選瀏覽器壓我就不了你。
下載完之後,解壓縮阿,看到資料夾裡面有個tor.exe,先點開一遍讓他跑完,跑完關掉,跑不完的我看你在一個有網路審查的地方,估計網管再看你它很火。順利的朋友繼續到”C:\Users\自己的使用者名稱阿\AppData\Roaming\tor”這個資料夾底下,新增一個txt,命名為torcc,然後把副檔名拿掉存檔,接下來打開這個電腦辨識不出來是記事本的檔案用記事本開啟,添加幾行
HiddenServiceDir C:\ #這會是你存’放網站private key 檔案跟public檔案的地方啊,喜歡改地方也可以 HiddenServicePort 80 127.0.0.1:81 #左邊的數字是你希望在哪個port開hidden service,右邊是你希望把本地端的哪個port接上去左邊的

改完啦,存檔,回到一開始解壓縮的資料夾執行tor.exe,恭喜你hidden service順利搭成功了,網站名稱會出現在剛剛設定的”HiddenServiceDir”中的publickey,privatekey要保存好,public丟掉沒關係,因為tor美運作一次就會從private key重新推倒一遍又會重新建立public key 。這時就可以拿 .onion域名去Tor 瀏覽器 唬唬人了去吧。

[1]https://zh.wikipedia.org/wiki/.onion
[2]https://zh.wikipedia.org/wiki/SHA-1
[3]https://en.wikipedia.org/wiki/Base32
[4]https://www.torproject.org/download/download.html.en
[5]https://www.apachefriends.org/zh_tw/index.html

from https://awesome-doge.github.io/%E6%90%AD%E5%BB%BAtor-%E4%B8%AD%E7%9A%84-onion-%E7%B6%B2%E7%AB%99/
------

.onion 生成 步驟(tor v2 & v3 )

看了一些hidden services 的文獻,大致把.onion的域名生成的步驟畫成下面的圖片,之前有再研究比特幣地址生成的我,發現這樣的生成.onion域名的過程,與比特幣地址生成有相當類似的部分,因為都是式Random生成私鑰,經過私鑰轉公鑰的算法,經過HASH,最後在經過BASE重新編碼,不難發現概念是一樣的。所以誕生出來的比特幣地址或是.onion域名都有它的隨機性。

v2 .onion地址生成過程

只要有錢有時間就可以爆破出一個美麗的域名或是比特幣地址。
不難發現洋蔥網路所採用的密碼演算法都相當的過氣,如SHA-1、RSA-1024,當然Tor Project 也意識到這樣的問題,在最新版本的v3[2]中,已經闡述了會將SHA-1換成SHA-3,RSA-1024換成橢圓曲線。
Better crypto (replaced SHA1/DH/RSA1024 with SHA3/ed25519/curve25519)

原文

 .onion

  SYNTAX:  [digest].onion
           [ignored].[digest].onion

  The digest is the first eighty bits of a SHA1 hash of the identity key for
  a hidden service, encoded in base32.

  When Tor sees an address in this format, it tries to look up and connect to
  the specified hidden service.  See rend-spec.txt for full details.

  The "ignored" portion of the address is intended for use in vhosting, and
  is supported in Tor 0.2.4.10-alpha and later.

著名的 .onion 域名網站

Facebook

他們使用超過500,000個核心,耗資 US$100,000,耗時一周來反復生成.onion域名,產物” facebookcorewwwi.onion”。

BlockChain.info

花費了200–300美元,大約24小時使用AWS G1實例和六個ATI 來創建自己的.onion域名,產物”blockchainbdgpzk.onion”。

ExpressVPN

一般的電腦耗時兩周,產物”expressobutiolem.onion”。
[1]https://www.expressvpn.com/blog/how-to-create-a-onion-address/
[2]https://blog.torproject.org/tor-0329-released-we-have-new-stable-series

v3 .onion地址生成過程

在v3的地址生成中已經放棄了sha-1也沒有放上新的sha-3
256 bits 的 ECC key 強度大約是 3072 bits RSA key (以現在最好的攻擊演算法來估算)。 直接放 public key 不需要經過 hash function 計算,可以避免掉 hash function 被找到 collision 時的風險。[3]
採用了新的公私鑰轉換演算法ed25519[1],舊有的RSA已經不再是推薦安全的演算法。
ed25519 算法相對於secp256k1 更加高效,同時安全性也非常高。目前也被廣泛應用很多加密數字貨幣項目中,著名的項目例如Zcash、公證通(Factom)、新經幣(NEM)等等, 以太坊的創始人Vitalik 也曾在博客中公開表示,以太坊計劃在新版本中切換到ed25519。ed25519 的好處是在不損失安全級別的情況下,顯著提昇運算效率,其效率是secp256k1 的很多倍。以ed25519 的論文中的實驗為例,該算法完成一次簽名需要87548 個CPU 循環,一個4 核2.4GHz 的CPU 每秒可以完成109000 次簽名。密鑰的生成也非常高效。而ed25519 的安全級別和secp256k1 的級別相同,都是128 位的安全級別。[2]
新的v3比較特別的是他加入了CHECKSUM,這個CHECKSUM與比特幣地址生成中的CHECKSUM不同,比特幣的版本是取double sha-256取前幾個bit當作CHECKSUM,而.onion v3 採用的是簽章算法中的CHECKSUM。
最後一個步驟是把Public Key 、CHECKSUM、版本號放在一起做base32編碼,產物為56個字。

原文

1. Encoding onion addresses [ONIONADDRESS]

   The onion address of a hidden service includes its identity public key, a
   version field and a basic checksum. All this information is then base32
   encoded as shown below:

     onion_address = base32(PUBKEY | CHECKSUM | VERSION) + ".onion"
     CHECKSUM = H(".onion checksum" | PUBKEY | VERSION)[:2]

     where:
       - PUBKEY is the 32 bytes ed25519 master pubkey of the hidden service.
       - VERSION is an one byte version field (default value '\x03')
       - ".onion checksum" is a constant string
       - CHECKSUM is truncated to two bytes before inserting it in onion_address

[1]https://ed25519.cr.yp.to/
[2]https://zhuanlan.zhihu.com/p/28764295
[3]https://blog.gslin.org/archives/2017/11/03/7725/%E4%B8%8B%E4%B8%80%E4%BB%A3%E7%9A%84-tor-hidden-service/
[4]https://gitweb.torproject.org/torspec.git/plain/proposals/224-rend-spec-ng.txt

from https://awesome-doge.github.io/onion-%E7%94%9F%E6%88%90-%E6%AD%A5%E9%A9%9F-tor-v3/