Tor IOT (Tor 物聯網)
導入hidden service 的IOT。IOT的產物多到不能再多了包括車聯網、智能管家、自動電燈開關、IP攝影機、溫度感測器、震動感測器、PM2.5感測器,在考慮使用IP前的時代,大家通常會考慮使用藍牙做裝置的互相連線溝通、傳輸資料,到最後可能會設計一個資料傳輸點的裝置,這台裝置的設計通常同時擁有藍芽、網路介面卡把資料送出去。
但在IPv6還沒有很普及的過去與現在,大家還是不希望只是將這個裝置透過藍芽傳輸資料,希望在裝置上裝上網路介面卡但是IPv4不夠用,屆時我看到的一個計畫叫做『The Internet of Onion Things』[1]。為什麼這麼做呢, 通常IPv4的格式為255.255.255.255,也就是2⁸.2⁸.2⁸.2⁸,也就是2³²也就是32bit。2³²中包括各種普通的地址、廣播地址、特殊地址共4.2×10⁹,現今的社會顯然相當不夠用,而 IPv6 2¹²⁸(約3.4×10³⁸)個位址,但是IPv6不普及啊。藉由我在文“.onion 生成 步驟(tor v2 )”和“.onion 生成 步驟(tor v3 )”,可知hidden service 前網站的方式不是藉由IP,而是藉由一串RSA-1024的公鑰sha-1(tor v2)或是Ed25519的公鑰(tor v3)作為網站的地址。
以Ed25519(tor v3)為例,首先必須要生成一個256bit的私鑰,也就代表有一個2²⁵⁶的組態空間,也代表著可以生成2²⁵⁶個網站地址。
地址數量比較(這是大概的比較,不要太認真,因為真的不是這樣算的) IPv4(2³²) < IPv6(2¹²⁸) < tor v3(2²⁵⁶),
Ed25519參考[3]
Ed25519 keys start life as a 32-byte (256-bit) uniformly random binary seed (e.g. the output of SHA256 on some random input). The seed is then hashed using SHA512, which gets you 64 bytes (512 bits), which is then split into a “left half” (the first 32 bytes) and a “right half”. The left half is massaged into a curve25519 private scalar “a” by setting and clearing a few high/low-order bits. The pubkey is generated by multiplying this secret scalar by “B” (the generator), which yields a 32-byte/256-bit group element “A”.
比較有趣的是tor的網路可以橫跨原本的IPv4或是IPv6上直接運作,使得只有2³²的IPv4也有機會享有更多的地址使用。再也不需要煩惱IP攝影機是使用IPv4 可是沒有這麼多IP可以用的問題。
其實還有個好處就是攻擊者想要公打你的網站onion IOT也有一定的難度畢竟2²⁵⁶要時掃描主機攻擊難度遠遠高於IPv4 的2³²,可能要掃到天荒地老吧。
這是[2]有人以『The Internet of Onion Things』做出來的各種應用簡介。
[1]https://github.com/n8fr8/talks/blob/master/onion_things/Internet%20of%20Onion%20Things.pdf
[2]https://medium.com/@PerryGrossman/secure-car-sensor-analytics-73367ab22fdc
[3]https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/